def test_set_quota(self): """ Tests cluster.set_quota() Verifies: * passing values with no quota, creates a new quota object * passing values with an existing quota, updates it. * passing a None with an existing quota deletes it * passing a None with no quota, does nothing """ default_quota = { 'default': 1, 'ram': 1, 'virtual_cpus': None, 'disk': 3 } user_quota = {'default': 0, 'ram': 4, 'virtual_cpus': 5, 'disk': None} user_quota2 = {'default': 0, 'ram': 7, 'virtual_cpus': 8, 'disk': 9} cluster = Cluster(hostname='foo.fake.hostname') cluster.__dict__.update(default_quota) cluster.save() user = User(username='******') user.save() # create new quota cluster.set_quota(user.get_profile(), user_quota) query = Quota.objects.filter(cluster=cluster, user=user.get_profile()) self.assertTrue(query.exists()) self.assertEqual(user_quota, cluster.get_quota(user.get_profile())) # update quota with new values cluster.set_quota(user.get_profile(), user_quota2) query = Quota.objects.filter(cluster=cluster, user=user.get_profile()) self.assertEqual(1, query.count()) self.assertEqual(user_quota2, cluster.get_quota(user.get_profile())) # delete quota cluster.set_quota(user.get_profile(), None) query = Quota.objects.filter(cluster=cluster, user=user.get_profile()) self.assertFalse(query.exists()) self.assertEqual(default_quota, cluster.get_quota(user.get_profile())) cluster.delete() user.delete()
def test_set_quota(self): """ Tests cluster.set_quota() Verifies: * passing values with no quota, creates a new quota object * passing values with an existing quota, updates it. * passing a None with an existing quota deletes it * passing a None with no quota, does nothing """ default_quota = {'default': 1, 'ram': 1, 'virtual_cpus': None, 'disk': 3} user_quota = {'default': 0, 'ram': 4, 'virtual_cpus': 5, 'disk': None} user_quota2 = {'default': 0, 'ram': 7, 'virtual_cpus': 8, 'disk': 9} cluster = Cluster(hostname='foo.fake.hostname') cluster.__dict__.update(default_quota) cluster.save() user = User(username='******') user.save() # create new quota cluster.set_quota(user.get_profile(), user_quota) query = Quota.objects.filter(cluster=cluster, user=user.get_profile()) self.assertTrue(query.exists()) self.assertEqual(user_quota, cluster.get_quota(user.get_profile())) # update quota with new values cluster.set_quota(user.get_profile(), user_quota2) query = Quota.objects.filter(cluster=cluster, user=user.get_profile()) self.assertEqual(1, query.count()) self.assertEqual(user_quota2, cluster.get_quota(user.get_profile())) # delete quota cluster.set_quota(user.get_profile(), None) query = Quota.objects.filter(cluster=cluster, user=user.get_profile()) self.assertFalse(query.exists()) self.assertEqual(default_quota, cluster.get_quota(user.get_profile())) cluster.delete() user.delete()
def test_used_resources(self): """ Tests retrieving dictionary of resources used by a cluster user """ c1 = Cluster(hostname="testing1", slug="test1") c2 = Cluster(hostname="testing2", slug="test2") c3 = Cluster(hostname="testing3", slug="test3") user = User(username="******") quota = {"disk": 26, "ram": 6, "virtual_cpus": 14} for i in (c1, c2, c3, user): i.save() owner = user.get_profile() c1.set_quota(owner, quota) c3.set_quota(owner, quota) # test used_resources returns zeros for no values result = owner.used_resources(cluster=c1) self.assertEqual(0, result['ram']) self.assertEqual(0, result['disk']) self.assertEqual(0, result['virtual_cpus']) vm11 = VirtualMachine(hostname="1one", owner=owner, cluster=c1, status="running") vm21 = VirtualMachine(hostname="2one", owner=owner, cluster=c2, status="running") vm31 = VirtualMachine(hostname="3one", owner=owner, cluster=c2, status="running") vm12 = VirtualMachine(hostname="1two", owner=owner, cluster=c1, status="running", ram=1, virtual_cpus=3, disk_size=6) vm22 = VirtualMachine(hostname="2two", owner=owner, cluster=c2, status="running", ram=1, virtual_cpus=3, disk_size=6) vm32 = VirtualMachine(hostname="3two", owner=owner, cluster=c3, status="running", ram=1, virtual_cpus=3, disk_size=6) vm13 = VirtualMachine(hostname="1three", owner=owner, cluster=c1, status="stopped", ram=1, virtual_cpus=3, disk_size=6) vm23 = VirtualMachine(hostname="2three", owner=owner, cluster=c2, status="stopped", ram=1, virtual_cpus=3, disk_size=6) vm33 = VirtualMachine(hostname="3three", owner=owner, cluster=c3, status="stopped", ram=1, virtual_cpus=3, disk_size=6) for i in (vm11, vm12, vm13, vm21, vm22, vm23, vm31, vm32, vm33): i.save() # multiple clusters - every VM result = owner.used_resources(cluster=None, only_running=False) self.assertTrue(c1.id in result.keys()) self.assertTrue(c2.id in result.keys()) self.assertTrue(c3.id in result.keys()) self.assertEqual(result[c1.id]["disk"], 12) self.assertEqual(result[c1.id]["ram"], 2) self.assertEqual(result[c1.id]["virtual_cpus"], 6) self.assertEqual(result[c1.id], result[c3.id]) # multiple clusters - only running VMs result = owner.used_resources(cluster=None, only_running=True) self.assertTrue(c1.id in result.keys()) self.assertTrue(c2.id in result.keys()) self.assertTrue(c3.id in result.keys()) self.assertEqual(result[c1.id]["disk"], 12) self.assertEqual(result[c1.id]["ram"], 1) self.assertEqual(result[c1.id]["virtual_cpus"], 3) self.assertEqual(result[c1.id], result[c3.id]) # single cluster - every VM result = owner.used_resources(cluster=c1, only_running=False) self.assertEqual(result["disk"], 12) self.assertEqual(result["ram"], 2) self.assertEqual(result["virtual_cpus"], 6) # single cluster - only running VMs result = owner.used_resources(cluster=c1, only_running=True) self.assertEqual(result["disk"], 12) self.assertEqual(result["ram"], 1) self.assertEqual(result["virtual_cpus"], 3)