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)
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)
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()
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)
def get_target_version(self): target_version = pki.util.Version(pki.specification_version()) logging.debug('Target version: %s', target_version) return target_version
def get_target_version(self): return pki.util.Version(pki.specification_version())