distcloud/distributedcloud/dcmanager/api
Victor Romano f081453b3c Add subcloud deploy abort option to dcmanager
This commit adds the command "subcloud deploy abort" to dcmanager.
It allows the user to abort the on-going execution of a playbook
against the subcloud. Any task will be aborted immediately if the
unabortable flag is not set by the playbook [1]. If current
operation is install, a shutdown command will also be issued.

Test Plan:
  Success cases:
  - PASS: Trigger an abort during installation and verify that the
          playbook execution was aborted immediately, the subcloud was
          shut dows after it and the RVMC pod and job were terminated.
  - PASS: Trigger an abort during config and verify that
          the playbook execution was aborted immediately.
  - PASS: Trigger an abort during bootstrap without the presence
          of unabortable flag and verify that the playbook execution
          was aborted immidiately.
  - PASS: Trigger an abort during bootstrap with the presence of
          unabortable flag and verify that the playbook execution
          was aborted only after the flag was deleted.
  - PASS: Trigger an abort directly calling the API (using CURL
          instead of using the CLI.
  Failure cases:
  - PASS: Verify that the abort request is rejected if deploy
          state is not 'installing', 'bootstrapping' or 'configuring'.
  - PASS: Abort when an unabortable task is running and then force an
          external error during this task restarting dcmanager-manager
          service, verify that deploy state is set to a failed state
          e.g. bootstrap-failed.
  - PASS: Abort when an unabortable task is running and then force an
          internal error during this task using ansible.builtin.fail
          module, verify that deploy state is set to a failed state
          e.g. bootstrap-failed.
  - PASS: Abort when an unabortable task is running and then force
          the playbook to halt the execution during this task using
          ansible.builtin.pause module, verify that deploy state is
          set to a failed state after 10 minutes
          e.g. bootstrap-failed.

Story: 2010756
Task: 48102

Co-Authored-By: Gustavo Herzmann <gustavo.herzmann@windriver.com>
Signed-off-by: Victor Romano <victor.gluzromano@windriver.com>
Change-Id: Ic5311324a76bf7ce1215692e934d5577ff82868e
2023-07-19 14:16:00 -03:00
..
controllers Add subcloud deploy abort option to dcmanager 2023-07-19 14:16:00 -03:00
policies Add subcloud deploy abort option to dcmanager 2023-07-19 14:16:00 -03:00
README.rst Move content to subdir to support relocated packaging 2019-11-04 13:57:02 -05:00
__init__.py Move content to subdir to support relocated packaging 2019-11-04 13:57:02 -05:00
api_config.py Implement access control for DC API 2022-09-22 18:26:35 -03:00
app.py DC Manager API request audit logging 2022-02-24 21:01:00 +00:00
policy.py Implement access control for DC API 2022-09-22 18:26:35 -03:00

README.rst

api

DC Manager API is Web Server Gateway Interface (WSGI) application to receive and process API calls, including keystonemiddleware to do the authentication, parameter check and validation, convert API calls to job rpc message, and then send the job to DC Manager Manager through the queue. If the job will be processed by DC Manager Manager in synchronous way, the DC Manager API will wait for the response from the DC Manager Manager. Otherwise, the DC Manager API will send response to the API caller first, and then send the job to DC Manager Manager in asynchronous way.

Multiple DC Manager API could run in parallel, and also can work in multi-worker mode.

Multiple DC Manager API will be designed and run in stateless mode, persistent data will be accessed (read and write) from the DC Manager Database through the DAL module.

Setup and encapsulate the API WSGI app

app.py:

Setup and encapsulate the API WSGI app, including integrate the keystonemiddleware app

api_config.py:

API configuration loading and init

enforcer.py

Enforces policies on the version2 APIs