#
# ============LICENSE_START====================================================
# =============================================================================
# Copyright (c) 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======================================================

tosca_definitions_version: cloudify_dsl_1_3

description: >
  This blueprint deploys/manages the TCA module as a Docker container

imports:
  - https://www.getcloudify.org/spec/cloudify/4.5.5/types.yaml
  - "https://nexus.onap.org/service/local/repositories/raw/content/org.onap.dcaegen2.platform.plugins/R6/k8splugin/1.7.2/k8splugin_types.yaml"
  - "https://nexus.onap.org/service/local/repositories/raw/content/org.onap.dcaegen2.platform.plugins/R6/clamppolicyplugin/1.1.0/clamppolicyplugin_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.onap.svc.cluster.local"
  dmaap_port:
    type: string
    default: "3904"
  enableRedisCaching:
    type: string
    default: "false"
  redisHosts:
    type: string
    default: "dcae-redis.onap.svc.cluster.local:6379"
  tag_version:
    type: string
    default: "nexus3.onap.org:10001/onap/org.onap.dcaegen2.deployments.tca-cdap-container:1.2.2"
  consul_host:
    type: string
    default: "consul-server.onap"
  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: "onap.restart.tca"
  external_port:
    type: string
    description: Kubernetes node port on which CDAPgui is exposed
    default: "32012"
  policy_model_id:
    type: string
    default: "onap.policies.monitoring.cdap.tca.hi.lo.app"
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
          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@dcae.onap.org
          aaiEnrichmentUserPassword: demo123456!
          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: OpenDCAE-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":"VM","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.vNicPerformanceArray[*].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.vNicPerformanceArray[*].receivedTotalPacketsDelta","thresholdValue":700,"direction":"GREATER_OR_EQUAL","severity":"CRITICAL","closedLoopEventStatus":"ONSET"}]},{"eventName":"vLoadBalancer","controlLoopSchemaType":"VM","policyScope":"DCAE","policyName":"DCAE.Config_tca-hi-lo","policyVersion":"v0.0.1","thresholds":[{"closedLoopControlName":"ControlLoop-vDNS-6f37f56d-a87d-4b85-b6a9-cc953cf779b3","version":"1.0.2","fieldPath":"$.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedTotalPacketsDelta","thresholdValue":300,"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"}]}]}'
          tca_policy: ''
      service_component_type: dcaegen2-analytics_tca
    interfaces:
      cloudify.interfaces.lifecycle:
        start:
          inputs:
            envs:
              DMAAPHOST:
                { get_input: dmaap_host }
              DMAAPPORT: "3904"
              DMAAPPUBTOPIC: "unauthenticated.DCAE_CL_OUTPUT"
              DMAAPSUBTOPIC: "unauthenticated.VES_MEASUREMENT_OUTPUT"
              AAIHOST:
                { get_input: aaiEnrichmentHost }
              AAIPORT: "8443"
              CONSUL_HOST:
                { get_input: consul_host }
              CONSUL_PORT: "8500"
              CBS_HOST:
                { get_input: cbs_host }
              CBS_PORT: "10000"
              CONFIG_BINDING_SERVICE: "config_binding_service"
            ports:
              - concat: ["11011:", { get_input: external_port }]
  tca_policy:
    type: clamp.nodes.policy
    properties:
      policy_id:
        get_input: policy_id
      policy_model_id:
        get_input: policy_model_id
