Merge "Add integration test for zuul_stream" into feature/zuulv3
diff --git a/.zuul.yaml b/.zuul.yaml
index 2a8905d..5ebe2a7 100644
--- a/.zuul.yaml
+++ b/.zuul.yaml
@@ -1,3 +1,21 @@
+- nodeset:
+ name: zuul-two-node
+ nodes:
+ - name: controller
+ label: ubuntu-xenial
+ - name: node
+ label: ubuntu-xenial
+
+- job:
+ name: zuul-stream-functional
+ parent: multinode
+ nodes: zuul-two-node
+ pre-run: playbooks/zuul-stream/pre
+ run: playbooks/zuul-stream/functional
+ post-run: playbooks/zuul-stream/post
+ required-projects:
+ - openstack/ara
+
- project:
name: openstack-infra/zuul
check:
@@ -7,6 +25,7 @@
voting: false
- tox-pep8
- tox-py35
+ - zuul-stream-functional
gate:
jobs:
- tox-docs
diff --git a/playbooks/zuul-stream/fixtures/test-stream.yaml b/playbooks/zuul-stream/fixtures/test-stream.yaml
new file mode 100644
index 0000000..065e332
--- /dev/null
+++ b/playbooks/zuul-stream/fixtures/test-stream.yaml
@@ -0,0 +1,21 @@
+- name: Run some commands to show that logging works
+ hosts: node
+ tasks:
+
+ - name: Run setup
+ setup:
+ register: setupvar
+
+ - name: Output debug for a var
+ debug:
+ var: setupvar
+
+ - name: Run a shell task
+ command: ip addr show
+
+ - name: Loop with items
+ command: "echo {{ item }}"
+ with_items:
+ - item1
+ - item2
+ - item3
diff --git a/playbooks/zuul-stream/functional.yaml b/playbooks/zuul-stream/functional.yaml
new file mode 100644
index 0000000..727598c
--- /dev/null
+++ b/playbooks/zuul-stream/functional.yaml
@@ -0,0 +1,14 @@
+- hosts: controller
+ tasks:
+
+ - name: Run ansible
+ command: ansible-playbook -vvv src/git.openstack.org/openstack-infra/zuul/playbooks/zuul-stream/fixtures/test-stream.yaml
+ environment:
+ ZUUL_JOB_LOG_CONFIG: "{{ ansible_user_dir}}/logging.json"
+ ARA_LOG_CONFIG: "{{ ansible_user_dir}}/logging.json"
+
+ - name: Generate ARA html
+ command: ara generate html ara-output
+
+ - name: Compress ARA html
+ command: gzip --recursive --best ara-output
diff --git a/playbooks/zuul-stream/post.yaml b/playbooks/zuul-stream/post.yaml
new file mode 100644
index 0000000..f3d4f9c
--- /dev/null
+++ b/playbooks/zuul-stream/post.yaml
@@ -0,0 +1,26 @@
+- hosts: controller
+ tasks:
+
+ - set_fact:
+ output_dir: "{{ zuul.executor.log_root }}/stream-files"
+
+ - name: Make log subdir
+ file:
+ path: "{{ output_dir }}"
+ state: directory
+ delegate_to: localhost
+
+ - name: Rename job-output.txt
+ command: mv job-output.txt stream-job-output.txt
+
+ - name: Fetch files
+ synchronize:
+ src: "{{ ansible_user_dir }}/{{ item }}"
+ dest: "{{ output_dir }}"
+ mode: pull
+ with_items:
+ - logging.json
+ - ansible.cfg
+ - stream-job-output.txt
+ - job-output.json
+ - ara-output
diff --git a/playbooks/zuul-stream/pre.yaml b/playbooks/zuul-stream/pre.yaml
new file mode 100644
index 0000000..3f4bdf9
--- /dev/null
+++ b/playbooks/zuul-stream/pre.yaml
@@ -0,0 +1,30 @@
+- hosts: controller
+ roles:
+
+ - role: bindep
+ bindep_profile: test
+ bindep_dir: src/git.openstack.org/openstack-infra/zuul
+ bindep_command: /usr/bindep-env/bin/bindep
+
+ - role: bindep
+ bindep_dir: src/git.openstack.org/openstack/ara
+ bindep_command: /usr/bindep-env/bin/bindep
+
+ post_tasks:
+
+ - name: Install software
+ command: python3 -m pip install src/git.openstack.org/openstack-infra/zuul src/git.openstack.org/openstack/ara
+ become: yes
+
+ - name: Copy inventory
+ copy:
+ src: "{{ zuul.executor.log_root }}/zuul-info/inventory.yaml"
+ dest: "{{ ansible_user_dir }}/inventory.yaml"
+
+ - name: Copy ansible.cfg
+ template:
+ src: templates/ansible.cfg.j2
+ dest: "{{ ansible_user_dir }}/ansible.cfg"
+
+ - name: Generate logging config
+ command: python3 src/git.openstack.org/openstack-infra/zuul/zuul/ansible/logconfig.py
diff --git a/playbooks/zuul-stream/templates/ansible.cfg.j2 b/playbooks/zuul-stream/templates/ansible.cfg.j2
new file mode 100644
index 0000000..24f459e
--- /dev/null
+++ b/playbooks/zuul-stream/templates/ansible.cfg.j2
@@ -0,0 +1,11 @@
+[defaults]
+hostfile = {{ ansible_user_dir }}/inventory.yaml
+gathering = smart
+gather_subset = !all
+lookup_plugins = {{ ansible_user_dir }}/src/git.openstack.org/openstack-infra/zuul/zuul/ansible/lookup
+action_plugins = {{ ansible_user_dir }}/src/git.openstack.org/openstack-infra/zuul/zuul/ansible/action
+callback_plugins = {{ ansible_user_dir }}/src/git.openstack.org/openstack-infra/zuul/zuul/ansible/callback:{{ ansible_user_dir }}/src/git.openstack.org/openstack/ara/ara/plugins/callbacks
+module_utils = {{ ansible_user_dir }}/src/git.openstack.org/openstack-infra/zuul/zuul/ansible/module_utils
+stdout_callback = zuul_stream
+library = {{ ansible_user_dir }}/src/git.openstack.org/openstack-infra/zuul/zuul/ansible/library
+retry_files_enabled = False