<?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>
  <property>
    <name>instance.name</name>
    <value>accumulo-instance</value>
    <description>Accumulo Instance Name.</description>
  </property>
  <property>
    <name>instance.zookeeper.host</name>
    <value>${@//site/accumulo-site/instance.zookeeper.host}</value>
    <description>Zookeeper hosts.</description>
  </property>
  <property>
    <name>instance.rpc.ssl.enabled</name>
    <value>${@//site/accumulo-site/instance.rpc.ssl.enabled}</value>
    <description>SSL enabled.</description>
  </property>
  <property>
    <name>instance.rpc.ssl.clientAuth</name>
    <value>${@//site/accumulo-site/instance.rpc.ssl.clientAuth}</value>
    <description>SSL client auth enabled.</description>
  </property>
  <property>
    <name>general.security.credential.provider.paths</name>
    <value>${@//site/accumulo-site/general.security.credential.provider.paths}</value>
    <description>Client credential provider containing cert passwords.</description>
  </property>
</configuration>
