コード例 #1
0
    def test_update_project_limits(self):
        tenant = doubles.make(self.mox,
                              doubles.Tenant,
                              id=self.tenant_id,
                              name='old name',
                              description='old description')
        gb = 1024 * 1024 * 1024
        params = {
            u'cpus-limit': 13,
            u'ram-limit': 11 * gb,
            u'instances-limit': 8
        }

        self.fake_client_set.identity_admin \
            .tenants.get(self.tenant_id).AndReturn(tenant)
        self.fake_client_set.compute.quotas.update(self.tenant_id,
                                                   instances=8,
                                                   ram=11 * 1024,
                                                   cores=13)

        projects._network_for_project(self.tenant_id).AndReturn('NET')
        projects._quotaset_for_project(self.tenant_id).AndReturn('QUOTA')
        projects._project_to_view(tenant, 'NET', 'QUOTA')\
                .AndReturn('UPDATED')

        self.mox.ReplayAll()
        data = self.interact(params)
        self.assertEquals(data, 'UPDATED')
コード例 #2
0
    def test_project_creation_works(self):
        self.mox.StubOutWithMock(projects, '_project_to_view')
        self.mox.StubOutWithMock(projects, '_quotaset_for_project')

        networks = self.fake_client_set.compute.networks
        tenants = self.fake_client_set.identity_admin.tenants
        tenant = doubles.make(self.mox,
                              doubles.Tenant,
                              name=self.name,
                              id='PID',
                              description=self.description)

        networks.get(self.net_id).AndReturn(
            doubles.make(self.mox,
                         doubles.Network,
                         label='NETLABEL',
                         id=self.net_id,
                         project_id=None))
        tenants.create(self.name, self.description).AndReturn(tenant)
        networks.associate(self.net_id, tenant.id)

        networks.get(self.net_id).AndReturn('UPDATED NETWORK')
        projects._quotaset_for_project(tenant.id).AndReturn('QUOTA')
        projects._project_to_view(tenant, 'UPDATED NETWORK', 'QUOTA')\
                .AndReturn('REPLY')

        self.mox.ReplayAll()

        data = self.interact()
        self.assertEquals(data, 'REPLY')
コード例 #3
0
    def test_project_creation_works(self):
        self.mox.StubOutWithMock(projects, '_project_to_view')
        self.mox.StubOutWithMock(projects, '_quotaset_for_project')

        networks = self.fake_client_set.compute.networks
        tenants = self.fake_client_set.identity_admin.tenants
        tenant = doubles.make(self.mox, doubles.Tenant,
                              name=self.name, id='PID',
                              description=self.description)

        networks.get(self.net_id).AndReturn(
            doubles.make(self.mox, doubles.Network,
                         label='NETLABEL', id=self.net_id, project_id=None))
        tenants.create(self.name, self.description).AndReturn(tenant)
        networks.associate(self.net_id, tenant.id)

        networks.get(self.net_id).AndReturn('UPDATED NETWORK')
        projects._quotaset_for_project(tenant.id).AndReturn('QUOTA')
        projects._project_to_view(tenant, 'UPDATED NETWORK', 'QUOTA')\
                .AndReturn('REPLY')

        self.mox.ReplayAll()

        data = self.interact()
        self.assertEquals(data, 'REPLY')
コード例 #4
0
    def test_get_all_projects(self):
        tenants = (
            doubles.make(self.mox, doubles.Tenant, name=u'tnt1', id=u't1'),
            doubles.make(self.mox, doubles.Tenant, name=u'tnt2', id=u't2'),
            doubles.make(self.mox, doubles.Tenant,
                         name=u'systenant', id=u'SYSTENANT_ID'))
        nets = (
            self.net(label=u'net2', id=u'netid2', project_id=u't2'),
            self.net(label=u'net_', id=u'netid_', project_id=None),  # unused
            self.net(label=u'net1', id=u'netid1', project_id=u't1'))

        self.tm_mock.list().AndReturn(tenants)
        self.nm_mock.list().AndReturn(nets)
        projects._quotaset_for_project(u't1').AndReturn('QUOTA1')
        projects._project_to_view(tenants[0], nets[2], 'QUOTA1')\
                .AndReturn('PROJECT1')

        projects._quotaset_for_project(u't2').AndReturn('QUOTA2')
        projects._project_to_view(tenants[1], nets[0], 'QUOTA2')\
                .AndReturn('PROJECT2')

        expected = {
            u'collection': {
                u'name': u'projects',
                u'size': 2
            },
            u'projects': [ 'PROJECT1', 'PROJECT2' ]
        }

        self.mox.ReplayAll()

        rv = self.client.get('/v1/projects/')
        data = self.check_and_parse_response(rv)
        self.assertEquals(data, expected)
