correct message
[monitor.git] / monitor / wrapper / plc.py
index 15c64bb..a78541e 100644 (file)
@@ -14,6 +14,11 @@ import time
 import traceback
 from monitor import database
 
+# note: this needs to be consistent with the value in PLEWWW/planetlab/includes/plc_functions.php
+PENDING_CONSORTIUM_ID = 0
+# not used in monitor
+#APPROVED_CONSORTIUM_ID = 999999
+
 try:
        from monitor import config
        debug = config.debug
@@ -116,12 +121,12 @@ class CachedPLC(PLC):
                                        except:
                                                print "Call %s FAILED: Using old cached data" % cachename
                                                load_old_cache = True
-                                               
+
                                        if load_old_cache:
                                                values = database.dbLoad(cachename)
                                        else:
                                                database.dbDump(cachename, values)
-                                               
+
                                        return values
                                else:
                                        values = database.dbLoad(cachename)
@@ -334,14 +339,7 @@ def isPendingSite(loginbase):
                 login.info("ERROR: No site %s" % loginbase)
                 return False
 
-        def all_disabled(person_ids):
-                persons = api.GetPersons(auth.auth, person_ids)
-                for person in persons:
-                        if person['enabled']:
-                                return False
-                return True
-
-        if not site['max_slices'] and not site['node_ids'] and all_disabled(site['person_ids']):
+        if not site['enabled'] and site['ext_consortium_id'] == PENDING_CONSORTIUM_ID:
                 return True
 
         return False
@@ -380,6 +378,12 @@ def nodePOD(nodename):
 Freeze all site slices.
 '''
 def suspendSiteSlices(loginbase):
+        if isPendingSite(loginbase):
+                msg = "INFO: suspendSiteSlices: Pending Site (%s)" % loginbase
+                print msg
+                logger.info(msg)
+                return
+
        api = xmlrpclib.Server(auth.server, verbose=False)
        for slice in slices(loginbase):
                logger.info("Suspending slice %s" % slice)
@@ -393,16 +397,17 @@ def suspendSiteSlices(loginbase):
 Freeze all site slices.
 '''
 def suspendSlices(nodename):
-       api = xmlrpclib.Server(auth.server, verbose=False)
-       for slice in slices(siteId(nodename)):
-               logger.info("Suspending slice %s" % slice)
-               try:
-                       if not debug:
-                               api.AddSliceAttribute(auth.auth, slice, "enabled", "0")
-               except Exception, exc:
-                       logger.info("suspendSlices:  %s" % exc)
+        loginbase = siteId(nodename)
+        suspendSiteSlices(loginbase)
+
 
 def enableSiteSlices(loginbase):
+        if isPendingSite(loginbase):
+                msg = "INFO: enableSiteSlices: Pending Site (%s)" % loginbase
+                print msg
+                logger.info(msg)
+                return
+
        api = xmlrpclib.Server(auth.server, verbose=False, allow_none=True)
        for slice in slices(loginbase):
                logger.info("Enabling slices %s" % slice)
@@ -422,24 +427,8 @@ def enableSiteSlices(loginbase):
                        print "exception: %s" % exc
 
 def enableSlices(nodename):
-       api = xmlrpclib.Server(auth.server, verbose=False, allow_none=True)
-
-       for slice in slices(siteId(nodename)):
-               logger.info("Enabling slices %s" % slice)
-               try:
-                       if not debug:
-                               slice_list = api.GetSlices(auth.auth, {'name': slice}, None)
-                               if len(slice_list) == 0:
-                                       return
-                               slice_id = slice_list[0]['slice_id']
-                               l_attr = api.GetSliceAttributes(auth.auth, {'slice_id': slice_id}, None)
-                               for attr in l_attr:
-                                       if "enabled" == attr['name'] and attr['value'] == "0":
-                                               logger.info("Deleted enable=0 attribute from slice %s" % slice)
-                                               api.DeleteSliceAttribute(auth.auth, attr['slice_attribute_id'])
-               except Exception, exc:
-                       logger.info("enableSlices: %s" % exc)
-                       print "exception: %s" % exc
+        loginbase = siteId(nodename)
+        enableSiteSlices(loginbase)
 
 
 #I'm commenting this because this really should be a manual process.  
@@ -470,24 +459,26 @@ def enableSiteSliceCreation(loginbase):
                logger.info("ERROR: enableSiteSliceCreation:  %s" % exc)
 
 def enableSliceCreation(nodename):
-       api = xmlrpclib.Server(auth.server, verbose=False, allow_none=True)
-       try:
-               loginbase = siteId(nodename)
-                enableSiteSliceCreation(loginbase)
-       except Exception, exc:
-               print "ERROR: enableSliceCreation:  %s" % exc
-               logger.info("ERROR: enableSliceCreation:  %s" % exc)
+        loginbase = siteId(nodename)
+        enableSiteSliceCreation(loginbase)
 
 '''
 Removes site's ability to create slices. Returns previous max_slices
 '''
-def removeSiteSliceCreation(sitename):
-       print "removeSiteSliceCreation(%s)" % sitename
+def removeSiteSliceCreation(loginbase):
+        print "removeSiteSliceCreation(%s)" % loginbase
+
+        if isPendingSite(loginbase):
+                msg = "INFO: removeSiteSliceCreation: Pending Site (%s)" % loginbase
+                print msg
+                logger.info(msg)
+                return
+
        api = xmlrpclib.Server(auth.server, verbose=False)
        try:
-               logger.info("Removing slice creation for site %s" % sitename)
+               logger.info("Removing slice creation for site %s" % loginbase)
                if not debug:
-                       api.UpdateSite(auth.auth, sitename, {'enabled': False})
+                       api.UpdateSite(auth.auth, loginbase, {'enabled': False})
        except Exception, exc:
                logger.info("removeSiteSliceCreation:  %s" % exc)
 
@@ -495,18 +486,9 @@ def removeSiteSliceCreation(sitename):
 Removes ability to create slices. Returns previous max_slices
 '''
 def removeSliceCreation(nodename):
-       print "removeSliceCreation(%s)" % nodename
-       api = xmlrpclib.Server(auth.server, verbose=False)
-       try:
-               loginbase = siteId(nodename)
-               #numslices = api.GetSites(auth.auth, {"login_base": loginbase}, 
-               #               ["max_slices"])[0]['max_slices']
-               logger.info("Removing slice creation for site %s" % loginbase)
-               if not debug:
-                       #api.UpdateSite(auth.auth, loginbase, {'max_slices': 0})
-                       api.UpdateSite(auth.auth, loginbase, {'enabled': False})
-       except Exception, exc:
-               logger.info("removeSliceCreation:  %s" % exc)
+        loginbase = siteId(nodename)
+        removeSiteSliceCreation(loginbase)
+
 
 '''
 QED