diff --git a/jenkins_jobs/modules/properties.py b/jenkins_jobs/modules/properties.py index cb521470b..f928f87d5 100644 --- a/jenkins_jobs/modules/properties.py +++ b/jenkins_jobs/modules/properties.py @@ -36,6 +36,42 @@ import xml.etree.ElementTree as XML import jenkins_jobs.modules.base +def ownership(parser, xml_parent, data): + """yaml: ownership + Plugin provides explicit ownership for jobs and slave nodes. + Requires the Jenkins `Ownership Plugin. + `_ + + :arg bool enabled: whether ownership enabled (default : true) + :arg str owner: the owner of job + :arg list co-owners: list of job co-owners + + Example:: + + properties: + - ownership: + owner: abraverm + co-owners: + - lbednar + - edolinin + """ + ownership_plugin = \ + XML.SubElement(xml_parent, + 'com.synopsys.arc.' + 'jenkins.plugins.ownership.jobs.JobOwnerJobProperty') + ownership = XML.SubElement(ownership_plugin, 'ownership') + owner = str(data.get('enabled', True)).lower() + XML.SubElement(ownership, 'ownershipEnabled').text = owner + + XML.SubElement(ownership, 'primaryOwnerId').text = data.get('owner') + + coowners = data.get('co-owners', []) + if coowners: + coownersIds = XML.SubElement(ownership, 'coownersIds') + for coowner in coowners: + XML.SubElement(coownersIds, 'string').text = coowner + + def promoted_build(parser, xml_parent, data): """yaml: promoted-build Marks a build for promotion. A promotion process with an identical diff --git a/setup.py b/setup.py index 4f979b64f..68892d888 100644 --- a/setup.py +++ b/setup.py @@ -84,6 +84,7 @@ setuptools.setup( 'extended-choice=jenkins_jobs.modules.properties:extended_choice', 'github=jenkins_jobs.modules.properties:github', 'inject=jenkins_jobs.modules.properties:inject', + 'ownership=jenkins_jobs.modules.properties:ownership', 'priority-sorter=jenkins_jobs.modules.properties:priority_sorter', 'promoted-build=jenkins_jobs.modules.properties:promoted_build', 'throttle=jenkins_jobs.modules.properties:throttle',