1 from sfa.util.namespace import *
2 from sfa.util.rspec import *
3 from sfa.util.specdict import *
4 from sfa.util.faults import *
6 from sfa.util.record import *
8 from sfa.plc.slices import *
9 from sfa.util.sfalogging import *
10 from sfa.util.record import SfaRecord
11 from lxml import etree
12 from StringIO import StringIO
16 version['geni_api'] = 1
17 version['geni_stitching'] = False
21 def ListResources(api, creds, options):
22 manager_base = 'sfa.managers'
24 manager_module = manager_base + ".aggregate_manager_%s" % mgr_type
25 manager = __import__(manager_module, fromlist=[manager_base])
28 if options.has_key('geni_slice_urn'):
29 xrn = options['geni_slice_urn']
33 rspec = manager.get_rspec(api, xrn, None)
36 # Filter out those objects that aren't allocated
38 tree = etree.parse(StringIO(rspec))
39 used_nodes = [sliver.getparent() for sliver in tree.iterfind("./network/site/node/sliver")]
40 used_sites = [node.getparent() for node in used_nodes]
41 for node in tree.iterfind("./network/site/node"):
42 if node not in used_nodes:
43 parent = node.getparent()
47 for site in tree.iterfind("./network/site"):
48 if site not in used_sites:
49 parent = site.getparent()
51 rspec = etree.tostring(tree)
56 def CreateSliver(api, slice_xrn, creds, rspec):
58 hrn, type = urn_to_hrn(slice_xrn)
60 hrn_auth = get_authority(hrn)
62 #site = SfaRecord(hrn=hrn_auth, type='authority')
65 site['name'] = 'geni.%s' % slice_xrn
66 site['enabled'] = True
67 site['max_slices'] = 100
68 site['login_base'] = get_leaf(hrn_auth)
69 site['abbreviated_name'] = hrn
70 site['max_slivers'] = 1000
72 reg_objects['site'] = site
74 manager_base = 'sfa.managers'
76 manager_module = manager_base + ".aggregate_manager_%s" % mgr_type
77 manager = __import__(manager_module, fromlist=[manager_base])
79 allocated = manager.create_slice(api, slice_xrn, rspec, reg_objects)
83 def DeleteSliver(api, slice_xrn, creds):
84 manager_base = 'sfa.managers'
86 manager_module = manager_base + ".aggregate_manager_%s" % mgr_type
87 manager = __import__(manager_module, fromlist=[manager_base])
89 allocated = manager.delete_slice(api, slice_xrn)
92 def SliverStatus(api, slice_xrn, creds):
94 result['geni_urn'] = slice_xrn
95 result['geni_status'] = 'unknown'
96 result['geni_resources'] = {}
99 def RenewSliver(api, slice_xrn, creds, renew_time):
102 def Shutdown(api, slice_xrn, creds):