def container_create(self, context, container): with docker_utils.docker_for_container(context, container) as docker: name = container.name container_uuid = container.uuid image = container.image LOG.debug('Creating container with image %s name %s', image, name) try: image_repo, image_tag = docker_utils.parse_docker_image(image) docker.pull(image_repo, tag=image_tag) docker.inspect_image(self._encode_utf8(container.image)) kwargs = {'name': name, 'hostname': container_uuid, 'command': container.command, 'environment': container.environment} if docker_utils.is_docker_api_version_atleast(docker, '1.19'): if container.memory is not None: kwargs['host_config'] = {'mem_limit': container.memory} else: kwargs['mem_limit'] = container.memory docker.create_container(image, **kwargs) container.status = fields.ContainerStatus.STOPPED return container except errors.APIError: container.status = fields.ContainerStatus.ERROR raise finally: container.save()
def container_create(self, context, container): with docker_utils.docker_for_container(context, container) as docker: name = container.name container_uuid = container.uuid image = container.image LOG.debug('Creating container with image %s name %s', image, name) try: image_repo, image_tag = docker_utils.parse_docker_image(image) docker.pull(image_repo, tag=image_tag) docker.inspect_image(self._encode_utf8(container.image)) kwargs = { 'name': name, 'hostname': container_uuid, 'command': container.command, 'environment': container.environment } if docker_utils.is_docker_api_version_atleast(docker, '1.19'): if container.memory is not None: kwargs['host_config'] = { 'Memory': magnum_utils.get_docker_quanity(container.memory) } else: kwargs['mem_limit'] = container.memory docker.create_container(image, **kwargs) container.status = fields.ContainerStatus.STOPPED return container except errors.APIError: container.status = fields.ContainerStatus.ERROR raise finally: container.save()
def test_is_docker_api_version_atleast(self): def fake_version(): return {'ApiVersion': '1.18'} docker = mock.MagicMock() docker.version.side_effect = fake_version res = docker_utils.is_docker_api_version_atleast(docker, '1.19') self.assertFalse(res)
def test_is_docker_api_version_atleast(self): def fake_version(): return {'ApiVersion': '1.18'} docker = mock.MagicMock() docker.version.side_effect = fake_version res = docker_utils.is_docker_api_version_atleast(docker, '1.19') self.assertFalse(res)