コード例 #5
0
    def test_get_project(self):
        tenant = doubles.make(self.mox, doubles.Tenant,
                              name=u'name', id=u'pid')

        self.tm_mock.find(id=u'pid').AndReturn(tenant)
        projects._quotaset_for_project(u'pid').AndReturn('QUOTA')
        projects._network_for_project(u'pid').AndReturn('FAKE_NETWORK')
        projects._project_to_view(tenant, 'FAKE_NETWORK', 'QUOTA') \
                .AndReturn('FAKE_PROJECT')

        self.mox.ReplayAll()

        rv = self.client.get('/v1/projects/pid')
        data = self.check_and_parse_response(rv)
        self.assertEquals(data, 'FAKE_PROJECT')
コード例 #6
0
    def test_project_to_view_no_quota(self):
        tenant = doubles.make(self.mox,
                              doubles.Tenant,
                              id=u'c4fc65e',
                              name=u'Project X')
        net = doubles.make(self.mox,
                           doubles.Network,
                           label=u'net22',
                           id=u'2699a5')

        expected = {
            u'id': u'c4fc65e',
            u'href': u'/v1/projects/c4fc65e',
            u'name': u'Project X',
            u'description': u'Rather long description.',
            u'links': {
                u'manage-users': '/v1/projects/c4fc65e/users/',
                u'stats': '/v1/stats/by-project/c4fc65e'
            },
            u'network': {
                u'id': u'2699a5',
                u'name': u'net22',
                u'href': u'/v1/networks/2699a5'
            }
        }

        with self.app.test_request_context():
            result = projects._project_to_view(tenant, net, None)
        self.assertEquals(expected, result)
コード例 #7
0
    def test_project_to_view_no_network(self):
        tenant = doubles.make(self.mox,
                              doubles.Tenant,
                              id=u'c4fc65e',
                              name=u'Project X')
        quotaset = doubles.make(self.mox, doubles.QuotaSet)

        gb = 1024 * 1024 * 1024
        expected = {
            u'id': u'c4fc65e',
            u'href': u'/v1/projects/c4fc65e',
            u'name': u'Project X',
            u'description': u'Rather long description.',
            u'cpus-limit': 33,
            u'ram-limit': 50 * gb,
            u'instances-limit': 10,
            u'links': {
                u'manage-users': '/v1/projects/c4fc65e/users/',
                u'stats': '/v1/stats/by-project/c4fc65e'
            },
            'network': None
        }

        with self.app.test_request_context():
            result = projects._project_to_view(tenant, None, quotaset)
        self.assertEquals(expected, result)
コード例 #8
0
    def test_project_to_view_no_quota(self):
        tenant = doubles.make(self.mox, doubles.Tenant,
            id=u'c4fc65e', name=u'Project X')
        net = doubles.make(self.mox, doubles.Network,
                           label=u'net22', id=u'2699a5')

        expected = {
            u'id': u'c4fc65e',
            u'href': u'/v1/projects/c4fc65e',
            u'name': u'Project X',
            u'description': u'Rather long description.',
            u'links': {
                u'manage-users': '/v1/projects/c4fc65e/users/',
                u'stats': '/v1/stats/by-project/c4fc65e'
            },
            u'network': {
                u'id': u'2699a5',
                u'name': u'net22',
                u'href': u'/v1/networks/2699a5'
            }
        }

        with self.app.test_request_context():
            result = projects._project_to_view(tenant, net, None)
        self.assertEquals(expected, result)
コード例 #9
0
    def test_project_to_view_works(self):
        tenant = doubles.make(self.mox, doubles.Tenant,
            id=u'c4fc65e', name=u'Project X')
        net = doubles.make(self.mox, doubles.Network,
                           label=u'net22', id=u'2699a5')
        quotaset = doubles.make(self.mox, doubles.QuotaSet)

        gb = 1024 * 1024 * 1024
        expected = {
            u'id': u'c4fc65e',
            u'href': u'/v1/projects/c4fc65e',
            u'name': u'Project X',
            u'description': u'Rather long description.',
            u'cpus-limit': 33,
            u'ram-limit': 50 * gb,
            u'instances-limit': 10,
            u'links': {
                u'manage-users': '/v1/projects/c4fc65e/users/',
                u'stats': '/v1/stats/by-project/c4fc65e'
            },
            u'network': {
                u'id': u'2699a5',
                u'name': u'net22',
                u'href': u'/v1/networks/2699a5'
            }
        }

        with self.app.test_request_context():
            result = projects._project_to_view(tenant, net, quotaset)
        self.assertEquals(expected, result)
