Пример #1
0
    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()
Пример #2
0
    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()
Пример #3
0
    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)
Пример #4
0
    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)