X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=sfa%2Fclient%2Fsfi.py;h=01071429a10199cb06b8cbc98f6e7cd508ee40ed;hb=725c637b3d6f4e41773b83f7977e2ba962b5b1b7;hp=e9ef1cf380d4c89bbf9d8e113b80b2006073a077;hpb=f8309b417edc0828cebba7831e5e59c9035bdf37;p=sfa.git diff --git a/sfa/client/sfi.py b/sfa/client/sfi.py index e9ef1cf3..01071429 100755 --- a/sfa/client/sfi.py +++ b/sfa/client/sfi.py @@ -23,7 +23,6 @@ from sfa.trust.credential import Credential from sfa.util.sfaticket import SfaTicket from sfa.util.record import SfaRecord, UserRecord, SliceRecord, NodeRecord, AuthorityRecord from sfa.util.xrn import Xrn, get_leaf, get_authority, hrn_to_urn -from sfa.util.xmlrpcprotocol import ServerException import sfa.util.xmlrpcprotocol as xmlrpcprotocol from sfa.util.config import Config from sfa.util.version import version_core @@ -118,12 +117,20 @@ def load_record_from_file(filename): return record +import uuid +def unique_call_id(): return uuid.uuid4().urn class Sfi: required_options=['verbose', 'debug', 'registry', 'sm', 'auth', 'user'] + # dummy to meet Sfi's expectations for its 'options' field + # i.e. s/t we can do setattr on + class DummyOptions: + pass + def __init__ (self,options=None): + if options is None: options=Sfi.DummyOptions() for opt in Sfi.required_options: if not hasattr(options,opt): setattr(options,opt,None) if not hasattr(options,'sfi_dir'): options.sfi_dir=os.path.expanduser("~/.sfi/") @@ -709,7 +716,7 @@ class Sfi: elif record['type'] in ["slice"]: try: cred = self.get_slice_cred(record.get_name()).save_to_string(save_parents=True) - except ServerException, e: + except xmlrpcprotocol.ServerException, e: # XXX smbaker -- once we have better error return codes, update this # to do something better than a string compare if "Permission error" in e.args[0]: @@ -775,7 +782,7 @@ class Sfi: else: server = self.get_server_from_opts(opts) version=server.GetVersion() - for (k,v) in version.items(): + for (k,v) in version.iteritems(): print "%-20s: %s"%(k,v) # list instantiated slices @@ -789,7 +796,7 @@ class Sfi: delegated_cred = self.delegate_cred(user_cred, get_authority(self.authority)) creds.append(delegated_cred) server = self.get_server_from_opts(opts) - results = server.ListSlices(creds) + results = server.ListSlices(creds, unique_call_id()) display_list(results) return @@ -812,7 +819,7 @@ class Sfi: if opts.delegate: delegated_cred = self.delegate_cred(cred, get_authority(self.authority)) creds.append(delegated_cred) - result = server.ListResources(creds, call_options) + result = server.ListResources(creds, call_options,unique_call_id()) format = opts.format if opts.file is None: display_rspec(result, format) @@ -836,7 +843,7 @@ class Sfi: rspec_file = self.get_rspec_file(args[1]) rspec = open(rspec_file).read() server = self.get_server_from_opts(opts) - result = server.CreateSliver(slice_urn, creds, rspec, []) + result = server.CreateSliver(slice_urn, creds, rspec, [], unique_call_id()) print result return result @@ -903,7 +910,7 @@ class Sfi: delegated_cred = self.delegate_cred(slice_cred, get_authority(self.authority)) creds.append(delegated_cred) server = self.get_server_from_opts(opts) - return server.DeleteSliver(slice_urn, creds) + return server.DeleteSliver(slice_urn, creds, unique_call_id()) # start named slice def start(self, opts, args): @@ -951,7 +958,7 @@ class Sfi: delegated_cred = self.delegate_cred(slice_cred, get_authority(self.authority)) creds.append(delegated_cred) time = args[1] - return server.RenewSliver(slice_urn, creds, time) + return server.RenewSliver(slice_urn, creds, time, unique_call_id()) def status(self, opts, args):