+ print "ERROR: enableSiteSliceCreation: %s" % exc
+ logger.info("ERROR: enableSiteSliceCreation: %s" % exc)
+
+def enableSliceCreation(nodename):
+ loginbase = siteId(nodename)
+ enableSiteSliceCreation(loginbase)
+
+def areSlicesEnabled(site):
+
+ try:
+ slice_list = api.GetSlices(slices(site))
+ if len(slice_list) == 0:
+ return None
+ for slice in slice_list:
+ slice_id = slice['slice_id']
+ l_attr = api.GetSliceTags({'slice_id': slice_id})
+ for attr in l_attr:
+ if "enabled" == attr['tagname'] and attr['value'] == "0":
+ return False
+
+ except Exception, exc:
+ pass
+
+ return True
+
+
+def isSiteEnabled(site):
+ try:
+ site = api.GetSites(site)[0]
+ return site['enabled']
+ except:
+ pass
+
+ return True
+
+
+def isTagCurrent(tags):
+ if len(tags) > 0:
+ for tag in tags:
+ until = tag['value']
+ if datetime.strptime(until, "%Y%m%d") > datetime.now():
+ # NOTE: the 'exempt_until' time is beyond current time
+ return True
+ return False
+
+def isPersonExempt(email):
+ tags = api.GetPersonTags({'email' : email, 'tagname' : 'exempt_person_until'})
+ return isTagCurrent(tags)
+
+def isNodeExempt(hostname):
+ tags = api.GetNodeTags({'hostname' : hostname, 'tagname' : 'exempt_node_until'})
+ return isTagCurrent(tags)
+
+def isSliceExempt(slicename):
+ tags = api.GetSliceTags({'name' : slicename, 'tagname' : 'exempt_slice_until'})
+ return isTagCurrent(tags)
+
+def isSiteExempt(loginbase):
+ tags = api.GetSiteTags({'login_base' : loginbase, 'tagname' : 'exempt_site_until'})
+ return isTagCurrent(tags)