Add alternative plugin update
13 April some new plugins were released leading old jenkins to be
inoperable. Adding semi-pin mechanism will allow us to handle it.
PROD-36857
Change-Id: Ic3d38cb9f86e16c316fb221e8a9d770dc1f5f400
(cherry picked from commit 22b44555bff43bec97ed797f236590ed3875fc06)
diff --git a/_modules/jenkins_common.py b/_modules/jenkins_common.py
index 64cede6..422be23 100644
--- a/_modules/jenkins_common.py
+++ b/_modules/jenkins_common.py
@@ -194,3 +194,41 @@
ret['result'] = None if test else result
return ret
+
+def jenkins_do_safe_restart(**kwargs):
+ """
+ Execute safe restart using jenkins groovy call
+
+ :returns: salt-specified state dict
+ """
+ restart_cmd_groovy = "Jenkins.instance.doSafeRestart()"
+ test = __opts__['test'] # noqa
+ module_name = 'jenkins_do_safe_restart'
+ ret = {
+ 'name': module_name,
+ 'changes': {},
+ 'result': False,
+ 'comment': '',
+ }
+ result = False
+ if test:
+ status = "SUCCESS"
+ ret['changes'][module_name] = status
+ ret['comment'] = 'Jenkins safe restart initiated (test mode)'
+ ret['result'] = None
+ return ret
+
+ call_result = __salt__['jenkins_common.call_groovy_script'](restart_cmd_groovy, [])
+ if call_result["code"] == 200:
+ status = call_result["msg"]
+ ret['changes'][module_name] = status
+ ret['comment'] = 'Jenkins safe restart initiated'
+ ret['result'] = True
+ else:
+ status = 'FAILED'
+ ret['changes'][module_name] = status
+ ret['comment'] = "Failed to initiate jenkins restart: {}".format(call_result["msg"])
+ logger.error("Failed to initiate jenkins restart: {}".format(call_result["msg"]))
+
+ return ret
+