# # ============LICENSE_START======================================================= # Copyright (C) 2020 Nordix Foundation. # ================================================================================ # 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. # # SPDX-License-Identifier: Apache-2.0 # ============LICENSE_END========================================================= # tosca_definitions_version: cloudify_dsl_1_3 imports: - 'http://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.ccsdk.platform.plugins/type_files/dmaap/dmaap.yaml' - 'https://nexus.onap.org/service/local/repositories/raw/content/org.onap.ccsdk.platform.plugins/type_files/pgaas/1.1.0/pgaas_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: tag_version: type: string description: Docker image to be used default: 'nexus3.onap.org:10001/onap/org.onap.dcaegen2.services.pmsh:latest' replicas: type: integer description: Number of instances default: 1 policy_model_id: type: 'string' default: 'onap.policies.monitoring.dcae-pm-subscription-handler' policy_id: type: 'string' default: 'onap.policies.monitoring.dcae-pm-subscription-handler' operational_policy_name: type: string default: 'pmsh-operational-policy' control_loop_name: type: string pm_publish_topic_name: type: string default: 'DCAE_CL_OUTPUT' pm_subscribe_topic_name: type: string default: 'PMSH_CL_INPUT' aai_subscribe_topic_name: type: string default: 'AAI_EVENT' publisher_client_role: type: string description: Client role to request secure access to topic default: 'org.onap.dcae.pmPublisher' subscriber_client_role: type: string description: Client role to request secure access to topic default: 'org.onap.dcae.pmSubscriber' client_id: type: string description: Client id for given AAF client default: 'dcae@dcae.onap.org' client_password: type: string description: Password for AAF client provided as client_id dcae_location: type: string description: DCAE location for the subscriber, used to set up routing default: 'san-francisco' pmsh_service_port: type: string description: PMSH host port default: '8443' dmaap_mr_service_protocol: type: string description: DMAAP Message Router protocol default: 'https' dmaap_mr_service_host: type: string description: DMAAP Message Router host address default: 'message-router' dmaap_mr_service_port: type: string description: DMAAP Message Router host port default: '3905' cpu_limit: type: string default: '1000m' cpu_request: type: string default: '1000m' memory_limit: type: string default: '1024Mi' memory_request: type: string default: '1024Mi' pgaas_cluster_name: type: string default: 'dcae-pg-primary.onap' node_templates: pgaasvm: type: dcae.nodes.pgaas.database properties: writerfqdn: { get_input: pgaas_cluster_name } name: 'pmsh' pm_publish_topic: type: ccsdk.nodes.Topic properties: topic_name: { get_input: pm_publish_topic_name } pm_subscribe_topic: type: ccsdk.nodes.Topic properties: topic_name: { get_input: pm_subscribe_topic_name } aai_subscribe_topic: type: ccsdk.nodes.Topic properties: topic_name: { get_input: aai_subscribe_topic_name } pmsh: type: dcae.nodes.ContainerizedServiceComponentUsingDmaap interfaces: cloudify.interfaces.lifecycle: create: inputs: ports: - '8443:0' envs: PMSH_PG_URL: { get_attribute: [ pgaasvm, admin, host ] } PMSH_PG_PASSWORD: { get_attribute: [ pgaasvm, admin, password ] } PMSH_PG_USERNAME: { get_attribute: [ pgaasvm, admin, user ] } PMSH_DB_NAME: { get_attribute: [ pgaasvm, admin, database ] } relationships: - type: ccsdk.relationships.publish_events target: pm_publish_topic - type: ccsdk.relationships.subscribe_to_events target: pm_subscribe_topic - type: ccsdk.relationships.subscribe_to_events target: aai_subscribe_topic - type: cloudify.relationships.depends_on target: pgaasvm - type: cloudify.relationships.depends_on target: pmsh-policy properties: service_component_type: 'dcae-pmsh' service_component_name_override: 'dcae-pmsh' application_config: aaf_identity: { get_input: client_id } aaf_password: { get_input: client_password } operational_policy_name: { get_input: operational_policy_name } control_loop_name: { get_input: control_loop_name } cert_path: '/opt/app/pmsh/etc/certs/cert.pem' key_path: '/opt/app/pmsh/etc/certs/key.pem' ca_cert_path: '/opt/app/pmsh/etc/certs/cacert.pem' streams_publishes: policy_pm_publisher: type: message_router dmaap_info: <> streams_subscribes: policy_pm_subscriber: type: message_router dmaap_info: <> aai_subscriber: type: message_router dmaap_info: <> resource_config: limits: cpu: { get_input: cpu_limit } memory: { get_input: memory_limit } requests: cpu: { get_input: cpu_request } memory: { get_input: memory_request } streams_publishes: - name: pm_publish_topic location: { get_input: dcae_location } client_role: { get_input: publisher_client_role } type: message-router streams_subscribes: - name: pm_subscribe_topic location: { get_input: dcae_location } client_role: { get_input: subscriber_client_role } type: message-router - name: aai_subscribe_topic location: { get_input: dcae_location } client_role: { get_input: subscriber_client_role } type: message-router image: { get_input: tag_version } replicas: { get_input: replicas } log_info: log_directory: '/var/log/ONAP/dcaegen2/services/pmsh' tls_info: cert_directory: '/opt/app/pmsh/etc/certs' use_tls: true pmsh-policy: type: clamp.nodes.policy properties: policy_model_id: get_input: policy_model_id policy_id: get_input: policy_id