Fix ignored parameters in create_deployment_plan

This patch makes sure that the following two parameters are correctly
passed when creating deployment plan.
 - use_default_templates
 - source_url

It also removes useless validate_stack parameter, which is never used
in playbooks invoked to create deployment plan.

Depends-on: https://review.opendev.org/#/c/743128/
Change-Id: If54940ec8ee127c73d0b5820704f119466f80df0
This commit is contained in:
Takashi Kajinami 2020-06-24 13:30:54 +09:00
parent 33e0cc977d
commit de494e2af6
5 changed files with 76 additions and 29 deletions

View File

@ -131,7 +131,7 @@ class TestOvercloudCreatePlan(utils.TestCommand):
extra_vars={
"container": "overcast",
"generate_passwords": True,
"validate": False
"use_default_templates": True,
},
verbosity=3,
)
@ -163,7 +163,7 @@ class TestOvercloudCreatePlan(utils.TestCommand):
extra_vars={
"container": "overcast",
"generate_passwords": True,
"validate": False
"use_default_templates": False,
},
verbosity=3,
)
@ -204,7 +204,7 @@ class TestOvercloudCreatePlan(utils.TestCommand):
"container": "overcast",
"generate_passwords": True,
"plan_environment": "the_plan_environment.yaml",
"validate": False
"use_default_templates": False,
},
verbosity=3,
)
@ -237,7 +237,40 @@ class TestOvercloudCreatePlan(utils.TestCommand):
extra_vars={
"container": "overcast",
"generate_passwords": False,
"validate": False
"use_default_templates": True,
},
verbosity=3,
)
@mock.patch("tripleoclient.utils.run_ansible_playbook", autospec=True)
@mock.patch('os.chdir', autospec=True)
@mock.patch('tempfile.mkdtemp', autospec=True)
def test_create_custom_plan_from_source_url(
self, mock_tmp, mock_cd, mock_run_playbook):
# Setup
arglist = ['overcast', '--source-url', 'http://tripleo.org/templates']
verifylist = [
('name', 'overcast'),
('templates', None),
('source_url', 'http://tripleo.org/templates')
]
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
# Run
self.cmd.take_action(parsed_args)
# Verify
mock_run_playbook.assert_called_once_with(
'cli-create-deployment-plan.yaml',
'undercloud,',
mock.ANY,
constants.ANSIBLE_TRIPLEO_PLAYBOOKS,
extra_vars={
"container": "overcast",
"generate_passwords": True,
"use_default_templates": False,
"source_url": "http://tripleo.org/templates",
},
verbosity=3,
)

View File

@ -40,8 +40,7 @@ class TestPlanCreationWorkflows(utils.TestCommand):
plan_management.create_plan_from_templates(
self.app.client_manager,
'test-overcloud',
'/tht-root/',
validate_stack=False)
'/tht-root/')
mock_run_playbook.assert_called_once_with(
'cli-create-deployment-plan.yaml',
@ -51,7 +50,7 @@ class TestPlanCreationWorkflows(utils.TestCommand):
extra_vars={
"container": "test-overcloud",
"generate_passwords": True,
"validate": False
"use_default_templates": False,
},
verbosity=0,
)
@ -72,8 +71,7 @@ class TestPlanCreationWorkflows(utils.TestCommand):
self.app.client_manager,
'test-overcloud',
'/tht-root/',
'the_roles_file.yaml',
validate_stack=False)
'the_roles_file.yaml')
mock_run_playbook.assert_called_once_with(
'cli-create-deployment-plan.yaml',
@ -83,7 +81,7 @@ class TestPlanCreationWorkflows(utils.TestCommand):
extra_vars={
"container": "test-overcloud",
"generate_passwords": True,
"validate": False
"use_default_templates": False,
},
verbosity=0,
)
@ -108,8 +106,7 @@ class TestPlanCreationWorkflows(utils.TestCommand):
self.app.client_manager,
'test-overcloud',
'/tht-root/',
plan_env_file='the-plan-environment.yaml',
validate_stack=False)
plan_env_file='the-plan-environment.yaml')
mock_run_playbook.assert_called_once_with(
'cli-create-deployment-plan.yaml',
@ -120,7 +117,7 @@ class TestPlanCreationWorkflows(utils.TestCommand):
"container": "test-overcloud",
"generate_passwords": True,
"plan_environment": "the-plan-environment.yaml",
"validate": False
"use_default_templates": False,
},
verbosity=0,
)
@ -144,8 +141,7 @@ class TestPlanCreationWorkflows(utils.TestCommand):
self.app.client_manager,
'test-overcloud',
'/tht-root/',
networks_file='the-network-data.yaml',
validate_stack=False)
networks_file='the-network-data.yaml')
mock_run_playbook.assert_called_once_with(
'cli-create-deployment-plan.yaml',
@ -155,7 +151,7 @@ class TestPlanCreationWorkflows(utils.TestCommand):
extra_vars={
"container": "test-overcloud",
"generate_passwords": True,
"validate": False
"use_default_templates": False,
},
verbosity=0,
)
@ -177,8 +173,7 @@ class TestPlanCreationWorkflows(utils.TestCommand):
self.app.client_manager,
'test-overcloud',
'/tht-root/',
generate_passwords=False,
validate_stack=False)
generate_passwords=False)
mock_run_playbook.assert_called_once_with(
'cli-create-deployment-plan.yaml',
@ -188,7 +183,7 @@ class TestPlanCreationWorkflows(utils.TestCommand):
extra_vars={
"container": "test-overcloud",
"generate_passwords": False,
"validate": False
"use_default_templates": False,
},
verbosity=0,
)

