Exemple #1
0
 def test_wait_fails_on_exit_status(self):
     client = Mock()
     client.api_version = '1.21'
     client.wait = Mock(return_value=1)
     dockerng_inspect_container = Mock(side_effect=[{
         'State': {
             'Running': True
         }
     }, {
         'State': {
             'Stopped': True
         }
     }])
     with patch.object(dockerng_mod, 'inspect_container',
                       dockerng_inspect_container):
         with patch.dict(dockerng_mod.__context__,
                         {'docker.client': client}):
             dockerng_mod._clear_context()
             result = dockerng_mod.wait('foo', fail_on_exit_status=True)
     self.assertEqual(
         result, {
             'result': False,
             'exit_status': 1,
             'state': {
                 'new': 'stopped',
                 'old': 'running'
             }
         })
Exemple #2
0
    def test_create_with_labels_error(self, *args):
        '''
        Create container with invalid labels.
        '''
        __salt__ = {
            'config.get': Mock(),
            'mine.send': Mock(),
            'dockerng.version': MagicMock(return_value={}),
        }
        host_config = {}
        client = Mock()
        client.api_version = '1.19'
        client.create_host_config.return_value = host_config
        client.create_container.return_value = {}
        get_client_mock = MagicMock(return_value=client)

        with patch.dict(dockerng_mod.__dict__, {'__salt__': __salt__}):
            with patch.object(dockerng_mod, '_get_client', get_client_mock):
                with patch.object(dockerng_mod, 'get_client_args',
                                  self.client_args_mock):
                    self.assertRaises(
                        SaltInvocationError,
                        dockerng_mod.create,
                        'image',
                        name='ctn',
                        labels=22,
                        validate_input=True,
                    )
Exemple #3
0
 def test_create_with_labels_list(self, *args):
     '''
     Create container with labels list.
     '''
     __salt__ = {
         'config.get': Mock(),
         'mine.send': Mock(),
         'dockerng.version': MagicMock(return_value={}),
     }
     host_config = {}
     client = Mock()
     client.api_version = '1.19'
     client.create_host_config.return_value = host_config
     client.create_container.return_value = {}
     get_client_mock = MagicMock(return_value=client)
     with patch.dict(dockerng_mod.__dict__, {'__salt__': __salt__}):
         with patch.object(dockerng_mod, '_get_client', get_client_mock):
             with patch.object(dockerng_mod, 'get_client_args',
                               self.client_args_mock):
                 dockerng_mod.create(
                     'image',
                     name='ctn',
                     labels=['KEY1', 'KEY2'],
                     validate_input=True,
                 )
     client.create_container.assert_called_once_with(
         labels=['KEY1', 'KEY2'],
         host_config=host_config,
         image='image',
         name='ctn',
     )
Exemple #4
0
    def test_wait_fails_on_exit_status_and_already_stopped(self):
        client = Mock()
        client.api_version = '1.21'
        client.wait = Mock(return_value=1)
        get_client_mock = MagicMock(return_value=client)
        dockerng_inspect_container = Mock(side_effect=[{
            'State': {
                'Stopped': True
            }
        }, {
            'State': {
                'Stopped': True
            }
        }])

        with patch.object(dockerng_mod, 'inspect_container',
                          dockerng_inspect_container):
            with patch.object(dockerng_mod, '_get_client', get_client_mock):
                dockerng_mod._clear_context()
                result = dockerng_mod.wait('foo',
                                           ignore_already_stopped=True,
                                           fail_on_exit_status=True)
        self.assertEqual(
            result, {
                'result': False,
                'comment': "Container 'foo' already stopped",
                'exit_status': 1,
                'state': {
                    'new': 'stopped',
                    'old': 'stopped'
                }
            })
Exemple #5
0
 def test_create_with_labels_dictlist(self, *args):
     '''
     Create container with labels dictlist.
     '''
     __salt__ = {
         'config.get': Mock(),
         'mine.send': Mock(),
     }
     host_config = {}
     client = Mock()
     client.api_version = '1.19'
     client.create_host_config.return_value = host_config
     client.create_container.return_value = {}
     with patch.dict(dockerng_mod.__dict__,
                     {'__salt__': __salt__}):
         with patch.dict(dockerng_mod.__context__,
                         {'docker.client': client}):
             dockerng_mod.create(
                 'image',
                 name='ctn',
                 labels=[{'KEY1': 'VALUE1'}, {'KEY2': 'VALUE2'}],
                 validate_input=True,
             )
     client.create_container.assert_called_once_with(
         labels={'KEY1': 'VALUE1', 'KEY2': 'VALUE2'},
         host_config=host_config,
         image='image',
         name='ctn',
     )
