mirror of
https://github.com/ansible-collections/community.general.git
synced 2025-06-27 10:40:22 -07:00
Add fallback url for jenkins plugin (#1334)
* uncoupled updates_url from plugin download urls added new parameters: versioned_plugins_url, latest_plugins_url * parameters updates_url, latest_plugins_url and versioned_plugins_url changed type to list of strings to implement fallback URLs usage added type conversion if they are string (backward compatibility) * removed type conversion this is handled by ansible validation fix: dont fail if first url fails * added fallback: if installation from plugin manager fails, try downloading the plugin manually * fixed test failures * PEP8 indent fix * changelog fragment * added debug outputs for new url fallback behavior * added version_added in description for latest_plugins_url Co-authored-by: Felix Fontein <felix@fontein.de> * added version_added in description for versioned_plugins_url Co-authored-by: Felix Fontein <felix@fontein.de> * Update changelogs/fragments/1334-jenkins-plugin-fallback-urls.yaml Co-authored-by: Felix Fontein <felix@fontein.de> * improve backwards-compatibility add optional arg to allow custom update-center.json targets * pep8 fixes * fix inconsistency in argument documentation * Apply suggestions from code review Co-authored-by: Amin Vakil <info@aminvakil.com> * add unit tests * fix pep8 * Apply suggestions from code review Co-authored-by: Felix Fontein <felix@fontein.de> Co-authored-by: Amin Vakil <info@aminvakil.com>
This commit is contained in:
parent
2d1527a564
commit
9c7b539ef6
3 changed files with 188 additions and 62 deletions
|
@ -151,3 +151,40 @@ def test__get_json_data(mocker):
|
|||
'CSRF')
|
||||
|
||||
assert isinstance(json_data, Mapping)
|
||||
|
||||
|
||||
def test__new_fallback_urls(mocker):
|
||||
"test generation of new fallback URLs"
|
||||
|
||||
params = {
|
||||
"url": "http://fake.jenkins.server",
|
||||
"timeout": 30,
|
||||
"name": "test-plugin",
|
||||
"version": "1.2.3",
|
||||
"updates_url": ["https://some.base.url"],
|
||||
"latest_plugins_url_segments": ["test_latest"],
|
||||
"versioned_plugins_url_segments": ["ansible", "versioned_plugins"],
|
||||
"update_json_url_segment": ["unreachable", "updates/update-center.json"],
|
||||
}
|
||||
module = mocker.Mock()
|
||||
module.params = params
|
||||
|
||||
JenkinsPlugin._csrf_enabled = pass_function
|
||||
JenkinsPlugin._get_installed_plugins = pass_function
|
||||
|
||||
jenkins_plugin = JenkinsPlugin(module)
|
||||
|
||||
latest_urls = jenkins_plugin._get_latest_plugin_urls()
|
||||
assert isInList(latest_urls, "https://some.base.url/test_latest/test-plugin.hpi")
|
||||
versioned_urls = jenkins_plugin._get_versioned_plugin_urls()
|
||||
assert isInList(versioned_urls, "https://some.base.url/versioned_plugins/test-plugin/1.2.3/test-plugin.hpi")
|
||||
json_urls = jenkins_plugin._get_update_center_urls()
|
||||
assert isInList(json_urls, "https://some.base.url/updates/update-center.json")
|
||||
|
||||
|
||||
def isInList(l, i):
|
||||
print("checking if %s in %s" % (i, l))
|
||||
for item in l:
|
||||
if item == i:
|
||||
return True
|
||||
return False
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue