Add ability to configure secret keys

Change-Id: I119e00a4b7feaec9d93401ef9e825ee46d304be4
diff --git a/_states/rundeck_secret.py b/_states/rundeck_secret.py
new file mode 100644
index 0000000..c162a75
--- /dev/null
+++ b/_states/rundeck_secret.py
@@ -0,0 +1,72 @@
+import logging
+
+LOG = logging.getLogger(__name__)
+
+
+def __virtual__():
+    if 'rundeck.get_project' not in __salt__:
+        return (
+            False,
+            'The rundeck_project state module cannot be loaded: rundeck is '
+            'unavailable',
+        )
+    return True
+
+
+def present(name, type, content):
+    result = {
+        'name': name,
+        'changes': {},
+        'result': False,
+        'comment': '',
+        'pchanges': {},
+    }
+    if __opts__['test'] == True:
+        result['comment'] = 'Nothing to create in the test mode.'
+        result['result'] = None
+        return result
+    ok, secret = __salt__['rundeck.get_secret_metadata'](name)
+    if ok:
+        do_update = secret is not None
+        ok, msg = __salt__['rundeck.upload_secret'](name, type, content,
+                                                    update=do_update)
+        if ok:
+            result['changes'][name] = 'UPLOADED'
+            result['comment'] = (
+                "The {} secret key with the {} type was successfully uploaded."
+                .format(name, type))
+            result['result'] = True
+        else:
+            result['comment'] = msg
+    else:
+        result['comment'] = secret
+    return result
+
+
+def absent(name):
+    result = {
+        'name': name,
+        'changes': {},
+        'result': False,
+        'comment': '',
+        'pchanges': {},
+    }
+    if __opts__['test'] == True:
+        result['comment'] = 'Nothing to remove in the test mode.'
+        result['result'] = None
+        return result
+    ok, secret = __salt__['rundeck.get_secret_metadata'](name)
+    if ok:
+        if not secret:
+            result['result'] = True
+            return result
+        ok, msg = __salt__['rundeck.delete_secret'](name)
+        if ok:
+            result['changes'][name] = 'DELETED'
+            result['comment'] = "Secret key {} was removed.".format(name)
+            result['result'] = True
+        else:
+            result['comment'] = msg
+    else:
+        result['comment'] = secret
+    return result