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')
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')
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)
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')
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)
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)
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)
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')
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)