Merge "Add a no-op wait method to NetworkInfo"

This commit is contained in:
Jenkins 2016-11-10 09:36:59 +00:00 committed by Gerrit Code Review
commit 327d81dcb8
2 changed files with 19 additions and 7 deletions

View File

@ -467,6 +467,15 @@ class NetworkInfo(list):
network_info = jsonutils.loads(network_info)
return cls([VIF.hydrate(vif) for vif in network_info])
def wait(self, do_raise=True):
"""Wait for asynchronous call to finish."""
# There is no asynchronous call for this class, so this is a no-op
# here, but subclasses may override to provide asynchronous
# capabilities. Must be defined here in the parent class so that code
# which works with both parent and subclass types can reference this
# method.
pass
def json(self):
return jsonutils.dumps(self)
@ -529,7 +538,7 @@ class NetworkInfoAsyncWrapper(NetworkInfo):
return self._sync_wrapper(fn, *args, **kwargs)
def wait(self, do_raise=True):
"""Wait for async call to finish."""
"""Wait for asynchronous call to finish."""
if self._gt is not None:
try:
# NOTE(comstud): This looks funky, but this object is

View File

@ -4378,11 +4378,12 @@ class ComputeManagerBuildInstanceTestCase(test.NoDBTestCase):
system_metadata={},
expected_attrs=['system_metadata'])
self.compute._build_networks_for_instance(self.context, instance,
self.requested_networks, self.security_groups)
nw_info_obj = self.compute._build_networks_for_instance(self.context,
instance, self.requested_networks, self.security_groups)
mock_allocate.assert_called_once_with(self.context, instance,
self.requested_networks, None, self.security_groups, None)
self.assertTrue(hasattr(nw_info_obj, 'wait'), "wait must be there")
@mock.patch.object(manager.ComputeManager, '_allocate_network')
@mock.patch.object(network_api.API, 'get_instance_nw_info')
@ -4391,11 +4392,12 @@ class ComputeManagerBuildInstanceTestCase(test.NoDBTestCase):
system_metadata=dict(network_allocated='False'),
expected_attrs=['system_metadata'])
self.compute._build_networks_for_instance(self.context, instance,
self.requested_networks, self.security_groups)
nw_info_obj = self.compute._build_networks_for_instance(self.context,
instance, self.requested_networks, self.security_groups)
mock_allocate.assert_called_once_with(self.context, instance,
self.requested_networks, None, self.security_groups, None)
self.assertTrue(hasattr(nw_info_obj, 'wait'), "wait must be there")
@mock.patch.object(network_api.API, 'setup_instance_network_on_host')
@mock.patch.object(manager.ComputeManager, '_allocate_network')
@ -4409,8 +4411,9 @@ class ComputeManagerBuildInstanceTestCase(test.NoDBTestCase):
def fake_network_info():
return network_model.NetworkInfo([{'address': '123.123.123.123'}])
mock_get.return_value = network_model.NetworkInfoAsyncWrapper(
fake_network_info)
# this should be a NetworkInfo, not NetworkInfoAsyncWrapper, to match
# what get_instance_nw_info really returns
mock_get.return_value = fake_network_info()
self.compute._build_networks_for_instance(self.context, instance,
self.requested_networks, self.security_groups)