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

spring:
  main:
    allow-bean-definition-overriding: true
  data:
    mongodb:
      username: admin
      password: MONGO_PASSWORD
      database: dlabdb
      port: MONGO_PORT
      host: MONGO_HOST

server:
  port: 8088
  servlet:
    contextPath: /api/billing

server.ssl.key-store-type: JKS
server.ssl.key-store: /home/OS_USER/keys/ssn.keystore.jks
server.ssl.key-store-password: KEY_STORE_PASSWORD
server.ssl.key-alias: ssn

logging:
  file: /var/opt/dlab/log/ssn/billing.log
  level:
    com:
      epam: trace

keycloak:
  bearer-only: true
  realm: dlab
  resource: KEYCLOAK_CLIENT_ID
  credentials.secret: KEYCLOAK_CLIENT_SECRET
  ssl-required: none
  auth-server-url: KEYCLOAK_AUTH_SERVER_URL

dlab:
  sbn: SERVICE_BASE_NAME
  billingEnabled: true

  # Authentication info

  # Explicit azure authentication parameters
  clientId: CLIENT_ID
  clientSecret: CLIENT_SECRET
  tenantId: TENANT_ID
  subscriptionId: SUBSCRIPTION_ID

  # Contains authentication info (clientId, clientSecret, tenantId, subscriptionId) received after Azure CLI authentication
  # Overrides explicit azure authentication parameters above
  authenticationFile: AUTHENTICATION_FILE
  # Billing configuration for RateCard API. For more details please see https://msdn.microsoft.com/en-us/library/mt219004.aspx
  offerNumber: OFFER_NUMBER
  currency: CURRENCY
  locale: LOCALE
  regionInfo: REGION_INFO

  # Azure provides with aggregated data by date. Scheduler tries to retrieve data every <period> with <initialDelay> from
  # application startup in minutes.
  # Scheduler retrieves data only for the past period of time from midnight of start day to midnight of end date.
  # Scheduler does not retrieve data for the current date
  initialDelay: 10
  period: 60
  aggregationOutputMongoDataSource:
    host: MONGO_HOST
    port: MONGO_PORT
    username: admin
    password: MONGO_PASSWORD
    database: dlabdb
  ssnStorageAccountTagName: <AZURE_SSN_STORAGE_ACCOUNT_TAG>
  sharedStorageAccountTagName: <AZURE_SHARED_STORAGE_ACCOUNT_TAG>
  datalakeTagName: <AZURE_DATALAKE_TAG>