Merge "Pass requested_network on network_attach"

This commit is contained in:
Zuul 2018-06-03 04:44:14 +00:00 committed by Gerrit Code Review
commit 4d6ff63a5d
7 changed files with 35 additions and 31 deletions

View File

@ -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')

View File

@ -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):

View File

@ -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

View File

@ -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,

View File

@ -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):

View File

@ -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')

View File

@ -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',
requested_network = {'network': 'network',
'port': '',
'v4-fixed-ip': '',
'v6-fixed-ip': '',
'preserve_on_delete': False}]
self.driver.network_attach(self.context, mock_container, 'network')
'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',
requested_network = {'network': 'network',
'port': '',
'v4-fixed-ip': '',
'v6-fixed-ip': '',
'preserve_on_delete': False}]
self.driver.network_attach(self.context, mock_container, 'network')
'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')