blob: afe34f997a01963e7f909a76582e24a9303df16f [file] [log] [blame]
import logging
LOG = logging.getLogger(__name__)
def __virtual__():
if 'rundeck.get_project' not in __salt__:
return (
False,
'The rundeck_scm state module cannot be loaded: rundeck is '
'unavailable',
)
return True
def present_import(name, project_name, **params):
result = {
'name': name,
'changes': {},
'result': False,
'comment': '',
'pchanges': {},
}
if __opts__['test'] == True:
result['comment'] = 'There is nothing to change in the test mode.'
result['result'] = None
ok, plugin = __salt__['rundeck.get_plugin'](project_name, 'import')
if ok:
if plugin:
config = __salt__['rundeck.create_scm_import_config'](
project_name, params, config=plugin['config'])
LOG.debug("SCM Import for the %s project: %s/%s",
project_name, plugin["config"], config)
if plugin['config'] != config:
ok, plugin = __salt__['rundeck.update_scm_import_config'](
project_name, plugin, config)
result['comment'] = (
"SCM Import plugin for the {} project was updated."
.format(project_name))
result['changes'][name] = 'UPDATED'
else:
result['comment'] = (
"SCM Import plugin for the {} project is already up to "
"date.".format(project_name))
result['result'] = True
else:
ok, plugin = __salt__['rundeck.setup_scm_import'](
project_name, params)
if ok:
result['changes'][name] = 'CREATED'
result['comment'] = (
"SCM Import was configured for the {} project."
.format(project_name))
result['result'] = True
else:
result['comment'] = plugin
else:
result['comment'] = plugin
return result
def sync_import(name, project_name, **params):
result = {
'name': name,
'changes': {},
'result': True,
'comment': '',
'pchanges': {},
}
if __opts__['test'] == True:
result['comment'] = 'There is nothing to change in the test mode.'
result['result'] = None
return result
ok, plugin = __salt__['rundeck.get_plugin'](project_name, 'import')
if not ok:
result['comment'] = plugin
return result
ok, state = __salt__['rundeck.get_plugin_state'](project_name, 'import')
if not ok:
result['comment'] = state
return result
history = []
for action_name, action in [
('initialize-tracking', 'rundeck.perform_scm_import_tracking'),
('remote-pull', 'rundeck.perform_scm_import_pull'),
('import-all', 'rundeck.perform_scm_import'),
]:
if action_name in state['actions']:
ok, msg = __salt__[action](
project_name, plugin, params)
if not ok:
result['comment'] = msg
result['result'] = False
return result
else:
history.append(msg['message'])
ok, state = __salt__['rundeck.get_plugin_state'](
project_name, 'import')
if not ok:
result['comment'] = state
result['result'] = False
return result
if history:
result['changes'][name] = '\n'.join(history)
return result
def disabled_import(name, project_name):
result = {
'name': name,
'changes': {},
'result': False,
'comment': '',
'pchanges': {},
}
if __opts__['test'] == True:
result['comment'] = 'There is nothing to change in the test mode.'
result['result'] = None
ok, status = __salt__['rundeck.get_plugin_status'](project_name, 'import')
if ok:
if status['enabled']:
ok, msg = __salt__['rundeck.disable_plugin'](project_name, 'import')
result['comment'] = msg
if ok:
result['changes'][name] = 'DISABLED'
result['result'] = True
else:
result['result'] = True
else:
result['comment'] = status
return result
def enabled_import(name, project_name):
result = {
'name': name,
'changes': {},
'result': False,
'comment': '',
'pchanges': {},
}
if __opts__['test'] == True:
result['comment'] = 'There is nothing to change in the test mode.'
result['result'] = None
ok, status = __salt__['rundeck.get_plugin_status'](project_name, 'import')
if ok:
if status['configured'] and not status['enabled']:
ok, msg = __salt__['rundeck.enable_plugin'](project_name, 'import')
result['comment'] = msg
if ok:
result['changes'][name] = 'ENABLED'
result['result'] = True
elif not status['configured']:
result['comment'] = "Could not enable not configured SCM plugin."
else:
result['result'] = True
else:
result['comment'] = status
return result