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,
sent=sent,
**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.instance import ServiceStatus
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.openstack.common import log as logging
from trove.openstack.common import periodic_task
@ -128,3 +129,6 @@ class Manager(periodic_task.PeriodicTasks):
LOG.debug("Backup %(key)s: %(value)s" % fields)
setattr(backup, k, v)
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)
elif enable_root_on_restore:
app.secure_root(secure_remote_root=False)
MySqlAppStatus.get().report_root('root')
else:
app.secure_root(secure_remote_root=True)

View File

@ -154,3 +154,12 @@ class BaseDbStatus(object):
return True
LOG.error("Time out while waiting for DB status to change!")
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.")