예제 #1
0
    def test_list_for_project(self):
        tcs = mock_client_set(self.mox)
        tenant = self.tenants[1]

        self.fake_client_set.identity_admin.tenants.get(tenant.id)\
                .AndReturn(tenant)
        images.auth.client_set_for_tenant(tenant.id, fallback_to_api=True) \
                .AndReturn(tcs)
        tcs.image.images.list(filters={'is_public': None}) \
                .AndReturn(['ii1', 'ii2'])
        images._image_to_view('ii1', self.tenants[0]).AndReturn('I1')
        images._image_to_view('ii2', self.tenants[1]).AndReturn('I2')

        expected = {
            u'collection': {
                u'name': u'images',
                u'size': 2
            },
            u'images': [ 'I1', 'I2' ]
        }

        self.mox.ReplayAll()
        rv = self.client.get(u'/v1/images/?project:for=%s' % tenant.id)
        data = self.check_and_parse_response(rv)
        self.assertEquals(data, expected)
예제 #2
0
    def test_create_ami_image(self):
        params = {
            u'name': u'TestImage',
            u'global': True,
            u'disk-format': u'ami',
            u'container-format': u'ami',
            u'kernel': u'KERNEL_ID',
            u'ramdisk': u'RAMDISK_ID'
        }

        images.auth.assert_admin()
        self.fake_client_set.image.images.create(
            name=u'TestImage',
            disk_format=u'ami',
            container_format=u'ami',
            is_public=True,
            properties={
                u'kernel_id': u'KERNEL_ID',
                u'ramdisk_id': u'RAMDISK_ID'
            }).AndReturn('QueuedImage')
        images._image_to_view('QueuedImage').AndReturn('REPLY')

        self.mox.ReplayAll()
        data = self.interact(params)
        self.assertEquals(data, 'REPLY')
예제 #3
0
    def test_update_image_name(self):
        image = doubles.make(self.mox, doubles.Image, id=u"IMAGE", owner=u"PID")

        images._fetch_image(image.id, to_modify=True).AndReturn(image)
        image.update(name="UPDATED")
        images._fetch_image(image.id, to_modify=False).AndReturn("UPDATED IMAGE")
        images._image_to_view("UPDATED IMAGE").AndReturn("REPLY")

        self.mox.ReplayAll()
        data = self.interact(image.id, {"name": "UPDATED"})
        self.assertEquals(data, "REPLY")
예제 #4
0
    def test_list_for_project(self):
        tcs = mock_client_set(self.mox)

        self.fake_client_set.identity_admin.tenants.get(self.tenant.id).AndReturn(self.tenant)
        images.auth.client_set_for_tenant(self.tenant.id, fallback_to_api=False).AndReturn(tcs)
        tcs.image.images.list(filters={"is_public": None}).AndReturn(["ii1"])
        images._image_to_view("ii1", self.tenant).AndReturn("I1")

        self.mox.ReplayAll()
        rv = self.client.get(u"/v1/images/?project:for=%s" % self.tenant.id)
        data = self.check_and_parse_response(rv)
        self.assertEquals(data.get("images"), ["I1"])
예제 #5
0
    def test_get_image_works(self):
        client = self.fake_client_set
        image = self.images[-1]

        client.image.images.get(image.id).AndReturn(image)
        images.auth.default_tenant_id().AndReturn('SYS')
        images._image_to_view(image).AndReturn('REPLY')

        self.mox.ReplayAll()
        rv = self.client.get(u'/v1/images/%s' % image.id)
        data = self.check_and_parse_response(rv)
        self.assertEquals(data, 'REPLY')
예제 #6
0
    def test_get_image_works(self):
        client = self.fake_client_set
        image = self.images[-1]

        client.image.images.get(image.id).AndReturn(image)
        images.auth.default_tenant_id().AndReturn("SYS")
        images._image_to_view(image).AndReturn("REPLY")

        self.mox.ReplayAll()
        rv = self.client.get(u"/v1/images/%s" % image.id)
        data = self.check_and_parse_response(rv)
        self.assertEquals(data, "REPLY")
