summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTodd Zullinger <tmz@pobox.com>2008-11-25 17:23:03 -0500
committerTodd Zullinger <tmz@pobox.com>2008-11-25 17:47:13 -0500
commit082f3ddb1de5fcb6fed301157f747c11adcc1170 (patch)
tree9f460ac5d183b2a3240feeeffd91d97eb4adeb55
parent36c97db66dbf937b3fe412121c82ad5b082832c1 (diff)
downloadpuppet-host-package-082f3ddb1de5fcb6fed301157f747c11adcc1170.tar.gz
puppet-host-package-082f3ddb1de5fcb6fed301157f747c11adcc1170.tar.xz
puppet-host-package-082f3ddb1de5fcb6fed301157f747c11adcc1170.zip
Move command line code into the module
This allows the code to be run directly or used as a module.
-rwxr-xr-xpuppet-host-package78
-rw-r--r--puppethost.py81
2 files changed, 81 insertions, 78 deletions
diff --git a/puppet-host-package b/puppet-host-package
deleted file mode 100755
index 101b64c..0000000
--- a/puppet-host-package
+++ /dev/null
@@ -1,78 +0,0 @@
-#!/usr/bin/env python
-"""Create a host package for bootstrapping a puppet host."""
-
-import os
-import glob
-import optparse
-import puppethost
-
-usage = '%prog [options] hostname [hostname ...]'
-parser = optparse.OptionParser(usage=usage)
-parser.defaults = puppethost.defaults
-parser.add_option('-a', '--all', dest='allcerts', action='store_true',
- help='Create packages for all signed certificates')
-parser.add_option('-d', '--domain', dest='domain',
- help='Domain append to non fqdn hostnames [%default]')
-parser.add_option('-f', '--force', dest='force', action='store_true',
- help='Overwrite existing certs, tarballs, and/or packages')
-parser.add_option('--force-cert', dest='force_cert', action='store_true',
- help='Overwrite existing certs')
-parser.add_option('--force-tarball', dest='force_tarball', action='store_true',
- help='Overwrite existing tarballs')
-parser.add_option('--force-package', dest='force_package', action='store_true',
- help='Overwrite existing packages')
-parser.add_option('-r', '--rpmdir', dest='rpmdir', metavar='dir',
- help='Directory where packages are stored [%default]')
-parser.add_option('--release', dest='release', metavar='num',
- help='Package release number [%default]')
-parser.add_option('-s', '--ssldir', dest='ssldir', metavar='dir',
- help='Directory where ssl certs are stored [%default]')
-# FIXME improve the help string
-parser.add_option('-S', '--dest-ssldir', dest='destssldir', metavar='dir',
- help='Directory where ssl certs are packaged')
-parser.add_option('-t', '--template', dest='template', metavar='file',
- help='RPM spec file template [%default]')
-opts, args = parser.parse_args()
-
-if opts.force:
- opts.force_cert = True
- opts.force_tarball = True
- opts.force_package = True
-
-opts.rpmdir = os.path.abspath(opts.rpmdir)
-opts.ssldir = os.path.abspath(opts.ssldir)
-if not opts.destssldir:
- opts.destssldir = opts.ssldir
-
-if opts.allcerts:
- args = []
- for cert in glob.glob('%s/ca/signed/*.pem' % opts.ssldir):
- basename = os.path.basename(cert)
- # we need the private key as well as the cert
- if os.path.exists('%s/private_keys/%s' % (opts.ssldir, basename)):
- args.append(os.path.splitext(basename)[0])
- args.sort()
-
-if not args:
- raise SystemExit(parser.print_usage())
-
-for d in [opts.rpmdir, opts.ssldir]:
- if not os.path.isdir(d):
- raise SystemExit('%s does not exist (or is not a directory)' % d)
-
-if not os.path.isfile(opts.template):
- raise SystemExit('Template file (%s) does not exist' % opts.template)
-
-for hostname in args:
- host = puppethost.PuppetHost(hostname, opts.__dict__)
-
- if not os.path.exists(host.files['cert']) or opts.force_cert:
- try: host.gencert()
- except puppethost.PuppetHostError, error:
- print error
- continue
-
- try: host.package()
- except Exception, error:
- print error
- continue
diff --git a/puppethost.py b/puppethost.py
index 50fe5ec..a00d8d1 100644
--- a/puppethost.py
+++ b/puppethost.py
@@ -198,3 +198,84 @@ class PuppetHost(object):
else:
self._version = time.strftime(format)
return self._version
+
+def _main():
+ import os
+ import glob
+ import optparse
+
+ usage = '%prog [options] hostname [hostname ...]'
+ parser = optparse.OptionParser(usage=usage)
+ parser.defaults = defaults
+ parser.add_option('-a', '--all', dest='allcerts', action='store_true',
+ help='Create packages for all signed certificates')
+ parser.add_option('-d', '--domain', dest='domain',
+ help='Domain append to non fqdn hostnames [%default]')
+ parser.add_option('-f', '--force', dest='force', action='store_true',
+ help='Overwrite existing certs, tarballs, and packages')
+ parser.add_option('--force-cert', dest='force_cert', action='store_true',
+ help='Overwrite existing certs')
+ parser.add_option('--force-tarball', dest='force_tarball',
+ action='store_true', help='Overwrite existing tarballs')
+ parser.add_option('--force-package', dest='force_package',
+ action='store_true', help='Overwrite existing packages')
+ parser.add_option('-r', '--rpmdir', dest='rpmdir', metavar='dir',
+ help='Directory where packages are stored [%default]')
+ parser.add_option('--release', dest='release', metavar='num',
+ help='Package release number [%default]')
+ parser.add_option('-s', '--ssldir', dest='ssldir', metavar='dir',
+ help='Directory where ssl certs are stored [%default]')
+ # FIXME improve the help string
+ parser.add_option('-S', '--dest-ssldir', dest='destssldir', metavar='dir',
+ help='Directory where ssl certs are packaged')
+ parser.add_option('-t', '--template', dest='template', metavar='file',
+ help='RPM spec file template [%default]')
+ opts, args = parser.parse_args()
+
+ if opts.force:
+ opts.force_cert = True
+ opts.force_tarball = True
+ opts.force_package = True
+
+ opts.rpmdir = os.path.abspath(opts.rpmdir)
+ opts.ssldir = os.path.abspath(opts.ssldir)
+ if not opts.destssldir:
+ opts.destssldir = opts.ssldir
+
+ if opts.allcerts:
+ args = []
+ for cert in glob.glob('%s/ca/signed/*.pem' % opts.ssldir):
+ basename = os.path.basename(cert)
+ # we need the private key as well as the cert
+ if os.path.exists('%s/private_keys/%s' % (opts.ssldir, basename)):
+ args.append(os.path.splitext(basename)[0])
+ args.sort()
+
+ if not args:
+ raise SystemExit(parser.print_usage())
+
+ for d in [opts.rpmdir, opts.ssldir]:
+ if not os.path.isdir(d):
+ raise SystemExit('%s does not exist (or is not a directory)' % d)
+
+ if not os.path.isfile(opts.template):
+ raise SystemExit('Template file (%s) does not exist' % opts.template)
+
+ for hostname in args:
+ host = PuppetHost(hostname, opts.__dict__)
+
+ if not os.path.exists(host.files['cert']) or opts.force_cert:
+ try: host.gencert()
+ except PuppetHostError, error:
+ print error
+ continue
+
+ try: host.package()
+ except Exception, error:
+ print error
+ continue
+
+if __name__ == '__main__':
+ try: _main()
+ except KeyboardInterrupt:
+ raise SystemExit(1)