Fixed fuyaql after spliting common and node part of deployment info
Change-Id: I98055b786eacda504df0c99f974ee0aba37a3b4d Closes-Bug: 1626965
This commit is contained in:
parent
0579f36876
commit
c11cdf6730
|
@ -31,8 +31,10 @@ from nailgun.fuyaql import completion
|
|||
from nailgun.logger import logger
|
||||
from nailgun import objects
|
||||
from nailgun.orchestrator import deployment_serializers
|
||||
from nailgun.utils import uniondict
|
||||
from nailgun import yaql_ext
|
||||
|
||||
|
||||
logger.disabled = True
|
||||
|
||||
|
||||
|
@ -46,7 +48,7 @@ class FuYaqlController(object):
|
|||
self._tasks = [None, None]
|
||||
self._infos = [None, None]
|
||||
self._yaql_context = yaql_ext.create_context(
|
||||
add_serializers=True, add_datadiff=True
|
||||
add_serializers=True, add_datadiff=True, add_extensions=True
|
||||
)
|
||||
self._yaql_engine = yaql_ext.create_engine()
|
||||
|
||||
|
@ -161,14 +163,22 @@ class FuYaqlController(object):
|
|||
def _set_info(self, state, info):
|
||||
if state == self.EXPECTED:
|
||||
self._node_id = None
|
||||
if info is None:
|
||||
serialized = deployment_serializers.serialize_for_lcm(
|
||||
if not info:
|
||||
info = deployment_serializers.serialize_for_lcm(
|
||||
self._cluster,
|
||||
objects.Cluster.get_nodes_not_for_deletion(self._cluster)
|
||||
)
|
||||
info = {node['uid']: node for node in serialized}
|
||||
# TODO(bgaifullin) serializer should return nodes as dict
|
||||
info['nodes'] = {n['uid']: n for n in info['nodes']}
|
||||
|
||||
self._infos[state] = info or {}
|
||||
if info:
|
||||
common = info['common']
|
||||
nodes = info['nodes']
|
||||
info = {n: uniondict.UnionDict(common, nodes[n]) for n in nodes}
|
||||
else:
|
||||
info = {}
|
||||
|
||||
self._infos[state] = info
|
||||
|
||||
def _get_info(self, state):
|
||||
return self._infos[state]
|
||||
|
@ -232,7 +242,7 @@ class FuyaqlInterpreter(object):
|
|||
if self._check_cluster():
|
||||
self.print_list(
|
||||
('uid', 'status', 'roles'), self.controller.get_nodes(),
|
||||
lambda x: node_ids.index(x['uid'])
|
||||
lambda x: node_ids.index(x.get('uid'))
|
||||
)
|
||||
|
||||
def show_cluster(self):
|
||||
|
|
|
@ -192,19 +192,28 @@ class TestFuyaqlController(base.BaseUnitTest):
|
|||
self.controller._cluster = mock.MagicMock()
|
||||
self.controller._node_id = 7
|
||||
|
||||
self.controller._set_info(self.controller.CURRENT, 'info')
|
||||
self.assertEqual(self.controller._infos[self.controller.CURRENT],
|
||||
'info')
|
||||
self.controller._set_info(
|
||||
self.controller.CURRENT, {'common': {}, 'nodes': {'1': {'v': 1}}}
|
||||
)
|
||||
self.assertEqual(
|
||||
{'1': {'v': 1}}, self.controller._infos[self.controller.CURRENT],
|
||||
)
|
||||
self.assertEqual(self.controller._node_id, 7)
|
||||
|
||||
self.controller._set_info(self.controller.CURRENT, None)
|
||||
self.assertEqual(self.controller._infos[self.controller.CURRENT], {})
|
||||
self.assertEqual(self.controller._node_id, 7)
|
||||
|
||||
serialized.return_value = list(self.new_context.values())
|
||||
self.controller._set_info(self.controller.EXPECTED, 'exp_info')
|
||||
self.assertEqual(self.controller._infos[self.controller.EXPECTED],
|
||||
'exp_info')
|
||||
serialized.return_value = {
|
||||
'common': {}, 'nodes': self.new_context.values()
|
||||
}
|
||||
self.controller._set_info(
|
||||
self.controller.EXPECTED, {'common': {'a': 2}, 'nodes': {'1': {}}}
|
||||
)
|
||||
self.assertEqual(
|
||||
{'1': {'a': 2}},
|
||||
self.controller._infos[self.controller.EXPECTED],
|
||||
)
|
||||
self.assertEqual(self.controller._node_id, None)
|
||||
|
||||
self.controller._node_id = 8
|
||||
|
|
Loading…
Reference in New Issue