예제 #7
0
    def test_create_global_image(self):
        params = {u"name": u"TestImage", u"global": True, u"disk-format": u"raw", u"container-format": u"bare"}

        images.auth.assert_admin()
        self.fake_client_set.image.images.create(
            name=u"TestImage", disk_format=u"raw", container_format=u"bare", is_public=True, properties={}
        ).AndReturn("QueuedImage")
        images._image_to_view("QueuedImage").AndReturn("REPLY")

        self.mox.ReplayAll()
        data = self.interact(params)
        self.assertEquals(data, "REPLY")
예제 #8
0
    def test_update_image_name(self):
        image = doubles.make(self.mox, doubles.Image,
                             id=u'IMAGE', owner=u'PID')

        images._fetch_image(image.id, to_modify=True).AndReturn(image)
        image.update(name='UPDATED')
        images._fetch_image(image.id, to_modify=False)\
                .AndReturn('UPDATED IMAGE')
        images._image_to_view('UPDATED IMAGE').AndReturn('REPLY')

        self.mox.ReplayAll()
        data = self.interact(image.id, {'name': 'UPDATED'})
        self.assertEquals(data, 'REPLY')
예제 #9
0
    def test_list_in_project(self):
        # differs with previous only in request argument
        tcs = mock_client_set(self.mox)
        fake_image_dict = {"name": "I1", "project": {"id": self.tenant.id}}

        self.fake_client_set.identity_admin.tenants.get(self.tenant.id).AndReturn(self.tenant)
        images.auth.client_set_for_tenant(self.tenant.id, fallback_to_api=False).AndReturn(tcs)
        tcs.image.images.list(filters={"is_public": False}).AndReturn(["ii1"])
        images._image_to_view("ii1", self.tenant).AndReturn(fake_image_dict)

        self.mox.ReplayAll()
        rv = self.client.get(u"/v1/images/?project:in=%s" % self.tenant.id)
        data = self.check_and_parse_response(rv)
        self.assertEquals(data.get("images"), [fake_image_dict])
예제 #10
0
    def test_list_for_project(self):
        tcs = mock_client_set(self.mox)

        self.fake_client_set.identity_admin.tenants.get(self.tenant.id)\
                .AndReturn(self.tenant)
        images.auth.client_set_for_tenant(self.tenant.id,
                                          fallback_to_api=False) \
                .AndReturn(tcs)
        tcs.image.images.list(filters={'is_public': None}) \
                .AndReturn(['ii1'])
        images._image_to_view('ii1', self.tenant).AndReturn('I1')

        self.mox.ReplayAll()
        rv = self.client.get(u'/v1/images/?project:for=%s' % self.tenant.id)
        data = self.check_and_parse_response(rv)
        self.assertEquals(data.get('images'), ['I1'])
예제 #11
0
    def test_list_for_project(self):
        tcs = mock_client_set(self.mox)
        tenant = self.tenants[1]

        self.fake_client_set.identity_admin.tenants.get(tenant.id).AndReturn(tenant)
        images.auth.client_set_for_tenant(tenant.id, fallback_to_api=True).AndReturn(tcs)
        tcs.image.images.list(filters={"is_public": None}).AndReturn(["ii1", "ii2"])
        images._image_to_view("ii1", self.tenants[0]).AndReturn("I1")
        images._image_to_view("ii2", self.tenants[1]).AndReturn("I2")

        expected = {u"collection": {u"name": u"images", u"size": 2}, u"images": ["I1", "I2"]}

        self.mox.ReplayAll()
        rv = self.client.get(u"/v1/images/?project:for=%s" % tenant.id)
        data = self.check_and_parse_response(rv)
        self.assertEquals(data, expected)
예제 #12
0
    def test_create_local_image(self):
        params = {
            u"name": u"TestImage",
            u"project": u"PROJECT_ID",
            u"disk-format": u"raw",
            u"container-format": u"bare",
        }
        tcs = mock_client_set(self.mox)

        images.auth.client_set_for_tenant(u"PROJECT_ID").AndReturn(tcs)
        tcs.image.images.create(
            name=u"TestImage", disk_format=u"raw", container_format=u"bare", is_public=False, properties={}
        ).AndReturn("QueuedImage")
        images._image_to_view("QueuedImage").AndReturn("REPLY")

        self.mox.ReplayAll()
        data = self.interact(params)
        self.assertEquals(data, "REPLY")
