blob: a96afeddbac9b0dfec667d2d75be8bc1221cd01e [file] [log] [blame]
import json
import logging
import time
log = logging.getLogger(__name__)
def __virtual__():
'''
Only load if jenkins_common module exist.
'''
if 'jenkins_common.call_groovy_script' not in __salt__:
return (
False,
'The jenkins_node state module cannot be loaded: '
'jenkins_common not found')
return True
def managed(name, plugins, remove_unwanted=False, force_remove=False):
"""
Manage jenkins plugins
:param name: salt resource name (usually 'jenkins_plugin_manage')
:param plugins: map containing plugin names and parameters
:param remove_unwanted: whether to remove not listed plugins
:param force_remove: force removing plugins recursively with all dependent plugins
:returns: salt-specified state dict
"""
log.info('Managing jenkins plugins')
template = __salt__['jenkins_common.load_template'](
'salt://jenkins/files/groovy/plugin.template',
__env__)
result = __salt__['jenkins_common.api_call'](name, template,
[ 'UPDATED', 'NO CHANGES' ],
{
'plugin_list': json.dumps(plugins),
'clean_unwanted': remove_unwanted,
'force_remove': force_remove
},
'Manage Jenkins plugins')
log.debug('Got result: ' + json.dumps(result))
log.info('Checking if restart is required...')
# While next code is successful, we should wait for jenkins shutdown
# either:
# - false returned by isQuietingDown()
# - any error meaning that jenkins is unavailable (restarting)
wait = { 'result': True }
while (wait['result']):
wait = __salt__['jenkins_common.api_call']('jenkins_restart_wait',
'println Jenkins.instance.isQuietingDown()', [ 'true' ], {},
'Wait for jenkins restart')
if (wait['result']):
log.debug('Jenkins restart is required. Waiting...')
time.sleep(5)
return result