Merge "Use admin client to retrieve container host"
This commit is contained in:
commit
5ee97781a1
@ -167,12 +167,12 @@ class ZunClient(rest_client.RestClient):
|
||||
body=model.to_json(), **kwargs)
|
||||
return self.deserialize(resp, body, container_model.ContainerEntity)
|
||||
|
||||
def get_container(self, container_id):
|
||||
resp, body = self.get(self.container_uri(container_id))
|
||||
def get_container(self, container_id, params=None):
|
||||
resp, body = self.get(self.container_uri(container_id, params=params))
|
||||
return self.deserialize(resp, body, container_model.ContainerEntity)
|
||||
|
||||
def list_containers(self, **kwargs):
|
||||
resp, body = self.get(self.containers_uri(), **kwargs)
|
||||
def list_containers(self, params=None, **kwargs):
|
||||
resp, body = self.get(self.containers_uri(params=params), **kwargs)
|
||||
return self.deserialize(resp, body,
|
||||
container_model.ContainerCollection)
|
||||
|
||||
|
@ -53,7 +53,8 @@ class TestContainer(base.BaseZunTest):
|
||||
|
||||
def tearDown(self):
|
||||
hosts = []
|
||||
_, model = self.container_client.list_containers()
|
||||
_, model = self.os_admin.container_client.list_containers(
|
||||
params={'all_tenants': True})
|
||||
for c in model.containers:
|
||||
if c['uuid'] in self.containers:
|
||||
if c['host'] and c['host'] not in hosts:
|
||||
@ -71,7 +72,7 @@ class TestContainer(base.BaseZunTest):
|
||||
for host in hosts:
|
||||
# NOTE(kiennt): Default docker remote url
|
||||
# Remove networks in all hosts
|
||||
docker_base_url = self._get_docker_url(host)
|
||||
docker_base_url = self._get_docker_url(host=host)
|
||||
networks = self.docker_client.list_networks(project_id,
|
||||
docker_base_url)
|
||||
for network in networks:
|
||||
@ -104,11 +105,12 @@ class TestContainer(base.BaseZunTest):
|
||||
@decorators.idempotent_id('cef53a56-22b7-4808-b01c-06b2b7126115')
|
||||
def test_delete_container(self):
|
||||
_, container = self._create_container()
|
||||
docker_url = self._get_docker_url(container)
|
||||
resp, _ = self.container_client.delete_container(container.uuid)
|
||||
self.assertEqual(204, resp.status)
|
||||
self.container_client.ensure_container_deleted(container.uuid)
|
||||
container = self.docker_client.get_container(
|
||||
container.uuid, self._get_docker_url(container.host))
|
||||
container.uuid, docker_url)
|
||||
self.assertIsNone(container)
|
||||
|
||||
@decorators.idempotent_id('ef69c9e7-0ce0-4e14-b7ec-c1dc581a3927')
|
||||
@ -151,7 +153,7 @@ class TestContainer(base.BaseZunTest):
|
||||
|
||||
container = self.docker_client.get_container(
|
||||
model.uuid,
|
||||
self._get_docker_url(model.host))
|
||||
self._get_docker_url(model))
|
||||
env = container.get('Config').get('Env')
|
||||
self.assertTrue('key1=env1', env)
|
||||
self.assertTrue('key2=env2', env)
|
||||
@ -163,7 +165,7 @@ class TestContainer(base.BaseZunTest):
|
||||
|
||||
container = self.docker_client.get_container(
|
||||
model.uuid,
|
||||
self._get_docker_url(model.host))
|
||||
self._get_docker_url(model))
|
||||
labels = container.get('Config').get('Labels')
|
||||
self.assertTrue('key1=label1', labels)
|
||||
self.assertTrue('key2=label2', labels)
|
||||
@ -175,7 +177,7 @@ class TestContainer(base.BaseZunTest):
|
||||
|
||||
container = self.docker_client.get_container(
|
||||
model.uuid,
|
||||
self._get_docker_url(model.host))
|
||||
self._get_docker_url(model))
|
||||
policy = container.get('HostConfig').get('RestartPolicy')
|
||||
self.assertEqual('on-failure', policy['Name'])
|
||||
self.assertTrue(2, policy['MaximumRetryCount'])
|
||||
@ -186,7 +188,7 @@ class TestContainer(base.BaseZunTest):
|
||||
|
||||
container = self.docker_client.get_container(
|
||||
model.uuid,
|
||||
self._get_docker_url(model.host))
|
||||
self._get_docker_url(model))
|
||||
tty = container.get('Config').get('Tty')
|
||||
stdin_open = container.get('Config').get('OpenStdin')
|
||||
self.assertIs(True, tty)
|
||||
@ -270,14 +272,14 @@ class TestContainer(base.BaseZunTest):
|
||||
self.container_client.ensure_container_in_desired_state(
|
||||
model.uuid, 'Stopped')
|
||||
self.assertEqual('Stopped',
|
||||
self._get_container_state(model.uuid, model.host))
|
||||
self._get_container_state(model))
|
||||
|
||||
resp, _ = self.container_client.start_container(model.uuid)
|
||||
self.assertEqual(202, resp.status)
|
||||
self.container_client.ensure_container_in_desired_state(
|
||||
model.uuid, 'Running')
|
||||
self.assertEqual('Running',
|
||||
self._get_container_state(model.uuid, model.host))
|
||||
self._get_container_state(model))
|
||||
|
||||
@decorators.idempotent_id('b5f39756-8898-4e0e-a48b-dda0a06b66b6')
|
||||
def test_pause_unpause_container(self):
|
||||
@ -288,14 +290,14 @@ class TestContainer(base.BaseZunTest):
|
||||
self.container_client.ensure_container_in_desired_state(
|
||||
model.uuid, 'Paused')
|
||||
self.assertEqual('Paused',
|
||||
self._get_container_state(model.uuid, model.host))
|
||||
self._get_container_state(model))
|
||||
|
||||
resp, _ = self.container_client.unpause_container(model.uuid)
|
||||
self.assertEqual(202, resp.status)
|
||||
self.container_client.ensure_container_in_desired_state(
|
||||
model.uuid, 'Running')
|
||||
self.assertEqual('Running',
|
||||
self._get_container_state(model.uuid, model.host))
|
||||
self._get_container_state(model))
|
||||
|
||||
@decorators.idempotent_id('6179a588-3d48-4372-9599-f228411d1449')
|
||||
def test_kill_container(self):
|
||||
@ -306,12 +308,12 @@ class TestContainer(base.BaseZunTest):
|
||||
self.container_client.ensure_container_in_desired_state(
|
||||
model.uuid, 'Stopped')
|
||||
self.assertEqual('Stopped',
|
||||
self._get_container_state(model.uuid, model.host))
|
||||
self._get_container_state(model))
|
||||
|
||||
@decorators.idempotent_id('c2e54321-0a70-4331-ba62-9dcaa75ac250')
|
||||
def test_reboot_container(self):
|
||||
_, model = self._run_container()
|
||||
docker_base_url = self._get_docker_url(model.host)
|
||||
docker_base_url = self._get_docker_url(model)
|
||||
container = self.docker_client.get_container(model.uuid,
|
||||
docker_base_url)
|
||||
pid = container.get('State').get('Pid')
|
||||
@ -321,7 +323,7 @@ class TestContainer(base.BaseZunTest):
|
||||
self.docker_client.ensure_container_pid_changed(model.uuid, pid,
|
||||
docker_base_url)
|
||||
self.assertEqual('Running',
|
||||
self._get_container_state(model.uuid, model.host))
|
||||
self._get_container_state(model))
|
||||
# assert pid is changed
|
||||
container = self.docker_client.get_container(model.uuid,
|
||||
docker_base_url)
|
||||
@ -348,7 +350,7 @@ class TestContainer(base.BaseZunTest):
|
||||
_, model = self._run_container(cpu=0.1, memory=100)
|
||||
self.assertEqual('100M', model.memory)
|
||||
self.assertEqual(0.1, model.cpu)
|
||||
docker_base_url = self._get_docker_url(model.host)
|
||||
docker_base_url = self._get_docker_url(model)
|
||||
container = self.docker_client.get_container(model.uuid,
|
||||
docker_base_url)
|
||||
self._assert_resource_constraints(container, cpu=0.1, memory=100)
|
||||
@ -442,8 +444,7 @@ class TestContainer(base.BaseZunTest):
|
||||
resp, model = self.container_client.get_container(model.uuid)
|
||||
self.assertEqual(200, resp.status)
|
||||
self.assertEqual('Created', model.status)
|
||||
self.assertEqual('Created', self._get_container_state(model.uuid,
|
||||
model.host))
|
||||
self.assertEqual('Created', self._get_container_state(model))
|
||||
return resp, model
|
||||
|
||||
def _run_container(self, gen_model=None, **kwargs):
|
||||
@ -459,17 +460,12 @@ class TestContainer(base.BaseZunTest):
|
||||
# Assert the container is started
|
||||
resp, model = self.container_client.get_container(model.uuid)
|
||||
self.assertEqual('Running', model.status)
|
||||
self.assertEqual('Running', self._get_container_state(model.uuid,
|
||||
model.host))
|
||||
self.assertIsNotNone(model.host)
|
||||
self.assertEqual('Running', self._get_container_state(model))
|
||||
return resp, model
|
||||
|
||||
def _get_container_state(self, container_id, docker_host=None):
|
||||
if docker_host is not None:
|
||||
container = self.docker_client.get_container(
|
||||
container_id, self._get_docker_url(docker_host))
|
||||
else:
|
||||
container = self.docker_client.get_container(container_id)
|
||||
def _get_container_state(self, model):
|
||||
container = self.docker_client.get_container(
|
||||
model.uuid, self._get_docker_url(model))
|
||||
status = container.get('State')
|
||||
if status.get('Error') is True:
|
||||
return 'Error'
|
||||
@ -504,7 +500,14 @@ class TestContainer(base.BaseZunTest):
|
||||
|
||||
return sg_names
|
||||
|
||||
def _get_docker_url(self, host='localhost', protocol='tcp', port='2375'):
|
||||
def _get_docker_url(self, container=None, host='localhost'):
|
||||
protocol = 'tcp'
|
||||
port = '2375'
|
||||
if container:
|
||||
if not hasattr(container, 'host'):
|
||||
_, container = self.os_admin.container_client.get_container(
|
||||
container.uuid, params={'all_tenants': True})
|
||||
host = container.host
|
||||
# NOTE(kiennt): By default, devstack-plugin-container will
|
||||
# set docker_api_url = {
|
||||
# "unix://$DOCKER_ENGINE_SOCKET_FILE",
|
||||
|
Loading…
x
Reference in New Issue
Block a user