Merge "Fix a docker internal error on server restart"

This commit is contained in:
Zuul 2018-09-11 03:07:07 +00:00 committed by Gerrit Code Review
commit 9f9a94e2ca
4 changed files with 10 additions and 61 deletions

View File

@ -66,7 +66,7 @@ class Manager(periodic_task.PeriodicTasks):
{'container_uuid': container.uuid,
'old_status': container.status,
'current_status': current_status})
self.container_reboot(context, container, 10)
self.container_start(context, container)
def init_containers(self, context):
containers = objects.Container.list_by_host(context, self.host)

View File

@ -59,7 +59,7 @@ class KuryrNetwork(network.Network):
will have both ipv4 and ipv6 addresses.
What this method does is finding the subnets under the specified
neutron net, retrieving the cidr, gateway, subnetpool of each
neutron net, retrieving the cidr, gateway of each
subnet, and compile the list of parameters for docker.create_network.
"""
# find a v4 and/or v6 subnet of the network
@ -90,8 +90,6 @@ class KuryrNetwork(network.Network):
}
if v4_subnet:
ipam_options["Options"]['neutron.pool.uuid'] = \
self._get_subnetpool(v4_subnet)
ipam_options['Options']['neutron.subnet.uuid'] = \
v4_subnet.get('id')
ipam_options["Config"].append({
@ -99,11 +97,8 @@ class KuryrNetwork(network.Network):
"Gateway": v4_subnet['gateway_ip']
})
options['neutron.pool.uuid'] = v4_subnet.get('subnetpool_id')
options['neutron.subnet.uuid'] = v4_subnet.get('id')
if v6_subnet:
ipam_options["Options"]['neutron.pool.v6.uuid'] = \
self._get_subnetpool(v6_subnet)
ipam_options['Options']['neutron.subnet.v6.uuid'] = \
v6_subnet.get('id')
ipam_options["Config"].append({
@ -111,7 +106,6 @@ class KuryrNetwork(network.Network):
"Gateway": v6_subnet['gateway_ip']
})
options['neutron.pool.v6.uuid'] = v6_subnet.get('subnetpool_id')
options['neutron.subnet.v6.uuid'] = v6_subnet.get('id')
network_dict = {}
@ -143,46 +137,6 @@ class KuryrNetwork(network.Network):
network.save()
return network
def _check_valid_subnetpool(self, neutron_api,
subnetpool_id, subnet_cidr):
"""Check subnet's cidr matches with subnetpool prefixes or not"""
subnetpools = \
neutron_api.list_subnetpools(id=subnetpool_id)
subnetpools = subnetpools.get('subnetpools', [])
if not len(subnetpools):
return False
if subnet_cidr in subnetpools[0]['prefixes']:
return True
return False
def _get_subnetpool(self, subnet):
# NOTE(kiennt): Elevate admin privilege to list all subnetpools
# across projects.
admin_context = zun_context.get_admin_context()
neutron_api = neutron.NeutronAPI(admin_context)
subnetpool_id = subnet.get('subnetpool_id')
if not subnetpool_id:
return None
if self._check_valid_subnetpool(neutron_api, subnetpool_id,
subnet['cidr']):
return subnetpool_id
# NOTE(kiennt): Subnetpool which was created by Kuryr-libnetwork
# will be tagged with subnet_id.
kwargs = {
'tags': [subnet['id']],
}
subnetpools = \
neutron_api.list_subnetpools(**kwargs).get('subnetpools', [])
if not subnetpools:
return None
elif len(subnetpools) > 1:
raise exception.ZunException(_(
'Multiple Neutron subnetpools exist with prefixes %s') %
subnet['cidr'])
else:
return subnetpools[0]['id']
def _get_subnet(self, subnets, ip_version):
subnets = [s for s in subnets if s['ip_version'] == ip_version]
if len(subnets) == 0:

View File

@ -125,18 +125,17 @@ class TestManager(base.TestCase):
mock_container_start.assert_called_once_with(self.context,
container)
@mock.patch.object(manager.Manager, 'container_reboot')
@mock.patch.object(manager.Manager, 'container_start')
@mock.patch.object(Container, 'save')
def test_container_reboot_after_host_reboot(self, mock_save,
mock_container_reboot):
mock_container_start):
container_1 = Container(self.context, **utils.get_test_container())
container_1.status = consts.RUNNING
self.compute_manager.restore_running_container(self.context,
container_1,
consts.STOPPED)
mock_container_reboot.assert_called_once_with(self.context,
container_1,
10)
mock_container_start.assert_called_once_with(self.context,
container_1)
@mock.patch.object(manager.Manager, 'container_stop')
@mock.patch.object(Container, 'save')

View File

@ -164,12 +164,10 @@ class KuryrNetworkTestCase(base.TestCase):
ipam={'Config': [{'Subnet': '10.5.0.0/16', 'Gateway': '10.5.0.1'}],
'Driver': 'kuryr',
'Options': {'neutron.net.shared': 'False',
'neutron.subnet.uuid': 'fake-subnet-id',
'neutron.pool.uuid': None}},
'neutron.subnet.uuid': 'fake-subnet-id'}},
options={'neutron.net.uuid': 'fake-net-id',
'neutron.net.shared': 'False',
'neutron.subnet.uuid': 'fake-subnet-id',
'neutron.pool.uuid': None})
'neutron.subnet.uuid': 'fake-subnet-id'})
@mock.patch.object(Network, 'create')
@mock.patch.object(Network, 'save')
@ -191,12 +189,10 @@ class KuryrNetworkTestCase(base.TestCase):
ipam={'Config': [{'Subnet': '10.5.0.0/16', 'Gateway': '10.5.0.1'}],
'Driver': 'kuryr',
'Options': {'neutron.net.shared': 'False',
'neutron.subnet.uuid': 'fake-subnet-id',
'neutron.pool.uuid': 'fake-subnetpool-id'}},
'neutron.subnet.uuid': 'fake-subnet-id'}},
options={'neutron.net.uuid': 'fake-net-id',
'neutron.net.shared': 'False',
'neutron.subnet.uuid': 'fake-subnet-id',
'neutron.pool.uuid': 'fake-subnetpool-id'})
'neutron.subnet.uuid': 'fake-subnet-id'})
def test_remove_network(self):
network_name = 'c02afe4e-8350-4263-8078'