<?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.kms.service.name</name>
		<value>kmsdev</value>
		<description>
			Name of the Ranger service containing policies for this kms instance
		</description>
	</property>

	<property>
		<name>ranger.plugin.kms.policy.source.impl</name>
		<value>org.apache.ranger.admin.client.RangerAdminRESTClient</value>
		<description>
			Class to retrieve policies from the source
		</description>
	</property>

	<property>
		<name>ranger.plugin.kms.policy.rest.url</name>
		<value>http://policymanagerhost:port</value>
		<description>
			URL to Ranger Admin
		</description>
	</property>

	<property>
		<name>ranger.plugin.kms.policy.rest.ssl.config.file</name>
		<value>/etc/kms/conf/ranger-policymgr-ssl.xml</value>
		<description>
			Path to the file containing SSL details to contact Ranger Admin
		</description>
	</property>

	<property>
		<name>ranger.plugin.kms.policy.pollIntervalMs</name>
		<value>30000</value>
		<description>
			How often to poll for changes in policies?
		</description>
	</property>

	<property>
		<name>ranger.plugin.kms.policy.cache.dir</name>
		<value>/etc/ranger/kmsdev/policycache</value>
		<description>
			Directory where Ranger policies are cached after successful retrieval from the source
		</description>
	</property>

	<property>
		<name>ranger.plugin.kms.policy.rest.client.connection.timeoutMs</name>
		<value>120000</value>
		<description>
			RangerRestClient Connection Timeout in Milli Seconds
		</description>
	</property>
	
	<property>
		<name>ranger.plugin.kms.policy.rest.client.read.timeoutMs</name>
		<value>30000</value>
		<description>
			RangerRestClient read Timeout in Milli Seconds
		</description>
	</property>	
</configuration>
