Github user wilderrodrigues commented on the pull request:
https://github.com/apache/cloudstack/pull/959#issuecomment-149808138
@karuturi @remibergsma
In the previous PR it was mentioned that looping 30 times would probably be
enough to get the configuration done and also get rid of the infinite loop. I
looked at the code and did not find any sleep or any sort of wait, so looping
30 times will go quite fast:
The block inside the for loop would be this one:
```
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 < /dev/vport0p1
# 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
```
If my assumption is right, about the 30 times loop, I would suggest to do
it in a different way. For example:
```
local factor=2
local progress=1
for i in {1..5}
do
#block mentioned above
sleep ${progress}
progress=$[ progress * factor]
done
```
In a worst case scenario we would wait 16 seconds before then leave the for
loop.
What do you think?
Cheers,
Wilder
---
If your project is set up for it, you can reply to this email and have your
reply appear on GitHub as well. If your project does not have this feature
enabled and wishes so, or if the feature is enabled but not working, please
contact infrastructure at [email protected] or file a JIRA ticket
with INFRA.
---