From d814e3883b67b2b380ae3a1beb43dc2dca6381b9 Mon Sep 17 00:00:00 2001
From: Endi Sukma Dewata <edewata@redhat.com>
Date: Tue, 21 Aug 2012 13:15:34 -0500
Subject: [PATCH] Moved webapp deployment code into pkispawn.

Previously the WAR files were generated at build time, so it would
include theme files that were installed on the build machine.

The code has been changed such that instead of generating WAR files
pkispawn will copy the webapp files from the theme folders and combine
them with subsystem webapp files at deployment time. This way it will
use the actual theme files installed on the deployment machine.

Ticket #89
---
 base/deploy/CMakeLists.txt                         | 10 ++--
 base/deploy/config/pkideployment.cfg               |  4 --
 base/deploy/src/scriptlets/pkimessages.py          |  6 +--
 base/deploy/src/scriptlets/pkiparser.py            |  7 ---
 .../{war_explosion.py => webapp_deployment.py}     | 60 +++++++++++++++++++---
 specs/pki-core.spec                                | 30 ++---------
 6 files changed, 64 insertions(+), 53 deletions(-)
 rename base/deploy/src/scriptlets/{war_explosion.py => webapp_deployment.py} (62%)

diff --git a/base/deploy/CMakeLists.txt b/base/deploy/CMakeLists.txt
index 666a7704dedda82fc165ec78435ececf1c0a07b8..e0f65362b44f298e9f7d7b07decb2d7fe0074929 100644
--- a/base/deploy/CMakeLists.txt
+++ b/base/deploy/CMakeLists.txt
@@ -86,7 +86,7 @@ install(
         src/scriptlets/selinux_setup.py
         src/scriptlets/slot_substitution.py
         src/scriptlets/subsystem_layout.py
-        src/scriptlets/war_explosion.py
+        src/scriptlets/webapp_deployment.py
     DESTINATION
         ${PYTHON_SITE_PACKAGES}/pki/deployment
     PERMISSIONS
@@ -149,8 +149,8 @@ foreach(TOMCAT_SUBSYSTEM ${TOMCAT_SUBSYSTEMS})
     )
     install(CODE "execute_process(COMMAND
         ${CMAKE_COMMAND} -E create_symlink
-        \"${PYTHON_SITE_PACKAGES}/pki/deployment/war_explosion.py\"
-        \"\$ENV{DESTDIR}${DATA_INSTALL_DIR}/deployment/spawn/${TOMCAT_SUBSYSTEM}/040_war_explosion\")"
+        \"${PYTHON_SITE_PACKAGES}/pki/deployment/webapp_deployment.py\"
+        \"\$ENV{DESTDIR}${DATA_INSTALL_DIR}/deployment/spawn/${TOMCAT_SUBSYSTEM}/040_webapp_deployment\")"
     )
     install(CODE "execute_process(COMMAND
         ${CMAKE_COMMAND} -E create_symlink
@@ -192,8 +192,8 @@ foreach(TOMCAT_SUBSYSTEM ${TOMCAT_SUBSYSTEMS})
     )
     install(CODE "execute_process(COMMAND
         ${CMAKE_COMMAND} -E create_symlink
-        \"${PYTHON_SITE_PACKAGES}/pki/deployment/war_explosion.py\"
-        \"\$ENV{DESTDIR}${DATA_INSTALL_DIR}/deployment/destroy/${TOMCAT_SUBSYSTEM}/940_war_explosion\")"
+        \"${PYTHON_SITE_PACKAGES}/pki/deployment/webapp_deployment.py\"
+        \"\$ENV{DESTDIR}${DATA_INSTALL_DIR}/deployment/destroy/${TOMCAT_SUBSYSTEM}/940_webapp_deployment\")"
     )
 #   install(CODE "execute_process(COMMAND
 #       ${CMAKE_COMMAND} -E create_symlink
diff --git a/base/deploy/config/pkideployment.cfg b/base/deploy/config/pkideployment.cfg
index 80816e495bef588810183c4c5e37d922faad6877..0061116223a1097a1cc424ffa0b70a7536fd8179 100644
--- a/base/deploy/config/pkideployment.cfg
+++ b/base/deploy/config/pkideployment.cfg
@@ -157,7 +157,6 @@ pki_ocsp_signing_token=
 pki_subordinate=False
 pki_subsystem=CA
 pki_subsystem_name=
-pki_war_file=ca.war
 ###############################################################################
 ##  'KRA' Data:                                                              ##
 ##                                                                           ##
@@ -182,7 +181,6 @@ pki_transport_nickname=
 pki_transport_signing_algorithm=SHA256withRSA
 pki_transport_subject_dn=
 pki_transport_token=