コード例 #10
0
    def test_get_project(self):
        tenant = doubles.make(self.mox,
                              doubles.Tenant,
                              name=u'name',
                              id=u'pid')

        self.tm_mock.find(id=u'pid').AndReturn(tenant)
        projects._quotaset_for_project(u'pid').AndReturn('QUOTA')
        projects._network_for_project(u'pid').AndReturn('FAKE_NETWORK')
        projects._project_to_view(tenant, 'FAKE_NETWORK', 'QUOTA') \
                .AndReturn('FAKE_PROJECT')

        self.mox.ReplayAll()

        rv = self.client.get('/v1/projects/pid')
        data = self.check_and_parse_response(rv)
        self.assertEquals(data, 'FAKE_PROJECT')
コード例 #11
0
    def test_update_project_updates(self):
        tenant = doubles.make(self.mox, doubles.Tenant,
                              id=self.tenant_id, name='old name',
                              description='old description')

        updated = doubles.make(self.mox, doubles.Tenant,
                               id=self.tenant_id, name='old name',
                               description='new description')

        self.fake_client_set.identity_admin \
            .tenants.get(self.tenant_id).AndReturn(tenant)
        tenant.update(description=updated.description).AndReturn(updated)
        projects._network_for_project(self.tenant_id).AndReturn('NET')
        projects._quotaset_for_project(self.tenant_id).AndReturn('QUOTA')
        projects._project_to_view(updated, 'NET', 'QUOTA')\
                .AndReturn('UPDATED')

        self.mox.ReplayAll()
        data = self.interact({'description': updated.description})
        self.assertEquals(data, 'UPDATED')
コード例 #12
0
    def test_get_all_projects(self):
        tenants = (doubles.make(self.mox,
                                doubles.Tenant,
                                name=u'tnt1',
                                id=u't1'),
                   doubles.make(self.mox,
                                doubles.Tenant,
                                name=u'tnt2',
                                id=u't2'),
                   doubles.make(self.mox,
                                doubles.Tenant,
                                name=u'systenant',
                                id=u'SYSTENANT_ID'))
        nets = (
            self.net(label=u'net2', id=u'netid2', project_id=u't2'),
            self.net(label=u'net_', id=u'netid_', project_id=None),  # unused
            self.net(label=u'net1', id=u'netid1', project_id=u't1'))

        self.tm_mock.list().AndReturn(tenants)
        self.nm_mock.list().AndReturn(nets)
        projects._quotaset_for_project(u't1').AndReturn('QUOTA1')
        projects._project_to_view(tenants[0], nets[2], 'QUOTA1')\
                .AndReturn('PROJECT1')

        projects._quotaset_for_project(u't2').AndReturn('QUOTA2')
        projects._project_to_view(tenants[1], nets[0], 'QUOTA2')\
                .AndReturn('PROJECT2')

        expected = {
            u'collection': {
                u'name': u'projects',
                u'size': 2
            },
            u'projects': ['PROJECT1', 'PROJECT2']
        }

        self.mox.ReplayAll()

        rv = self.client.get('/v1/projects/')
        data = self.check_and_parse_response(rv)
        self.assertEquals(data, expected)
コード例 #13
0
    def test_update_project_updates(self):
        tenant = doubles.make(self.mox,
                              doubles.Tenant,
                              id=self.tenant_id,
                              name='old name',
                              description='old description')

        updated = doubles.make(self.mox,
                               doubles.Tenant,
                               id=self.tenant_id,
                               name='old name',
                               description='new description')

        self.fake_client_set.identity_admin \
            .tenants.get(self.tenant_id).AndReturn(tenant)
        tenant.update(description=updated.description).AndReturn(updated)
        projects._network_for_project(self.tenant_id).AndReturn('NET')
        projects._quotaset_for_project(self.tenant_id).AndReturn('QUOTA')
        projects._project_to_view(updated, 'NET', 'QUOTA')\
                .AndReturn('UPDATED')

        self.mox.ReplayAll()
        data = self.interact({'description': updated.description})
        self.assertEquals(data, 'UPDATED')
コード例 #14
0
    def test_update_project_limits(self):
        tenant = doubles.make(self.mox, doubles.Tenant,
                              id=self.tenant_id, name='old name',
                              description='old description')
        gb = 1024 * 1024 * 1024
        params = {
            u'cpus-limit': 13,
            u'ram-limit': 11 * gb,
            u'instances-limit': 8
        }

        self.fake_client_set.identity_admin \
            .tenants.get(self.tenant_id).AndReturn(tenant)
        self.fake_client_set.compute.quotas.update(self.tenant_id,
            instances=8, ram=11 * 1024, cores=13)

        projects._network_for_project(self.tenant_id).AndReturn('NET')
        projects._quotaset_for_project(self.tenant_id).AndReturn('QUOTA')
        projects._project_to_view(tenant, 'NET', 'QUOTA')\
                .AndReturn('UPDATED')

        self.mox.ReplayAll()
        data = self.interact(params)
        self.assertEquals(data, 'UPDATED')