From cd14868d4db8eaa7e9421e1d5fe8653294ac1e38 Mon Sep 17 00:00:00 2001 From: "Chris St. Pierre" Date: Thu, 27 Jun 2013 10:36:17 -0400 Subject: Options: migrated tools to new parser --- tools/posixusers_baseline.py | 94 ++++++++++++++++---------------------------- 1 file changed, 34 insertions(+), 60 deletions(-) (limited to 'tools/posixusers_baseline.py') diff --git a/tools/posixusers_baseline.py b/tools/posixusers_baseline.py index c45e54f1a..1f89c7cb6 100755 --- a/tools/posixusers_baseline.py +++ b/tools/posixusers_baseline.py @@ -2,72 +2,46 @@ import grp import sys -import logging import lxml.etree import Bcfg2.Logger +import Bcfg2.Options from Bcfg2.Client.Tools.POSIXUsers import POSIXUsers -from Bcfg2.Options import OptionParser, Option, get_bool, CLIENT_COMMON_OPTIONS -def get_setup(): - optinfo = CLIENT_COMMON_OPTIONS - optinfo['nouids'] = Option("Do not include UID numbers for users", - default=False, - cmd='--no-uids', - long_arg=True, - cook=get_bool) - optinfo['nogids'] = Option("Do not include GID numbers for groups", - default=False, - cmd='--no-gids', - long_arg=True, - cook=get_bool) - setup = OptionParser(optinfo) - setup.parse(sys.argv[1:]) +class CLI(object): + options = [ + Bcfg2.Options.BooleanOption( + "--no-uids", help="Do not include UID numbers for users"), + Bcfg2.Options.BooleanOption( + "--no-gids", help="Do not include GID numbers for groups")] - if setup['args']: - print("posixuser_[baseline.py takes no arguments, only options") - print(setup.buildHelpMessage()) - raise SystemExit(1) - level = 30 - if setup['verbose']: - level = 20 - if setup['debug']: - level = 0 - Bcfg2.Logger.setup_logging('posixusers_baseline.py', - to_syslog=False, - level=level, - to_file=setup['logging']) - return setup - - -def main(): - setup = get_setup() - if setup['file']: - config = lxml.etree.parse(setup['file']).getroot() - else: + def __init__(self): + Bcfg2.Options.get_parser( + description="Generate a bundle with a baseline of POSIX users and " + "groups", + components=[self, POSIXUsers]).parse() config = lxml.etree.Element("Configuration") - users = POSIXUsers(logging.getLogger('posixusers_baseline.py'), - setup, config) - - baseline = lxml.etree.Element("Bundle", name="posixusers_baseline") - for entry in users.FindExtra(): - data = users.existing[entry.tag][entry.get("name")] - for attr, idx in users.attr_mapping[entry.tag].items(): - if (entry.get(attr) or - (attr == 'uid' and setup['nouids']) or - (attr == 'gid' and setup['nogids'])): - continue - entry.set(attr, str(data[idx])) - if entry.tag == 'POSIXUser': - entry.set("group", grp.getgrgid(data[3])[0]) - for group in users.user_supplementary_groups(entry): - memberof = lxml.etree.SubElement(entry, "MemberOf", - group=group[0]) - - entry.tag = "Bound" + entry.tag - baseline.append(entry) - - print(lxml.etree.tostring(baseline, pretty_print=True)) + self.users = POSIXUsers(config) + + def run(self): + baseline = lxml.etree.Element("Bundle", name="posixusers_baseline") + for entry in self.users.FindExtra(): + data = self.users.existing[entry.tag][entry.get("name")] + for attr, idx in self.users.attr_mapping[entry.tag].items(): + if (entry.get(attr) or + (attr == 'uid' and Bcfg2.Options.setup.no_uids) or + (attr == 'gid' and Bcfg2.Options.setup.no_gids)): + continue + entry.set(attr, str(data[idx])) + if entry.tag == 'POSIXUser': + entry.set("group", grp.getgrgid(data[3])[0]) + for group in self.users.user_supplementary_groups(entry): + lxml.etree.SubElement(entry, "MemberOf", group=group[0]) + + entry.tag = "Bound" + entry.tag + baseline.append(entry) + + print(lxml.etree.tostring(baseline, pretty_print=True)) if __name__ == "__main__": - sys.exit(main()) + sys.exit(CLI().run()) -- cgit v1.2.3-1-g7c22