Add state to manage AuditTrail Logger

PROD-31662

Change-Id: Id1abc4020d984699d28580179463ac31e1c27f64
diff --git a/_states/jenkins_audittrail.py b/_states/jenkins_audittrail.py
new file mode 100644
index 0000000..ced671e
--- /dev/null
+++ b/_states/jenkins_audittrail.py
@@ -0,0 +1,84 @@
+import logging
+
+logger = 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_audittrail state module cannot be loaded: '
+            'jenkins_common not found')
+    return True
+
+def config (name, type="console", log="", limit=0, count=0, output="STD_OUT",
+            date_format="yyyy-MM-dd HH:mm:ss:SSS", log_prefix="", syslog_server_hostname="",
+            syslog_server_port=514, syslog_facility="SYSLOG",
+            app_name="jenkins", message_hostname="", message_format="RFC_3164"):
+    """
+    Jenkins AuditTrail logging config state method
+
+    :param type: logger type. one of: console (default), file, syslog
+    Console Logger params:
+    :param output: STD_OUT or STD_ERR
+    :param date_format
+    :param log_prefix
+    File Logger params:
+    :param log: path to log file
+    :param limit: log file size
+    :param count: log file count to keep
+    Syslog Logger params:
+    :param syslog_server_hostname
+    :param syslog_server_port
+    :param syslog_facility
+    :param app_name
+    :param message_hostname
+    :param message_format: RFC_3164 or RFC_5424
+
+    :returns: salt-specified state dict
+    """
+
+    template = __salt__['jenkins_common.load_template'](
+        'salt://jenkins/files/groovy/audittrail_config.template',
+        __env__)
+    return __salt__['jenkins_common.api_call'](name, template,
+                        ["CREATED", "EXISTS"],
+                        {
+                            'logger_type': type,
+                            'output': output,
+                            'date_format': date_format,
+                            'log_prefix': log_prefix if log_prefix else "",
+                            'log': log if log else "",
+                            'limit': limit,
+                            'count': count,
+                            'syslog_server_hostname': syslog_server_hostname if syslog_server_hostname else "",
+                            'syslog_server_port': syslog_server_port,
+                            'syslog_facility': syslog_facility,
+                            'app_name': app_name,
+                            'message_hostname': message_hostname if message_hostname else "",
+                            'message_format': message_format if message_format else "",
+                        },
+                        'AuditTrail logger configuration')
+
+def params (name, pattern="", log_build_cause=True):
+    """
+    Jenkins AuditTrail logging params state method
+
+    :param pattern
+    :param log_build_cause
+
+    :returns: salt-specified state dict
+    """
+
+    template = __salt__['jenkins_common.load_template'](
+        'salt://jenkins/files/groovy/audittrail_params.template',
+        __env__)
+    return __salt__['jenkins_common.api_call'](name, template,
+                                               ["CHANGED", "EXISTS"],
+                                               {
+                                                   'pattern': pattern if pattern else "",
+                                                   'log_build_cause': str(log_build_cause).lower(),
+                                               },
+                                               'AuditTrail logger params')