6100e7631cd6135029ef52797a51cdfc31ea2cfa
[sfa.git] / sfa / managers / component_manager_pl.py
1 import os
2 import xmlrpclib
3
4 from sfa.util.faults import *
5 from sfa.util.plxrn import PlXrn
6 from sfa.util.sfaticket import SfaTicket
7 from sfa.util.version import version_core
8
9 def GetVersion(api):
10     return version_core({'interface':'component',
11                          'testbed':'myplc'})
12
13 def init_server():
14     from sfa.server import sfa_component_setup
15     # get current trusted gids
16     try:
17         sfa_component_setup.get_trusted_certs()
18     except:
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()
23
24 def SliverStatus(api, slice_xrn, creds):
25     result = {}
26     result['geni_urn'] = slice_xrn
27     result['geni_status'] = 'unknown'
28     result['geni_resources'] = {}
29     return result
30            
31 def start_slice(api, xrn, creds):
32     slicename = PlXrn(xrn, type='slice').pl_slicename()
33     api.nodemanger.Start(slicename)
34
35 def stop_slice(api, xrn, creds):
36     slicename = PlXrn(xrn, type='slice').pl_slicename()
37     api.nodemanager.Stop(slicename)
38
39 def DeleteSliver(api, xrn, creds, call_id):
40     slicename = PlXrn(xrn, type='slice').pl_slicename()
41     api.nodemanager.Destroy(slicename)
42
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)
48  
49 # xxx outdated - this should accept a credential & call_id
50 def ListSlices(api):
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
55     # lets eval it
56     slices = eval(xids[1])
57     return slices.keys()
58
59 def redeem_ticket(api, ticket_string):
60     ticket = SfaTicket(string=ticket_string)
61     ticket.decode()
62     hrn = ticket.attributes['slivers'][0]['hrn']
63     slicename = PlXrn (hrn).pl_slicename()
64     if not api.sliver_exists(slicename):
65         raise SliverDoesNotExist(slicename)
66
67     # convert ticket to format nm is used to
68     nm_ticket = xmlrpclib.dumps((ticket.attributes,), methodresponse=True)
69     api.nodemanager.AdminTicket(nm_ticket)
70     
71