fix typo
[sfa.git] / sfa / managers / component_manager_pl.py
1 import os
2 import xmlrpclib
3 from sfa.util.faults import *
4 from sfa.util.namespace import *
5 from sfa.util.sfaticket import SfaTicket
6
7 def init_server():
8     from sfa.server import sfa_component_setup
9     # get current trusted gids
10     try:
11         sfa_component_setup.get_trusted_certs()
12     except:
13         # our keypair may be old, try refreshing
14         sfa_component_setup.get_node_key()
15         sfa_component_setup.get_credential(force=True)
16         sfa_component_setup.get_trusted_certs()
17            
18 def start_slice(api, xrn):
19     hrn, type = urn_to_hrn(xrn)
20     slicename = hrn_to_pl_slicename(hrn)
21     api.nodemanger.Start(slicename)
22
23 def stop_slice(api, xrn):
24     hrn, type = urn_to_hrn(xrn)
25     slicename = hrn_to_pl_slicename(hrn)
26     api.nodemanager.Stop(slicename)
27
28 def delete_slice(api, xrn):
29     hrn, type = urn_to_hrn(xrn)
30     slicename = hrn_to_pl_slicename(hrn)
31     api.nodemanager.Destroy(slicename)
32
33 def reset_slice(api, xrn):
34     hrn, type = urn_to_hrn(xrn)
35     slicename = hrn_to_pl_slicename(hrn)
36     if not api.sliver_exists(slicename):
37         raise SliverDoesNotExist(slicename)
38     api.nodemanager.ReCreate(slicename)
39  
40 def get_slices(api):
41     # this returns a tuple, the data we want is at index 1 
42     xids = api.nodemanager.GetXIDs()
43     # unfortunately the data we want is given to us as 
44     # a string but we really want it as a dict
45     # lets eval it
46     slices = eval(xids[1])
47     return slices.keys()
48
49 def reboot():
50     os.system("/sbin/reboot")        
51
52 def redeem_ticket(api, ticket_string):
53     ticket = SfaTicket(string=ticket_string)
54     ticket.decode()
55     hrn = ticket.attributes['slivers'][0]['hrn']
56     slicename = hrn_to_pl_slicename(hrn)
57     if not api.sliver_exists(slicename):
58         raise SliverDoesNotExist(slicename)
59
60     # convert ticket to format nm is used to
61     nm_ticket = xmlrpclib.dumps((ticket.attributes,), methodresponse=True)
62     api.nodemanager.AdminTicket(nm_ticket)
63     
64