Exemple #6
0
 def test_create_with_labels_dictlist(self, *args):
     '''
     Create container with labels dictlist.
     '''
     __salt__ = {
         'config.get': Mock(),
         'mine.send': Mock(),
     }
     host_config = {}
     client = Mock()
     client.api_version = '1.19'
     client.create_host_config.return_value = host_config
     client.create_container.return_value = {}
     with patch.dict(dockerng_mod.__dict__, {'__salt__': __salt__}):
         with patch.dict(dockerng_mod.__context__,
                         {'docker.client': client}):
             dockerng_mod.create(
                 'image',
                 name='ctn',
                 labels=[{
                     'KEY1': 'VALUE1'
                 }, {
                     'KEY2': 'VALUE2'
                 }],
                 validate_input=True,
             )
     client.create_container.assert_called_once_with(
         labels={
             'KEY1': 'VALUE1',
             'KEY2': 'VALUE2'
         },
         host_config=host_config,
         image='image',
         name='ctn',
     )
Exemple #7
0
 def test_wait_success_already_stopped(self):
     client = Mock()
     client.api_version = '1.21'
     client.wait = Mock(return_value=0)
     dockerng_inspect_container = Mock(side_effect=[
         {
             'State': {
                 'Stopped': True
             }
         },
         {
             'State': {
                 'Stopped': True
             }
         },
     ])
     with patch.object(dockerng_mod, 'inspect_container',
                       dockerng_inspect_container):
         with patch.dict(dockerng_mod.__context__,
                         {'docker.client': client}):
             dockerng_mod._clear_context()
             result = dockerng_mod.wait('foo', ignore_already_stopped=True)
     self.assertEqual(
         result, {
             'result': True,
             'comment': "Container 'foo' already stopped",
             'exit_status': 0,
             'state': {
                 'new': 'stopped',
                 'old': 'stopped'
             }
         })
Exemple #8
0
    def test_wait_success(self):
        client = Mock()
        client.api_version = '1.21'
        client.wait = Mock(return_value=0)
        get_client_mock = MagicMock(return_value=client)

        dockerng_inspect_container = Mock(side_effect=[{
            'State': {
                'Running': True
            }
        }, {
            'State': {
                'Stopped': True
            }
        }])
        with patch.object(dockerng_mod, 'inspect_container',
                          dockerng_inspect_container):
            with patch.object(dockerng_mod, '_get_client', get_client_mock):
                dockerng_mod._clear_context()
                result = dockerng_mod.wait('foo')
        self.assertEqual(
            result, {
                'result': True,
                'exit_status': 0,
                'state': {
                    'new': 'stopped',
                    'old': 'running'
                }
            })
Exemple #9
0
 def test_wait_success_absent_container(self):
     client = Mock()
     client.api_version = '1.21'
     dockerng_inspect_container = Mock(side_effect=CommandExecutionError)
     with patch.object(dockerng_mod, 'inspect_container',
                       dockerng_inspect_container):
         with patch.dict(dockerng_mod.__context__,
                         {'docker.client': client}):
             dockerng_mod._clear_context()
             result = dockerng_mod.wait('foo', ignore_already_stopped=True)
     self.assertEqual(result, {'result': True,
                               'comment': "Container 'foo' absent"})
Exemple #10
0
 def test_wait_success_absent_container(self):
     client = Mock()
     client.api_version = '1.21'
     dockerng_inspect_container = Mock(side_effect=CommandExecutionError)
     with patch.object(dockerng_mod, 'inspect_container',
                       dockerng_inspect_container):
         with patch.dict(dockerng_mod.__context__,
                         {'docker.client': client}):
             dockerng_mod._clear_context()
             result = dockerng_mod.wait('foo', ignore_already_stopped=True)
     self.assertEqual(result, {'result': True,
                               'comment': "Container 'foo' absent"})
