X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=plugins%2Fsliverauth.py;h=f22a60d1a588ece9a522d90d560ced6e7c741028;hb=d2ad67113cb9dacb093e69169393e0393219c8f1;hp=8bb03a25ff890c867fa23436924ea71f65bc4a53;hpb=3e610bb9e7c357e06a5a757809e7323e0402f841;p=nodemanager.git diff --git a/plugins/sliverauth.py b/plugins/sliverauth.py index 8bb03a2..f22a60d 100644 --- a/plugins/sliverauth.py +++ b/plugins/sliverauth.py @@ -12,19 +12,17 @@ import os import random import string import tempfile +import time import logger import tools def start(options, conf): - # XXX REMOVE ME - return - logger.log("sliverauth plugin starting up...") def SetSliverTag(plc, slice, tagname, value): node_id = tools.node_id() - slivertags=plc.GetSliceTags({"name":slice,"node_id":node_id}) + slivertags=plc.GetSliceTags({"name":slice,"node_id":node_id,"tagname":tagname}) if len(slivertags)==0: slivertag_id=plc.AddSliceTag(slice,tagname,value,node_id) else: @@ -32,11 +30,15 @@ def SetSliverTag(plc, slice, tagname, value): plc.UpdateSliceTag(slivertag_id,value) def GetSlivers(data, config, plc): + if 'OVERRIDES' in dir(config): + if config.OVERRIDES.get('sliverauth') == '-1': + logger.log("sliverauth: Disabled", 2) + return + if 'slivers' not in data: logger.log("sliverauth: getslivers data lack's sliver information. IGNORING!") return - random.seed(42) for sliver in data['slivers']: found_hmac = False for attribute in sliver['attributes']: @@ -47,9 +49,12 @@ def GetSlivers(data, config, plc): break if not found_hmac: + # XXX need a better random seed?! + random.seed(time.time()) d = [random.choice(string.letters) for x in xrange(32)] hmac = "".join(d) SetSliverTag(plc,sliver['name'],'hmac',hmac) + logger.log("sliverauth setting %s hmac" % sliver['name']) path = '/vservers/%s/etc/planetlab' % sliver['name'] if os.path.exists(path): @@ -68,6 +73,7 @@ def GetSlivers(data, config, plc): if os.path.exists(keyfile): os.unlink(keyfile) os.rename(name,keyfile) + logger.log("sliverauth writing hmac to %s " % keyfile) os.chmod(keyfile,0400)