Merge "Add network unprovision to overcloud delete"
This commit is contained in:
commit
ef97e3c349
|
@ -0,0 +1,5 @@
|
|||
features:
|
||||
- |
|
||||
Added options for "overcloud delete" command to unprovision
|
||||
networks provisioned with "overcloud deploy" or with
|
||||
"overcloud network provision".
|
|
@ -92,6 +92,38 @@ class TestDeleteOvercloud(deploy_fakes.TestDeployOvercloud):
|
|||
)
|
||||
self.assertEqual(mock_run_playbook.call_count, 2)
|
||||
|
||||
@mock.patch('tripleoclient.utils.TempDirs', autospect=True)
|
||||
@mock.patch('os.path.abspath', autospect=True)
|
||||
@mock.patch('os.path.exists', autospect=True)
|
||||
@mock.patch('tripleoclient.utils.run_ansible_playbook', autospec=True)
|
||||
def test_overcloud_delete_network_unprovision(self, mock_run_playbook,
|
||||
mock_path_exists,
|
||||
mock_abspath, mock_tempdirs):
|
||||
arglist = ["overcast", "-y",
|
||||
"--networks-file", "network_data_v2.yaml"]
|
||||
verifylist = [
|
||||
("stack", "overcast"),
|
||||
("yes", True),
|
||||
("networks_file", "network_data_v2.yaml")
|
||||
]
|
||||
mock_abspath.side_effect = ['/test/network_data_v2.yaml',
|
||||
'/test/network_data_v2.yaml']
|
||||
mock_path_exists.side_effect = [True]
|
||||
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
|
||||
self.cmd.take_action(parsed_args)
|
||||
|
||||
mock_run_playbook.assert_called_with(
|
||||
workdir=mock.ANY,
|
||||
playbook='cli-overcloud-network-unprovision.yaml',
|
||||
inventory=mock.ANY,
|
||||
playbook_dir=mock.ANY,
|
||||
verbosity=3,
|
||||
extra_vars={
|
||||
"network_data_path": '/test/network_data_v2.yaml'
|
||||
}
|
||||
)
|
||||
self.assertEqual(mock_run_playbook.call_count, 2)
|
||||
|
||||
def test_no_confirmation(self):
|
||||
arglist = ["overcast", ]
|
||||
verifylist = [
|
||||
|
|
|
@ -14,6 +14,7 @@
|
|||
#
|
||||
|
||||
import logging
|
||||
import os
|
||||
import yaml
|
||||
|
||||
from osc_lib import exceptions as oscexc
|
||||
|
@ -56,6 +57,11 @@ class DeleteOvercloud(command.Command):
|
|||
metavar='<baremetal_deployment.yaml>',
|
||||
help=_('Configuration file describing the '
|
||||
'baremetal deployment'))
|
||||
parser.add_argument('--networks-file',
|
||||
metavar='<network_data.yaml>',
|
||||
help=_('Configuration file describing the '
|
||||
'network deployment to enable '
|
||||
'unprovisioning of networks.'))
|
||||
parser.add_argument('--network-ports',
|
||||
help=_('Enable unprovisioning of network ports'),
|
||||
default=False,
|
||||
|
@ -65,6 +71,12 @@ class DeleteOvercloud(command.Command):
|
|||
def _validate_args(self, parsed_args):
|
||||
if parsed_args.stack in (None, ''):
|
||||
raise oscexc.CommandError("You must specify a stack name")
|
||||
if parsed_args.networks_file:
|
||||
networks_file_path = os.path.abspath(parsed_args.networks_file)
|
||||
if not os.path.exists(networks_file_path):
|
||||
raise oscexc.CommandError(
|
||||
"Network configuration file does not exist:"
|
||||
" {args}".format(args=parsed_args.networks_file))
|
||||
|
||||
def take_action(self, parsed_args):
|
||||
self.log.debug("take_action({args})".format(args=parsed_args))
|
||||
|
@ -117,4 +129,19 @@ class DeleteOvercloud(command.Command):
|
|||
"manage_network_ports": parsed_args.network_ports,
|
||||
}
|
||||
)
|
||||
|
||||
if parsed_args.networks_file:
|
||||
networks_file_path = os.path.abspath(parsed_args.networks_file)
|
||||
|
||||
with utils.TempDirs() as tmp:
|
||||
utils.run_ansible_playbook(
|
||||
playbook='cli-overcloud-network-unprovision.yaml',
|
||||
inventory='localhost,',
|
||||
workdir=tmp,
|
||||
playbook_dir=constants.ANSIBLE_TRIPLEO_PLAYBOOKS,
|
||||
verbosity=utils.playbook_verbosity(self=self),
|
||||
extra_vars={
|
||||
"network_data_path": networks_file_path
|
||||
}
|
||||
)
|
||||
print("Success.")
|
||||
|
|
Loading…
Reference in New Issue