configure after respawn

Change-Id: Idbc302119440081c48e7e7893220cad365efa4fc
This commit is contained in:
Isaku Yamahata 2015-05-19 23:22:48 -07:00
parent 40746a7174
commit 1f2cb05d67
2 changed files with 11 additions and 6 deletions

View File

@ -235,6 +235,8 @@ class RespawnHeat(FailurePolicy):
device_id = device_dict['id']
LOG.error(_('device %s dead'), device_id)
attributes = device_dict['attributes']
config = attributes.get('config')
LOG.debug(_('device config %s dead'), config)
failure_count = int(attributes.get('failure_count', '0')) + 1
failure_count_str = str(failure_count)
attributes['failure_count'] = failure_count_str
@ -285,6 +287,8 @@ class RespawnHeat(FailurePolicy):
plugin.rename_device_id(context, new_device_id, device_id)
plugin.delete_device(context, dead_device_id)
new_device_dict['id'] = device_id
if config:
new_device_dict.setdefault('attributes', {})['config'] = config
plugin.config_device(context, new_device_dict)
plugin.add_device_to_monitor(new_device_dict)

View File

@ -19,7 +19,7 @@
# under the License.
#
# @author: Isaku Yamahata, Intel Corporation.
import copy
import eventlet
import inspect
@ -29,6 +29,7 @@ from sqlalchemy.orm import exc as orm_exc
from tacker.api.v1 import attributes
from tacker.common import driver_manager
from tacker.common import topics
from tacker import context as t_context
from tacker.db.vm import proxy_db # noqa
from tacker.db.vm import vm_db
from tacker.extensions import servicevm
@ -218,16 +219,16 @@ class ServiceVMPlugin(vm_db.ServiceResourcePluginDb, ServiceVMMgmtMixin):
device_id = device_dict['id']
dev_attrs = device_dict['attributes']
if dev_attrs.get('monitoring_policy') == 'ping':
device_dict_copy = copy.deepcopy(device_dict)
def down_cb(hosting_device_):
if self._mark_device_dead(device_id):
self._device_status.mark_dead(device_id)
device_dict_ = self.get_device(
t_context.get_admin_context(), device_id)
failure_cls = monitor.FailurePolicy.get_policy(
device_dict_copy['attributes'].get('failure_policy'),
device_dict_copy)
device_dict_['attributes'].get('failure_policy'),
device_dict_)
if failure_cls:
failure_cls.on_failure(self, device_dict_copy)
failure_cls.on_failure(self, device_dict_)
hosting_device = self._device_status.to_hosting_device(
device_dict, down_cb)