Esempio n. 1
0
 def test_create_container_inject_key(self, mock_inject_key):
     self.fixture.config(inject_key=True, group='docker')
     instance_href = utils.get_test_instance()
     instance_href.key_data = 'my_key'
     image_info = utils.get_test_image_info(None, instance_href)
     image_info['disk_format'] = 'raw'
     image_info['container_format'] = 'docker'
     with mock.patch.object(self.mock_client, 'create_container'):
         with mock.patch.object(self.mock_client, 'start') as ms:
             self.connection.spawn(self.context,
                                   instance_href,
                                   image_info,
                                   'fake_files',
                                   'fake_password',
                                   network_info=None)
             command = ms.call_args[1]
             expected = {
                 'binds': {
                     '/tmp/.ssh': {
                         'bind': '/root/.ssh',
                         'ro': True
                     }
                 },
                 'dns': None,
                 'privileged': False
             }
             self.assertEqual(expected, command)
Esempio n. 2
0
 def test_spawn_container(self, image_info=None, instance_href=None,
                           network_info=None):
     instance_href = utils.get_test_instance()
     image_info = utils.get_test_image_info(None, instance_href)
     network_info = utils.get_test_network_info()
     self.driver.spawn(self.ctxt, instance_href, image_info,
                       'fake_files', 'fake_password', network_info=network_info)
Esempio n. 3
0
 def _get_running_instance(self, obj=True):
     instance_ref = test_utils.get_test_instance(obj=obj)
     network_info = test_utils.get_test_network_info()
     network_info[0]["network"]["subnets"][0]["meta"]["dhcp_server"] = "1.1.1.1"
     image_info = test_utils.get_test_image_info(None, instance_ref)
     self.connection.spawn(self.ctxt, instance_ref, image_info, [], "herp", network_info=network_info)
     return instance_ref, network_info
Esempio n. 4
0
 def test_create_container_wrong_image(self):
     instance_href = utils.get_test_instance()
     image_info = utils.get_test_image_info(None, instance_href)
     image_info['disk_format'] = 'raw'
     image_info['container_format'] = 'invalid_format'
     self.assertRaises(exception.InstanceDeployFailure,
                       self.test_create_container,
                       image_info, instance_href)
Esempio n. 5
0
 def _get_running_instance(self, obj=True):
     instance_ref = test_utils.get_test_instance(obj=obj)
     network_info = test_utils.get_test_network_info()
     network_info[0]['network']['subnets'][0]['meta']['dhcp_server'] = \
         '1.1.1.1'
     image_info = test_utils.get_test_image_info(None, instance_ref)
     self.connection.spawn(self.ctxt, instance_ref, image_info,
                           [], 'herp', network_info=network_info)
     return instance_ref, network_info
Esempio n. 6
0
 def test_find_container_by_uuid(self):
     instance_href = utils.get_test_instance()
     image_info = utils.get_test_image_info(None, instance_href)
     image_info['disk_format'] = 'raw'
     image_info['container_format'] = 'docker'
     self.connection.spawn(self.context, instance_href, image_info,
                           'fake_files', 'fake_password')
     info = self.connection._find_container_by_uuid(instance_href['uuid'])
     self.assertEqual(instance_href['name'], info['Config'].get('Hostname'))
Esempio n. 7
0
 def _get_running_instance(self, obj=True):
     instance_ref = test_utils.get_test_instance(obj=obj)
     network_info = test_utils.get_test_network_info()
     network_info[0]['network']['subnets'][0]['meta']['dhcp_server'] = \
         '1.1.1.1'
     image_info = test_utils.get_test_image_info(None, instance_ref)
     self.connection.spawn(self.ctxt, instance_ref, image_info,
                           [], 'herp', network_info=network_info)
     return instance_ref, network_info
Esempio n. 8
0
    def test_get_image_name(self):
        instance_ref = utils.get_test_instance()
        image_info = utils.get_test_image_info(None, instance_ref)
        image_info['container_format'] = 'docker'
        image_info['name'] = 'MiXeDcAsE-image'
        repo = self.connection._get_image_name(self.context,
                                               instance_ref, image_info)

        # image_name = repo.split("/")[1]
        self.assertEqual(image_info['name'], repo)
Esempio n. 9
0
    def test_list_instances(self):
        instance_href = utils.get_test_instance()
        image_info = utils.get_test_image_info(None, instance_href)
        image_info['disk_format'] = 'raw'
        image_info['container_format'] = 'docker'
        self.connection.spawn(self.context, instance_href, image_info,
                              'fake_files', 'fake_password')

        instances = self.connection.list_instances()
        self.assertIn(instance_href.name, instances)
