To attach interface for server when using 'uuid'
If user using 'uuid' to specify the network id, to make sure to attach interface for server when updating. Change-Id: Ie7ceb9c54ab4da4ad9a5d19803791edd41e5604c Closes-Bug: #1439497
This commit is contained in:
parent
d56778dc7a
commit
6523afe8c9
|
@ -1068,6 +1068,11 @@ class Server(stack_user.StackUser):
|
|||
None, self._get_network_id(net),
|
||||
net.get('fixed_ip'))
|
||||
checkers.append(checker)
|
||||
elif net.get('uuid'):
|
||||
checker = scheduler.TaskRunner(server.interface_attach,
|
||||
None, net['uuid'],
|
||||
net.get('fixed_ip'))
|
||||
checkers.append(checker)
|
||||
|
||||
# if new_networks is None, we should attach first free port,
|
||||
# according to similar behavior during instance creation
|
||||
|
|
|
@ -2874,6 +2874,49 @@ class ServersTest(common.HeatTestCase):
|
|||
self.assertEqual((server.UPDATE, server.COMPLETE), server.state)
|
||||
self.m.VerifyAll()
|
||||
|
||||
def test_server_update_networks_with_uuid(self):
|
||||
return_server = self.fc.servers.list()[1]
|
||||
return_server.id = '5678'
|
||||
server = self._create_test_server(return_server, 'networks_update')
|
||||
|
||||
old_networks = [
|
||||
{'network': 'aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa'}]
|
||||
new_networks = [
|
||||
{'uuid': 'aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa'}]
|
||||
|
||||
server.t['Properties']['networks'] = old_networks
|
||||
update_template = copy.deepcopy(server.t)
|
||||
update_template['Properties']['networks'] = new_networks
|
||||
|
||||
self.m.StubOutWithMock(self.fc.servers, 'get')
|
||||
self.fc.servers.get('5678').MultipleTimes().AndReturn(return_server)
|
||||
|
||||
self.m.StubOutWithMock(return_server, 'interface_list')
|
||||
|
||||
poor_interfaces = [
|
||||
self.create_fake_iface('95e25541-d26a-478d-8f36-ae1c8f6b74dc',
|
||||
'aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa',
|
||||
'11.12.13.14')
|
||||
]
|
||||
|
||||
return_server.interface_list().AndReturn(poor_interfaces)
|
||||
|
||||
self.m.StubOutWithMock(return_server, 'interface_detach')
|
||||
return_server.interface_detach(
|
||||
poor_interfaces[0].port_id).AndReturn(None)
|
||||
|
||||
self.m.StubOutWithMock(return_server, 'interface_attach')
|
||||
return_server.interface_attach(None, new_networks[0]['uuid'],
|
||||
None).AndReturn(None)
|
||||
self.stub_NetworkConstraint_validate()
|
||||
self.patchobject(neutron.NeutronClientPlugin, 'resolve_network',
|
||||
return_value='aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa')
|
||||
self.m.ReplayAll()
|
||||
|
||||
scheduler.TaskRunner(server.update, update_template)()
|
||||
self.assertEqual((server.UPDATE, server.COMPLETE), server.state)
|
||||
self.m.VerifyAll()
|
||||
|
||||
def test_server_update_networks_with_empty_list(self):
|
||||
return_server = self.fc.servers.list()[1]
|
||||
return_server.id = '5678'
|
||||
|
|
Loading…
Reference in New Issue