# ============LICENSE_START====================================================
# =============================================================================
# Copyright (C) 2019-2020 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======================================================
#k8s-tca-gen2-v3.yaml

tosca_definitions_version: cloudify_dsl_1_3
imports:
  - https://www.getcloudify.org/spec/cloudify/4.5.5/types.yaml
  - plugin:k8splugin?version=3.4.2
  - plugin:clamppolicyplugin?version=1.1.0
inputs:
  service_name:
    type: string
    default: 'dcae-tcagen2'
  log_directory:
    type: string
    default: "/opt/logs/dcae-analytics-tca"
  replicas:
    type: integer
    description: number of instances
    default: 1
  spring.data.mongodb.uri:
    type: string
    default: "mongodb://dcae-mongohost/dcae-tcagen2"
  tag_version:
    type: string
    default: "nexus3.onap.org:10001/onap/org.onap.dcaegen2.analytics.tca-gen2.dcae-analytics-tca-web:1.2.1"
  tca.aai.password:
    type: string
    default: "DCAE"
  tca.aai.url:
    type: string
    default: "http://aai.onap.svc.cluster.local"
  tca.aai.username:
    type: string
    default: "DCAE"
  tca_handle_in_subscribe_url:
    type: string
    default: "http://message-router.onap.svc.cluster.local:3904/events/unauthenticated.VES_MEASUREMENT_OUTPUT"
  tca_handle_out_publish_url:
    type: string
    default: "http://message-router.onap.svc.cluster.local:3904/events/unauthenticated.DCAE_CL_OUTPUT"
  tca_consumer_group:
    type: string
    default: "cg1"
  policy_model_id:
    type: string
    default: "onap.policies.monitoring.tcagen2"
  policy_id:
    type: string
    default: "onap.restart.tca"
node_templates:
  docker.tca:
    type: dcae.nodes.ContainerizedServiceComponent
    relationships:
      - target: tcagen2_policy
        type: cloudify.relationships.depends_on
    interfaces:
      cloudify.interfaces.lifecycle:
        start:
          inputs:
            ports:
              - concat: ["9091:", "0"]
    properties:
      application_config:
        service_calls: []
        streams_publishes:
          tca_handle_out:
            dmaap_info:
              topic_url:
                get_input: tca_handle_out_publish_url
            type: message_router
        streams_subscribes:
          tca_handle_in:
            dmaap_info:
              topic_url:
                get_input: tca_handle_in_subscribe_url
            type: message_router
        spring.data.mongodb.uri:
          get_input: spring.data.mongodb.uri
        streams_subscribes.tca_handle_in.consumer_group:
          get_input: tca_consumer_group
        streams_subscribes.tca_handle_in.consumer_ids[0]: c0
        streams_subscribes.tca_handle_in.consumer_ids[1]: c1
        streams_subscribes.tca_handle_in.message_limit: 50000
        streams_subscribes.tca_handle_in.polling.auto_adjusting.max: 60000
        streams_subscribes.tca_handle_in.polling.auto_adjusting.min: 30000
        streams_subscribes.tca_handle_in.polling.auto_adjusting.step_down: 30000
        streams_subscribes.tca_handle_in.polling.auto_adjusting.step_up: 10000
        streams_subscribes.tca_handle_in.polling.fixed_rate: 0
        streams_subscribes.tca_handle_in.timeout: -1
        tca.aai.enable_enrichment: true
        tca.aai.generic_vnf_path: aai/v11/network/generic-vnfs/generic-vnf
        tca.aai.node_query_path: aai/v11/search/nodes-query
        tca.aai.password:
          get_input: tca.aai.password
        tca.aai.url:
          get_input: tca.aai.url
        tca.aai.username:
          get_input: tca.aai.username
        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.processing_batch_size: 10000
        tca.enable_abatement: true
        tca.enable_ecomp_logging: true
      docker_config:
        healthcheck:
          endpoint: /actuator/health
          interval: 30s
          timeout: 10s
          type: http
      image:
        get_input: tag_version
      log_info:
        log_directory:
          get_input: log_directory
      tls_info:
        use_tls: true
        cert_directory: '/etc/tca-gen2/ssl'
      replicas:
        get_input: replicas
      service_component_type: { get_input: service_name }
  tcagen2_policy:
    type: clamp.nodes.policy
    properties:
      policy_id:
        get_input: policy_id
      policy_model_id:
        get_input: policy_model_id
