Summary: RPM - recover configs during upgrade

Detail: Uninstallation of old RPMs wipes out some of the configs, and makes it
difficult to reapply existing configs. This change moves the config directory
to cloud.rpmsave, and then pulls in necessary files from that location during
post install of agent and management server.

Test passed:
install 4.0 RPMs, set up advanced zone
build 4.1 RPMs via package.sh, with this patch
install 4.1 RPMs
restart cloudstack-management, cloudstack-agent
verify management, agent, and zone is operational

BUG-ID: CLOUDSTACK-1694
Signed-off-by: Marcus Sorensen <marcus@betterservers.com> 1364409632 -0600
This commit is contained in:
Marcus Sorensen 2013-03-27 12:40:32 -06:00
parent f414b8a850
commit a588efc0cc
1 changed files with 53 additions and 0 deletions

View File

@ -120,6 +120,7 @@ Requires: jakarta-commons-daemon-jsvc
Requires: perl
Provides: cloud-agent
Obsoletes: cloud-agent < 4.1.0
Obsoletes: cloud-agent-libs < 4.1.0
Obsoletes: cloud-test < 4.1.0
Group: System Environment/Libraries
%description agent
@ -333,6 +334,12 @@ echo "cloud soft nofile 4096" >> /etc/security/limits.conf
rm -rf %{_localstatedir}/cache/cloud
# user harcoded here, also hardcoded on wscript
# save old configs if they exist (for upgrade). Otherwise we may lose them
# when the old packages are erased. There are a lot of properties files here.
if [ -d "%{_sysconfdir}/cloud" ] ; then
mv %{_sysconfdir}/cloud %{_sysconfdir}/cloud.rpmsave
fi
%post management
if [ "$1" == "1" ] ; then
/sbin/chkconfig --add cloudstack-management > /dev/null 2>&1 || true
@ -354,6 +361,52 @@ if getent passwd cloud | grep -q /var/lib/cloud; then
sed -i 's/\/var\/lib\/cloud\/management/\/var\/cloudstack\/management/g' /etc/passwd
fi
# if saved configs from upgrade exist, copy them over
if [ -d "%{_sysconfdir}/cloud.rpmsave/management" ]; then
cp -p %{_sysconfdir}/cloud.rpmsave/management/db.properties %{_sysconfdir}/%{name}/management
cp -p %{_sysconfdir}/cloud.rpmsave/management/key %{_sysconfdir}/%{name}/management
fi
# Choose server.xml and tomcat.conf links based on old config, if exists
serverxml=%{_sysconfdir}/%{name}/management/server.xml
oldserverxml=%{_sysconfdir}/cloud.rpmsave/management/server.xml
if [ -L $oldserverxml ] ; then
if stat -c %N $oldserverxml | grep -q server-nonssl ; then
if [ -L $serverxml ]; then rm -f $serverxml; fi
ln -s %{_sysconfdir}/%{name}/management/server-nonssl.xml $serverxml
elif stat -c %N $oldserverxml| grep -q server-ssl ; then
if [ -L $serverxml ]; then rm -f $serverxml; fi
ln -s %{_sysconfdir}/%{name}/management/server-ssl.xml $serverxml
fi
fi
tomcatconf=%{_sysconfdir}/%{name}/management/tomcat6.conf
oldtomcatconf=%{_sysconfdir}/cloud.rpmsave/management/tomcat6.conf
if [ -L $oldtomcatconf ] ; then
if stat -c %N $oldtomcatconf | grep -q tomcat6-nonssl ; then
if [ -L $tomcatconf ]; then rm -f $tomcatconf; fi
ln -s %{_sysconfdir}/%{name}/management/tomcat6-nonssl.conf $tomcatconf
elif stat -c %N $oldtomcatconf| grep -q tomcat6-ssl ; then
if [ -L $tomcatconf ]; then rm -f $tomcatconf; fi
ln -s %{_sysconfdir}/%{name}/management/tomcat6-ssl.conf $tomcatconf
fi
fi
%pre agent
# save old configs if they exist (for upgrade). Otherwise we may lose them
# when the old packages are erased. There are a lot of properties files here.
if [ -d "%{_sysconfdir}/cloud" ] ; then
mv %{_sysconfdir}/cloud %{_sysconfdir}/cloudr.rpmsave
fi
%post agent
# if saved configs from upgrade exist, copy them over
if [ -f "%{_sysconfdir}/cloud.rpmsave/agent/agent.properties" ]; then
mv %{_sysconfdir}/%{name}/agent/agent.properties %{_sysconfdir}/%{name}/agent/agent.properties.rpmnew
cp -p %{_sysconfdir}/cloud.rpmsave/agent/agent.properties %{_sysconfdir}/%{name}/agent
fi
#%post awsapi
#if [ -d "%{_datadir}/%{name}-management" ] ; then