예제 #1
0
파일: docker.py 프로젝트: albertjone/senlin
    def docker(self, obj):
        """Construct docker client based on object.

        :param obj: Object for which the client is created. It is expected to
                    be None when retrieving an existing client. When creating
                    a client, it contains the user and project to be used.
        """
        if self._dockerclient is not None:
            return self._dockerclient

        host_node = self.properties.get(self.HOST_NODE, None)
        host_cluster = self.properties.get(self.HOST_CLUSTER, None)
        ctx = context.get_admin_context()
        self.host = self._get_host(ctx, host_node, host_cluster)

        # TODO(Anyone): Check node.data for per-node host selection
        host_type = self.host.rt['profile'].type_name
        if host_type not in self._VALID_HOST_TYPES:
            msg = _("Type of host node (%s) is not supported") % host_type
            raise exc.InternalError(message=msg)

        host_ip = self._get_host_ip(obj, self.host.physical_id, host_type)
        if host_ip is None:
            msg = _("Unable to determine the IP address of host node")
            raise exc.InternalError(message=msg)

        url = 'tcp://%(ip)s:%(port)d' % {
            'ip': host_ip,
            'port': self.properties[self.PORT]
        }
        self._dockerclient = docker_driver.DockerClient(url)
        return self._dockerclient
예제 #2
0
    def test_init(self, mock_docker):
        x_docker = mock_docker.return_value
        url = mock.Mock()

        sot = docker_v1.DockerClient(url)

        self.assertEqual(x_docker, sot._dockerclient)
        mock_docker.assert_called_once_with(base_url=url)
예제 #3
0
 def test_container_delete(self, mock_client):
     mock_client.return_value = self._dockerclient
     url = mock.Mock()
     dockerclient = docker_driver.DockerClient(url)
     container = mock.Mock()
     res = dockerclient.container_delete(container)
     self.assertTrue(res)
     self._dockerclient.remove_container.assert_called_once_with(container)
예제 #4
0
 def test_container_create(self, mock_client):
     mock_client.return_value = self._dockerclient
     url = mock.Mock()
     dockerclient = docker_driver.DockerClient(url)
     image = mock.Mock()
     dockerclient.container_create(image)
     self._dockerclient.create_container.assert_called_once_with(
         name=None, image=image, command=None)
예제 #5
0
 def setUp(self, mock_docker):
     super(TestDocker, self).setUp()
     self.x_docker = mock.Mock()
     mock_docker.return_value = self.x_docker
     self.sot = docker_v1.DockerClient("abc")
예제 #6
0
 def test_init(self, mock_client):
     mock_client.return_value = self._dockerclient
     url = mock.Mock()
     dockerclient = docker_driver.DockerClient(url)._dockerclient
     self.assertEqual(self._dockerclient, dockerclient)