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 -- Libvir-list mailing list Libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list