from sfa.util.faults import SfaFault
# this is probably too big to swallow but for a starting point..
-from sfa.plc.pldriver import PlDriver
+from sfa.planetlab.pldriver import PlDriver
from sfa.federica.fdshell import FdShell
class FdDriver (PlDriver):
- def __init__ (self,config):
- PlDriver.__init__ (self, config)
+ def __init__ (self,api):
+ PlDriver.__init__ (self, api)
+ config = api.config
self.shell=FdShell(config)
# the agreement with the federica driver is for them to expose results in a way
return from_xmlrpc
def aggregate_version (self):
- result=[]
- federica_version_string_api = self.shell.getRSpecVersion()
+ result={}
+ federica_version_string_api = self.response(self.shell.getRSpecVersion())
result ['federica_version_string_api']=federica_version_string_api
if federica_version_string_api != federica_version_string:
result['WARNING']="hard-wired rspec version %d differs from what the API currently exposes"%\
return "federica"
def list_slices (self, creds, options):
- return self.response(self.shell.listSlices())
+ # the issue is that federica returns the list of slice's urn in a string format
+ # this is why this dirty hack is needed until federica fixes it.
+ slices_str = self.shell.listSlices()['value'][1:-1]
+ slices_list = slices_str.split(", ")
+ return slices_list
def sliver_status (self, slice_urn, slice_hrn):
return "fddriver.sliver_status: undefined/todo for slice %s"%slice_hrn
logger.debug("FdDriver.ListResources: returning cached advertisement")
return self.response(rspec)
# otherwise, need to get it
- rspec = self.shell.listAvailableResources (creds, federica_version_string)
+ # java code expects creds as a String
+# rspec = self.shell.listAvailableResources (creds, federica_version_string)
+ rspec = self.shell.listAvailableResources ("", federica_version_string)
# rspec = self.shell.listAvailableResources (federica_version_string)
# cache it for future use
if self.cache:
return self.response(rspec)
# about a given slice : don't cache
else:
- return self.response(self.shell.listSliceResources(creds, federica_version_string, slice_urn))
+ # java code expects creds as a String
+# return self.response(self.shell.listSliceResources(creds, federica_version_string, slice_urn))
+ return self.response(self.shell.listSliceResources("", federica_version_string, slice_urn))
def create_sliver (self, slice_urn, slice_hrn, creds, rspec_string, users, options):
# right now version_string is ignored on the federica side
# we normally derive it from options
- return self.response(self.shell.createSlice(creds, slice_urn, federica_version_string, rspec_string))
+ # java code expects creds as a String
+# return self.response(self.shell.createSlice(creds, slice_urn, federica_version_string, rspec_string))
+ return self.response(self.shell.createSlice("", slice_urn, federica_version_string, rspec_string))
def delete_sliver (self, slice_urn, slice_hrn, creds, options):
# right now version_string is ignored on the federica side
# we normally derive it from options
# xxx not sure if that's currentl supported at all
- return self.response(self.shell.deleteSlice(creds, slice_urn))
+ # java code expects creds as a String
+# return self.response(self.shell.deleteSlice(creds, slice_urn))
+ return self.response(self.shell.deleteSlice("", slice_urn))
# for the the following methods we use what is provided by the default driver class
#def renew_sliver (self, slice_urn, slice_hrn, creds, expiration_time, options):