-pki_war_file=kra.war
 ###############################################################################
 ##  'OCSP' Data:                                                             ##
 ##                                                                           ##
@@ -200,7 +198,6 @@ pki_ocsp_signing_subject_dn=
 pki_ocsp_signing_token=
 pki_subsystem=OCSP
 pki_subsystem_name=
-pki_war_file=ocsp.war
 ###############################################################################
 ##  'RA' Data:                                                               ##
 ##                                                                           ##
@@ -220,7 +217,6 @@ pki_subsystem_name=
 [TKS]
 pki_subsystem=TKS
 pki_subsystem_name=
-pki_war_file=tks.war
 ###############################################################################
 ##  'TPS' Data:                                                              ##
 ##                                                                           ##
diff --git a/base/deploy/src/scriptlets/pkimessages.py b/base/deploy/src/scriptlets/pkimessages.py
index ba3f2289880237d1cf0d8439a6f4262378a4cf39..ff023c6deaa48cfb449ad8eb0acc374abd4fb8f0 100644
--- a/base/deploy/src/scriptlets/pkimessages.py
+++ b/base/deploy/src/scriptlets/pkimessages.py
@@ -334,6 +334,6 @@ SLOT_ASSIGNMENT_SPAWN_1 = "assigning slots for '%s'"
 SUBSYSTEM_DESTROY_1 = "depopulating '%s'"
 SUBSYSTEM_RESPAWN_1 = "repopulating '%s'"
 SUBSYSTEM_SPAWN_1 = "populating '%s'"
-WAR_EXPLOSION_DESTROY_1 = "removing '%s'"
-WAR_EXPLOSION_RESPAWN_1 = "redeploying '%s'"
-WAR_EXPLOSION_SPAWN_1 = "deploying '%s'"
+WEBAPP_DEPLOYMENT_DESTROY_1 = "removing '%s'"
+WEBAPP_DEPLOYMENT_RESPAWN_1 = "redeploying '%s'"
+WEBAPP_DEPLOYMENT_SPAWN_1 = "deploying '%s'"
diff --git a/base/deploy/src/scriptlets/pkiparser.py b/base/deploy/src/scriptlets/pkiparser.py
index 4b6128440f28ffad5cb615e95cb05f3bd666c1ae..09424120cda1cc2c2f872717bf93ec72ce3f4971 100644
--- a/base/deploy/src/scriptlets/pkiparser.py
+++ b/base/deploy/src/scriptlets/pkiparser.py
@@ -406,17 +406,10 @@ def compose_pki_master_dictionary():
                              "lib")
             config.pki_master_dict['pki_tomcat_systemd'] =\
                 config.PKI_DEPLOYMENT_TOMCAT_SYSTEMD
-            config.pki_master_dict['pki_war_source_dir'] =\
-                os.path.join(config.PKI_DEPLOYMENT_SOURCE_ROOT,
-                             config.pki_master_dict['pki_subsystem'].lower(),
-                             "war")
             config.pki_master_dict['pki_source_webapps_path'] =\
                 os.path.join(config.PKI_DEPLOYMENT_SOURCE_ROOT,
                              config.pki_master_dict['pki_subsystem'].lower(),
                              "webapps")
-            config.pki_master_dict['pki_war'] =\
-                os.path.join(config.pki_master_dict['pki_war_source_dir'],
-                             config.pki_master_dict['pki_war_file'])
             config.pki_master_dict['pki_source_catalina_properties'] =\
                 os.path.join(config.pki_master_dict['pki_source_shared_path'],
                              "catalina.properties")
diff --git a/base/deploy/src/scriptlets/war_explosion.py b/base/deploy/src/scriptlets/webapp_deployment.py
similarity index 62%
rename from base/deploy/src/scriptlets/war_explosion.py
rename to base/deploy/src/scriptlets/webapp_deployment.py
index 16113ba7d72139b3b10145726f8d76111c3d2436..17b1bc349252295a7072df12ed373d248671472b 100644
--- a/base/deploy/src/scriptlets/war_explosion.py
+++ b/base/deploy/src/scriptlets/webapp_deployment.py
@@ -19,6 +19,10 @@
 # All rights reserved.
 #
 
+# System Imports
+import os
+
+
 # PKI Deployment Imports
 import pkiconfig as config
 from pkiconfig import pki_master_dict as master
@@ -27,18 +31,38 @@ import pkimessages as log
 import pkiscriptlet
 
 
-# PKI Deployment War Explosion Scriptlet
+# PKI Web Application Deployment Scriptlet
 class PkiScriptlet(pkiscriptlet.AbstractBasePkiScriptlet):
     rv = 0
 
     def spawn(self):
         if master['pki_subsystem'] in config.PKI_TOMCAT_SUBSYSTEMS:
