Add extra yaml validations in upgrade tasks.
Extra checks: - Check that only tags=['common', 'validate', 'pre-upgrade'] are accepted. - Fail if tags not defined. - Fail if 'step|int == ' condition inside 'when' is not the evaluated first. - Suggest the use of lists to append conditions inside 'when'. Change-Id: I15f6d4cb6f2a13d04580779a93a02daf86f8b412
This commit is contained in:
parent
cf64b89433
commit
11ff6d0668
@ -162,6 +162,8 @@ DEPLOYMENT_RESOURCE_TYPES = [
|
||||
'OS::TripleO::SoftwareDeployment'
|
||||
]
|
||||
|
||||
VALID_ANSIBLE_UPGRADE_TAGS = [ 'common', 'validation', 'pre-upgrade' ]
|
||||
|
||||
def exit_usage():
|
||||
print('Usage %s <yaml file or directory>' % sys.argv[0])
|
||||
sys.exit(1)
|
||||
@ -756,13 +758,22 @@ def validate_upgrade_tasks(upgrade_tasks):
|
||||
elif upgrade_tasks.get('get_attr'):
|
||||
return 0
|
||||
|
||||
# Don't enforce the need to have a when 'step' conditional, for now:
|
||||
for task in upgrade_tasks:
|
||||
whenline = task.get("when", "")
|
||||
if 'step|int == ' not in whenline:
|
||||
task_name = task.get("name", "")
|
||||
print('WARNING: upgrade task (%s) is missing expected \'when: '
|
||||
'step|int == \' condition (%s)' % (task_name, task))
|
||||
task_name = task.get("name", "")
|
||||
if task.get("tags"):
|
||||
if (task["tags"] not in VALID_ANSIBLE_UPGRADE_TAGS):
|
||||
print('ERROR: Task (%s) includes unexpected \'tags: (%s)\' ' % (task_name, task["tags"]))
|
||||
return 1
|
||||
else:
|
||||
|
||||
whenline = task.get("when", "")
|
||||
if (type(whenline) == list):
|
||||
if any('step|int ' in condition for condition in whenline) and ('step|int == ' not in whenline[0]):
|
||||
print('ERROR: \'step|int ==\' condition should be evaluated first in when conditions for task (%s)' % (task))
|
||||
return 1
|
||||
else:
|
||||
if (' and ' in whenline) and (' or ' not in whenline):
|
||||
print("Warning: Consider specifying \'and\' conditions as a list to improve readability in task: \"%s\"" % (task_name))
|
||||
return 0
|
||||
|
||||
def validate_network_data_file(data_file_path):
|
||||
|
Loading…
Reference in New Issue
Block a user