Guestagent prepare fails when trying to install the mysql package if package is not installed in image
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
OpenStack DBaaS (Trove) |
Fix Released
|
High
|
Nikhil Manchanda |
Bug Description
When using an image with no mysql installed, the guest agent prepare() installs it. However, just shortly after installing it, it fails executing a external command with root privilege.
Repro:
1- Create an image with no mysql server package installed.
2- Create a trove instance
Expected:
Prepare call to install the mysql package and succeed. Instance in ACTIVE state.
Actual:
Prepare call fails. The package is installed but it fails to execute commands with root privilege.
Here is the exception:
2014-11-14 01:57:59.553 ERROR trove.openstack
91829e3b89ef9d] Exception during message handling
2014-11-14 01:57:59.553 TRACE trove.openstack
2014-11-14 01:57:59.553 TRACE trove.openstack
2014-11-14 01:57:59.553 TRACE trove.openstack
2014-11-14 01:57:59.553 TRACE trove.openstack
2014-11-14 01:57:59.553 TRACE trove.openstack
2014-11-14 01:57:59.553 TRACE trove.openstack
2014-11-14 01:57:59.553 TRACE trove.openstack
2014-11-14 01:57:59.553 TRACE trove.openstack
_needed
2014-11-14 01:57:59.553 TRACE trove.openstack
2014-11-14 01:57:59.553 TRACE trove.openstack
2014-11-14 01:57:59.553 TRACE trove.openstack
2014-11-14 01:57:59.553 TRACE trove.openstack
2014-11-14 01:57:59.553 TRACE trove.openstack
2014-11-14 01:57:59.553 TRACE trove.openstack
2014-11-14 01:57:59.553 TRACE trove.openstack
2014-11-14 01:57:59.553 TRACE trove.openstack
2014-11-14 01:57:59.553 TRACE trove.openstack
2014-11-14 01:57:59.553 TRACE trove.openstack
2014-11-14 01:57:59.553 TRACE trove.openstack
2014-11-14 01:57:59.553 TRACE trove.openstack
ame|#gid] [-p prompt] [-u user\n name|#uid]\nusage: sudo -l[l] [-AknS] [-D level] [-g groupname|#gid] [-p prompt] [-U user\n name] [-u user name|#uid] [-g
groupname|#gid] [command]\nusage: sudo [-AbEHknPS] [-C fd] [-D level] [-g groupname|#gid] [-p prompt] [-u\n user name|#uid] [-g groupname|#gid] [VAR=value] [-i|-s]
[<command>]\nusage: sudo -e [-AknS] [-C fd] [-D level] [-g groupname|#gid] [-p prompt] [-u\n user name|#uid] file ...\n'
2014-11-14 01:57:59.553 TRACE trove.openstack
description: | updated |
Changed in trove: | |
status: | Confirmed → Triaged |
milestone: | kilo-1 → kilo-2 |
Changed in trove: | |
milestone: | kilo-2 → kilo-3 |
Changed in trove: | |
assignee: | Sushil Kumar (sushil-kumar2) → Nikhil Manchanda (slicknik) |
Changed in trove: | |
status: | Fix Committed → Fix Released |
Changed in trove: | |
milestone: | kilo-3 → 2015.1.0 |
It seems like package selection is broken. /github. com/openstack/ trove/blob/ master/ trove/guestagen t/pkg.py# L266
https:/
Not quite sure that given exec is correct. I'd say that currect exec is a set of two commands and each of them should be executed with sudo privileges.
I assume that next fix would work:
sudo debconf- set-selections /tmp/tmpWvZslb && sudo dpkg --configure -a
Code should look like: "debconf- set-selections %s"
% fname, run_as_root=True, root_helper="sudo",
shell= True)
utils.execute(
utils.execute("dpkg --configure -a", run_as_root=True, root_helper="sudo",
shell= True)
Also taking into account such problems i strongly suggest to wrap this command into try:except block to give to guest properly way to define instance status (even if it'll be failed).