-            config.pki_log.info(log.WAR_EXPLOSION_SPAWN_1, __name__,
+            config.pki_log.info(log.WEBAPP_DEPLOYMENT_SPAWN_1, __name__,
                                 extra=config.PKI_INDENTATION_LEVEL_1)
             # deploy war file
             util.directory.create(master['pki_tomcat_webapps_subsystem_path'])
-            util.war.explode(master['pki_war'],
-                             master['pki_tomcat_webapps_subsystem_path'])
+            util.directory.copy(
+                os.path.join(
+                    config.PKI_DEPLOYMENT_SOURCE_ROOT,
+                    "common-ui"),
+                master['pki_tomcat_webapps_subsystem_path'],
+                overwrite_flag=True)
+            util.directory.copy(
+                os.path.join(
+                    config.PKI_DEPLOYMENT_SOURCE_ROOT,
+                    master['pki_subsystem'].lower() + "-ui",
+                    "webapps",
+                    master['pki_subsystem'].lower()),
+                master['pki_tomcat_webapps_subsystem_path'],
+                overwrite_flag=True)
+            util.directory.copy(
+                os.path.join(
+                    config.PKI_DEPLOYMENT_SOURCE_ROOT,
+                    master['pki_subsystem'].lower(),
+                    "webapps",
+                    master['pki_subsystem'].lower()),
+                master['pki_tomcat_webapps_subsystem_path'],
+                overwrite_flag=True)
             util.directory.create(
                 master['pki_tomcat_webapps_subsystem_webinf_classes_path'])
             util.directory.create(
@@ -62,12 +86,32 @@ class PkiScriptlet(pkiscriptlet.AbstractBasePkiScriptlet):
 
     def respawn(self):
         if master['pki_subsystem'] in config.PKI_TOMCAT_SUBSYSTEMS:
-            config.pki_log.info(log.WAR_EXPLOSION_RESPAWN_1, __name__,
+            config.pki_log.info(log.WEBAPP_DEPLOYMENT_RESPAWN_1, __name__,
                                 extra=config.PKI_INDENTATION_LEVEL_1)
             # redeploy war file
             util.directory.modify(master['pki_tomcat_webapps_subsystem_path'])
-            util.war.explode(master['pki_war'],
-                             master['pki_tomcat_webapps_subsystem_path'])
+            util.directory.copy(
+                os.path.join(
+                    config.PKI_DEPLOYMENT_SOURCE_ROOT,
+                    "common-ui"),
+                master['pki_tomcat_webapps_subsystem_path'],
+                overwrite_flag=True)
+            util.directory.copy(
+                os.path.join(
+                    config.PKI_DEPLOYMENT_SOURCE_ROOT,
+                    master['pki_subsystem'].lower() + "-ui",
+                    "webapps",
+                    master['pki_subsystem'].lower()),
+                master['pki_tomcat_webapps_subsystem_path'],
+                overwrite_flag=True)
+            util.directory.copy(
+                os.path.join(
+                    config.PKI_DEPLOYMENT_SOURCE_ROOT,
+                    master['pki_subsystem'].lower(),
+                    "webapps",
+                    master['pki_subsystem'].lower()),
+                master['pki_tomcat_webapps_subsystem_path'],
+                overwrite_flag=True)
             # update Tomcat webapps subsystem WEB-INF lib symbolic links
             if master['pki_subsystem'] == "CA":
                 util.symlink.modify(master['pki_ca_jar_link'])
@@ -83,7 +127,7 @@ class PkiScriptlet(pkiscriptlet.AbstractBasePkiScriptlet):
 
     def destroy(self):
         if master['pki_subsystem'] in config.PKI_TOMCAT_SUBSYSTEMS:
-            config.pki_log.info(log.WAR_EXPLOSION_DESTROY_1, __name__,
+            config.pki_log.info(log.WEBAPP_DEPLOYMENT_DESTROY_1, __name__,
                                 extra=config.PKI_INDENTATION_LEVEL_1)
             util.directory.delete(master['pki_tomcat_webapps_subsystem_path'])
         return self.rv
diff --git a/specs/pki-core.spec b/specs/pki-core.spec
index 3a49a3395b17cf981713cbfebf66502a585a24dc..9e2197a2b4f675560fac381ca7bb9c5a5bbbfe57 100644
--- a/specs/pki-core.spec
+++ b/specs/pki-core.spec
@@ -14,7 +14,7 @@ distutils.sysconfig import get_python_lib; print(get_python_lib(1))")}
 
 Name:             pki-core
 Version:          10.0.0
-Release:          %{?relprefix}26%{?prerel}%{?dist}
+Release:          %{?relprefix}27%{?prerel}%{?dist}
 Summary:          Certificate System - PKI Core Components
 URL:              http://pki.fedoraproject.org/
 License:          GPLv2
@@ -73,12 +73,6 @@ BuildRequires:    tomcatjss >= 2.0.0
 %endif
 %endif
 %endif
-# Add the following build-time requirements to support the "pki-server" package
-BuildRequires:    pki-common-theme >= 10.0.0
-BuildRequires:    pki-ca-theme >= 10.0.0
-BuildRequires:    pki-kra-theme >= 10.0.0
-BuildRequires:    pki-ocsp-theme >= 10.0.0
-BuildRequires:    pki-tks-theme >= 10.0.0
 
 Source0:          http://pki.fedoraproject.org/pki/sources/%{name}/%{name}-%{version}%{?prerel}.tar.gz
 
@@ -786,21 +780,6 @@ if [ -d /etc/sysconfig/pki/%i ]; then                                        \
 fi                                                                           \
 )
 
-# Create PKI subsystem "war" files
-for subsystem in ca kra ocsp tks; do
-    echo "Constructing '${subsystem}.war' . . ."
-    %{__mkdir_p} %{buildroot}%{_datadir}/pki/${subsystem}/war
-    %{__cp} -r %{_datadir}/pki/common-ui/admin %{buildroot}%{_datadir}/pki/${subsystem}/war
-    %{__cp} -r %{_datadir}/pki/common-ui/css %{buildroot}%{_datadir}/pki/${subsystem}/war
-    %{__cp} -r %{_datadir}/pki/common-ui/img %{buildroot}%{_datadir}/pki/${subsystem}/war
-    %{__cp} -r %{_datadir}/pki/${subsystem}-ui/webapps/${subsystem}/* %{buildroot}%{_datadir}/pki/${subsystem}/war
-    %{__cp} -r %{buildroot}%{_datadir}/pki/${subsystem}/webapps/${subsystem}/WEB-INF %{buildroot}%{_datadir}/pki/${subsystem}/war
-    cd %{buildroot}%{_datadir}/pki/${subsystem}/war
-    jar -cvMf ../${subsystem}.war *
-    %{__rm} -rf %{buildroot}%{_datadir}/pki/${subsystem}/war/*
-    %{__mv} ../${subsystem}.war %{buildroot}%{_datadir}/pki/${subsystem}/war
-done
-
 %pre -n pki-selinux
 %saveFileContext targeted
 
@@ -1259,7 +1238,6 @@ fi
 %dir %{_datadir}/pki/ca/profiles
 %{_datadir}/pki/ca/profiles/ca/
 %{_datadir}/pki/ca/setup/
-%{_datadir}/pki/ca/war/
 %{_datadir}/pki/ca/webapps/
 %dir %{_localstatedir}/lock/pki/ca
 %dir %{_localstatedir}/run/pki/ca
@@ -1288,7 +1266,6 @@ fi
 %dir %{_datadir}/pki/kra
 %{_datadir}/pki/kra/conf/
 %{_datadir}/pki/kra/setup/
-%{_datadir}/pki/kra/war/
 %{_datadir}/pki/kra/webapps/
 %dir %{_localstatedir}/lock/pki/kra
 %dir %{_localstatedir}/run/pki/kra
@@ -1317,7 +1294,6 @@ fi
 %dir %{_datadir}/pki/ocsp
 %{_datadir}/pki/ocsp/conf/
 %{_datadir}/pki/ocsp/setup/
-%{_datadir}/pki/ocsp/war/
 %{_datadir}/pki/ocsp/webapps/
 %dir %{_localstatedir}/lock/pki/ocsp
 %dir %{_localstatedir}/run/pki/ocsp
@@ -1346,7 +1322,6 @@ fi
 %dir %{_datadir}/pki/tks
 %{_datadir}/pki/tks/conf/
 %{_datadir}/pki/tks/setup/
-%{_datadir}/pki/tks/war/
 %{_datadir}/pki/tks/webapps/
 %dir %{_localstatedir}/lock/pki/tks
 %dir %{_localstatedir}/run/pki/tks
@@ -1370,6 +1345,9 @@ fi
 
 
 %changelog
+* Thu Aug 30 2012 Endi S. Dewata <edewata@redhat.com> 10.0.0-0.27.a1
+- Moved webapp creation code into pkispawn.
+
 * Mon Aug 20 2012 Endi S. Dewata <edewata@redhat.com> 10.0.0-0.26.a1
 - Split pki-client.jar into pki-certsrv.jar and pki-tools.jar.
 
-- 
1.7.11.2

