Merge "metalsmith list handle missing port"

This commit is contained in:
Zuul 2022-06-23 23:50:42 +00:00 committed by Gerrit Code Review
commit 4f3b968844
2 changed files with 25 additions and 4 deletions

View File

@ -14,10 +14,15 @@
# limitations under the License.
import enum
import logging
from openstack import exceptions as os_exc
from metalsmith import _utils
LOG = logging.getLogger(__name__)
_PROGRESS_STATES = frozenset(['deploying', 'wait call-back',
'deploy complete'])
_ACTIVE_STATES = frozenset(['active'])
@ -117,10 +122,13 @@ class Instance(object):
result = []
vifs = self._connection.baremetal.list_node_vifs(self.node)
for vif in vifs:
port = self._connection.network.get_port(vif)
port.network = self._connection.network.get_network(
port.network_id)
result.append(port)
try:
port = self._connection.network.get_port(vif)
port.network = self._connection.network.get_network(
port.network_id)
result.append(port)
except os_exc.ResourceNotFound:
LOG.warning('vif has missing port: %s', vif)
return result
@property

View File

@ -15,6 +15,8 @@
from unittest import mock
from openstack import exceptions as os_exc
from metalsmith import _instance
from metalsmith.test import test_provisioner
@ -49,6 +51,17 @@ class TestInstanceIPAddresses(test_provisioner.Base):
self.assertEqual({'name-0': [],
'name-1': ['10.0.0.2']}, ips)
def test_missing_port(self):
self.ports = [
mock.Mock(spec=['network_id', 'fixed_ips', 'network'],
network_id='0',
fixed_ips=[{'ip_address': '192.168.0.1'}]),
os_exc.ResourceNotFound(),
]
self.api.network.get_port.side_effect = self.ports
ips = self.instance.ip_addresses()
self.assertEqual({'name-0': ['192.168.0.1']}, ips)
class TestInstanceStates(test_provisioner.Base):
def setUp(self):