# Copyright 2018 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.
# JVM specific parameters
LOGPARSER_JMX_PORT=9997
LOGPARSER_X_MS_MB=1024
LOGPARSER_X_MX_MB=1024

SERVER=http://pdp:8081/pdp/
LOGPATH=${{POLICY_HOME}}/servers/pdp/logs/pdp-rest.log
PARSERLOGPATH=IntegrityMonitor.log

node_type=logparser
# the java property is RESOURCE_NAME (uppercase), but the conf parameter is lowercase
resource_name=pdplp_1
