import traceback
import textwrap
import argparse
+import getpass
# Third party modules
from .obj import PpBaseObject
-__version__ = '0.1.3'
+from .config import CrTplConfiguration
+
+__version__ = '0.2.1'
LOG = logging.getLogger(__name__)
self._init_env()
self._perform_env()
+ self.config = CrTplConfiguration(
+ appname=self.appname, verbose=self.verbose, base_dir=self.base_dir)
+
self.post_init()
# -----------------------------------------------------------
self.perform_arg_parser()
self.init_logging()
+ if not self.config.password:
+ prompt = 'Enter password for host {h!r} and user {u!r}: '.format(
+ h=self.config.vsphere_host, u=self.config.vsphere_user)
+ self.config.password = getpass.getpass(prompt=prompt)
+
self.initialized = True
# -------------------------------------------------------------------------
"""
- pass
+ vmware_group = self.arg_parser.add_argument_group('VMWare options')
+
+ vmware_group.add_argument(
+ '-H', '--host', dest='host',
+ help="Remote vSphere host to connect to (Default: {!r}).".format(
+ CrTplConfiguration.default_vsphere_host)
+ )
+
+ vmware_group.add_argument(
+ '-p', '--port', dest='port', type=int,
+ help="Port on vSphere host to connect on (Default: {}).".format(
+ CrTplConfiguration.default_vsphere_port)
+ )
+
+ vmware_group.add_argument(
+ '-U', '--user', dest='user',
+ help="User name to use when connecting to vSphere host (Default: {!r}).".format(
+ CrTplConfiguration.default_vsphere_user)
+ )
+
+ vmware_group.add_argument(
+ '-P', '--password', dest='password',
+ help="Password to use when connecting to vSphere host.",
+ )
+
+ vmware_group.add_argument(
+ '-F', '--folder', dest='folder',
+ help="Folder in vSphere, where to create the template (Default: {!r}).".format(
+ CrTplConfiguration.default_template_vm)
+ )
+
+ vmware_group.add_argument(
+ '-M', '--vm', dest='vm',
+ help=(
+ "The temporary VM, which will be created and converted into a "
+ "template (Default: {!r}).").format(CrTplConfiguration.default_template_vm)
+ )
+
+ vmware_group.add_argument(
+ '-T', '--template',
+ help=(
+ "The name of the created template as result of this script "
+ "(Default: {!r}).").format(CrTplConfiguration.default_template_name)
+ )
# -------------------------------------------------------------------------
def _perform_arg_parser(self):
--- /dev/null
+#!/usr/bin/env python
+# -*- coding: utf-8 -*-
+"""
+@author: Frank Brehm
+@contact: frank.brehm@pixelpark.com
+@copyright: © 2018 by Frank Brehm, Berlin
+@summary: A module for providing a configuration
+"""
+from __future__ import absolute_import
+
+# Standard module
+import sys
+import os
+import logging
+
+# Third party modules
+import six
+
+from six import StringIO
+from six.moves import configparser
+
+from configparser import Error as ConfigParseError
+
+# Own modules
+from .errors import FunctionNotImplementedError, PpError
+
+from .obj import PpBaseObject
+
+__version__ = '0.1.0'
+LOG = logging.getLogger(__name__)
+
+
+# =============================================================================
+class ConfigError(PpError):
+ """Base error class for all exceptions happened during
+ execution this configured application"""
+
+ pass
+
+
+# =============================================================================
+class CrTplConfiguration(PpBaseObject):
+ """
+ A class for providing a configuration for the CrTplApplication class
+ and methods to read it from configuration files.
+ """
+
+ default_vsphere_host = 'vcs01.ppbrln.internal'
+ default_vsphere_port = 443
+ default_vsphere_user = 'root'
+ default_folder = 'templates'
+ default_template_vm = 'template.pixelpark.com'
+ default_template_name = 'oracle-linux-7.4-template'
+
+ # -------------------------------------------------------------------------
+ def __init__(
+ self, appname=None, verbose=0, version=__version__, base_dir=None,
+ initialized=False):
+
+ self.vsphere_host = self.default_vsphere_host
+ self.vsphere_port = self.default_vsphere_port
+ self.vsphere_user = self.default_vsphere_user
+ self.password = None
+ self.folder = self.default_folder
+ self.template_vm = self.default_template_vm
+ self.template_name = self.default_template_name
+
+ super(CrTplConfiguration, self).__init__(
+ appname=appname,
+ verbose=verbose,
+ version=version,
+ base_dir=base_dir,
+ initialized=False,
+ )
+
+ # Workaround, bis das Lesen der Config implementiert ist
+ self.vsphere_host = 'test-vcsa01.pixelpark.net'
+ self.vsphere_user = 'Administrator@vsphere.local'
+
+ if initialized:
+ self.initialized = True
+
+ # -------------------------------------------------------------------------
+ def as_dict(self, short=True):
+ """
+ Transforms the elements of the object into a dict
+
+ @param short: don't include local properties in resulting dict.
+ @type short: bool
+
+ @return: structure as dict
+ @rtype: dict
+ """
+
+ res = super(CrTplConfiguration, self).as_dict(short=short)
+ res['default_vsphere_host'] = self.default_vsphere_host
+ res['default_vsphere_port'] = self.default_vsphere_port
+ res['default_vsphere_user'] = self.default_vsphere_user
+ res['default_folder'] = self.default_folder
+ res['default_template_vm'] = self.default_template_vm
+ res['default_template_name'] = self.default_template_name
+
+ return res
+
+
+# =============================================================================
+
+if __name__ == "__main__":
+
+ pass
+
+# =============================================================================
+
+# vim: tabstop=4 expandtab shiftwidth=4 softtabstop=4 list