Merge "Add 'subcloud deploy delete' command to dcmanager"
This commit is contained in:
commit
c749b71531
|
@ -14,10 +14,9 @@
|
||||||
# limitations under the License.
|
# limitations under the License.
|
||||||
#
|
#
|
||||||
|
|
||||||
from requests_toolbelt import MultipartEncoder
|
|
||||||
|
|
||||||
from dcmanagerclient.api import base
|
from dcmanagerclient.api import base
|
||||||
from dcmanagerclient.api.base import get_json
|
from dcmanagerclient.api.base import get_json
|
||||||
|
from requests_toolbelt import MultipartEncoder
|
||||||
|
|
||||||
|
|
||||||
class SubcloudDeploy(base.Resource):
|
class SubcloudDeploy(base.Resource):
|
||||||
|
@ -74,6 +73,12 @@ class subcloud_deploy_manager(base.ResourceManager):
|
||||||
resource = self._process_json_response(json_object)
|
resource = self._process_json_response(json_object)
|
||||||
return resource
|
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):
|
def subcloud_deploy_show(self, release):
|
||||||
url = '/subcloud-deploy/'
|
url = '/subcloud-deploy/'
|
||||||
if release:
|
if release:
|
||||||
|
@ -85,3 +90,12 @@ class subcloud_deploy_manager(base.ResourceManager):
|
||||||
data = kwargs.get('data')
|
data = kwargs.get('data')
|
||||||
url = '/subcloud-deploy/'
|
url = '/subcloud-deploy/'
|
||||||
return self._deploy_upload(url, files, data)
|
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.commands.v1 import base
|
||||||
from dcmanagerclient import exceptions
|
from dcmanagerclient import exceptions
|
||||||
|
from osc_lib.command import command
|
||||||
|
|
||||||
|
|
||||||
def _format(subcloud_deploy=None):
|
def _format(subcloud_deploy=None):
|
||||||
|
@ -171,3 +172,52 @@ class DeprecatedSubcloudDeployUpload(SubcloudDeployUpload):
|
||||||
deprecation_msg = ('This command has been deprecated. Please use '
|
deprecation_msg = ('This command has been deprecated. Please use '
|
||||||
'subcloud deploy upload instead.')
|
'subcloud deploy upload instead.')
|
||||||
raise exceptions.DCManagerClientException(deprecation_msg)
|
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 resume': psdm.PhasedSubcloudDeployResume,
|
||||||
'subcloud deploy upload': sdm.SubcloudDeployUpload,
|
'subcloud deploy upload': sdm.SubcloudDeployUpload,
|
||||||
'subcloud deploy show': sdm.SubcloudDeployShow,
|
'subcloud deploy show': sdm.SubcloudDeployShow,
|
||||||
|
'subcloud deploy delete': sdm.SubcloudDeployDelete,
|
||||||
'subcloud-deploy upload': sdm.DeprecatedSubcloudDeployUpload,
|
'subcloud-deploy upload': sdm.DeprecatedSubcloudDeployUpload,
|
||||||
'subcloud-deploy show': sdm.DeprecatedSubcloudDeployShow,
|
'subcloud-deploy show': sdm.DeprecatedSubcloudDeployShow,
|
||||||
'subcloud-peer-group add': pm.AddSubcloudPeerGroup,
|
'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'
|
self.assertTrue('deploy_playbook file does not exist: not_a_valid_path'
|
||||||
in str(e))
|
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