summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMax Rasskazov <mrasskazov@mirantis.com>2015-02-19 17:25:14 +0300
committerMax Rasskazov <mrasskazov@mirantis.com>2015-03-17 11:45:37 +0000
commit68c9cabeb61bc8aebe3fa50bec6ef5584a98f498 (patch)
treece9d39bbf94059411b8bc37698510a9a957f464a
parentdb48ec11c6237ea99b0b2bee3b11a17c77bb8c29 (diff)
downloadpython-jenkins-job-builder-68c9cabeb61bc8aebe3fa50bec6ef5584a98f498.tar.gz
python-jenkins-job-builder-68c9cabeb61bc8aebe3fa50bec6ef5584a98f498.tar.xz
python-jenkins-job-builder-68c9cabeb61bc8aebe3fa50bec6ef5584a98f498.zip
Add support of multiple credentials for ssh-agent-credentials wrapper
ssh-agent-credentials wrapper supports multiple credentials like ssh-agent plugin v1.5 (https://wiki.jenkins-ci.org/display/JENKINS/SSH+Agent+Plugin) via 'users' parameter. 'user' parameter is retained for backward compatibility. Change-Id: I8a21dd0e7cba210818ffe30bbc5c7e73b56211cb Signed-off-by: Igor Gnatenko <ignatenko@mirantis.com>
-rw-r--r--jenkins_jobs/modules/wrappers.py55
-rw-r--r--tests/wrappers/fixtures/ssh-agent-credentials002.xml12
-rw-r--r--tests/wrappers/fixtures/ssh-agent-credentials002.yaml6
-rw-r--r--tests/wrappers/fixtures/ssh-agent-credentials003.xml11
-rw-r--r--tests/wrappers/fixtures/ssh-agent-credentials003.yaml6
-rw-r--r--tests/wrappers/fixtures/ssh-agent-credentials004.xml8
-rw-r--r--tests/wrappers/fixtures/ssh-agent-credentials004.yaml4
7 files changed, 96 insertions, 6 deletions
diff --git a/jenkins_jobs/modules/wrappers.py b/jenkins_jobs/modules/wrappers.py
index 1546965e..8f4096c7 100644
--- a/jenkins_jobs/modules/wrappers.py
+++ b/jenkins_jobs/modules/wrappers.py
@@ -1154,23 +1154,66 @@ def ssh_agent_credentials(parser, xml_parent, data):
Requires the Jenkins :jenkins-wiki:`SSH-Agent Plugin <SSH+Agent+Plugin>`.
- :arg str user: The user id of the jenkins user credentials (required)
+ :arg list users: A list of Jenkins users credential IDs (required)
+ :arg str user: The user id of the jenkins user credentials (deprecated)
Example:
.. literalinclude::
+ /../../tests/wrappers/fixtures/ssh-agent-credentials002.yaml
+
+
+ if both **users** and **user** parameters specified, **users** will be
+ prefered, **user** will be ignored.
+
+ Example:
+
+ .. literalinclude::
+ /../../tests/wrappers/fixtures/ssh-agent-credentials003.yaml
+
+ The **users** with one value in list equals to the **user**. In this
+ case old style XML will be generated. Use this format if you use
+ SSH-Agent plugin < 1.5.
+
+ Example:
+
+ .. literalinclude::
+ /../../tests/wrappers/fixtures/ssh-agent-credentials004.yaml
+
+ equals to:
+
+ .. literalinclude::
/../../tests/wrappers/fixtures/ssh-agent-credentials001.yaml
"""
+ logger = logging.getLogger(__name__)
+
entry_xml = XML.SubElement(
xml_parent,
'com.cloudbees.jenkins.plugins.sshagent.SSHAgentBuildWrapper')
-
- try:
- XML.SubElement(entry_xml, 'user').text = data['user']
- except KeyError:
- raise JenkinsJobsException("Missing 'user' for ssh-agent-credentials")
+ xml_key = 'user'
+
+ user_list = list()
+ if 'users' in data:
+ user_list += data['users']
+ if len(user_list) > 1:
+ entry_xml = XML.SubElement(entry_xml, 'credentialIds')
+ xml_key = 'string'
+ if 'user' in data:
+ logger.warn("Both 'users' and 'user' parameters specified for "
+ "ssh-agent-credentials. 'users' is used, 'user' is "
+ "ignored.")
+ elif 'user' in data:
+ logger.warn("The 'user' param has been deprecated, "
+ "use the 'users' param instead.")
+ user_list.append(data['user'])
+ else:
+ raise JenkinsJobsException("Missing 'user' or 'users' parameter "
+ "for ssh-agent-credentials")
+
+ for user in user_list:
+ XML.SubElement(entry_xml, xml_key).text = user
def credentials_binding(parser, xml_parent, data):
diff --git a/tests/wrappers/fixtures/ssh-agent-credentials002.xml b/tests/wrappers/fixtures/ssh-agent-credentials002.xml
new file mode 100644
index 00000000..1b9e1d1b
--- /dev/null
+++ b/tests/wrappers/fixtures/ssh-agent-credentials002.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<project>
+ <buildWrappers>
+ <com.cloudbees.jenkins.plugins.sshagent.SSHAgentBuildWrapper>
+ <credentialIds>
+ <string>44747833-247a-407a-a98f-a5a2d785111c</string>
+ <string>f1c0f777-7ac6-43fd-b5c7-68b420aa1392</string>
+ <string>dd647a01-be21-402b-bfc5-a4e89be7d0c4</string>
+ </credentialIds>
+ </com.cloudbees.jenkins.plugins.sshagent.SSHAgentBuildWrapper>
+ </buildWrappers>
+</project>
diff --git a/tests/wrappers/fixtures/ssh-agent-credentials002.yaml b/tests/wrappers/fixtures/ssh-agent-credentials002.yaml
new file mode 100644
index 00000000..875521e4
--- /dev/null
+++ b/tests/wrappers/fixtures/ssh-agent-credentials002.yaml
@@ -0,0 +1,6 @@
+wrappers:
+ - ssh-agent-credentials:
+ users:
+ - '44747833-247a-407a-a98f-a5a2d785111c'
+ - 'f1c0f777-7ac6-43fd-b5c7-68b420aa1392'
+ - 'dd647a01-be21-402b-bfc5-a4e89be7d0c4'
diff --git a/tests/wrappers/fixtures/ssh-agent-credentials003.xml b/tests/wrappers/fixtures/ssh-agent-credentials003.xml
new file mode 100644
index 00000000..cc332cf4
--- /dev/null
+++ b/tests/wrappers/fixtures/ssh-agent-credentials003.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="utf-8"?>
+<project>
+ <buildWrappers>
+ <com.cloudbees.jenkins.plugins.sshagent.SSHAgentBuildWrapper>
+ <credentialIds>
+ <string>44747833-247a-407a-a98f-a5a2d785111c</string>
+ <string>dd647a01-be21-402b-bfc5-a4e89be7d0c4</string>
+ </credentialIds>
+ </com.cloudbees.jenkins.plugins.sshagent.SSHAgentBuildWrapper>
+ </buildWrappers>
+</project>
diff --git a/tests/wrappers/fixtures/ssh-agent-credentials003.yaml b/tests/wrappers/fixtures/ssh-agent-credentials003.yaml
new file mode 100644
index 00000000..af15975d
--- /dev/null
+++ b/tests/wrappers/fixtures/ssh-agent-credentials003.yaml
@@ -0,0 +1,6 @@
+wrappers:
+ - ssh-agent-credentials:
+ user: '49d20745-9889-4c02-b286-fc6fb89c36bd'
+ users:
+ - '44747833-247a-407a-a98f-a5a2d785111c'
+ - 'dd647a01-be21-402b-bfc5-a4e89be7d0c4'
diff --git a/tests/wrappers/fixtures/ssh-agent-credentials004.xml b/tests/wrappers/fixtures/ssh-agent-credentials004.xml
new file mode 100644
index 00000000..48ad908b
--- /dev/null
+++ b/tests/wrappers/fixtures/ssh-agent-credentials004.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="utf-8"?>
+<project>
+ <buildWrappers>
+ <com.cloudbees.jenkins.plugins.sshagent.SSHAgentBuildWrapper>
+ <user>49d20745-9889-4c02-b286-fc6fb89c36bd</user>
+ </com.cloudbees.jenkins.plugins.sshagent.SSHAgentBuildWrapper>
+ </buildWrappers>
+</project>
diff --git a/tests/wrappers/fixtures/ssh-agent-credentials004.yaml b/tests/wrappers/fixtures/ssh-agent-credentials004.yaml
new file mode 100644
index 00000000..b0668a94
--- /dev/null
+++ b/tests/wrappers/fixtures/ssh-agent-credentials004.yaml
@@ -0,0 +1,4 @@
+wrappers:
+ - ssh-agent-credentials:
+ users:
+ - '49d20745-9889-4c02-b286-fc6fb89c36bd'