# ================================================================================ 
# 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

imports:
    - http://www.getcloudify.org/spec/cloudify/3.4/types.yaml
    - {{ ONAPTEMPLATE_RAWREPOURL_org_onap_dcaegen2_platform_plugins_releases }}/k8splugin/1.4.13/k8splugin_types.yaml
    - {{ ONAPTEMPLATE_RAWREPOURL_org_onap_ccsdk_platform_plugins_releases }}/type_files/dmaap/dmaap.yaml

inputs:
    topic00_name:
        type: string
        default: "topic00"
    topic01_name:
        type: string
        default: "topic01"
    topic02_name:
        type: string
        default: "topic02"
    topic03_name:
        type: string
        default: "topic03"
    topic04_name:
        type: string
        default: "topic04"
    topic05_name:
        type: string
        default: "topic05"
    topic06_name:
        type: string
        default: "topic06"
    location:
        type: string
        default: "san-francisco"

node_templates:

    topic00:
        type: ccsdk.nodes.Topic
        properties:
            topic_name: { get_input: topic00_name }

    topic01:
        type: ccsdk.nodes.Topic
        properties:
            topic_name: { get_input: topic01_name }

    topic02:
        type: ccsdk.nodes.Topic
        properties:
            topic_name: { get_input: topic02_name }

    topic03:
        type: ccsdk.nodes.Topic
        properties:
            topic_name: { get_input: topic03_name }

    topic04:
        type: ccsdk.nodes.Topic
        properties:
            topic_name: { get_input: topic04_name }

    topic05:
        type: ccsdk.nodes.Topic
        properties:
            topic_name: { get_input: topic05_name }

    topic06:
        type: ccsdk.nodes.Topic
        properties:
            topic_name: { get_input: topic06_name }

    client00:
        type: dcae.nodes.ContainerizedServiceComponentUsingDmaap

        properties:
            service_component_type: 'nginx-web'
            image: nginx
            docker_config:
                healthcheck:
                    type: "http"
                    endpoint: "/"
            streams_publishes:
              - name: topic00
                location: { get_input: location }
                client_role: org.onap.dcae.pnfPublisher
                type: message_router
              - name: topic01
                location: { get_input: location }
                client_role: org.onap.dcae.pnfPublisher
                type: message_router
              - name: topic02
                location: { get_input: location }
                client_role: org.onap.dcae.pnfPublisher
                type: message_router
              - name: topic03
                location: { get_input: location }
                client_role: org.onap.dcae.pnfPublisher
                type: message_router
              - name: topic04
                location: { get_input: location }
                client_role: org.onap.dcae.pnfPublisher
                type: message_router
              - name: topic05
                location: { get_input: location }
                client_role: org.onap.dcae.pnfPublisher
                type: message_router
              - name: topic06
                location: { get_input: location }
                client_role: org.onap.dcae.pnfPublisher
                type: message_router

        relationships:
            - type: ccsdk.relationships.publish_events
              target: topic00
            - type: ccsdk.relationships.publish_events
              target: topic01
            - type: ccsdk.relationships.publish_events
              target: topic02
            - type: ccsdk.relationships.publish_events
              target: topic03
            - type: ccsdk.relationships.publish_events
              target: topic04
            - type: ccsdk.relationships.publish_events
              target: topic05
            - type: ccsdk.relationships.publish_events
              target: topic06

        interfaces:
          cloudify.interfaces.lifecycle:
            start:
              inputs:
                ports:
                  - '80:0'

outputs:
    topic00_data:
        description: "Topic 00 data on client00"
        value: { get_attribute: [client00, topic00]}

    topic01_data:
        description: "Topic 01 data on client00"
        value: { get_attribute: [client00, topic01]}

    topic02_data:
        description: "Topic 02 data on client00"
        value: { get_attribute: [client00, topic02]}

    topic03_data:
        description: "Topic 03 data on client00"
        value: { get_attribute: [client00, topic03]}

    topic04_data:
        description: "Topic 04 data on client00"
        value: { get_attribute: [client00, topic04]}

    topic05_data:
        description: "Topic 05 data on client00"
        value: { get_attribute: [client00, topic05]}

    topic06_data:
        description: "Topic 06 data on client00"
        value: { get_attribute: [client00, topic06]}