summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorThiago Miotto <thiagomiottoam@gmail.com>2019-02-21 17:26:03 -0300
committerThiago Miotto <thiagomiottoam@gmail.com>2019-02-22 12:03:11 -0300
commit0f2c43fccf5e9b11332c3e69be5a419a281f9c85 (patch)
treeb22ca6b611df70340eb480b7467a67027cfe8ed4
parentc59b5a5258c875d814b1ada82fd7bbaf7de97a26 (diff)
downloadpython-jenkins-job-builder-0f2c43fccf5e9b11332c3e69be5a419a281f9c85.tar.gz
python-jenkins-job-builder-0f2c43fccf5e9b11332c3e69be5a419a281f9c85.tar.xz
python-jenkins-job-builder-0f2c43fccf5e9b11332c3e69be5a419a281f9c85.zip
Adds match-script and groovy-sandbox to Lockable Resources Plugin properties
Change-Id: I45db7b1a58f2dea4d46aba61aaf16383d30f1b50
-rw-r--r--jenkins_jobs/modules/properties.py16
-rw-r--r--tests/properties/fixtures/lockable_resources_full.xml3
-rw-r--r--tests/properties/fixtures/lockable_resources_groovy.xml15
-rw-r--r--tests/properties/fixtures/lockable_resources_groovy.yaml5
-rw-r--r--tests/properties/fixtures/lockable_resources_label.xml3
-rw-r--r--tests/properties/fixtures/lockable_resources_minimal.xml3
6 files changed, 45 insertions, 0 deletions
diff --git a/jenkins_jobs/modules/properties.py b/jenkins_jobs/modules/properties.py
index 032b6b5f..2df88d0d 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 11760a98..726a93ae 100644
--- a/tests/properties/fixtures/lockable_resources_full.xml
+++ b/tests/properties/fixtures/lockable_resources_full.xml
@@ -6,6 +6,9 @@
<resourceNamesVar>RESOURCE_NAME</resourceNamesVar>
<resourceNumber>10</resourceNumber>
<labelName/>
+ <resourceMatchScript>
+ <sandbox>false</sandbox>
+ </resourceMatchScript>
</org.jenkins.plugins.lockableresources.RequiredResourcesProperty>
</properties>
</project>
diff --git a/tests/properties/fixtures/lockable_resources_groovy.xml b/tests/properties/fixtures/lockable_resources_groovy.xml
new file mode 100644
index 00000000..71c41004
--- /dev/null
+++ b/tests/properties/fixtures/lockable_resources_groovy.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="utf-8"?>
+<project>
+ <properties>
+ <org.jenkins.plugins.lockableresources.RequiredResourcesProperty>
+ <resourceNames/>
+ <resourceNamesVar/>
+ <resourceNumber>0</resourceNumber>
+ <labelName/>
+ <resourceMatchScript>
+ <script>resourceName == MY_VAR</script>
+ <sandbox>true</sandbox>
+ </resourceMatchScript>
+ </org.jenkins.plugins.lockableresources.RequiredResourcesProperty>
+ </properties>
+</project>
diff --git a/tests/properties/fixtures/lockable_resources_groovy.yaml b/tests/properties/fixtures/lockable_resources_groovy.yaml
new file mode 100644
index 00000000..ceec1e49
--- /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 903e7321..f833c7cb 100644
--- a/tests/properties/fixtures/lockable_resources_label.xml
+++ b/tests/properties/fixtures/lockable_resources_label.xml
@@ -6,6 +6,9 @@
<resourceNamesVar/>
<resourceNumber>0</resourceNumber>
<labelName>pool-1</labelName>
+ <resourceMatchScript>
+ <sandbox>false</sandbox>
+ </resourceMatchScript>
</org.jenkins.plugins.lockableresources.RequiredResourcesProperty>
</properties>
</project>
diff --git a/tests/properties/fixtures/lockable_resources_minimal.xml b/tests/properties/fixtures/lockable_resources_minimal.xml
index df64ff58..ed8e2d41 100644
--- a/tests/properties/fixtures/lockable_resources_minimal.xml
+++ b/tests/properties/fixtures/lockable_resources_minimal.xml
@@ -6,6 +6,9 @@
<resourceNamesVar/>
<resourceNumber>0</resourceNumber>
<labelName/>
+ <resourceMatchScript>
+ <sandbox>false</sandbox>
+ </resourceMatchScript>
</org.jenkins.plugins.lockableresources.RequiredResourcesProperty>
</properties>
</project>