Exemple #11
0
 def test_list_volumes(self, *args):
     '''
     test list volumes.
     '''
     __salt__ = {
         'config.get': Mock(),
         'mine.send': Mock(),
     }
     client = Mock()
     client.api_version = '1.21'
     with patch.dict(docker_mod.__dict__, {'__salt__': __salt__}):
         with patch.dict(docker_mod.__context__, {'docker.client': client}):
             docker_mod.volumes(filters={'dangling': [True]}, )
     client.volumes.assert_called_once_with(filters={'dangling': [True]}, )
Exemple #12
0
 def test_inspect_volume(self, *args):
     '''
     test inspect volume.
     '''
     __salt__ = {
         'config.get': Mock(),
         'mine.send': Mock(),
     }
     client = Mock()
     client.api_version = '1.21'
     with patch.dict(docker_mod.__dict__, {'__salt__': __salt__}):
         with patch.dict(docker_mod.__context__, {'docker.client': client}):
             docker_mod.inspect_volume('foo')
     client.inspect_volume.assert_called_once_with('foo')
Exemple #13
0
 def test_remove_network(self, *args):
     '''
     test remove network.
     '''
     __salt__ = {
         'config.get': Mock(),
         'mine.send': Mock(),
     }
     host_config = {}
     client = Mock()
     client.api_version = '1.21'
     with patch.dict(docker_mod.__dict__, {'__salt__': __salt__}):
         with patch.dict(docker_mod.__context__, {'docker.client': client}):
             docker_mod.remove_network('foo')
     client.remove_network.assert_called_once_with('foo')
Exemple #14
0
    def test_inspect_volume(self, *args):
        '''
        test inspect volume.
        '''
        __salt__ = {
            'config.get': Mock(),
            'mine.send': Mock(),
        }
        client = Mock()
        client.api_version = '1.21'
        get_client_mock = MagicMock(return_value=client)

        with patch.dict(dockerng_mod.__dict__, {'__salt__': __salt__}):
            with patch.object(dockerng_mod, '_get_client', get_client_mock):
                dockerng_mod.inspect_volume('foo')
        client.inspect_volume.assert_called_once_with('foo')
Exemple #15
0
    def test_list_volumes(self, *args):
        '''
        test list volumes.
        '''
        __salt__ = {
            'config.get': Mock(),
            'mine.send': Mock(),
        }
        client = Mock()
        client.api_version = '1.21'
        get_client_mock = MagicMock(return_value=client)

        with patch.dict(dockerng_mod.__dict__, {'__salt__': __salt__}):
            with patch.object(dockerng_mod, '_get_client', get_client_mock):
                dockerng_mod.volumes(filters={'dangling': [True]})
        client.volumes.assert_called_once_with(filters={'dangling': [True]})
Exemple #16
0
 def test_inspect_volume(self, *args):
     '''
     test inspect volume.
     '''
     __salt__ = {
         'config.get': Mock(),
         'mine.send': Mock(),
     }
     client = Mock()
     client.api_version = '1.21'
     with patch.dict(dockerng_mod.__dict__,
                     {'__salt__': __salt__}):
         with patch.dict(dockerng_mod.__context__,
                         {'docker.client': client}):
             dockerng_mod.inspect_volume('foo')
     client.inspect_volume.assert_called_once_with('foo')
Exemple #17
0
 def test_remove_network(self, *args):
     '''
     test remove network.
     '''
     __salt__ = {
         'config.get': Mock(),
         'mine.send': Mock(),
     }
     host_config = {}
     client = Mock()
     client.api_version = '1.21'
     with patch.dict(dockerng_mod.__dict__,
                     {'__salt__': __salt__}):
         with patch.dict(dockerng_mod.__context__,
                         {'docker.client': client}):
             dockerng_mod.remove_network('foo')
     client.remove_network.assert_called_once_with('foo')
Exemple #18
0
    def test_remove_network(self, *args):
        '''
        test remove network.
        '''
        __salt__ = {
            'config.get': Mock(),
            'mine.send': Mock(),
        }
        host_config = {}
        client = Mock()
        client.api_version = '1.21'
        get_client_mock = MagicMock(return_value=client)

        with patch.dict(dockerng_mod.__dict__, {'__salt__': __salt__}):
            with patch.object(dockerng_mod, '_get_client', get_client_mock):
                dockerng_mod.remove_network('foo')
        client.remove_network.assert_called_once_with('foo')
