mirror of
https://github.com/apache/cloudstack.git
synced 2025-10-26 08:42:29 +01:00
Inject permium stuff into systemvm.iso when managment server start
This commit is contained in:
parent
fa96deec28
commit
61a414fb8f
@ -596,6 +596,7 @@ fi
|
||||
%{_sysconfdir}/%{name}/management/components-premium.xml
|
||||
%{_datadir}/%{name}/setup/create-database-premium.sql
|
||||
%{_datadir}/%{name}/setup/create-schema-premium.sql
|
||||
%{_libdir}/%{name}/agent/vms/premium-systemvm.zip
|
||||
|
||||
%files usage
|
||||
%defattr(0644,root,root,0775)
|
||||
|
||||
1
debian/cloud-premium.install
vendored
1
debian/cloud-premium.install
vendored
@ -6,3 +6,4 @@
|
||||
/usr/share/cloud/setup/create-database-premium.sql
|
||||
/usr/share/cloud/setup/create-schema-premium.sql
|
||||
/usr/lib/cloud/agent/premium-scripts/*
|
||||
/usr/lib/cloud/agent/vms/premium-systemvm.zip
|
||||
|
||||
54
scripts/vm/systemvm/inject_premium_stuff.sh
Executable file
54
scripts/vm/systemvm/inject_premium_stuff.sh
Executable file
@ -0,0 +1,54 @@
|
||||
#!/bin/bash
|
||||
# Copies premium stuff to systemvm.iso
|
||||
|
||||
#set -x
|
||||
|
||||
TMP=${HOME}/tmp
|
||||
MOUNTPATH=/mnt/cloud/systemvm
|
||||
TMPDIR=${TMP}/cloud/systemvm
|
||||
ISOPATH=`dirname $0`/../../../vms/systemvm.iso
|
||||
STUFFPATH=`dirname $0`/../../../vms/premium-systemvm.zip
|
||||
|
||||
|
||||
|
||||
clean_up() {
|
||||
sudo umount $MOUNTPATH
|
||||
rm -rf $TMPDIR
|
||||
}
|
||||
|
||||
inject_into_iso() {
|
||||
local isofile=${ISOPATH}
|
||||
local backup=${isofile}.bak
|
||||
local tmpiso=${TMP}/$1
|
||||
[ ! -f $isofile ] && echo "$(basename $0): Could not find systemvm iso patch file $isofile" && return 1
|
||||
sudo mount -o loop $isofile $MOUNTPATH
|
||||
[ $? -ne 0 ] && echo "$(basename $0): Failed to mount original iso $isofile" && clean_up && return 1
|
||||
sudo cp -b $isofile $backup
|
||||
[ $? -ne 0 ] && echo "$(basename $0): Failed to backup original iso $isofile" && clean_up && return 1
|
||||
rm -rf $TMPDIR
|
||||
mkdir -p $TMPDIR
|
||||
[ ! -d $TMPDIR ] && echo "$(basename $0): Could not find/create temporary dir $TMPDIR" && clean_up && return 1
|
||||
sudo cp -fr $MOUNTPATH/* $TMPDIR/
|
||||
[ $? -ne 0 ] && echo "$(basename $0): Failed to copy from original iso $isofile" && clean_up && return 1
|
||||
sudo cp -f $STUFFPATH $TMPDIR/systemvm.zip
|
||||
[ $? -ne 0 ] && echo "$(basename $0): Failed to copy sutff $STUFFPATH from to new iso " && clean_up && return 1
|
||||
mkisofs -quiet -r -o $tmpiso $TMPDIR
|
||||
[ $? -ne 0 ] && echo "$(basename $0): Failed to create new iso $tmpiso from $TMPDIR" && clean_up && return 1
|
||||
sudo umount $MOUNTPATH
|
||||
[ $? -ne 0 ] && echo "$(basename $0): Failed to unmount old iso from $MOUNTPATH" && return 1
|
||||
sudo cp -f $tmpiso $isofile
|
||||
[ $? -ne 0 ] && echo "$(basename $0): Failed to overwrite old iso $isofile with $tmpiso" && return 1
|
||||
rm -rf $TMPDIR
|
||||
return $?
|
||||
}
|
||||
|
||||
sudo mkdir -p $MOUNTPATH
|
||||
|
||||
[ ! -f $STUFFPATH ] && echo "$(basename $0): Could not find $STUFFPATH" && exit 3
|
||||
command -v mkisofs > /dev/null || (echo "$(basename $0): mkisofs not found, please install or ensure PATH is accurate" ; exit 4)
|
||||
|
||||
inject_into_iso systemvm.iso
|
||||
|
||||
[ $? -ne 0 ] && exit 5
|
||||
|
||||
exit 0
|
||||
@ -123,6 +123,29 @@ public class ConfigurationServerImpl implements ConfigurationServer {
|
||||
_ipAddressDao = locator.getDao(IPAddressDao.class);
|
||||
}
|
||||
|
||||
private void updatePremiumStuff() {
|
||||
if (!_configDao.isPremium()) {
|
||||
return;
|
||||
}
|
||||
|
||||
String injectScript = "scripts/vm/systemvm/inject_premium_stuff.sh";
|
||||
String scriptPath = Script.findScript("", injectScript);
|
||||
if (scriptPath == null) {
|
||||
throw new CloudRuntimeException("Unable to find key inject script "
|
||||
+ injectScript);
|
||||
}
|
||||
|
||||
final Script command = new Script(scriptPath, s_logger);
|
||||
final String result = command.execute();
|
||||
if (result != null) {
|
||||
s_logger.warn("Failed to inject premium stuff into systemvm iso "
|
||||
+ result);
|
||||
throw new CloudRuntimeException(
|
||||
"Failed to inject premium stuff into systemvm iso "
|
||||
+ result);
|
||||
}
|
||||
}
|
||||
|
||||
@Override @DB
|
||||
public void persistDefaultValues() throws InvalidParameterValueException, InternalErrorException {
|
||||
|
||||
@ -243,6 +266,8 @@ public class ConfigurationServerImpl implements ConfigurationServer {
|
||||
}
|
||||
}
|
||||
|
||||
updatePremiumStuff();
|
||||
|
||||
// store the public and private keys in the database
|
||||
updateKeyPairs();
|
||||
|
||||
|
||||
@ -158,6 +158,8 @@ def build_systemvm_patch ():
|
||||
bld.install_files ("${AGENTLIBDIR}/vms", "%s/systemvm.zip" % distdir)
|
||||
# ISO creation
|
||||
bld.install_as("${AGENTLIBDIR}/vms/systemvm.iso", "%s/systemvm.iso" % distdir)
|
||||
if buildpremium:
|
||||
bld.install_as("${AGENTLIBDIR}/vms/premium-systemvm.zip", "%s/premium-systemvm.zip" % distdir)
|
||||
|
||||
def build_systemvm_iso ():
|
||||
if buildpremium:
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user