CLOUDSTACK-9049: fix Centos7 with Tomcat7 packaging and python libs

* adjust library to support tomcat7 config files
* adjust centos7 spec to use tomcat7 config files from deployment
* add option to use tomcat7 files in management server setup
This commit is contained in:
David Amorim Faria 2015-11-09 18:15:37 +01:00
parent c84bb6b725
commit 3c4a24cf2c
4 changed files with 50 additions and 26 deletions

View File

@ -29,9 +29,12 @@ if __name__ == '__main__':
parser = OptionParser() parser = OptionParser()
parser.add_option("--https", action="store_true", dest="https", help="Enable HTTPs connection of management server") parser.add_option("--https", action="store_true", dest="https", help="Enable HTTPs connection of management server")
parser.add_option("--tomcat7", action="store_true", dest="tomcat7", help="Use Tomcat7 configuration files in Management Server")
(options, args) = parser.parse_args() (options, args) = parser.parse_args()
if options.https: if options.https:
glbEnv.svrMode = "HttpsServer" glbEnv.svrMode = "HttpsServer"
if options.tomcat7:
glbEnv.svrConf = "Tomcat7"
glbEnv.mode = "Server" glbEnv.mode = "Server"

View File

@ -249,16 +249,16 @@ cp -r client/target/cloud-client-ui-%{_maventag}/* ${RPM_BUILD_ROOT}%{_datadir}/
rm -rf ${RPM_BUILD_ROOT}%{_datadir}/%{name}-management/webapps/client/WEB-INF/classes/scripts rm -rf ${RPM_BUILD_ROOT}%{_datadir}/%{name}-management/webapps/client/WEB-INF/classes/scripts
rm -rf ${RPM_BUILD_ROOT}%{_datadir}/%{name}-management/webapps/client/WEB-INF/classes/vms rm -rf ${RPM_BUILD_ROOT}%{_datadir}/%{name}-management/webapps/client/WEB-INF/classes/vms
for name in catalina.properties db.properties log4j-cloud.xml web.xml \ for name in db.properties log4j-cloud.xml server7-nonssl.xml server7-ssl.xml \
server.xml commons-logging.properties environment.properties java.security.ciphers tomcat-users.xml commons-logging.properties catalina.policy catalina.properties classpath.conf \
tomcat-users.xml web.xml environment.properties java.security.ciphers
do do
cp packaging/centos7/tomcat7/$name \ mv ${RPM_BUILD_ROOT}%{_datadir}/%{name}-management/webapps/client/WEB-INF/classes/$name \
${RPM_BUILD_ROOT}%{_sysconfdir}/%{name}/management/$name ${RPM_BUILD_ROOT}%{_sysconfdir}/%{name}/management/$name
rm -f ${RPM_BUILD_ROOT}%{_datadir}/%{name}-management/webapps/client/WEB-INF/classes/$name
done done
#ln -s %{_sysconfdir}/%{name}/management/log4j-cloud.xml \ ln -s %{_sysconfdir}/%{name}/management/log4j-cloud.xml \
# ${RPM_BUILD_ROOT}%{_datadir}/%{name}-management/webapps/client/WEB-INF/classes/log4j-cloud.xml ${RPM_BUILD_ROOT}%{_datadir}/%{name}-management/webapps/client/WEB-INF/classes/log4j-cloud.xml
mv ${RPM_BUILD_ROOT}%{_datadir}/%{name}-management/webapps/client/WEB-INF/classes/context.xml \ mv ${RPM_BUILD_ROOT}%{_datadir}/%{name}-management/webapps/client/WEB-INF/classes/context.xml \
${RPM_BUILD_ROOT}%{_sysconfdir}/%{name}/management/Catalina/localhost/client ${RPM_BUILD_ROOT}%{_sysconfdir}/%{name}/management/Catalina/localhost/client
@ -438,10 +438,13 @@ fi
%config(noreplace) %attr(0640,root,cloud) %{_sysconfdir}/%{name}/management/db.properties %config(noreplace) %attr(0640,root,cloud) %{_sysconfdir}/%{name}/management/db.properties
%config(noreplace) %{_sysconfdir}/%{name}/management/log4j-cloud.xml %config(noreplace) %{_sysconfdir}/%{name}/management/log4j-cloud.xml
%config(noreplace) %{_sysconfdir}/%{name}/management/Catalina/localhost/client/context.xml %config(noreplace) %{_sysconfdir}/%{name}/management/Catalina/localhost/client/context.xml
%config(noreplace) %{_sysconfdir}/%{name}/management/catalina.policy
%config(noreplace) %{_sysconfdir}/%{name}/management/catalina.properties %config(noreplace) %{_sysconfdir}/%{name}/management/catalina.properties
%config(noreplace) %{_sysconfdir}/%{name}/management/classpath.conf
%config(noreplace) %{_sysconfdir}/%{name}/management/server7-nonssl.xml
%config(noreplace) %{_sysconfdir}/%{name}/management/server7-ssl.xml
%config(noreplace) %{_sysconfdir}/%{name}/management/tomcat-users.xml %config(noreplace) %{_sysconfdir}/%{name}/management/tomcat-users.xml
%config(noreplace) %{_sysconfdir}/%{name}/management/web.xml %config(noreplace) %{_sysconfdir}/%{name}/management/web.xml
%config(noreplace) %{_sysconfdir}/%{name}/management/server.xml
%config(noreplace) %{_sysconfdir}/%{name}/management/environment.properties %config(noreplace) %{_sysconfdir}/%{name}/management/environment.properties
%config(noreplace) %{_sysconfdir}/%{name}/management/java.security.ciphers %config(noreplace) %{_sysconfdir}/%{name}/management/java.security.ciphers
%config(noreplace) %{_sysconfdir}/%{name}/management/commons-logging.properties %config(noreplace) %{_sysconfdir}/%{name}/management/commons-logging.properties

View File

@ -22,6 +22,8 @@ class globalEnv:
self.svrMode = None self.svrMode = None
#myCloud/Agent/Console #myCloud/Agent/Console
self.agentMode = None self.agentMode = None
#Tomcat6/Tomcat7
self.svrConf = None
#debug #debug
self.debug = False self.debug = False
#management server IP #management server IP

View File

@ -79,30 +79,43 @@ class cloudManagementConfig(serviceCfgBase):
if not cmd.isSuccess(): if not cmd.isSuccess():
raise CloudInternalException(cmd.getErrMsg()) raise CloudInternalException(cmd.getErrMsg())
if not self.syscfg.env.svrConf == "Tomcat7":
cfo = configFileOps("/etc/cloudstack/management/tomcat6.conf", self) cfo = configFileOps("/etc/cloudstack/management/tomcat6.conf", self)
cfo.add_lines("JAVA_OPTS+=\" -Djavax.net.ssl.trustStore=%s \""%keyPath) cfo.add_lines("JAVA_OPTS+=\" -Djavax.net.ssl.trustStore=%s \""%keyPath)
elif self.syscfg.env.svrMode == "HttpsServer": elif self.syscfg.env.svrMode == "HttpsServer":
if not os.path.exists("/etc/cloudstack/management/server-ssl.xml") or not os.path.exists("/etc/cloudstack/management/tomcat6-ssl.conf"): if self.syscfg.env.svrConf == "Tomcat7":
raise CloudRuntimeException("Cannot find /etc/cloudstack/management/server-ssl.xml or /etc/cloudstack/management/tomcat6-ssl.conf, https enables failed") if not os.path.exists("/etc/cloudstack/management/server7-ssl.xml"):
if os.path.exists("/etc/cloudstack/management/server.xml"): raise CloudRuntimeException("Cannot find /etc/cloudstack/management/server7-ssl.xml, https enable failed")
bash("rm -f /etc/cloudstack/management/server.xml") if os.path.exists("/etc/cloudstack/management/server.xml"):
if os.path.exists("/etc/cloudstack/management/tomcat6.conf"): bash("rm -f /etc/cloudstack/management/server.xml")
bash("rm -f /etc/cloudstack/management/tomcat6.conf") bash("ln -s /etc/cloudstack/management/server7-ssl.xml /etc/cloudstack/management/server.xml")
bash("ln -s /etc/cloudstack/management/server-ssl.xml /etc/cloudstack/management/server.xml") else:
bash("ln -s /etc/cloudstack/management/tomcat6-ssl.conf /etc/cloudstack/management/tomcat6.conf") if not os.path.exists("/etc/cloudstack/management/server-ssl.xml") or not os.path.exists("/etc/cloudstack/management/tomcat6-ssl.conf"):
raise CloudRuntimeException("Cannot find /etc/cloudstack/management/server-ssl.xml or /etc/cloudstack/management/tomcat6-ssl.conf, https enable failed")
if os.path.exists("/etc/cloudstack/management/server.xml"):
bash("rm -f /etc/cloudstack/management/server.xml")
if os.path.exists("/etc/cloudstack/management/tomcat6.conf"):
bash("rm -f /etc/cloudstack/management/tomcat6.conf")
bash("ln -s /etc/cloudstack/management/server-ssl.xml /etc/cloudstack/management/server.xml")
bash("ln -s /etc/cloudstack/management/tomcat6-ssl.conf /etc/cloudstack/management/tomcat6.conf")
if not bash("iptables-save |grep PREROUTING | grep 6443").isSuccess(): if not bash("iptables-save |grep PREROUTING | grep 6443").isSuccess():
bash("iptables -A PREROUTING -t nat -p tcp --dport 443 -j REDIRECT --to-port 6443") bash("iptables -A PREROUTING -t nat -p tcp --dport 443 -j REDIRECT --to-port 6443")
else: else:
if not os.path.exists("/etc/cloudstack/management/server-nonssl.xml") or not os.path.exists("/etc/cloudstack/management/tomcat6-nonssl.conf"): if self.syscfg.env.svrConf == "Tomcat7":
raise CloudRuntimeException("Cannot find /etc/cloudstack/management/server-nonssl.xml or /etc/cloudstack/management/tomcat6-nonssl.conf, https enables failed") if not os.path.exists("/etc/cloudstack/management/server7-nonssl.xml"):
if os.path.exists("/etc/cloudstack/management/server.xml"): raise CloudRuntimeException("Cannot find /etc/cloudstack/management/server7-nonssl.xml, https enable failed")
bash("rm -f /etc/cloudstack/management/server.xml") if os.path.exists("/etc/cloudstack/management/server.xml"):
if os.path.exists("/etc/cloudstack/management/tomcat6.conf"): bash("rm -f /etc/cloudstack/management/server.xml")
bash("rm -f /etc/cloudstack/management/tomcat6.conf") bash("ln -s /etc/cloudstack/management/server7-nonssl.xml /etc/cloudstack/management/server.xml")
bash("ln -s /etc/cloudstack/management/server-nonssl.xml /etc/cloudstack/management/server.xml") else:
bash("ln -s /etc/cloudstack/management/tomcat6-nonssl.conf /etc/cloudstack/management/tomcat6.conf") if not os.path.exists("/etc/cloudstack/management/server-nonssl.xml") or not os.path.exists("/etc/cloudstack/management/tomcat6-nonssl.conf"):
raise CloudRuntimeException("Cannot find /etc/cloudstack/management/server-nonssl.xml or /etc/cloudstack/management/tomcat6-nonssl.conf, https enable failed")
if os.path.exists("/etc/cloudstack/management/server.xml"):
bash("rm -f /etc/cloudstack/management/server.xml")
if os.path.exists("/etc/cloudstack/management/tomcat6.conf"):
bash("rm -f /etc/cloudstack/management/tomcat6.conf")
bash("ln -s /etc/cloudstack/management/server-nonssl.xml /etc/cloudstack/management/server.xml")
bash("ln -s /etc/cloudstack/management/tomcat6-nonssl.conf /etc/cloudstack/management/tomcat6.conf")
bash("touch /var/run/cloudstack-management.pid") bash("touch /var/run/cloudstack-management.pid")
bash("chown cloud.cloud /var/run/cloudstack-management.pid") bash("chown cloud.cloud /var/run/cloudstack-management.pid")
#distro like sl 6.1 needs this folder, or tomcat6 failed to start #distro like sl 6.1 needs this folder, or tomcat6 failed to start
@ -116,7 +129,10 @@ class cloudManagementConfig(serviceCfgBase):
cfo.save() cfo.save()
try: try:
self.syscfg.svo.disableService("tomcat6") if self.syscfg.env.svrConf == "Tomcat7":
self.syscfg.svo.disableService("tomcat")
else:
self.syscfg.svo.disableService("tomcat6")
except: except:
pass pass