예제 #13
0
    def test_list_in_project(self):
        # differs with previous only in request argument
        tcs = mock_client_set(self.mox)
        fake_image_dict = {
            'name': 'I1',
            'project': { 'id': self.tenant.id }
        }

        self.fake_client_set.identity_admin.tenants.get(self.tenant.id)\
                .AndReturn(self.tenant)
        images.auth.client_set_for_tenant(self.tenant.id,
                                          fallback_to_api=False) \
                .AndReturn(tcs)
        tcs.image.images.list(filters={'is_public': False}) \
                .AndReturn(['ii1'])
        images._image_to_view('ii1', self.tenant).AndReturn(fake_image_dict)

        self.mox.ReplayAll()
        rv = self.client.get(u'/v1/images/?project:in=%s' % self.tenant.id)
        data = self.check_and_parse_response(rv)
        self.assertEquals(data.get('images'), [fake_image_dict])
예제 #14
0
    def test_global_ami_image_to_view(self):
        image_properties = {
            u'image_location': u'local',
            u'kernel_id': u'KERNEL',
            u'ramdisk_id': u'RAMDISK',
            u'architecture': u'x86_64',
        }
        image = doubles.make(self.mox, doubles.Image,
                             id=u'IMAGE', name=u'TestImage', size=123456,
                             owner=None, created_at='2012-10-15T01:43:00',
                             disk_format=u'ami', container_format=u'ami',
                             checksum='831a05f7bdeadbabe5l1k3133715e7ea',
                             status=u'active', properties=image_properties)
        kernel = doubles.make(self.mox, doubles.Image,
                              id=u'KERNEL', name=u'TestKernel',
                              disk_format=u'aki', container_format=u'aki')
        ramdisk = doubles.make(self.mox, doubles.Image,
                               id=u'RAMDISK', name=u'TestRamdisk',
                               disk_format=u'ari', container_format=u'ari')
        expected = {
            u'id': u'IMAGE',
            u'href': '/v1/images/IMAGE',
            u'data-href': '/v1/images/IMAGE/data',
            u'name': u'TestImage',
            u'global': True,
            u'created': datetime(2012, 10, 15, 01, 43, 00),
            u'disk-format': u'ami',
            u'container-format': u'ami',
            u'md5sum': '831a05f7bdeadbabe5l1k3133715e7ea',
            u'size': 123456,
            u'status': u'active',
            u'kernel': {
                u'id': u'KERNEL',
                u'name': u'TestKernel',
                u'href': '/v1/images/KERNEL'
            },
            u'ramdisk': {
                u'id': u'RAMDISK',
                u'name': u'TestRamdisk',
                u'href': '/v1/images/RAMDISK'
            }
        }

        images_mgr = self.fake_client_set.image.images
        images_mgr.get(u'KERNEL').AndReturn(kernel)
        images_mgr.get(u'RAMDISK').AndReturn(ramdisk)

        self.mox.ReplayAll()
        with self.app.test_request_context():
            self.install_fake_auth()
            image.owner = images.auth.default_tenant_id()
            data = images._image_to_view(image)
        self.assertEquals(data, expected)
예제 #15
0
    def test_create_local_image(self):
        params = {
            u'name': u'TestImage',
            u'project': u'PROJECT_ID',
            u'disk-format': u'raw',
            u'container-format': u'bare',
        }
        tcs = mock_client_set(self.mox)

        images.auth.client_set_for_tenant(u'PROJECT_ID').AndReturn(tcs)
        tcs.image.images.create(
            name=u'TestImage',
            disk_format=u'raw',
            container_format=u'bare',
            is_public=False,
            properties={}).AndReturn('QueuedImage')
        images._image_to_view('QueuedImage').AndReturn('REPLY')

        self.mox.ReplayAll()
        data = self.interact(params)
        self.assertEquals(data, 'REPLY')
