X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=sfa%2Fclient%2Fsfi.py;h=bf043acfb0d55f16c2c677a921096ed27e9752a8;hb=613eea54a3317606aa6541b5e150f02638bb947b;hp=7f072d7258ebf4b3f45f83ef0884911250019be8;hpb=fdb8b5b2340477f3a55152f8d28ad2e050b0035d;p=sfa.git diff --git a/sfa/client/sfi.py b/sfa/client/sfi.py index 7f072d72..bf043acf 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,6 +117,8 @@ def load_record_from_file(filename): return record +import uuid +def unique_call_id(): return uuid.uuid4().urn class Sfi: @@ -203,6 +204,8 @@ class Sfi: default="all") # display formats if command in ("resources"): + parser.add_option("-r", "--rspec-version", dest="rspec_version", default="sfa 1", + help="schema type and version of resulting RSpec") parser.add_option("-f", "--format", dest="format", type="choice", help="display format ([xml]|dns|ip)", default="xml", choices=("xml", "dns", "ip")) @@ -493,7 +496,7 @@ class Sfi: if (os.path.isfile(file)): return file else: - self.logger.critical("No such rspec file"%rspec) + self.logger.critical("No such rspec file %s"%rspec) sys.exit(1) def get_record_file(self, record): @@ -715,7 +718,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]: @@ -795,6 +798,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, unique_call_id()) results = server.ListSlices(creds) display_list(results) return @@ -817,7 +821,10 @@ class Sfi: creds = [cred] if opts.delegate: delegated_cred = self.delegate_cred(cred, get_authority(self.authority)) - creds.append(delegated_cred) + creds.append(delegated_cred) + if opts.rspec_version: + call_options['rspec_version'] = opts.rspec_version + #result = server.ListResources(creds, call_options,unique_call_id()) result = server.ListResources(creds, call_options) format = opts.format if opts.file is None: @@ -842,7 +849,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 @@ -909,7 +916,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): @@ -957,7 +964,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): @@ -969,7 +976,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) - print server.SliverStatus(slice_urn, creds) + print server.SliverStatus(slice_urn, creds, unique_call_id()) def shutdown(self, opts, args):