'Create a clone of the specified volume and return its properties.'

def create_cloned_volume(self, volume, src_vref):

    ldev = utils.get_ldev(src_vref)
    if (ldev is None):
        msg = utils.output_log(MSG.INVALID_LDEV_FOR_VOLUME_COPY, type='volume', id=src_vref['id'])
        raise exception.VSPError(msg)
    size = volume['size']
    metadata = utils.get_volume_metadata(volume)
    if (size < src_vref['size']):
        msg = utils.output_log(MSG.INVALID_VOLUME_SIZE_FOR_COPY, type='volume', volume_id=volume['id'])
        raise exception.VSPError(msg)
    elif ((size > src_vref['size']) and (not self.check_vvol(ldev)) and (self.get_copy_method(metadata) == 'THIN')):
        msg = utils.output_log(MSG.INVALID_VOLUME_SIZE_FOR_TI, copy_method=utils.THIN, type='volume', volume_id=volume['id'])
        raise exception.VSPError(msg)
    sync = (size > src_vref['size'])
    new_ldev = self._copy_ldev(ldev, src_vref['size'], metadata, sync)
    if sync:
        self.delete_pair(new_ldev)
        self.extend_ldev(new_ldev, src_vref['size'], size)
    return {'provider_location': six.text_type(new_ldev)}
