Support zuul.d directories

Change-Id: I3a0cba537043ffbc554f1bb1cfe951d86587b014
This commit is contained in:
Monty Taylor 2017-09-17 12:43:49 -05:00
parent ad1188ba7f
commit 645c3d684d
No known key found for this signature in database
GPG Key ID: 7BAE94BC7141A594
1 changed files with 15 additions and 2 deletions

View File

@ -35,7 +35,7 @@ class ZuulDirective(Directive):
def find_zuul_yaml(self):
root = self.state.document.settings.env.relfn2path('.')[1]
while root:
for fn in ['zuul.yaml', '.zuul.yaml']:
for fn in ['zuul.yaml', '.zuul.yaml', 'zuul.d', '.zuul.d']:
path = os.path.join(root, fn)
if os.path.exists(path):
return path
@ -51,11 +51,24 @@ class ZuulDirective(Directive):
layout.jobs.append(obj['job'])
return layout
def parse_zuul_d(self, path):
layout = Layout()
for conf in os.listdir(path):
with open(os.path.join(path, conf)) as f:
data = yaml.safe_load(f)
for obj in data:
if 'job' in obj:
layout.jobs.append(obj['job'])
return layout
def _parse_zuul_layout(self):
env = self.state.document.settings.env
if not env.domaindata['zuul']['layout']:
path = self.find_zuul_yaml()
layout = self.parse_zuul_yaml(path)
if path.endswith('zuul.d'):
layout = self.parse_zuul_d(path)
else:
layout = self.parse_zuul_yaml(path)
env.domaindata['zuul']['layout_path'] = path
env.domaindata['zuul']['layout'] = layout