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

{
  "envContextConfig" : {
    "env" : "storm",
    "mode" : "cluster",
    "topologyName" : "sandbox-hiveQueryRunning-topology",
    "stormConfigFile" : "hive.storm.yaml",
    "parallelismConfig" : {
      "msgConsumer" : 2
    }
  },
  "dataSourceConfig": {
    "flavor" : "stormrunning",
    "zkQuorum" : "localhost:2181",
    "zkRoot" : "/jobrunning",
    "zkSessionTimeoutMs" : 15000,
    "zkRetryTimes" : 3,
    "zkRetryInterval" : 2000,
    "RMEndPoints" : "http://localhost:8088/",
    "HSEndPoint" : "http://localhost:19888/",
    "partitionerCls" : "org.apache.eagle.job.DefaultJobPartitionerImpl"
  },
  "eagleProps" : {
    "site" : "sandbox",
    "application" : "hiveQueryLog",
    "mailHost" : "atom.xyz.com",
    "mailSmtpPort":"25",
    "mailDebug" : "true",
    "eagleService": {
      "host": "localhost",
      "port": 9099,
      "username": "admin",
      "password": "secret"
    }
  },
  "alertExecutorConfigs" : {
    "hiveAccessAlertByRunningJob" : {
      "parallelism" : 1,
      "partitioner" : "org.apache.eagle.policy.DefaultPolicyPartitioner",
      "needValidation" : "true"
    }
  },
  "dynamicConfigSource" : {
    "enabled" : true,
    "initDelayMillis" : 0,
    "delayMillis" : 30000,
    "ignoreDeleteFromSource" : true
  }
}