* Putting two patch sets into one. As `pool_raid_info()` patch set is
just preparation for `volume_create_raid()` patch set. It's better to explain
design choice with both.
* New method `pool_raid_info()` to query pool member information:
* RAID type
* Member type: disk RAID pool or sub-pool.
* Members: disks or parent pools.
* New method `volume_create_raid()` to create RAID group volume.
* New method `volume_create_raid_cap_get()` to query RAID group volume create
supported RAID type and strip sizes.
* Design notes:
* Why we need pool_raid_info() when we already have volume_raid_info()?
The `pool_raid_info()` is focus on RAID disk or sub-pool layout.
The `volume_raid_info()` is focus on providing information about host
I/O performance and availability(raid).
* Why don't create single sharable method for SAN/NAS/DAS about RAID
creation?
Please refer to design note of patch 'New feature: Create RAID volume
on hardware RAID.'
* Why no RAID creation method for SAN and NAS?
As we tried before, due to complex RAID settings of SAN and NAS
storage, I didn't find a simple design to support all of them.
* Please refer to design note of patch 'New feature: Create RAID volume'
also.
* Please comment in github page, thank you.
https://github.com/libstorage/libstoragemgmt/pull/11
Changes in V3:
* Rename pool_raid_info to pool_member_info.
* Rebased patches for the rename.
* Fix C code warning about comparing signed and unsigned integer.
* Initialized pointers in lsm_plugin_ipc.cpp and tester.c.
* Removed unused variables in tester.c.
* volume_create_raid() tested on:
* MegaRAID: RAID 0/1/5/10. # No RAID 6 license.
* HP SmartArray: RAID 0. # No additional disk.
* Document pull request:
https://github.com/libstorage/libstoragemgmt-doc/pull/3
Changes in V4:
* Rename method 'volume_create_raid' to 'volume_raid_create'.
* Fix memory leak in C API.
* Initialize pointers in C code.
* Make sure output pointer is set to sane value if error occurred in C code.
* Add bash auto completion for new lsmcli commands and aliases.
* Fix typo in comments of C and Python library.
* Use hash table to convert vendor RAID string to LSM type in hpsa and
megaraid plugins.
* Tested MegaRAID for 4 disks RAID 10 with default strip size.
Query commands is tested on MegaRAID and Smart Array.
* Document updated and C API user guide for these new methods also included:
https://github.com/libstorage/libstoragemgmt-doc/pull/3
Gris Ge (17):
New method: lsm.Client.pool_raid_info()/lsm_pool_raid_info()
lsmcli: Add new command pool-raid-info
Tests: Add test for lsm.Client.pool_raid_info() and
lsm_pool_raid_info().
Simulator Plugin: Add lsm.Client.pool_raid_info() support.
Simulator C plugin: Add lsm_pool_raid_info() support.
ONTAP Plugin: Add lsm.Client.pool_raid_info() support.
MegaRAID Plugin: Add lsm.Client.pool_raid_info() support.
HP Smart Array Plugin: Add lsm.Client.pool_raid_info() support.
Simulator Plugin: Fix pool free space calculation.
MegaRAID Plugin: Change Disk.plugin_data to parse friendly format.
New feature: Create RAID volume on hardware RAID.
lsmcli: New commands for hardware RAID volume creation.
Simulator Plugin: Add hardware RAID volume creation support.
Simulator C plugin: Sync changes of lsm_ops_v1_2 about
lsm_plug_volume_create_raid_cap_get
HP SmartArray Plugin: Add volume creation support.
MegaRAID Plugin: Add volume creation support.
Test: Hardware RAID volume creation.
c_binding/include/libstoragemgmt/libstoragemgmt.h | 89 ++++++
.../libstoragemgmt/libstoragemgmt_capabilities.h | 5 +-
.../include/libstoragemgmt/libstoragemgmt_error.h | 2 +
.../libstoragemgmt/libstoragemgmt_plug_interface.h | 84 ++++++
.../include/libstoragemgmt/libstoragemgmt_types.h | 20 ++
c_binding/lsm_convert.cpp | 41 +++
c_binding/lsm_convert.hpp | 12 +
c_binding/lsm_mgmt.cpp | 188 +++++++++++++
c_binding/lsm_plugin_ipc.cpp | 138 ++++++++-
doc/man/lsmcli.1.in | 41 +++
plugin/hpsa/hpsa.py | 239 ++++++++++++++--
plugin/megaraid/megaraid.py | 232 +++++++++++++++-
plugin/ontap/ontap.py | 21 ++
plugin/sim/simarray.py | 309 +++++++++++++--------
plugin/sim/simulator.py | 11 +
plugin/simc/simc_lsmplugin.c | 44 ++-
python_binding/lsm/_client.py | 285 +++++++++++++++++++
python_binding/lsm/_common.py | 3 +
python_binding/lsm/_data.py | 9 +
test/cmdtest.py | 75 +++++
test/plugin_test.py | 60 ++++
test/tester.c | 130 +++++++++
tools/bash_completion/lsmcli | 21 +-
tools/lsmcli/cmdline.py | 84 +++++-
tools/lsmcli/data_display.py | 77 ++++-
25 files changed, 2087 insertions(+), 133 deletions(-)
--
1.8.3.1