summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorZuul <zuul@review.opendev.org>2019-08-15 18:46:14 +0000
committerGerrit Code Review <review@openstack.org>2019-08-15 18:46:14 +0000
commit1ef4a6ecc563e081defb9834ccc678a05a169f97 (patch)
tree4e829b7dd4a5791a041febad35f1d3263a2f639e
parentcbc6819978f5b33e1e8cdd08d9322e3a5d08c376 (diff)
parent314d896b835081d360747dccfde8ad58f75b9766 (diff)
downloadpython-jenkins-job-builder-1ef4a6ecc563e081defb9834ccc678a05a169f97.tar.gz
python-jenkins-job-builder-1ef4a6ecc563e081defb9834ccc678a05a169f97.tar.xz
python-jenkins-job-builder-1ef4a6ecc563e081defb9834ccc678a05a169f97.zip
Merge "Added missing 'filters' parameters for rabbitmq trigger plugin"
-rw-r--r--jenkins_jobs/modules/triggers.py27
-rw-r--r--tests/triggers/fixtures/rabbitmq-filters.xml19
-rw-r--r--tests/triggers/fixtures/rabbitmq-filters.yaml8
3 files changed, 52 insertions, 2 deletions
diff --git a/jenkins_jobs/modules/triggers.py b/jenkins_jobs/modules/triggers.py
index b37d9c64..fcd93390 100644
--- a/jenkins_jobs/modules/triggers.py
+++ b/jenkins_jobs/modules/triggers.py
@@ -1922,17 +1922,40 @@ def rabbitmq(registry, xml_parent, data):
<RabbitMQ+Build+Trigger+Plugin>`.
:arg str token: the build token expected in the message queue (required)
+ :arg list filters: list of filters to apply (optional)
+
+ :Filter:
+ * **field** (`str`) - Some field in message (required)
+ * **value** (`str`) - value of specified field (required)
Example:
.. literalinclude:: /../../tests/triggers/fixtures/rabbitmq.yaml
:language: yaml
+
+ Example with filters:
+
+ .. literalinclude:: /../../tests/triggers/fixtures/rabbitmq-filters.yaml
+ :language: yaml
"""
+ rabbitmq_prefix = 'org.jenkinsci.plugins.rabbitmqbuildtrigger.'
rabbitmq = XML.SubElement(
xml_parent,
- 'org.jenkinsci.plugins.rabbitmqbuildtrigger.'
- 'RemoteBuildTrigger')
+ rabbitmq_prefix + 'RemoteBuildTrigger')
+ filters = data.get('filters', [])
+ filter_mapping = [
+ ('field', 'field', None),
+ ('value', 'value', None),
+ ]
+ if filters:
+ filters_tag = XML.SubElement(rabbitmq, 'filters')
+ for filter_data in filters:
+ filter_tag = XML.SubElement(
+ filters_tag,
+ rabbitmq_prefix + 'Filter')
+ helpers.convert_mapping_to_xml(
+ filter_tag, filter_data, filter_mapping, fail_required=True)
mapping = [
('', 'spec', ''),
('token', 'remoteBuildToken', None),
diff --git a/tests/triggers/fixtures/rabbitmq-filters.xml b/tests/triggers/fixtures/rabbitmq-filters.xml
new file mode 100644
index 00000000..db1c0bff
--- /dev/null
+++ b/tests/triggers/fixtures/rabbitmq-filters.xml
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="utf-8"?>
+<project>
+ <triggers class="vector">
+ <org.jenkinsci.plugins.rabbitmqbuildtrigger.RemoteBuildTrigger>
+ <filters>
+ <org.jenkinsci.plugins.rabbitmqbuildtrigger.Filter>
+ <field>field1</field>
+ <value>value1</value>
+ </org.jenkinsci.plugins.rabbitmqbuildtrigger.Filter>
+ <org.jenkinsci.plugins.rabbitmqbuildtrigger.Filter>
+ <field>field2</field>
+ <value>value2</value>
+ </org.jenkinsci.plugins.rabbitmqbuildtrigger.Filter>
+ </filters>
+ <spec/>
+ <remoteBuildToken>build_trigger_token</remoteBuildToken>
+ </org.jenkinsci.plugins.rabbitmqbuildtrigger.RemoteBuildTrigger>
+ </triggers>
+</project>
diff --git a/tests/triggers/fixtures/rabbitmq-filters.yaml b/tests/triggers/fixtures/rabbitmq-filters.yaml
new file mode 100644
index 00000000..bfcdfa99
--- /dev/null
+++ b/tests/triggers/fixtures/rabbitmq-filters.yaml
@@ -0,0 +1,8 @@
+triggers:
+ - rabbitmq:
+ token: 'build_trigger_token'
+ filters:
+ - field: 'field1'
+ value: 'value1'
+ - field: 'field2'
+ value: 'value2'