KEYDIR = "/var/lib/sfa/"
CONFDIR = "/etc/sfa/"
+def handle_gid_mismatch_exception(f):
+ def wrapper(*args, **kwds):
+ try: return f(*args, **kwds)
+ except ConnectionKeyGIDMismatch:
+ # clean regen server keypair and try again
+ print "cleaning keys and trying again"
+ clean_key_cred()
+ return f(args, kwds)
+
+ return wrapper
+
def get_server(url=None, port=None, keyfile=None, certfile=None,verbose=False):
"""
returns an xmlrpc connection to the service a the specified
registry = get_server(url=registry, keyfile=keyfile, certfile=certfile)
cert = Certificate(filename=certfile)
cert_str = cert.save_to_string(save_parents=True)
- cred = registry.get_self_credential(cert_str, 'node', hrn)
+ cred = registry.GetSelfCredential(cert_str, 'node', hrn)
Credential(string=cred).save_to_file(credfile, save_parents=True)
return cred
-def handle_gid_mismatch_exception(f):
- def wrapper(*args, **kwds):
- try: return f(*args, **kwds)
- except ConnectionKeyGIDMismatch:
- # clean regen server keypair and try again
- print "cleaning keys and trying again"
- clean_key_cred()
- return f(args, kwds)
-
- return wrapper
-
@handle_gid_mismatch_exception
def get_trusted_certs(registry=None, verbose=False):
"""
api = ComponentAPI()
xids_tuple = api.nodemanager.GetXIDs()
slices = eval(xids_tuple[1])
- slicenames = slices.keys()
- hrns = [slicename_to_hrn(interface_hrn, slicename) for slicename in slicenames]
-
+ slicenames = slices.keys()
+ # generate a list of slices that dont have gids installed
+ slices_without_gids = []
+ for slicename in slicenames:
+ if not os.path.isfile("/vservers/%s/etc/slice.gid" % slicename) \
+ or not os.path.isfile("/vservers/%s/etc/node.gid" % slicename):
+ slices_without_gids.append(slicename)
+
+ # convert slicenames to hrns
+ hrns = [slicename_to_hrn(interface_hrn, slicename) \
+ for slicename in slices_without_gids]
+
+ # exit if there are no gids to install
+ if not hrns:
+ return
+
if verbose:
print "Getting gids for slices on this node from registry"
# get the gids
# and save them in the right palce
- records = registry.get_gids(cred, hrns)
+ records = registry.GetGids(hrns, cred)
for record in records:
# if this isnt a slice record skip it
if not record['type'] == 'slice':