Merge "Add 'subcloud deploy delete' command to dcmanager"
This commit is contained in:
commit
c749b71531
|
@ -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)
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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,
|
||||
|
|
|
@ -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)
|
||||
|
|
Loading…
Reference in New Issue