def test_list_images_ignores_unsteady_status(self, glance_mock): steady_image = fakes.FakeImage('68', 'Jagr', 'active') steady_image_dict = meta.obj_to_dict(steady_image) for status in ('queued', 'saving', 'pending_delete'): active_image = fakes.FakeImage(self.getUniqueString(), self.getUniqueString(), status) glance_mock.images.list.return_value = [active_image] active_image_dict = meta.obj_to_dict(active_image) self.assertEqual([active_image_dict], self.cloud.list_images()) glance_mock.images.list.return_value = [active_image, steady_image] # Should expect steady_image to appear if active wasn't cached self.assertEqual([active_image_dict, steady_image_dict], self.cloud.list_images())
def test_cache_no_cloud_name(self, glance_mock): self.cloud.name = None fi = fakes.FakeImage(id=1, name='None Test Image', status='active') fi_dict = self._image_dict(fi) glance_mock.images.list.return_value = [fi] self.assertEqual([fi_dict], self.cloud.list_images()) # Now test that the list was cached fi2 = fakes.FakeImage(id=2, name='None Test Image', status='active') fi2_dict = self._image_dict(fi2) glance_mock.images.list.return_value = [fi, fi2] self.assertEqual([fi_dict], self.cloud.list_images()) # Invalidation too self.cloud.list_images.invalidate(self.cloud) self.assertEqual([fi_dict, fi2_dict], self.cloud.list_images())
def test_create_image_put_user_prop(self, glance_mock, mock_api_version): mock_api_version.return_value = '2' self.cloud.image_api_use_tasks = False glance_mock.images.list.return_value = [] self.assertEqual([], self.cloud.list_images()) fake_image = fakes.FakeImage('42', '42 name', 'success') glance_mock.images.create.return_value = fake_image glance_mock.images.list.return_value = [fake_image] self._call_create_image('42 name', min_disk='0', min_ram=0, properties={'int_v': 12345}) args = { 'name': '42 name', 'container_format': 'bare', 'disk_format': u'qcow2', 'owner_specified.shade.md5': mock.ANY, 'owner_specified.shade.sha256': mock.ANY, 'owner_specified.shade.object': 'images/42 name', 'int_v': '12345', 'visibility': 'private', 'min_disk': 0, 'min_ram': 0 } glance_mock.images.create.assert_called_with(**args) glance_mock.images.upload.assert_called_with(image_data=mock.ANY, image_id=fake_image.id) fake_image_dict = meta.obj_to_dict(fake_image) self.assertEqual([fake_image_dict], self.cloud.list_images())
def test_create_image_put_v1(self, glance_mock, mock_api_version): mock_api_version.return_value = '1' glance_mock.images.list.return_value = [] self.assertEqual([], self.cloud.list_images()) fake_image = fakes.FakeImage('42', '42 name', 'success') glance_mock.images.create.return_value = fake_image glance_mock.images.list.return_value = [fake_image] self._call_create_image('42 name') args = { 'name': '42 name', 'container_format': 'bare', 'disk_format': 'qcow2', 'properties': { 'owner_specified.shade.md5': mock.ANY, 'owner_specified.shade.sha256': mock.ANY, 'owner_specified.shade.object': 'images/42 name', 'is_public': False } } fake_image_dict = meta.obj_to_dict(fake_image) glance_mock.images.create.assert_called_with(**args) glance_mock.images.update.assert_called_with(data=mock.ANY, image=fake_image_dict) self.assertEqual([fake_image_dict], self.cloud.list_images())
def test_list_images_caches_steady_status(self, glance_mock): steady_image = fakes.FakeImage('91', 'Federov', 'active') first_image = None for status in ('active', 'deleted', 'killed'): active_image = fakes.FakeImage(self.getUniqueString(), self.getUniqueString(), status) active_image_dict = meta.obj_to_dict(active_image) if not first_image: first_image = active_image_dict glance_mock.images.list.return_value = [active_image] self.assertEqual([first_image], self.cloud.list_images()) glance_mock.images.list.return_value = [active_image, steady_image] # because we skipped the create_image code path, no invalidation # was done, so we _SHOULD_ expect steady state images to cache and # therefore we should _not_ expect to see the new one here self.assertEqual([first_image], self.cloud.list_images())
def test_list_images(self, glance_mock): glance_mock.images.list.return_value = [] self.assertEqual([], self.cloud.list_images()) fake_image = fakes.FakeImage('22', '22 name', 'success') fake_image_dict = meta.obj_to_dict(fake_image) glance_mock.images.list.return_value = [fake_image] self.cloud.list_images.invalidate(self.cloud) self.assertEqual([fake_image_dict], self.cloud.list_images())
def test_create_image_put_bad_int(self, glance_mock, mock_api_version): mock_api_version.return_value = '2' self.cloud.image_api_use_tasks = False glance_mock.images.list.return_value = [] self.assertEqual([], self.cloud.list_images()) fake_image = fakes.FakeImage('42', '42 name', 'success') glance_mock.images.create.return_value = fake_image glance_mock.images.list.return_value = [fake_image] self.assertRaises(exc.OpenStackCloudException, self._call_create_image, '42 name', min_disk='fish', min_ram=0)
def test_create_image_put_v1(self, glance_mock): self.cloud.api_versions['image'] = '1' glance_mock.images.list.return_value = [] self.assertEqual([], self.cloud.list_images()) fake_image = fakes.FakeImage('42', '42 name', 'success') glance_mock.images.create.return_value = fake_image glance_mock.images.list.return_value = [fake_image] self._call_create_image('42 name') args = { 'name': '42 name', 'properties': { 'owner_specified.shade.md5': mock.ANY, 'owner_specified.shade.sha256': mock.ANY } } glance_mock.images.create.assert_called_with(**args) glance_mock.images.update.assert_called_with(data=mock.ANY, image=fake_image) fake_image_dict = meta.obj_to_dict(fake_image) self.assertEqual([fake_image_dict], self.cloud.list_images())
def test_create_image_put_v2(self, glance_mock, mock_api_version): mock_api_version.return_value = '2' self.cloud.image_api_use_tasks = False glance_mock.images.list.return_value = [] self.assertEqual([], self.cloud.list_images()) fake_image = fakes.FakeImage('42', '42 name', 'success') glance_mock.images.create.return_value = fake_image glance_mock.images.list.return_value = [fake_image] self._call_create_image('42 name') args = { 'name': '42 name', 'owner_specified.shade.md5': mock.ANY, 'owner_specified.shade.sha256': mock.ANY } glance_mock.images.create.assert_called_with(**args) glance_mock.images.upload.assert_called_with(image_data=mock.ANY, image_id=fake_image.id, image_size=1) fake_image_dict = meta.obj_to_dict(fake_image) self.assertEqual([fake_image_dict], self.cloud.list_images())