drop support for API v1, hard-wired v2
[sfa.git] / sfa / managers / component_manager_pl.py
1 import xmlrpclib
2
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
7
8 def GetVersion(api, options):
9     return version_core({'interface':'component',
10                          'testbed':'myplc'})
11
12 def init_server():
13     from sfa.server import sfa_component_setup
14     # get current trusted gids
15     try:
16         sfa_component_setup.get_trusted_certs()
17     except:
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()
22
23 def SliverStatus(api, slice_xrn, creds):
24     result = {}
25     result['geni_urn'] = slice_xrn
26     result['geni_status'] = 'unknown'
27     result['geni_resources'] = {}
28     return result
29            
30 def start_slice(api, xrn, creds):
31     slicename = PlXrn(xrn, type='slice').pl_slicename()
32     api.driver.nodemanager.Start(slicename)
33
34 def stop_slice(api, xrn, creds):
35     slicename = PlXrn(xrn, type='slice').pl_slicename()
36     api.driver.nodemanager.Stop(slicename)
37
38 def DeleteSliver(api, xrn, creds, call_id):
39     slicename = PlXrn(xrn, type='slice').pl_slicename()
40     api.driver.nodemanager.Destroy(slicename)
41
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)
47  
48 # xxx outdated - this should accept a credential & call_id
49 def ListSlices(api):
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
54     # lets eval it
55     slices = eval(xids[1])
56     return slices.keys()
57
58 def redeem_ticket(api, ticket_string):
59     ticket = SfaTicket(string=ticket_string)
60     ticket.decode()
61     hrn = ticket.attributes['slivers'][0]['hrn']
62     slicename = PlXrn (hrn).pl_slicename()
63     if not api.sliver_exists(slicename):
64         raise SliverDoesNotExist(slicename)
65
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)
69     
70