X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=sfa%2Ffederica%2Ffddriver.py;h=96c7aa4b4813bb62bf5630b13aedf9262b44052e;hb=1cc8e9613cab8b5b22478de369f259e591c54e6d;hp=cac050c7c1f2f79f7818c8bb1feddd9c696e7ba9;hpb=d5290ee5361d5b3cad991d424a072708cf7bd355;p=sfa.git diff --git a/sfa/federica/fddriver.py b/sfa/federica/fddriver.py index cac050c7..96c7aa4b 100644 --- a/sfa/federica/fddriver.py +++ b/sfa/federica/fddriver.py @@ -2,7 +2,7 @@ from sfa.util.sfalogging import logger 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 @@ -10,6 +10,17 @@ from sfa.federica.fdshell import FdShell # this could/should be obtained by issuing getRSpecVersion federica_version_string="RSpecV2" +#### avail. methods on the federica side as of 2012/02/13 +# listAvailableResources(String credentials, String rspecVersion) +# listSliceResources(String credentials, String rspecVersion, String sliceUrn) +# createSlice(String credentials, String sliceUrn, String rspecVersion, String rspecString) +# deleteSlice(String credentials, String sliceUrn) +# listSlices() +# getRSpecVersion() +##### all return +# Result: {'code': 0, 'value': RSpec} if success +# {'code': code_id, 'output': Error message} if error + class FdDriver (PlDriver): def __init__ (self,config): @@ -31,13 +42,23 @@ class FdDriver (PlDriver): return from_xmlrpc def aggregate_version (self): - return { 'federica_version_string' : federica_version_string, } + 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"%\ + federica_version_string + return result def testbed_name (self): 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 @@ -57,7 +78,10 @@ class FdDriver (PlDriver): logger.debug("FdDriver.ListResources: returning cached advertisement") return self.response(rspec) # otherwise, need to get it - rspec = self.shell.listAvailableResources (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: logger.debug("FdDriver.ListResources: stores advertisement in cache") @@ -65,30 +89,24 @@ class FdDriver (PlDriver): return self.response(rspec) # about a given slice : don't cache else: -# that's what the final version would look like - return self.response(self.shell.listSliceResources(federica_version_string, slice_urn)) -# # just to see how the ad shows up in sface -# # caching it for convenience as it's the ad anyways -# if cached_requested and self.cache: -# rspec = self.cache.get(federica_version_string) -# if rspec: -# logger.debug("FdDriver.ListResources: returning cached advertisement") -# return rspec -# -# return self.shell.listAvailableResources(federica_version_string) + # 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)) -#String createSlice(String credentials, String sliceUrn, String rspecVersion, String rspecString): 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)) -#String deleteSlice(String credentials, String sliceUrn): 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):