self.nodes = SimpleStorage(nodes_file)
self.nodes.load()
- slices_file = os.sep.join([self.server_basedir, 'smgr' + self.hrn + '.slices'])
+ slices_file = os.sep.join([self.server_basedir, 'smgr.' + self.hrn + '.slices'])
self.slices = SimpleStorage(slices_file)
self.slices.load()
Attempt to load credential from file if it exists. If it doesnt get
credential from registry.
"""
-
- self_cred_filename = self.server_basedir + os.sep + "smgr." + self.hrn + ".cred"
- ma_cred_filename = self.server_basedir + os.sep + "smgr." + self.hrn + ".sa.cred"
# see if this file exists
+ ma_cred_filename = self.server_basedir + os.sep + "smgr." + self.hrn + ".sa.cred"
try:
self.credential = Credential(filename = ma_cred_filename)
except IOError:
- # get self credential
- self_cred = self.registry.get_credential(None, 'ma', self.hrn)
- self_cred.save_to_file(self_cred_filename, save_parents=True)
+ self.credential = self.getCrednetialFromRegistry()
+
+
+ def getCredentialFromRegistry(self):
+ """
+ Get our current credential from the registry.
+ """
+ # get self credential
+ self_cred_filename = self.server_basedir + os.sep + "smgr." + self.hrn + ".cred"
+ self_cred = self.registry.get_credential(None, 'ma', self.hrn)
+ self_cred.save_to_file(self_cred_filename, save_parents=True)
- # get ma credential
- ma_cred = self.registry.get_credential(self_cred, 'sa', self.hrn)
- ma_cred.save_to_file(ma_cred_filename, save_parents=True)
- self.credential = ma_cred
+ # get ma credential
+ ma_cred_filename = self.server_basedir + os.sep + "smgr." + self.hrn + ".sa.cred"
+ ma_cred = self.registry.get_credential(self_cred, 'sa', self.hrn)
+ ma_cred.save_to_file(ma_cred_filename, save_parents=True)
+ return ma_cred
def connectRegistry(self):
"""
for aggregate in aggregates:
try:
# get the rspec from the aggregate
- agg_server = self.aggregates[aggregate]
agg_rspec = self.aggregates[aggregate].list_nodes(self.credential)
-
# extract the netspec from each aggregates rspec
rspec.parseString(agg_rspec)
- networks.extend(rspec.getDictsByTagName('NetSpec'))
+ networks.extend([{'NetSpec': rspec.getDictsByTagName('NetSpec')}])
except:
# XX print out to some error log
print "Error calling list nodes at aggregate %s" % aggregate
raise
-
+
# create the rspec dict
resources = {'networks': networks, 'start_time': start_time, 'duration': duration}
resourceDict = {'Rspec': resources}
Return a list of components managed by this slice manager.
"""
# Reload components list
- now = datetime.datetime.now()
- if not self.nodes.has_key('threshold') or not self.nodes['threshold'] or not self.nodes.has_key('timestamp') or not self.nodes['timestamp'] or now > self.nodes['threshold']:
+ if not self.nodes.has_key('threshold') or not self.nodes['threshold'] or not self.nodes.has_key('timestamp') or not self.nodes['timestamp']:
self.refresh_components()
+ else:
+ now = datetime.datetime.now()
+ threshold = datetime.datetime.fromtimestamp(time.mktime(time.strptime(self.nodes['threshold'], self.time_format)))
+ if now > threshold:
+ self.refresh_components()
return self.nodes[format]
Return the current rspec for the specified slice.
"""
- if slice_hrn in self.slices.keys():
- # check if we alreay have this slices state saved
- return self.slices[slice_hrn]
- else:
- # request this slices state from all known aggregates
- rspec = Rspec()
- rspecdicts = []
- networks = []
- for hrn in self.aggregates.keys():
- # check if the slice has resources at this hrn
- slice_resources = self.aggregates[hrn].get_resources(self.credential, slice_hrn)
- rspec.parseString(slice_resources)
- networks.extend(rspec.getDictsByTagName('NetSpec'))
+ # request this slices state from all known aggregates
+ rspec = Rspec()
+ rspecdicts = []
+ networks = []
+ for hrn in self.aggregates.keys():
+ # check if the slice has resources at this hrn
+ slice_resources = self.aggregates[hrn].get_resources(self.credential, slice_hrn)
+ rspec.parseString(slice_resources)
+ networks.extend({'NetSpec': rspec.getDictsByTagName('NetSpec')})
- # merge all these rspecs into one
- start_time = int(datetime.datetime.now().strftime("%s"))
- end_time = start_time
- duration = end_time - start_time
+ # merge all these rspecs into one
+ start_time = int(datetime.datetime.now().strftime("%s"))
+ end_time = start_time
+ duration = end_time - start_time
- resources = {'networks': networks, 'start_time': start_time, 'duration': duration}
- resourceDict = {'Rspec': resources}
- # convert rspec dict to xml
- rspec.parseDict(resourceDict)
- # save this slices resources
- self.slices[slice_hrn] = rspec.toxml()
- self.slices.write()
+ resources = {'networks': networks, 'start_time': start_time, 'duration': duration}
+ resourceDict = {'Rspec': resources}
+ # convert rspec dict to xml
+ rspec.parseDict(resourceDict)
+ # save this slices resources
+ #self.slices[slice_hrn] = rspec.toxml()
+ #self.slices.write()
- return rspec.toxml()
+ return rspec.toxml()
def createSlice(self, cred, slice_hrn, rspec):
"""