85188396bc62afbda331e9ec27bcd76b442345d7
[sfa.git] / sfa / managers / component_manager_pl.py
1 import xmlrpclib
2
3 from sfa.util.faults import SliverDoesNotExist
4 from sfa.util.version import version_core
5
6 from sfa.trust.sfaticket import SfaTicket
7
8 from sfa.planetlab.plxrn import PlXrn
9
10 def GetVersion(api, options):
11     return version_core({'interface':'component',
12                          'testbed':'myplc'})
13
14 def init_server():
15     from sfa.server import sfa_component_setup
16     # get current trusted gids
17     try:
18         sfa_component_setup.get_trusted_certs()
19     except:
20         # our keypair may be old, try refreshing
21         sfa_component_setup.get_node_key()
22         sfa_component_setup.GetCredential(force=True)
23         sfa_component_setup.get_trusted_certs()
24
25 def SliverStatus(api, slice_xrn, creds):
26     result = {}
27     result['geni_urn'] = slice_xrn
28     result['geni_status'] = 'unknown'
29     result['geni_resources'] = {}
30     return result
31            
32 def start_slice(api, xrn, creds):
33     slicename = PlXrn(xrn, type='slice').pl_slicename()
34     api.driver.nodemanager.Start(slicename)
35
36 def stop_slice(api, xrn, creds):
37     slicename = PlXrn(xrn, type='slice').pl_slicename()
38     api.driver.nodemanager.Stop(slicename)
39
40 def DeleteSliver(api, xrn, creds, call_id):
41     slicename = PlXrn(xrn, type='slice').pl_slicename()
42     api.driver.nodemanager.Destroy(slicename)
43
44 def reset_slice(api, xrn):
45     slicename = PlXrn(xrn, type='slice').pl_slicename()
46     if not api.sliver_exists(slicename):
47         raise SliverDoesNotExist(slicename)
48     api.driver.nodemanager.ReCreate(slicename)
49  
50 # xxx outdated - this should accept a credential & call_id
51 def ListSlices(api):
52     # this returns a tuple, the data we want is at index 1 
53     xids = api.driver.nodemanager.GetXIDs()
54     # unfortunately the data we want is given to us as 
55     # a string but we really want it as a dict
56     # lets eval it
57     slices = eval(xids[1])
58     return slices.keys()
59
60 def redeem_ticket(api, ticket_string):
61     ticket = SfaTicket(string=ticket_string)
62     ticket.decode()
63     hrn = ticket.attributes['slivers'][0]['hrn']
64     slicename = PlXrn (hrn).pl_slicename()
65     if not api.sliver_exists(slicename):
66         raise SliverDoesNotExist(slicename)
67
68     # convert ticket to format nm is used to
69     nm_ticket = xmlrpclib.dumps((ticket.attributes,), methodresponse=True)
70     api.driver.nodemanager.AdminTicket(nm_ticket)
71     
72