<?xml version="1.0"?>
<!--
  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.
-->
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration xmlns:xi="http://www.w3.org/2001/XInclude">
	<property>
		<name>ranger.plugin.kafka.policy.rest.url</name>
		<value>http://localhost:6080</value>
		<description>
			URL to Ranger Admin
		</description>
	</property>

	<property>
		<name>ranger.plugin.kafka.service.name</name>
		<value>cl1_kafka</value>
		<description>
			Name of the Ranger service containing policies for this SampleApp instance
		</description>
	</property>

	<property>
        <name>ranger.plugin.kafka.policy.source.impl</name>
        <value>org.apache.ranger.authorization.kafka.authorizer.RangerAdminClientImpl</value>
        <!-- <value>org.apache.ranger.admin.client.RangerAdminRESTClient</value> -->
        <description>
            Policy source.
        </description>
    </property>
    
	<property>
		<name>ranger.plugin.kafka.policy.pollIntervalMs</name>
		<value>30000</value>
		<description>
			How often to poll for changes in policies?
		</description>
	</property>

	<property>
		<name>ranger.plugin.kafka.policy.cache.dir</name>
		<value>${project.build.directory}</value>
		<description>
			Directory where Ranger policies are cached after successful retrieval from the source
		</description>
	</property>

</configuration>
