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

	<property>
		<name>ranger.plugin.hive.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.hive.policy.rest.url</name>
		<value>http://policymanagerhost:port</value>
		<description>
			URL to Ranger Admin
		</description>
	</property>

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

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

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

	<property>
		<name>xasecure.hive.update.xapolicies.on.grant.revoke</name>
		<value>true</value>
		<description>Should Hive plugin update Ranger policies for updates to permissions done using GRANT/REVOKE?</description>
	</property>

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

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