Merge "Extract required projects from embedded clonemaps" into feature/zuulv3
This commit is contained in:
commit
3ba4b9f730
|
@ -91,20 +91,46 @@ def deal_with_shebang(data):
|
||||||
return (executable, data)
|
return (executable, data)
|
||||||
|
|
||||||
|
|
||||||
def extract_projects(data):
|
def _extract_from_vars(line):
|
||||||
# export PROJECTS="openstack/blazar $PROJECTS"
|
# export PROJECTS="openstack/blazar $PROJECTS"
|
||||||
# export DEVSTACK_PROJECT_FROM_GIT=python-swiftclient
|
# export DEVSTACK_PROJECT_FROM_GIT=python-swiftclient
|
||||||
# export DEVSTACK_PROJECT_FROM_GIT="python-octaviaclient"
|
# export DEVSTACK_PROJECT_FROM_GIT="python-octaviaclient"
|
||||||
# export DEVSTACK_PROJECT_FROM_GIT+=",glean"
|
# export DEVSTACK_PROJECT_FROM_GIT+=",glean"
|
||||||
projects = []
|
projects = []
|
||||||
|
line = line.replace('"', '').replace('+', '').replace(',', ' ')
|
||||||
|
if (line.startswith('export PROJECTS') or
|
||||||
|
line.startswith('export DEVSTACK_PROJECT_FROM_GIT')):
|
||||||
|
nothing, project_string = line.split('=')
|
||||||
|
project_string = project_string.replace('$PROJECTS', '').strip()
|
||||||
|
projects = project_string.split()
|
||||||
|
return projects
|
||||||
|
|
||||||
|
|
||||||
|
def extract_projects(data):
|
||||||
|
# clonemap:
|
||||||
|
# - name: openstack/windmill
|
||||||
|
# dest: .
|
||||||
|
# EOF
|
||||||
|
projects = []
|
||||||
data_lines = data.split('\n')
|
data_lines = data.split('\n')
|
||||||
|
in_clonemap = False
|
||||||
for line in data_lines:
|
for line in data_lines:
|
||||||
line = line.strip().replace('"', '').replace('+', '').replace(',', ' ')
|
line = line.strip()
|
||||||
if (line.startswith('export PROJECTS') or
|
if line == 'clonemap:':
|
||||||
line.startswith('export DEVSTACK_PROJECT_FROM_GIT')):
|
in_clonemap = True
|
||||||
nothing, project_string = line.split('=')
|
continue
|
||||||
project_string = project_string.replace('$PROJECTS', '').strip()
|
elif line == 'EOF':
|
||||||
projects.extend(project_string.split())
|
in_clonemap = False
|
||||||
|
continue
|
||||||
|
if in_clonemap:
|
||||||
|
if line.startswith('- name:'):
|
||||||
|
garbage, project = line.split(':')
|
||||||
|
project = project.strip().replace("'", '').replace('"', '')
|
||||||
|
if project == '$ZUUL_PROJECT':
|
||||||
|
continue
|
||||||
|
projects.append(project)
|
||||||
|
else:
|
||||||
|
projects.extend(_extract_from_vars(line))
|
||||||
return projects
|
return projects
|
||||||
|
|
||||||
|
|
||||||
|
@ -790,8 +816,13 @@ class Job:
|
||||||
output['nodes'] = self.getNodes()
|
output['nodes'] = self.getNodes()
|
||||||
|
|
||||||
if self.required_projects:
|
if self.required_projects:
|
||||||
output['required-projects'] = expand_project_names(
|
expanded_projects = expand_project_names(
|
||||||
self.required_projects, project_names)
|
self.required_projects, project_names)
|
||||||
|
# Look for project names in the job name. Lookie there - the
|
||||||
|
# python in operator works on lists and strings.
|
||||||
|
expanded_projects.extend(expand_project_names(
|
||||||
|
self.name, project_names))
|
||||||
|
output['required-projects'] = list(set(expanded_projects))
|
||||||
|
|
||||||
return output
|
return output
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue