On Wed, 2008-11-19 at 20:44 +0200, shahar@compal1.qumranet.com wrote:
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

What about features like
- Scanning - (PVScan/LVScan/VGScan) to discover new volume groups, LV's etc.
- Activate/Deactivate - (vgchange) to enable and disable volume groups and lv's

Or are they already present?

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


--
Libvir-list mailing list
Libvir-list@redhat.com
https://www.redhat.com/mailman/listinfo/libvir-list
Andrew Cathrow
Red Hat, Inc.

(678) 733 0452 - Mobile
(978) 392-2482 - Office

acathrow@redhat.com