X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=sfa%2Fclient%2Fsfi.py;h=cc8ef3f453e77a9e253716a9c69d51db966cf9fb;hb=dbd15819d950b69d0c6ba5527660969d0754ad29;hp=5d44cf3f3e081ed7533879f433d95327ad53e714;hpb=5da0dafa61565ae254d5e29cdd6b55310c204987;p=sfa.git diff --git a/sfa/client/sfi.py b/sfa/client/sfi.py index 5d44cf3f..cc8ef3f4 100644 --- a/sfa/client/sfi.py +++ b/sfa/client/sfi.py @@ -205,11 +205,20 @@ def terminal_render (records,options): type=record['type'] if type not in grouped_by_type: grouped_by_type[type]=[] grouped_by_type[type].append(record) - for (type, list) in grouped_by_type.items(): + group_types=grouped_by_type.keys() + group_types.sort() + for type in group_types: + group=grouped_by_type[type] # print 20 * '-', type try: renderer=eval('terminal_render_'+type) except: renderer=terminal_render_default - for record in list: renderer(record,options) + for record in group: renderer(record,options) + +def render_plural (how_many, name,names=None): + if not names: names="%ss"%name + if how_many<=0: return "No %s"%name + elif how_many==1: return "1 %s"%name + else: return "%d %s"%(how_many,names) def terminal_render_default (record,options): print "%s (%s)" % (record['hrn'], record['type']) @@ -217,7 +226,13 @@ def terminal_render_user (record, options): print "%s (User)"%record['hrn'], if record.get('reg-pi-authorities',None): print " [PI at %s]"%(" and ".join(record['reg-pi-authorities'])), if record.get('reg-slices',None): print " [IN slices %s]"%(" and ".join(record['reg-slices'])), - print "" + user_keys=record.get('reg-keys',[]) + if not options.verbose: + print " [has %s]"%(render_plural(len(user_keys),"key")) + else: + print "" + for key in user_keys: print 8*' ',key.strip("\n") + def terminal_render_slice (record, options): print "%s (Slice)"%record['hrn'], if record.get('reg-researchers',None): print " [USERS %s]"%(" and ".join(record['reg-researchers'])), @@ -451,6 +466,8 @@ class Sfi: if command == 'list': parser.add_option("-r", "--recursive", dest="recursive", action='store_true', help="list all child records", default=False) + parser.add_option("-v", "--verbose", dest="verbose", action='store_true', + help="gives details, like user keys", default=False) if command in ("delegate"): parser.add_option("-u", "--user", action="store_true", dest="delegate_user", default=False, @@ -1137,7 +1154,8 @@ or with an slice hrn, shows currently provisioned resources # xxx Thierry 2012 sept. 21 # contrary to what I was first thinking, calling Resolve with details=False does not yet work properly here # I am turning details=True on again on a - hopefully - temporary basis, just to get this whole thing to work again - slice_records = self.registry().Resolve(slice_urn, [self.my_credential_string], {'details':True}) + slice_records = self.registry().Resolve(slice_urn, [self.my_credential_string]) + # slice_records = self.registry().Resolve(slice_urn, [self.my_credential_string], {'details':True}) if slice_records and 'reg-researchers' in slice_records[0] and slice_records[0]['reg-researchers']: slice_record = slice_records[0] user_hrns = slice_record['reg-researchers'] @@ -1150,6 +1168,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