4 from sfa.util.faults import *
5 from sfa.util.plxrn import PlXrn
6 from sfa.trust.sfaticket import SfaTicket
7 from sfa.util.version import version_core
10 return version_core({'interface':'component',
14 from sfa.server import sfa_component_setup
15 # get current trusted gids
17 sfa_component_setup.get_trusted_certs()
19 # our keypair may be old, try refreshing
20 sfa_component_setup.get_node_key()
21 sfa_component_setup.get_credential(force=True)
22 sfa_component_setup.get_trusted_certs()
24 def SliverStatus(api, slice_xrn, creds):
26 result['geni_urn'] = slice_xrn
27 result['geni_status'] = 'unknown'
28 result['geni_resources'] = {}
31 def start_slice(api, xrn, creds):
32 slicename = PlXrn(xrn, type='slice').pl_slicename()
33 api.nodemanger.Start(slicename)
35 def stop_slice(api, xrn, creds):
36 slicename = PlXrn(xrn, type='slice').pl_slicename()
37 api.nodemanager.Stop(slicename)
39 def DeleteSliver(api, xrn, creds, call_id):
40 slicename = PlXrn(xrn, type='slice').pl_slicename()
41 api.nodemanager.Destroy(slicename)
43 def reset_slice(api, xrn):
44 slicename = PlXrn(xrn, type='slice').pl_slicename()
45 if not api.sliver_exists(slicename):
46 raise SliverDoesNotExist(slicename)
47 api.nodemanager.ReCreate(slicename)
49 # xxx outdated - this should accept a credential & call_id
51 # this returns a tuple, the data we want is at index 1
52 xids = api.nodemanager.GetXIDs()
53 # unfortunately the data we want is given to us as
54 # a string but we really want it as a dict
56 slices = eval(xids[1])
59 def redeem_ticket(api, ticket_string):
60 ticket = SfaTicket(string=ticket_string)
62 hrn = ticket.attributes['slivers'][0]['hrn']
63 slicename = PlXrn (hrn).pl_slicename()
64 if not api.sliver_exists(slicename):
65 raise SliverDoesNotExist(slicename)
67 # convert ticket to format nm is used to
68 nm_ticket = xmlrpclib.dumps((ticket.attributes,), methodresponse=True)
69 api.nodemanager.AdminTicket(nm_ticket)