###
# ============LICENSE_START=======================================================
# ONAP Policy Engine
# ================================================================================
# Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
# ================================================================================
# Licensed 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.
# ============LICENSE_END=========================================================
###

PDP_URL2 =  https://localhost:8082/pdp/ , testpdp, alpha456
PAP_URL = http://localhost:8070/pap/ , testpap, alpha123

#Notification Properties... type can be either websocket, ueb, or dmaap
NOTIFICATION_TYPE=websocket
NOTIFICATION_SERVERS=
NOTIFICATION_TOPIC=PDPD-CONFIGURATION
NOTIFICATION_DELAY=
UEB_API_KEY=
UEB_API_SECRET=
CLIENT_ID=
CLIENT_KEY=

# BRMS Properties. 
## defaultName is the default group name to which the rule gets pushed if no artifactID is specified. 
defaultName = default
## repositoryID 
repositoryID = releases
## reposiroryName
repositoryName = Releases
## repositoryURL
repositoryURL = http://nexus:8081/nexus/content/repositories/releases
## repositoryUsername & Password
repositoryUsername=admin
repositoryPassword=admin123
## policyKeyID the value of Policy Key whose value will be the group Name. 
policyKeyID = controller

## GroupNames can be comma separated values. 
groupNames = default, amsterdam
default.groupID = org.onap.policy-engine
default.artifactID = drlPDPGroup
amsterdam.groupID= org.onap.policy-engine.drools.amsterdam
amsterdam.artifactID= policy-amsterdam-rules

#Integrity Monitor values
#database driver for Integrity Monitor
javax.persistence.jdbc.driver=org.mariadb.jdbc.Driver
#database URL for Integrity Monitor
javax.persistence.jdbc.url=jdbc:mariadb://localhost:3306/onap_sdk
#database username for Integrity Monitor
javax.persistence.jdbc.user=policy_user
#database password for Integrity Monitor
javax.persistence.jdbc.password=password
#resource name
RESOURCE_NAME=site_1.brmsgw_1
#***Properties for IntegrityMonitor integration defined in IntegrityMonitorProperties.java***
site_name=site_1
node_type=brms_gateway
fp_monitor_interval=30
failed_counter_threshold=3
test_trans_interval=20
write_fpc_interval=5
max_fpc_update_interval=60
test_via_jmx=false
ping_interval=30000
#
#
#
brms.dependency.version=1.2.1-SNAPSHOT

ENVIRONMENT = DEVL
