<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<!--
  Licensed to the Apache Software Foundation (ASF) under one or more
  contributor license agreements.  See the NOTICE file distributed with
  this work for additional information regarding copyright ownership.
  The ASF licenses this file to You under the Apache License, Version 2.0
  (the "License"); you may not use this file except in compliance with
  the License.  You may obtain a copy of the License at

      http://www.apache.org/licenses/LICENSE-2.0

  Unless required by applicable law or agreed to in writing, software
  distributed under the License is distributed on an "AS IS" BASIS,
  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  See the License for the specific language governing permissions and
  limitations under the License.
-->

<configuration xmlns:xi="http://www.w3.org/2001/XInclude">

    <!-- ********************************* -->
    <!-- HDFS audit provider configuration -->
    <!-- ********************************* -->
    <property>
        <name>xasecure.audit.destination.hdfs</name>
        <value>false</value>
    </property>

    <property>
        <name>xasecure.audit.destination.hdfs.dir</name>
        <value>hdfs://localhost:8020/ranger/audit</value>
    </property>

    <property>
        <name>xasecure.audit.destination.hdfs.batch.filespool.dir</name>
        <value>/usr/local/hawq_${hawq.name.version}/ranger/plugin-service/logs/spool/audit/hdfs</value>
    </property>


    <!-- ********************************* -->
    <!-- SOLR audit provider configuration -->
    <!-- ********************************* -->
    <property>
        <name>xasecure.audit.destination.solr</name>
        <value>false</value>
    </property>

    <!-- if not using zookeepers but direct url instead, then leave this property empty or set it to NONE -->
    <property>
        <name>xasecure.audit.destination.solr.zookeepers</name>
        <value>zkhost1:2181,zkhost2:2181/infra-solr</value>
    </property>

    <!-- if not using zookeepers but direct url instead, then leave this property empty or set it to NONE -->
    <property>
        <name>xasecure.audit.destination.solr.collection</name>
        <value>ranger_audits</value>
    </property>

    <!-- if not using direct url and using zookeeper instead, then leave this property empty or set it to NONE. -->
    <!-- example value: http://solrHost1:6083/solr/ranger_audits,http://solrHost2:6083/solr/ranger_audits -->
    <property>
        <name>xasecure.audit.destination.solr.urls</name>
        <value></value>
    </property>

    <property>
        <name>xasecure.audit.destination.solr.batch.filespool.dir</name>
        <value>/usr/local/hawq_${hawq.name.version}/ranger/plugin-service/logs/spool/audit/solr</value>
    </property>


    <!-- ********************************** -->
    <!-- Log4j audit provider configuration -->
    <!-- ********************************** -->
    <property>
        <name>xasecure.audit.destination.log4j</name>
        <value>true</value>
    </property>

    <property>
        <name>xasecure.audit.destination.log4j.logger</name>
        <value>ranger_audit_logger</value>
    </property>
</configuration>