Merge "Refactor upgrade prepare and converge."
This commit is contained in:
commit
11f4cf1998
|
@ -42,32 +42,19 @@ class TestOvercloudUpgradePrepare(fakes.TestOvercloudUpgradePrepare):
|
||||||
'take_action')
|
'take_action')
|
||||||
@mock.patch('tripleoclient.workflows.deployment.'
|
@mock.patch('tripleoclient.workflows.deployment.'
|
||||||
'get_hosts_and_enable_ssh_admin', autospec=True)
|
'get_hosts_and_enable_ssh_admin', autospec=True)
|
||||||
@mock.patch('tripleoclient.workflows.deployment.create_overcloudrc',
|
|
||||||
autospec=True)
|
|
||||||
@mock.patch('tripleoclient.utils.prepend_environment', autospec=True)
|
@mock.patch('tripleoclient.utils.prepend_environment', autospec=True)
|
||||||
@mock.patch('tripleoclient.utils.get_stack',
|
@mock.patch('tripleoclient.utils.get_stack',
|
||||||
autospec=True)
|
autospec=True)
|
||||||
@mock.patch('tripleoclient.v1.overcloud_upgrade.UpgradePrepare.log',
|
@mock.patch('tripleoclient.v1.overcloud_upgrade.UpgradePrepare.log',
|
||||||
autospec=True)
|
autospec=True)
|
||||||
@mock.patch('tripleoclient.workflows.package_update.update',
|
|
||||||
autospec=True)
|
|
||||||
@mock.patch('os.path.abspath')
|
|
||||||
@mock.patch('yaml.safe_load')
|
@mock.patch('yaml.safe_load')
|
||||||
@mock.patch('shutil.copytree', autospec=True)
|
|
||||||
@mock.patch('six.moves.builtins.open')
|
@mock.patch('six.moves.builtins.open')
|
||||||
@mock.patch('tripleoclient.v1.overcloud_deploy.DeployOvercloud.'
|
|
||||||
'_deploy_tripleo_heat_templates', autospec=True)
|
|
||||||
def test_upgrade_out(self,
|
def test_upgrade_out(self,
|
||||||
mock_deploy,
|
|
||||||
mock_open,
|
mock_open,
|
||||||
mock_copy,
|
|
||||||
mock_yaml,
|
mock_yaml,
|
||||||
mock_abspath,
|
|
||||||
mock_upgrade,
|
|
||||||
mock_logger,
|
mock_logger,
|
||||||
mock_get_stack,
|
mock_get_stack,
|
||||||
add_env,
|
add_env,
|
||||||
mock_overcloudrc,
|
|
||||||
mock_enable_ssh_admin,
|
mock_enable_ssh_admin,
|
||||||
mock_overcloud_deploy):
|
mock_overcloud_deploy):
|
||||||
|
|
||||||
|
@ -89,13 +76,11 @@ class TestOvercloudUpgradePrepare(fakes.TestOvercloudUpgradePrepare):
|
||||||
|
|
||||||
parsed_args = self.check_parser(self.cmd, argslist, verifylist)
|
parsed_args = self.check_parser(self.cmd, argslist, verifylist)
|
||||||
self.cmd.take_action(parsed_args)
|
self.cmd.take_action(parsed_args)
|
||||||
mock_upgrade.assert_called_once_with(
|
|
||||||
self.app.client_manager,
|
|
||||||
container='overcloud',
|
|
||||||
)
|
|
||||||
|
|
||||||
mock_overcloudrc.assert_called_once_with(container="overcloud")
|
|
||||||
mock_overcloud_deploy.assert_called_once_with(parsed_args)
|
mock_overcloud_deploy.assert_called_once_with(parsed_args)
|
||||||
|
args, kwargs = mock_overcloud_deploy.call_args
|
||||||
|
# Check config_download arg is set to False
|
||||||
|
self.assertEqual(args[0].config_download, False)
|
||||||
mock_enable_ssh_admin.assert_called_once_with(
|
mock_enable_ssh_admin.assert_called_once_with(
|
||||||
mock_stack,
|
mock_stack,
|
||||||
parsed_args.overcloud_ssh_network,
|
parsed_args.overcloud_ssh_network,
|
||||||
|
@ -110,18 +95,11 @@ class TestOvercloudUpgradePrepare(fakes.TestOvercloudUpgradePrepare):
|
||||||
@mock.patch('tripleoclient.utils.get_stack',
|
@mock.patch('tripleoclient.utils.get_stack',
|
||||||
autospec=True)
|
autospec=True)
|
||||||
@mock.patch('tripleoclient.utils.prepend_environment', autospec=True)
|
@mock.patch('tripleoclient.utils.prepend_environment', autospec=True)
|
||||||
@mock.patch('tripleoclient.workflows.package_update.update',
|
|
||||||
autospec=True)
|
|
||||||
@mock.patch('six.moves.builtins.open')
|
@mock.patch('six.moves.builtins.open')
|
||||||
@mock.patch('os.path.abspath')
|
|
||||||
@mock.patch('yaml.safe_load')
|
@mock.patch('yaml.safe_load')
|
||||||
@mock.patch('shutil.copytree', autospec=True)
|
def test_upgrade_failed(self, mock_yaml, mock_open,
|
||||||
@mock.patch('tripleoclient.v1.overcloud_deploy.DeployOvercloud.'
|
|
||||||
'_deploy_tripleo_heat_templates', autospec=True)
|
|
||||||
def test_upgrade_failed(self, mock_deploy, mock_copy, mock_yaml,
|
|
||||||
mock_abspath, mock_open, mock_upgrade,
|
|
||||||
add_env, mock_get_stack, mock_overcloud_deploy):
|
add_env, mock_get_stack, mock_overcloud_deploy):
|
||||||
mock_upgrade.side_effect = exceptions.DeploymentError()
|
mock_overcloud_deploy.side_effect = exceptions.DeploymentError()
|
||||||
mock_yaml.return_value = {'fake_container': 'fake_value'}
|
mock_yaml.return_value = {'fake_container': 'fake_value'}
|
||||||
mock_stack = mock.Mock(parameters={'DeployIdentifier': ''})
|
mock_stack = mock.Mock(parameters={'DeployIdentifier': ''})
|
||||||
mock_stack.stack_name = 'overcloud'
|
mock_stack.stack_name = 'overcloud'
|
||||||
|
|
|
@ -24,7 +24,6 @@ from tripleoclient import exceptions
|
||||||
from tripleoclient import utils as oooutils
|
from tripleoclient import utils as oooutils
|
||||||
from tripleoclient.v1.overcloud_deploy import DeployOvercloud
|
from tripleoclient.v1.overcloud_deploy import DeployOvercloud
|
||||||
from tripleoclient.workflows import deployment
|
from tripleoclient.workflows import deployment
|
||||||
from tripleoclient.workflows import package_update
|
|
||||||
|
|
||||||
CONF = cfg.CONF
|
CONF = cfg.CONF
|
||||||
logging.register_options(CONF)
|
logging.register_options(CONF)
|
||||||
|
@ -39,7 +38,11 @@ class UpgradePrepare(DeployOvercloud):
|
||||||
first step for a major upgrade of your overcloud.
|
first step for a major upgrade of your overcloud.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
log = logging.getLogger(__name__ + ".MajorUpgradePrepare")
|
operation = "Prepare"
|
||||||
|
|
||||||
|
template = constants.UPGRADE_PREPARE_ENV
|
||||||
|
|
||||||
|
log = logging.getLogger(__name__ + ".UpgradePrepare")
|
||||||
|
|
||||||
def get_parser(self, prog_name):
|
def get_parser(self, prog_name):
|
||||||
parser = super(UpgradePrepare, self).get_parser(prog_name)
|
parser = super(UpgradePrepare, self).get_parser(prog_name)
|
||||||
|
@ -62,22 +65,19 @@ class UpgradePrepare(DeployOvercloud):
|
||||||
stack_name = stack.stack_name
|
stack_name = stack.stack_name
|
||||||
|
|
||||||
# In case of update and upgrade we need to force the
|
# In case of update and upgrade we need to force the
|
||||||
# update_plan_only. The heat stack update is done by the
|
# config_download to false. The heat stack update will be performed
|
||||||
# packag_update mistral action
|
# by DeployOvercloud class but skipping the config download part.
|
||||||
parsed_args.update_plan_only = True
|
parsed_args.config_download = False
|
||||||
# Add the upgrade-prepare.yaml environment to set noops etc
|
# Add the template attribute environment to set noops etc
|
||||||
templates_dir = (parsed_args.templates or
|
templates_dir = (parsed_args.templates or
|
||||||
constants.TRIPLEO_HEAT_TEMPLATES)
|
constants.TRIPLEO_HEAT_TEMPLATES)
|
||||||
parsed_args.environment_files = oooutils.prepend_environment(
|
parsed_args.environment_files = oooutils.prepend_environment(
|
||||||
parsed_args.environment_files, templates_dir,
|
parsed_args.environment_files, templates_dir,
|
||||||
constants.UPGRADE_PREPARE_ENV)
|
self.template)
|
||||||
super(UpgradePrepare, self).take_action(parsed_args)
|
super(UpgradePrepare, self).take_action(parsed_args)
|
||||||
package_update.update(clients, container=stack_name)
|
|
||||||
|
|
||||||
deployment.create_overcloudrc(container=stack_name)
|
# enable ssh admin for Ansible-via-Mistral as that's done only
|
||||||
|
# when config_download is true
|
||||||
# refresh stack info and enable ssh admin for Ansible-via-Mistral
|
|
||||||
stack = oooutils.get_stack(clients.orchestration, parsed_args.stack)
|
|
||||||
deployment.get_hosts_and_enable_ssh_admin(
|
deployment.get_hosts_and_enable_ssh_admin(
|
||||||
stack,
|
stack,
|
||||||
parsed_args.overcloud_ssh_network,
|
parsed_args.overcloud_ssh_network,
|
||||||
|
@ -87,8 +87,8 @@ class UpgradePrepare(DeployOvercloud):
|
||||||
verbosity=oooutils.playbook_verbosity(self=self)
|
verbosity=oooutils.playbook_verbosity(self=self)
|
||||||
)
|
)
|
||||||
|
|
||||||
self.log.info("Completed Overcloud Upgrade Prepare for stack "
|
self.log.info("Completed Overcloud Upgrade {} for stack "
|
||||||
"{0}".format(stack_name))
|
"{}".format(self.operation, stack_name))
|
||||||
|
|
||||||
|
|
||||||
class UpgradeRun(command.Command):
|
class UpgradeRun(command.Command):
|
||||||
|
@ -103,7 +103,7 @@ class UpgradeRun(command.Command):
|
||||||
command is the second step in the major upgrade workflow.
|
command is the second step in the major upgrade workflow.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
log = logging.getLogger(__name__ + ".MajorUpgradeRun")
|
log = logging.getLogger(__name__ + ".UpgradeRun")
|
||||||
|
|
||||||
def get_parser(self, prog_name):
|
def get_parser(self, prog_name):
|
||||||
parser = super(UpgradeRun, self).get_parser(prog_name)
|
parser = super(UpgradeRun, self).get_parser(prog_name)
|
||||||
|
@ -229,7 +229,7 @@ class UpgradeRun(command.Command):
|
||||||
self.log.info("Completed Overcloud Major Upgrade Run.")
|
self.log.info("Completed Overcloud Major Upgrade Run.")
|
||||||
|
|
||||||
|
|
||||||
class UpgradeConvergeOvercloud(DeployOvercloud):
|
class UpgradeConvergeOvercloud(UpgradePrepare):
|
||||||
"""Major upgrade converge - reset Heat resources in the stored plan
|
"""Major upgrade converge - reset Heat resources in the stored plan
|
||||||
|
|
||||||
This is the last step for completion of a overcloud major
|
This is the last step for completion of a overcloud major
|
||||||
|
@ -238,25 +238,8 @@ class UpgradeConvergeOvercloud(DeployOvercloud):
|
||||||
have set specific values for some stack Heat resources. This
|
have set specific values for some stack Heat resources. This
|
||||||
unsets those back to their default values.
|
unsets those back to their default values.
|
||||||
"""
|
"""
|
||||||
|
operation = "Converge"
|
||||||
|
|
||||||
|
template = constants.UPGRADE_CONVERGE_ENV
|
||||||
|
|
||||||
log = logging.getLogger(__name__ + ".UpgradeConvergeOvercloud")
|
log = logging.getLogger(__name__ + ".UpgradeConvergeOvercloud")
|
||||||
|
|
||||||
def get_parser(self, prog_name):
|
|
||||||
parser = super(UpgradeConvergeOvercloud, self).get_parser(prog_name)
|
|
||||||
return parser
|
|
||||||
|
|
||||||
def take_action(self, parsed_args):
|
|
||||||
self.log.debug("take_action(%s)" % parsed_args)
|
|
||||||
clients = self.app.client_manager
|
|
||||||
stack = oooutils.get_stack(clients.orchestration,
|
|
||||||
parsed_args.stack)
|
|
||||||
# Add the converge environment into the args to unset noop etc
|
|
||||||
templates_dir = (parsed_args.templates or
|
|
||||||
constants.TRIPLEO_HEAT_TEMPLATES)
|
|
||||||
parsed_args.environment_files = oooutils.prepend_environment(
|
|
||||||
parsed_args.environment_files, templates_dir,
|
|
||||||
constants.UPGRADE_CONVERGE_ENV)
|
|
||||||
|
|
||||||
super(UpgradeConvergeOvercloud, self).take_action(parsed_args)
|
|
||||||
self.log.info("Completed Overcloud Upgrade Converge for stack {0}"
|
|
||||||
.format(stack.stack_name))
|
|
||||||
|
|
Loading…
Reference in New Issue