From ab0aa1adfd12da5d09b085250ef95f2e2312f5cb Mon Sep 17 00:00:00 2001 From: Brian Saville Date: Wed, 29 Oct 2014 12:20:53 -0600 Subject: [PATCH] Add support for multiple port allocations Change-Id: I156bccebdd392cd4a912599b5a2c815587e77134 --- jenkins_jobs/modules/wrappers.py | 26 ++++++++++++------- tests/wrappers/fixtures/port-allocator001.xml | 12 +++++++++ .../wrappers/fixtures/port-allocator001.yaml | 3 +++ tests/wrappers/fixtures/port-allocator002.xml | 15 +++++++++++ .../wrappers/fixtures/port-allocator002.yaml | 5 ++++ 5 files changed, 52 insertions(+), 9 deletions(-) create mode 100644 tests/wrappers/fixtures/port-allocator001.xml create mode 100644 tests/wrappers/fixtures/port-allocator001.yaml create mode 100644 tests/wrappers/fixtures/port-allocator002.xml create mode 100644 tests/wrappers/fixtures/port-allocator002.yaml diff --git a/jenkins_jobs/modules/wrappers.py b/jenkins_jobs/modules/wrappers.py index 94327ce34..345768845 100644 --- a/jenkins_jobs/modules/wrappers.py +++ b/jenkins_jobs/modules/wrappers.py @@ -22,6 +22,7 @@ Wrappers can alter the way the build is run as well as the build output. """ +import logging import xml.etree.ElementTree as XML import jenkins_jobs.modules.base from jenkins_jobs.errors import JenkinsJobsException @@ -440,22 +441,29 @@ def port_allocator(parser, xml_parent, data): Requires the Jenkins `Port Allocator Plugin. `_ - :arg str name: Variable name of the port or a specific port number + :arg str name: Deprecated, use names instead + :arg list names: Variable list of names of the port or list of + specific port numbers - Example:: + Example: - wrappers: - - port-allocator: - name: SERVER_PORT + .. literalinclude:: /../../tests/wrappers/fixtures/port-allocator002.yaml """ pa = XML.SubElement(xml_parent, 'org.jvnet.hudson.plugins.port__allocator.' 'PortAllocator') ports = XML.SubElement(pa, 'ports') - dpt = XML.SubElement(ports, - 'org.jvnet.hudson.plugins.port__allocator.' - 'DefaultPortType') - XML.SubElement(dpt, 'name').text = data['name'] + names = data.get('names') + if not names: + logger = logging.getLogger(__name__) + logger.warn('port_allocator name is deprecated, use a names list ' + ' instead') + names = [data['name']] + for name in names: + dpt = XML.SubElement(ports, + 'org.jvnet.hudson.plugins.port__allocator.' + 'DefaultPortType') + XML.SubElement(dpt, 'name').text = name def locks(parser, xml_parent, data): diff --git a/tests/wrappers/fixtures/port-allocator001.xml b/tests/wrappers/fixtures/port-allocator001.xml new file mode 100644 index 000000000..78cbfeaae --- /dev/null +++ b/tests/wrappers/fixtures/port-allocator001.xml @@ -0,0 +1,12 @@ + + + + + + + SERVER_PORT + + + + + diff --git a/tests/wrappers/fixtures/port-allocator001.yaml b/tests/wrappers/fixtures/port-allocator001.yaml new file mode 100644 index 000000000..d5255b4d3 --- /dev/null +++ b/tests/wrappers/fixtures/port-allocator001.yaml @@ -0,0 +1,3 @@ +wrappers: + - port-allocator: + name: SERVER_PORT diff --git a/tests/wrappers/fixtures/port-allocator002.xml b/tests/wrappers/fixtures/port-allocator002.xml new file mode 100644 index 000000000..b6c4dd00b --- /dev/null +++ b/tests/wrappers/fixtures/port-allocator002.xml @@ -0,0 +1,15 @@ + + + + + + + SERVER_PORT + + + SERVER_PORT2 + + + + + diff --git a/tests/wrappers/fixtures/port-allocator002.yaml b/tests/wrappers/fixtures/port-allocator002.yaml new file mode 100644 index 000000000..8c1ee831b --- /dev/null +++ b/tests/wrappers/fixtures/port-allocator002.yaml @@ -0,0 +1,5 @@ +wrappers: + - port-allocator: + names: + - SERVER_PORT + - SERVER_PORT2