On 08/29/2017 01:04 PM, Fabian Grünbichler wrote:
this patch series implements storage.cfg management for pveceph-managed ceph
clusters. the following is implemented:

- add new 'pveceph' flag to RBD storages, using /etc/pve/ceph.conf instead of
   a hard-coded monitor list
- pveceph addstorage/lsstorages/removestorage to add/list/remove storage
   entries, per pool

after rethinking the higher level changes introduced here, especially the API 
ones,
I'm not sure if that is the approach we want to go with.

API:
We duplicate semantic behavior and add another endpoint which can add remove 
and list
storages at the /nodes/{node}/ceph/pools{pool}/storages path.
This goes a bit against our single /storage entry point, you can create a 
storage with
the latter and remove it with the former – and with this series you must remove 
it with
the former if you do not touch the CLI tools – but the behavior is different.
Also, AFAIK, the storage system in PVE was designed to be at a cluster level, 
not node
level.

I think the CLI tools and their commands added would be OK, though.
But the API stuff should really go into /storages, IMO, this would be cleaner 
API design.
Adding a pool to a storage over this path seems unfitting. And if we ever would 
like to have
a separate Storage Management project, splitting this out would be quite harder 
with such a
coupling. IMO, /storages should be there for managing the storage configuration 
and

GUI:
Initially just the naming of the button was what took me off, but after 
re-thinking this
the "Add as Storage" (named "Create Storage" in the current revision of this 
series)
does not fit in the Node->Ceph->Pool panel.
You do not manage storages here, you do not see a clear effect after the this 
Creation
window was submitted. Normally we only add/create/remove elements in the GUI 
which are
on the same Panel visible – i.e. we have a grid with those elements.
Here we have a grid with pools but can configure a storage, where you get no 
direct
feedback of said addition. You could argue that it pops up in the resource 
tree, but that
may not be visible in the non-trivial setup case (too much VMs/CTs, another 
tree view used,
tree collapsed).


My proposal about how the GUI could incorporate easier pveceph pool is to use 
the now
existing "Add RBD" dialog from Datacenter->Storage and make the ID window an 
editable
combo box, which lists all pools configured by pveceph and allows specifying an 
external
one. Respective to the selction a "pveceph" boolean flag (or therelike) can be 
passed.

The "Add Storages" from the Pool creation window could stay, but should use a new 
"storage"
parameter in the create ceph/pool API path.
That's how we do it for assigning a newly created VM/CT to a PVE pool, as it 
the cleaner
approach, IMO.

API wise I would put into the RBD Storage plugin, currently that should be no 
problem,
as only the keyring part needs to be handled? If we need to do more here I'd 
rather
choose the way of moving our PVE::Ceph perl modules higher up (into own 
package, e.g.)
and use them also there?

Just my thoughts to this.

- optionally adding/removing storages when creating/destroying a pool
- GUI support

high-level changes since v1:
- pveceph flag is now doing its magic on the storage plugin side as well, no
   more need to update the monhost string when adding/removing a monitor (thanks
   for the suggestion Dietmar!)
- createpool/destroypool are now using a worker
- treat more failures as fatal in API paths
- {name} API placeholder for pool names is now {pool}
- includes and extends Dominik's GUI patches to support the new functionality

patches 2-4, 17, 19-21, 26 and 27 are new
patches 22-25 are from Dominik's 'ceph pool storage creation in gui' series
the old patches 2, 3, 5, 8 and 20 were dropped altogether



pve-storage:

Fabian Grünbichler (4):
   rbd: add pveceph storage option
   rbd: make monhost option optional
   refactor cmdline helpers
   rbd: implement pveceph flag handling

  PVE/Storage/RBDPlugin.pm | 90 ++++++++++++++++++++++++++++--------------------
  1 file changed, 53 insertions(+), 37 deletions(-)


base-commit: 5a2eba91dcaec0ba68052579d5e0e4ebcb499ff5



pve-manager:

Dominik Csapak (4):
   add a params object to the safedestroy window
   add create storages checkbox to ceph pool creation
   add remove_storages parameter to the pool destruction
   add a 'create storage' button for ceph pools

Fabian Grünbichler (19):
   ceph: add /etc/pve/priv/ceph path
   ceph: add add_storage helper
   ceph: add get_storages helper
   ceph: add remove_storage helper
   ceph: implement addstorage API path
   pveceph: add addstorage CLI command
   ceph: implement lsstorages API path
   pveceph: add lsstorages CLI command
   ceph: implement removestorage API path
   pveceph: add removestorage CLI command
   ceph/createpool: shorten pool variable name
   ceph/createpool: optionally add storages
   ceph/destroypool: shorten pool variable name
   ceph/destroypool: optionally remove storages
   ceph: rename API placeholder 'name' to 'pool'
   ceph: make create/destroypool API paths async
   add task description for cephcreatepool
   add showProgress to SafeDestroy
   enable showProgress for create/destroy pool

  PVE/API2/Ceph.pm                   | 367 +++++++++++++++++++++++++++++++------
  PVE/CLI/pveceph.pm                 |  24 ++-
  PVE/CephTools.pm                   |   2 +
  www/manager6/Utils.js              |   1 +
  www/manager6/ceph/Pool.js          |  78 +++++++-
  www/manager6/window/SafeDestroy.js |  41 ++++-
  6 files changed, 455 insertions(+), 58 deletions(-)


base-commit: f9346961588e086a9cc86d00c16f7f3d0a77c878




_______________________________________________
pve-devel mailing list
[email protected]
https://pve.proxmox.com/cgi-bin/mailman/listinfo/pve-devel

Reply via email to