From 0f2c43fccf5e9b11332c3e69be5a419a281f9c85 Mon Sep 17 00:00:00 2001 From: Thiago Miotto Date: Thu, 21 Feb 2019 17:26:03 -0300 Subject: [PATCH] Adds match-script and groovy-sandbox to Lockable Resources Plugin properties Change-Id: I45db7b1a58f2dea4d46aba61aaf16383d30f1b50 --- jenkins_jobs/modules/properties.py | 16 ++++++++++++++++ .../fixtures/lockable_resources_full.xml | 3 +++ .../fixtures/lockable_resources_groovy.xml | 15 +++++++++++++++ .../fixtures/lockable_resources_groovy.yaml | 5 +++++ .../fixtures/lockable_resources_label.xml | 3 +++ .../fixtures/lockable_resources_minimal.xml | 3 +++ 6 files changed, 45 insertions(+) create mode 100644 tests/properties/fixtures/lockable_resources_groovy.xml create mode 100644 tests/properties/fixtures/lockable_resources_groovy.yaml diff --git a/jenkins_jobs/modules/properties.py b/jenkins_jobs/modules/properties.py index 032b6b5fa..2df88d0d6 100644 --- a/jenkins_jobs/modules/properties.py +++ b/jenkins_jobs/modules/properties.py @@ -1103,6 +1103,10 @@ def lockable_resources(registry, xml_parent, data): :arg int number: Number of resources to request, empty value or 0 means all. This is useful, if you have a pool of similar resources, from which you want one or more to be reserved. (default 0) + :arg str match-script: Groovy script to reserve resource based on its + properties. Leave empty to disable. (default None) + :arg bool groovy-sandbox: Execute the provided match-script in Groovy + sandbox. Leave empty to disable. (default False) Example: @@ -1117,6 +1121,10 @@ def lockable_resources(registry, xml_parent, data): .. literalinclude:: /../../tests/properties/fixtures/lockable_resources_full.yaml :language: yaml + + .. literalinclude:: + /../../tests/properties/fixtures/lockable_resources_groovy.yaml + :language: yaml """ lockable_resources = XML.SubElement( xml_parent, @@ -1131,6 +1139,14 @@ def lockable_resources(registry, xml_parent, data): ] helpers.convert_mapping_to_xml( lockable_resources, data, mapping, fail_required=True) + secure_groovy_script = XML.SubElement(lockable_resources, + 'resourceMatchScript') + mapping = [ + ('match-script', 'script', None), + ('groovy-sandbox', 'sandbox', False), + ] + helpers.convert_mapping_to_xml(secure_groovy_script, data, mapping, + fail_required=False) def docker_container(registry, xml_parent, data): diff --git a/tests/properties/fixtures/lockable_resources_full.xml b/tests/properties/fixtures/lockable_resources_full.xml index 11760a981..726a93aeb 100644 --- a/tests/properties/fixtures/lockable_resources_full.xml +++ b/tests/properties/fixtures/lockable_resources_full.xml @@ -6,6 +6,9 @@ RESOURCE_NAME 10 + + false + diff --git a/tests/properties/fixtures/lockable_resources_groovy.xml b/tests/properties/fixtures/lockable_resources_groovy.xml new file mode 100644 index 000000000..71c410047 --- /dev/null +++ b/tests/properties/fixtures/lockable_resources_groovy.xml @@ -0,0 +1,15 @@ + + + + + + + 0 + + + + true + + + + diff --git a/tests/properties/fixtures/lockable_resources_groovy.yaml b/tests/properties/fixtures/lockable_resources_groovy.yaml new file mode 100644 index 000000000..ceec1e492 --- /dev/null +++ b/tests/properties/fixtures/lockable_resources_groovy.yaml @@ -0,0 +1,5 @@ +--- +properties: + - lockable-resources: + match-script: "resourceName == MY_VAR" + groovy-sandbox: true diff --git a/tests/properties/fixtures/lockable_resources_label.xml b/tests/properties/fixtures/lockable_resources_label.xml index 903e7321c..f833c7cb1 100644 --- a/tests/properties/fixtures/lockable_resources_label.xml +++ b/tests/properties/fixtures/lockable_resources_label.xml @@ -6,6 +6,9 @@ 0 pool-1 + + false + diff --git a/tests/properties/fixtures/lockable_resources_minimal.xml b/tests/properties/fixtures/lockable_resources_minimal.xml index df64ff58d..ed8e2d41c 100644 --- a/tests/properties/fixtures/lockable_resources_minimal.xml +++ b/tests/properties/fixtures/lockable_resources_minimal.xml @@ -6,6 +6,9 @@ 0 + + false +