Exemple #1
0
 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())
Exemple #2
0
    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())
Exemple #3
0
    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())
Exemple #4
0
    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())
Exemple #5
0
 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())
Exemple #6
0
    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())
Exemple #7
0
    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)
Exemple #8
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())
Exemple #9
0
    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())