def test_create_image_task(self, swift_service_mock, swift_mock, glance_mock, get_file_hashes, mock_api_version): mock_api_version.return_value = '2' self.cloud.image_api_use_tasks = True class Container(object): name = 'image_upload_v2_test_container' fake_container = Container() swift_mock.get_capabilities.return_value = { 'swift': { 'max_file_size': 1000 } } swift_mock.put_container.return_value = fake_container swift_mock.head_object.return_value = {} glance_mock.images.list.return_value = [] self.assertEqual([], self.cloud.list_images()) fake_md5 = "fake-md5" fake_sha256 = "fake-sha256" get_file_hashes.return_value = (fake_md5, fake_sha256) FakeImage = warlock.model_factory(shell.get_image_schema()) fake_image = FakeImage(id='a35e8afc-cae9-4e38-8441-2cd465f79f7b', name='name-99', status='active', visibility='private') glance_mock.images.list.return_value = [fake_image] FakeTask = warlock.model_factory(_TASK_SCHEMA) args = { 'id': '21FBD9A7-85EC-4E07-9D58-72F1ACF7CB1F', 'status': 'success', 'type': 'import', 'result': { 'image_id': 'a35e8afc-cae9-4e38-8441-2cd465f79f7b', }, } fake_task = FakeTask(**args) glance_mock.tasks.get.return_value = fake_task self._call_create_image(name='name-99', container='image_upload_v2_test_container') args = { 'header': [ 'x-object-meta-x-shade-md5:fake-md5', 'x-object-meta-x-shade-sha256:fake-sha256' ], 'segment_size': 1000, 'use_slo': True } swift_service_mock.upload.assert_called_with( container='image_upload_v2_test_container', objects=mock.ANY, options=args) glance_mock.tasks.create.assert_called_with( type='import', input={ 'import_from': 'image_upload_v2_test_container/name-99', 'image_properties': { 'name': 'name-99' } }) object_path = 'image_upload_v2_test_container/name-99' args = { 'owner_specified.shade.md5': fake_md5, 'owner_specified.shade.sha256': fake_sha256, 'owner_specified.shade.object': object_path, 'image_id': 'a35e8afc-cae9-4e38-8441-2cd465f79f7b' } glance_mock.images.update.assert_called_with(**args) fake_image_dict = meta.obj_to_dict(fake_image) self.assertEqual([fake_image_dict], self.cloud.list_images())
def test_create_image_task(self, swift_service_mock, swift_mock, glance_mock, get_file_hashes, mock_api_version): mock_api_version.return_value = '2' self.cloud.image_api_use_tasks = True class Container(object): name = 'image_upload_v2_test_container' fake_container = Container() swift_mock.get_capabilities.return_value = { 'swift': { 'max_file_size': 1000 } } swift_mock.put_container.return_value = fake_container swift_mock.head_object.return_value = {} glance_mock.images.list.return_value = [] self.assertEqual([], self.cloud.list_images()) fake_md5 = "fake-md5" fake_sha256 = "fake-sha256" get_file_hashes.return_value = (fake_md5, fake_sha256) FakeImage = warlock.model_factory(shell.get_image_schema()) fake_image = FakeImage( id='a35e8afc-cae9-4e38-8441-2cd465f79f7b', name='name-99', status='active', visibility='private') glance_mock.images.list.return_value = [fake_image] FakeTask = warlock.model_factory(_TASK_SCHEMA) args = { 'id': '21FBD9A7-85EC-4E07-9D58-72F1ACF7CB1F', 'status': 'success', 'type': 'import', 'result': { 'image_id': 'a35e8afc-cae9-4e38-8441-2cd465f79f7b', }, } fake_task = FakeTask(**args) glance_mock.tasks.get.return_value = fake_task self._call_create_image(name='name-99', container='image_upload_v2_test_container') args = {'header': ['x-object-meta-x-shade-md5:fake-md5', 'x-object-meta-x-shade-sha256:fake-sha256'], 'segment_size': 1000} swift_service_mock.upload.assert_called_with( container='image_upload_v2_test_container', objects=mock.ANY, options=args) glance_mock.tasks.create.assert_called_with(type='import', input={ 'import_from': 'image_upload_v2_test_container/name-99', 'image_properties': {'name': 'name-99'}}) args = {'owner_specified.shade.md5': fake_md5, 'owner_specified.shade.sha256': fake_sha256, 'image_id': 'a35e8afc-cae9-4e38-8441-2cd465f79f7b'} glance_mock.images.update.assert_called_with(**args) fake_image_dict = meta.obj_to_dict(fake_image) self.assertEqual([fake_image_dict], self.cloud.list_images())