예제 #1
0
    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()
예제 #2
0
    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()
예제 #3
0
    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)
예제 #4
0
    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)