###
# ============LICENSE_START=======================================================
# ONAP CLAMP
# ================================================================================
# Copyright (C) 2017-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.
# ============LICENSE_END============================================
# ===================================================================
# ECOMP is a trademark and service mark of AT&T Intellectual Property.
###

#
# Poperties for CLDS
#
#
# DCAE request build properties
#
dcae.template=classpath:/clds/templates/dcae-template.json
dcae.decode.service_ids=classpath:/clds/templates/dcae-decode-service_ids.json
dcae.deployment.template=classpath:/clds/templates/dcae-deployment-template.json
#
# SDC request blueprint properties
#
sdc.template=classpath:/clds/templates/sdc-template.json
sdc.decode.service_ids=classpath:/clds/templates/sdc-decode-service_ids.json
#
#
# General Policy request properties
#
policy.onap.name=DCAE
policy.pdp.group=default
policy.ms.type=MicroService
policy.ms.policyNamePrefix=Config_MS_
policy.op.type=BRMS_Param
policy.op.policyNamePrefix=Config_BRMS_Param_

# TCA MicroService Policy request build properties
#
tca.policyid.prefix=DCAE.Config_
tca.policy.template=classpath:/clds/templates/tca-policy-template.json
tca.template=classpath:/clds/templates/tca-template.json
tca.thresholds.template=classpath:/clds/templates/tca-thresholds-template.json

#
#
# Operational Policy request build properties
#
op.policyDescription=from clds
# default
op.templateName=ClosedLoopvUSP
op.operationTopic=APPC-CL
op.notificationTopic=POLICY-CL-MGT
op.controller=amsterdam
op.policy.appc=APPC
# by service: vSCP
op.templateName.vSCP=ClosedLoopTemplate
op.controller.vSCP=1607-f5fw
op.eNodeB.templateName=ClosedLoopControlName
op.eNodeB.operationTopic=com.onap.sdnr.RanCLRequest-v00
op.eNodeB.notificationTopic=com.onap-policy.IST-ENODEB-CL
op.eNodeB.controller=amsterdam
op.eNodeB.recipe=classpath:/clds/templates/op-eNodeB-recipe.json
op.eNodeB.timeWindow=35
op.eNodeB.limit=2
op.eNodeB.period=10s
#
# Sdc service properties
sdc.catalog.url=http://sdc.api.simpledemo.onap.org:8080/sdc/v1/catalog/
sdc.hostUrl=http://sdc.api.simpledemo.onap.org:8080
sdc.serviceUrl=http://sdc.api.simpledemo.onap.org:8080/sdc/v1/catalog/services
sdc.serviceUsername=clamp
sdc.servicePassword=b7acccda32b98c5bb7acccda32b98c5b05D511BD6D93626E90D18E9D24D9B78CD34C7EE8012F0A189A28763E82271E50A5D4EC10C7D93E06E0A2D27CAE66B981
sdc.artifactLabel=blueprintclampcockpit
sdc.sdcX-InstanceID=CLAMP
sdc.artifactType=DCAE_INVENTORY_BLUEPRINT
sdc.locationArtifactLabel=locationclampcockpit
sdc.locationArtifactType=DCAE_INVENTORY_JSON
sdc.InstanceID=X-ECOMP-InstanceID
sdc.header.requestId = X-ECOMP-RequestID
#
#
ui.location.default=classpath:/clds/templates/ui-location-default.json
ui.alarm.default=classpath:/clds/templates/ui-alarm-default.json
#
# if action.test.override is true, then any action will be marked as test=true (even if incoming action request had test=false); otherwise, test flag will be unchanged on the action request
action.test.override=false
# if action.insert.test.event is true, then insert event even if the action is set to test
action.insert.test.event=false
clds.service.cache.invalidate.after.seconds=120

#DCAE Inventory Url Properties
dcae.inventory.url=http://dcae.api.simpledemo.onap.org:8080

#DCAE Dispatcher Url Properties
dcae.dispatcher.url=http://dcae.api.simpledemo.onap.org:8080
dcae.header.requestId = X-ECOMP-RequestID
