X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=sfa%2Fclient%2Fsfi.py;h=2314d403375618c5de338a54b40fb2e253f2a9f3;hb=d40b9aa4b75edb62273b2d0705945342468d69d6;hp=28fe3ffaa2beac95a3bfae8d13d08b271931eba0;hpb=31d9a9ad6ded49e238e6da081004c9a8792d920b;p=sfa.git diff --git a/sfa/client/sfi.py b/sfa/client/sfi.py index 28fe3ffa..2314d403 100755 --- a/sfa/client/sfi.py +++ b/sfa/client/sfi.py @@ -25,13 +25,15 @@ from sfa.util.xrn import get_leaf, get_authority, hrn_to_urn from sfa.util.config import Config from sfa.util.version import version_core from sfa.util.cache import Cache -from sfa.util.record import SfaRecord, UserRecord, SliceRecord, NodeRecord, AuthorityRecord + +from sfa.storage.record import SfaRecord, UserRecord, SliceRecord, NodeRecord, AuthorityRecord from sfa.rspecs.rspec import RSpec from sfa.rspecs.rspec_converter import RSpecConverter from sfa.rspecs.version_manager import VersionManager +from sfa.client.return_value import ReturnValue -import sfa.client.xmlrpcprotocol as xmlrpcprotocol +import sfa.client.sfaprotocol as sfaprotocol from sfa.client.client_helper import pg_users_arg, sfa_users_arg AGGREGATE_PORT=12346 @@ -398,14 +400,13 @@ class Sfi: # Get key and certificate key_file = self.get_key_file() cert_file = self.get_cert_file(key_file) - self.key = Keypair(filename=key_file) self.key_file = key_file self.cert_file = cert_file self.cert = GID(filename=cert_file) self.logger.info("Contacting Registry at: %s"%self.reg_url) - self.registry = xmlrpcprotocol.server_proxy(self.reg_url, key_file, cert_file, timeout=self.options.timeout, verbose=self.options.debug) + self.registry = sfaprotocol.server_proxy(self.reg_url, key_file, cert_file, timeout=self.options.timeout, verbose=self.options.debug) self.logger.info("Contacting Slice Manager at: %s"%self.sm_url) - self.slicemgr = xmlrpcprotocol.server_proxy(self.sm_url, key_file, cert_file, timeout=self.options.timeout, verbose=self.options.debug) + self.slicemgr = sfaprotocol.server_proxy(self.sm_url, key_file, cert_file, timeout=self.options.timeout, verbose=self.options.debug) return def get_cached_server_version(self, server): @@ -422,15 +423,15 @@ class Sfi: if cache: version = cache.get(cache_key) - + if not version: - version = server.GetVersion() + result = server.GetVersion() + version= ReturnValue.get_value(result) # cache version for 24 hours cache.add(cache_key, version, ttl= 60*60*24) self.logger.info("Updating cache file %s" % cache_file) cache.save_to_file(cache_file) - return version @@ -498,7 +499,7 @@ class Sfi: self.logger.info("Getting Registry issued cert") self.read_config() # *hack. need to set registyr before _get_gid() is called - self.registry = xmlrpcprotocol.server_proxy(self.reg_url, key_file, cert_file, timeout=self.options.timeout, verbose=self.options.debug) + self.registry = sfaprotocol.server_proxy(self.reg_url, key_file, cert_file, timeout=self.options.timeout, verbose=self.options.debug) gid = self._get_gid(type='user') self.registry = None self.logger.info("Writing certificate to %s"%cert_file) @@ -671,7 +672,7 @@ class Sfi: host_parts = host.split('/') host_parts[0] = host_parts[0] + ":" + str(port) url = "http://%s" % "/".join(host_parts) - return xmlrpcprotocol.server_proxy(url, keyfile, certfile, timeout=self.options.timeout, verbose=self.options.debug) + return sfaprotocol.server_proxy(url, keyfile, certfile, timeout=self.options.timeout, verbose=self.options.debug) # xxx opts could be retrieved in self.options def server_proxy_from_opts(self, opts): @@ -851,7 +852,7 @@ class Sfi: elif record['type'] in ["slice"]: try: cred = self.get_slice_cred(record.get_name()).save_to_string(save_parents=True) - except xmlrpcprotocol.ServerException, e: + except sfaprotocol.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]: @@ -917,7 +918,8 @@ class Sfi: server=self.registry else: server = self.server_proxy_from_opts(opts) - version=server.GetVersion() + result = server.GetVersion() + version = ReturnValue.get_value(result) for (k,v) in version.iteritems(): print "%-20s: %s"%(k,v) if opts.file: @@ -938,8 +940,9 @@ class Sfi: if self.server_supports_options_arg(server): options = {'call_id': unique_call_id()} call_args.append(options) - results = server.ListSlices(*call_args) - display_list(results) + result = server.ListSlices(*call_args) + value = ReturnValue.get_value(result) + display_list(value) return # show rspec for named slice @@ -969,18 +972,21 @@ class Sfi: server_version = self.get_cached_server_version(server) if 'sfa' in server_version: # just request the version the client wants - options['rspec_version'] = version_manager.get_version(opts.rspec_version).to_dict() + options['geni_rspec_version'] = version_manager.get_version(opts.rspec_version).to_dict() else: # this must be a protogeni aggregate. We should request a v2 ad rspec # regardless of what the client user requested - options['rspec_version'] = version_manager.get_version('ProtoGENI 2').to_dict() - + options['geni_rspec_version'] = version_manager.get_version('ProtoGENI 2').to_dict() + else: + options['geni_rspec_version'] = {'type': 'geni', 'version': '3.0'} + call_args = [creds, options] result = server.ListResources(*call_args) + value = ReturnValue.get_value(result) if opts.file is None: - display_rspec(result, opts.format) + display_rspec(value, opts.format) else: - save_rspec_to_file(result, opts.file) + save_rspec_to_file(value, opts.file) return # created named slice with given rspec @@ -1032,11 +1038,12 @@ class Sfi: options = {'call_id': unique_call_id()} call_args.append(options) result = server.CreateSliver(*call_args) + value = ReturnValue.get_value(result) if opts.file is None: - print result + print value else: - save_rspec_to_file (result, opts.file) - return result + save_rspec_to_file (value, opts.file) + return value # get a ticket for the specified slice def get_ticket(self, opts, args): @@ -1158,7 +1165,9 @@ class Sfi: if self.server_supports_options_arg(server): options = {'call_id': unique_call_id()} call_args.append(options) - return server.RenewSliver(*call_args) + result = server.RenewSliver(*call_args) + value = ReturnValue.get_value(result) + return value def status(self, opts, args): @@ -1175,9 +1184,10 @@ class Sfi: options = {'call_id': unique_call_id()} call_args.append(options) result = server.SliverStatus(*call_args) - print result + value = ReturnValue.get_value(result) + print value if opts.file: - save_variable_to_file(result, opts.file, opts.fileformat) + save_variable_to_file(value, opts.file, opts.fileformat) def shutdown(self, opts, args):