'Create a volume and wait for it to become \'available\'.
:param image_ref: Specify an image id to create a bootable volume.
:**kwargs: other parameters to create volume.
:returns: The available volume.'

@classmethod
def create_volume(cls, image_ref=None, **kwargs):

    if ('size' not in kwargs):
        kwargs['size'] = CONF.volume.volume_size
    if ('display_name' not in kwargs):
        vol_name = data_utils.rand_name((cls.__name__ + '-volume'))
        kwargs['display_name'] = vol_name
    if (image_ref is not None):
        kwargs['imageRef'] = image_ref
    volume = cls.volumes_client.create_volume(**kwargs)['volume']
    cls.volumes.append(volume)
    waiters.wait_for_volume_resource_status(cls.volumes_client, volume['id'], 'available')
    return volume
