# 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.


TAGSYNC_ENABLED = ranger.tagsync.enabled

TAG_DEST_RANGER_ENDPOINT = ranger.tagsync.dest.ranger.endpoint
TAG_DEST_RANGER_SSL_CONFIG_FILENAME = ranger.tagsync.dest.ranger.ssl.config.filename

TAG_SOURCE_ATLAS_ENABLED = ranger.tagsync.source.atlas

TAG_SOURCE_ATLAS_KAFKA_BOOTSTRAP_SERVERS = atlas.kafka.bootstrap.servers
TAG_SOURCE_ATLAS_KAFKA_ZOOKEEPER_CONNECT = atlas.kafka.zookeeper.connect
TAG_SOURCE_ATLAS_KAFKA_ENTITIES_GROUP_ID = atlas.kafka.entities.group.id

TAG_SOURCE_ATLAS_KAFKA_SERVICE_NAME = atlas.kafka.sasl.kerberos.service.name
TAG_SOURCE_ATLAS_KAFKA_SECURITY_PROTOCOL = atlas.kafka.security.protocol

TAG_SOURCE_ATLAS_KERBEROS_PRINCIPAL = atlas.jaas.kafkaClient.option.principal
TAG_SOURCE_ATLAS_KERBEROS_KEYTAB = atlas.jaas.kafkaClient.option.keyTab

TAG_SOURCE_ATLASREST_ENABLED = ranger.tagsync.source.atlasrest

TAG_SOURCE_ATLASREST_ENDPOINT = ranger.tagsync.source.atlasrest.endpoint
TAG_SOURCE_ATLASREST_DOWNLOAD_INTERVAL_IN_MILLIS = ranger.tagsync.source.atlasrest.download.interval.millis

TAG_SOURCE_ATLASREST_USERNAME = ranger.tagsync.source.atlasrest.username
TAG_SOURCE_ATLASREST_PASSWORD = ranger.tagsync.source.atlasrest.password

TAG_SOURCE_FILE_ENABLED = ranger.tagsync.source.file

TAG_SOURCE_FILE_FILENAME = ranger.tagsync.source.file.filename
TAG_SOURCE_FILE_CHECK_INTERVAL_IN_MILLIS = ranger.tagsync.source.file.check.interval.millis

TAGSYNC_ATLAS_TO_RANGER_SERVICE_MAPPING = ranger.tagsync.atlas.to.ranger.service.mapping
TAGSYNC_ATLAS_CUSTOM_RESOURCE_MAPPERS = ranger.tagsync.atlas.custom.resource.mappers

TAGSYNC_KEYSTORE_FILENAME = ranger.tagsync.keystore.filename
TAG_SOURCE_ATLASREST_KEYSTORE_FILENAME = ranger.tagsync.source.atlasrest.keystore.filename
TAG_SOURCE_ATLASREST_SSL_CONFIG_FILENAME = ranger.tagsync.source.atlasrest.ssl.config.filename


unix_user   = unix_user
unix_group  = unix_group

logdir = ranger.tagsync.logdir

tagsync_principal = ranger.tagsync.kerberos.principal
tagsync_keytab = ranger.tagsync.kerberos.keytab


# TODO - What property in ranger-tagsync-site.xml should hadoop_conf map to??
hadoop_conf = hadoop_conf

