###
# ============LICENSE_START=======================================================
# ONAP-PAP-REST
# ================================================================================
# Copyright (C) 2017-2019 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=========================================================
###
#=====================================================================================#
#================The Below Properties are default, shouldn't change them==============#
#=====================================================================================#
#
# This is our factory that will create our engine
#
xacml.PAP.papEngineFactory=org.onap.policy.xacml.std.pap.StdEngineFactory
# Dictionary and Policy Implementation Classes Properties
dictionary.impl.className=org.onap.policy.pap.xacml.rest.handler.DictionaryHandlerImpl
savePolicy.impl.className=org.onap.policy.pap.xacml.rest.handler.SavePolicyHandler
pushPolicy.impl.className=org.onap.policy.pap.xacml.rest.handler.PushPolicyHandler
deletePolicy.impl.className=org.onap.policy.pap.xacml.rest.handler.DeleteHandler

#=====================================================================================#
#===============The Below Properties will be changed based on Environment=============#
#=====================================================================================#
#
# Where we store our PAP PDP Group/Node information
#
xacml.pap.pdps=pdps
#
# Need the PAP's url (how PDPs will reach it) configured here
# because we need it to generate the URLs of the Policy Files
# sent to the PDPs in the configuration when the PAP is first brought up.
# (In other cases, such as the PDP calling the PAP, we could generate this URL, 
# but for startup there is no other way to get it.)
#
#
xacml.rest.pap.url=http://localhost:8070/pap/

#
# Upon startup, have the PAP servlet send latest configuration information to all
# the PDP nodes it knows about.
#
xacml.rest.pap.initiate.pdp=true
#
# Heartbeat from PAP to PDPs
#
# How much time (in milliseconds) between heartbeats
# (i.e. the time between completing the heartbeat with all PDPs and starting the next cycle)
#
xacml.rest.pap.heartbeat.interval=100000
#
# Heartbeat connection timeout (in milliseconds)
#
xacml.rest.pap.heartbeat.timeout=100000

# new Property Please mention your PAP-REST webapps Location here. 
xacml.rest.config.webapps=/home/users/PolicyEngine/webapps/ConfigPAP/

#Turn the audit on to synchronize the DB/file system
#xacml.rest.pap.run.audit.flag=true
#Turn the audit off to not synchronize the DB/file system
#xacml.rest.pap.run.audit.flag=false
xacml.rest.pap.run.audit.flag=true

#Audit will synchronize the file system to match the contents of the DB
#xacml.rest.pap.filesystem.audit=true
#Audit will synchronize the DB to match the contents of the file system 
#xacml.rest.pap.filesystem.audit=false
xacml.rest.pap.filesystem.audit=false
xacm.xcor.required.pattern=1,1
# id
xacml.rest.pap.userid=testpap
# pass
xacml.rest.pap.password=alpha123
# pdps file
xacml.rest.pdp.idfile=test.properties

#Properties for db access
#properties for MySql xacml database:  PLEASE DO NOT REMOVE... NEEDED FOR APIs
javax.persistence.jdbc.driver=org.mariadb.jdbc.Driver
javax.persistence.jdbc.url=jdbc:mariadb://localhost:3306/onap_sdk?connectTimeout=30000&socketTimeout=60000&log=true&sessionVariables=max_statement_time=30
javax.persistence.jdbc.user=policy_user
javax.persistence.jdbc.password=policy_user

#Time in ms which a Policy DB transaction will wait to get the transaction lock object
xacml.rest.pap.transaction.waitms=500000
	
#Policy DB transaction timeout in ms after it has obtained the transaction lock object
xacml.rest.pap.transaction.timeoutms=500000

#Policy Audit timeout in ms after it has obtained the transaction lock object
xacml.rest.pap.audit.timeoutms=500000

#controls how long the pap will wait before giving up when sending notifications to other paps
xacml.rest.pap.notify.timeoutms=10000

#the number of times an incoming policy update notification will be tried to be processed (or until it succeeds)
xacml.rest.pap.incomingnotification.tries=4

#***Properties for IntegrityMonitor integration defined in XACMLRestProperties.java***

#The name of the PAP.  Must be unique across the system
xacml.rest.pap.resource.name=site_1.pap_1

#***Properties for IntegrityMonitor integration defined in IntegrityMonitorProperties.java***

#Interval between forward progress counter updates in seconds
fp_monitor_interval=30

#Number of forward progress counter failures before failover
failed_counter_threshold=3

#Interval in seconds between test transactions if there is no other traffic
test_trans_interval=10

#Interval in seconds between updates of the forward progress counter in the DB
write_fpc_interval=5

#Name of the site 
site_name=site_1

#Node type. Can take values of: pdp-xacml, pdp-drools, pap, pap-admin, logparser, brms-gateway, 
#astra-gateway, elk-server 
node_type=pap

#Dependency groups are groups of resources upon which a node operational state is dependent upon (dependency_groups). 
#Each group is a comma-separated list of resource names and groups are separated by a semicolon. A group may contain
#one or more members.
dependency_groups=site_1.logparser_1;site_1.adminconsole_1;site_1.elk_1

# The (optional) period of time in seconds between executions of the integrity audit.
# Value < 0 : Audit does not run (default value if property is not present = -1)
# Value = 0 : Audit runs continuously
# Value > 0 : The period of time in seconds between execution of the audit on a particular node
integrity_audit_period_seconds=-1

ENVIRONMENT=DEVL

#
#PolicySafetyChecker properties
#
#Turn safetyChecker on/off
xacml.rest.pap.safetychecker=on
PDP_URL1 = http://localhost:8082/pdp/, testpdp, alpha123
CLIENT_ID=
CLIENT_KEY=

#Micro Service Model Properties
xacml.policy.msOnapName=http://org.onap
xacml.policy.msPolicyName=http://org.onap.policy


# AES key for password encryption in config files
#org.onap.policy.encryption.aes.key=12345678901234567890123456789012
