Merge "Don't log warning for missing resource_versions"
This commit is contained in:
commit
21a2dbc25d
@ -220,12 +220,15 @@ class AgentDbMixin(ext_agent.AgentPluginBase, AgentAvailabilityZoneMixin):
|
|||||||
def get_configuration_dict(self, agent_db):
|
def get_configuration_dict(self, agent_db):
|
||||||
return self._get_dict(agent_db, 'configurations')
|
return self._get_dict(agent_db, 'configurations')
|
||||||
|
|
||||||
def _get_dict(self, agent_db, dict_name):
|
def _get_dict(self, agent_db, dict_name, ignore_missing=False):
|
||||||
|
json_value = None
|
||||||
try:
|
try:
|
||||||
conf = jsonutils.loads(getattr(agent_db, dict_name))
|
json_value = getattr(agent_db, dict_name)
|
||||||
|
conf = jsonutils.loads(json_value)
|
||||||
except Exception:
|
except Exception:
|
||||||
msg = _LW('Dictionary %(dict_name)s for agent %(agent_type)s on '
|
if json_value or not ignore_missing:
|
||||||
'host %(host)s is invalid.')
|
msg = _LW('Dictionary %(dict_name)s for agent %(agent_type)s '
|
||||||
|
'on host %(host)s is invalid.')
|
||||||
LOG.warning(msg, {'dict_name': dict_name,
|
LOG.warning(msg, {'dict_name': dict_name,
|
||||||
'agent_type': agent_db.agent_type,
|
'agent_type': agent_db.agent_type,
|
||||||
'host': agent_db.host})
|
'host': agent_db.host})
|
||||||
@ -249,7 +252,8 @@ class AgentDbMixin(ext_agent.AgentPluginBase, AgentAvailabilityZoneMixin):
|
|||||||
if k not in ['alive', 'configurations'])
|
if k not in ['alive', 'configurations'])
|
||||||
res['alive'] = not self.is_agent_down(res['heartbeat_timestamp'])
|
res['alive'] = not self.is_agent_down(res['heartbeat_timestamp'])
|
||||||
res['configurations'] = self._get_dict(agent, 'configurations')
|
res['configurations'] = self._get_dict(agent, 'configurations')
|
||||||
res['resource_versions'] = self._get_dict(agent, 'resource_versions')
|
res['resource_versions'] = self._get_dict(agent, 'resource_versions',
|
||||||
|
ignore_missing=True)
|
||||||
res['availability_zone'] = agent['availability_zone']
|
res['availability_zone'] = agent['availability_zone']
|
||||||
return self._fields(res, fields)
|
return self._fields(res, fields)
|
||||||
|
|
||||||
@ -371,7 +375,7 @@ class AgentDbMixin(ext_agent.AgentPluginBase, AgentAvailabilityZoneMixin):
|
|||||||
# _update_local_agent_resource_versions() will call
|
# _update_local_agent_resource_versions() will call
|
||||||
# version_manager and bring it up to date
|
# version_manager and bring it up to date
|
||||||
agent_state['resource_versions'] = self._get_dict(
|
agent_state['resource_versions'] = self._get_dict(
|
||||||
agent_db, 'resource_versions')
|
agent_db, 'resource_versions', ignore_missing=True)
|
||||||
res['heartbeat_timestamp'] = current_time
|
res['heartbeat_timestamp'] = current_time
|
||||||
if agent_state.get('start_flag'):
|
if agent_state.get('start_flag'):
|
||||||
res['started_at'] = current_time
|
res['started_at'] = current_time
|
||||||
|
@ -196,12 +196,33 @@ class TestAgentsDbMixin(TestAgentsDbBase):
|
|||||||
" DHCP Agent 2015-05-06 22:40:40.432295 some.node"}
|
" DHCP Agent 2015-05-06 22:40:40.432295 some.node"}
|
||||||
)
|
)
|
||||||
|
|
||||||
def test_get_dict(self):
|
def test__get_dict(self):
|
||||||
db_obj = mock.Mock(conf1='{"test": "1234"}')
|
db_obj = mock.Mock(conf1='{"test": "1234"}')
|
||||||
conf1 = self.plugin._get_dict(db_obj, 'conf1')
|
conf1 = self.plugin._get_dict(db_obj, 'conf1')
|
||||||
self.assertIn('test', conf1)
|
self.assertIn('test', conf1)
|
||||||
self.assertEqual("1234", conf1['test'])
|
self.assertEqual("1234", conf1['test'])
|
||||||
|
|
||||||
|
def test__get_dict_missing(self):
|
||||||
|
with mock.patch.object(agents_db.LOG, 'warning') as warn:
|
||||||
|
db_obj = mock.Mock(spec=['agent_type', 'host'])
|
||||||
|
self.plugin._get_dict(db_obj, 'missing_conf')
|
||||||
|
self.assertTrue(warn.called)
|
||||||
|
|
||||||
|
def test__get_dict_ignore_missing(self):
|
||||||
|
with mock.patch.object(agents_db.LOG, 'warning') as warn:
|
||||||
|
db_obj = mock.Mock(spec=['agent_type', 'host'])
|
||||||
|
missing_conf = self.plugin._get_dict(db_obj, 'missing_conf',
|
||||||
|
ignore_missing=True)
|
||||||
|
self.assertEqual({}, missing_conf)
|
||||||
|
warn.assert_not_called()
|
||||||
|
|
||||||
|
def test__get_dict_broken(self):
|
||||||
|
with mock.patch.object(agents_db.LOG, 'warning') as warn:
|
||||||
|
db_obj = mock.Mock(conf1='{"test": BROKEN')
|
||||||
|
conf1 = self.plugin._get_dict(db_obj, 'conf1', ignore_missing=True)
|
||||||
|
self.assertEqual({}, conf1)
|
||||||
|
self.assertTrue(warn.called)
|
||||||
|
|
||||||
def get_configurations_dict(self):
|
def get_configurations_dict(self):
|
||||||
db_obj = mock.Mock(configurations='{"cfg1": "val1"}')
|
db_obj = mock.Mock(configurations='{"cfg1": "val1"}')
|
||||||
cfg = self.plugin.get_configuration_dict(db_obj)
|
cfg = self.plugin.get_configuration_dict(db_obj)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user