Exemple #19
0
 def test_wait_fails_on_exit_status(self):
     client = Mock()
     client.api_version = '1.21'
     client.wait = Mock(return_value=1)
     dockerng_inspect_container = Mock(side_effect=[
         {'State': {'Running': True}},
         {'State': {'Stopped': True}}])
     with patch.object(dockerng_mod, 'inspect_container',
                       dockerng_inspect_container):
         with patch.dict(dockerng_mod.__context__,
                         {'docker.client': client}):
             dockerng_mod._clear_context()
             result = dockerng_mod.wait('foo', fail_on_exit_status=True)
     self.assertEqual(result, {'result': False,
                               'exit_status': 1,
                               'state': {'new': 'stopped',
                                         'old': 'running'}})
Exemple #20
0
 def test_create_with_arg_cmd(self, *args):
     '''
     When cmd argument is passed check it is renamed to command.
     '''
     __salt__ = {
         'config.get': Mock(),
         'mine.send': Mock(),
     }
     host_config = {}
     client = Mock()
     client.api_version = '1.19'
     client.create_host_config.return_value = host_config
     client.create_container.return_value = {}
     with patch.dict(docker_mod.__dict__, {'__salt__': __salt__}):
         with patch.dict(docker_mod.__context__, {'docker.client': client}):
             docker_mod.create('image', cmd='ls', name='ctn')
     client.create_container.assert_called_once_with(
         command='ls', host_config=host_config, image='image', name='ctn')
Exemple #21
0
 def test_disconnect_container_from_network(self, *args):
     '''
     test inspect network.
     '''
     __salt__ = {
         'config.get': Mock(),
         'mine.send': Mock(),
     }
     host_config = {}
     client = Mock()
     client.api_version = '1.21'
     with patch.dict(dockerng_mod.__dict__, {'__salt__': __salt__}):
         with patch.dict(dockerng_mod.__context__,
                         {'docker.client': client}):
             dockerng_mod.disconnect_container_from_network(
                 'container', 'foo')
     client.disconnect_container_from_network.assert_called_once_with(
         'container', 'foo')
Exemple #22
0
 def test_images_with_empty_tags(self):
     """
     docker 1.12 reports also images without tags with `null`.
     """
     client = Mock()
     client.api_version = '1.24'
     client.images = Mock(
         return_value=[{'Id': 'sha256:abcde',
                        'RepoTags': None},
                       {'Id': 'sha256:abcdef'},
                       {'Id': 'sha256:abcdefg',
                        'RepoTags': ['image:latest']}])
     with patch.dict(dockerng_mod.__context__,
                     {'docker.client': client}):
         dockerng_mod._clear_context()
         result = dockerng_mod.images()
     self.assertEqual(result,
                      {'sha256:abcdefg': {'RepoTags': ['image:latest']}})
Exemple #23
0
 def test_create_send_host_config(self, *args):
     '''
     Check host_config object is passed to create_container.
     '''
     __salt__ = {
         'config.get': Mock(),
         'mine.send': Mock(),
     }
     host_config = {'PublishAllPorts': True}
     client = Mock()
     client.api_version = '1.19'
     client.create_host_config.return_value = host_config
     client.create_container.return_value = {}
     with patch.dict(docker_mod.__dict__, {'__salt__': __salt__}):
         with patch.dict(docker_mod.__context__, {'docker.client': client}):
             docker_mod.create('image', name='ctn', publish_all_ports=True)
     client.create_container.assert_called_once_with(
         host_config=host_config, image='image', name='ctn')
Exemple #24
0
 def test_wait_success_already_stopped(self):
     client = Mock()
     client.api_version = '1.21'
     client.wait = Mock(return_value=0)
     dockerng_inspect_container = Mock(side_effect=[
         {'State': {'Stopped': True}},
         {'State': {'Stopped': True}},
     ])
     with patch.object(dockerng_mod, 'inspect_container',
                       dockerng_inspect_container):
         with patch.dict(dockerng_mod.__context__,
                         {'docker.client': client}):
             dockerng_mod._clear_context()
             result = dockerng_mod.wait('foo', ignore_already_stopped=True)
     self.assertEqual(result, {'result': True,
                               'comment': "Container 'foo' already stopped",
                               'exit_status': 0,
                               'state': {'new': 'stopped',
                                         'old': 'stopped'}})
