0815e66bab
The repo cloning part of the role was altered to not assume the 'https://' URL prefix. This broke the repo cloning in certain situations (when only hostname was given). This change restores the original behavior and assumes a https:// prefix for all gerrit instances. Change-Id: Ib0606f3676a3ee7454201a80edde29c47f50b666 Closes-bug: #1690899
87 lines
2.7 KiB
Python
Executable File
87 lines
2.7 KiB
Python
Executable File
#!/usr/bin/python
|
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
# you may not use this file except in compliance with the License.
|
|
# You may obtain a copy of the License at
|
|
#
|
|
# http://www.apache.org/licenses/LICENSE-2.0
|
|
#
|
|
# Unless required by applicable law or agreed to in writing, software
|
|
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
|
|
# implied.
|
|
# See the License for the specific language governing permissions and
|
|
# limitations under the License.
|
|
|
|
DOCUMENTATION = '''
|
|
---
|
|
module: zuul_deps
|
|
version_added: "2.0"
|
|
short_description: Transforms the dependent changes variable from Zuul format into a dictionary
|
|
description:
|
|
- Transforms the dependent changes variable from Zuul format into a dictionary
|
|
options:
|
|
host:
|
|
description:
|
|
- The content of the ZUUL_URL variable
|
|
required: True
|
|
changes:
|
|
description:
|
|
- The content of the ZUUL_CHANGES variable
|
|
required: True
|
|
branch:
|
|
description:
|
|
- Which branch to transform dependent changes on.
|
|
default: None
|
|
'''
|
|
|
|
EXAMPLES = '''
|
|
- zuul_deps:
|
|
host: https://review.openstack.org
|
|
changes: "openstack/tripleo-heat-templates:master:refs/changes/88/296488/1^openstack/instack-undercloud:master:refs/changes/84/315184/5"
|
|
'''
|
|
|
|
|
|
def process(host, changes, branch):
|
|
"""Process the changes from Zuul format"""
|
|
output = []
|
|
|
|
for item in reversed(changes.split("^")):
|
|
params = item.split(":")
|
|
if branch and branch != params[1]:
|
|
continue
|
|
if params[0] in [i['project'] for i in output]:
|
|
continue
|
|
# https://bugs.launchpad.net/tripleo/+bug/1676853
|
|
if '.openstack.org' in host:
|
|
host = 'https://git.openstack.org'
|
|
# add URL prefix if only the bare hostname is given
|
|
if host.find('://') == -1:
|
|
host = ''.join(['https://', host])
|
|
output.append({"host": host,
|
|
"project": params[0],
|
|
"branch": params[1],
|
|
"refspec": params[2]})
|
|
return {'changed': True,
|
|
'ansible_facts': {'zuul_change_list': output}}
|
|
|
|
|
|
def main():
|
|
module = AnsibleModule(
|
|
argument_spec=dict(
|
|
host=dict(required=True, type='str'),
|
|
changes=dict(required=True, type='str'),
|
|
branch=dict(default=None, type='str')
|
|
)
|
|
)
|
|
result = process(module.params['host'],
|
|
module.params['changes'],
|
|
module.params['branch'])
|
|
module.exit_json(**result)
|
|
|
|
|
|
# see http://docs.ansible.com/developing_modules.html#common-module-boilerplate
|
|
from ansible.module_utils.basic import *
|
|
|
|
if __name__ == "__main__":
|
|
main()
|