Merge "Add 'subcloud deploy delete' command to dcmanager"

This commit is contained in:
Zuul 2024-01-09 13:59:49 +00:00 committed by Gerrit Code Review
commit c749b71531
4 changed files with 85 additions and 2 deletions

View File

@ -14,10 +14,9 @@
# limitations under the License.
#
from requests_toolbelt import MultipartEncoder
from dcmanagerclient.api import base
from dcmanagerclient.api.base import get_json
from requests_toolbelt import MultipartEncoder
class SubcloudDeploy(base.Resource):
@ -74,6 +73,12 @@ class subcloud_deploy_manager(base.ResourceManager):
resource = self._process_json_response(json_object)
return resource
def _deploy_delete(self, url):
resp = self.http_client.delete(url)
if resp.status_code != 200:
self._raise_api_exception(resp)
return None
def subcloud_deploy_show(self, release):
url = '/subcloud-deploy/'
if release:
@ -85,3 +90,12 @@ class subcloud_deploy_manager(base.ResourceManager):
data = kwargs.get('data')
url = '/subcloud-deploy/'
return self._deploy_upload(url, files, data)
def subcloud_deploy_delete(self, release, **kwargs):
url = '/subcloud-deploy/'
data = kwargs.get('data')
if release:
url += release + '/'
url += '?deployment_files=' + data['deployment_files']
url += '&prestage_images=' + data['prestage_images']
return self._deploy_delete(url)

View File

@ -17,6 +17,7 @@ import os
from dcmanagerclient.commands.v1 import base
from dcmanagerclient import exceptions
from osc_lib.command import command
def _format(subcloud_deploy=None):
@ -171,3 +172,52 @@ class DeprecatedSubcloudDeployUpload(SubcloudDeployUpload):
deprecation_msg = ('This command has been deprecated. Please use '
'subcloud deploy upload instead.')
raise exceptions.DCManagerClientException(deprecation_msg)
class SubcloudDeployDelete(command.Command):
"""Delete the uploaded subcloud deployment files"""
def get_parser(self, prog_name):
parser = super(SubcloudDeployDelete, self).get_parser(prog_name)
parser.add_argument(
'--release',
required=False,
help='Release version that the user is trying to delete '
'If not specified, the current software '
'release of the system controller will be used.'
)
parser.add_argument(
'--prestage-images',
required=False,
action='store_true',
help='Delete prestage images list file only '
)
parser.add_argument(
'--deployment-files',
required=False,
action='store_true',
help='Delete deploy playbook, deploy overrides, '
'deploy chart files '
)
return parser
def take_action(self, parsed_args):
dcmanager_client = self.app.client_manager.subcloud_deploy_manager
release = parsed_args.release
data = dict()
if parsed_args.prestage_images is not None:
data['prestage_images'] = str(parsed_args.prestage_images)
if parsed_args.deployment_files is not None:
data['deployment_files'] = str(parsed_args.deployment_files)
try:
dcmanager_client.subcloud_deploy_manager.\
subcloud_deploy_delete(release, data=data)
except Exception as e:
print(e)
error_msg = "Unable to delete subcloud deploy files"
raise exceptions.DCManagerClientException(error_msg)

View File

@ -561,6 +561,7 @@ class DCManagerShell(app.App):
'subcloud deploy resume': psdm.PhasedSubcloudDeployResume,
'subcloud deploy upload': sdm.SubcloudDeployUpload,
'subcloud deploy show': sdm.SubcloudDeployShow,
'subcloud deploy delete': sdm.SubcloudDeployDelete,
'subcloud-deploy upload': sdm.DeprecatedSubcloudDeployUpload,
'subcloud-deploy show': sdm.DeprecatedSubcloudDeployShow,
'subcloud-peer-group add': pm.AddSubcloudPeerGroup,

View File

@ -260,3 +260,21 @@ class TestCLISubcloudDeployManagerV1(base.BaseCommandTest):
self.assertTrue('deploy_playbook file does not exist: not_a_valid_path'
in str(e))
def test_subcloud_deploy_delete_with_release(self):
release_version = base.SOFTWARE_VERSION
data = {'prestage_images': 'False', 'deployment_files': 'False'}
app_args = ['--release', release_version]
self.call(subcloud_deploy_cmd.SubcloudDeployDelete, app_args=app_args)
self.client.subcloud_deploy_manager.subcloud_deploy_delete.\
assert_called_once_with(release_version, data=data)
def test_subcloud_deploy_delete_without_release(self):
self.call(subcloud_deploy_cmd.SubcloudDeployDelete)
data = {'prestage_images': 'False', 'deployment_files': 'False'}
self.client.subcloud_deploy_manager.subcloud_deploy_delete.\
assert_called_once_with(None, data=data)