# -*- indent-tabs-mode: nil -*- # vi: set expandtab:
#
# ============LICENSE_START====================================================
# =============================================================================
# Copyright (c) 2018-2020 AT&T
# Copyright (c) 2018-2020 NOKIA
# =============================================================================
# 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:
  - https://www.getcloudify.org/spec/cloudify/4.5.5/types.yaml
  - plugin:k8splugin?version=>=3.4.3,<4.0.0
inputs:
  pnfUrl:
    type: string
    default: "https://aai.onap.svc.cluster.local:8443/aai/v23/network/pnfs/pnf"
  baseUrl:
    type: string
    default: "https://aai.onap.svc.cluster.local:8443/aai/v23"
  aaiEnrichmentHost:
    type: string
    default: "aai.onap.svc.cluster.local"
  aaiEnrichmentPort:
    type: integer
    default: 8443
  aaiEnrichmentUser:
    type: string
    description: aai user name
    default: "AAI"
  aaiEnrichmentPasswd:
    type: string
    description: aai password
    default: "AAI"
  dmaap_pnfReady_url:
    type: string
    default: "http://message-router.onap.svc.cluster.local:3904/events/unauthenticated.PNF_READY"
  dmaap_vesPnfRegOutput_url:
    type: string
    default: "http://message-router.onap.svc.cluster.local:3904/events/unauthenticated.VES_PNFREG_OUTPUT"
  dmaap_pnfUpdate_url:
    type: string
    default: "http://message-router.onap.svc.cluster.local:3904/events/unauthenticated.PNF_UPDATE"
  dmaap_user:
    type: string
    description: dmap user name
    default: "admin"
  dmaap_passwd:
    type: string
    description: dmap password
    default: "admin"
  tag_version:
    type: string
    default: "nexus3.onap.org:10001/onap/org.onap.dcaegen2.services.prh.prh-app-server:1.7.0"
  replicas:
    type: integer
    description: number of instances
    default: 1
  host_port:
    description: port on Kubernetes host where PRH API will be exposed
    default: 0
  container_port:
    type: integer
    description: Network port that the platform service exposes in the container
    default: 8100
  service_component_type:
    type: string
    default: "dcae-prh"
  service_id:
    type: string
    default: "dcae-prh"
  secureEnableCert:
    type: boolean
    description: enable certificate base connection with AAI and DMaap
    default: false
  service_component_name_override:
    type: string
    default: "dcae-prh"
node_templates:
  prh:
    properties:
      application_config:
        dmaap.dmaapConsumerConfiguration.dmaapUserName: { get_input: dmaap_user }
        dmaap.dmaapConsumerConfiguration.dmaapUserPassword: { get_input: dmaap_passwd }
        dmaap.dmaapConsumerConfiguration.dmaapContentType: "application/json"
        dmaap.dmaapConsumerConfiguration.consumerId: "c12"
        dmaap.dmaapConsumerConfiguration.consumerGroup: "OpenDCAE-c12"
        dmaap.dmaapConsumerConfiguration.timeoutMs: -1
        dmaap.dmaapProducerConfiguration.dmaapUserName: { get_input: dmaap_user }
        dmaap.dmaapProducerConfiguration.dmaapUserPassword: { get_input: dmaap_passwd }
        dmaap.dmaapProducerConfiguration.dmaapContentType: "application/json"
        dmaap.dmaapUpdateProducerConfiguration.dmaapUserName: { get_input: dmaap_user }
        dmaap.dmaapUpdateProducerConfiguration.dmaapUserPassword: { get_input: dmaap_passwd }
        dmaap.dmaapUpdateProducerConfiguration.dmaapContentType: "application/json"
        aai.aaiClientConfiguration.pnfUrl: { get_input: pnfUrl }
        aai.aaiClientConfiguration.baseUrl: { get_input: baseUrl }
        aai.aaiClientConfiguration.aaiHost: { get_input: aaiEnrichmentHost }
        aai.aaiClientConfiguration.aaiHostPortNumber: { get_input: aaiEnrichmentPort }
        aai.aaiClientConfiguration.aaiProtocol: "https"
        aai.aaiClientConfiguration.aaiUserName: { get_input: aaiEnrichmentUser }
        aai.aaiClientConfiguration.aaiUserPassword: { get_input: aaiEnrichmentPasswd }
        aai.aaiClientConfiguration.aaiIgnoreSslCertificateErrors: true
        aai.aaiClientConfiguration.aaiBasePath: "/aai/v23"
        aai.aaiClientConfiguration.aaiPnfPath: "/network/pnfs/pnf"
        aai.aaiClientConfiguration.aaiServiceInstancePath: "/business/customers/customer/{{customer}}/service-subscriptions/service-subscription/{{serviceType}}/service-instances/service-instance/{{serviceInstanceId}}"
        aai.aaiClientConfiguration.aaiHeaders:
            X-FromAppId: "prh"
            X-TransactionId: "9999"
            Accept: "application/json"
            Real-Time: "true"
            Authorization: "Basic QUFJOkFBSQ=="
        security.trustStorePath: "/opt/app/prh/etc/cert/trust.jks"
        security.trustStorePasswordPath: "/opt/app/prh/etc/cert/trust.pass"
        security.keyStorePath: "/opt/app/prh/etc/cert/cert.jks"
        security.keyStorePasswordPath: "/opt/app/prh/etc/cert/jks.pass"
        security.enableAaiCertAuth: { get_input: secureEnableCert }
        security.enableDmaapCertAuth: { get_input: secureEnableCert }
        streams_publishes:
            pnf-update:
              type: "message_router"
              dmaap_info:
                topic_url: {get_input: dmaap_pnfUpdate_url }
            pnf-ready:
              type: "message_router"
              dmaap_info:
                topic_url: { get_input: dmaap_pnfReady_url }
        streams_subscribes:
            ves-reg-output:
              type: "message_router"
              dmaap_info:
                topic_url: { get_input: dmaap_vesPnfRegOutput_url }
      docker_config:
        healthcheck:
          endpoint: /heartbeat
          interval: 15s
          timeout: 1s
          type: http
        ports:
          - { concat: [ { get_input: container_port }, ':', { get_input: host_port } ] }
      image:
        { get_input: tag_version }
      replicas: {get_input: replicas}
      service_component_type: { get_input: service_component_type }
      service_id: { get_input: service_id }
      service_component_name_override: { get_input: service_component_name_override }
      log_info:
        log_directory: "/opt/app/prh/logs"
      tls_info:
        cert_directory: '/opt/app/prh/etc/cert'
        use_tls: true
    type: dcae.nodes.ContainerizedServiceComponent

