Date: Thu, 28 Mar 2024 16:21:33 +0000 (UTC) Message-ID: <907816078.105044.1711642893537@aws-us-west-2-onap-confluence-1.web.codeaurora.org> Subject: Exported From Confluence MIME-Version: 1.0 Content-Type: multipart/related; boundary="----=_Part_105043_1962737757.1711642893534" ------=_Part_105043_1962737757.1711642893534 Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: quoted-printable Content-Location: file:///C:/exported.html
Design the Service and deploy it to clamp by logging to the portal:
http://portal.api.simpledemo.onap.org:8989/ONAPPO= RTAL/login.htm
CLAMP v= ideos#DesignpartinSDC
# # =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3DLICENSE_START=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D # =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D # Copyright (c) 2018 AT&T Intellectual Property. All rights reserved. # =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D # 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. # =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3DLICENSE_END=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D tosca_definitions_version: cloudify_dsl_1_3 description: > This blueprint deploys/manages the TCA module as a Docker container imports: - http://www.getcloudify.org/spec/cloudify/3.4/types.yaml - https://nexus.onap.org/service/local/repositories/raw/content/org.onap.= dcaegen2.platform.plugins/R3/k8splugin/1.4.3/k8splugin_types.yaml - https://nexus.onap.org/service/local/repositories/raw/content/org.onap.= dcaegen2.platform.plugins/R2/dcaepolicyplugin/2.3.0/dcaepolicyplugin_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.0.0" consul_host: type: string default: consul-server.onap.svc.cluster.local consul_port: type: string default: "8500" cbs_host: type: string default: "config-binding-service.dcae.svc.cluster.local" cbs_port: type: string default: "10000" policy_id: type: string default: "none" external_port: type: string description: Kubernetes node port on which CDAPgui is exposed default: "32010" 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 App= lication 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 aaiEnrichmentUserPassword: DCAE aaiVMEnrichmentAPIPath: /aai/v11/search/nodes-query aaiVNFEnrichmentAPIPath: /aai/v11/network/generic-vnfs/gene= ric-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-c12 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.SEC_MEASUREMENT_OUTPUT tca_policy: '{"domain":"measurementsForVfScaling","metricsP= erEventName":[{"eventName":"vFirewallBroadcastPackets","controlLoopSchemaTy= pe":"VNF","policyScope":"DCAE","policyName":"DCAE.Config_tca-hi-lo","policy= Version":"v0.0.1","thresholds":[{"closedLoopControlName":"ControlLoop-vFire= wall-d0a1dfc6-94f5-4fd4-a5b5-4630b438850a","version":"1.0.2","fieldPath":"$= .event.measurementsForVfScalingFields.vNicUsageArray[*].receivedTotalPacket= sDelta","thresholdValue":300,"direction":"LESS_OR_EQUAL","severity":"MAJOR"= ,"closedLoopEventStatus":"ONSET"},{"closedLoopControlName":"ControlLoop-vFi= rewall-d0a1dfc6-94f5-4fd4-a5b5-4630b438850a","version":"1.0.2","fieldPath":= "$.event.measurementsForVfScalingFields.vNicUsageArray[*].receivedTotalPack= etsDelta","thresholdValue":700,"direction":"GREATER_OR_EQUAL","severity":"C= RITICAL","closedLoopEventStatus":"ONSET"}]},{"eventName":"vLoadBalancer","c= ontrolLoopSchemaType":"VM","policyScope":"DCAE","policyName":"DCAE.Config_t= ca-hi-lo","policyVersion":"v0.0.1","thresholds":[{"closedLoopControlName":"= ControlLoop-vDNS-6f37f56d-a87d-4b85-b6a9-cc953cf779b3","version":"1.0.2","f= ieldPath":"$.event.measurementsForVfScalingFields.vNicUsageArray[*].receive= dTotalPacketsDelta","thresholdValue":300,"direction":"GREATER_OR_EQUAL","se= verity":"CRITICAL","closedLoopEventStatus":"ONSET"}]},{"eventName":"Measure= ment_vGMUX","controlLoopSchemaType":"VNF","policyScope":"DCAE","policyName"= :"DCAE.Config_tca-hi-lo","policyVersion":"v0.0.1","thresholds":[{"closedLoo= pControlName":"ControlLoop-vCPE-48f0c2c3-a172-4192-9ae3-052274181b6e","vers= ion":"1.0.2","fieldPath":"$.event.measurementsForVfScalingFields.additional= Measurements[*].arrayOfFields[0].value","thresholdValue":0,"direction":"EQU= AL","severity":"MAJOR","closedLoopEventStatus":"ABATED"},{"closedLoopContro= lName":"ControlLoop-vCPE-48f0c2c3-a172-4192-9ae3-052274181b6e","version":"1= .0.2","fieldPath":"$.event.measurementsForVfScalingFields.additionalMeasure= ments[*].arrayOfFields[0].value","thresholdValue":0,"direction":"GREATER","= severity":"CRITICAL","closedLoopEventStatus":"ONSET"}]}]}' service_component_type: dcaegen2-analytics_tca interfaces: cloudify.interfaces.lifecycle: start: inputs: envs: DMAAPHOST: { get_input: dmaap_host } DMAAPPORT: { get_input: dmaap_port } DMAAPPUBTOPIC: "unauthenticated.DCAE_CL_OUTPUT" DMAAPSUBTOPIC: "unauthenticated.SEC_MEASUREMENT_OUTPUT" AAIHOST: { get_input: aaiEnrichmentHost } AAIPORT: { get_input: aaiEnrichmentPort } CONSUL_HOST: { get_input: consul_host } CONSUL_PORT: { get_input: consul_port } CBS_HOST: { get_input: cbs_host } CBS_PORT: { get_input: cbs_port } CONFIG_BINDING_SERVICE: "config_binding_service" ports: - concat: ["11011:", { get_input: external_port }] tca_policy: type: dcae.nodes.policy properties: policy_id: get_input: policy_id
tosca_definitions_version: cloudify_dsl_1_3 imports: - "http://www.getcloudify.org/spec/cloudify/3.4/types.yaml" - https://nexus.onap.org/service/local/repositories/raw/content/org.onap.= dcaegen2.platform.plugins/R3/dockerplugin/3.2.0/dockerplugin_types.yaml - https://nexus.onap.org/service/local/repositories/raw/content/org.onap.= dcaegen2.platform.plugins/R3/relationshipplugin/1.0.0/relationshipplugin_ty= pes.yaml - https://nexus.onap.org/service/local/repositories/raw/content/org.onap.= dcaegen2.platform.plugins/R3/dcaepolicyplugin/2.3.0/dcaepolicyplugin_types.= yaml inputs: dh_override: type: string default: "dockerhost" dh_location_id: type: string default: "zone1" aaiEnrichmentHost: type: string default: "none" aaiEnrichmentPort: type: string =20 default: 8443 enableAAIEnrichment: type: string default: false dmaap_host: type: string default: dmaap.onap-message-router =20 dmaap_port: type: string default: 3904 =20 enableRedisCaching: type: string default: false =20 redisHosts: type: string =20 tag_version: type: string default: "nexus3.onap.org:10001/onap/org.onap.dcaegen2.deployments.tca-= cdap-container:1.1.0" consul_host: type: string default: consul-server.onap-consul consul_port: type: string default: "8500" cbs_host: type: string default: "config-binding-service.dcae" cbs_port: type: string default: "10000" policy_id: type: string default: "none" external_port: type: string description: "Port for CDAPgui to be exposed" default: "32010" scn_name:=20 default: dcaegen2-analytics_tca_clampinstance_1 type: string node_templates: docker_service_host: properties: docker_host_override: get_input: dh_override location_id: get_input: dh_location_id type: dcae.nodes.SelectedDockerHost tca_docker: relationships: - type: dcae.relationships.component_contained_in target: docker_service_host - target: tca_policy type: cloudify.relationships.depends_on =20 type: dcae.nodes.DockerContainerForComponentsUsingDmaap properties: application_config: app_config: appDescription: DCAE Analytics Threshold Crossing Alert App= lication appName: dcae-tca tcaAlertsAbatementTableName: TCAAlertsAbatementTable tcaAlertsAbatementTableTTLSeconds: '1728000' tcaSubscriberOutputStreamName: TCASubscriberOutputStream tcaVESAlertsTableName: TCAVESAlertsTable tcaVESAlertsTableTTLSeconds: '1728000' tcaVESMessageStatusTableName: TCAVESMessageStatusTable tcaVESMessageStatusTableTTLSeconds: '86400' thresholdCalculatorFlowletInstances: '2' app_preferences: aaiEnrichmentHost:=20 get_input: aaiEnrichmentHost aaiEnrichmentIgnoreSSLCertificateErrors: 'true' aaiEnrichmentPortNumber: '8443' aaiEnrichmentProtocol: https aaiEnrichmentUserName: DCAE aaiEnrichmentUserPassword: DCAE aaiVMEnrichmentAPIPath: /aai/v11/search/nodes-query aaiVNFEnrichmentAPIPath: /aai/v11/network/generic-vnfs/gene= ric-vnf enableAAIEnrichment:=20 get_input: enableAAIEnrichment enableRedisCaching:=20 get_input: enableRedisCaching redisHosts:=20 get_input: redisHosts enableAlertCEFFormat: 'false' publisherContentType: application/json publisherHostName:=20 get_input: dmaap_host publisherHostPort:=20 get_input: dmaap_port =20 publisherMaxBatchSize: '1' publisherMaxRecoveryQueueSize: '100000' publisherPollingInterval: '20000' publisherProtocol: http publisherTopicName: unauthenticated.DCAE_CL_OUTPUT subscriberConsumerGroup: OpenDCAE-c12 subscriberConsumerId: c12 subscriberContentType: application/json subscriberHostName:=20 get_input: dmaap_host subscriberHostPort: get_input: dmaap_port = =20 subscriberMessageLimit: '-1' subscriberPollingInterval: '30000' subscriberProtocol: http subscriberTimeoutMS: '-1' subscriberTopicName: unauthenticated.SEC_MEASUREMENT_OUTPUT tca_policy_default: '{"domain":"measurementsForVfScaling","= metricsPerEventName":[{"eventName":"vFirewallBroadcastPackets","controlLoop= SchemaType":"VNF","policyScope":"DCAE","policyName":"DCAE.Config_tca-hi-lo"= ,"policyVersion":"v0.0.1","thresholds":[{"closedLoopControlName":"ControlLo= op-vFirewall-d0a1dfc6-94f5-4fd4-a5b5-4630b438850a","version":"1.0.2","field= Path":"$.event.measurementsForVfScalingFields.vNicUsageArray[*].receivedTot= alPacketsDelta","thresholdValue":300,"direction":"LESS_OR_EQUAL","severity"= :"MAJOR","closedLoopEventStatus":"ONSET"},{"closedLoopControlName":"Control= Loop-vFirewall-d0a1dfc6-94f5-4fd4-a5b5-4630b438850a","version":"1.0.2","fie= ldPath":"$.event.measurementsForVfScalingFields.vNicUsageArray[*].receivedT= otalPacketsDelta","thresholdValue":700,"direction":"GREATER_OR_EQUAL","seve= rity":"CRITICAL","closedLoopEventStatus":"ONSET"}]},{"eventName":"vLoadBala= ncer","controlLoopSchemaType":"VM","policyScope":"DCAE","policyName":"DCAE.= Config_tca-hi-lo","policyVersion":"v0.0.1","thresholds":[{"closedLoopContro= lName":"ControlLoop-vDNS-6f37f56d-a87d-4b85-b6a9-cc953cf779b3","version":"1= .0.2","fieldPath":"$.event.measurementsForVfScalingFields.vNicUsageArray[*]= .receivedTotalPacketsDelta","thresholdValue":300,"direction":"GREATER_OR_EQ= UAL","severity":"CRITICAL","closedLoopEventStatus":"ONSET"}]},{"eventName":= "Measurement_vGMUX","controlLoopSchemaType":"VNF","policyScope":"DCAE","pol= icyName":"DCAE.Config_tca-hi-lo","policyVersion":"v0.0.1","thresholds":[{"c= losedLoopControlName":"ControlLoop-vCPE-48f0c2c3-a172-4192-9ae3-052274181b6= e","version":"1.0.2","fieldPath":"$.event.measurementsForVfScalingFields.ad= ditionalMeasurements[*].arrayOfFields[0].value","thresholdValue":0,"directi= on":"EQUAL","severity":"MAJOR","closedLoopEventStatus":"ABATED"},{"closedLo= opControlName":"ControlLoop-vCPE-48f0c2c3-a172-4192-9ae3-052274181b6e","ver= sion":"1.0.2","fieldPath":"$.event.measurementsForVfScalingFields.additiona= lMeasurements[*].arrayOfFields[0].value","thresholdValue":0,"direction":"GR= EATER","severity":"CRITICAL","closedLoopEventStatus":"ONSET"}]}]}' service_component_type: dcaegen2-analytics_tca =20 docker_config: healthcheck: endpoint: / interval: 15s timeout: 1s type: http image: get_input: tag_version =20 service_component_name_override:=20 get_input: scn_name =20 interfaces: cloudify.interfaces.lifecycle: start: inputs: envs: DMAAPHOST:=20 { get_input: dmaap_host } DMAAPPORT: { get_input: dmaap_port } DMAAPPUBTOPIC: "unauthenticated.DCAE_CL_OUTPUT" DMAAPSUBTOPIC: "unauthenticated.SEC_MEASUREMENT_OUTPUT" AAIHOST:=20 { get_input: aaiEnrichmentHost } AAIPORT:=20 { get_input: aaiEnrichmentPort } CONSUL_HOST:=20 { get_input: consul_host } CONSUL_PORT:=20 { get_input: consul_port } CBS_HOST:=20 { get_input: cbs_host } CBS_PORT:=20 { get_input: cbs_port } CONFIG_BINDING_SERVICE: "config_binding_service" = =20 SERVICE_11011_NAME:=20 { get_input: scn_name } SERVICE_11015_IGNORE: "true" =20 ports: - concat: ["11011:", { get_input: external_port }] =20 stop: inputs: cleanup_image: true =20 tca_policy: type: dcae.nodes.policy properties: policy_id: get_input: policy_id
CLA= MP videos#DistributiontoCLAMP
The artifact distribution must be done from SDC to CLAMP, in order to di= stribute the Blueprint and service/VF associated.
This will create Closed Loops associated to VF and Service in Clamp data= base
Parsing of the SDC notification is done by CLAMP and is based on string = patterns found in the Blueprint.
Only Holmes and TCA are currently supported by default, but this can be = customized by the Clamp config files.
The default config file is bundled in the JAR: src/main/resource= s/clds/templates/blueprint-parser-mapping.json
But this can be overridden by specifying the spring config "clamp.config= .sdc.blueprint.parser.mapping" in clamp.env for docker-compose (set by defa= ult to "classpath:/clds/blueprint-parse= r-mapping.json")
Configure the Closed Loop in the CLAMP UI
A Certificate must be added in the browser and is required to login prop= erly
org.onap.clamp.p12 (from master)<= /a> (Password: "China in the Spring")
The Closed loop created by the SDC distribution can be opened in the CLA= MP UI . The Guard/Operational and configuration policies must be configured= in the UI.
CLAMP videos#ConfigureClosedloopinCLAMPUI
Once done, the closed loop can be submitted to Policy by clicking on Man= age =E2=86=92 Submit
CLAMP videos#SubmitConfigurationandOperati= onalPoliciestoPolicyEngine
The micro-service deployment can be done on DCAE from CLAMP
In this case, a query is sent from CLAMP to DCAE with the deployment par= ameters configured in CLAMP.
CLAMP videos#Deploy/ControltheClosedLooponDCAE
The policies can be updated at runtime, microservice "Stopped/Undeployed= "
CLAMP videos#Deploy/ControltheClosedLooponDCAE