From 55da305df0b9b64413500e904a278e055456aaed Mon Sep 17 00:00:00 2001 From: Anil Belur Date: Fri, 2 Mar 2018 12:44:51 +1000 Subject: [PATCH] Add support for fallback Job Filters Add support for fallback Job Filters for views. Change-Id: I06290c74df62e68fe78f07fc8d77236c206cf5ad Signed-off-by: Anil Belur --- jenkins_jobs/modules/view_list.py | 20 +++++++++++++ .../fixtures/view_list_fallback_full001.xml | 28 +++++++++++++++++++ .../fixtures/view_list_fallback_full001.yaml | 10 +++++++ .../fixtures/view_list_fallback_full002.xml | 28 +++++++++++++++++++ .../fixtures/view_list_fallback_full002.yaml | 10 +++++++ 5 files changed, 96 insertions(+) create mode 100644 tests/views/fixtures/view_list_fallback_full001.xml create mode 100644 tests/views/fixtures/view_list_fallback_full001.yaml create mode 100644 tests/views/fixtures/view_list_fallback_full002.xml create mode 100644 tests/views/fixtures/view_list_fallback_full002.yaml diff --git a/jenkins_jobs/modules/view_list.py b/jenkins_jobs/modules/view_list.py index e7295024c..93aedd30c 100644 --- a/jenkins_jobs/modules/view_list.py +++ b/jenkins_jobs/modules/view_list.py @@ -80,6 +80,12 @@ to the :ref:`view_list` definition. * **stable** ('bool'): Jobs with status stable. (default False) + * **fallback** (`dict`) + :fallback: + * **fallback-type** ('str'): Fallback type to include/exclude + for all jobs in a view, if no jobs have been included by + previous filters. (default REMOVE_ALL_IF_ALL_INCLUDED) + * **columns** (`list`): List of columns to be shown in view. * **regex** (`str`): . Regular expression for selecting jobs (optional) @@ -218,6 +224,20 @@ class List(jenkins_jobs.modules.base.Base): convert_mapping_to_xml(js_xml, js_data, mapping, fail_required=True) + if jobfilter == 'fallback': + fb_xml = XML.SubElement(job_filter_xml, + 'hudson.views.AddRemoveFallbackFilter') + fb_xml.set('plugin', 'view-job-filters') + fb_data = jobfilters.get('fallback') + mapping = [ + ('fallback-type', 'fallbackTypeString', + 'REMOVE_ALL_IF_ALL_INCLUDED'), + ('fallback-type', 'fallbackType', + 'REMOVE_ALL_IF_ALL_INCLUDED'), + ] + convert_mapping_to_xml(fb_xml, fb_data, mapping, + fail_required=True) + c_xml = XML.SubElement(root, 'columns') columns = data.get('columns', DEFAULT_COLUMNS) diff --git a/tests/views/fixtures/view_list_fallback_full001.xml b/tests/views/fixtures/view_list_fallback_full001.xml new file mode 100644 index 000000000..83f7ef8d3 --- /dev/null +++ b/tests/views/fixtures/view_list_fallback_full001.xml @@ -0,0 +1,28 @@ + + + list-view-name01 + Sample description + true + true + + + + + + + REMOVE_ALL_IF_ALL_INCLUDED + REMOVE_ALL_IF_ALL_INCLUDED + + + + + + + + + + + + true + false + diff --git a/tests/views/fixtures/view_list_fallback_full001.yaml b/tests/views/fixtures/view_list_fallback_full001.yaml new file mode 100644 index 000000000..4534b968c --- /dev/null +++ b/tests/views/fixtures/view_list_fallback_full001.yaml @@ -0,0 +1,10 @@ +name: list-view-name01 +view-type: list +description: 'Sample description' +filter-executors: true +filter-queue: true +job-filters: + fallback: + fallback-type: REMOVE_ALL_IF_ALL_INCLUDED +recurse: true +status-filter: false diff --git a/tests/views/fixtures/view_list_fallback_full002.xml b/tests/views/fixtures/view_list_fallback_full002.xml new file mode 100644 index 000000000..fcac1af56 --- /dev/null +++ b/tests/views/fixtures/view_list_fallback_full002.xml @@ -0,0 +1,28 @@ + + + list-view-name01 + Sample description + true + true + + + + + + + ADD_ALL_IF_ALL_INCLUDED + ADD_ALL_IF_ALL_INCLUDED + + + + + + + + + + + + true + false + diff --git a/tests/views/fixtures/view_list_fallback_full002.yaml b/tests/views/fixtures/view_list_fallback_full002.yaml new file mode 100644 index 000000000..d6214be26 --- /dev/null +++ b/tests/views/fixtures/view_list_fallback_full002.yaml @@ -0,0 +1,10 @@ +name: list-view-name01 +view-type: list +description: 'Sample description' +filter-executors: true +filter-queue: true +job-filters: + fallback: + fallback-type: ADD_ALL_IF_ALL_INCLUDED +recurse: true +status-filter: false