You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cloudstack.apache.org by GitBox <gi...@apache.org> on 2017/12/10 22:07:07 UTC
[GitHub] rhtyd closed pull request #2214: Speed-up VR initialisation/configuration
rhtyd closed pull request #2214: Speed-up VR initialisation/configuration
URL: https://github.com/apache/cloudstack/pull/2214
This is a PR merged from a forked repository.
As GitHub hides the original diff on merge, it is displayed below for
the sake of provenance:
As this is a foreign pull request (from a fork), the diff is supplied
below (as it won't show otherwise due to GitHub magic):
diff --git a/systemvm/patches/debian/buildsystemvm.sh b/systemvm/patches/debian/buildsystemvm.sh
index a34b1dd0a61..f8726439925 100755
--- a/systemvm/patches/debian/buildsystemvm.sh
+++ b/systemvm/patches/debian/buildsystemvm.sh
@@ -228,7 +228,7 @@ cat > etc/init.d/iptables-persistent << EOF
#!/bin/sh
### BEGIN INIT INFO
# Provides: iptables
-# Required-Start: mountkernfs $local_fs
+# Required-Start: mountkernfs $local_fs cloud-early-init
# Required-Stop: $local_fs
# Should-Start: cloud-early-config
# Default-Start: S
@@ -418,6 +418,8 @@ services() {
/bin/cp -r ${scriptdir}/config/* ./
chroot . chkconfig xl2tpd off
+ chroot . chkconfig --add cloud-early-init
+ chroot . chkconfig cloud-early-init on
chroot . chkconfig --add cloud-early-config
chroot . chkconfig cloud-early-config on
chroot . chkconfig --add iptables-persistent
diff --git a/systemvm/patches/debian/config/etc/init.d/cloud b/systemvm/patches/debian/config/etc/init.d/cloud
index f9a9915223e..47dd47b74da 100755
--- a/systemvm/patches/debian/config/etc/init.d/cloud
+++ b/systemvm/patches/debian/config/etc/init.d/cloud
@@ -1,11 +1,11 @@
-#!/bin/bash
+#!/bin/bash
### BEGIN INIT INFO
# Provides: cloud
-# Required-Start: mountkernfs $local_fs cloud-early-config
+# Required-Start: mountkernfs $local_fs cloud-early-init
# Required-Stop: $local_fs
-# Should-Start:
-# Should-Stop:
-# Default-Start:
+# Should-Start:
+# Should-Stop:
+# Default-Start:
# Default-Stop: 0 1 6
# Short-Description: Start up the CloudStack cloud service
### END INIT INFO
@@ -44,7 +44,7 @@ for i in $CMDLINE
do
# search for foo=bar pattern and cut out foo
FIRSTPATTERN=$(echo $i | cut -d= -f1)
- case $FIRSTPATTERN in
+ case $FIRSTPATTERN in
type)
TYPE=$(echo $i | cut -d= -f2)
;;
@@ -104,7 +104,7 @@ start() {
then
(cd $CLOUDSTACK_HOME/systemvm; nohup ./run.sh > $LOG_FILE 2>&1 & )
pid=$(get_pids)
- echo $pid > /var/run/cloud.pid
+ echo $pid > /var/run/cloud.pid
fi
_success
else
@@ -137,7 +137,7 @@ status() {
return 0
}
-[ "$ENABLED" != 0 ] || exit 0
+[ "$ENABLED" != 0 ] || exit 0
case "$1" in
start) start
diff --git a/systemvm/patches/debian/config/etc/init.d/cloud-early-config b/systemvm/patches/debian/config/etc/init.d/cloud-early-config
index 3bdebdbb798..cfbdd90f1cb 100755
--- a/systemvm/patches/debian/config/etc/init.d/cloud-early-config
+++ b/systemvm/patches/debian/config/etc/init.d/cloud-early-config
@@ -1,10 +1,10 @@
#!/bin/bash
### BEGIN INIT INFO
# Provides: cloud-early-config
-# Required-Start: mountkernfs $local_fs
-# Required-Stop: $local_fs
-# Should-Start:
-# Should-Stop:
+# Required-Start: mountkernfs $local_fs cloud-early-init
+# Required-Stop: $local_fs cloud-early-init
+# Should-Start:
+# Should-Stop:
# Default-Start: S
# Default-Stop: 0 6
# Short-Description: configure according to cmdline
@@ -43,7 +43,7 @@ rm -f /var/cache/cloud/boot_up_done
. /lib/lsb/init-functions
log_it() {
- echo "$(date) $@" >> /var/log/cloud.log
+ echo "$(date) cloud-early-config $@" >> /var/log/cloud.log
log_action_msg "$@"
}
@@ -52,11 +52,11 @@ init_interfaces_orderby_macs() {
total_nics=${#macs[@]}
interface_file=${2:-"/etc/network/interfaces"}
rule_file=${3:-"/etc/udev/rules.d/70-persistent-net.rules"}
-
+
echo -n "auto lo" > $interface_file
for((i=0; i<total_nics; i++))
do
- if [[ $i < 3 ]]
+ if [[ $i < 3 ]]
then
echo -n " eth$i" >> $interface_file
fi
@@ -70,7 +70,7 @@ EOF
echo "" > $rule_file
for((i=0; i < ${#macs[@]}; i++))
do
- echo "SUBSYSTEM==\"net\", ACTION==\"add\", DRIVERS==\"?*\", ATTR{address}==\"${macs[$i]}\", NAME=\"eth$i\"" >> $rule_file
+ echo "SUBSYSTEM==\"net\", ACTION==\"add\", DRIVERS==\"?*\", ATTR{address}==\"${macs[$i]}\", NAME=\"eth$i\"" >> $rule_file
done
}
@@ -151,7 +151,7 @@ get_boot_params() {
chmod go-rwx /root/.ssh/authorized_keys
;;
vmware)
- vmtoolsd --cmd 'machine.id.get' > /var/cache/cloud/cmdline
+ vmtoolsd --cmd 'machine.id.get' > /var/cache/cloud/cmdline
;;
virtualpc|hyperv)
# Hyper-V is recognized as virtualpc hypervisor type. Boot args are passed using KVP Daemon
@@ -183,7 +183,6 @@ patch() {
local cdrom_dev=
mkdir -p $PATCH_MOUNT
-
if [ -e /dev/xvdd ]; then
cdrom_dev=/dev/xvdd
elif [ -e /dev/cdrom ]; then
@@ -204,11 +203,11 @@ patch() {
[ -f ${md5file} ] && oldmd5=$(cat ${md5file})
local newmd5=
[ -f ${patchfile} ] && newmd5=$(md5sum ${patchfile} | awk '{print $1}')
-
+
if [ "$oldmd5" != "$newmd5" ] && [ -f ${patchfile} ] && [ "$newmd5" != "" ]
then
shouldpatch=true
- log_it "Patching scripts oldmd5=$oldmd5 newmd5=$newmd5"
+ log_it "Patching scripts oldmd5=$oldmd5 newmd5=$newmd5 with $patchfile"
tar xzf $patchfile -C /
echo ${newmd5} > ${md5file}
fi
@@ -216,8 +215,8 @@ patch() {
hyperVisor=$(hypervisor)
/opt/cloud/bin/patchsystemvm.sh $PATCH_MOUNT $hyperVisor
umount $PATCH_MOUNT
-
- if [ "$shouldpatch" == "true" ]
+
+ if [ "$shouldpatch" == "true" ]
then
log_it "Rebooting system since we patched init scripts"
sync
@@ -355,7 +354,7 @@ setup_interface() {
local mask=$3
local gw=$4
local force=$5
- local intf=eth${intfnum}
+ local intf=eth${intfnum}
local bootproto="static"
@@ -449,7 +448,7 @@ enable_fwding() {
disable_rpfilter() {
log_it "cloud: disable rp_filter"
log_it "disable rpfilter"
- sed -i "s/net.ipv4.conf.default.rp_filter.*$/net.ipv4.conf.default.rp_filter = 0/" /etc/sysctl.conf
+ sed -i "s/net.ipv4.conf.default.rp_filter.*$/net.ipv4.conf.default.rp_filter = 0/" /etc/sysctl.conf
}
get_public_vif_list() {
@@ -461,32 +460,32 @@ get_public_vif_list() {
vif_list="$vif_list $vif";
fi
done
-
+
echo $vif_list
}
disable_rpfilter_domR() {
log_it "cloud: Tuning rp_filter on public interfaces"
-
+
VIF_LIST=$(get_public_vif_list)
log_it "rpfilter public interfaces : $VIF_LIST"
if [ "$DISABLE_RP_FILTER" == "true" ]
then
log_it "cloud: disable rp_filter on public interfaces"
- sed -i "s/net.ipv4.conf.default.rp_filter.*$/net.ipv4.conf.default.rp_filter = 0/" /etc/sysctl.conf
+ sed -i "s/net.ipv4.conf.default.rp_filter.*$/net.ipv4.conf.default.rp_filter = 0/" /etc/sysctl.conf
echo "0" > /proc/sys/net/ipv4/conf/default/rp_filter
for vif in $VIF_LIST; do
log_it "cloud: disable rp_filter on public interface: $vif"
- sed -i "s/net.ipv4.conf.$vif.rp_filter.*$/net.ipv4.conf.$vif.rp_filter = 0/" /etc/sysctl.conf
+ sed -i "s/net.ipv4.conf.$vif.rp_filter.*$/net.ipv4.conf.$vif.rp_filter = 0/" /etc/sysctl.conf
echo "0" > /proc/sys/net/ipv4/conf/$vif/rp_filter
done
else
log_it "cloud: enable rp_filter on public interfaces"
- sed -i "s/net.ipv4.conf.default.rp_filter.*$/net.ipv4.conf.default.rp_filter = 1/" /etc/sysctl.conf
+ sed -i "s/net.ipv4.conf.default.rp_filter.*$/net.ipv4.conf.default.rp_filter = 1/" /etc/sysctl.conf
echo "1" > /proc/sys/net/ipv4/conf/default/rp_filter
for vif in $VIF_LIST; do
log_it "cloud: enable rp_filter on public interface: $vif"
- sed -i "s/net.ipv4.conf.$vif.rp_filter.*$/net.ipv4.conf.$vif.rp_filter = 1/" /etc/sysctl.conf
+ sed -i "s/net.ipv4.conf.$vif.rp_filter.*$/net.ipv4.conf.$vif.rp_filter = 1/" /etc/sysctl.conf
echo "1" > /proc/sys/net/ipv4/conf/$vif/rp_filter
done
fi
@@ -593,11 +592,11 @@ setup_common() {
then
setup_interface "2" $ETH2_IP $ETH2_MASK $GW
fi
-
+
echo $NAME > /etc/hostname
echo 'AVAHI_DAEMON_DETECT_LOCAL=0' > /etc/default/avahi-daemon
hostname $NAME
-
+
#Nameserver
sed -i -e "/^nameserver.*$/d" /etc/resolv.conf # remove previous entries
sed -i -e "/^nameserver.*$/d" /etc/dnsmasq-resolv.conf # remove previous entries
@@ -606,7 +605,7 @@ setup_common() {
echo "nameserver $internalNS1" > /etc/dnsmasq-resolv.conf
echo "nameserver $internalNS1" > /etc/resolv.conf
fi
-
+
if [ -n "$internalNS2" ]
then
echo "nameserver $internalNS2" >> /etc/dnsmasq-resolv.conf
@@ -617,7 +616,7 @@ setup_common() {
echo "nameserver $NS1" >> /etc/dnsmasq-resolv.conf
echo "nameserver $NS1" >> /etc/resolv.conf
fi
-
+
if [ -n "$NS2" ]
then
echo "nameserver $NS2" >> /etc/dnsmasq-resolv.conf
@@ -652,7 +651,7 @@ setup_common() {
ip route add default via $GW dev $gwdev
fi
-
+
# a hacking way to activate vSwitch under VMware
ping -n -c 3 $GW &
sleep 3
@@ -667,7 +666,7 @@ setup_common() {
ping -n -c 3 $MGMT_GW &
sleep 3
pkill ping
-
+
fi
local hyp=$(hypervisor)
@@ -689,7 +688,7 @@ setup_dnsmasq() {
#get the template
cp /etc/dnsmasq.conf.tmpl /etc/dnsmasq.conf
-
+
if [ -n "$DOMAIN" ]
then
#send domain name to dhcp clients
@@ -699,17 +698,17 @@ setup_dnsmasq() {
#answer all local domain queries
sed -i -e "s/^[#]*local=.*$/local=\/$DOMAIN\//" /etc/dnsmasq.conf
fi
-
+
if [ -n "$DNS_SEARCH_ORDER" ]
then
sed -i -e "/^[#]*dhcp-option.*=119.*$/d" /etc/dnsmasq.conf
echo "dhcp-option-force=119,$DNS_SEARCH_ORDER" >> /etc/dnsmasq.conf
# set the domain search order as a space seprated list for option 15
DNS_SEARCH_ORDER=$(echo $DNS_SEARCH_ORDER | sed 's/,/ /g')
- #send domain name to dhcp clients
+ #send domain name to dhcp clients
sed -i s/[#]*dhcp-option=15.*$/dhcp-option=15,\""$DNS_SEARCH_ORDER"\"/ /etc/dnsmasq.conf
fi
-
+
if [ $DHCP_RANGE ]
then
sed -i -e "s/^dhcp-range_ip4=.*$/dhcp-range=$DHCP_RANGE,static/" /etc/dnsmasq.conf
@@ -880,11 +879,11 @@ setup_router() {
oldmd5=
[ -f "/etc/udev/rules.d/70-persistent-net.rules" ] && oldmd5=$(md5sum "/etc/udev/rules.d/70-persistent-net.rules" | awk '{print $1}')
-
+
if [ -n "$ETH2_IP" ]
then
setup_common eth0 eth1 eth2
-
+
if [ -n "$EXTRA_PUBNICS" ]
then
for((i = 3; i < 3 + $EXTRA_PUBNICS; i++))
@@ -902,13 +901,13 @@ setup_router() {
done
fi
fi
-
- # Moved to Cs Python code
+
+ # Moved to Cs Python code
#if [ -n "$ETH2_IP" -a "$RROUTER" == "1" ]
#then
#setup_redundant_router
#fi
-
+
log_it "Checking udev NIC assignment order changes"
if [ "$NIC_MACS" != "" ]
then
@@ -916,7 +915,7 @@ setup_router() {
newmd5=$(md5sum "/tmp/udev-rules" | awk '{print $1}')
rm /tmp/interfaces
rm /tmp/udev-rules
-
+
if [ "$oldmd5" != "$newmd5" ]
then
log_it "udev NIC assignment requires reboot to take effect"
@@ -925,7 +924,7 @@ setup_router() {
reboot
fi
fi
-
+
setup_aesni
setup_dnsmasq
setup_apache2 $ETH0_IP
@@ -933,7 +932,6 @@ setup_router() {
sed -i /gateway/d /etc/hosts
echo "$ETH0_IP $NAME" >> /etc/hosts
-
enable_svc dnsmasq 1
enable_svc haproxy 1
enable_irqbalance 1
@@ -957,10 +955,8 @@ setup_router() {
#setup hourly logrotate
mv -n /etc/cron.daily/logrotate /etc/cron.hourly 2>&1
-
-}
-
+}
setup_vpcrouter() {
log_it "Setting up VPC virtual router system vm"
@@ -974,11 +970,11 @@ auto lo eth0
iface lo inet loopback
EOF
setup_interface "0" $ETH0_IP $ETH0_MASK $GW
-
+
echo $NAME > /etc/hostname
echo 'AVAHI_DAEMON_DETECT_LOCAL=0' > /etc/default/avahi-daemon
hostname $NAME
-
+
#Nameserver
sed -i -e "/^nameserver.*$/d" /etc/resolv.conf # remove previous entries
sed -i -e "/^nameserver.*$/d" /etc/dnsmasq-resolv.conf # remove previous entries
@@ -987,7 +983,7 @@ EOF
echo "nameserver $internalNS1" > /etc/dnsmasq-resolv.conf
echo "nameserver $internalNS1" > /etc/resolv.conf
fi
-
+
if [ -n "$internalNS2" ]
then
echo "nameserver $internalNS2" >> /etc/dnsmasq-resolv.conf
@@ -998,7 +994,7 @@ EOF
echo "nameserver $NS1" >> /etc/dnsmasq-resolv.conf
echo "nameserver $NS1" >> /etc/resolv.conf
fi
-
+
if [ -n "$NS2" ]
then
echo "nameserver $NS2" >> /etc/dnsmasq-resolv.conf
@@ -1009,7 +1005,7 @@ EOF
if [ "$hyp" == "vmware" ] || [ "$hyp" == "hyperv" ];
then
ip route add $MGMTNET via $LOCAL_GW dev eth0
-
+
# a hacking way to activate vSwitch under VMware
ping -n -c 3 $LOCAL_GW &
sleep 3
@@ -1065,8 +1061,6 @@ EOF
}
-
-
setup_dhcpsrvr() {
log_it "Setting up dhcp server system vm"
setup_common eth0 eth1
@@ -1108,10 +1102,10 @@ setup_storage_network() {
log_it "Incompleted parameters STORAGE_IP:$STORAGE_IP, STORAGE_NETMASK:$STORAGE_NETMASK, STORAGE_CIDR:$STORAGE_CIDR. Cannot setup storage network"
return
fi
-
+
echo "" >> /etc/network/interfaces
echo "auto eth3" >> /etc/network/interfaces
-
+
setup_interface "3" "$STORAGE_IP" "$STORAGE_NETMASK"
[ -n "$MTU" ] && ifconfig eth3 mtu $MTU && echo " mtu $MTU" >> /etc/network/interfaces
#ip route add "$STORAGE_CIDR" via "$STORAGE_IP"
@@ -1260,7 +1254,7 @@ setup_elbvm() {
else
setup_sshd $ETH1_IP "eth1"
fi
-
+
enable_fwding 0
enable_svc haproxy 0
enable_irqbalance 0
@@ -1283,7 +1277,7 @@ setup_ilbvm() {
cp /etc/iptables/iptables-ilbvm /etc/iptables/rules.v4
cp /etc/iptables/iptables-ilbvm /etc/iptables/rules
setup_sshd $ETH1_IP "eth1"
-
+
enable_fwding 0
enable_svc haproxy 1
enable_irqbalance 1
@@ -1317,11 +1311,11 @@ start() {
[ $? -ne 0 ] && log_it "Failed to detect hypervisor type, bailing out of early init" && exit 10
log_it "Detected that we are running inside $hyp guest"
get_boot_params
- patch
+ # patch - removed since this was done by cloud-early-init
patch_log4j
parse_cmd_line
change_password
- case $TYPE in
+ case $TYPE in
router)
[ "$NAME" == "" ] && NAME=router
setup_router
@@ -1400,7 +1394,7 @@ for i in $CMDLINE
# Two lines so values do not accidently interpretted as escapes!!
echo -n \"${KEY}\"': '\"${VALUE}\" >> ${CHEF_TMP_FILE}
COMMA=",\n\t"
- case $KEY in
+ case $KEY in
disable_rp_filter)
DISABLE_RP_FILTER=$VALUE
;;
@@ -1483,13 +1477,13 @@ for i in $CMDLINE
DHCP_RANGE=$(echo $VALUE | tr ':' ',')
;;
bootproto)
- BOOTPROTO=$VALUE
+ BOOTPROTO=$VALUE
;;
type)
- TYPE=$VALUE
+ TYPE=$VALUE
;;
defaultroute)
- DEFAULTROUTE=$VALUE
+ DEFAULTROUTE=$VALUE
;;
redundant_router)
RROUTER=$VALUE
@@ -1556,7 +1550,7 @@ case "$1" in
start)
log_action_begin_msg "Executing cloud-early-config"
- log_it "Executing cloud-early-config"
+ log_it "Executing cloud-early-config"
if start; then
log_action_end_msg $?
else
diff --git a/systemvm/patches/debian/config/etc/init.d/cloud-early-init b/systemvm/patches/debian/config/etc/init.d/cloud-early-init
new file mode 100644
index 00000000000..ea7690d7ba3
--- /dev/null
+++ b/systemvm/patches/debian/config/etc/init.d/cloud-early-init
@@ -0,0 +1,222 @@
+#!/bin/bash
+### BEGIN INIT INFO
+# Provides: cloud-early-init
+# Required-Start: mountkernfs $local_fs
+# Required-Stop: $local_fs
+# Should-Start:
+# Should-Stop:
+# Default-Start: S
+# Default-Stop: 0 6
+# Short-Description: configure according to cmdline
+### END INIT INFO
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied. See the License for the
+# specific language governing permissions and limitations
+# under the License.
+
+PATH="/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin"
+
+# include req for patchsystemvm
+. /lib/lsb/init-functions
+
+log_it() {
+ echo "$(date) cloud-early-init $@" >> /var/log/cloud.log
+ log_action_msg "$@"
+}
+
+hypervisor() {
+ [ -d /proc/xen ] && mount -t xenfs none /proc/xen
+ [ -d /proc/xen ] && echo "xen-domU" && return 0
+
+ local try=$([ -x /usr/sbin/virt-what ] && virt-what | tail -1)
+ [ "$try" != "" ] && echo $try && return 0
+
+ vmware-checkvm &> /dev/null && echo "vmware" && return 0
+
+ grep -q QEMU /proc/cpuinfo && echo "kvm" && return 0
+ grep -q QEMU /var/log/messages && echo "kvm" && return 0
+
+ echo "unknown" && return 1
+
+}
+
+get_boot_params() {
+ local EXTRA_MOUNT=/media/extra
+ local hyp=$(hypervisor)
+ [ $? -ne 0 ] && log_it "Failed to detect hypervisor type, bailing out of early init" && exit 10
+
+ case $hyp in
+ xen-domU|xen-hvm)
+ cat /proc/cmdline > /var/cache/cloud/cmdline
+ sed -i "s/%/ /g" /var/cache/cloud/cmdline
+ ;;
+ kvm)
+ VPORT=$(find /dev/virtio-ports -type l -name '*.vport' 2>/dev/null|head -1)
+
+ if [ -z "$VPORT" ]; then
+ log_it "No suitable VirtIO port was found in /dev/virtio-ports" && exit 2
+ fi
+
+ if [ ! -e "$VPORT" ]; then
+ log_it "${VPORT} not loaded, perhaps guest kernel is too old." && exit 2
+ fi
+
+ local factor=2
+ local progress=1
+ for i in {1..5}
+ do
+ while read line; do
+ if [[ $line == cmdline:* ]]; then
+ cmd=${line//cmdline:/}
+ echo $cmd > /var/cache/cloud/cmdline
+ elif [[ $line == pubkey:* ]]; then
+ pubkey=${line//pubkey:/}
+ echo $pubkey > /var/cache/cloud/authorized_keys
+ echo $pubkey > /root/.ssh/authorized_keys
+ fi
+ done < $VPORT
+ # In case of reboot we do not send the boot args again.
+ # So, no need to wait for them, as the boot args are already set at startup
+ if [ -s /var/cache/cloud/cmdline ]
+ then
+ log_it "Found a non empty cmdline file. Will now exit the loop and proceed with configuration."
+ break;
+ fi
+ sleep ${progress}s
+ progress=$[ progress * factor ]
+ done
+ chmod go-rwx /root/.ssh/authorized_keys
+ ;;
+ vmware)
+ vmtoolsd --cmd 'machine.id.get' > /var/cache/cloud/cmdline
+ ;;
+ virtualpc|hyperv)
+ # Hyper-V is recognized as virtualpc hypervisor type. Boot args are passed using KVP Daemon
+ #waiting for the hv_kvp_daemon to start up
+ #sleep need to fix the race condition of hv_kvp_daemon and cloud-early-config
+ sleep 5
+ cp -f /var/opt/hyperv/.kvp_pool_0 /var/cache/cloud/cmdline
+ cat /dev/null > /var/opt/hyperv/.kvp_pool_0
+ ;;
+ virtualbox)
+ # Virtualbox is used to test the virtual router
+ # get the commandline from a dmistring (yes, hacky!)
+ dmidecode | grep cmdline | sed 's/^.*cmdline://' > /var/cache/cloud/cmdline
+ RV=$?
+ if [ $RV -ne 0 ] ; then
+ log_it "Failed to get cmdline from a virtualbox dmi property"
+ fi
+ ;;
+ esac
+
+}
+
+patch() {
+ local PATCH_MOUNT=/media/cdrom
+ local patchfile=$PATCH_MOUNT/cloud-scripts.tgz
+ local md5file=/var/cache/cloud/cloud-scripts-signature
+ local privkey=$PATCH_MOUNT/authorized_keys
+ local shouldpatch=false
+ local cdrom_dev=
+ mkdir -p $PATCH_MOUNT
+
+ if [ -e /dev/xvdd ]; then
+ cdrom_dev=/dev/xvdd
+ elif [ -e /dev/cdrom ]; then
+ cdrom_dev=/dev/cdrom
+ elif [ -e /dev/cdrom1 ]; then
+ cdrom_dev=/dev/cdrom1
+ elif [ -e /dev/cdrom2 ]; then
+ cdrom_dev=/dev/cdrom2
+ elif [ -e /dev/cdrom3 ]; then
+ cdrom_dev=/dev/cdrom3
+ fi
+ [ -f /var/cache/cloud/authorized_keys ] && privkey=/var/cache/cloud/authorized_keys
+
+ if [ -n "$cdrom_dev" ]; then
+ mount -o ro $cdrom_dev $PATCH_MOUNT
+ [ -f $privkey ] && cp -f $privkey /root/.ssh/ && chmod go-rwx /root/.ssh/authorized_keys
+ local oldmd5=
+ [ -f ${md5file} ] && oldmd5=$(cat ${md5file})
+ local newmd5=
+ [ -f ${patchfile} ] && newmd5=$(md5sum ${patchfile} | awk '{print $1}')
+
+ if [ "$oldmd5" != "$newmd5" ] && [ -f ${patchfile} ] && [ "$newmd5" != "" ]
+ then
+ shouldpatch=true
+ log_it "Patching scripts oldmd5=$oldmd5 newmd5=$newmd5"
+ tar xzf $patchfile -C /
+ echo ${newmd5} > ${md5file}
+ else
+ log_it "Scripts up to date oldmd5=$oldmd5 newmd5=$newmd5"
+ fi
+ log_it "Patching cloud service"
+ hyperVisor=$(hypervisor)
+ /opt/cloud/bin/patchsystemvm.sh $PATCH_MOUNT $hyperVisor
+ log_it "Unmounting $PATCH_MOUNT"
+ umount $PATCH_MOUNT
+
+ # Historical reboot removed due to cloud-early-init now running before services started
+
+ fi
+
+ if [ -f /mnt/cmdline ]; then
+ cat /mnt/cmdline > /var/cache/cloud/cmdline
+ fi
+ return 0
+}
+
+start() {
+
+ local hyp=$(hypervisor)
+ [ $? -ne 0 ] && log_it "Failed to detect hypervisor type, bailing out of cloud-early-init" && exit 10
+ log_it "Detected that we are running inside $hyp guest."
+ get_boot_params
+ patch
+ if [ "$hyp" == "hyperv" ]; then
+ # eject the systemvm.iso
+ eject
+ fi
+ return 0
+}
+
+case "$1" in
+start)
+ log_action_begin_msg "Executing cloud-early-init."
+ log_it "Executing cloud-early-init."
+ if start; then
+ log_action_end_msg $?
+ else
+ log_action_end_msg $?
+ fi
+ ;;
+
+stop)
+ log_action_begin_msg "Stopping cloud-early-init."
+ log_it "Stopping cloud-early-init."
+ log_action_end_msg 0
+ ;;
+
+*)
+ echo "Usage: /etc/init.d/cloud-early-init {start|stop}."
+ exit 1
+ ;;
+esac
+
+# Serialize cloud-early-init and cloud-early-config
+log_it "Calling cloud-early-config."
+/etc/init.d/cloud-early-config start
+
+exit 0
diff --git a/systemvm/patches/debian/config/etc/init.d/cloud-passwd-srvr b/systemvm/patches/debian/config/etc/init.d/cloud-passwd-srvr
index 33b0ea310cb..41a1a782dbe 100755
--- a/systemvm/patches/debian/config/etc/init.d/cloud-passwd-srvr
+++ b/systemvm/patches/debian/config/etc/init.d/cloud-passwd-srvr
@@ -1,11 +1,11 @@
-#!/bin/bash
+#!/bin/bash
### BEGIN INIT INFO
# Provides: cloud-passwd-srvr
-# Required-Start: mountkernfs $local_fs cloud-early-config iptables-persistent
+# Required-Start: mountkernfs $local_fs cloud-early-init iptables-persistent
# Required-Stop: $local_fs
-# Should-Start:
-# Should-Stop:
-# Default-Start:
+# Should-Start:
+# Should-Stop:
+# Default-Start:
# Default-Stop: 0 6
# Short-Description: Web server that sends passwords to User VMs
### END INIT INFO
@@ -74,7 +74,7 @@ remove_iptables_rules()
}
start() {
- [ "$ENABLED" != 0 ] || exit 0
+ [ "$ENABLED" != 0 ] || exit 0
pid=$(getpid)
[ "$pid" != "" ] && echo "Password server is already running (pid=$pid)" && return 0
add_iptables_rules
diff --git a/systemvm/patches/debian/config/etc/init.d/postinit b/systemvm/patches/debian/config/etc/init.d/postinit
index 818959fde3b..9af911fc40a 100755
--- a/systemvm/patches/debian/config/etc/init.d/postinit
+++ b/systemvm/patches/debian/config/etc/init.d/postinit
@@ -1,10 +1,10 @@
#!/bin/bash -e
### BEGIN INIT INFO
# Provides: postinit
-# Required-Start: mountkernfs $local_fs cloud-early-config
+# Required-Start: mountkernfs $local_fs cloud-early-init
# Required-Stop: $local_fs
-# Should-Start:
-# Should-Stop:
+# Should-Start:
+# Should-Stop:
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: post-init
@@ -19,7 +19,7 @@
# with the License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
-#
+#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
@@ -61,7 +61,7 @@ setup_redundant_router() {
}
start() {
- case $TYPE in
+ case $TYPE in
secstorage)
[ "$NAME" == "" ] && NAME=secstorage
setup_secstorage;
@@ -95,7 +95,7 @@ for i in $CMDLINE
# search for foo=bar pattern and cut out foo
KEY=$(echo $i | cut -d= -f1)
VALUE=$(echo $i | cut -d= -f2)
- case $KEY in
+ case $KEY in
eth0ip)
ETH0_IP=$VALUE
;;
@@ -142,10 +142,10 @@ for i in $CMDLINE
DHCP_RANGE=$(echo $VALUE | tr ':' ',')
;;
bootproto)
- BOOTPROTO=$VALUE
+ BOOTPROTO=$VALUE
;;
type)
- TYPE=$VALUE
+ TYPE=$VALUE
;;
redundant_router)
RROUTER=$VALUE
diff --git a/systemvm/patches/debian/config/opt/cloud/bin/patchsystemvm.sh b/systemvm/patches/debian/config/opt/cloud/bin/patchsystemvm.sh
index 9222a8c89b7..f5154fff409 100755
--- a/systemvm/patches/debian/config/opt/cloud/bin/patchsystemvm.sh
+++ b/systemvm/patches/debian/config/opt/cloud/bin/patchsystemvm.sh
@@ -17,18 +17,26 @@
# under the License.
#set -x
-logfile="/var/log/patchsystemvm.log"
+logfile="/var/log/cloud.log"
+
+log_it() {
+ echo "$(date) patchsystemvm.sh $@" >> $logfile
+}
+
# To use existing console proxy .zip-based package file
patch_console_proxy() {
local patchfile=$1
+ log_it "Patching CPVM/SSVM with cloud agent jars from $patchfile"
rm /usr/local/cloud/systemvm -rf
mkdir -p /usr/local/cloud/systemvm
- echo "All" | unzip $patchfile -d /usr/local/cloud/systemvm >$logfile 2>&1
+ log_it "Patching /usr/local/cloud/systemvm:"
+ echo "All" | unzip $patchfile -d /usr/local/cloud/systemvm >>$logfile 2>&1
find /usr/local/cloud/systemvm/ -name \*.sh | xargs chmod 555
return 0
}
consoleproxy_svcs() {
+ log_it "Configuring console proxy services"
chkconfig cloud on
chkconfig postinit on
chkconfig cloud-passwd-srvr off
@@ -46,6 +54,7 @@ consoleproxy_svcs() {
}
secstorage_svcs() {
+ log_it "Configuring SSVM services"
chkconfig cloud on
chkconfig postinit on
chkconfig cloud-passwd-srvr off
@@ -63,10 +72,11 @@ secstorage_svcs() {
}
routing_svcs() {
+ log_it "Configuring VR services"
grep "redundant_router=1" /var/cache/cloud/cmdline > /dev/null
RROUTER=$?
chkconfig cloud off
- chkconfig haproxy on ;
+ chkconfig haproxy on ;
chkconfig ssh on
chkconfig nfs-common off
chkconfig portmap off
@@ -74,6 +84,7 @@ routing_svcs() {
echo "cloud nfs-common portmap" > /var/cache/cloud/disabled_svcs
if [ $RROUTER -eq 0 ]
then
+ log_it "Configuring redundant VR services"
chkconfig dnsmasq off
chkconfig cloud-passwd-srvr off
chkconfig keepalived on
@@ -82,6 +93,7 @@ routing_svcs() {
echo "keepalived conntrackd postinit" >> /var/cache/cloud/enabled_svcs
echo "dnsmasq cloud-passwd-srvr" >> /var/cache/cloud/disabled_svcs
else
+ log_it "Configuring non-redundant VR services"
chkconfig dnsmasq on
chkconfig cloud-passwd-srvr on
chkconfig keepalived off
@@ -92,9 +104,10 @@ routing_svcs() {
}
dhcpsrvr_svcs() {
+ log_it "Configuring DHCP services"
chkconfig cloud off
- chkconfig cloud-passwd-srvr on ;
- chkconfig haproxy off ;
+ chkconfig cloud-passwd-srvr on ;
+ chkconfig haproxy off ;
chkconfig dnsmasq on
chkconfig ssh on
chkconfig nfs-common off
@@ -106,8 +119,9 @@ dhcpsrvr_svcs() {
}
elbvm_svcs() {
+ log_it "Configuring external load balancing VM services"
chkconfig cloud off
- chkconfig haproxy on ;
+ chkconfig haproxy on ;
chkconfig ssh on
chkconfig nfs-common off
chkconfig portmap off
@@ -117,10 +131,10 @@ elbvm_svcs() {
echo "cloud dnsmasq cloud-passwd-srvr apache2 nfs-common portmap" > /var/cache/cloud/disabled_svcs
}
-
ilbvm_svcs() {
+ log_it "Configuring internal load balancing VM services"
chkconfig cloud off
- chkconfig haproxy on ;
+ chkconfig haproxy on ;
chkconfig ssh on
chkconfig nfs-common off
chkconfig portmap off
@@ -131,6 +145,7 @@ ilbvm_svcs() {
}
enable_pcihotplug() {
+ log_it "Configuring PCI hot plug"
sed -i -e "/acpiphp/d" /etc/modules
sed -i -e "/pci_hotplug/d" /etc/modules
echo acpiphp >> /etc/modules
@@ -138,6 +153,7 @@ enable_pcihotplug() {
}
enable_serial_console() {
+ log_it "Enabling serial console"
sed -i -e "/^serial.*/d" /boot/grub/grub.conf
sed -i -e "/^terminal.*/d" /boot/grub/grub.conf
sed -i -e "/^default.*/a\serial --unit=0 --speed=115200 --parity=no --stop=1" /boot/grub/grub.conf
@@ -147,8 +163,11 @@ enable_serial_console() {
sed -i -e "/6:23:respawn/a\s0:2345:respawn:/sbin/getty -L 115200 ttyS0 vt102" /etc/inittab
}
+log_it "Starting $0 $*"
CMDLINE=$(cat /var/cache/cloud/cmdline)
+log_it "CMDLINE passed to system VM patch process: $CMDLINE"
+
TYPE="router"
PATCH_MOUNT=$1
Hypervisor=$2
@@ -169,10 +188,11 @@ done
if [ "$TYPE" == "consoleproxy" ] || [ "$TYPE" == "secstorage" ] && [ -f ${PATCH_MOUNT}/systemvm.zip ]
then
+ log_it "Patching ${TYPE}."
patch_console_proxy ${PATCH_MOUNT}/systemvm.zip
if [ $? -gt 0 ]
then
- printf "Failed to apply patch systemvm\n" >$logfile
+ log_it "Failed to apply patch systemvm"
exit 5
fi
fi
@@ -183,26 +203,29 @@ echo "" > /root/.ssh/known_hosts
if [ "$Hypervisor" == "kvm" ]
then
+ log_it "Enabling PCI hotplug and serial console for KVM"
enable_pcihotplug
enable_serial_console
fi
if [ "$TYPE" == "router" ] || [ "$TYPE" == "vpcrouter" ]
then
+ log_it "Updating ${TYPE} services"
routing_svcs
if [ $? -gt 0 ]
then
- printf "Failed to execute routing_svcs\n" >$logfile
+ log_it "Failed to execute routing_svcs"
exit 6
fi
fi
if [ "$TYPE" == "dhcpsrvr" ]
then
+ log_it "Updating ${TYPE} services"
dhcpsrvr_svcs
if [ $? -gt 0 ]
then
- printf "Failed to execute dhcpsrvr_svcs\n" >$logfile
+ log_it "Failed to execute dhcpsrvr_svcs"
exit 6
fi
fi
@@ -210,40 +233,44 @@ fi
if [ "$TYPE" == "consoleproxy" ]
then
+ log_it "Updating ${TYPE} services"
consoleproxy_svcs
if [ $? -gt 0 ]
then
- printf "Failed to execute consoleproxy_svcs\n" >$logfile
+ log_it "Failed to execute consoleproxy_svcs"
exit 7
fi
fi
if [ "$TYPE" == "secstorage" ]
then
+ log_it "Updating ${TYPE} services"
secstorage_svcs
if [ $? -gt 0 ]
then
- printf "Failed to execute secstorage_svcs\n" >$logfile
+ log_it "Failed to execute secstorage_svcs"
exit 8
fi
fi
if [ "$TYPE" == "elbvm" ]
then
+ log_it "Updating ${TYPE} services"
elbvm_svcs
if [ $? -gt 0 ]
then
- printf "Failed to execute elbvm svcs\n" >$logfile
+ log_it "Failed to execute elbvm svcs"
exit 9
fi
fi
if [ "$TYPE" == "ilbvm" ]
then
+ log_it "Updating ${TYPE} services"
ilbvm_svcs
if [ $? -gt 0 ]
then
- printf "Failed to execute ilbvm svcs\n" >$logfile
+ log_it "Failed to execute ilbvm svcs"
exit 9
fi
fi
diff --git a/tools/appliance/definitions/systemvmtemplate/configure_systemvm_services.sh b/tools/appliance/definitions/systemvmtemplate/configure_systemvm_services.sh
index 60082e380a0..477e140e16b 100644
--- a/tools/appliance/definitions/systemvmtemplate/configure_systemvm_services.sh
+++ b/tools/appliance/definitions/systemvmtemplate/configure_systemvm_services.sh
@@ -36,11 +36,14 @@ function install_cloud_scripts() {
rsync -av ./cloud_scripts/ /
chmod +x /opt/cloud/bin/* \
/root/{clearUsageRules.sh,reconfigLB.sh,monitorServices.py} \
- /etc/init.d/{cloud,cloud-early-config,cloud-passwd-srvr,postinit} \
+ /etc/init.d/{cloud,cloud-early-init,cloud-early-config,cloud-passwd-srvr,postinit} \
/etc/profile.d/cloud.sh
- chkconfig --add cloud-early-config
- chkconfig cloud-early-config on
+ chkconfig --add cloud-early-init
+ chkconfig cloud-early-init on
+ # Testing serialized cloud-early-init and cloud-early-config
+ # chkconfig --add cloud-early-config
+ # chkconfig cloud-early-config on
chkconfig --add cloud-passwd-srvr
chkconfig cloud-passwd-srvr off
chkconfig --add cloud
----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on GitHub and use the
URL above to go to the specific comment.
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
With regards,
Apache Git Services
Re: [GitHub] rhtyd closed pull request #2214: Speed-up VR initialisation/configuration
Posted by Mohammad Aladwan <m....@gmail.com>.
hi,
please i want to leave this group,i am not sure how i can leave it
my best regards
On Sun, Dec 10, 2017 at 4:07 PM, GitBox <gi...@apache.org> wrote:
> rhtyd closed pull request #2214: Speed-up VR initialisation/configuration
> URL: https://github.com/apache/cloudstack/pull/2214
>
>
>
>
> This is a PR merged from a forked repository.
> As GitHub hides the original diff on merge, it is displayed below for
> the sake of provenance:
>
> As this is a foreign pull request (from a fork), the diff is supplied
> below (as it won't show otherwise due to GitHub magic):
>
> diff --git a/systemvm/patches/debian/buildsystemvm.sh
> b/systemvm/patches/debian/buildsystemvm.sh
> index a34b1dd0a61..f8726439925 100755
> --- a/systemvm/patches/debian/buildsystemvm.sh
> +++ b/systemvm/patches/debian/buildsystemvm.sh
> @@ -228,7 +228,7 @@ cat > etc/init.d/iptables-persistent << EOF
> #!/bin/sh
> ### BEGIN INIT INFO
> # Provides: iptables
> -# Required-Start: mountkernfs $local_fs
> +# Required-Start: mountkernfs $local_fs cloud-early-init
> # Required-Stop: $local_fs
> # Should-Start: cloud-early-config
> # Default-Start: S
> @@ -418,6 +418,8 @@ services() {
>
> /bin/cp -r ${scriptdir}/config/* ./
> chroot . chkconfig xl2tpd off
> + chroot . chkconfig --add cloud-early-init
> + chroot . chkconfig cloud-early-init on
> chroot . chkconfig --add cloud-early-config
> chroot . chkconfig cloud-early-config on
> chroot . chkconfig --add iptables-persistent
> diff --git a/systemvm/patches/debian/config/etc/init.d/cloud
> b/systemvm/patches/debian/config/etc/init.d/cloud
> index f9a9915223e..47dd47b74da 100755
> --- a/systemvm/patches/debian/config/etc/init.d/cloud
> +++ b/systemvm/patches/debian/config/etc/init.d/cloud
> @@ -1,11 +1,11 @@
> -#!/bin/bash
> +#!/bin/bash
> ### BEGIN INIT INFO
> # Provides: cloud
> -# Required-Start: mountkernfs $local_fs cloud-early-config
> +# Required-Start: mountkernfs $local_fs cloud-early-init
> # Required-Stop: $local_fs
> -# Should-Start:
> -# Should-Stop:
> -# Default-Start:
> +# Should-Start:
> +# Should-Stop:
> +# Default-Start:
> # Default-Stop: 0 1 6
> # Short-Description: Start up the CloudStack cloud service
> ### END INIT INFO
> @@ -44,7 +44,7 @@ for i in $CMDLINE
> do
> # search for foo=bar pattern and cut out foo
> FIRSTPATTERN=$(echo $i | cut -d= -f1)
> - case $FIRSTPATTERN in
> + case $FIRSTPATTERN in
> type)
> TYPE=$(echo $i | cut -d= -f2)
> ;;
> @@ -104,7 +104,7 @@ start() {
> then
> (cd $CLOUDSTACK_HOME/systemvm; nohup ./run.sh > $LOG_FILE 2>&1 & )
> pid=$(get_pids)
> - echo $pid > /var/run/cloud.pid
> + echo $pid > /var/run/cloud.pid
> fi
> _success
> else
> @@ -137,7 +137,7 @@ status() {
> return 0
> }
>
> -[ "$ENABLED" != 0 ] || exit 0
> +[ "$ENABLED" != 0 ] || exit 0
>
> case "$1" in
> start) start
> diff --git a/systemvm/patches/debian/config/etc/init.d/cloud-early-config
> b/systemvm/patches/debian/config/etc/init.d/cloud-early-config
> index 3bdebdbb798..cfbdd90f1cb 100755
> --- a/systemvm/patches/debian/config/etc/init.d/cloud-early-config
> +++ b/systemvm/patches/debian/config/etc/init.d/cloud-early-config
> @@ -1,10 +1,10 @@
> #!/bin/bash
> ### BEGIN INIT INFO
> # Provides: cloud-early-config
> -# Required-Start: mountkernfs $local_fs
> -# Required-Stop: $local_fs
> -# Should-Start:
> -# Should-Stop:
> +# Required-Start: mountkernfs $local_fs cloud-early-init
> +# Required-Stop: $local_fs cloud-early-init
> +# Should-Start:
> +# Should-Stop:
> # Default-Start: S
> # Default-Stop: 0 6
> # Short-Description: configure according to cmdline
> @@ -43,7 +43,7 @@ rm -f /var/cache/cloud/boot_up_done
> . /lib/lsb/init-functions
>
> log_it() {
> - echo "$(date) $@" >> /var/log/cloud.log
> + echo "$(date) cloud-early-config $@" >> /var/log/cloud.log
> log_action_msg "$@"
> }
>
> @@ -52,11 +52,11 @@ init_interfaces_orderby_macs() {
> total_nics=${#macs[@]}
> interface_file=${2:-"/etc/network/interfaces"}
> rule_file=${3:-"/etc/udev/rules.d/70-persistent-net.rules"}
> -
> +
> echo -n "auto lo" > $interface_file
> for((i=0; i<total_nics; i++))
> do
> - if [[ $i < 3 ]]
> + if [[ $i < 3 ]]
> then
> echo -n " eth$i" >> $interface_file
> fi
> @@ -70,7 +70,7 @@ EOF
> echo "" > $rule_file
> for((i=0; i < ${#macs[@]}; i++))
> do
> - echo "SUBSYSTEM==\"net\", ACTION==\"add\", DRIVERS==\"?*\",
> ATTR{address}==\"${macs[$i]}\", NAME=\"eth$i\"" >> $rule_file
> + echo "SUBSYSTEM==\"net\", ACTION==\"add\", DRIVERS==\"?*\",
> ATTR{address}==\"${macs[$i]}\", NAME=\"eth$i\"" >> $rule_file
> done
> }
>
> @@ -151,7 +151,7 @@ get_boot_params() {
> chmod go-rwx /root/.ssh/authorized_keys
> ;;
> vmware)
> - vmtoolsd --cmd 'machine.id.get' > /var/cache/cloud/cmdline
> + vmtoolsd --cmd 'machine.id.get' > /var/cache/cloud/cmdline
> ;;
> virtualpc|hyperv)
> # Hyper-V is recognized as virtualpc hypervisor type. Boot args
> are passed using KVP Daemon
> @@ -183,7 +183,6 @@ patch() {
> local cdrom_dev=
> mkdir -p $PATCH_MOUNT
>
> -
> if [ -e /dev/xvdd ]; then
> cdrom_dev=/dev/xvdd
> elif [ -e /dev/cdrom ]; then
> @@ -204,11 +203,11 @@ patch() {
> [ -f ${md5file} ] && oldmd5=$(cat ${md5file})
> local newmd5=
> [ -f ${patchfile} ] && newmd5=$(md5sum ${patchfile} | awk '{print
> $1}')
> -
> +
> if [ "$oldmd5" != "$newmd5" ] && [ -f ${patchfile} ] && [ "$newmd5" !=
> "" ]
> then
> shouldpatch=true
> - log_it "Patching scripts oldmd5=$oldmd5 newmd5=$newmd5"
> + log_it "Patching scripts oldmd5=$oldmd5 newmd5=$newmd5 with
> $patchfile"
> tar xzf $patchfile -C /
> echo ${newmd5} > ${md5file}
> fi
> @@ -216,8 +215,8 @@ patch() {
> hyperVisor=$(hypervisor)
> /opt/cloud/bin/patchsystemvm.sh $PATCH_MOUNT $hyperVisor
> umount $PATCH_MOUNT
> -
> - if [ "$shouldpatch" == "true" ]
> +
> + if [ "$shouldpatch" == "true" ]
> then
> log_it "Rebooting system since we patched init scripts"
> sync
> @@ -355,7 +354,7 @@ setup_interface() {
> local mask=$3
> local gw=$4
> local force=$5
> - local intf=eth${intfnum}
> + local intf=eth${intfnum}
> local bootproto="static"
>
>
> @@ -449,7 +448,7 @@ enable_fwding() {
> disable_rpfilter() {
> log_it "cloud: disable rp_filter"
> log_it "disable rpfilter"
> - sed -i "s/net.ipv4.conf.default.rp_filter.*$/net.ipv4.conf.default.rp_filter
> = 0/" /etc/sysctl.conf
> + sed -i "s/net.ipv4.conf.default.rp_filter.*$/net.ipv4.conf.default.rp_filter
> = 0/" /etc/sysctl.conf
> }
>
> get_public_vif_list() {
> @@ -461,32 +460,32 @@ get_public_vif_list() {
> vif_list="$vif_list $vif";
> fi
> done
> -
> +
> echo $vif_list
> }
>
> disable_rpfilter_domR() {
> log_it "cloud: Tuning rp_filter on public interfaces"
> -
> +
> VIF_LIST=$(get_public_vif_list)
> log_it "rpfilter public interfaces : $VIF_LIST"
> if [ "$DISABLE_RP_FILTER" == "true" ]
> then
> log_it "cloud: disable rp_filter on public interfaces"
> - sed -i "s/net.ipv4.conf.default.rp_filter.*$/net.ipv4.conf.default.rp_filter
> = 0/" /etc/sysctl.conf
> + sed -i "s/net.ipv4.conf.default.rp_filter.*$/net.ipv4.conf.default.rp_filter
> = 0/" /etc/sysctl.conf
> echo "0" > /proc/sys/net/ipv4/conf/default/rp_filter
> for vif in $VIF_LIST; do
> log_it "cloud: disable rp_filter on public interface: $vif"
> - sed -i "s/net.ipv4.conf.$vif.rp_filter.*$/net.ipv4.conf.$vif.rp_filter
> = 0/" /etc/sysctl.conf
> + sed -i "s/net.ipv4.conf.$vif.rp_filter.*$/net.ipv4.conf.$vif.rp_filter
> = 0/" /etc/sysctl.conf
> echo "0" > /proc/sys/net/ipv4/conf/$vif/rp_filter
> done
> else
> log_it "cloud: enable rp_filter on public interfaces"
> - sed -i "s/net.ipv4.conf.default.rp_filter.*$/net.ipv4.conf.default.rp_filter
> = 1/" /etc/sysctl.conf
> + sed -i "s/net.ipv4.conf.default.rp_filter.*$/net.ipv4.conf.default.rp_filter
> = 1/" /etc/sysctl.conf
> echo "1" > /proc/sys/net/ipv4/conf/default/rp_filter
> for vif in $VIF_LIST; do
> log_it "cloud: enable rp_filter on public interface: $vif"
> - sed -i "s/net.ipv4.conf.$vif.rp_filter.*$/net.ipv4.conf.$vif.rp_filter
> = 1/" /etc/sysctl.conf
> + sed -i "s/net.ipv4.conf.$vif.rp_filter.*$/net.ipv4.conf.$vif.rp_filter
> = 1/" /etc/sysctl.conf
> echo "1" > /proc/sys/net/ipv4/conf/$vif/rp_filter
> done
> fi
> @@ -593,11 +592,11 @@ setup_common() {
> then
> setup_interface "2" $ETH2_IP $ETH2_MASK $GW
> fi
> -
> +
> echo $NAME > /etc/hostname
> echo 'AVAHI_DAEMON_DETECT_LOCAL=0' > /etc/default/avahi-daemon
> hostname $NAME
> -
> +
> #Nameserver
> sed -i -e "/^nameserver.*$/d" /etc/resolv.conf # remove previous entries
> sed -i -e "/^nameserver.*$/d" /etc/dnsmasq-resolv.conf # remove
> previous entries
> @@ -606,7 +605,7 @@ setup_common() {
> echo "nameserver $internalNS1" > /etc/dnsmasq-resolv.conf
> echo "nameserver $internalNS1" > /etc/resolv.conf
> fi
> -
> +
> if [ -n "$internalNS2" ]
> then
> echo "nameserver $internalNS2" >> /etc/dnsmasq-resolv.conf
> @@ -617,7 +616,7 @@ setup_common() {
> echo "nameserver $NS1" >> /etc/dnsmasq-resolv.conf
> echo "nameserver $NS1" >> /etc/resolv.conf
> fi
> -
> +
> if [ -n "$NS2" ]
> then
> echo "nameserver $NS2" >> /etc/dnsmasq-resolv.conf
> @@ -652,7 +651,7 @@ setup_common() {
> ip route add default via $GW dev $gwdev
>
> fi
> -
> +
> # a hacking way to activate vSwitch under VMware
> ping -n -c 3 $GW &
> sleep 3
> @@ -667,7 +666,7 @@ setup_common() {
> ping -n -c 3 $MGMT_GW &
> sleep 3
> pkill ping
> -
> +
> fi
>
> local hyp=$(hypervisor)
> @@ -689,7 +688,7 @@ setup_dnsmasq() {
>
> #get the template
> cp /etc/dnsmasq.conf.tmpl /etc/dnsmasq.conf
> -
> +
> if [ -n "$DOMAIN" ]
> then
> #send domain name to dhcp clients
> @@ -699,17 +698,17 @@ setup_dnsmasq() {
> #answer all local domain queries
> sed -i -e "s/^[#]*local=.*$/local=\/$DOMAIN\//"
> /etc/dnsmasq.conf
> fi
> -
> +
> if [ -n "$DNS_SEARCH_ORDER" ]
> then
> sed -i -e "/^[#]*dhcp-option.*=119.*$/d" /etc/dnsmasq.conf
> echo "dhcp-option-force=119,$DNS_SEARCH_ORDER" >> /etc/dnsmasq.conf
> # set the domain search order as a space seprated list for option 15
> DNS_SEARCH_ORDER=$(echo $DNS_SEARCH_ORDER | sed 's/,/ /g')
> - #send domain name to dhcp clients
> + #send domain name to dhcp clients
> sed -i s/[#]*dhcp-option=15.*$/dhcp-option=15,\""$DNS_SEARCH_ORDER"\"/
> /etc/dnsmasq.conf
> fi
> -
> +
> if [ $DHCP_RANGE ]
> then
> sed -i -e "s/^dhcp-range_ip4=.*$/dhcp-range=$DHCP_RANGE,static/"
> /etc/dnsmasq.conf
> @@ -880,11 +879,11 @@ setup_router() {
>
> oldmd5=
> [ -f "/etc/udev/rules.d/70-persistent-net.rules" ] && oldmd5=$(md5sum
> "/etc/udev/rules.d/70-persistent-net.rules" | awk '{print $1}')
> -
> +
> if [ -n "$ETH2_IP" ]
> then
> setup_common eth0 eth1 eth2
> -
> +
> if [ -n "$EXTRA_PUBNICS" ]
> then
> for((i = 3; i < 3 + $EXTRA_PUBNICS; i++))
> @@ -902,13 +901,13 @@ setup_router() {
> done
> fi
> fi
> -
> - # Moved to Cs Python code
> +
> + # Moved to Cs Python code
> #if [ -n "$ETH2_IP" -a "$RROUTER" == "1" ]
> #then
> #setup_redundant_router
> #fi
> -
> +
> log_it "Checking udev NIC assignment order changes"
> if [ "$NIC_MACS" != "" ]
> then
> @@ -916,7 +915,7 @@ setup_router() {
> newmd5=$(md5sum "/tmp/udev-rules" | awk '{print $1}')
> rm /tmp/interfaces
> rm /tmp/udev-rules
> -
> +
> if [ "$oldmd5" != "$newmd5" ]
> then
> log_it "udev NIC assignment requires reboot to take effect"
> @@ -925,7 +924,7 @@ setup_router() {
> reboot
> fi
> fi
> -
> +
> setup_aesni
> setup_dnsmasq
> setup_apache2 $ETH0_IP
> @@ -933,7 +932,6 @@ setup_router() {
> sed -i /gateway/d /etc/hosts
> echo "$ETH0_IP $NAME" >> /etc/hosts
>
> -
> enable_svc dnsmasq 1
> enable_svc haproxy 1
> enable_irqbalance 1
> @@ -957,10 +955,8 @@ setup_router() {
>
> #setup hourly logrotate
> mv -n /etc/cron.daily/logrotate /etc/cron.hourly 2>&1
> -
> -}
> -
>
> +}
>
> setup_vpcrouter() {
> log_it "Setting up VPC virtual router system vm"
> @@ -974,11 +970,11 @@ auto lo eth0
> iface lo inet loopback
> EOF
> setup_interface "0" $ETH0_IP $ETH0_MASK $GW
> -
> +
> echo $NAME > /etc/hostname
> echo 'AVAHI_DAEMON_DETECT_LOCAL=0' > /etc/default/avahi-daemon
> hostname $NAME
> -
> +
> #Nameserver
> sed -i -e "/^nameserver.*$/d" /etc/resolv.conf # remove previous entries
> sed -i -e "/^nameserver.*$/d" /etc/dnsmasq-resolv.conf # remove
> previous entries
> @@ -987,7 +983,7 @@ EOF
> echo "nameserver $internalNS1" > /etc/dnsmasq-resolv.conf
> echo "nameserver $internalNS1" > /etc/resolv.conf
> fi
> -
> +
> if [ -n "$internalNS2" ]
> then
> echo "nameserver $internalNS2" >> /etc/dnsmasq-resolv.conf
> @@ -998,7 +994,7 @@ EOF
> echo "nameserver $NS1" >> /etc/dnsmasq-resolv.conf
> echo "nameserver $NS1" >> /etc/resolv.conf
> fi
> -
> +
> if [ -n "$NS2" ]
> then
> echo "nameserver $NS2" >> /etc/dnsmasq-resolv.conf
> @@ -1009,7 +1005,7 @@ EOF
> if [ "$hyp" == "vmware" ] || [ "$hyp" == "hyperv" ];
> then
> ip route add $MGMTNET via $LOCAL_GW dev eth0
> -
> +
> # a hacking way to activate vSwitch under VMware
> ping -n -c 3 $LOCAL_GW &
> sleep 3
> @@ -1065,8 +1061,6 @@ EOF
>
> }
>
> -
> -
> setup_dhcpsrvr() {
> log_it "Setting up dhcp server system vm"
> setup_common eth0 eth1
> @@ -1108,10 +1102,10 @@ setup_storage_network() {
> log_it "Incompleted parameters STORAGE_IP:$STORAGE_IP,
> STORAGE_NETMASK:$STORAGE_NETMASK, STORAGE_CIDR:$STORAGE_CIDR. Cannot
> setup storage network"
> return
> fi
> -
> +
> echo "" >> /etc/network/interfaces
> echo "auto eth3" >> /etc/network/interfaces
> -
> +
> setup_interface "3" "$STORAGE_IP" "$STORAGE_NETMASK"
> [ -n "$MTU" ] && ifconfig eth3 mtu $MTU && echo " mtu $MTU" >>
> /etc/network/interfaces
> #ip route add "$STORAGE_CIDR" via "$STORAGE_IP"
> @@ -1260,7 +1254,7 @@ setup_elbvm() {
> else
> setup_sshd $ETH1_IP "eth1"
> fi
> -
> +
> enable_fwding 0
> enable_svc haproxy 0
> enable_irqbalance 0
> @@ -1283,7 +1277,7 @@ setup_ilbvm() {
> cp /etc/iptables/iptables-ilbvm /etc/iptables/rules.v4
> cp /etc/iptables/iptables-ilbvm /etc/iptables/rules
> setup_sshd $ETH1_IP "eth1"
> -
> +
> enable_fwding 0
> enable_svc haproxy 1
> enable_irqbalance 1
> @@ -1317,11 +1311,11 @@ start() {
> [ $? -ne 0 ] && log_it "Failed to detect hypervisor type, bailing out
> of early init" && exit 10
> log_it "Detected that we are running inside $hyp guest"
> get_boot_params
> - patch
> + # patch - removed since this was done by cloud-early-init
> patch_log4j
> parse_cmd_line
> change_password
> - case $TYPE in
> + case $TYPE in
> router)
> [ "$NAME" == "" ] && NAME=router
> setup_router
> @@ -1400,7 +1394,7 @@ for i in $CMDLINE
> # Two lines so values do not accidently interpretted as escapes!!
> echo -n \"${KEY}\"': '\"${VALUE}\" >> ${CHEF_TMP_FILE}
> COMMA=",\n\t"
> - case $KEY in
> + case $KEY in
> disable_rp_filter)
> DISABLE_RP_FILTER=$VALUE
> ;;
> @@ -1483,13 +1477,13 @@ for i in $CMDLINE
> DHCP_RANGE=$(echo $VALUE | tr ':' ',')
> ;;
> bootproto)
> - BOOTPROTO=$VALUE
> + BOOTPROTO=$VALUE
> ;;
> type)
> - TYPE=$VALUE
> + TYPE=$VALUE
> ;;
> defaultroute)
> - DEFAULTROUTE=$VALUE
> + DEFAULTROUTE=$VALUE
> ;;
> redundant_router)
> RROUTER=$VALUE
> @@ -1556,7 +1550,7 @@ case "$1" in
> start)
>
> log_action_begin_msg "Executing cloud-early-config"
> - log_it "Executing cloud-early-config"
> + log_it "Executing cloud-early-config"
> if start; then
> log_action_end_msg $?
> else
> diff --git a/systemvm/patches/debian/config/etc/init.d/cloud-early-init
> b/systemvm/patches/debian/config/etc/init.d/cloud-early-init
> new file mode 100644
> index 00000000000..ea7690d7ba3
> --- /dev/null
> +++ b/systemvm/patches/debian/config/etc/init.d/cloud-early-init
> @@ -0,0 +1,222 @@
> +#!/bin/bash
> +### BEGIN INIT INFO
> +# Provides: cloud-early-init
> +# Required-Start: mountkernfs $local_fs
> +# Required-Stop: $local_fs
> +# Should-Start:
> +# Should-Stop:
> +# Default-Start: S
> +# Default-Stop: 0 6
> +# Short-Description: configure according to cmdline
> +### END INIT INFO
> +# Licensed to the Apache Software Foundation (ASF) under one
> +# or more contributor license agreements. See the NOTICE file
> +# distributed with this work for additional information
> +# regarding copyright ownership. The ASF licenses this file
> +# to you under the Apache License, Version 2.0 (the
> +# "License"); you may not use this file except in compliance
> +# with the License. You may obtain a copy of the License at
> +#
> +# http://www.apache.org/licenses/LICENSE-2.0
> +#
> +# Unless required by applicable law or agreed to in writing,
> +# software distributed under the License is distributed on an
> +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
> +# KIND, either express or implied. See the License for the
> +# specific language governing permissions and limitations
> +# under the License.
> +
> +PATH="/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin"
> +
> +# include req for patchsystemvm
> +. /lib/lsb/init-functions
> +
> +log_it() {
> + echo "$(date) cloud-early-init $@" >> /var/log/cloud.log
> + log_action_msg "$@"
> +}
> +
> +hypervisor() {
> + [ -d /proc/xen ] && mount -t xenfs none /proc/xen
> + [ -d /proc/xen ] && echo "xen-domU" && return 0
> +
> + local try=$([ -x /usr/sbin/virt-what ] && virt-what | tail -1)
> + [ "$try" != "" ] && echo $try && return 0
> +
> + vmware-checkvm &> /dev/null && echo "vmware" && return 0
> +
> + grep -q QEMU /proc/cpuinfo && echo "kvm" && return 0
> + grep -q QEMU /var/log/messages && echo "kvm" && return 0
> +
> + echo "unknown" && return 1
> +
> +}
> +
> +get_boot_params() {
> + local EXTRA_MOUNT=/media/extra
> + local hyp=$(hypervisor)
> + [ $? -ne 0 ] && log_it "Failed to detect hypervisor type, bailing out
> of early init" && exit 10
> +
> + case $hyp in
> + xen-domU|xen-hvm)
> + cat /proc/cmdline > /var/cache/cloud/cmdline
> + sed -i "s/%/ /g" /var/cache/cloud/cmdline
> + ;;
> + kvm)
> + VPORT=$(find /dev/virtio-ports -type l -name '*.vport'
> 2>/dev/null|head -1)
> +
> + if [ -z "$VPORT" ]; then
> + log_it "No suitable VirtIO port was found in
> /dev/virtio-ports" && exit 2
> + fi
> +
> + if [ ! -e "$VPORT" ]; then
> + log_it "${VPORT} not loaded, perhaps guest kernel is too
> old." && exit 2
> + fi
> +
> + local factor=2
> + local progress=1
> + for i in {1..5}
> + do
> + while read line; do
> + if [[ $line == cmdline:* ]]; then
> + cmd=${line//cmdline:/}
> + echo $cmd > /var/cache/cloud/cmdline
> + elif [[ $line == pubkey:* ]]; then
> + pubkey=${line//pubkey:/}
> + echo $pubkey > /var/cache/cloud/authorized_keys
> + echo $pubkey > /root/.ssh/authorized_keys
> + fi
> + done < $VPORT
> + # In case of reboot we do not send the boot args again.
> + # So, no need to wait for them, as the boot args are
> already set at startup
> + if [ -s /var/cache/cloud/cmdline ]
> + then
> + log_it "Found a non empty cmdline file. Will now exit the
> loop and proceed with configuration."
> + break;
> + fi
> + sleep ${progress}s
> + progress=$[ progress * factor ]
> + done
> + chmod go-rwx /root/.ssh/authorized_keys
> + ;;
> + vmware)
> + vmtoolsd --cmd 'machine.id.get' > /var/cache/cloud/cmdline
> + ;;
> + virtualpc|hyperv)
> + # Hyper-V is recognized as virtualpc hypervisor type. Boot args
> are passed using KVP Daemon
> + #waiting for the hv_kvp_daemon to start up
> + #sleep need to fix the race condition of hv_kvp_daemon and
> cloud-early-config
> + sleep 5
> + cp -f /var/opt/hyperv/.kvp_pool_0 /var/cache/cloud/cmdline
> + cat /dev/null > /var/opt/hyperv/.kvp_pool_0
> + ;;
> + virtualbox)
> + # Virtualbox is used to test the virtual router
> + # get the commandline from a dmistring (yes, hacky!)
> + dmidecode | grep cmdline | sed 's/^.*cmdline://' >
> /var/cache/cloud/cmdline
> + RV=$?
> + if [ $RV -ne 0 ] ; then
> + log_it "Failed to get cmdline from a virtualbox dmi property"
> + fi
> + ;;
> + esac
> +
> +}
> +
> +patch() {
> + local PATCH_MOUNT=/media/cdrom
> + local patchfile=$PATCH_MOUNT/cloud-scripts.tgz
> + local md5file=/var/cache/cloud/cloud-scripts-signature
> + local privkey=$PATCH_MOUNT/authorized_keys
> + local shouldpatch=false
> + local cdrom_dev=
> + mkdir -p $PATCH_MOUNT
> +
> + if [ -e /dev/xvdd ]; then
> + cdrom_dev=/dev/xvdd
> + elif [ -e /dev/cdrom ]; then
> + cdrom_dev=/dev/cdrom
> + elif [ -e /dev/cdrom1 ]; then
> + cdrom_dev=/dev/cdrom1
> + elif [ -e /dev/cdrom2 ]; then
> + cdrom_dev=/dev/cdrom2
> + elif [ -e /dev/cdrom3 ]; then
> + cdrom_dev=/dev/cdrom3
> + fi
> + [ -f /var/cache/cloud/authorized_keys ] && privkey=/var/cache/cloud/
> authorized_keys
> +
> + if [ -n "$cdrom_dev" ]; then
> + mount -o ro $cdrom_dev $PATCH_MOUNT
> + [ -f $privkey ] && cp -f $privkey /root/.ssh/ && chmod go-rwx
> /root/.ssh/authorized_keys
> + local oldmd5=
> + [ -f ${md5file} ] && oldmd5=$(cat ${md5file})
> + local newmd5=
> + [ -f ${patchfile} ] && newmd5=$(md5sum ${patchfile} | awk '{print
> $1}')
> +
> + if [ "$oldmd5" != "$newmd5" ] && [ -f ${patchfile} ] && [ "$newmd5" !=
> "" ]
> + then
> + shouldpatch=true
> + log_it "Patching scripts oldmd5=$oldmd5 newmd5=$newmd5"
> + tar xzf $patchfile -C /
> + echo ${newmd5} > ${md5file}
> + else
> + log_it "Scripts up to date oldmd5=$oldmd5 newmd5=$newmd5"
> + fi
> + log_it "Patching cloud service"
> + hyperVisor=$(hypervisor)
> + /opt/cloud/bin/patchsystemvm.sh $PATCH_MOUNT $hyperVisor
> + log_it "Unmounting $PATCH_MOUNT"
> + umount $PATCH_MOUNT
> +
> + # Historical reboot removed due to cloud-early-init now running
> before services started
> +
> + fi
> +
> + if [ -f /mnt/cmdline ]; then
> + cat /mnt/cmdline > /var/cache/cloud/cmdline
> + fi
> + return 0
> +}
> +
> +start() {
> +
> + local hyp=$(hypervisor)
> + [ $? -ne 0 ] && log_it "Failed to detect hypervisor type, bailing out
> of cloud-early-init" && exit 10
> + log_it "Detected that we are running inside $hyp guest."
> + get_boot_params
> + patch
> + if [ "$hyp" == "hyperv" ]; then
> + # eject the systemvm.iso
> + eject
> + fi
> + return 0
> +}
> +
> +case "$1" in
> +start)
> + log_action_begin_msg "Executing cloud-early-init."
> + log_it "Executing cloud-early-init."
> + if start; then
> + log_action_end_msg $?
> + else
> + log_action_end_msg $?
> + fi
> + ;;
> +
> +stop)
> + log_action_begin_msg "Stopping cloud-early-init."
> + log_it "Stopping cloud-early-init."
> + log_action_end_msg 0
> + ;;
> +
> +*)
> + echo "Usage: /etc/init.d/cloud-early-init {start|stop}."
> + exit 1
> + ;;
> +esac
> +
> +# Serialize cloud-early-init and cloud-early-config
> +log_it "Calling cloud-early-config."
> +/etc/init.d/cloud-early-config start
> +
> +exit 0
> diff --git a/systemvm/patches/debian/config/etc/init.d/cloud-passwd-srvr
> b/systemvm/patches/debian/config/etc/init.d/cloud-passwd-srvr
> index 33b0ea310cb..41a1a782dbe 100755
> --- a/systemvm/patches/debian/config/etc/init.d/cloud-passwd-srvr
> +++ b/systemvm/patches/debian/config/etc/init.d/cloud-passwd-srvr
> @@ -1,11 +1,11 @@
> -#!/bin/bash
> +#!/bin/bash
> ### BEGIN INIT INFO
> # Provides: cloud-passwd-srvr
> -# Required-Start: mountkernfs $local_fs cloud-early-config
> iptables-persistent
> +# Required-Start: mountkernfs $local_fs cloud-early-init
> iptables-persistent
> # Required-Stop: $local_fs
> -# Should-Start:
> -# Should-Stop:
> -# Default-Start:
> +# Should-Start:
> +# Should-Stop:
> +# Default-Start:
> # Default-Stop: 0 6
> # Short-Description: Web server that sends passwords to User VMs
> ### END INIT INFO
> @@ -74,7 +74,7 @@ remove_iptables_rules()
> }
>
> start() {
> - [ "$ENABLED" != 0 ] || exit 0
> + [ "$ENABLED" != 0 ] || exit 0
> pid=$(getpid)
> [ "$pid" != "" ] && echo "Password server is already running
> (pid=$pid)" && return 0
> add_iptables_rules
> diff --git a/systemvm/patches/debian/config/etc/init.d/postinit
> b/systemvm/patches/debian/config/etc/init.d/postinit
> index 818959fde3b..9af911fc40a 100755
> --- a/systemvm/patches/debian/config/etc/init.d/postinit
> +++ b/systemvm/patches/debian/config/etc/init.d/postinit
> @@ -1,10 +1,10 @@
> #!/bin/bash -e
> ### BEGIN INIT INFO
> # Provides: postinit
> -# Required-Start: mountkernfs $local_fs cloud-early-config
> +# Required-Start: mountkernfs $local_fs cloud-early-init
> # Required-Stop: $local_fs
> -# Should-Start:
> -# Should-Stop:
> +# Should-Start:
> +# Should-Stop:
> # Default-Start: 2 3 4 5
> # Default-Stop: 0 1 6
> # Short-Description: post-init
> @@ -19,7 +19,7 @@
> # with the License. You may obtain a copy of the License at
> #
> # http://www.apache.org/licenses/LICENSE-2.0
> -#
> +#
> # Unless required by applicable law or agreed to in writing,
> # software distributed under the License is distributed on an
> # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
> @@ -61,7 +61,7 @@ setup_redundant_router() {
> }
>
> start() {
> - case $TYPE in
> + case $TYPE in
> secstorage)
> [ "$NAME" == "" ] && NAME=secstorage
> setup_secstorage;
> @@ -95,7 +95,7 @@ for i in $CMDLINE
> # search for foo=bar pattern and cut out foo
> KEY=$(echo $i | cut -d= -f1)
> VALUE=$(echo $i | cut -d= -f2)
> - case $KEY in
> + case $KEY in
> eth0ip)
> ETH0_IP=$VALUE
> ;;
> @@ -142,10 +142,10 @@ for i in $CMDLINE
> DHCP_RANGE=$(echo $VALUE | tr ':' ',')
> ;;
> bootproto)
> - BOOTPROTO=$VALUE
> + BOOTPROTO=$VALUE
> ;;
> type)
> - TYPE=$VALUE
> + TYPE=$VALUE
> ;;
> redundant_router)
> RROUTER=$VALUE
> diff --git a/systemvm/patches/debian/config/opt/cloud/bin/patchsystemvm.sh
> b/systemvm/patches/debian/config/opt/cloud/bin/patchsystemvm.sh
> index 9222a8c89b7..f5154fff409 100755
> --- a/systemvm/patches/debian/config/opt/cloud/bin/patchsystemvm.sh
> +++ b/systemvm/patches/debian/config/opt/cloud/bin/patchsystemvm.sh
> @@ -17,18 +17,26 @@
> # under the License.
>
> #set -x
> -logfile="/var/log/patchsystemvm.log"
> +logfile="/var/log/cloud.log"
> +
> +log_it() {
> + echo "$(date) patchsystemvm.sh $@" >> $logfile
> +}
> +
> # To use existing console proxy .zip-based package file
> patch_console_proxy() {
> local patchfile=$1
> + log_it "Patching CPVM/SSVM with cloud agent jars from $patchfile"
> rm /usr/local/cloud/systemvm -rf
> mkdir -p /usr/local/cloud/systemvm
> - echo "All" | unzip $patchfile -d /usr/local/cloud/systemvm >$logfile
> 2>&1
> + log_it "Patching /usr/local/cloud/systemvm:"
> + echo "All" | unzip $patchfile -d /usr/local/cloud/systemvm >>$logfile
> 2>&1
> find /usr/local/cloud/systemvm/ -name \*.sh | xargs chmod 555
> return 0
> }
>
> consoleproxy_svcs() {
> + log_it "Configuring console proxy services"
> chkconfig cloud on
> chkconfig postinit on
> chkconfig cloud-passwd-srvr off
> @@ -46,6 +54,7 @@ consoleproxy_svcs() {
> }
>
> secstorage_svcs() {
> + log_it "Configuring SSVM services"
> chkconfig cloud on
> chkconfig postinit on
> chkconfig cloud-passwd-srvr off
> @@ -63,10 +72,11 @@ secstorage_svcs() {
> }
>
> routing_svcs() {
> + log_it "Configuring VR services"
> grep "redundant_router=1" /var/cache/cloud/cmdline > /dev/null
> RROUTER=$?
> chkconfig cloud off
> - chkconfig haproxy on ;
> + chkconfig haproxy on ;
> chkconfig ssh on
> chkconfig nfs-common off
> chkconfig portmap off
> @@ -74,6 +84,7 @@ routing_svcs() {
> echo "cloud nfs-common portmap" > /var/cache/cloud/disabled_svcs
> if [ $RROUTER -eq 0 ]
> then
> + log_it "Configuring redundant VR services"
> chkconfig dnsmasq off
> chkconfig cloud-passwd-srvr off
> chkconfig keepalived on
> @@ -82,6 +93,7 @@ routing_svcs() {
> echo "keepalived conntrackd postinit" >>
> /var/cache/cloud/enabled_svcs
> echo "dnsmasq cloud-passwd-srvr" >> /var/cache/cloud/disabled_svcs
> else
> + log_it "Configuring non-redundant VR services"
> chkconfig dnsmasq on
> chkconfig cloud-passwd-srvr on
> chkconfig keepalived off
> @@ -92,9 +104,10 @@ routing_svcs() {
> }
>
> dhcpsrvr_svcs() {
> + log_it "Configuring DHCP services"
> chkconfig cloud off
> - chkconfig cloud-passwd-srvr on ;
> - chkconfig haproxy off ;
> + chkconfig cloud-passwd-srvr on ;
> + chkconfig haproxy off ;
> chkconfig dnsmasq on
> chkconfig ssh on
> chkconfig nfs-common off
> @@ -106,8 +119,9 @@ dhcpsrvr_svcs() {
> }
>
> elbvm_svcs() {
> + log_it "Configuring external load balancing VM services"
> chkconfig cloud off
> - chkconfig haproxy on ;
> + chkconfig haproxy on ;
> chkconfig ssh on
> chkconfig nfs-common off
> chkconfig portmap off
> @@ -117,10 +131,10 @@ elbvm_svcs() {
> echo "cloud dnsmasq cloud-passwd-srvr apache2 nfs-common portmap" >
> /var/cache/cloud/disabled_svcs
> }
>
> -
> ilbvm_svcs() {
> + log_it "Configuring internal load balancing VM services"
> chkconfig cloud off
> - chkconfig haproxy on ;
> + chkconfig haproxy on ;
> chkconfig ssh on
> chkconfig nfs-common off
> chkconfig portmap off
> @@ -131,6 +145,7 @@ ilbvm_svcs() {
> }
>
> enable_pcihotplug() {
> + log_it "Configuring PCI hot plug"
> sed -i -e "/acpiphp/d" /etc/modules
> sed -i -e "/pci_hotplug/d" /etc/modules
> echo acpiphp >> /etc/modules
> @@ -138,6 +153,7 @@ enable_pcihotplug() {
> }
>
> enable_serial_console() {
> + log_it "Enabling serial console"
> sed -i -e "/^serial.*/d" /boot/grub/grub.conf
> sed -i -e "/^terminal.*/d" /boot/grub/grub.conf
> sed -i -e "/^default.*/a\serial --unit=0 --speed=115200 --parity=no
> --stop=1" /boot/grub/grub.conf
> @@ -147,8 +163,11 @@ enable_serial_console() {
> sed -i -e "/6:23:respawn/a\s0:2345:respawn:/sbin/getty -L 115200
> ttyS0 vt102" /etc/inittab
> }
>
> +log_it "Starting $0 $*"
>
> CMDLINE=$(cat /var/cache/cloud/cmdline)
> +log_it "CMDLINE passed to system VM patch process: $CMDLINE"
> +
> TYPE="router"
> PATCH_MOUNT=$1
> Hypervisor=$2
> @@ -169,10 +188,11 @@ done
>
> if [ "$TYPE" == "consoleproxy" ] || [ "$TYPE" == "secstorage" ] && [ -f
> ${PATCH_MOUNT}/systemvm.zip ]
> then
> + log_it "Patching ${TYPE}."
> patch_console_proxy ${PATCH_MOUNT}/systemvm.zip
> if [ $? -gt 0 ]
> then
> - printf "Failed to apply patch systemvm\n" >$logfile
> + log_it "Failed to apply patch systemvm"
> exit 5
> fi
> fi
> @@ -183,26 +203,29 @@ echo "" > /root/.ssh/known_hosts
>
> if [ "$Hypervisor" == "kvm" ]
> then
> + log_it "Enabling PCI hotplug and serial console for KVM"
> enable_pcihotplug
> enable_serial_console
> fi
>
> if [ "$TYPE" == "router" ] || [ "$TYPE" == "vpcrouter" ]
> then
> + log_it "Updating ${TYPE} services"
> routing_svcs
> if [ $? -gt 0 ]
> then
> - printf "Failed to execute routing_svcs\n" >$logfile
> + log_it "Failed to execute routing_svcs"
> exit 6
> fi
> fi
>
> if [ "$TYPE" == "dhcpsrvr" ]
> then
> + log_it "Updating ${TYPE} services"
> dhcpsrvr_svcs
> if [ $? -gt 0 ]
> then
> - printf "Failed to execute dhcpsrvr_svcs\n" >$logfile
> + log_it "Failed to execute dhcpsrvr_svcs"
> exit 6
> fi
> fi
> @@ -210,40 +233,44 @@ fi
>
> if [ "$TYPE" == "consoleproxy" ]
> then
> + log_it "Updating ${TYPE} services"
> consoleproxy_svcs
> if [ $? -gt 0 ]
> then
> - printf "Failed to execute consoleproxy_svcs\n" >$logfile
> + log_it "Failed to execute consoleproxy_svcs"
> exit 7
> fi
> fi
>
> if [ "$TYPE" == "secstorage" ]
> then
> + log_it "Updating ${TYPE} services"
> secstorage_svcs
> if [ $? -gt 0 ]
> then
> - printf "Failed to execute secstorage_svcs\n" >$logfile
> + log_it "Failed to execute secstorage_svcs"
> exit 8
> fi
> fi
>
> if [ "$TYPE" == "elbvm" ]
> then
> + log_it "Updating ${TYPE} services"
> elbvm_svcs
> if [ $? -gt 0 ]
> then
> - printf "Failed to execute elbvm svcs\n" >$logfile
> + log_it "Failed to execute elbvm svcs"
> exit 9
> fi
> fi
>
> if [ "$TYPE" == "ilbvm" ]
> then
> + log_it "Updating ${TYPE} services"
> ilbvm_svcs
> if [ $? -gt 0 ]
> then
> - printf "Failed to execute ilbvm svcs\n" >$logfile
> + log_it "Failed to execute ilbvm svcs"
> exit 9
> fi
> fi
> diff --git a/tools/appliance/definitions/systemvmtemplate/configure_systemvm_services.sh
> b/tools/appliance/definitions/systemvmtemplate/configure_
> systemvm_services.sh
> index 60082e380a0..477e140e16b 100644
> --- a/tools/appliance/definitions/systemvmtemplate/configure_
> systemvm_services.sh
> +++ b/tools/appliance/definitions/systemvmtemplate/configure_
> systemvm_services.sh
> @@ -36,11 +36,14 @@ function install_cloud_scripts() {
> rsync -av ./cloud_scripts/ /
> chmod +x /opt/cloud/bin/* \
> /root/{clearUsageRules.sh,reconfigLB.sh,monitorServices.py} \
> - /etc/init.d/{cloud,cloud-early-config,cloud-passwd-srvr,postinit} \
> + /etc/init.d/{cloud,cloud-early-init,cloud-early-config,cloud-passwd-srvr,postinit}
> \
> /etc/profile.d/cloud.sh
>
> - chkconfig --add cloud-early-config
> - chkconfig cloud-early-config on
> + chkconfig --add cloud-early-init
> + chkconfig cloud-early-init on
> + # Testing serialized cloud-early-init and cloud-early-config
> + # chkconfig --add cloud-early-config
> + # chkconfig cloud-early-config on
> chkconfig --add cloud-passwd-srvr
> chkconfig cloud-passwd-srvr off
> chkconfig --add cloud
>
>
>
>
> ----------------------------------------------------------------
> This is an automated message from the Apache Git Service.
> To respond to the message, please log on GitHub and use the
> URL above to go to the specific comment.
>
> For queries about this service, please contact Infrastructure at:
> users@infra.apache.org
>
>
> With regards,
> Apache Git Services
>