d0e2016592
This adds a custom ansible-lint rule at .rules/ZuulJobsNamespaceLoopVar.py that enforces the loop var policy described at: https://zuul-ci.org/docs/zuul-jobs/policy.html#ansible-loops-in-roles It also updates existing roles to follow the policy. Change-Id: I92b2ff56a1c2702542fc07b316f1809087a4c92f
30 lines
878 B
Python
30 lines
878 B
Python
from ansiblelint import AnsibleLintRule
|
|
|
|
|
|
class ZuulJobsNamespaceLoopVar(AnsibleLintRule):
|
|
|
|
id = 'ZUULJOBS0001'
|
|
shortdesc = 'Loop vars should have zj_ prefix'
|
|
description = """
|
|
Check for tasks that does not follow
|
|
the policy of namespacing loop variables with zj_ prefix.
|
|
See: \
|
|
https://zuul-ci.org/docs/zuul-jobs/policy.html\
|
|
#ansible-loops-in-roles
|
|
"""
|
|
|
|
tags = {'zuul-jobs-namespace-loop-var'}
|
|
|
|
def matchtask(self, file, task):
|
|
if file.get('type') != 'tasks':
|
|
return False
|
|
if 'loop' in set(task.keys()):
|
|
if 'loop_control' not in set(task.keys()):
|
|
return True
|
|
elif 'loop_var' not in task.get('loop_control'):
|
|
return True
|
|
elif not task.get('loop_control')\
|
|
.get('loop_var').startswith('zj_'):
|
|
return True
|
|
return False
|