###
# ============LICENSE_START=======================================================
# ECOMP 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.openecomp.policy-engine
default.artifactID = drlPDPGroup
vFW.groupID= org.openecomp.policy-engine.drools.vFW
vFW.artifactID= policy-vFW-rules
vDNS.groupID= org.openecomp.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
