Implement watcher datamodel list in watcher-decision-engine

1. Add datamodel list endpoint and rpc process.
2. Add datamodel list parased and return.
3. Add related unittest.

Partially Implements:blueprint show-datamodel-api

Change-Id: I758b7ca2bc3d8d596d3457277744336c6629bc4e
This commit is contained in:
chenke
2019-08-16 16:59:48 +08:00
parent d55bb1fa95
commit 49fba60ecd
7 changed files with 174 additions and 3 deletions

View File

@@ -229,6 +229,24 @@ class ModelRoot(nx.DiGraph, base.Model):
return etree.tostring(root, pretty_print=True).decode('utf-8')
def to_list(self):
ret_list = []
for cn in sorted(self.get_all_compute_nodes().values(),
key=lambda cn: cn.uuid):
in_dict = {}
for field in cn.fields:
new_name = "node_"+str(field)
in_dict[new_name] = cn[field]
node_instances = self.get_node_instances(cn)
for instance in sorted(node_instances, key=lambda x: x.uuid):
for field in instance.fields:
new_name = "server_"+str(field)
in_dict[new_name] = instance[field]
if in_dict != {}:
deep_in_dict = in_dict.copy()
ret_list.append(deep_in_dict)
return ret_list
@classmethod
def from_xml(cls, data):
model = cls()