Add basic client for Rundeck
Change-Id: I4b1a8deedb858ec664d4f888ef78458bd19f102f
diff --git a/_states/rundeck_project.py b/_states/rundeck_project.py
new file mode 100644
index 0000000..2e877a6
--- /dev/null
+++ b/_states/rundeck_project.py
@@ -0,0 +1,58 @@
+import logging
+
+LOG = logging.getLogger(__name__)
+
+
+def present(name, description=''):
+ ret = {
+ 'name': name,
+ 'changes': {},
+ 'result': False,
+ 'comment': '',
+ 'pchanges': {},
+ }
+ if __opts__['test'] == True:
+ ret['comment'] = 'Nothing to change in the test mode.'
+ ret['result'] = None
+ return ret
+ params = {
+ "description": description,
+ }
+ project = __salt__['rundeck.get_project'](name)
+ if project:
+ config = __salt__['rundeck.create_project_config'](
+ name, params, config=project["config"])
+ if project["config"] != config:
+ LOG.warning("{}: {}".format(project["config"], config))
+ __salt__['rundeck.update_project_config'](name, project, config)
+ ret['comment'] = "Project {} was updated.".format(name)
+ ret['changes'][name] = "UPDATED"
+ else:
+ ret['comment'] = "Project {} is already up to date.".format(name)
+ else:
+ __salt__['rundeck.create_project'](name, params)
+ ret['comment'] = "Project {} was created.".format(name)
+ ret['changes'][name] = "CREATED"
+ ret['result'] = True
+ return ret
+
+
+def absent(name):
+ ret = {
+ 'name': name,
+ 'changes': {},
+ 'result': False,
+ 'comment': '',
+ 'pchanges': {},
+ }
+ if __opts__['test'] == True:
+ ret['comment'] = 'Nothing to remove in the test mode.'
+ ret['result'] = None
+ return ret
+ project = __salt__['rundeck.get_project'](name)
+ if project:
+ __salt__['rundeck.delete_project'](name)
+ ret['changes'][name] = 'DELETED'
+ ret['comment'] = "Project {} was removed.".format(name)
+ ret['result'] = True
+ return ret