Reports enabled-root for restored instance

Reasons:
- This condition got missed in one of the earlier patchsets.
- When a root-enabled instance's backup is restored, it does not
  reports to service database that root was enabled for
  restored instance.

Changes:
- report_root method added in conductor.
- Reports, if root is enabled for restored instance, through conductor.

Change-Id: I186398e6651421cecb7169e4eec1d6a8a166ee97
Closes-Bug: #1277745
This commit is contained in:
SushilKM 2014-05-28 15:03:45 +00:00
parent 71446a6f17
commit b0b92bf171
4 changed files with 21 additions and 0 deletions

View File

@ -51,3 +51,10 @@ class API(proxy.RpcProxy):
backup_id=backup_id, backup_id=backup_id,
sent=sent, sent=sent,
**backup_fields)) **backup_fields))
def report_root(self, instance_id, user):
LOG.debug("Making async call to cast report_root for instance: %s"
% instance_id)
self.cast(self.context, self.make_msg("report_root",
instance_id=instance_id,
user=user))

View File

@ -17,6 +17,7 @@ from trove.common import cfg
from trove.common import exception from trove.common import exception
from trove.common.instance import ServiceStatus from trove.common.instance import ServiceStatus
from trove.conductor.models import LastSeen from trove.conductor.models import LastSeen
from trove.extensions.mysql import models as mysql_models
from trove.instance import models as t_models from trove.instance import models as t_models
from trove.openstack.common import log as logging from trove.openstack.common import log as logging
from trove.openstack.common import periodic_task from trove.openstack.common import periodic_task
@ -128,3 +129,6 @@ class Manager(periodic_task.PeriodicTasks):
LOG.debug("Backup %(key)s: %(value)s" % fields) LOG.debug("Backup %(key)s: %(value)s" % fields)
setattr(backup, k, v) setattr(backup, k, v)
backup.save() backup.save()
def report_root(self, context, instance_id, user):
mysql_models.RootHistory.create(context, instance_id, user)

View File

@ -138,6 +138,7 @@ class Manager(periodic_task.PeriodicTasks):
MySqlAdmin().enable_root(root_password) MySqlAdmin().enable_root(root_password)
elif enable_root_on_restore: elif enable_root_on_restore:
app.secure_root(secure_remote_root=False) app.secure_root(secure_remote_root=False)
MySqlAppStatus.get().report_root('root')
else: else:
app.secure_root(secure_remote_root=True) app.secure_root(secure_remote_root=True)

View File

@ -154,3 +154,12 @@ class BaseDbStatus(object):
return True return True
LOG.error("Time out while waiting for DB status to change!") LOG.error("Time out while waiting for DB status to change!")
return False return False
def report_root(self, user):
"""Use conductor to update the root-enable status."""
LOG.debug("Casting report_root message to conductor.")
ctxt = context.TroveContext(user=CONF.nova_proxy_admin_user,
auth_token=CONF.nova_proxy_admin_pass)
conductor_api.API(ctxt).report_root(CONF.guest_id, user)
LOG.debug("Successfully cast report_root.")