distcloud/distributedcloud/dcmanager/api
Gustavo Herzmann cb8737316f Add 'subcloud deploy create' command to dcmanager
This commit adds the subcloud deploy create command to dcmanager. It
accepts the same parameters as the subcloud add command, but only
performs the pre-deployment phase, where all parameters are validated
and the subcloud database entry is created. It does not perform the
install, bootstrap or config phases.

The commit does not modify the subcloud add command to use this phase
internally, this will be done in another commit, after the other
deployment phases are implemented.

Test Plan:
1. PASS - Create a subcloud using all the parameters and verify that
          the data is correctly stored in the DB;
2. PASS - Verify that the values from --install-values are correctly
          stored in the DB;
3. PASS - Verify that the values from --deploy-config and
          --bootstrap-values are are stored correctly in the
          ANSIBLE_OVERRIDES_PATH directory;
4. PASS - Verify that it's not possible to create a subcloud without
          the required parameters;
5. PASS - Verify that it's not possible to create a subcloud while
          another one with the same name or address already exists;
6. PASS - Repeat previous tests after swacting to controller-1.
7. PASS - Repeat previous tests but directly call the API (using
          CURL) instead of using the CLI;
8. PASS - Call the API directly, passing bmc-password as plain text
          as opposed to b64encoded and verify that the response
          contains the correct error code and message.

Story: 2010756
Task: 48030

Change-Id: Ia5321d08df7bec5aef1a8f90cb7292a522da9af9
Signed-off-by: Gustavo Herzmann <gustavo.herzmann@windriver.com>
2023-06-20 09:13:41 -03:00
..
controllers Add 'subcloud deploy create' command to dcmanager 2023-06-20 09:13:41 -03:00
policies Add 'subcloud deploy create' command to dcmanager 2023-06-20 09:13:41 -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