Use default plugin list when listing Forbidden

Listing the plugins installed on a Jenkins instance requires full
administrative permissions.  For cases where we don't have permission to
read the plugin list, we should just fall back to the default list.

Story: 2000618
Task: 3052

Change-Id: I924f237f5f175216200668d133092f2357f6d9d3
This commit is contained in:
Daniel Watkins 2017-07-27 12:33:54 -04:00
parent 8d3d915aa0
commit cc200dade0
2 changed files with 15 additions and 1 deletions

View File

@ -112,7 +112,7 @@ class JenkinsManager(object):
plugins_list = self.jenkins.get_plugins().values()
except jenkins.JenkinsException as e:
if re.search("Connection refused", str(e)):
if re.search("(Connection refused|Forbidden)", str(e)):
logger.warning(
"Unable to retrieve Jenkins Plugin Info from {0},"
" using default empty plugins info list.".format(

View File

@ -68,3 +68,17 @@ class TestCaseTestJenkinsManager(base.BaseTestCase):
self.builder.delete_old_managed()
self.assertEquals(patches['delete_job'].call_count, 2)
def _get_plugins_info_error_test(self, error_string):
builder = jenkins_jobs.builder.JenkinsManager(self.jjb_config)
exception = jenkins_jobs.builder.jenkins.JenkinsException(error_string)
with mock.patch.object(builder.jenkins, 'get_plugins',
side_effect=exception):
plugins_info = builder.get_plugins_info()
self.assertEqual([_plugins_info['plugin1']], plugins_info)
def test_get_plugins_info_handles_connectionrefused_errors(self):
self._get_plugins_info_error_test('Connection refused')
def test_get_plugins_info_handles_forbidden_errors(self):
self._get_plugins_info_error_test('Forbidden')