Merge pull request #1109 from remibergsma/fix-CLOUDSTACK-9077

CLOUDSTACK-9077 Fix injectkeys.sh to work on CentOS7Fix regression from commit 3381154fafb7fa4f0a61d538f7c2550e48247787

The error seen on CentOS 7:

```
2015-11-20 21:51:16,161 DEBUG [c.c.s.ConfigurationServerImpl] (localhost-startStop-1:null) No loop device found, skipping ssh key insertion in systemvm.iso
```

Instead of detecting `/dev/loop0` this checks if we run inside Docker.

Tested on CentOS 7 and that now works again as expected.

```
2015-11-23 16:20:16,777 DEBUG [c.c.s.ConfigurationServerImpl] (localhost-startStop-1:null) Executing: /bin/bash /var/lib/tomcat/webapps/client/WEB-INF/classes/scripts/vm/systemvm/injectkeys.sh /home/cloud/.ssh/id_rsa.pub /home/cl
oud/.ssh/id_rsa /var/lib/tomcat/webapps/client/WEB-INF/classes/vms/systemvm.iso
2015-11-23 16:20:16,821 DEBUG [c.c.s.ConfigurationServerImpl] (localhost-startStop-1:null) Execution is successful.
2015-11-23 16:20:16,827 INFO  [c.c.s.ConfigurationServerImpl] (localhost-startStop-1:null) Injected public and private keys into systemvm iso with result : null
```

Pinging @pdion891 to have a look.

* pr/1109:
  CLOUDSTACK-9077 Fix injectkeys.sh to work on CentOS7

Signed-off-by: Remi Bergsma <github@remi.nl>
This commit is contained in:
Remi Bergsma 2015-11-27 20:05:11 +01:00
commit 92913a154c

View File

@ -85,14 +85,19 @@ systemvmpath=$3
command -v mkisofs > /dev/null || (echo "$(basename $0): mkisofs not found, please install or ensure PATH is accurate" ; exit 4) command -v mkisofs > /dev/null || (echo "$(basename $0): mkisofs not found, please install or ensure PATH is accurate" ; exit 4)
# if running into Docker as unprivileges, skip ssh verification as iso cannot be mounted. # if running into Docker as unprivileges, skip ssh verification as iso cannot be mounted due to missing loop device.
if [ -e /dev/loop0 ]; then if [ -f /.dockerinit ]; then
if [ -e /dev/loop0 ]; then
# it's a docker instance with privileges.
inject_into_iso systemvm.iso $newpubkey
[ $? -ne 0 ] && exit 5
copy_priv_key $newprivkey
else
# this mean it's a docker instance, ssh key cannot be verify.
echo "We run inside Docker, skipping ssh key insertion in systemvm.iso"
fi
else
inject_into_iso systemvm.iso $newpubkey inject_into_iso systemvm.iso $newpubkey
[ $? -ne 0 ] && exit 5 [ $? -ne 0 ] && exit 5
copy_priv_key $newprivkey copy_priv_key $newprivkey
else
# this mean it's a docker instance, ssh key cannot be verify.
echo "No loop device found, skipping ssh key insertion in systemvm.iso"
fi fi
exit $?