r1.12 adding generic/bonfire.py and importer/bonfireimporter.py
[sfa.git] / sfa / bonfire / bonfiredriver.py
1 import bonfire
2 from sfa.managers.driver import Driver
3
4 """ an attempt to do a sfawrap plugin document """
5
6 class BonfireDriver(Driver):
7
8     def __init__ (self, config):
9         """ this is the hrn attached to the running server """
10         self.config = config
11
12     def augment_records_with_testbed_info (self, sfa_records):
13         return sfa_records
14
15     def register (self, sfa_record, hrn, pub_key) :
16         return -1
17
18     def remove (self, sfa_record):
19         return True
20
21     def update (self, old_sfa_record, new_sfa_record, hrn, new_key):
22         return True
23
24     def update_relation (self, subject_type, target_type, relation_name, subject_id, link_ids):
25         pass
26
27     ########################################
28     ########## aggregate oriented
29     ########################################
30
31     def __parameter__ (self, action):
32         options={}
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): ")
47
48     def testbed_name (self): return "Bonfire"
49
50     def aggregate_version (self): return {}
51
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'}]}
55         return hashres
56
57     def describe (self, urns, version, options={}):
58         return "dummy Driver.describe needs to be redefined"
59
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"} """
62         if bool(options):
63            sendallocate = bonfire.allocate(options['user_name'],options['groups'],options['description'],options['walltime'],options['slice_name'])
64            return "allocate done"
65         else:
66            return "options not well defined for allocate"
67
68     def provision(self, urns=None, options={}):
69         if bool(options):
70            bonfire.provisioning(options['number'],options['status'])
71            return "provision done"
72         else:
73            return "dummy Driver.provision needs to be redefined"
74
75     def perform_operational_action (self, urns=None, action=None, options={}):
76         if bool(options):
77            bonfire.create_vm(options['testbed'],options['number'],options['description'],options['groups'])
78            return "create vm"
79         else:
80            return "dummy Driver.perform_operational_action needs to be redefined"
81
82     def status (self, urns, options={}):
83         return "dummy Driver.status needs to be redefined"
84
85     def renew (self, urns, expiration_time, options={}):
86         return "dummy Driver.renew needs to be redefined"
87
88     def delete(self, urns, options={}):
89         if bool(options):
90            bonfire.provisioning(options['number'],options['status'])
91            return "provision done"
92         else:
93            return "dummy Driver.delete needs to be redefined"
94
95     def shutdown (self, xrn, options={}):
96         return False