<?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>submarine.cluster.addr</name>
    <value></value>
    <description>submarine cluster address list, e.g. ip1:port1;ip2:port2;ip3:port3</description>
  </property>

  <property>
    <name>submarine.server.addr</name>
    <value>0.0.0.0</value>
    <description>Server address</description>
  </property>

  <property>
    <name>submarine.server.port</name>
    <value>8080</value>
    <description>Server port.</description>
  </property>

  <property>
    <name>submarine.server.ssl</name>
    <value>false</value>
    <description>Should SSL be used by the submarine server?</description>
  </property>

  <property>
    <name>submarine.server.ssl.port</name>
    <value>8443</value>
    <description>Server ssl port. (used when ssl property is set to true)</description>
  </property>

  <property>
    <name>submarine.server.ssl.client.auth</name>
    <value>false</value>
    <description>Should client authentication be used for SSL connections?</description>
  </property>

  <property>
    <name>submarine.server.ssl.keystore.path</name>
    <value>keystore</value>
    <description>Path to keystore relative to submarine configuration directory</description>
  </property>

  <property>
    <name>submarine.server.ssl.keystore.type</name>
    <value>JKS</value>
    <description>The format of the given keystore (e.g. JKS or PKCS12)</description>
  </property>

  <property>
    <name>submarine.server.ssl.keystore.password</name>
    <value>change me</value>
    <description>Keystore password. Can be obfuscated by the Jetty Password tool</description>
  </property>

  <!--
  <property>
    <name>submarine.server.ssl.key.manager.password</name>
    <value>change me</value>
    <description>Key Manager password. Defaults to keystore password. Can be obfuscated.</description>
  </property>
  -->

  <property>
    <name>submarine.server.ssl.truststore.path</name>
    <value>truststore</value>
    <description>Path to truststore relative to submarine configuration directory. Defaults to the keystore path</description>
  </property>

  <property>
    <name>submarine.server.ssl.truststore.type</name>
    <value>JKS</value>
    <description>The format of the given truststore (e.g. JKS or PKCS12). Defaults to the same type as the keystore type</description>
  </property>

  <!--
  <property>
    <name>submarine.server.ssl.truststore.password</name>
    <value>change me</value>
    <description>Truststore password. Can be obfuscated by the Jetty Password tool. Defaults to the keystore password</description>
  </property>
  -->

  <property>
    <name>workbench.web.war</name>
    <value>../submarine-workbench-web.war</value>
    <description>Submarine workbench web war file path.</description>
  </property>

  <property>
    <name>jdbc.driverClassName</name>
    <value>com.mysql.jdbc.Driver</value>
  </property>
  <property>
    <name>jdbc.url</name>
    <value>jdbc:mysql://127.0.0.1:3306/submarine?useUnicode=true&amp;characterEncoding=UTF-8&amp;autoReconnect=true&amp;failOverReadOnly=false&amp;zeroDateTimeBehavior=convertToNull&amp;useSSL=false&amp;allowMultiQueries=true</value>
  </property>
  <property>
    <name>jdbc.username</name>
    <value>submarine</value>
  </property>
  <property>
    <name>jdbc.password</name>
    <value>password</value>
  </property>

  <property>
    <name>metastore.jdbc.url</name>
    <value>jdbc:mysql://127.0.0.1:3306/metastore?useUnicode=true&amp;characterEncoding=UTF-8&amp;autoReconnect=true&amp;failOverReadOnly=false&amp;zeroDateTimeBehavior=convertToNull&amp;useSSL=false</value>
  </property>
  <property>
    <name>metastore.jdbc.username</name>
    <value>metastore</value>
  </property>
  <property>
    <name>metastore.jdbc.password</name>
    <value>password</value>
  </property>

  <property>
    <name>submarine.runtime.class</name>
    <value>org.apache.submarine.server.submitter.yarn.YarnRuntimeFactory</value>
    <description>RuntimeFactory for Submarine jobs</description>
  </property>

  <property>
    <name>submarine.server.rpc.enabled</name>
    <value>false</value>
    <description>Run jobs using rpc server.</description>
  </property>

  <property>
    <name>submarine.server.rpc.port</name>
    <value>8980</value>
    <description>Rpc server port</description>
  </property>

  <property>
    <name>submarine.submitter</name>
    <value>k8s</value>
    <description>The submitter which you want used in the server. Build-in k8s</description>
  </property>
</configuration>
