From c8755c58ea5314cd42fb064640467e2422acf426 Mon Sep 17 00:00:00 2001 From: Zhenguo Niu Date: Fri, 27 Oct 2017 09:56:15 +0800 Subject: [PATCH] Add port group mode to manageable servers Mode of the port group is useful when listing manageable servers. Change-Id: I5a13aa953e40d49f2d136c7d80de11975b796548 Closes-Bug: #1727895 --- .../manageable-servers-list-resp.json | 1 + mogan/baremetal/ironic/driver.py | 37 ++++++++++++------- 2 files changed, 24 insertions(+), 14 deletions(-) diff --git a/api-ref/source/v1/samples/manageable_servers/manageable-servers-list-resp.json b/api-ref/source/v1/samples/manageable_servers/manageable-servers-list-resp.json index b754613c..2bd7bff4 100644 --- a/api-ref/source/v1/samples/manageable_servers/manageable-servers-list-resp.json +++ b/api-ref/source/v1/samples/manageable_servers/manageable-servers-list-resp.json @@ -17,6 +17,7 @@ { "address": "a4:dc:be:0e:82:a6", "uuid": "1ec01153-685a-49b5-a6d3-45a4e7dddf54", + "mode": "active-backup", "neutron_port_id": "a9b94592-1d8e-46bb-836b-c7ba935b0137" } ], diff --git a/mogan/baremetal/ironic/driver.py b/mogan/baremetal/ironic/driver.py index fd9a6ea7..50341814 100644 --- a/mogan/baremetal/ironic/driver.py +++ b/mogan/baremetal/ironic/driver.py @@ -128,18 +128,27 @@ class IronicDriver(base_driver.BaseEngineDriver): return dic - def _port_or_group_resource(self, port_or_pg): - """Helper method to create resource dict from port or portgroup + def _port_resource(self, port): + """Helper method to create resource dict from port stats.""" - stats. - - """ - - neutron_port_id = (port_or_pg.internal_info.get(TENANT_VIF_KEY) or - port_or_pg.extra.get(VIF_KEY)) + neutron_port_id = (port.internal_info.get(TENANT_VIF_KEY) or + port.extra.get(VIF_KEY)) dic = { - 'address': port_or_pg.address, - 'uuid': port_or_pg.uuid, + 'address': port.address, + 'uuid': port.uuid, + 'neutron_port_id': neutron_port_id, + } + return dic + + def _portgroup_resource(self, portgroup): + """Helper method to create resource dict from portgroup stats. """ + + neutron_port_id = (portgroup.internal_info.get(TENANT_VIF_KEY) or + portgroup.extra.get(VIF_KEY)) + dic = { + 'address': portgroup.address, + 'uuid': portgroup.uuid, + 'mode': portgroup.mode, 'neutron_port_id': neutron_port_id, } return dic @@ -465,11 +474,11 @@ class IronicDriver(base_driver.BaseEngineDriver): if node.resource_class is None: continue # Add ports to the associated node - node.ports = [self._port_or_group_resource(port) + node.ports = [self._port_resource(port) for port in port_list if node.uuid == port.node_uuid] # Add portgroups to the associated node - node.portgroups = [self._port_or_group_resource(portgroup) + node.portgroups = [self._portgroup_resource(portgroup) for portgroup in portgroup_list if node.uuid == portgroup.node_uuid] node_resources[node.uuid] = self._node_resource(node) @@ -815,11 +824,11 @@ class IronicDriver(base_driver.BaseEngineDriver): portgroup_list = self.ironicclient.call("portgroup.list", **params) # Add ports to the associated node - node.ports = [self._port_or_group_resource(port) + node.ports = [self._port_resource(port) for port in port_list if node.uuid == port.node_uuid] # Add portgroups to the associated node - node.portgroups = [self._port_or_group_resource(portgroup) + node.portgroups = [self._portgroup_resource(portgroup) for portgroup in portgroup_list if node.uuid == portgroup.node_uuid] node.power_state = map_power_state(node.power_state)