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

{
	"deployInstanceIdentifier" : {
		"programId" : "mlProgramId"
	},
	"envContextConfig" : {
		"env" : "storm",
		"topologyName" : "sandbox-userprofile-topology",
		"mode" : "cluster",
		"parallelismConfig" : {
			"kafkaMsgConsumer" : 1,
			"userProfileAnomalyDetectionExecutor*" : 1
		},
		"stormConfigFile":"userprofile.storm.yaml"
	},
	"dataSourceConfig": {
		"topic" : "sandbox_hdfs_audit_log",
		"zkConnection" : "localhost:2181",
		"zkConnectionTimeoutMS" : 15000,
		"consumerGroupId" : "eagle.userprofile.consumer",
		"fetchSize" : 1048586,
		"deserializerClass" : "org.apache.eagle.security.auditlog.HdfsAuditLogKafkaDeserializer",
		"transactionZKServers" : "localhost",
		"transactionZKPort" : 2181,
		"transactionZKRoot" : "/brokers/topics",
		"transactionStateUpdateMS" : 2000
	},
	"eagleProps" : {
		"site":"sandbox",
		"application":"userProfile",
		"eagleService": {
			"host": "localhost",
			"port": "9099",
			"username": "admin",
			"password": "secret"
		}
	},
	"alertExecutorConfigs" : {
		"userProfileAnomalyDetectionExecutor" : {
			"parallelism" : 1,
			"partitioner" : "org.apache.eagle.policy.DefaultPolicyPartitioner",
			"needValidation":true
		}
	},
	"dynamicConfigSource" : {
		"enabled"          : true,
		"initDelayMillis"  : 0,
		"delayMillis"      : 5000
	}
}