X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=sfa%2Fclient%2Fsfi.py;h=43e5b985ed7049c773fd1104a774c60d97478e7a;hb=cedf37c8661ec0b05349274962bf2db9cfa6a24d;hp=b114c30317549f4801939728ba8f056e06f7cd91;hpb=cdc2c9fe65af84696e93b6365fe6f5b37f9df9a4;p=sfa.git diff --git a/sfa/client/sfi.py b/sfa/client/sfi.py index b114c303..43e5b985 100644 --- a/sfa/client/sfi.py +++ b/sfa/client/sfi.py @@ -1,7 +1,6 @@ # # sfi.py - basic SFA command-line client -# the actual binary in sfa/clientbin essentially runs main() -# this module is used in sfascan +# this module is also used in sfascan # import sys @@ -372,6 +371,10 @@ class Sfi: #panos: a new option to define the type of information about resources a user is interested in parser.add_option("-i", "--info", dest="info", help="optional component information", default=None) + # a new option to retreive or not reservation-oriented RSpecs (leases) + parser.add_option("-l", "--list_leases", dest="list_leases", type="choice", + help="Retreive or not reservation-oriented RSpecs ([resources]|leases|all )", + choices=("all", "resources", "leases"), default="resources") # 'create' does return the new rspec, makes sense to save that too @@ -866,15 +869,16 @@ or version information about sfi itself self.print_help() sys.exit(1) - record = Record(dict=record_dict) - if record.type == "user": - if record.hrn == self.user: + # don't translate into an object, as this would possibly distort + # user-provided data; e.g. add an 'email' field to Users + if record_dict['type'] == "user": + if record_dict['hrn'] == self.user: cred = self.my_credential_string else: cred = self.my_authority_credential_string() - elif record.type in ["slice"]: + elif record_dict['type'] in ["slice"]: try: - cred = self.slice_credential_string(record.hrn) + cred = self.slice_credential_string(record_dict['hrn']) except ServerException, e: # XXX smbaker -- once we have better error return codes, update this # to do something better than a string compare @@ -882,13 +886,12 @@ or version information about sfi itself cred = self.my_authority_credential_string() else: raise - elif record.type in ["authority"]: + elif record_dict['type'] in ["authority"]: cred = self.my_authority_credential_string() - elif record.type == 'node': + elif record_dict['type'] == 'node': cred = self.my_authority_credential_string() else: - raise "unknown record type" + record.type - record_dict = record.todict() + raise "unknown record type" + record_dict['type'] return self.registry().Update(record_dict, cred) def remove(self, options, args): @@ -955,6 +958,8 @@ or with an slice hrn, shows currently provisioned resources api_options['geni_slice_urn'] = hrn_to_urn(hrn, 'slice') if options.info: api_options['info'] = options.info + if options.list_leases: + api_options['list_leases'] = options.list_leases if options.current: if options.current == True: api_options['cached'] = False @@ -1029,6 +1034,7 @@ or with an slice hrn, shows currently provisioned resources rspec.filter({'component_manager_id': server_version['urn']}) rspec = RSpecConverter.to_pg_rspec(rspec.toxml(), content_type='request') else: + print >>sys.stderr, "\r\n \r\n \r\n WOOOOOO" users = sfa_users_arg(user_records, slice_record) # do not append users, keys, or slice tags. Anything