Beispiel #1
0
    def spawn_instance(self, cfg_file, nolog_list=()):
        """
        Create and configure a new Dogtag instance using pkispawn.
        Passes in a configuration file with IPA-specific
        parameters.
        """
        subsystem = self.subsystem
        spawn_env = os.environ.copy()
        timeout = str(api.env.startup_timeout)
        spawn_env["PKISPAWN_STARTUP_TIMEOUT_SECONDS"] = timeout

        args = [paths.PKISPAWN, "-s", subsystem, "-f", cfg_file, "--debug"]

        # specify --log-file <path> on PKI 11.0.0 or later

        pki_version = pki.util.Version(pki.specification_version())
        if pki_version >= pki.util.Version("11.0.0"):
            timestamp = time.strftime("%Y%m%d%H%M%S",
                                      time.localtime(time.time()))
            log_file = os.path.join(
                paths.VAR_LOG_PKI_DIR,
                "pki-%s-spawn.%s.log" % (self.subsystem.lower(), timestamp))
            args.extend(["--log-file", log_file])

        with open(cfg_file) as f:
            logger.debug('Contents of pkispawn configuration file (%s):\n%s',
                         cfg_file, ipautil.nolog_replace(f.read(), nolog_list))

        try:
            ipautil.run(args, nolog=nolog_list, env=spawn_env)
        except ipautil.CalledProcessError as e:
            self.handle_setup_error(e)
Beispiel #2
0
    def create(self, force=False):

        self.makedirs(self.base_dir, force=force)

        bin_dir = os.path.join(Tomcat.SHARE_DIR, 'bin')
        self.symlink(bin_dir, self.bin_dir, force=force)

        self.makedirs(self.conf_dir, force=force)

        catalina_policy = os.path.join(Tomcat.CONF_DIR, 'catalina.policy')
        self.copy(catalina_policy, self.catalina_policy, force=force)

        catalina_properties = os.path.join(
            PKIServer.SHARE_DIR, 'server', 'conf', 'catalina.properties')
        self.symlink(catalina_properties, self.catalina_properties, force=force)

        context_xml = os.path.join(Tomcat.CONF_DIR, 'context.xml')
        self.symlink(context_xml, self.context_xml, force=force)

        logging_properties = os.path.join(Tomcat.CONF_DIR, 'logging.properties')
        self.copy(logging_properties, self.logging_properties, force=force)

        self.create_server_xml()

        self.copy(Tomcat.TOMCAT_CONF, self.tomcat_conf, force=force)

        with open(self.tomcat_conf, 'a') as f:
            f.write('\nPKI_VERSION=%s\n' % pki.specification_version())

        web_xml = os.path.join(Tomcat.CONF_DIR, 'web.xml')
        self.symlink(web_xml, self.web_xml, force=force)

        conf_d_dir = os.path.join(self.conf_dir, 'conf.d')
        self.makedirs(conf_d_dir, force=force)

        self.create_libs(force=force)

        self.makedirs(self.temp_dir, force=force)
        self.makedirs(self.webapps_dir, force=force)
        self.makedirs(self.work_dir, force=force)
        self.makedirs(self.log_dir, force=force)

        document = etree.parse(self.server_xml, parser)
        server = document.getroot()

        for engine in server.findall('Service/Engine'):
            engine_name = engine.get('name')
            engine_dir = os.path.join(self.conf_dir, engine_name)
            self.makedirs(engine_dir, force=force)

            for host in engine.findall('Host'):
                host_name = host.get('name')
                host_dir = os.path.join(engine_dir, host_name)
                self.makedirs(host_dir, force=force)

        service_conf = os.path.join(SYSCONFIG_DIR, 'tomcat')
        self.copy(service_conf, self.service_conf, force=force)

        with open(self.service_conf, 'a') as f:
            print('CATALINA_BASE="%s"' % self.base_dir, file=f)
Beispiel #3
0
    def init_config(self, pki_instance_name=None):
        self.deployer.nss_db_type = self.get_nss_db_type()
        java_home = self._getenv('JAVA_HOME').strip()

        # Check if a instance name is provided before assigning a default
        # instance_name
        if pki_instance_name:
            default_instance_name = pki_instance_name
        else:
            default_instance_name = 'pki-tomcat'

        default_http_port = '8080'
        default_https_port = '8443'

        application_version = str(pki.util.Version(
            pki.specification_version()))

        charset = string.digits + string.ascii_lowercase + string.ascii_uppercase
        self.deployer.main_config = configparser.SafeConfigParser({
            'application_version':
            application_version,
            'pki_instance_name':
            default_instance_name,
            'pki_http_port':
            default_http_port,
            'pki_https_port':
            default_https_port,
            'pki_dns_domainname':
            self.deployer.dns_domainname,
            'pki_subsystem':
            self.deployer.subsystem_name,
            'pki_subsystem_type':
            self.deployer.subsystem_name.lower(),
            'nss_default_db_type':
            self.deployer.nss_db_type,
            'java_home':
            java_home,
            'home_dir':
            os.path.expanduser("~"),
            'pki_hostname':
            self.deployer.hostname,
            'pki_random_ajp_secret':
            pki.generate_password(charset, length=25)
        })

        # Make keys case-sensitive!
        self.deployer.main_config.optionxform = str

        self.deployer.user_config = configparser.SafeConfigParser()
        self.deployer.user_config.optionxform = str

        with open(config.default_deployment_cfg) as f:
            self.deployer.main_config.readfp(f)

        self.deployer.flatten_master_dict()
Beispiel #4
0
    def uninstall(self):
        if self.is_installed():
            self.print_msg("Unconfiguring %s" % self.subsystem)

        args = [paths.PKIDESTROY, "-i", "pki-tomcat", "-s", self.subsystem]

        # specify --log-file <path> on PKI 11.0.0 or later

        pki_version = pki.util.Version(pki.specification_version())
        if pki_version >= pki.util.Version("11.0.0"):
            timestamp = time.strftime("%Y%m%d%H%M%S",
                                      time.localtime(time.time()))
            log_file = os.path.join(
                paths.VAR_LOG_PKI_DIR,
                "pki-%s-destroy.%s.log" % (self.subsystem.lower(), timestamp))
            args.extend(["--log-file", log_file])

        try:
            ipautil.run(args)

        except ipautil.CalledProcessError as e:
            logger.critical("failed to uninstall %s instance %s",
                            self.subsystem, e)
Beispiel #5
0
    def get_target_version(self):

        target_version = pki.util.Version(pki.specification_version())
        logging.debug('Target version: %s', target_version)

        return target_version
Beispiel #6
0
 def get_target_version(self):
     return pki.util.Version(pki.specification_version())