[libvirt] [test-API][PATCH] Add volume resize case with delta flag

Guannan Ren gren at redhat.com
Tue Jan 15 05:12:25 UTC 2013


On 01/07/2013 04:58 PM, Wayne Sun wrote:
> Only storage backend for RBD (RADOS Block Device), FS and directory
> have the resizeVol function, so only testing dir volume here.
>
> Flags 'allocate' and 'shrik' are with bug:
> https://bugzilla.redhat.com/show_bug.cgi?id=804516
> they are not supported yet, so leave the case for later.
>
> * using volume resize API with flag VIR_STORAGE_VOL_RESIZE_DELTA
> * using volume info API to get volume info and check
> * add dir volume resize conf
>
> Signed-off-by: Wayne Sun <gsun at redhat.com>
> ---
>   cases/storage_dir_vol_resize_delta.conf |   47 +++++++++++++++++++
>   repos/storage/vol_resize_delta.py       |   75 +++++++++++++++++++++++++++++++
>   2 files changed, 122 insertions(+), 0 deletions(-)
>   create mode 100644 cases/storage_dir_vol_resize_delta.conf
>   create mode 100644 repos/storage/vol_resize_delta.py
>
> diff --git a/cases/storage_dir_vol_resize_delta.conf b/cases/storage_dir_vol_resize_delta.conf
> new file mode 100644
> index 0000000..58e15bf
> --- /dev/null
> +++ b/cases/storage_dir_vol_resize_delta.conf
> @@ -0,0 +1,47 @@
> +storage:create_dir_pool
> +    poolname
> +        $defaultpoolname
> +
> +storage:create_dir_volume
> +    poolname
> +        $defaultpoolname
> +    volname
> +        $defaultvolumename
> +    volformat
> +        $defaultvolumetype
> +    capacity
> +        $defaultvolumesize
> +
> +storage:vol_resize_delta
> +    poolname
> +        $defaultpoolname
> +    volname
> +        $defaultvolumename
> +    capacity
> +        1M
> +
> +storage:vol_resize_delta
> +    poolname
> +        $defaultpoolname
> +    volname
> +        $defaultvolumename
> +    capacity
> +        2G
> +
> +storage:vol_resize_delta
> +    poolname
> +        $defaultpoolname
> +    volname
> +        $defaultvolumename
> +    capacity
> +        4096K
> +
> +storage:delete_dir_volume
> +    poolname
> +        $defaultpoolname
> +    volname
> +        $defaultvolumename
> +
> +storage:destroy_pool
> +    poolname
> +        $defaultpoolname
> diff --git a/repos/storage/vol_resize_delta.py b/repos/storage/vol_resize_delta.py
> new file mode 100644
> index 0000000..a87941e
> --- /dev/null
> +++ b/repos/storage/vol_resize_delta.py
> @@ -0,0 +1,75 @@
> +#!/usr/bin/env python
> +# volume resize testing with delta flags, libvirt storage
> +# driver only support dir now
> +
> +import libvirt
> +from libvirt import libvirtError
> +
> +from src import sharedmod
> +from utils import utils
> +
> +required_params = ('poolname', 'volname', 'capacity',)
> +optional_params = {}
> +
> +def vol_resize_delta(params):
> +    """test volume resize with delta flags"""
> +
> +    global logger
> +    logger = params['logger']
> +    poolname = params['poolname']
> +    volname = params['volname']
> +    capacity = params['capacity']
> +
> +    logger.info("the poolname is %s, volname is %s" %
> +                (poolname, volname))
> +
> +    logger.info("the capacity given is %s" % capacity)
> +    out = utils.get_capacity_suffix_size(capacity)
> +    capacity_val = out['capacity_byte']
> +    logger.debug("the capacity to byte is %s" % capacity_val)
> +
> +    conn = sharedmod.libvirtobj['conn']
> +    try:
> +        poolobj = conn.storagePoolLookupByName(poolname)
> +        vol = poolobj.storageVolLookupByName(volname)
> +
> +        logger.info("get volume info before resize")
> +        out = vol.info()
> +        pre_capacity = out[1]
> +        pre_allocation = out[2]
> +        logger.info("volume capacity is %s bytes, allocation is %s bytes" %
> +                    (pre_capacity, pre_allocation))
> +
> +        flag = libvirt.VIR_STORAGE_VOL_RESIZE_DELTA
> +        logger.info("resize %s with capacity %s in pool %s using flag: %s"
> +                    % (volname, capacity, poolname, flag))
> +
> +        vol.resize(capacity_val, flag)
> +
> +        logger.info("get volume info after resize")
> +        out = vol.info()
> +        post_capacity = out[1]
> +        post_allocation = out[2]
> +        logger.info("volume capacity is %s bytes, allocation is %s bytes" %
> +                    (post_capacity, post_allocation))
> +
> +        logger.info("check resize effect")
> +        if post_capacity - pre_capacity == capacity_val:
> +            logger.info("increased size is expected")
> +        else:
> +            logger.error("increase size not equal to set, resize failed")
> +            return 1
> +
> +        if pre_allocation == post_allocation:
> +            logger.info("allocation is expected")
> +        else:
> +            logger.error("allocation changed, resize failed")
> +            return 1
> +
> +        logger.info("resize succeed")
> +
> +    except libvirtError, e:
> +        logger.error("libvirt call failed: " + str(e))
> +        return 1
> +
> +    return 0

     ACK and pushed.
     Thanks.

     Guannan




More information about the libvir-list mailing list