Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

(warning) Work in progress

...

Schema that can be used by Tosca Lab (SDC DCAE-D Tosca Lab) to generate Micro-service policy model (more info: MicroServices Onboarding in ONAP)

Expand
Code Block
{
  "self": {
    "name": "cdap.tca.hi.lo.app",
    "version": "1.0.5",
    "description": "cdap tca hi lo application",
    "component_type": "cdap"
  },
  "streams": {
    "subscribes": [
      {
        "config_key": "tca_handle_in",
        "format": "VES_specification",
        "version": "5.28.4",
        "type": "message router"
      }
    ],
    "publishes": [
      {
        "config_key": "tca_handle_out",
        "format": "DCAE_CL_Output",
        "version": "1.0.1",
        "type": "message router"
      }
    ]
  },
  "services": {
    "calls": [],
    "provides": []
  },
  "auxilary": {
    "streamname": "TCASubscriberOutputStream",
    "artifact_name": "dcae-analytics-cdap-tca",
    "artifact_version": "2.0.0",
    "namespace": "cdap_tca_hi_lo",
    "programs": [
      {
        "program_type": "flows",
        "program_id": "TCAVESCollectorFlow"
      },
      {
        "program_type": "workers",
        "program_id": "TCADMaaPMRSubscriberWorker"
      },
      {
        "program_type": "workers",
        "program_id": "TCADMaaPMRPublisherWorker"
      }
    ]
  },
  "artifacts": [
    {
      "uri": "https://nexus.onap.org/service/local/repositories/staging/content/org/onap/dcaegen2/analytics/tca/dcae-analytics-cdap-tca/2.0.0/dcae-analytics-cdap-tca-2.0.0.jar",
      "type": "jar"
    }
  ],
  "parameters": {
    "app_config": [
      {
        "name": "appName",
        "description": "CDAP Application Name for TCA App",
        "value": "dcae-tca"
      },
      {
        "name": "appDescription",
        "description": "CDAP Application Description for TCA App",
        "value": "DCAE Analytics Threshold Crossing Alert Application"
      },
      {
        "name": "tcaSubscriberOutputStreamName",
        "description": "Name of Stream where TCA DMaaP Subscriber pushes incoming messages to TCA App for processing",
        "value": "TCASubscriberOutputStream"
      },
      {
        "name": "thresholdCalculatorFlowletInstances",
        "description": "Number of instances for Threshold Calculator",
        "value": 2
      },
      {
        "name": "tcaVESMessageStatusTableName",
        "description": "TCA Message Status Table Name where status of each TCA message is stored",
        "value": "TCAVESMessageStatusTable"
      },
      {
        "name": "tcaVESMessageStatusTableTTLSeconds",
        "description": "Time to Live for entries in Message Status Table",
        "value": 86400
      },
      {
        "name": "tcaVESAlertsTableName",
        "description": "Table where TCA generated alerts are temporarily stored before published to DMaaP MR topic",
        "value": "TCAVESAlertsTable"
      },
      {
        "name": "tcaVESAlertsTableTTLSeconds",
        "description": "Time to Live for entries in Alerts Table",
        "value": 1728000
      },
      {
        "name" : "tcaAlertsAbatementTableName",
        "description" : "Table where information to determine sending of Abatement Alerts is stored",
        "value" : "TCAAlertsAbatementTable"
      },
      {
        "name" : "tcaAlertsAbatementTableTTLSeconds",
        "description": "Time to Live for entries in  Alerts Abatement Table",
        "value" : 1728000
      }
    ],
    "app_preferences": [
      {
        "name" :  "subscriberHostName",
        "description" :  "",
        "value" : "HOSTNAME"
      },
      {
        "name" :  "subscriberHostPort",
        "description" :  "",
        "value" : 1234
      },
      {
        "name" :  "subscriberTopicName",
        "description" :  "",
        "value" : "com.att.dcae.dmaap.mtnje2.DcaeTestVESSub"
      },
      {
        "name" :  "subscriberProtocol",
        "description" :  "",
        "value" : "https"
      },
      {
        "name" :  "subscriberUserName",
        "description" :  "",
        "value" : "USERNAME"
      },
      {
        "name" :  "subscriberUserPassword",
        "description" :  "",
        "value" : "PASSWORD"
      },
      {
        "name": "subscriberContentType",
        "description": "Subscriber Content Type",
        "value": "application/json"
      },
      {
        "name": "subscriberConsumerId",
        "description": "Subscriber Consumer Id",
        "value": "c12"
      },
      {
        "name": "subscriberConsumerGroup",
        "description": "Subscriber Group Id",
        "value": "OpenDCAE-c12"
      },
      {
        "name": "subscriberTimeoutMS",
        "description": "Subscriber timeout in milliseconds",
        "value": -1
      },
      {
        "name": "subscriberMessageLimit",
        "description": "Subscriber max message fetch limit",
        "value": -1
      },
      {
        "name": "subscriberPollingInterval",
        "description": "Subscriber Polling Interval in milliseconds",
        "value": 30000
      },
      {
        "name" :  "publisherHostName",
        "description" :  "",
        "value" : "HOSTNAME"
      },
      {
        "name" :  "publisherHostPort",
        "description" :  "",
        "value" : 1234
      },
      {
        "name" :  "publisherTopicName",
        "description" :  "",
        "value" : "com.att.dcae.dmaap.mtnje2.DcaeTestVESPub"
      },
      {
        "name" :  "publisherProtocol",
        "description" :  "",
        "value" : "https"
      },
      {
        "name" :  "publisherUserName",
        "description" :  "",
        "value" : "USERNAME"
      },
      {
        "name" :  "publisherUserPassword",
        "description" :  "",
        "value" : "PASSWORD"
      },
      {
        "name": "publisherContentType",
        "description": "Publisher Content Type",
        "value": "application/json"
      },
      {
        "name": "publisherMaxBatchSize",
        "description": "Publisher max batch size",
        "value": 1
      },
      {
        "name": "publisherMaxRecoveryQueueSize",
        "description": "Publisher Max Recovery Queue Size",
        "value": 100000
      },
      {
        "name": "publisherPollingInterval",
        "description": "Publisher Polling Interval in milliseconds",
        "value": 20000
      },
      {
        "name": "enableAlertCEFFormat",
        "description": "Enable output alert to be in CEF Format",
        "value": "false"
      },
      {
        "name": "enableAAIEnrichment",
        "description": "Enable A&AI Enrichment of generated TCA Alerts",
        "value": "true"
      },
      {
        "name": "aaiEnrichmentHost",
        "description": "A&AI Enrichment API Host name",
        "value": "123.123.123.123"
      },
      {
        "name": "aaiEnrichmentPortNumber",
        "description": "A&AI Enrichment API Host port number",
        "value": 8443
      },
      {
        "name": "aaiEnrichmentProtocol",
        "description": "A&AI Enrichment API protocol",
        "value": "https"
      },
      {
        "name": "aaiEnrichmentUserName",
        "description": "A&AI Enrichment API username",
        "value": "USERNAME"
      },
      {
        "name": "aaiEnrichmentUserPassword",
        "description": "A&AI Enrichment API password",
        "value": "PASSWORD"
      },
      {
        "name": "aaiEnrichmentIgnoreSSLCertificateErrors",
        "description": "A&AI Ignore SSL Certification Errors",
        "value": "true"
      },
      {
        "name": "aaiVNFEnrichmentAPIPath",
        "description": "A&AI VNF Enrichment API Path",
        "value": "/aai/v11/network/generic-vnfs/generic-vnf"
      },
      {
        "name": "aaiVMEnrichmentAPIPath",
        "description": "A&AI VM Enrichment API Path",
        "value": "/aai/v11/search/nodes-query"
      },
      {
        "name": "aaiEnrichmentProxyURL",
        "description": "A&AI Enrichment API Proxy URL",
        "value": "URL"
      },      
      {
        "name": "tca_policy",
        "description": "TCA Policy JSON",
        "value":"{\"domain\":\"measurementsForVfScaling\",\"metricsPerEventName\":[{\"eventName\":\"vFirewallBroadcastPackets\",\"controlLoopSchemaType\":\"VNF\",\"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.vNicUsageArray[*].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.vNicUsageArray[*].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.vNicUsageArray[*].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\"}]}]}", 
        "policy_editable": true,
        "policy_schema": [{
          "name": "domain",
          "description": "Domain name to which TCA needs to be applied",
          "type": "string",
          "value": "measurementsForVfScaling",
          "constraints": [{
            "equal": "measurementsForVfScaling"
          }]
        }, {
          "name": "metricsPerEventName",
          "description": "Contains eventName and threshold details that need to be applied to given eventName",
          "type": "list",
          "entry_schema": [{
            "name": "eventName",
            "description": "Event name to which thresholds need to be applied",
            "type": "string",
            "value": ""
          }, {
            "name": "controlLoopSchemaType",
            "description": "Specifies Control Loop Schema Type for the event Name e.g. VNF, VM",
            "type": "string",
            "value": "",
            "constraints": [{
              "valid_values": ["VM", "VNF"]
            }]
          }, {
            "name": "policyScope",
            "description": "TCA Policy Scope",
            "type": "string",
            "value": ""
          }, {
            "name": "policyName",
            "description": "TCA Policy Scope Name",
            "type": "string",
            "value": ""
          }, {
            "name": "policyVersion",
            "description": "TCA Policy Scope Version",
            "type": "string",
            "value": ""
          }, {
            "name": "thresholds",
            "description": "Thresholds associated with eventName",
            "type": "list",
            "entry_schema": [{
              "name": "closedLoopControlName",
              "description": "Closed Loop Control Name associated with the threshold",
              "type": "string",
              "value": ""
            }, {
              "name": "version",
              "description": "Version number associated with the threshold",
              "type": "string",
              "value": ""
            }, {
              "name": "fieldPath",
              "description": "Json field Path as per CEF message which needs to be analyzed for TCA",
              "type": "string",
              "value": ""
            }, {
              "name": "thresholdValue",
              "description": "Threshold value for the field Path inside CEF message",
              "type": "number",
              "value": ""
            }, {
              "name": "direction",
              "description": "Direction of the threshold",
              "type": "string",
              "value": "",
              "constraints": [{
                "valid_values": [
                      "LESS",
                      "LESS_OR_EQUAL",
                      "GREATER",
                      "GREATER_OR_EQUAL",
                      "EQUAL"
                ]
              }]
            }, {
              "name": "closedLoopEventStatus",
              "description": "Closed Loop Event Status of the threshold",
              "type": "string",
              "value": "",
              "constraints": [{
                "valid_values": ["ONSET", "ABATED"]
              }]
            }, {
              "name": "severity",
              "description": "Threshold Event Severity",
              "value": "",
              "type": "string",
              "constraints": [{
                "valid_values": [
                  "CRITICAL",
                  "MAJOR",
                  "MINOR",
                  "WARNING",
                  "NORMAL"
                ]
              }]
            }]
          }]
        }]
      }
    ],
    "program_preferences": []
  }
}