예제 #16
0
    def test_list_works(self):
        client = self.fake_client_set

        client.identity_public.tenants.list().AndReturn([self.tenant])
        images.auth.default_tenant_id().AndReturn('SYS')
        client.image.images.list(filters={'is_public': None})\
                .AndReturn(self.images)

        images._image_to_view(self.images[0], None).AndReturn('I1')
        images._image_to_view(self.images[1],
                                self.tenant).AndReturn('I2')
        images._image_to_view(self.images[2],
                                self.tenant).AndReturn('I3')

        expected = {
            u'collection': {
                u'name': u'images',
                u'size': 3
            },
            u'images': [ 'I1', 'I2', 'I3' ]
        }

        self.mox.ReplayAll()
        rv = self.client.get(u'/v1/images/')
        data = self.check_and_parse_response(rv)
        self.assertEquals(data, expected)
예제 #17
0
    def test_list_works(self):
        client = self.fake_client_set

        client.identity_public.tenants.list().AndReturn([self.tenant])
        images.auth.default_tenant_id().AndReturn("SYS")
        client.image.images.list(filters={"is_public": None}).AndReturn(self.images)

        images._image_to_view(self.images[0], None).AndReturn("I1")
        images._image_to_view(self.images[1], self.tenant).AndReturn("I2")
        images._image_to_view(self.images[2], self.tenant).AndReturn("I3")

        expected = {u"collection": {u"name": u"images", u"size": 3}, u"images": ["I1", "I2", "I3"]}

        self.mox.ReplayAll()
        rv = self.client.get(u"/v1/images/")
        data = self.check_and_parse_response(rv)
        self.assertEquals(data, expected)
예제 #18
0
                u'id': u'TENANT',
                u'name': u'TestTenant',
                u'href': '/v1/projects/TENANT'
            },
            u'created': datetime(2012, 10, 15, 01, 43, 00),
            u'disk-format': u'raw',
            u'container-format': u'bare',
            u'md5sum': '831a05f7bdeadbabe5l1k3133715e7ea',
            u'size': 123456,
            u'status': u'active',
        }

        self.mox.ReplayAll()
        with self.app.test_request_context():
            self.install_fake_auth()
            data = images._image_to_view(image, tenant)
        self.assertEquals(data, expected)

    def test_global_image_to_view(self):
        image = doubles.make(self.mox, doubles.Image,
                             id=u'IMAGE', name=u'TestImage', size=123456,
                             owner=None, created_at='2012-10-15T01:43:00',
                             disk_format=u'raw', container_format=u'bare',
                             checksum='831a05f7bdeadbabe5l1k3133715e7ea',
                             status=u'active')
        expected = {
            u'id': u'IMAGE',
            u'href': '/v1/images/IMAGE',
            u'data-href': '/v1/images/IMAGE/data',
            u'name': u'TestImage',
            u'global': True,
예제 #19
0
            u"data-href": "/v1/images/IMAGE/data",
            u"name": u"TestImage",
            u"global": False,
            u"project": {u"id": u"TENANT", u"name": u"TestTenant", u"href": "/v1/projects/TENANT"},
            u"created": datetime(2012, 10, 15, 01, 43, 00),
            u"disk-format": u"raw",
            u"container-format": u"bare",
            u"md5sum": "831a05f7bdeadbabe5l1k3133715e7ea",
            u"size": 123456,
            u"status": u"active",
        }

        self.mox.ReplayAll()
        with self.app.test_request_context():
            self.install_fake_auth()
            data = images._image_to_view(image, tenant)
        self.assertEquals(data, expected)

    def test_global_image_to_view(self):
        image = doubles.make(
            self.mox,
            doubles.Image,
            id=u"IMAGE",
            name=u"TestImage",
            size=123456,
            owner=None,
            created_at="2012-10-15T01:43:00",
            disk_format=u"raw",
            container_format=u"bare",
            checksum="831a05f7bdeadbabe5l1k3133715e7ea",
            status=u"active",