
This commit adds the command "subcloud deploy resume" to dcmanager. It will resume subcloud deployment based on current subcloud deploy state. All parameters except sysadmin-password are optional if they were already provided in previous phases. Since install and config are both optional phases, they will only be executed if respective parameters are/have been provided. Test Plan: These options will be referenced on the test cases as the values already present on the system controller before the resume operation or the values passed to it's command: [1] All values (install_values, bootstrap_values, deploy_config) [2] Only install_values and bootstrap_values [3] Only bootstrap_values [4] Only deploy_config Success cases: - PASS: Resume from create-complete previously having [1] without passing any new parameter and verify that the subcloud's deploy state is 'complete'. - PASS: Resume from create-complete previously having [2] without passing any new parameter and verify that the subcloud's deploy state is 'bootstrap-complete'. - PASS: Resume from create-complete previously having [3] without passing any new parameter and manually installing the subcloud and verify that it's deploy state is 'bootstrap-complete'. - PASS: Resume from create-complete previously having [1] passing a previous release (21.12) and verify that the subcloud's deploy state is 'complete' and the installed load is correct. - PASS: Resume from install-complete previously having [1] without passing any new parameter and verify that the subcloud's deploy state is 'complete'. - PASS: Resume from install-complete previously having [2] without passing any new parameter and verify that the subcloud's deploy state is 'bootstrap-complete'. - PASS: Resume from install-complete previously having [3] without passing any new parameter and verify that it's deploy state is 'bootstrap-complete'. - PASS: Resume from install-failed previously having [1] passing new install_values and verify that the subcloud's deploy state is 'complete' and the installation used new values. - PASS: Resume from install-failed previously having [1] without passing any new parameter and verify that the subcloud's deploy state is 'complete'. - PASS: Resume from install-aborted previously having [1] without passing any new parameter and verify that the subcloud's deploy state is 'complete'. - PASS: Resume from bootstrap-complete previously having [1] without passing any new parameter and verify that the subcloud's deploy state is 'complete'. - PASS: Resume from bootstrap-complete previously having [3] and passing [4] and verify that the subcloud's deploy state is 'complete'. - PASS: Resume from bootstrap-failed previously having [1] passing new bootstrap_values and verify that the subcloud's deploy state is 'complete' and the bootstrap used new values. - PASS: Resume from bootstrap-failed previously having [1] without passing any new parameter and verify that the subcloud's deploy state is 'complete'. - PASS: Resume from bootstrap-aborted previously having [1] without passing any new parameter and verify that the subcloud's deploy state is 'complete'. - PASS: Resume from config-failed previously having [1] passing new deploy_config file and verify that the subcloud's deploy state is 'complete' and the config used new values. - PASS: Resume from config-failed previously having [1] without passing any new parameter and verify that the subcloud's deploy state is 'complete'. - PASS: Resume from config-aborted previously having [1] without passing any new parameter and verify that the subcloud's deploy state is 'complete'. - PASS: Repeat previous tests but directly call the API (using CURL) instead of using the CLI. Failure cases: - PASS: Verify that it's not possible to resume deployment if the deploy state is not one of the following: - create-complete - install-complete - pre-install-failed - install-failed - install-aborted - bootstrap-complete - pre-bootstrap-failed - bootstrap-failed - bootstrap-aborted - pre-config-failed - config-failed - config-aborted - PASS: Call the API directly, passing bmc-password and/or sysadmin-password as plain text as opposed to b64encoded and verify that the response contains the correct error code and message. - PASS: Resume from bootstrap-complete previously having [2] and verify that the system alerts that the only remaining phase is config and there's no deploy-config file available Story: 2010756 Task: 48316 Change-Id: I81c0a226b3ede56628e21372b02748013c3f6b35 Signed-off-by: Victor Romano <victor.gluzromano@windriver.com>
57 lines
1.5 KiB
Python
57 lines
1.5 KiB
Python
#
|
|
# Copyright (c) 2023 Wind River Systems, Inc.
|
|
#
|
|
# SPDX-License-Identifier: Apache-2.0
|
|
#
|
|
|
|
from dcmanager.api.policies import base
|
|
from oslo_policy import policy
|
|
|
|
POLICY_ROOT = 'dc_api:phased_subcloud_deploy:%s'
|
|
|
|
|
|
phased_subcloud_deploy_rules = [
|
|
policy.DocumentedRuleDefault(
|
|
name=POLICY_ROOT % 'create',
|
|
check_str='rule:' + base.ADMIN_IN_SYSTEM_PROJECTS,
|
|
description="Create a subcloud",
|
|
operations=[
|
|
{
|
|
'method': 'POST',
|
|
'path': '/v1.0/phased-subcloud-deploy'
|
|
}
|
|
]
|
|
),
|
|
policy.DocumentedRuleDefault(
|
|
name=POLICY_ROOT % 'modify',
|
|
check_str='rule:' + base.ADMIN_IN_SYSTEM_PROJECTS,
|
|
description="Modify the subcloud deployment.",
|
|
operations=[
|
|
{
|
|
'method': 'PATCH',
|
|
'path': '/v1.0/phased-subcloud-deploy/{subcloud}/abort'
|
|
},
|
|
{
|
|
'method': 'PATCH',
|
|
'path': '/v1.0/phased-subcloud-deploy/{subcloud}/resume'
|
|
},
|
|
{
|
|
'method': 'PATCH',
|
|
'path': '/v1.0/phased-subcloud-deploy/{subcloud}/install'
|
|
},
|
|
{
|
|
'method': 'PATCH',
|
|
'path': '/v1.0/phased-subcloud-deploy/{subcloud}/bootstrap'
|
|
},
|
|
{
|
|
'method': 'PATCH',
|
|
'path': '/v1.0/phased-subcloud-deploy/{subcloud}/configure'
|
|
}
|
|
]
|
|
)
|
|
]
|
|
|
|
|
|
def list_rules():
|
|
return phased_subcloud_deploy_rules
|