View File

@ -408,7 +408,6 @@ class DeployOvercloud(command.Command):
parsed_args.roles_file, generate_passwords,
parsed_args.plan_environment_file,
parsed_args.networks_file,
validate_stack=False,
verbosity_level=utils.playbook_verbosity(self=self)
)

View File

@ -125,7 +125,6 @@ class CreatePlan(command.Command):
clients, name, parsed_args.templates,
generate_passwords=generate_passwords,
plan_env_file=parsed_args.plan_environment_file,
validate_stack=False,
verbosity_level=utils.playbook_verbosity(self=self)
)
else:
@ -134,7 +133,6 @@ class CreatePlan(command.Command):
generate_passwords=generate_passwords,
source_url=source_url,
use_default_templates=use_default_templates,
validate_stack=False,
verbosity_level=utils.playbook_verbosity(self=self)
)

View File

@ -66,14 +66,38 @@ def _upload_templates(swift_client, container_name, tht_root, roles_file=None,
def create_deployment_plan(container, generate_passwords,
use_default_templates=False, source_url=None,
validate_stack=True, verbosity_level=0,
plan_env_file=None):
verbosity_level=0, plan_env_file=None):
"""Create a deployment plan.
:param container: Container name to push to.
:type container: String
:param generate_passwords: Whether to generate password
:type generate_passwords: Boolean
:param use_default_templates: Whether to use default template files
:type use_default_templates: Boolean
:param source_url: The url of a git repository containing the Heat
templates to deploy
:type source_url: String
:param verbosity_level: Verbosity level used in playbook execution
:type verbosity_level: Integer
:param plan_env_file: Path to plan environment file
:type plan_env_file: String
"""
extra_vars = {
"container": container,
"validate": validate_stack,
"generate_passwords": generate_passwords
"generate_passwords": generate_passwords,
"use_default_templates": use_default_templates,
}
if source_url:
extra_vars['source_url'] = source_url
if plan_env_file:
extra_vars['plan_environment'] = plan_env_file
@ -147,8 +171,7 @@ def list_deployment_plans(clients):
def create_plan_from_templates(clients, name, tht_root, roles_file=None,
generate_passwords=True, plan_env_file=None,
networks_file=None, validate_stack=True,
verbosity_level=0):
networks_file=None, verbosity_level=0):
swift_client = clients.tripleoclient.object_store
print("Creating Swift container to store the plan")
@ -163,7 +186,6 @@ def create_plan_from_templates(clients, name, tht_root, roles_file=None,
create_deployment_plan(container=name,
generate_passwords=generate_passwords,
plan_env_file=plan_env_file,
validate_stack=validate_stack,
verbosity_level=verbosity_level)
except exceptions.WorkflowServiceError:
swiftutils.delete_container(swift_client, name)