3 from sfa.util.faults import *
4 from sfa.util.namespace import *
5 from sfa.util.sfaticket import SfaTicket
8 from sfa.server import sfa_component_setup
9 # get current trusted gids
11 sfa_component_setup.get_trusted_certs()
13 # our keypair may be old, try refreshing
14 sfa_component_setup.get_node_key()
15 sfa_component_setup.get_credential(force=True)
16 sfa_component_setup.get_trusted_certs()
20 version['geni_api'] = 1
24 def start_slice(api, xrn):
25 hrn, type = urn_to_hrn(xrn)
26 slicename = hrn_to_pl_slicename(hrn)
27 api.nodemanger.Start(slicename)
29 def stop_slice(api, xrn):
30 hrn, type = urn_to_hrn(xrn)
31 slicename = hrn_to_pl_slicename(hrn)
32 api.nodemanager.Stop(slicename)
34 def delete_slice(api, xrn):
35 hrn, type = urn_to_hrn(xrn)
36 slicename = hrn_to_pl_slicename(hrn)
37 api.nodemanager.Destroy(slicename)
39 def reset_slice(api, xrn):
40 hrn, type = urn_to_hrn(xrn)
41 slicename = hrn_to_pl_slicename(hrn)
42 if not api.sliver_exists(slicename):
43 raise SliverDoesNotExist(slicename)
44 api.nodemanager.ReCreate(slicename)
47 # this returns a tuple, the data we want is at index 1
48 xids = api.nodemanager.GetXIDs()
49 # unfortunately the data we want is given to us as
50 # a string but we really want it as a dict
52 slices = eval(xids[1])
56 os.system("/sbin/reboot")
58 def redeem_ticket(api, ticket_string):
59 ticket = SfaTicket(string=ticket_string)
61 hrn = ticket.attributes['slivers'][0]['hrn']
62 slicename = hrn_to_pl_slicename(hrn)
63 if not api.sliver_exists(slicename):
64 raise SliverDoesNotExist(slicename)
66 # convert ticket to format nm is used to
67 nm_ticket = xmlrpclib.dumps((ticket.attributes,), methodresponse=True)
68 api.nodemanager.AdminTicket(nm_ticket)