Merge "Pass requested_network on network_attach"
This commit is contained in:
commit
4d6ff63a5d
@ -1029,9 +1029,8 @@ class ContainersController(base.Controller):
|
||||
"container:network_attach")
|
||||
context = pecan.request.context
|
||||
compute_api = pecan.request.compute_api
|
||||
neutron_api = neutron.NeutronAPI(context)
|
||||
neutron_net = neutron_api.get_neutron_network(kwargs.get('network'))
|
||||
compute_api.network_attach(context, container, neutron_net['id'])
|
||||
requested_networks = utils.build_requested_networks(context, [kwargs])
|
||||
compute_api.network_attach(context, container, requested_networks[0])
|
||||
|
||||
@base.Controller.api_version("1.13")
|
||||
@pecan.expose('json')
|
||||
|
@ -1188,12 +1188,12 @@ class Manager(periodic_task.PeriodicTasks):
|
||||
|
||||
@wrap_exception()
|
||||
@wrap_container_event(prefix='compute')
|
||||
def network_attach(self, context, container, network):
|
||||
def network_attach(self, context, container, requested_network):
|
||||
LOG.debug('Attach network: %(network)s to container: %(container)s.',
|
||||
{'container': container, 'network': network})
|
||||
{'container': container, 'network': requested_network})
|
||||
self._update_task_state(context, container,
|
||||
consts.NETWORK_ATTACHING)
|
||||
self.driver.network_attach(context, container, network)
|
||||
self.driver.network_attach(context, container, requested_network)
|
||||
self._update_task_state(context, container, None)
|
||||
|
||||
def network_create(self, context, network):
|
||||
|
@ -199,9 +199,10 @@ class API(rpc_service.API):
|
||||
return self._call(container.host, 'network_detach',
|
||||
container=container, network=network)
|
||||
|
||||
def network_attach(self, context, container, network):
|
||||
def network_attach(self, context, container, requested_network):
|
||||
return self._call(container.host, 'network_attach',
|
||||
container=container, network=network)
|
||||
container=container,
|
||||
requested_network=requested_network)
|
||||
|
||||
def network_create(self, context, new_network):
|
||||
host = None
|
||||
|
@ -1097,7 +1097,7 @@ class DockerDriver(driver.ContainerDriver):
|
||||
container.addresses = update
|
||||
container.save(context)
|
||||
|
||||
def network_attach(self, context, container, network):
|
||||
def network_attach(self, context, container, requested_network):
|
||||
with docker_utils.docker_client() as docker:
|
||||
security_group_ids = None
|
||||
if container.security_groups:
|
||||
@ -1105,6 +1105,7 @@ class DockerDriver(driver.ContainerDriver):
|
||||
context, container.security_groups)
|
||||
network_api = zun_network.api(context,
|
||||
docker_api=docker)
|
||||
network = requested_network['network']
|
||||
if network in container.addresses:
|
||||
raise exception.ZunException('Container %(container)s has'
|
||||
' alreay connected to the network'
|
||||
@ -1112,11 +1113,6 @@ class DockerDriver(driver.ContainerDriver):
|
||||
% {'container': container.uuid,
|
||||
'network': network})
|
||||
self._get_or_create_docker_network(context, network_api, network)
|
||||
requested_network = {'network': network,
|
||||
'port': '',
|
||||
'v4-fixed-ip': '',
|
||||
'v6-fixed-ip': '',
|
||||
'preserve_on_delete': False}
|
||||
docker_net_name = self._get_docker_network_name(context, network)
|
||||
addrs = network_api.connect_container_to_network(
|
||||
container, docker_net_name, requested_network,
|
||||
|
@ -258,7 +258,7 @@ class ContainerDriver(object):
|
||||
def network_detach(self, context, container, network):
|
||||
raise NotImplementedError()
|
||||
|
||||
def network_attach(self, context, container, network):
|
||||
def network_attach(self, context, container, requested_network):
|
||||
raise NotImplementedError()
|
||||
|
||||
def create_network(self, context, network):
|
||||
|
@ -450,7 +450,8 @@ class TestAPI(base.TestCase):
|
||||
self.context, container.uuid,
|
||||
container_actions.NETWORK_ATTACH, want_result=False)
|
||||
mock_call.assert_called_once_with(
|
||||
container.host, "network_attach", container=container, network={})
|
||||
container.host, "network_attach", container=container,
|
||||
requested_network={})
|
||||
|
||||
@mock.patch('zun.compute.rpcapi.API._call')
|
||||
@mock.patch.object(objects.ContainerAction, 'action_start')
|
||||
|
@ -796,24 +796,30 @@ class TestDockerDriver(base.DriverTestCase):
|
||||
mock_container.security_groups = None
|
||||
mock_container.addresses = {}
|
||||
mock_list.return_value = {'network': 'network'}
|
||||
requested_network = [{'network': 'network',
|
||||
'port': '',
|
||||
'v4-fixed-ip': '',
|
||||
'v6-fixed-ip': '',
|
||||
'preserve_on_delete': False}]
|
||||
self.driver.network_attach(self.context, mock_container, 'network')
|
||||
requested_network = {'network': 'network',
|
||||
'port': '',
|
||||
'v4-fixed-ip': '',
|
||||
'v6-fixed-ip': '',
|
||||
'preserve_on_delete': False}
|
||||
self.driver.network_attach(self.context, mock_container,
|
||||
requested_network)
|
||||
mock_connect.assert_called_once_with(mock_container,
|
||||
'network',
|
||||
requested_network[0],
|
||||
requested_network,
|
||||
security_groups=None)
|
||||
|
||||
def test_network_attach_error(self):
|
||||
mock_container = mock.Mock()
|
||||
mock_container.security_groups = None
|
||||
mock_container.addresses = {'already-attached-net': []}
|
||||
requested_network = {'network': 'already-attached-net',
|
||||
'port': '',
|
||||
'v4-fixed-ip': '',
|
||||
'v6-fixed-ip': '',
|
||||
'preserve_on_delete': False}
|
||||
self.assertRaises(exception.ZunException,
|
||||
self.driver.network_attach,
|
||||
self.context, mock_container, 'already-attached-net')
|
||||
self.context, mock_container, requested_network)
|
||||
|
||||
@mock.patch('zun.common.utils.get_security_group_ids')
|
||||
@mock.patch('zun.network.kuryr_network.KuryrNetwork'
|
||||
@ -829,15 +835,16 @@ class TestDockerDriver(base.DriverTestCase):
|
||||
mock_container.addresses = {}
|
||||
mock_list.return_value = {'network': 'network'}
|
||||
mock_get_sec_group_id.return_value = test_sec_group_id
|
||||
requested_network = [{'network': 'network',
|
||||
'port': '',
|
||||
'v4-fixed-ip': '',
|
||||
'v6-fixed-ip': '',
|
||||
'preserve_on_delete': False}]
|
||||
self.driver.network_attach(self.context, mock_container, 'network')
|
||||
requested_network = {'network': 'network',
|
||||
'port': '',
|
||||
'v4-fixed-ip': '',
|
||||
'v6-fixed-ip': '',
|
||||
'preserve_on_delete': False}
|
||||
self.driver.network_attach(self.context, mock_container,
|
||||
requested_network)
|
||||
mock_connect.assert_called_once_with(mock_container,
|
||||
'network',
|
||||
requested_network[0],
|
||||
requested_network,
|
||||
security_groups=test_sec_group_id)
|
||||
|
||||
@mock.patch('zun.common.utils.execute')
|
||||
|
Loading…
x
Reference in New Issue
Block a user