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

# ---------------------------------------------
# Eagle REST Web Service Configuration
# ---------------------------------------------
service {
  env = "testing"
  host = "localhost"
  port = 9090
  username = "admin"
  password = "secret"
  readTimeOutSeconds = 60
  context = "/rest"
  timezone = "UTC"
}

zookeeper {
  zkQuorum = "localhost:2181"
  zkSessionTimeoutMs : 15000
  zkRetryTimes : 3
  zkRetryInterval : 20000
}

# ---------------------------------------------
# Eagle Deep Storage Configuration
# ---------------------------------------------

storage {
  # storage type: ["hbase","jdbc"]
  # default is "hbase"
  type = "hbase"

  hbase {
    autoCreateTable = true
    
    # hbase configuration: hbase.zookeeper.quorum
    # default is "localhost"
    zookeeperQuorum = "localhost"

    # hbase configuration: hbase.zookeeper.property.clientPort
    # default is 2181
    zookeeperPropertyClientPort = 2181

    # hbase configuration: zookeeper.znode.parent
    # default is "/hbase"
    zookeeperZnodeParent = "/hbase-unsecure"

    # eagle web login profile: [sandbox, default]
    # default is sandbox
    tableNamePrefixedWithEnvironment = false

    # eagle coprocessor enabled or not: [true, false]
    # default is false
    coprocessorEnabled = false

    # Autocreate hbase tables
    autoCreateTable = true
  }
}

# ---------------------------------------------
# Eagle Metadata Store Configuration
# ---------------------------------------------
metadata {
  store = org.apache.eagle.metadata.service.memory.MemoryMetadataStore
  jdbc {
    username = "root"
    password = ""
    driverClassName = com.mysql.jdbc.Driver
    database = "eagle"
    connection = "jdbc:mysql://server.eagle.apache.org:3306/eagle?user=root"
  }
}

# ---------------------------------------------
# Eagle Application Configuration
# ---------------------------------------------
application {
  stream {
    provider = org.apache.eagle.app.messaging.KafkaStreamProvider
  }
  storm {
    nimbusHost = "server.eagle.apache.org"
    nimbusThriftPort = 6627
  }
  updateStatus: {
    initialDelay: 10
    period: 10
  }
  healthCheck {
    initialDelay = 30
    period = 60
    publisher {
      publisherImpl = org.apache.eagle.app.service.impl.ApplicationHealthCheckEmailPublisher
      dailySendHour = 11
      mail.smtp.host = "mail.host.com"
      mail.smtp.port = 25
      mail.smtp.recipients = "someone@email.com"
      mail.smtp.subject = "Eagle Application Health Check"
      mail.smtp.template = "HealthCheckTemplate.vm"
    }
  }
  mailService {
    mailSmtpServer = "",
    mailSmtpPort = 25,
    mailSmtpAuth = "false"
    //mailSmtpConn = "plaintext",
    //mailSmtpUsername = ""
    //mailSmtpPassword = ""
    //mailSmtpDebug = false
  }
  dailyJobReport {
    reportHourTime: 1
    reportPeriodInHour: 12
    numTopUsers : 10
    jobOvertimeLimitInHour: 6
    subject: "Job Report For 12 hours"
    recipients: "nobody@abc.com"
    template: "JobReportTemplate.vm"
  }
}

# ---------------------------------------------
# Eagle Alert Engine Configuration
# ---------------------------------------------

# Coordinator Configuration
coordinator {
  policiesPerBolt = 5
  boltParallelism = 5
  policyDefaultParallelism = 5
  boltLoadUpbound = 0.8
  topologyLoadUpbound = 0.8
  numOfAlertBoltsPerTopology = 5
  zkConfig {
    zkQuorum = "server.eagle.apache.org:2181"
    zkRoot = "/alert"
    zkSessionTimeoutMs = 10000
    connectionTimeoutMs = 10000
    zkRetryTimes = 3
    zkRetryInterval = 3000
  }
  metadataService {
    host = "localhost",
    port = 9090,
    context = "/rest"
  }
  metadataDynamicCheck {
    initDelayMillis = 1000
    delayMillis = 30000
    stateClearPeriodMin = 1440
    stateReservedCapacity = 100
  }
}
