system is outside the scope of Ceph's orchestrator interface. Ceph
can only work on hosts when the orchestrator is already aware of them.
-Calls to orchestrator modules are all asynchronous, and return *completion*
-objects (see below) rather than returning values immediately.
-
Where possible, placement of stateless services should be left up to the
orchestrator.
------------------------
All methods that read or modify the state of the system can potentially
-be long running. To handle that, all such methods return a *Completion*
-object. Orchestrator modules
-must implement the *process* method: this takes a list of completions, and
-is responsible for checking if they're finished, and advancing the underlying
-operations as needed.
+be long running. Therefore the module needs to schedule those operations.
Each orchestrator module implements its own underlying mechanisms
for completions. This might involve running the underlying operations
module would do no work on any operation until it appeared in a list
of completions passed into *process*.
-Some operations need to show a progress. Those operations need to add
-a *ProgressReference* to the completion. At some point, the progress reference
-becomes *effective*, meaning that the operation has really happened
-(e.g. a service has actually been started).
-
-.. automethod:: Orchestrator.process
-
-.. autoclass:: Completion
- :members:
-
-.. autoclass:: ProgressReference
- :members:
-
Error Handling
--------------