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_object(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)
def test_create_container_wrong_image(self): instance_href = utils.get_test_instance() image_info = utils.get_test_image_object(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)
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_meta = test_utils.get_test_image_object(None, instance_ref) self.connection.spawn(self.ctxt, instance_ref, image_meta, [], 'herp', network_info=network_info) return instance_ref, network_info
def test_find_container_by_uuid(self): instance_href = utils.get_test_instance() image_info = utils.get_test_image_object(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'))
def test_get_image_name(self): instance_ref = utils.get_test_instance() image_info = utils.get_test_image_object(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)
def test_list_instances(self): instance_href = utils.get_test_instance() image_info = utils.get_test_image_object(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)
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_object(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
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_object(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)
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_object(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']))
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_object(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)
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_object(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'))
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_object(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)
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_object(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)
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_object(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']))
def test_soft_delete_restore_container(self): instance_href = utils.get_test_instance() image_info = utils.get_test_image_object(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'])
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_object(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)