3 from sfa.util.faults import SliverDoesNotExist
4 from sfa.util.plxrn import PlXrn
5 from sfa.trust.sfaticket import SfaTicket
6 from sfa.util.version import version_core
8 def GetVersion(api, options):
9 return version_core({'interface':'component',
13 from sfa.server import sfa_component_setup
14 # get current trusted gids
16 sfa_component_setup.get_trusted_certs()
18 # our keypair may be old, try refreshing
19 sfa_component_setup.get_node_key()
20 sfa_component_setup.GetCredential(force=True)
21 sfa_component_setup.get_trusted_certs()
23 def SliverStatus(api, slice_xrn, creds):
25 result['geni_urn'] = slice_xrn
26 result['geni_status'] = 'unknown'
27 result['geni_resources'] = {}
30 def start_slice(api, xrn, creds):
31 slicename = PlXrn(xrn, type='slice').pl_slicename()
32 api.driver.nodemanager.Start(slicename)
34 def stop_slice(api, xrn, creds):
35 slicename = PlXrn(xrn, type='slice').pl_slicename()
36 api.driver.nodemanager.Stop(slicename)
38 def DeleteSliver(api, xrn, creds, call_id):
39 slicename = PlXrn(xrn, type='slice').pl_slicename()
40 api.driver.nodemanager.Destroy(slicename)
42 def reset_slice(api, xrn):
43 slicename = PlXrn(xrn, type='slice').pl_slicename()
44 if not api.sliver_exists(slicename):
45 raise SliverDoesNotExist(slicename)
46 api.driver.nodemanager.ReCreate(slicename)
48 # xxx outdated - this should accept a credential & call_id
50 # this returns a tuple, the data we want is at index 1
51 xids = api.driver.nodemanager.GetXIDs()
52 # unfortunately the data we want is given to us as
53 # a string but we really want it as a dict
55 slices = eval(xids[1])
58 def redeem_ticket(api, ticket_string):
59 ticket = SfaTicket(string=ticket_string)
61 hrn = ticket.attributes['slivers'][0]['hrn']
62 slicename = PlXrn (hrn).pl_slicename()
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.driver.nodemanager.AdminTicket(nm_ticket)