Beispiel #1
0
    def test_3(self):
        """
        Test error conditions in volume pools
        """
        manager = VolumeManager()
        manager.create_pool("testpool2", "1", None)
        volname1 = manager.get_from_pool("testpool2", "t1")
        logger.debug("Got the following volume {}".format(volname1))

        # get from pool with the same ref should give a different vol
        volname2 = manager.get_from_pool("testpool2", "t1")
        self.assertNotEquals(volname1, volname2)
        manager.put_in_pool("testpool2", volname2)

        # now try to delete a pool with an active reference
        with self.assertRaises(AXVolumeException):
            manager.delete_pool("testpool2")
        logger.debug(manager.get_pools_for_unit_test())

        # put an invalid pvc back in pool
        with self.assertRaises(AssertionError):
            manager.put_in_pool("testpool2", "somevolname")
        manager.put_in_pool("testpool2", volname1)

        # delete a non existent pool should not raise an error
        manager.delete_pool("testpool")
        manager.delete_pool("testpool2")

        # now that pool is deleted, get from it
        with self.assertRaises(KeyError):
            manager.get_from_pool("testpool2", "t2")
Beispiel #2
0
def volumepool_create(pool_name):
    manager = VolumeManager()
    (size_str, ) = _get_required_arguments('size')
    (attributes, ) = _get_optional_arguments('attributes')
    size = int(size_str)
    if attributes:
        assert isinstance(attributes, dict), "attributes must be a dictionary"
    manager.create_pool(pool_name, size, attributes)
    return jsonify(result="ok")
Beispiel #3
0
 def test_2(self):
     """
     Basic test for volume pools
     """
     manager = VolumeManager()
     manager.create_pool("testpool1", "1", None)
     volname1 = manager.get_from_pool("testpool1", "test1")
     logger.debug("Got the following volume for test1 {}".format(volname1))
     volname2 = manager.get_from_pool("testpool1", "test2")
     logger.debug("Got the following volume for test2 {}".format(volname2))
     manager.put_in_pool("testpool1", volname1)
     manager.put_in_pool("testpool1", volname2)
     manager.delete_pool("testpool1")
Beispiel #4
0
    def test_4(self):
        """
        Test conditions that involve marking a volume for deletion
        """
        manager = VolumeManager()
        manager.create_pool("testdeletion", "2", None)
        volname1 = manager.get_from_pool("testdeletion", "ref1")

        # this resizes the pool causing volname1 to be marked for deletion
        manager.create_pool("testdeletion", "3", None)
        volname2 = manager.get_from_pool("testdeletion", "ref2")

        # volname1 should not be deleted
        manager.put_in_pool("testdeletion", volname1)

        # volname2 is put back in pool
        manager.put_in_pool("testdeletion", volname2)

        # volume pool can be deleted as it has no refs
        manager.delete_pool("testdeletion")