You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
156 lines
5.6 KiB
156 lines
5.6 KiB
--- |
|
# Copyright 2019 Red Hat, Inc. |
|
# All Rights Reserved. |
|
# |
|
# 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. |
|
|
|
- name: Create a new role for TripleO-Validations |
|
hosts: localhost |
|
connection: local |
|
gather_facts: false |
|
tasks: |
|
- name: Check for role name |
|
fail: |
|
msg: >- |
|
The required variable `role_name` is undefined. Check your settings. |
|
when: |
|
- role_name is undefined |
|
|
|
- name: Ensure role name is not empty |
|
fail: |
|
msg: >- |
|
The required variable `role_name` is empty. Check your settings. |
|
when: |
|
- role_name is defined |
|
- role_name == '' |
|
|
|
|
|
- name: Normalize the role name |
|
set_fact: |
|
_role_name: "{{ role_name | replace('-', '_' ) }}" |
|
dashed_role_name: "{{ role_name | replace('_', '-') }}" |
|
|
|
- name: Create role |
|
command: >- |
|
ansible-galaxy init |
|
--role-skeleton=_skeleton_role_ |
|
--init-path=roles/ |
|
validation_{{ _role_name }} |
|
args: |
|
creates: "roles/validation_{{ _role_name }}" |
|
|
|
- name: Read zuul molecule file |
|
slurp: |
|
src: zuul.d/molecule.yaml |
|
register: molecule_yaml |
|
|
|
- name: Create molecule entry |
|
copy: |
|
content: |- |
|
--- |
|
{% set items = molecule_yaml['content'] | b64decode | from_yaml %} |
|
{% set job_index = [] %} |
|
{% set new_job_name = "tripleo-validations-centos-8-molecule-" ~ _role_name %} |
|
{% for item in items %} |
|
{% if 'project-template' in item %} |
|
{% if item['project-template']['name'] == "tripleo-validations-molecule-jobs" %} |
|
{% if not (new_job_name in item['project-template']['check']['jobs']) %} |
|
{% set _ = item['project-template']['check']['jobs'].append(new_job_name) %} |
|
{% set check_jobs = (item['project-template']['check']['jobs'] | sort) %} |
|
{% set _ = item['project-template']['check'].update({'jobs': check_jobs}) %} |
|
{% endif %} |
|
{% if not (new_job_name in item['project-template']['gate']['jobs']) %} |
|
{% set _ = item['project-template']['gate']['jobs'].append(new_job_name) %} |
|
{% set gate_jobs = (item['project-template']['gate']['jobs'] | sort) %} |
|
{% set _ = item['project-template']['gate'].update({'jobs': gate_jobs}) %} |
|
{% endif %} |
|
{% endif %} |
|
{% else %} |
|
{% if item['job']['name'] == new_job_name %} |
|
{% set _ = job_index.append(new_job_name) %} |
|
{% endif %} |
|
{% endif %} |
|
{% endfor %} |
|
{% if (job_index | length) < 1 %} |
|
{% set new_job = { |
|
"name": new_job_name, |
|
"parent": "tripleo-validations-centos-8-base", |
|
"files": [ |
|
"^roles/validation_" ~ _role_name ~ "/.*", |
|
"^tests/prepare-test-host.yml", |
|
"^ci/playbooks/pre.yml", |
|
"^ci/playbooks/run.yml" |
|
], |
|
"vars": { |
|
"tripleo_validations_role_name": "validation_" ~ _role_name |
|
} |
|
} |
|
%} |
|
{% set _ = items.append({"job": new_job}) %} |
|
{% endif %} |
|
{{ items | to_nice_yaml(indent=2, width=1337) }} |
|
dest: zuul.d/molecule.yaml |
|
|
|
- name: Create the playbook |
|
copy: |
|
content: | |
|
--- |
|
- hosts: undercloud |
|
gather_facts: false |
|
vars: |
|
metadata: |
|
name: The Validation name goes here |
|
description: | |
|
Write a description of your validations |
|
groups: |
|
- no-op |
|
- prep |
|
- pre-introspection |
|
- pre-deployment |
|
- post-deployment |
|
- openshift-on-openstack |
|
- pre-upgrade |
|
- post-upgrade |
|
- pre-system-upgrade |
|
- post-system-upgrade |
|
- pre-undercloud-upgrade |
|
- post-undercloud-upgrade |
|
- pre-overcloud-prepare |
|
- post-overcloud-prepare |
|
- pre-overcloud-upgrade |
|
- post-overcloud-upgrade |
|
- pre-overcloud-converge |
|
- post-overcloud-converge |
|
- pre-ceph |
|
- post-ceph |
|
- pre-update |
|
- pre-update-prepare |
|
- pre-update-run |
|
- pre-update-converge |
|
- post-update |
|
validation_{{ _role_name }}_debug: false |
|
roles: |
|
- validation_{{ _role_name }} |
|
dest: "playbooks/{{ dashed_role_name }}.yaml" |
|
|
|
- name: Create role documentation |
|
copy: |
|
content: | |
|
{% set opening = 'Role - ' ~ _role_name %} |
|
{{ '=' * (opening | length) }} |
|
{{ opening }} |
|
{{ '=' * (opening | length) }} |
|
|
|
.. ansibleautoplugin:: |
|
:role: roles/validation_{{ _role_name }} |
|
dest: "doc/source/roles/role-validation_{{ _role_name }}.rst"
|
|
|