...

Schema that currently can by used by Policy to generate form to configure Micro-service policy

Expand
{
"MyTestModelNameConfiguration": {
"param1": "java.lang.String:defaultValue-NA:required-true:MANY-false",
"param2": "java.lang.String:defaultValue-NA:required-false:MANY-true",
"param3": "java.lang.String:defaultValue-NA:required-false:MANY-false",
"param4": "java.lang.String:defaultValue-NA:required-false:MANY-true",
"param5": "java.lang.String:defaultValue-NA:required-false:MANY-true",
"param6": "java.lang.String:defaultValue-NA:required-false:MANY-false"
}
}


Micro-service policy (instance)

...

  1. Deployment Artifact design using SDC DCAE-D

    • In this step user should design and add to service 2 deployment artifacts:

      1. AC blueprint (DCAE_BLUEPRINT)

      2. Policy model (example: policy.yaml)

  2. Distribution of CSAR containing Policy model and AC blueprint  (SDC)

    • Both Policy and Clamp should receive Artifact distribution notification.
      1. Gliffy
        namePolicy Model saving (Policy)
        pagePin710
         
      2. Gliffy
        nameCL model saving (Clamp)
        pagePin36

  3. AC configuration (CLAMP)

    Gliffy
    nameGeneric AT Policy Configuration
    pagePin2

    • Policy should extract logic of creating forms for configuring Policy using micro-service policy schema (in this confluence it's called Policy SDK)
    • Clamp should use Policy SDK to create generic form out of saved micro-service policy schema.
  4. Action Policy configuration (CLAMP)

  5. CL submit (CLAMP)

  6. CL deploy (CLAMP)

...