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

<#assign LOG_ROOT_DIR="/var/opt/dlab/log">
<#assign KEYS_DIR="/home/${sys['user.name']}/keys">
<#assign KEY_STORE_PATH="${KEYS_DIR}/endpoint.keystore.jks">
<#assign KEY_STORE_PASSWORD="KEYSTORE_PASSWORD">
<#assign TRUST_STORE_PATH="JRE_HOME/lib/security/cacerts">
<#assign TRUST_STORE_PASSWORD="changeit">

# Available options are aws, azure, gcp
<#assign CLOUD_TYPE="CLOUD_PROVIDER">
cloudProvider: ${CLOUD_TYPE}

#Switch on/off developer mode here
<#assign DEV_MODE="false">
devMode: ${DEV_MODE}


mongo:
  host: MONGO_HOST
  port: MONGO_PORT
  username: admin
  password: MONGO_PASSWORD
  database: dlabdb

selfService:
  protocol: https
  host: SS_HOST
  port: SS_PORT
  jerseyClient:
    timeout: 3s
    connectionTimeout: 3s

securityService:
  protocol: https
  host: DOESNT_MATTER
  port: 8090
  jerseyClient:
    timeout: 20s
    connectionTimeout: 20s


provisioningService:
  protocol: https
  host: localhost
  port: 8084
  jerseyClient:
    timeout: 3s
    connectionTimeout: 3s

# Log out user on inactivity
inactiveUserTimeoutMillSec: 7200000

backupScriptPath: /opt/dlab/tmp/backup.py
backupDirectory: /opt/dlab/tmp/result
keyDirectory: ${KEYS_DIR}
responseDirectory: /opt/dlab/tmp
handlerDirectory: /opt/dlab/handlers
dockerLogDirectory: ${LOG_ROOT_DIR}
warmupPollTimeout: 25s
resourceStatusPollTimeout: 300m
keyLoaderPollTimeout: 30m
requestEnvStatusTimeout: 50s
adminKey: KEYNAME
edgeImage: docker.dlab-edge
fileLengthCheckDelay: 500ms

<#if CLOUD_TYPE == "aws">
emrEC2RoleDefault: EMR_EC2_DefaultRole
emrServiceRoleDefault: EMR_DefaultRole
</#if>

processMaxThreadsPerJvm: 50
processMaxThreadsPerUser: 5
processTimeout: 180m

handlersPersistenceEnabled: true

server:
  requestLog:
    appenders:
      - type: file
        currentLogFilename: ${LOG_ROOT_DIR}/provisioning/request-provisioning.log
        archive: true
        archivedLogFilenamePattern: ${LOG_ROOT_DIR}/provisioning/request-provisioning-%d{yyyy-MM-dd}.log.gz
        archivedFileCount: 10
  applicationConnectors:
#    - type: http
    - type: https
      port: 8084
      certAlias: dlab
      validateCerts: true
      keyStorePath: ${KEY_STORE_PATH}
      keyStorePassword: ${KEY_STORE_PASSWORD}
      trustStorePath: ${TRUST_STORE_PATH}
      trustStorePassword: ${TRUST_STORE_PASSWORD}
  adminConnectors:
#    - type: http
    - type: https
      port: 8085
      certAlias: dlab
      validateCerts: true
      keyStorePath: ${KEY_STORE_PATH}
      keyStorePassword: ${KEY_STORE_PASSWORD}
      trustStorePath: ${TRUST_STORE_PATH}
      trustStorePassword: ${TRUST_STORE_PASSWORD}

logging:
  level: INFO
  loggers:
    com.epam: TRACE
    com.aegisql: INFO
  appenders:
<#if DEV_MODE == "true">
    - type: console
</#if>
    - type: file
      currentLogFilename: ${LOG_ROOT_DIR}/provisioning/provisioning.log
      archive: true
      archivedLogFilenamePattern: ${LOG_ROOT_DIR}/provisioning/provisioning-%d{yyyy-MM-dd}.log.gz
      archivedFileCount: 10

keycloakConfiguration:
  realm: dlab
  bearer-only: true
  auth-server-url: http://KEYCLOACK_HOST/auth
  ssl-required: none
  register-node-at-startup: true
  register-node-period: 600
  resource: dlab-ui
  credentials:
    secret: CLIENT_SECRET

cloudProperties:
  os: CONF_OS
  serviceBaseName: SERVICE_BASE_NAME
  edgeInstanceSize: EDGE_INSTANCE_SIZE
  subnetId: SUBNET_ID
  region: REGION
  zone: ZONE
  confTagResourceId: TAG_RESOURCE_ID
  securityGroupIds: SG_IDS
  ssnInstanceSize: SSN_INSTANCE_SIZE
  notebookVpcId: VPC2_ID
  notebookSubnetId: SUBNET2_ID
  confKeyDir: CONF_KEY_DIR
  vpcId: VPC_ID
  peeringId: PEERING_ID
  azureResourceGroupName: AZURE_RESOURCE_GROUP_NAME
  ssnStorageAccountTagName: AZURE_SSN_STORAGE_ACCOUNT_TAG
  sharedStorageAccountTagName: AZURE_SHARED_STORAGE_ACCOUNT_TAG
  datalakeTagName: AZURE_DATALAKE_TAG
  azureClientId: AZURE_CLIENT_ID
  gcpProjectId: GCP_PROJECT_ID
  ldap:
    host: LDAP_HOST
    dn: LDAP_DN
    ou: LDAP_OU
    user: LDAP_USER_NAME
    password: LDAP_USER_PASSWORD