diff options
author | Zuul <zuul@review.opendev.org> | 2020-07-17 13:55:00 +0000 |
---|---|---|
committer | Gerrit Code Review <review@openstack.org> | 2020-07-17 13:55:00 +0000 |
commit | c5fac510f20b1ec9c73c8ea903c79d0757e0d757 (patch) | |
tree | 8a19f73009a31300a407615ad0f287348ae2d7bd | |
parent | fd85f3475473684f71d51547626d4e58d70aa5e3 (diff) | |
parent | 703a76650f746bad713fef55389a616f0067255a (diff) | |
download | python-jenkins-job-builder-c5fac510f20b1ec9c73c8ea903c79d0757e0d757.tar.gz python-jenkins-job-builder-c5fac510f20b1ec9c73c8ea903c79d0757e0d757.tar.xz python-jenkins-job-builder-c5fac510f20b1ec9c73c8ea903c79d0757e0d757.zip |
Merge "Fix Authorization Matrix property - inheritance strategy"master-patches
6 files changed, 43 insertions, 22 deletions
diff --git a/jenkins_jobs/modules/properties.py b/jenkins_jobs/modules/properties.py index 41db1c03..67a14f51 100644 --- a/jenkins_jobs/modules/properties.py +++ b/jenkins_jobs/modules/properties.py @@ -1,4 +1,5 @@ # Copyright 2012 Hewlett-Packard Development Company, L.P. +# Copyright 2020 Liberty Global B.V. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -518,9 +519,6 @@ def authorization(registry, xml_parent, data): :language: yaml """ - # get the folder name if it exists - in_a_folder = data.pop("_use_folder_perms", None) if data else None - # check if it's a folder or a job is_a_folder = data.pop("_is_a_folder", None) if data else False @@ -551,23 +549,18 @@ def authorization(registry, xml_parent, data): } if data: - if in_a_folder: - if is_a_folder: - element_name = "com.cloudbees.hudson.plugins.folder.properties.AuthorizationMatrixProperty" - else: - element_name = "hudson.security.AuthorizationMatrixProperty" - matrix = XML.SubElement(xml_parent, element_name) - XML.SubElement( - matrix, - "inheritanceStrategy", - { - "class": "org.jenkinsci.plugins.matrixauth.inheritance.InheritParentStrategy" - }, - ) + if is_a_folder: + element_name = "com.cloudbees.hudson.plugins.folder.properties.AuthorizationMatrixProperty" else: - matrix = XML.SubElement( - xml_parent, "hudson.security.AuthorizationMatrixProperty" - ) + element_name = "hudson.security.AuthorizationMatrixProperty" + matrix = XML.SubElement(xml_parent, element_name) + XML.SubElement( + matrix, + "inheritanceStrategy", + { + "class": "org.jenkinsci.plugins.matrixauth.inheritance.InheritParentStrategy" + }, + ) for (username, perms) in data.items(): for perm in perms: @@ -1271,13 +1264,10 @@ class Properties(jenkins_jobs.modules.base.Base): # Only projects are placed in folders if "project-type" in data: if data["project-type"] in ("folder", "multibranch"): - prop["authorization"]["_use_folder_perms"] = True prop["authorization"]["_is_a_folder"] = True else: - prop["authorization"]["_use_folder_perms"] = "folder" in data prop["authorization"]["_is_a_folder"] = False else: - prop["authorization"]["_use_folder_perms"] = False prop["authorization"]["_is_a_folder"] = False self.registry.dispatch("property", properties, prop) diff --git a/tests/properties/fixtures/authorization.xml b/tests/properties/fixtures/authorization.xml index 06268a05..593dfa84 100644 --- a/tests/properties/fixtures/authorization.xml +++ b/tests/properties/fixtures/authorization.xml @@ -2,6 +2,7 @@ <project> <properties> <hudson.security.AuthorizationMatrixProperty> + <inheritanceStrategy class="org.jenkinsci.plugins.matrixauth.inheritance.InheritParentStrategy"/> <permission>com.cloudbees.plugins.credentials.CredentialsProvider.Create:admin</permission> <permission>com.cloudbees.plugins.credentials.CredentialsProvider.Delete:admin</permission> <permission>com.cloudbees.plugins.credentials.CredentialsProvider.ManageDomains:admin</permission> diff --git a/tests/properties/fixtures/authorization_matrix.xml b/tests/properties/fixtures/authorization_matrix.xml index f3fd8177..6404b142 100644 --- a/tests/properties/fixtures/authorization_matrix.xml +++ b/tests/properties/fixtures/authorization_matrix.xml @@ -2,6 +2,7 @@ <project> <properties> <hudson.security.AuthorizationMatrixProperty> + <inheritanceStrategy class="org.jenkinsci.plugins.matrixauth.inheritance.InheritParentStrategy"/> <permission>hudson.model.Item.Delete:admin</permission> <permission>hudson.model.Item.Configure:admin</permission> <permission>hudson.model.Item.Read:admin</permission> diff --git a/tests/yamlparser/fixtures/auth-jobs/project-in-folder-with-auth-properties2.xml b/tests/yamlparser/fixtures/auth-jobs/project-in-folder-with-auth-properties2.xml new file mode 100644 index 00000000..3669b217 --- /dev/null +++ b/tests/yamlparser/fixtures/auth-jobs/project-in-folder-with-auth-properties2.xml @@ -0,0 +1,20 @@ +<?xml version="1.0" encoding="utf-8"?> +<project> + <actions/> + <description><!-- Managed by Jenkins Job Builder --></description> + <keepDependencies>false</keepDependencies> + <blockBuildWhenDownstreamBuilding>false</blockBuildWhenDownstreamBuilding> + <blockBuildWhenUpstreamBuilding>false</blockBuildWhenUpstreamBuilding> + <concurrentBuild>false</concurrentBuild> + <canRoam>true</canRoam> + <properties> + <hudson.security.AuthorizationMatrixProperty> + <inheritanceStrategy class="org.jenkinsci.plugins.matrixauth.inheritance.InheritParentStrategy"/> + <permission>hudson.model.Item.Build:auser</permission> + </hudson.security.AuthorizationMatrixProperty> + </properties> + <scm class="hudson.scm.NullSCM"/> + <builders/> + <publishers/> + <buildWrappers/> +</project> diff --git a/tests/yamlparser/fixtures/project-in-folder-with-auth-properties2.yaml b/tests/yamlparser/fixtures/project-in-folder-with-auth-properties2.yaml new file mode 100644 index 00000000..8351c473 --- /dev/null +++ b/tests/yamlparser/fixtures/project-in-folder-with-auth-properties2.yaml @@ -0,0 +1,8 @@ +- job: + # folder name specified as part of job name + name: auth-jobs/auth-job-test + project-type: freestyle + properties: + - authorization: + auser: + - job-build diff --git a/tests/yamlparser/fixtures/project-with-auth-properties.xml b/tests/yamlparser/fixtures/project-with-auth-properties.xml index 4d4c1dfb..c02bd8cc 100644 --- a/tests/yamlparser/fixtures/project-with-auth-properties.xml +++ b/tests/yamlparser/fixtures/project-with-auth-properties.xml @@ -14,6 +14,7 @@ <canRoam>true</canRoam> <properties> <hudson.security.AuthorizationMatrixProperty> + <inheritanceStrategy class="org.jenkinsci.plugins.matrixauth.inheritance.InheritParentStrategy"/> <permission>hudson.model.Item.Build:auser</permission> </hudson.security.AuthorizationMatrixProperty> </properties> |