###
# ============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=com.mysql.jdbc.Driver
#database URL for Integrity Monitor
javax.persistence.jdbc.url=jdbc:mysql://localhost:3306/xacml
#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