Exemple #25
0
 def test_list_volumes(self, *args):
     '''
     test list volumes.
     '''
     __salt__ = {
         'config.get': Mock(),
         'mine.send': Mock(),
     }
     client = Mock()
     client.api_version = '1.21'
     with patch.dict(dockerng_mod.__dict__,
                     {'__salt__': __salt__}):
         with patch.dict(dockerng_mod.__context__,
                         {'docker.client': client}):
             dockerng_mod.volumes(
                 filters={'dangling': [True]},
             )
     client.volumes.assert_called_once_with(
         filters={'dangling': [True]},
     )
Exemple #26
0
 def test_list_networks(self, *args):
     '''
     test list networks.
     '''
     __salt__ = {
         'config.get': Mock(),
         'mine.send': Mock(),
     }
     host_config = {}
     client = Mock()
     client.api_version = '1.21'
     with patch.dict(docker_mod.__dict__, {'__salt__': __salt__}):
         with patch.dict(docker_mod.__context__, {'docker.client': client}):
             docker_mod.networks(
                 names=['foo'],
                 ids=['01234'],
             )
     client.networks.assert_called_once_with(
         names=['foo'],
         ids=['01234'],
     )
Exemple #27
0
 def test_create_network(self, *args):
     '''
     test create network.
     '''
     __salt__ = {
         'config.get': Mock(),
         'mine.send': Mock(),
     }
     host_config = {}
     client = Mock()
     client.api_version = '1.21'
     with patch.dict(dockerng_mod.__dict__, {'__salt__': __salt__}):
         with patch.dict(dockerng_mod.__context__,
                         {'docker.client': client}):
             dockerng_mod.create_network(
                 'foo',
                 driver='bridge',
             )
     client.create_network.assert_called_once_with(
         'foo',
         driver='bridge',
     )
Exemple #28
0
 def test_images_with_empty_tags(self):
     """
     docker 1.12 reports also images without tags with `null`.
     """
     client = Mock()
     client.api_version = '1.24'
     client.images = Mock(return_value=[{
         'Id': 'sha256:abcde',
         'RepoTags': None
     }, {
         'Id': 'sha256:abcdef'
     }, {
         'Id': 'sha256:abcdefg',
         'RepoTags': ['image:latest']
     }])
     with patch.dict(dockerng_mod.__context__, {'docker.client': client}):
         dockerng_mod._clear_context()
         result = dockerng_mod.images()
     self.assertEqual(result,
                      {'sha256:abcdefg': {
                          'RepoTags': ['image:latest']
                      }})
Exemple #29
0
    def test_connect_container_to_network(self, *args):
        '''
        test inspect network.
        '''
        __salt__ = {
            'config.get': Mock(),
            'mine.send': Mock(),
        }
        host_config = {}
        client = Mock()
        client.api_version = '1.21'

        context = {
            'docker.client': client,
            'docker.exec_driver': 'docker-exec'
        }

        with patch.dict(docker_mod.__dict__, {'__salt__': __salt__}):
            with patch.dict(docker_mod.__context__, context):
                docker_mod.connect_container_to_network('container', 'foo')
        client.connect_container_to_network.assert_called_once_with(
            'container', 'foo', None)
Exemple #30
0
 def test_create_send_host_config(self, *args):
     '''
     Check host_config object is passed to create_container.
     '''
     __salt__ = {
         'config.get': Mock(),
         'mine.send': Mock(),
     }
     host_config = {'PublishAllPorts': True}
     client = Mock()
     client.api_version = '1.19'
     client.create_host_config.return_value = host_config
     client.create_container.return_value = {}
     with patch.dict(dockerng_mod.__dict__,
                     {'__salt__': __salt__}):
         with patch.dict(dockerng_mod.__context__,
                         {'docker.client': client}):
             dockerng_mod.create('image', name='ctn', publish_all_ports=True)
     client.create_container.assert_called_once_with(
         host_config=host_config,
         image='image',
         name='ctn')
