From: Frank Brehm Date: Wed, 15 Aug 2018 09:19:51 +0000 (+0200) Subject: Finishing performing command line of bin/check-puppet-env X-Git-Tag: 0.1.2~6^2~10^2^2~16 X-Git-Url: https://git.uhu-banane.net/?a=commitdiff_plain;h=df551906458f9b28d14c4d3ee747cbf8d4ec4aad;p=pixelpark%2Fadmin-tools.git Finishing performing command line of bin/check-puppet-env --- diff --git a/pp_lib/check_puppet_env_app.py b/pp_lib/check_puppet_env_app.py index 9c8e495..df5bc8d 100644 --- a/pp_lib/check_puppet_env_app.py +++ b/pp_lib/check_puppet_env_app.py @@ -17,9 +17,8 @@ import copy import json import socket import pwd -import pipes -import codecs -import ipaddress +import sys +import glob # Third party modules import six @@ -40,7 +39,7 @@ from .merge import merge_structure from .app import PpApplication -__version__ = '0.1.0' +__version__ = '0.2.1' LOG = logging.getLogger(__name__) @@ -74,6 +73,7 @@ class CheckPuppetEnvApp(PpApplication): self.out_dir = None self.environments = [] self.env_name = None + self.env_dir = None super(CheckPuppetEnvApp, self).__init__( appname=appname, verbose=verbose, version=version, base_dir=base_dir, @@ -139,13 +139,96 @@ class CheckPuppetEnvApp(PpApplication): # ------------------------------------------------------------------------- def perform_arg_parser(self): + puppet_root_env_dir = self.puppet_root_env_dir + retval = 5 + if self.args.env_dir: - self.puppet_root_env_dir = self.args.env_dir + puppet_root_env_dir = self.args.env_dir + retval = 0 + + if not os.path.exists(puppet_root_env_dir): + msg = ( + self.appname + ': ' + + "Puppet environment directory {!r} does not exists.".format(puppet_root_env_dir)) + sys.stderr.write(msg + '\n\n') + self.exit(retval) + + if not os.path.isdir(puppet_root_env_dir): + msg = ( + self.appname + ': ' + + "Path for Puppet environment directory {!r} is not a directory.".format( + puppet_root_env_dir)) + sys.stderr.write(msg + '\n\n') + self.exit(retval) + + self.puppet_root_env_dir = puppet_root_env_dir + self._init_puppet_environments() self.env_name = self.args.env + self.env_dir = os.path.join(self.puppet_root_env_dir, self.env_name) + + if not os.path.exists(self.env_dir): + msg = ( + self.appname + ': ' + + "Invalid Puppet environment {e!r} - directory {d!r} does not exists.".format( + e=self.env_name, d=self.env_dir)) + sys.stderr.write(msg + '\n\n') + msg = "Valid environments are:\n" + for env in self.environments: + msg += " * {}\n".format(env) + sys.stderr.write(msg + '\n') + self.arg_parser.print_usage(sys.stdout) + self.exit(0) + + if not os.path.isdir(puppet_root_env_dir): + msg = ( + self.appname + ': ' + + "Invalid Puppet environment {e!r} - path {d!r} is not a directory.".format( + e=self.env_name, d=self.env_dir)) + sys.stderr.write(msg + '\n\n') + msg = "Valid environments are:\n" + for env in self.environments: + msg += " * {}\n".format(env) + sys.stderr.write(msg + '\n') + self.exit(retval) + + out_dir = self.out_dir + retval = 6 if self.args.out_dir: - self.out_dir = self.args.out_dir + out_dir = self.args.out_dir + retval = 0 + + if not os.path.exists(out_dir): + msg = ( + self.appname + ': ' + + "Output directory {!r} does not exists.".format(out_dir)) + sys.stderr.write(msg + '\n\n') + self.exit(retval) + + if not os.path.isdir(out_dir): + msg = ( + self.appname + ': ' + + "Path for Output directory {!r} is not a directory.".format( + out_dir)) + sys.stderr.write(msg + '\n\n') + self.exit(retval) + + self.out_dir = out_dir + + # ------------------------------------------------------------------------- + def _init_puppet_environments(self): + + pattern = os.path.join(self.puppet_root_env_dir, '*') + dirs = glob.glob(pattern) + + self.environments = [] + for path in dirs: + if os.path.isdir(path): + env = os.path.basename(path) + self.environments.append(env) + + self.environments.sort(key=str.lower) # ------------------------------------------------------------------------- def post_init(self):