###
# ============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, vFW , vDNS
default.groupID = org.onap.policy-engine
default.artifactID = drlPDPGroup
vFW.groupID= org.onap.policy-engine.drools.vFW
vFW.artifactID= policy-vFW-rules
vDNS.groupID= org.onap.policy-engine.drools.vDNS
vDNS.artifactID= policy-vDNS-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.1.0-SNAPSHOT

ENVIRONMENT = DEVL
