From 0474b75e86fe8ade257bfea9b92cab9aed6ada1f Mon Sep 17 00:00:00 2001 From: Colleen Murphy Date: Mon, 30 Apr 2018 19:49:18 +0200 Subject: [PATCH] Add Zuulv3 jobs for puppet functional testing We need to abandon rspec as a functional testing framework. It constantly breaks as ruby gems change their dependencies, no one likes to deal with it and it did not help bring new people from the puppet community to help maintain the modules. This patch adds a Zuulv3-native job that can act as a framework for the future of puppet functional testing. Puppet modules will need to have the files tests/scenarios/*/{manifest.pp,tests.sh} in order to use this. Eventually this should replace the legacy-puppet-beaker jobs. Change-Id: Ic47e93fb091a9cdc876981674cff6b452a1afe87 --- playbooks/infra-puppet-functional/pre.yaml | 14 +++ playbooks/infra-puppet-functional/run.yaml | 3 + roles/infra-puppet-functional/tasks/main.yaml | 9 ++ .../tasks/scenario.yaml | 14 +++ zuul.d/jobs.yaml | 99 +++++++++++++++++++ zuul.d/zuul-legacy-project-templates.yaml | 1 + 6 files changed, 140 insertions(+) create mode 100644 playbooks/infra-puppet-functional/pre.yaml create mode 100644 playbooks/infra-puppet-functional/run.yaml create mode 100644 roles/infra-puppet-functional/tasks/main.yaml create mode 100644 roles/infra-puppet-functional/tasks/scenario.yaml diff --git a/playbooks/infra-puppet-functional/pre.yaml b/playbooks/infra-puppet-functional/pre.yaml new file mode 100644 index 00000000..db2eb4d2 --- /dev/null +++ b/playbooks/infra-puppet-functional/pre.yaml @@ -0,0 +1,14 @@ +- hosts: all + + tasks: + - name: Install puppet + command: ./install_puppet.sh + args: + chdir: "{{ zuul.projects['git.openstack.org/openstack-infra/system-config'].src_dir }}" + become: yes + + - name: Install modules + command: ./tools/install_modules_acceptance.sh + args: + chdir: "{{ zuul.projects['git.openstack.org/openstack-infra/system-config'].src_dir }}" + become: yes diff --git a/playbooks/infra-puppet-functional/run.yaml b/playbooks/infra-puppet-functional/run.yaml new file mode 100644 index 00000000..7793874a --- /dev/null +++ b/playbooks/infra-puppet-functional/run.yaml @@ -0,0 +1,3 @@ +- hosts: all + roles: + - infra-puppet-functional diff --git a/roles/infra-puppet-functional/tasks/main.yaml b/roles/infra-puppet-functional/tasks/main.yaml new file mode 100644 index 00000000..bd05be34 --- /dev/null +++ b/roles/infra-puppet-functional/tasks/main.yaml @@ -0,0 +1,9 @@ +- name: Get scenarios + command: "find {{ zuul.project.src_dir }}/tests/scenarios/ -maxdepth 1 -mindepth 1" + register: scenarios + +- name: Test scenarios + include: scenario.yaml + with_items: "{{ scenarios.stdout_lines }}" + loop_control: + loop_var: scenario diff --git a/roles/infra-puppet-functional/tasks/scenario.yaml b/roles/infra-puppet-functional/tasks/scenario.yaml new file mode 100644 index 00000000..e53607b7 --- /dev/null +++ b/roles/infra-puppet-functional/tasks/scenario.yaml @@ -0,0 +1,14 @@ +- name: Run puppet apply + command: env PATH=$PATH:/opt/puppetlabs/bin puppet apply --detailed-exitcodes {{ scenario }}/manifest.pp + become: yes + register: puppet_result + failed_when: puppet_result.rc != 2 + +- name: Run puppet apply again to check for idempotence + command: env PATH=$PATH:/opt/puppetlabs/bin puppet apply --detailed-exitcodes {{ scenario }}/manifest.pp + become: yes + register: puppet_result + failed_when: puppet_result.rc != 0 + +- name: Check results + command: ./{{ scenario }}/tests.sh diff --git a/zuul.d/jobs.yaml b/zuul.d/jobs.yaml index de2873e2..03cc8b11 100644 --- a/zuul.d/jobs.yaml +++ b/zuul.d/jobs.yaml @@ -1212,6 +1212,105 @@ vars: puppet_version: 4 +- job: + name: infra-puppet-functional + required-projects: + - openstack-infra/system-config + - openstack-infra/project-config + - openstack-infra/puppet-accessbot + - openstack-infra/puppet-ansible + - openstack-infra/puppet-apparmor + - openstack-infra/puppet-askbot + - openstack-infra/puppet-asterisk + - openstack-infra/puppet-bandersnatch + - openstack-infra/puppet-bugdaystats + - openstack-infra/puppet-bup + - openstack-infra/puppet-cgit + - openstack-infra/puppet-ciwatch + - openstack-infra/puppet-diskimage_builder + - openstack-infra/puppet-docker_registry + - openstack-infra/puppet-drupal + - openstack-infra/puppet-elastic_recheck + - openstack-infra/puppet-elasticsearch + - openstack-infra/puppet-ethercalc + - openstack-infra/puppet-etherpad_lite + - openstack-infra/puppet-exim + - openstack-infra/puppet-featuretracker + - openstack-infra/puppet-germqtt + - openstack-infra/puppet-gerrit + - openstack-infra/puppet-gerritbot + - openstack-infra/puppet-github + - openstack-infra/puppet-grafyaml + - openstack-infra/puppet-graphite + - openstack-infra/puppet-haveged + - openstack-infra/puppet-hound + - openstack-infra/puppet-httpd + - openstack-infra/puppet-infracloud + - openstack-infra/puppet-infra-cookiecutter + - openstack-infra/puppet-ipsilon + - openstack-infra/puppet-iptables + - openstack-infra/puppet-jeepyb + - openstack-infra/puppet-jenkins + - openstack-infra/puppet-kerberos + - openstack-infra/puppet-kibana + - openstack-infra/puppet-lodgeit + - openstack-infra/puppet-log_processor + - openstack-infra/puppet-logrotate + - openstack-infra/puppet-logstash + - openstack-infra/puppet-lpmqtt + - openstack-infra/puppet-mailman + - openstack-infra/puppet-mediawiki + - openstack-infra/puppet-meetbot + - openstack-infra/puppet-mosquitto + - openstack-infra/puppet-mqtt_statsd + - openstack-infra/puppet-mysql_backup + - openstack-infra/puppet-nodepool + - openstack-infra/puppet-odsreg + - openstack-infra/puppet-openafs + - openstack-infra/puppet-openstackci + - openstack-infra/puppet-openstack_health + - openstack-infra/puppet-openstackid + - openstack-infra/puppet-openstack_infra_spec_helper + - openstack-infra/puppet-os_client_config + - openstack-infra/puppet-packagekit + - openstack-infra/puppet-pgsql_backup + - openstack-infra/puppet-phabricator + - openstack-infra/puppet-pip + - openstack-infra/puppet-planet + - openstack-infra/puppet-project_config + - openstack-infra/puppet-ptgbot + - openstack-infra/puppet-puppet + - openstack-infra/puppet-redis + - openstack-infra/puppet-refstack + - openstack-infra/puppet-releasestatus + - openstack-infra/puppet-reviewday + - openstack-infra/puppet-simpleproxy + - openstack-infra/puppet-snmpd + - openstack-infra/puppet-ssh + - openstack-infra/puppet-ssl_cert_check + - openstack-infra/puppet-stackalytics + - openstack-infra/puppet-statusbot + - openstack-infra/puppet-storyboard + - openstack-infra/puppet-subunit2sql + - openstack-infra/puppet-sudoers + - openstack-infra/puppet-tmpreaper + - openstack-infra/puppet-translation_checksite + - openstack-infra/puppet-ulimit + - openstack-infra/puppet-unattended_upgrades + - openstack-infra/puppet-unbound + - openstack-infra/puppet-user + - openstack-infra/puppet-vcsrepo + - openstack-infra/puppet-vinz + - openstack-infra/puppet-yum + - openstack-infra/puppet-zanata + - openstack-infra/puppet-zuul + pre-run: playbooks/infra-puppet-functional/pre.yaml + run: playbooks/infra-puppet-functional/run.yaml + +- job: + name: infra-puppet-functional-3-ubuntu-xenial + parent: infra-puppet-functional + - job: name: ansible-role-functional-base abstract: true diff --git a/zuul.d/zuul-legacy-project-templates.yaml b/zuul.d/zuul-legacy-project-templates.yaml index 2160471d..f25b8f9d 100644 --- a/zuul.d/zuul-legacy-project-templates.yaml +++ b/zuul.d/zuul-legacy-project-templates.yaml @@ -64,6 +64,7 @@ jobs: - infra-puppet-apply-4-centos-7 - infra-puppet-apply-4-ubuntu-xenial + - infra-puppet-functional-3-ubuntu-xenial - project-template: name: infra-puppet-check-jobs