diff options
Diffstat (limited to 'ipa-admintools/ipa-addradiusprofile')
-rw-r--r-- | ipa-admintools/ipa-addradiusprofile | 39 |
1 files changed, 20 insertions, 19 deletions
diff --git a/ipa-admintools/ipa-addradiusprofile b/ipa-admintools/ipa-addradiusprofile index 8e097c38..0872437f 100644 --- a/ipa-admintools/ipa-addradiusprofile +++ b/ipa-admintools/ipa-addradiusprofile @@ -21,7 +21,6 @@ import sys import os from optparse import OptionParser -import copy import ipa.ipaclient as ipaclient import ipa.ipautil as ipautil @@ -36,7 +35,10 @@ import ldap #------------------------------------------------------------------------------ radius_attrs = radius_util.radius_profile_attr_to_ldap_attr.keys() +radius_attr_to_ldap_attr = radius_util.radius_profile_attr_to_ldap_attr +ldap_attr_to_radius_attr = radius_util.radius_profile_ldap_attr_to_radius_attr mandatory_radius_attrs = ['UID'] +distinguished_attr = 'UID' #------------------------------------------------------------------------------ @@ -60,7 +62,6 @@ def main(): opt_parser.add_option("-d", "--Description", dest="desc", help="description of the RADIUS client") - opt_parser.add_option("-h", "--help", action="callback", callback=help_option_callback, help="detailed help information") opt_parser.add_option("-i", "--interactive", dest="interactive", action='store_true', default=False, @@ -72,16 +73,16 @@ def main(): opt_parser.add_option("-v", "--verbose", dest="verbose", action='store_true', help="print information") - opt_parser.set_usage("Usage: %s [options] UID" % (os.path.basename(sys.argv[0]))) + opt_parser.set_usage("Usage: %s [options] %s" % (distinguished_attr, os.path.basename(sys.argv[0]))) args = ipa.config.init_config(sys.argv) options, args = opt_parser.parse_args(args) if len(args) < 2: - opt_parser.error("missing UID") + opt_parser.error('missing %s' % (distinguished_attr)) uid = args[1] - pairs['UID'] = uid + pairs[distinguished_attr] = uid # Get pairs from a file or stdin if options.pair_file: @@ -103,16 +104,16 @@ def main(): # Get pairs interactively if options.interactive: - # Remove any mandatory attriubtes which have been previously specified - interactive_mandatory_attrs = copy.copy(mandatory_radius_attrs) - for attr in pairs.keys(): - try: - interactive_mandatory_attrs.remove(attr) - except ValueError: - pass + # Prompt first for mandatory attributes which have not been previously specified + prompted_mandatory_attrs = [] + existing_attrs = pairs.keys(): + for attr in mandatory_radius_attrs: + if not attr in existing_attrs: + prompted_mandatory_attrs.append(attr) + c = ipautil.AttributeValueCompleter(radius_attrs, pairs) c.open() - av = c.get_pairs("Enter: ", interactive_mandatory_attrs, radius_util.validate) + av = c.get_pairs("Enter: ", prompted_mandatory_attrs, radius_util.validate) pairs.update(av) c.close() @@ -120,9 +121,9 @@ def main(): # Data collection done, assure mandatory data has been specified - if pairs.has_key('UID') and pairs['UID'] != uid: - print "ERROR, uid specified on command line (%s) does not match value found in pairs (%s)" % \ - (uid, pairs['UID']) + if pairs.has_key(distinguished_attr) and pairs[distinguished_attr] != uid: + print "ERROR, %s specified on command line (%s) does not match value found in pairs (%s)" % \ + (distinguished_attr, uid, pairs[distinguished_attr]) return 1 valid = True @@ -158,13 +159,13 @@ def main(): for attr,value in pairs.items(): print "\t%s = %s" % (attr, value) - radius_profile = radius_util.RadiusProfile() + radius_entity = radius_util.RadiusProfile() for attr,value in pairs.items(): - radius_profile.setValue(radius_util.radius_profile_attr_to_ldap_attr[attr], value) + radius_entity.setValue(radius_attr_to_ldap_attr[attr], value) try: ipa_client = ipaclient.IPAClient() - ipa_client.add_radius_profile(radius_profile) + ipa_client.add_radius_profile(radius_entity) print "successfully added" except xmlrpclib.Fault, f: print f.faultString |