[Pki-devel] [PATCH] 531 Moved web application deployment locations.

Fraser Tweedale ftweedal at redhat.com
Wed Oct 29 07:36:05 UTC 2014


On Tue, Oct 28, 2014 at 09:07:55AM -0500, Endi Sukma Dewata wrote:
> On 10/24/2014 5:46 PM, Endi Sukma Dewata wrote:
> >Currently web applications are deployed into Host's appBase (i.e.
> ><instance>/webapps). To allow better control of individual
> >subsystem deployments, the web applications have to be moved out
> >of the appBase so that the autoDeploy can work properly later.
> >This patch moves the common web applications to <instance>/
> >common/webapps and subsystem web applications to <instance>/
> ><subsystem>/webapps. An upgrade script has been added to update
> >existing deployments.
> >
> >https://fedorahosted.org/pki/ticket/1183
> 
> New patch attached with docs for PKIDeployer.deploy_webapp().
> 
> -- 
> Endi S. Dewata

ACK.

Upgrading existing instance and spawning new instance worked and
layout was as expected.

> >From 51613b5ac4f1f685e621f47fd6a5af5397f8b98a Mon Sep 17 00:00:00 2001
> From: "Endi S. Dewata" <edewata at redhat.com>
> Date: Sun, 12 Oct 2014 00:16:55 -0400
> Subject: [PATCH] Moved web application deployment locations.
> 
> Currently web applications are deployed into Host's appBase (i.e.
> <instance>/webapps). To allow better control of individual
> subsystem deployments, the web applications have to be moved out
> of the appBase so that the autoDeploy can work properly later.
> This patch moves the common web applications to <instance>/
> common/webapps and subsystem web applications to <instance>/
> <subsystem>/webapps. An upgrade script has been added to update
> existing deployments.
> 
> https://fedorahosted.org/pki/ticket/1183
> ---
>  base/server/etc/default.cfg                        |   5 +-
>  .../python/pki/server/deployment/pkihelper.py      |  35 ++++++
>  .../deployment/scriptlets/instance_layout.py       |  32 +++++-
>  .../deployment/scriptlets/subsystem_layout.py      |   6 --
>  .../deployment/scriptlets/webapp_deployment.py     |  49 +++++----
>  base/server/scripts/operations                     |  25 ++---
>  base/server/upgrade/10.2.0/.gitignore              |   4 -
>  .../01-MoveWebApplicationDeploymentLocations       | 119 +++++++++++++++++++++
>  8 files changed, 219 insertions(+), 56 deletions(-)
>  delete mode 100644 base/server/upgrade/10.2.0/.gitignore
>  create mode 100755 base/server/upgrade/10.2.0/01-MoveWebApplicationDeploymentLocations
> 
> diff --git a/base/server/etc/default.cfg b/base/server/etc/default.cfg
> index ecf436d9f15729ed27e09975ab1f1151e504fe94..98a3628572e78f71525a95cedd0e473be8a14d9d 100644
> --- a/base/server/etc/default.cfg
> +++ b/base/server/etc/default.cfg
> @@ -217,6 +217,7 @@ pki_tomcat_common_path=%(pki_instance_path)s/common
>  pki_tomcat_common_lib_path=%(pki_tomcat_common_path)s/lib
>  pki_tomcat_tmpdir_path=%(pki_instance_path)s/temp
>  pki_tomcat_webapps_path=%(pki_instance_path)s/webapps
> +pki_tomcat_common_webapps_path=%(pki_instance_path)s/common/webapps
>  pki_tomcat_work_path=%(pki_instance_path)s/work
>  pki_tomcat_work_catalina_path=%(pki_tomcat_work_path)s/Catalina
>  pki_tomcat_work_catalina_host_path=%(pki_tomcat_work_catalina_path)s/localhost
> @@ -231,8 +232,8 @@ pki_instance_lib=%(pki_instance_path)s/lib
>  pki_instance_lib_log4j_properties=%(pki_instance_lib)s/log4j.properties
>  pki_instance_systemd_link=%(pki_instance_path)s/%(pki_instance_name)s
>  pki_subsystem_signed_audit_log_path=%(pki_subsystem_log_path)s/signedAudit
> -pki_subsystem_tomcat_webapps_link=%(pki_subsystem_path)s/webapps
> -pki_tomcat_webapps_subsystem_path=%(pki_tomcat_webapps_path)s/%(pki_subsystem_type)s
> +pki_tomcat_subsystem_webapps_path=%(pki_subsystem_path)s/webapps
> +pki_tomcat_webapps_subsystem_path=%(pki_tomcat_subsystem_webapps_path)s/%(pki_subsystem_type)s
>  pki_tomcat_webapps_subsystem_webinf_classes_path=%(pki_tomcat_webapps_subsystem_path)s/WEB-INF/classes
>  pki_tomcat_webapps_subsystem_webinf_lib_path=%(pki_tomcat_webapps_subsystem_path)s/WEB-INF/lib
>  pki_certsrv_jar_link=%(pki_tomcat_webapps_subsystem_webinf_lib_path)s/pki-certsrv.jar
> diff --git a/base/server/python/pki/server/deployment/pkihelper.py b/base/server/python/pki/server/deployment/pkihelper.py
> index 96048bdecafe404225ceedf3c17f6c262f64d093..4fbc4a352a247e2e84c456a24dfc7f79afb9cb46 100644
> --- a/base/server/python/pki/server/deployment/pkihelper.py
> +++ b/base/server/python/pki/server/deployment/pkihelper.py
> @@ -40,6 +40,7 @@ from grp import getgrnam
>  from pwd import getpwnam
>  from pwd import getpwuid
>  import xml.etree.ElementTree as ET
> +from lxml import etree
>  import zipfile
>  import selinux
>  if selinux.is_selinux_enabled():
> @@ -4171,4 +4172,38 @@ class PKIDeployer:
>          self.tps_connector = TPSConnector(self)
>          self.config_client = ConfigClient(self)
>  
> +    def deploy_webapp(self, name, doc_base, descriptor):
> +        """
> +        Deploy a web application into a Tomcat instance.
>  
> +        This method will copy the specified deployment descriptor into
> +        <instance>/conf/Catalina/localhost/<name>.xml and point the docBase
> +        to the specified location. The web application will become available
> +        under "/<name>" URL path.
> +
> +        See also: http://tomcat.apache.org/tomcat-7.0-doc/config/context.html
> +
> +        :param name: Web application name.
> +        :type name: str
> +        :param doc_base: Path to web application content.
> +        :type doc_base: str
> +        :param descriptor: Path to deployment descriptor (context.xml).
> +        :type descriptor: str
> +        """
> +        new_descriptor = os.path.join(
> +            self.mdict['pki_instance_configuration_path'],
> +            "Catalina",
> +            "localhost",
> +            name + ".xml")
> +
> +        parser = etree.XMLParser(remove_blank_text=True)
> +        document = etree.parse(descriptor, parser)
> +
> +        context = document.getroot()
> +        context.set('docBase', doc_base)
> +
> +        with open(new_descriptor, 'w') as f:
> +            f.write(etree.tostring(document, pretty_print=True))
> +
> +        os.chown(new_descriptor, self.mdict['pki_uid'], self.mdict['pki_gid'])
> +        os.chmod(new_descriptor, config.PKI_DEPLOYMENT_DEFAULT_FILE_PERMISSIONS)
> diff --git a/base/server/python/pki/server/deployment/scriptlets/instance_layout.py b/base/server/python/pki/server/deployment/scriptlets/instance_layout.py
> index 9cdecb4f29ccccfe7afdfe11a649e1c2d72a69ba..5079891f92ac498f078cd401f34287fab03e0fd6 100644
> --- a/base/server/python/pki/server/deployment/scriptlets/instance_layout.py
> +++ b/base/server/python/pki/server/deployment/scriptlets/instance_layout.py
> @@ -55,6 +55,30 @@ class PkiScriptlet(pkiscriptlet.AbstractBasePkiScriptlet):
>                  deployer.mdict['pki_source_server_path'],
>                  deployer.mdict['pki_instance_configuration_path'])
>  
> +            # Deploy ROOT web application
> +            deployer.deploy_webapp(
> +                "ROOT",
> +                os.path.join(
> +                    deployer.mdict['pki_tomcat_common_webapps_path'],
> +                    "ROOT"),
> +                os.path.join(
> +                    deployer.mdict['pki_source_server_path'],
> +                    "Catalina",
> +                    "localhost",
> +                    "ROOT.xml"))
> +
> +            # Deploy pki web application
> +            deployer.deploy_webapp(
> +                "pki",
> +                os.path.join(
> +                    deployer.mdict['pki_tomcat_common_webapps_path'],
> +                    "pki"),
> +                os.path.join(
> +                    deployer.mdict['pki_source_server_path'],
> +                    "Catalina",
> +                    "localhost",
> +                    "pki.xml"))
> +
>              # establish Tomcat instance base
>              deployer.directory.create(deployer.mdict['pki_tomcat_common_path'])
>              deployer.directory.create(
> @@ -74,23 +98,23 @@ class PkiScriptlet(pkiscriptlet.AbstractBasePkiScriptlet):
>                  deployer.mdict['pki_instance_lib_log4j_properties'])
>              deployer.directory.create(deployer.mdict['pki_tomcat_tmpdir_path'])
>  
> -            # Copy /usr/share/pki/server/webapps to <instance>/webapps
> +            # Copy /usr/share/pki/server/webapps to <instance>/common/webapps
>              deployer.directory.copy(
>                  os.path.join(
>                      config.PKI_DEPLOYMENT_SOURCE_ROOT,
>                      "server",
>                      "webapps"),
> -                deployer.mdict['pki_tomcat_webapps_path'])
> +                deployer.mdict['pki_tomcat_common_webapps_path'])
>  
>              # If desired and available,
>              # copy selected server theme
> -            # to <instance>/webapps/pki
> +            # to <instance>/common/webapps/pki
>              if config.str2bool(deployer.mdict['pki_theme_enable']) and\
>                      os.path.exists(deployer.mdict['pki_theme_server_dir']):
>                  deployer.directory.copy(
>                      deployer.mdict['pki_theme_server_dir'],
>                      os.path.join(
> -                        deployer.mdict['pki_tomcat_webapps_path'],
> +                        deployer.mdict['pki_tomcat_common_webapps_path'],
>                          "pki"),
>                      overwrite_flag=True)
>  
> diff --git a/base/server/python/pki/server/deployment/scriptlets/subsystem_layout.py b/base/server/python/pki/server/deployment/scriptlets/subsystem_layout.py
> index 324accad0d6a9230ac15cebd2c67b0eeb1ec756b..c3d06c0796a00d6c5973780706bde7e9e2838bf3 100644
> --- a/base/server/python/pki/server/deployment/scriptlets/subsystem_layout.py
> +++ b/base/server/python/pki/server/deployment/scriptlets/subsystem_layout.py
> @@ -103,12 +103,6 @@ class PkiScriptlet(pkiscriptlet.AbstractBasePkiScriptlet):
>                  deployer.file.copy(
>                      deployer.mdict['pki_source_transportcert_profile'],
>                      deployer.mdict['pki_target_transportcert_profile'])
> -            # establish instance-based Tomcat PKI subsystem registry
> -            # establish instance-based Tomcat PKI subsystem convenience
> -            # symbolic links
> -            deployer.symlink.create(
> -                deployer.mdict['pki_tomcat_webapps_path'],
> -                deployer.mdict['pki_subsystem_tomcat_webapps_link'])
>          # establish instance-based subsystem convenience symbolic links
>          deployer.symlink.create(
>              deployer.mdict['pki_instance_database_link'],
> diff --git a/base/server/python/pki/server/deployment/scriptlets/webapp_deployment.py b/base/server/python/pki/server/deployment/scriptlets/webapp_deployment.py
> index 962de724fcfc034ce0fb389a056928102122679e..dce327ff871f58fb5a954fe76c7ded31867c2af3 100644
> --- a/base/server/python/pki/server/deployment/scriptlets/webapp_deployment.py
> +++ b/base/server/python/pki/server/deployment/scriptlets/webapp_deployment.py
> @@ -44,29 +44,38 @@ class PkiScriptlet(pkiscriptlet.AbstractBasePkiScriptlet):
>              config.pki_log.info(log.WEBAPP_DEPLOYMENT_SPAWN_1, __name__,
>                                  extra=config.PKI_INDENTATION_LEVEL_1)
>  
> +            # Create subsystem webapps folder to store custom webapps:
> +            # <instance>/<subsystem>/webapps.
> +            deployer.directory.create(
> +                deployer.mdict['pki_tomcat_subsystem_webapps_path'])
> +
> +            # set ownerships, permissions, and acls
> +            deployer.directory.set_mode(
> +                deployer.mdict['pki_tomcat_subsystem_webapps_path'])
> +
>              # For TPS, deploy web application directly from /usr/share/pki.
>              if deployer.mdict['pki_subsystem'] == "TPS":
> -                deployer.file.copy(
> +                deployer.deploy_webapp(
> +                    "tps",
> +                    os.path.join(
> +                        config.PKI_DEPLOYMENT_SOURCE_ROOT,
> +                        "tps",
> +                        "webapps",
> +                        "tps"),
>                      os.path.join(
>                          config.PKI_DEPLOYMENT_SOURCE_ROOT,
>                          "tps",
>                          "conf",
>                          "Catalina",
>                          "localhost",
> -                        "tps.xml"),
> -                    os.path.join(
> -                        deployer.mdict['pki_instance_configuration_path'],
> -                        "Catalina",
> -                        "localhost",
>                          "tps.xml"))
> +
>                  return self.rv
>  
> -            # For other subsystems, deploy web application into Tomcat instance.
> -            deployer.directory.create(
> -                deployer.mdict['pki_tomcat_webapps_subsystem_path'])
> +            # For other subsystems, deploy as custom web application.
>  
>              # Copy /usr/share/pki/<subsystem>/webapps/<subsystem>
> -            # to <instance>/webapps/<subsystem>
> +            # to <instance>/<subsystem>/webapps/<subsystem>
>              deployer.directory.copy(
>                  os.path.join(
>                      config.PKI_DEPLOYMENT_SOURCE_ROOT,
> @@ -77,7 +86,7 @@ class PkiScriptlet(pkiscriptlet.AbstractBasePkiScriptlet):
>                  overwrite_flag=True)
>  
>              # Copy /usr/share/pki/server/webapps/pki/admin
> -            # to <instance>/webapps/<subsystem>/admin
> +            # to <instance>/<subsystem>/webapps/<subsystem>/admin
>              # TODO: common templates should be deployed in common webapp
>              deployer.directory.copy(
>                  os.path.join(
> @@ -131,26 +140,16 @@ class PkiScriptlet(pkiscriptlet.AbstractBasePkiScriptlet):
>                      deployer.mdict['pki_tks_jar'],
>                      deployer.mdict['pki_tks_jar_link'])
>  
> -            # set ownerships, permissions, and acls
> -            deployer.directory.set_mode(
> -                deployer.mdict['pki_tomcat_webapps_subsystem_path'])
> -
> -            # Copy web application context file
> -            # from /usr/share/pki/<subsystem>/conf/Catalina/localhost/
> -            # <subsystem>.xml
> -            # to <instance>/conf/Catalina/localhost/<subsystem>.xml
> -            deployer.file.copy(
> +            # Deploy subsystem web application.
> +            deployer.deploy_webapp(
> +                deployer.mdict['pki_subsystem'].lower(),
> +                deployer.mdict['pki_tomcat_webapps_subsystem_path'],
>                  os.path.join(
>                      config.PKI_DEPLOYMENT_SOURCE_ROOT,
>                      deployer.mdict['pki_subsystem'].lower(),
>                      "conf",
>                      "Catalina",
>                      "localhost",
> -                    deployer.mdict['pki_subsystem'].lower() + ".xml"),
> -                os.path.join(
> -                    deployer.mdict['pki_instance_configuration_path'],
> -                    "Catalina",
> -                    "localhost",
>                      deployer.mdict['pki_subsystem'].lower() + ".xml"))
>  
>          return self.rv
> diff --git a/base/server/scripts/operations b/base/server/scripts/operations
> index 37094c037f4a76cfc414a421839c018fdbc4571f..3cd313c6275d69df5ed95f6b5e2e1c2fd9db19e9 100644
> --- a/base/server/scripts/operations
> +++ b/base/server/scripts/operations
> @@ -1108,11 +1108,11 @@ verify_symlinks()
>      pki_registry_dir="/etc/sysconfig/pki/${PKI_WEB_SERVER_TYPE}/${PKI_INSTANCE_NAME}"
>      pki_systemd_dir="/etc/systemd/system/pki-tomcatd.target.wants"
>      pki_systemd_link="pki-${PKI_WEB_SERVER_TYPE}d@${PKI_INSTANCE_NAME}.service"
> -    pki_ca_jar_dir="${PKI_INSTANCE_PATH}/webapps/ca/WEB-INF/lib"
> -    pki_kra_jar_dir="${PKI_INSTANCE_PATH}/webapps/kra/WEB-INF/lib"
> -    pki_ocsp_jar_dir="${PKI_INSTANCE_PATH}/webapps/ocsp/WEB-INF/lib"
> -    pki_tks_jar_dir="${PKI_INSTANCE_PATH}/webapps/tks/WEB-INF/lib"
> -    pki_tps_jar_dir="${PKI_INSTANCE_PATH}/webapps/tps/WEB-INF/lib"
> +    pki_ca_jar_dir="${PKI_INSTANCE_PATH}/ca/webapps/ca/WEB-INF/lib"
> +    pki_kra_jar_dir="${PKI_INSTANCE_PATH}/kra/webapps/kra/WEB-INF/lib"
> +    pki_ocsp_jar_dir="${PKI_INSTANCE_PATH}/ocsp/webapps/ocsp/WEB-INF/lib"
> +    pki_tks_jar_dir="${PKI_INSTANCE_PATH}/tks/webapps/tks/WEB-INF/lib"
> +    pki_tps_jar_dir="${PKI_INSTANCE_PATH}/tps/webapps/tps/WEB-INF/lib"
>  
>      # '${PKI_INSTANCE_PATH}' symlinks
>      base_symlinks=(
> @@ -1126,8 +1126,7 @@ verify_symlinks()
>          [alias]=${PKI_INSTANCE_PATH}/alias
>          [conf]=/etc/pki/${PKI_INSTANCE_NAME}/ca
>          [logs]=/var/log/pki/${PKI_INSTANCE_NAME}/ca
> -        [registry]=${pki_registry_dir}
> -        [webapps]=${PKI_INSTANCE_PATH}/webapps)
> +        [registry]=${pki_registry_dir})
>  
>      # '${pki_ca_jar_dir}' symlinks
>      ca_jar_symlinks=(
> @@ -1144,8 +1143,7 @@ verify_symlinks()
>          [alias]=${PKI_INSTANCE_PATH}/alias
>          [conf]=/etc/pki/${PKI_INSTANCE_NAME}/kra
>          [logs]=/var/log/pki/${PKI_INSTANCE_NAME}/kra
> -        [registry]=${pki_registry_dir}
> -        [webapps]=${PKI_INSTANCE_PATH}/webapps)
> +        [registry]=${pki_registry_dir})
>  
>      # '${pki_kra_jar_dir}' symlinks
>      kra_jar_symlinks=(
> @@ -1162,8 +1160,7 @@ verify_symlinks()
>          [alias]=${PKI_INSTANCE_PATH}/alias
>          [conf]=/etc/pki/${PKI_INSTANCE_NAME}/ocsp
>          [logs]=/var/log/pki/${PKI_INSTANCE_NAME}/ocsp
> -        [registry]=${pki_registry_dir}
> -        [webapps]=${PKI_INSTANCE_PATH}/webapps)
> +        [registry]=${pki_registry_dir})
>  
>      # '${pki_ocsp_jar_dir}' symlinks
>      ocsp_jar_symlinks=(
> @@ -1180,8 +1177,7 @@ verify_symlinks()
>          [alias]=${PKI_INSTANCE_PATH}/alias
>          [conf]=/etc/pki/${PKI_INSTANCE_NAME}/tks
>          [logs]=/var/log/pki/${PKI_INSTANCE_NAME}/tks
> -        [registry]=${pki_registry_dir}
> -        [webapps]=${PKI_INSTANCE_PATH}/webapps)
> +        [registry]=${pki_registry_dir})
>  
>      # '${pki_tks_jar_dir}' symlinks
>      tks_jar_symlinks=(
> @@ -1198,8 +1194,7 @@ verify_symlinks()
>          [alias]=${PKI_INSTANCE_PATH}/alias
>          [conf]=/etc/pki/${PKI_INSTANCE_NAME}/tps
>          [logs]=/var/log/pki/${PKI_INSTANCE_NAME}/tps
> -        [registry]=${pki_registry_dir}
> -        [webapps]=${PKI_INSTANCE_PATH}/webapps)
> +        [registry]=${pki_registry_dir})
>  
>      # '${pki_tps_jar_dir}' symlinks
>      tps_jar_symlinks=(
> diff --git a/base/server/upgrade/10.2.0/.gitignore b/base/server/upgrade/10.2.0/.gitignore
> deleted file mode 100644
> index 5e7d2734cfc60289debf74293817c0a8f572ff32..0000000000000000000000000000000000000000
> --- a/base/server/upgrade/10.2.0/.gitignore
> +++ /dev/null
> @@ -1,4 +0,0 @@
> -# Ignore everything in this directory
> -*
> -# Except this file
> -!.gitignore
> diff --git a/base/server/upgrade/10.2.0/01-MoveWebApplicationDeploymentLocations b/base/server/upgrade/10.2.0/01-MoveWebApplicationDeploymentLocations
> new file mode 100755
> index 0000000000000000000000000000000000000000..20f35e837d2dbce7bfee01187b9763d4ff592d40
> --- /dev/null
> +++ b/base/server/upgrade/10.2.0/01-MoveWebApplicationDeploymentLocations
> @@ -0,0 +1,119 @@
> +#!/usr/bin/python
> +# Authors:
> +#     Endi S. Dewata <edewata at redhat.com>
> +#
> +# This program is free software; you can redistribute it and/or modify
> +# it under the terms of the GNU General Public License as published by
> +# the Free Software Foundation; version 2 of the License.
> +#
> +# This program is distributed in the hope that it will be useful,
> +# but WITHOUT ANY WARRANTY; without even the implied warranty of
> +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
> +# GNU General Public License for more details.
> +#
> +# You should have received a copy of the GNU General Public License along
> +# with this program; if not, write to the Free Software Foundation, Inc.,
> +# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
> +#
> +# Copyright (C) 2014 Red Hat, Inc.
> +# All rights reserved.
> +#
> +
> +import grp
> +import os
> +import pwd
> +import shutil
> +import signal
> +import sys
> +from lxml import etree
> +
> +import pki
> +import pki.server.upgrade
> +
> +
> +class MoveWebApplicationDeploymentLocations(pki.server.upgrade.PKIServerUpgradeScriptlet):
> +
> +    def __init__(self):
> +
> +        self.message = 'Move Web application deployment locations'
> +
> +        self.parser = etree.XMLParser(remove_blank_text=True)
> +
> +    def upgrade_subsystem(self, instance, subsystem):
> +
> +        subsystem_webapps = os.path.join(instance.base_dir, subsystem.name, 'webapps')
> +        self.backup(subsystem_webapps)
> +
> +        # remove old subsystem webapps symlink
> +        if os.path.islink(subsystem_webapps):
> +            os.unlink(subsystem_webapps)
> +
> +        # create new subsytem webapps folder
> +        if not os.path.exists(subsystem_webapps):
> +            os.mkdir(subsystem_webapps)
> +
> +        uid = pwd.getpwnam('pkiuser').pw_uid
> +        gid = grp.getgrnam('pkiuser').gr_gid
> +
> +        os.chown(subsystem_webapps, uid, gid)
> +        os.chmod(subsystem_webapps, 0770)
> +
> +        # move subsystem webapp
> +        subsystem_old_webapp = os.path.join(instance.base_dir, 'webapps', subsystem.name)
> +        subsystem_new_webapp = os.path.join(subsystem_webapps, subsystem.name)
> +        subsystem_context_xml = os.path.join(instance.conf_dir, 'Catalina', 'localhost', subsystem.name + '.xml')
> +
> +        self.move_webapp(subsystem_old_webapp, subsystem_new_webapp, subsystem_context_xml)
> +
> +    def upgrade_instance(self, instance):
> +
> +        common_webapps = os.path.join(instance.base_dir, 'common', 'webapps')
> +        self.backup(common_webapps)
> +
> +        # create new common webapps folder
> +        if not os.path.exists(common_webapps):
> +            os.mkdir(common_webapps)
> +
> +        uid = pwd.getpwnam('pkiuser').pw_uid
> +        gid = grp.getgrnam('pkiuser').gr_gid
> +
> +        os.chown(common_webapps, uid, gid)
> +        os.chmod(common_webapps, 0770)
> +
> +        # move ROOT webapp
> +        root_old_webapp = os.path.join(instance.base_dir, 'webapps', 'ROOT')
> +        root_new_webapp = os.path.join(common_webapps, 'ROOT')
> +        root_context_xml = os.path.join(instance.conf_dir, 'Catalina', 'localhost', 'ROOT.xml')
> +
> +        self.move_webapp(root_old_webapp, root_new_webapp, root_context_xml)
> +
> +        # move pki webapp
> +        pki_old_webapp = os.path.join(instance.base_dir, 'webapps', 'pki')
> +        pki_new_webapp = os.path.join(common_webapps, 'pki')
> +        pki_context_xml = os.path.join(instance.conf_dir, 'Catalina', 'localhost', 'pki.xml')
> +
> +        self.move_webapp(pki_old_webapp, pki_new_webapp, pki_context_xml)
> +
> +    def move_webapp(self, old_webapp, new_webapp, context_xml):
> +
> +        if not os.path.exists(old_webapp):
> +            return
> +
> +        # move old webapp to the new webapp
> +        self.backup(old_webapp)
> +        self.backup(new_webapp)
> +
> +        shutil.move(old_webapp, new_webapp)
> +
> +        # update docBase in context.xml
> +        self.backup(context_xml)
> +
> +        document = etree.parse(context_xml, self.parser)
> +
> +        context = document.getroot()
> +        doc_base = context.get('docBase')
> +
> +        context.set('docBase', new_webapp)
> +
> +        with open(context_xml, 'w') as f:
> +            f.write(etree.tostring(document, pretty_print=True))
> -- 
> 1.8.4.2
> 

> _______________________________________________
> Pki-devel mailing list
> Pki-devel at redhat.com
> https://www.redhat.com/mailman/listinfo/pki-devel




More information about the Pki-devel mailing list