#
# ============LICENSE_START====================================================
# =============================================================================
# Copyright (c) 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======================================================
tosca_definitions_version: cloudify_dsl_1_3
description: >
This blueprint deploys/manages the TCA module as a Docker container
imports:
- http://www.getcloudify.org/spec/cloudify/3.4/types.yaml
- https://nexus.onap.org/service/local/repositories/raw/content/org.onap.dcaegen2.platform.plugins/R2/k8splugin/1.1.0/k8splugin_types.yaml
- https://nexus.onap.org/service/local/repositories/raw/content/org.onap.dcaegen2.platform.plugins/R2/dcaepolicyplugin/2.3.0/dcaepolicyplugin_types.yaml
inputs:
aaiEnrichmentHost:
type: string
default: "aai.onap.svc.cluster.local"
aaiEnrichmentPort:
type: string
default: "8443"
enableAAIEnrichment:
type: string
default: true
dmaap_host:
type: string
default: message-router
dmaap_port:
type: string
default: "3904"
enableRedisCaching:
type: string
default: false
redisHosts:
type: string
default: dcae-redis:6379
tag_version:
type: string
default: "nexus3.onap.org:10001/onap/org.onap.dcaegen2.deployments.tca-cdap-container:1.1.0"
consul_host:
type: string
default: consul-server
consul_port:
type: string
default: "8500"
cbs_host:
type: string
default: config-binding-service
cbs_port:
type: string
default: "10000"
policy_id:
type: string
default: "none"
external_port:
type: string
description: Kubernetes node port on which CDAPgui is exposed
default: "32011"
node_templates:
tca_k8s:
type: dcae.nodes.ContainerizedServiceComponent
relationships:
- target: tca_policy
type: cloudify.relationships.depends_on
properties:
service_component_type: dcaegen2-analytics-tca
application_config: {}
docker_config: {}
image:
get_input: tag_version
log_info:
log_directory: "/opt/app/TCAnalytics/logs"
application_config:
app_config:
appDescription: DCAE Analytics Threshold Crossing Alert Application
appName: dcae-tca-ak-serv
tcaAlertsAbatementTableName: TCAAlertsAbatementTable
tcaAlertsAbatementTableTTLSeconds: '1728000'
tcaSubscriberOutputStreamName: TCASubscriberOutputStream
tcaVESAlertsTableName: TCAVESAlertsTable
tcaVESAlertsTableTTLSeconds: '1728000'
tcaVESMessageStatusTableName: TCAVESMessageStatusTable
tcaVESMessageStatusTableTTLSeconds: '86400'
thresholdCalculatorFlowletInstances: '2'
app_preferences:
aaiEnrichmentHost:
get_input: aaiEnrichmentHost
aaiEnrichmentIgnoreSSLCertificateErrors: 'true'
aaiEnrichmentPortNumber: '8443'
aaiEnrichmentProtocol: https
aaiEnrichmentUserName: DCAE
aaiEnrichmentUserPassword: DCAE
aaiVMEnrichmentAPIPath: /aai/v11/search/nodes-query
aaiVNFEnrichmentAPIPath: /aai/v11/network/generic-vnfs/generic-vnf
enableAAIEnrichment:
get_input: enableAAIEnrichment
enableRedisCaching:
get_input: enableRedisCaching
redisHosts:
get_input: redisHosts
enableAlertCEFFormat: 'false'
publisherContentType: application/json
publisherHostName:
get_input: dmaap_host
publisherHostPort:
get_input: dmaap_port
publisherMaxBatchSize: '1'
publisherMaxRecoveryQueueSize: '100000'
publisherPollingInterval: '20000'
publisherProtocol: http
publisherTopicName: unauthenticated.DCAE_CL_OUTPUT
subscriberConsumerGroup: clamp
subscriberConsumerId: c12
subscriberContentType: application/json
subscriberHostName:
get_input: dmaap_host
subscriberHostPort:
get_input: dmaap_port
subscriberMessageLimit: '-1'
subscriberPollingInterval: '30000'
subscriberProtocol: http
subscriberTimeoutMS: '-1'
subscriberTopicName: unauthenticated.VES_MEASUREMENT_OUTPUT
tca_policy: '{ \"domain\": \"measurementsForVfScaling\", \"metricsPerEventName\": [ { \"eventName\": \"vFirewallBroadcastPackets\", \"controlLoopSchemaType\": \"VNF\", \"policyScope\": \"DCAE\", \"policyName\": \"DCAE.Config_tca-hi-lo\", \"policyVersion\": \"v0.0.1\", \"thresholds\": [ { \"closedLoopControlName\": \"ControlLoop-vFirewall-d0a1dfc6-94f5-4fd4-a5b5-4630b438850a\", \"version\": \"1.0.2\", \"fieldPath\": \"$.event.measurementsForVfScalingFields.vNicUsageArray[*].receivedTotalPacketsDelta\", \"thresholdValue\": 300, \"direction\": \"LESS_OR_EQUAL\", \"severity\": \"MAJOR\", \"closedLoopEventStatus\": \"ONSET\" }, { \"closedLoopControlName\": \"ControlLoop-vFirewall-d0a1dfc6-94f5-4fd4-a5b5-4630b438850a\", \"version\": \"1.0.2\", \"fieldPath\": \"$.event.measurementsForVfScalingFields.vNicUsageArray[*].receivedTotalPacketsDelta\", \"thresholdValue\": 700, \"direction\": \"GREATER_OR_EQUAL\", \"severity\": \"CRITICAL\", \"closedLoopEventStatus\": \"ONSET\" } ] }, { \"eventName\": \"Measurement_vGMUX\", \"controlLoopSchemaType\": \"VNF\", \"policyScope\": \"DCAE\", \"policyName\": \"DCAE.Config_tca-hi-lo\", \"policyVersion\": \"v0.0.1\", \"thresholds\": [ { \"closedLoopControlName\": \"ControlLoop-vCPE-48f0c2c3-a172-4192-9ae3-052274181b6e\", \"version\": \"1.0.2\", \"fieldPath\": \"$.event.measurementsForVfScalingFields.additionalMeasurements[*].arrayOfFields[0].value\", \"thresholdValue\": 0, \"direction\": \"EQUAL\", \"severity\": \"MAJOR\", \"closedLoopEventStatus\": \"ABATED\" }, { \"closedLoopControlName\": \"ControlLoop-vCPE-48f0c2c3-a172-4192-9ae3-052274181b6e\", \"version\": \"1.0.2\", \"fieldPath\": \"$.event.measurementsForVfScalingFields.additionalMeasurements[*].arrayOfFields[0].value\", \"thresholdValue\": 0, \"direction\": \"GREATER\", \"severity\": \"CRITICAL\", \"closedLoopEventStatus\": \"ONSET\" } ] } ]}'
service_component_type: dcaegen2-analytics_tca
interfaces:
cloudify.interfaces.lifecycle:
start:
inputs:
envs:
DMAAPHOST:
{ get_input: dmaap_host }
DMAAPPORT:
{ get_input: dmaap_port }
DMAAPPUBTOPIC: "unauthenticated.DCAE_CL_OUTPUT"
DMAAPSUBTOPIC: "unauthenticated.VES_MEASUREMENT_OUTPUT"
AAIHOST:
{ get_input: aaiEnrichmentHost }
AAIPORT:
{ get_input: aaiEnrichmentPort }
CONSUL_HOST:
{ get_input: consul_host }
CONSUL_PORT:
{ get_input: consul_port }
CBS_HOST:
{ get_input: cbs_host }
CBS_PORT:
{ get_input: cbs_port }
CONFIG_BINDING_SERVICE: "config_binding_service"
ports:
- concat: ["11011:", { get_input: external_port }]
tca_policy:
type: dcae.nodes.policy
properties:
policy_id:
get_input: policy_id