2 from sfa.managers.driver import Driver
4 """ an attempt to do a sfawrap plugin document """
6 class BonfireDriver(Driver):
8 def __init__ (self, config):
9 """ this is the hrn attached to the running server """
12 def augment_records_with_testbed_info (self, sfa_records):
15 def register (self, sfa_record, hrn, pub_key) :
18 def remove (self, sfa_record):
21 def update (self, old_sfa_record, new_sfa_record, hrn, new_key):
24 def update_relation (self, subject_type, target_type, relation_name, subject_id, link_ids):
27 ########################################
28 ########## aggregate oriented
29 ########################################
31 def __parameter__ (self, action):
33 if action == "allocate":
34 options['user_name'] = input("Enter your name: ")
35 options['groups'] = input("Enter your group: ")
36 options['description'] = input("Enter a description: ")
37 options['walltime'] = input("Enter a walltime: ")
38 options['Vslice_name'] = input("Enter a slice name: ")
39 elif action == "provision" or action == "delete":
40 options['number'] = input("Enter a number (experiment): ")
41 options['status'] = input("Enter a status (running delete): ")
42 elif action == "create":
43 options['groups'] = input("Enter your group: ")
44 options['description'] = input("Enter a description: ")
45 options['number'] = input("Enter a number (experiment): ")
46 options['testbed'] = input("Enter a testbed (fr-inria or uk-epcc): ")
48 def testbed_name (self): return "Bonfire"
50 def aggregate_version (self): return {}
52 def list_resources (self, version=None, options={}):
53 rspec = bonfire.bonsources()
54 hashres ={'geni_rspec': rspec, 'geni_urn':'None','geni_slivers':[{'geni_sliver_urn':'None','geni_expires':'None','geni_allocation_status':'None','geni_operational_status':'None'}]}
57 def describe (self, urns, version, options={}):
58 return "dummy Driver.describe needs to be redefined"
60 def allocate (self, urn=None, rspec_string=None, expiration=None, options={}):
61 """ options= {"user_name":"nlebreto","groups":"nlebreto","description":"exp","walltime":"125","slice_name":"topdomain.dummy.nicolas"} """
63 sendallocate = bonfire.allocate(options['user_name'],options['groups'],options['description'],options['walltime'],options['slice_name'])
64 return "allocate done"
66 return "options not well defined for allocate"
68 def provision(self, urns=None, options={}):
70 bonfire.provisioning(options['number'],options['status'])
71 return "provision done"
73 return "dummy Driver.provision needs to be redefined"
75 def perform_operational_action (self, urns=None, action=None, options={}):
77 bonfire.create_vm(options['testbed'],options['number'],options['description'],options['groups'])
80 return "dummy Driver.perform_operational_action needs to be redefined"
82 def status (self, urns, options={}):
83 return "dummy Driver.status needs to be redefined"
85 def renew (self, urns, expiration_time, options={}):
86 return "dummy Driver.renew needs to be redefined"
88 def delete(self, urns, options={}):
90 bonfire.provisioning(options['number'],options['status'])
91 return "provision done"
93 return "dummy Driver.delete needs to be redefined"
95 def shutdown (self, xrn, options={}):