summaryrefslogtreecommitdiffstats
path: root/tools/posixusers_baseline.py
diff options
context:
space:
mode:
authorChris St. Pierre <chris.a.st.pierre@gmail.com>2013-06-27 10:36:17 -0400
committerChris St. Pierre <chris.a.st.pierre@gmail.com>2013-06-27 10:42:32 -0400
commitcd14868d4db8eaa7e9421e1d5fe8653294ac1e38 (patch)
tree52ad2955c9d81a979d5242262a0209eafd3a12d4 /tools/posixusers_baseline.py
parent02783685f003b740b2ced28566833a46d3da07f1 (diff)
downloadbcfg2-cd14868d4db8eaa7e9421e1d5fe8653294ac1e38.tar.gz
bcfg2-cd14868d4db8eaa7e9421e1d5fe8653294ac1e38.tar.bz2
bcfg2-cd14868d4db8eaa7e9421e1d5fe8653294ac1e38.zip
Options: migrated tools to new parser
Diffstat (limited to 'tools/posixusers_baseline.py')
-rwxr-xr-xtools/posixusers_baseline.py94
1 files changed, 34 insertions, 60 deletions
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())