Esempio n. 10
0
 def test_reboot_container(self, image_info=None, instance_href=None,
                            network_info=None):
     reboot_type = "SOFT"
     instance_href = utils.get_test_instance()
     image_info = utils.get_test_image_info(None, instance_href)
     network_info = utils.get_test_network_info()
     self.driver.spawn(self.ctxt, instance_href, image_info,
                       'fake_files', 'fake_password', network_info=network_info)
     self.driver.reboot(self.ctxt, instance_href, network_info,
                        reboot_type)
Esempio n. 11
0
 def _get_running_instance(self, obj=True):
     instance_ref = utils.get_test_instance(obj=obj)
     network_info = utils.get_test_network_info()
     network_info[0]['network']['subnets'][0]['meta']['dhcp_server'] = \
         '1.1.1.1'
     image_info = utils.get_test_image_info(None, instance_ref)
     image_info['disk_format'] = 'raw'
     image_info['container_format'] = 'docker'
     self.connection.spawn(self.ctxt, instance_ref, image_info,
                           [], 'herp', network_info=network_info)
     return instance_ref, network_info
Esempio n. 12
0
    def test_list_instances_no_inspect_race(self):
        """Assures containers that cannot be inspected are not listed."""
        instance_href = utils.get_test_instance()
        image_info = utils.get_test_image_info(None, instance_href)
        image_info['disk_format'] = 'raw'
        image_info['container_format'] = 'docker'
        self.connection.spawn(self.context, instance_href, image_info,
                              'fake_files', 'fake_password')

        with mock.patch.object(self.mock_client, 'inspect_container',
                               return_value={}):
            instances = self.connection.list_instances()
            self.assertFalse(instances)
Esempio n. 13
0
 def test_create_container_empty_cmd(self, image_info=None,
                                     instance_href=None,
                                     network_info=None):
     if instance_href is None:
         instance_href = utils.get_test_instance()
     if image_info is None:
         image_info = utils.get_test_image_info(None, instance_href)
         image_info['disk_format'] = 'raw'
         image_info['container_format'] = 'docker'
     with mock.patch.object(self.mock_client, 'create_container') as mc:
         self.connection.spawn(self.context, instance_href, image_info,
                               'fake_files', 'fake_password',
                               network_info=network_info)
         self.assertIsNone(mc.call_args[1].get('command'))
Esempio n. 14
0
 def test_create_container(self, image_info=None, instance_href=None,
                           network_info=None):
     if instance_href is None:
         instance_href = utils.get_test_instance()
     if image_info is None:
         image_info = utils.get_test_image_info(None, instance_href)
         image_info['disk_format'] = 'raw'
         image_info['container_format'] = 'docker'
     self.connection.spawn(self.context, instance_href, image_info,
                           'fake_files', 'fake_password',
                           network_info=network_info)
     self._assert_cpu_shares(instance_href)
     self.assertEqual(self.mock_client.name, "nova-{0}".format(
         instance_href['uuid']))
Esempio n. 15
0
 def test_pull_missing_image_with_shared_dir(self, mock_os):
     self.fixture.config(shared_directory='/fake_dir', group='docker')
     instance_ref = utils.get_test_instance()
     image_info = utils.get_test_image_info(None, instance_ref)
     image_info['name'] = 'fake_name'
     image_info['id'] = 'fake_id'
     with mock.patch.object(self.mock_client, 'load_repository_file') as f:
         with mock.patch.object(self.mock_client, 'inspect_image') as i:
             i.return_value = 'fake_image'
             image = self.connection._pull_missing_image(
                 self.context, image_info, instance_ref)
             f.assert_called_once_with('fake_name', '/fake_dir/fake_id')
             i.assert_called_once_with('fake_name')
             self.assertEqual('fake_image', image)
Esempio n. 16
0
 def _get_running_instance(self, obj=False, image_name=None, flavor=None):
     instance_ref = utils.get_test_instance(obj=obj, flavor=flavor)
     network_info = utils.get_test_network_info()
     network_info[0]['network']['subnets'][0]['meta']['dhcp_server'] = (
         '1.1.1.1')
     image_info = utils.get_test_image_info(None, instance_ref)
     image_info['disk_format'] = 'raw'
     image_info['container_format'] = 'docker'
     if image_name:
         image_info['name'] = image_name
     self.connection.spawn(self.ctxt, jsonutils.to_primitive(instance_ref),
                           image_info, [], 'herp',
                           network_info=network_info)
     return instance_ref, network_info
