# 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.
# BRMSpep component installation configuration parameters
BRMSGW_JMX_PORT=9989

COMPONENT_X_MX_MB=1024
COMPONENT_X_MS_MB=1024

REST_PAP_URL=https://pap:9091/pap/
REST_PDP_ID=https://pdp:8081/pdp/

PDP_HTTP_USER_ID=testpdp
PDP_HTTP_PASSWORD=alpha123
PDP_PAP_PDP_HTTP_USER_ID=testpap
PDP_PAP_PDP_HTTP_PASSWORD=alpha123

M2_HOME=/usr/share/maven
snapshotRepositoryID=policy-nexus-snapshots
snapshotRepositoryName=Snapshots
snapshotRepositoryURL=http://nexus:8081/nexus/content/repositories/snapshots
releaseRepositoryID=policy-nexus-releases
releaseRepositoryName=Releases
releaseRepositoryURL=http://nexus:8081/nexus/content/repositories/releases
repositoryUsername=admin
repositoryPassword=admin123
UEB_URL=mr.api.simpledemo.onap.org
UEB_TOPIC=PDPD-CONFIGURATION
UEB_API_KEY=
UEB_API_SECRET=

groupID=org.onap.policy-engine
artifactID=drlPDPGroup
AMSTERDAM_GROUP_ID=org.onap.policy-engine.drools.amsterdam
AMSTERDAM_ARTIFACT_ID=policy-amsterdam-rules

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

#Environment should be Set either DEV, TEST or PROD
ENVIRONMENT=TEST

#Notification Properties... type can be either websocket, ueb, or dmaap
BRMS_NOTIFICATION_TYPE=websocket
BRMS_UEB_URL=mr.api.simpledemo.onap.org
BRMS_UEB_TOPIC=PDPD-CONFIGURATION
BRMS_UEB_DELAY=
BRMS_CLIENT_ID=python
BRMS_CLIENT_KEY=dGVzdA==
BRMS_UEB_API_KEY=
BRMS_UEB_API_SECRET=

#Dependency.json file version
BRMS_DEPENDENCY_VERSION=1.3.1

