1B - Ceph Management API

Live Pad

The live pad can be found here: [pad]

Summit Snapshot

wCoding tasks (some done, see branch wip-ceph-cli for an out-of-date working branch)
If you have ideas/comments/suggestions, contact us at #ceph, or !

  1. Create command/param/help registry in monclient, export in JSON on request
    • expression language for parameter descriptions: type, name, valid ranges/values, etc.
    • make it simple to add new commands and easy to find the full list of commands supported
  2. Frontend CLI that requests command registry and validates user input, submits JSON command request
    • do as much validation upfront as possible, as generically as possible
    • write validation code such that it can be reused in REST endpoint
    • format help, provide substring help
    • allow for command-line completion (allow partial matching of input)
    • format actual command request in unambiguous complete JSON form
  3. Remove existing command validation/parsing from monclient
    • rely on front end to pass only valid commands as much as possible (some validation must talk to the cluster)
    • refactor common tasks, like selection of output format
  4. Allow all formatted commands to output JSON or XML (planning ahead for REST)
  5. Validate all existing functionality remains unchanged with much-enhanced unit tests and existing tests
  6. migration path for existing 'allow command ...' cap strings
  7. discover/describe --admin-daemon and tell commands (currently just passthru)
  8. merge to master... 0.63ish?
  9. Add command-line completion to frontend and BASH snippets
  10. Create webserver for REST endpoint (after the interface is designed) using chunks of the CLI code as needed
  11. Allow REST endpoint to respond in JSON or XML at user's request
  12. Add some appropriate sort of monitoring to the REST endpoint
  13. ability to access daemon admin socket command set via REST mgmt endpoint
  14. ability to do 'tell <name> ...'
  15. ability to access cluster event log via cli, REST mgmt endpoint
  16. ceph-deploy support for deploying a management endpoint daemon
  17. (Possible): allow client to register interest in cluster events (cluster/OSD full, daemon status change, quorum change, administrative events/change) using an unknown mechanism (perhaps a URL that can be accessed on such events, perhaps with a parameter structure to carry information about the

Build / release tasks

  1. document upgrade path: upgrade cli tool first (it can talk to either old or new mons), mons second.
  2. merge first batch of cli stuff
  3. merge rest mgmt endpoint as it finishes

Documentation tasks

  1. Fix up manpage/webdoc for CLI; decide to document each or just defer to CLI help
  2. A large pile of documentation for REST API

Deprecation tasks