summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSergey Lebedev <s.lebedev@li.ru>2019-08-06 01:04:16 +0300
committerSergey Lebedev <s.lebedev@li.ru>2019-08-06 01:36:54 +0300
commit314d896b835081d360747dccfde8ad58f75b9766 (patch)
tree60827062048694d555961d46eb52cc45f6cdb3e3
parent079900b4e7e9f0bf384b50b49bbf83c7daad7d80 (diff)
downloadpython-jenkins-job-builder-314d896b835081d360747dccfde8ad58f75b9766.tar.gz
python-jenkins-job-builder-314d896b835081d360747dccfde8ad58f75b9766.tar.xz
python-jenkins-job-builder-314d896b835081d360747dccfde8ad58f75b9766.zip
Added missing 'filters' parameters for rabbitmq trigger plugin
Change-Id: Ide9e02c7b5a327a17521aac8d25ccff285bbd89a
-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'