[libvirt] libvirt_low_level_storage_api
by shahar@compal1.qumranet.com
Hi All, here is an initial version of the operations required for SolidICE and the proposed high level interface.
I would like to discuss how to map it to libvirt calls and what libvirt calls are missing.
Thanks,
Shahar Frank
HostLevel
---------
enumarateLuns():
return:
returns all luns visible by the host.
In case multipathing is enabled then only the multipath device should be in the return list.
enumerateISCSILuns(target):
params:
target - ISCSI target
Description:
enumerate all ISCSI luns on a specific target
return:
list of
getBlockInfo(name or UUID):
return:
at least uuid & size
enumerateVGs():
return:
VG UUID list
open issues - should we assume ISCSI auto connect or FC login?
StoragePool level
-----------------
createVolumeGroup(name, devices):
params:
name = name
devices - a list of UUIDs
description:
Should create a volume group out of the UUID list
In case multipathing is enabled then only the multipath device should be used
In case it is not a PV yet then a PV is to be created.
Return:
Uuid of the VG
removeVolumeGroup(VG):
params:
VG - uuid of the Volume group
Description:
Remove all remains for the VolumeGroup (LVs, PVs ...)
Return:
Sucsess/failure
mountNFS(server, remotePath, localPath, params)
params:
server - the NFS server name or IP
temotePath - remote server export path
localPath - local path to mount on
params - nfs mount params
description:
mounts the remote export onto the local path using the mount params
return:
success/failure
unmount(localPath, forceFlag)
params:
localPath - the local path to unmount
forceFlag - a flag indicating whether to force unmount
description:
unmounts local path (trivial)
return:
success/failure
Open issues:
1. NFS configuration persistency?
2. What happens in case the libvirt is restarted should it be reconfigured?
VolumeGroup level
-----------------
listPV(VG):
params:
VG - Volume group UUID
Description:
Lists all PV in a specific volume group
Return:
A list of PV UUIDs
infoPV(VG, PV)
params:
VG - Volume group UUID
PV - Physical volume UUID
description:
trivial
return:
returns the PV information (at least size & path)
extendVolumeGroup(VG, devices):
params:
VG - Volume Group UUID
devices - a list of UUIDs
description:
This function adds Phisical Volume to the VolumeGroup.
Each UUID device is checked, In case multipathing is enabled
then only the multipath device should be used (PV create in case
it's not) and added to the volume group
return:
success/fauilure
removePV(VG, PV):
params:
VG - Volume Group UUID
PV - Physical volume's UUID to be removed
description:
removes the physical volume
return:
success failure
LV operations
--------------
listLVs(VG):
params:
VG - Volume Group UUID
description:
trivial
return:
list of all LV UUIDs
infoLV(VG, LV):
params:
VG - Volume Group UUID
LV - Logical Volume UUID
description:
trivial
return:
returns LV information (at least size and path)
createLV(VG, LvName, size):
params:
VG - Volume Group UUID
LvName - name of the logical volume
Size - size of logical volume
description:
creates a logical volume with name LvName and the requested size
return:
LV UUID
extendLV(VG, LV, size):
params:
VG - Volume Group UUID
LV - Logical Volume UUID
description:
extends LV with additional size
return:
success/failure
removeLV(VG,LV):
params:
VG - Volume Group UUID
LV - Logical Volume UUID
description:
return:
snapshotLV(VG, LV, size):
params:
VG - Volume Group UUID
LV - Logical Volume UUID
size - Initial size of snapshot volume
description:
creeates a snapshot of LV
return:
UUID of snapshot