X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=sfa%2Fclient%2Fsfi.py;h=80cb34b3b073b988eb39c236e64077aed14c3737;hb=112b8f39e16a227ce96186f8fe29bf67b8c5ea8e;hp=b95eb70bff6689e677f62c9d852692dff7bb6bec;hpb=736e38c7f74572af5572f52710eff5b0a12d5f3b;p=sfa.git diff --git a/sfa/client/sfi.py b/sfa/client/sfi.py index b95eb70b..80cb34b3 100755 --- a/sfa/client/sfi.py +++ b/sfa/client/sfi.py @@ -15,7 +15,7 @@ from lxml import etree from StringIO import StringIO from types import StringTypes, ListType from optparse import OptionParser -from sfa.util.sfalogging import sfa_logger,sfa_logger_goes_to_console +from sfa.util.sfalogging import _SfaLogger, logging from sfa.trust.certificate import Keypair, Certificate from sfa.trust.gid import GID from sfa.trust.credential import Credential @@ -141,8 +141,7 @@ class Sfi: self.user = None self.authority = None self.hashrequest = False - sfa_logger_goes_to_console() - self.logger=sfa_logger() + self.logger = _SfaLogger(self.sfi_dir + 'sfi.log', level = logging.INFO) def create_cmd_parser(self, command, additional_cmdargs=None): cmdargs = {"list": "authority", @@ -345,13 +344,11 @@ class Sfi: self.key = Keypair(filename=key_file) self.key_file = key_file self.cert_file = cert_file - self.cert = GID(filename=cert_file) - # Establish connection to server(s) + self.cert = GID(filename=cert_file) self.logger.info("Contacting Registry at: %s"%self.reg_url) self.registry = xmlrpcprotocol.get_server(self.reg_url, key_file, cert_file, self.options) self.logger.info("Contacting Slice Manager at: %s"%self.sm_url) self.slicemgr = xmlrpcprotocol.get_server(self.sm_url, key_file, cert_file, self.options) - return def get_cached_server_version(self, server): @@ -436,6 +433,7 @@ class Sfi: cert.sign() self.logger.info("Writing self-signed certificate to %s"%cert_file) cert.save_to_file(cert_file) + self.cert = cert # try to get registry issued cert try: self.logger.info("Getting Registry issued cert") @@ -448,7 +446,7 @@ class Sfi: gid.save_to_file(cert_file) except: self.logger.info("Failed to download Registry issued cert") - + return cert_file def get_cached_gid(self, file): @@ -481,18 +479,23 @@ class Sfi: hrn = self.user gidfile = os.path.join(self.options.sfi_dir, hrn + ".gid") + print gidfile gid = self.get_cached_gid(gidfile) if not gid: user_cred = self.get_user_cred() records = self.registry.Resolve(hrn, user_cred.save_to_string(save_parents=True)) - record = None + if not records: + raise RecordNotFound(args[0]) + record = records[0] if type: + record=None for rec in records: - if type == record['type']: + if type == rec['type']: record = rec if not record: raise RecordNotFound(args[0]) - gid = GID(string=records[0]['gid']) + + gid = GID(string=record['gid']) self.logger.info("Writing gid to %s"%gidfile) gid.save_to_file(filename=gidfile) return gid @@ -678,7 +681,7 @@ class Sfi: record = SliceRecord(dict=record) elif record['type'] in ['node']: record = NodeRecord(dict=record) - elif record['type'] in ['authority', 'ma', 'sa']: + elif record['type'].startswith('authority'): record = AuthorityRecord(dict=record) else: record = SfaRecord(dict=record) @@ -686,7 +689,7 @@ class Sfi: record.dump() else: print record.save_to_string() - + if opts.file: file = opts.file if not file.startswith(os.sep): @@ -804,6 +807,8 @@ class Sfi: """ trusted_certs = self.registry.get_trusted_certs() for trusted_cert in trusted_certs: + gid = GID(string=trusted_cert) + gid.dump() cert = Certificate(string=trusted_cert) self.logger.debug('Sfi.get_trusted_certs -> %r'%cert.get_subject()) return @@ -891,11 +896,10 @@ class Sfi: if opts.info: call_options['info'] = opts.info - server_version = self.get_cached_server_version(server) + call_args = [creds, call_options] if self.server_supports_call_id_arg(server): - result = server.ListResources(creds, call_options,unique_call_id()) - else: - result = server.ListResources(creds, call_options) + call_args.append(unique_call_id()) + result = server.ListResources(*call_args) format = opts.format if opts.file is None: display_rspec(result, format) @@ -941,8 +945,13 @@ class Sfi: for user_record in user_records: if 'keys' in user_record: user['keys'].extend(user_record['keys']) - users.append(user) - result = server.CreateSliver(slice_urn, creds, rspec, users, unique_call_id()) + users.append(user) + + call_args = [slice_urn, creds, rspec, users] + if self.server_supports_call_id_arg(server): + call_args.append(unique_call_id()) + + result = server.CreateSliver(*call_args) print result return result @@ -1009,8 +1018,12 @@ 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, unique_call_id()) - + + call_args = [slice_urn, creds] + if self.server_supports_call_id_arg(server): + call_args.append(unique_call_id()) + return server.DeleteSliver(*call_args) + # start named slice def start(self, opts, args): slice_hrn = args[0] @@ -1057,7 +1070,11 @@ 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, unique_call_id()) + + call_args = [slice_urn, creds, time] + if self.server_supports_call_id_arg(server): + call_args.append(unique_call_id()) + return server.RenewSliver(*call_args) def status(self, opts, args): @@ -1069,7 +1086,10 @@ 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, unique_call_id()) + call_args = [slice_urn, creds] + if self.server_supports_call_id_arg(server): + call_args.append(unique_call_id()) + print server.SliverStatus(*call_args) def shutdown(self, opts, args): @@ -1108,7 +1128,6 @@ class Sfi: (cmd_opts, cmd_args) = self.cmd_parser.parse_args(args[1:]) self.set_servers() - self.logger.info("Command=%s" % command) if command in ("resources"): self.logger.debug("resources cmd_opts %s" % cmd_opts.format)