Esempio n. 17
0
 def test_pull_missing_image_with_shared_dir(self, mock_os):
     self.fixture.config(shared_directory='/fake_dir', group='docker')
     instance_ref = utils.get_test_instance()
     image_info = utils.get_test_image_info(None, instance_ref)
     image_info['name'] = 'fake_name'
     image_info['id'] = 'fake_id'
     with mock.patch.object(self.mock_client, 'load_repository_file') as f:
         with mock.patch.object(self.mock_client, 'inspect_image') as i:
             i.return_value = 'fake_image'
             image = self.connection._pull_missing_image(self.context,
                                                         image_info,
                                                         instance_ref)
             f.assert_called_once_with('fake_name', '/fake_dir/fake_id')
             i.assert_called_once_with('fake_name')
             self.assertEqual('fake_image', image)
Esempio n. 18
0
 def test_create_container_glance_cmd(self, image_info=None,
                                      instance_href=None,
                                      network_info=None):
     if instance_href is None:
         instance_href = utils.get_test_instance()
     if image_info is None:
         image_info = utils.get_test_image_info(None, instance_href)
         image_info['disk_format'] = 'raw'
         image_info['container_format'] = 'docker'
         image_info['properties'] = {'os_command_line': 'uname'}
     with mock.patch.object(self.mock_client, 'create_container') as mc:
         self.connection.spawn(self.context, instance_href, image_info,
                               'fake_files', 'fake_password',
                               network_info=network_info)
         command = mc.call_args[1]['command']
         self.assertEqual('uname', command)
Esempio n. 19
0
 def _get_running_instance(self, obj=False, image_name=None, flavor=None):
     instance_ref = utils.get_test_instance(obj=obj, flavor=flavor)
     network_info = utils.get_test_network_info()
     network_info[0]['network']['subnets'][0]['meta']['dhcp_server'] = (
         '1.1.1.1')
     image_info = utils.get_test_image_info(None, instance_ref)
     image_info['disk_format'] = 'raw'
     image_info['container_format'] = 'docker'
     if image_name:
         image_info['name'] = image_name
     self.connection.spawn(self.ctxt,
                           jsonutils.to_primitive(instance_ref),
                           image_info, [],
                           'herp',
                           network_info=network_info)
     return instance_ref, network_info
Esempio n. 20
0
 def test_create_container_vcpus_2(self, image_info=None):
     flavor = utils.get_test_flavor(options={
         'name': 'vcpu_2',
         'flavorid': 'vcpu_2',
         'vcpus': 2
     })
     instance_href = utils.get_test_instance(flavor=flavor)
     if image_info is None:
         image_info = utils.get_test_image_info(None, instance_href)
         image_info['disk_format'] = 'raw'
         image_info['container_format'] = 'docker'
     self.connection.spawn(self.context, instance_href, image_info,
                           'fake_files', 'fake_password')
     self._assert_cpu_shares(instance_href, vcpus=2)
     self.assertEqual(self.mock_client.name, "nova-{0}".format(
         instance_href['uuid']))
Esempio n. 21
0
 def test_create_container_inject_key(self, mock_inject_key):
     self.fixture.config(inject_key=True, group='docker')
     instance_href = utils.get_test_instance()
     instance_href.key_data = 'my_key'
     image_info = utils.get_test_image_info(None, instance_href)
     image_info['disk_format'] = 'raw'
     image_info['container_format'] = 'docker'
     with mock.patch.object(self.mock_client, 'create_container'):
         with mock.patch.object(self.mock_client, 'start') as ms:
             self.connection.spawn(self.context, instance_href, image_info,
                                   'fake_files', 'fake_password',
                                   network_info=None)
             command = ms.call_args[1]
             expected = {'binds': {'/tmp/.ssh':
                         {'bind': '/root/.ssh', 'ro': True}}}
             self.assertEqual(expected, command)
Esempio n. 22
0
    def test_soft_delete_restore_container(self):
        instance_href = utils.get_test_instance()
        image_info = utils.get_test_image_info(None, instance_href)
        image_info['disk_format'] = 'raw'
        image_info['container_format'] = 'docker'

        self.connection.spawn(self.context, instance_href, image_info,
                              'fake_files', 'fake_password')
        container_id = self.connection._find_container_by_uuid(
            instance_href['uuid']).get('id')

        self.connection.soft_delete(instance_href)
        info = self.connection.docker.inspect_container(container_id)
        self.assertFalse(info['State']['Running'])

        self.connection.restore(instance_href)
        info = self.connection.docker.inspect_container(container_id)
        self.assertTrue(info['State']['Running'])