Exemple #31
0
    def test_list_networks(self, *args):
        '''
        test list networks.
        '''
        __salt__ = {
            'config.get': Mock(),
            'mine.send': Mock(),
        }
        host_config = {}
        client = Mock()
        client.api_version = '1.21'
        get_client_mock = MagicMock(return_value=client)

        with patch.dict(dockerng_mod.__dict__, {'__salt__': __salt__}):
            with patch.object(dockerng_mod, '_get_client', get_client_mock):
                dockerng_mod.networks(
                    names=['foo'],
                    ids=['01234'],
                )
        client.networks.assert_called_once_with(
            names=['foo'],
            ids=['01234'],
        )
Exemple #32
0
 def test_list_networks(self, *args):
     '''
     test list networks.
     '''
     __salt__ = {
         'config.get': Mock(),
         'mine.send': Mock(),
     }
     host_config = {}
     client = Mock()
     client.api_version = '1.21'
     with patch.dict(dockerng_mod.__dict__,
                     {'__salt__': __salt__}):
         with patch.dict(dockerng_mod.__context__,
                         {'docker.client': client}):
             dockerng_mod.networks(
                 names=['foo'],
                 ids=['01234'],
             )
     client.networks.assert_called_once_with(
                 names=['foo'],
                 ids=['01234'],
     )
Exemple #33
0
 def test_create_with_labels_error(self, *args):
     '''
     Create container with invalid labels.
     '''
     __salt__ = {
         'config.get': Mock(),
         'mine.send': Mock(),
     }
     host_config = {}
     client = Mock()
     client.api_version = '1.19'
     client.create_host_config.return_value = host_config
     client.create_container.return_value = {}
     with patch.dict(docker_mod.__dict__, {'__salt__': __salt__}):
         with patch.dict(docker_mod.__context__, {'docker.client': client}):
             self.assertRaises(
                 SaltInvocationError,
                 docker_mod.create,
                 'image',
                 name='ctn',
                 labels=22,
                 validate_input=True,
             )
Exemple #34
0
 def test_create_with_arg_cmd(self, *args):
     '''
     When cmd argument is passed check it is renamed to command.
     '''
     __salt__ = {
         'config.get': Mock(),
         'mine.send': Mock(),
     }
     host_config = {}
     client = Mock()
     client.api_version = '1.19'
     client.create_host_config.return_value = host_config
     client.create_container.return_value = {}
     with patch.dict(dockerng_mod.__dict__,
                     {'__salt__': __salt__}):
         with patch.dict(dockerng_mod.__context__,
                         {'docker.client': client}):
             dockerng_mod.create('image', cmd='ls', name='ctn')
     client.create_container.assert_called_once_with(
         command='ls',
         host_config=host_config,
         image='image',
         name='ctn')
Exemple #35
0
 def test_create_with_labels_error(self, *args):
     '''
     Create container with invalid labels.
     '''
     __salt__ = {
         'config.get': Mock(),
         'mine.send': Mock(),
     }
     host_config = {}
     client = Mock()
     client.api_version = '1.19'
     client.create_host_config.return_value = host_config
     client.create_container.return_value = {}
     with patch.dict(dockerng_mod.__dict__,
                     {'__salt__': __salt__}):
         with patch.dict(dockerng_mod.__context__,
                         {'docker.client': client}):
             self.assertRaises(SaltInvocationError,
                               dockerng_mod.create,
                               'image',
                               name='ctn',
                               labels=22,
                               validate_input=True,
                               )
Exemple #36
0
 def test_create_volume(self, *args):
     '''
     test create volume.
     '''
     __salt__ = {
         'config.get': Mock(),
         'mine.send': Mock(),
     }
     client = Mock()
     client.api_version = '1.21'
     with patch.dict(dockerng_mod.__dict__,
                     {'__salt__': __salt__}):
         with patch.dict(dockerng_mod.__context__,
                         {'docker.client': client}):
             dockerng_mod.create_volume(
                 'foo',
                 driver='bridge',
                 driver_opts={},
             )
     client.create_volume.assert_called_once_with(
                 'foo',
                 driver='bridge',
                 driver_opts={},
     )