X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=sfa%2Fclient%2Fcommon.py;h=4d019f3764608ccc16937e289be15edc82c7da82;hb=4a9e6751f9f396f463932133b9d62fc925a99ef6;hp=52ae3eefd9420c3aab302510b7bc3d66dbe94b8a;hpb=4ef76bd85ea24906c4ebb580c896fe1084d6ba88;p=sfa.git diff --git a/sfa/client/common.py b/sfa/client/common.py index 52ae3eef..4d019f37 100644 --- a/sfa/client/common.py +++ b/sfa/client/common.py @@ -1,104 +1,129 @@ # a few utilities common to sfi and sfaadmin + + + def optparse_listvalue_callback(option, opt, value, parser): - former=getattr(parser.values,option.dest) - if not former: former=[] + former = getattr(parser.values, option.dest) + if not former: + former = [] # support for using e.g. sfi update -t slice -x the.slice.hrn -r none # instead of -r '' which is painful and does not pass well through ssh - if value.lower()=='none': - newvalue=former + if value.lower() == 'none': + newvalue = former else: - newvalue=former+value.split(',') + newvalue = former + value.split(',') setattr(parser.values, option.dest, newvalue) -def optparse_dictvalue_callback (option, option_string, value, parser): + +def optparse_dictvalue_callback(option, option_string, value, parser): try: - (k,v)=value.split('=',1) - d=getattr(parser.values, option.dest) - d[k]=v + (k, v) = value.split('=', 1) + d = getattr(parser.values, option.dest) + d[k] = v except: parser.print_help() sys.exit(1) -# a code fragment that could be helpful for argparse which unfortunately is +# a code fragment that could be helpful for argparse which unfortunately is # available with 2.7 only, so this feels like too strong a requirement for the client side -#class ExtraArgAction (argparse.Action): +# class ExtraArgAction (argparse.Action): # def __call__ (self, parser, namespace, values, option_string=None): # would need a try/except of course -# (k,v)=values.split('=') -# d=getattr(namespace,self.dest) -# d[k]=v +# (k, v) = values.split('=') +# d = getattr(namespace, self.dest) +# d[k] = v ##### -#parser.add_argument ("-X","--extra",dest='extras', default={}, action=ExtraArgAction, -# help="set extra flags, testbed dependent, e.g. --extra enabled=true") - +# parser.add_argument ("-X", "--extra", dest='extras', default={}, action=ExtraArgAction, +# help="set extra flags, testbed dependent, e.g. --extra enabled=true") + ############################## # these are not needed from the outside -def terminal_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']) -def terminal_render_user (record, options): - print "%s (User)"%record['hrn'], + + +def terminal_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'])) + + +def terminal_render_user(record, options): + print("%s (User)" % record['hrn'], end=' ') if options.verbose and record.get('email', None): - print "email='{}'".format(record['email']), + print("email='{}'".format(record['email']), end=' ') if record.get('reg-pi-authorities', None): - print " [PI at %s]"%(" and ".join(record['reg-pi-authorities'])), + print(" [PI at %s]" % + (" and ".join(record['reg-pi-authorities'])), end=' ') if record.get('reg-slices', None): - print " [IN slices %s]"%(" and ".join(record['reg-slices'])), - user_keys=record.get('reg-keys',[]) + print(" [IN slices %s]" % + (" and ".join(record['reg-slices'])), end=' ') + user_keys = record.get('reg-keys', []) if not options.verbose: - print " [has %s]"%(terminal_render_plural(len(user_keys),"key")) + print(" [has %s]" % (terminal_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'], + print("") + for key in user_keys: + print(8 * ' ', key.strip("\n")) + + +def terminal_render_slice(record, options): + print("%s (Slice)" % record['hrn'], end=' ') if record.get('reg-researchers', None): - print " [USERS %s]"%(" and ".join(record['reg-researchers'])), + print(" [USERS %s]" % + (" and ".join(record['reg-researchers'])), end=' ') # print record.keys() - print "" -def terminal_render_authority (record, options): - print "%s (Authority)"%record['hrn'], + print("") + + +def terminal_render_authority(record, options): + print("%s (Authority)" % record['hrn'], end=' ') if options.verbose and record.get('name'): - print "name='{}'".format(record['name']) + print("name='{}'".format(record['name'])) if record.get('reg-pis', None): - print " [PIS %s]"%(" and ".join(record['reg-pis'])), - print "" -def terminal_render_node (record, options): - print "%s (Node)"%record['hrn'] + print(" [PIS %s]" % (" and ".join(record['reg-pis'])), end=' ') + print("") + +def terminal_render_node(record, options): + print("%s (Node)" % record['hrn']) -### used in sfi list -def terminal_render (records, options): + +# used in sfi list +def terminal_render(records, options): # sort records by type grouped_by_type = {} for record in records: type = record['type'] if type not in grouped_by_type: - grouped_by_type[type]=[] + grouped_by_type[type] = [] grouped_by_type[type].append(record) - group_types = grouped_by_type.keys() + group_types = list(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 + try: + renderer = eval('terminal_render_' + type) + except: + renderer = terminal_render_default for record in group: renderer(record, options) #################### + + def filter_records(type, records): filtered_records = [] for record in records: if (record['type'] == type) or (type == "all"): filtered_records.append(record) return filtered_records - -