Versions Compared

Key

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

...

To publish a file to the PM-Mapper we can use the following example curl. Where <filename> Must begin with A or C and the file extension must be xml.


white
Panel
borderColorwhite
borderWidth20
borderColor


Expand
titleExample type A file
<?xml version="1.0" encoding="UTF-8"?>
<measCollecFile xmlns="http://www.3gpp.org/ftp/specs/archive/32_series/32.435#measCollec">
<fileHeader dnPrefix="some dnPrefix" vendorName="Acme Ltd"
fileFormatVersion="32.435 V10.0">
<fileSender localDn="Dublin"/>
<measCollec beginTime="2018-10-02T12:00:00+01:00"/>
</fileHeader>
<measData>
<managedElement swVersion="r0.1" localDn="Dublin"/>
<measInfo measInfoId="some measInfoId">
<job jobId="some Job Id"/>
<granPeriod endTime="2018-10-02T12:15:00Z" duration="PT900S"/>
<repPeriod duration="PT900S"/>
<measType p="1">a</measType>
<measType p="2">b</measType>
<measType p="3">c</measType>
<measValue measObjLdn="some measObjLdn">
<r p="1">86</r>
<r p="2">67</r>
<r p="3">14</r>
<suspect>false</suspect>
</measValue>
</measInfo>
</measData>
<fileFooter>
<measCollec endTime="2018-10-02T12:15:00+01:00"/>
</fileFooter>
</measCollecFile>
Panel
borderWidth20


Code Block
languagebash
themeEmacs
curl -k -X PUT https://dcae-pm-mapper:8443/delivery/<filename> -H 'X-DMAAP-DR-META:{"productName": "AcmeNode","vendorName": "Acme","lastEpochMicrosec": "1538478000000","sourceName": "oteNB5309","startEpochMicrosec": "1538478900000","timeZoneOffset": "UTC+05:00","location": "ftpes://127.0.0.1:22/ftp/rop/A20161224.1045-1100.bin.gz","compression": "gzip","fileFormatType": "org.3GPP.32.435#measCollec","fileFormatVersion": "V9"}' -H "Content-Type:application/xml" --data-binary @<filename> -H 'X-ONAP-RequestID: 12345' -H 'X-DMAAP-DR-PUBLISH-ID: 12345'


Note
titleNote
The productName and targetVendor specified in X-DMAAP-DR-META must match the nfType and vendor specified during configuration of the PM-Mapper

We can then check that the XML has been processed and published to Message Router as a VES event by curling the PM-Mapper topic on Message Router.

We first need to set up a subscriber to the PM-Mapper topic as this is not set up by default. We can do this with the following curl to Bus Controller:

Code Block
languagebash
themeEmacs
curl -X POST http://dmaap-bc:8080/webapi/mr_clients -H "Content-Type:application/json" --data @sub-client.json


Expand
titlesub-client.json


Code Block
themeEmacs
{
"dcaeLocationName": "san-franscisco",
"fqtn": "org.onap.dmaap.mr.PM_MAPPER",
"clientIdentity": "dcae@dcae.onap.org",
"action": "sub"
}


Once the subscriber is set up, we can curl the topic on Message Router to retrieve the published event:

Code Block
languagebash
themeEmacs
curl -k https://message-router:3905/events/org.onap.dmaap.mr.PM_MAPPER -u 'dcae@dcae.onap.org:<dcae_password>'

This VES event can then be compared to the filter specified during configuration of the PM-Mapper to verify that only the specified counters have been published.

Expand
titleExample key/value configuration in consul

Code Block
themeEmacs
{
  "pm-mapper-filter": {
    "filters": [
      {
        "pmDefVsn": "1.8",
        "nfType": "AcmeNode",
        "vendor": "Acme",
        "measTypes": [
          "a",
          "c"
        ]
      }
    ]
  },
  "trust_store_pass_path": "/opt/app/pm-mapper/etc/cert/trust.pass",
  "key_store_path": "/opt/app/pm-mapper/etc/cert/cert.jks.b64",
  "streams_subscribes": {
    "dmaap_subscriber": {
      "type": "data_router",
      "dmaap_info": {
        "username": "username",
        "password": "password",
        "location": "san-francisco",
        "delivery_url": "https://dcae-pm-mapper:8443/delivery",
        "subscriber_id": "1"
      }
    }
  },
  "trust_store_path": "/opt/app/pm-mapper/etc/cert/trust.jks.b64",
  "streams_publishes": {
    "dmaap_publisher": {
      "aaf_password": "password",
      "type": "message_router",
      "dmaap_info": {
        "topic_url": "http://message-router:3904/events/org.onap.dmaap.mr.PM_MAPPER",
        "client_role": "org.onap.dmaap.mr.PM_MAPPER.pub",
        "location": "san-francisco",
        "client_id": "dcae@dcae.onap.org"
      },
      "aaf_username": "username"
    }
  },
  "dmaap_dr_delete_endpoint": "https://dmaap-dr-node:8443/delete",
  "key_store_pass_path": "/opt/app/pm-mapper/etc/cert/jks.pass",
  "enable_http": false,
  "dmaap_dr_feed_name": "bulk_pm_feed"
}



Using the example type A file above, and the example key/value configuration in consul, the PM Mapper will produce the following VES output, note that only counter "a" and "c" were mapped, as specified in the filter configuration.

Expand
titleExample VES output based on above configuration


Code Block
themeEmacs
{
  "event": {
    "commonEventHeader": {
      "domain": "perf3gpp",
      "eventId": "f544c442-9dc1-41d4-8f0d-6567e1ea7729",
      "sequence": 0,
      "eventName": "perf3gpp_AcmeNode-Acme_pmMeasResult",
      "sourceName": "oteNB5309",
      "reportingEntityName": "",
      "priority": "Normal",
      "startEpochMicrosec": 1538478000000,
      "lastEpochMicrosec": 1538478900000,
      "version": "4.0",
      "vesEventListenerVersion": "7.1",
      "timeZoneOffset": "UTC+05:00"
    },
    "perf3gppFields": {
      "perf3gppFieldsVersion": "1.0",
      "measDataCollection": {
        "granularityPeriod": 1538482500000,
        "measuredEntityUserName": "",
        "measuredEntityDn": "Dublin",
        "measuredEntitySoftwareVersion": "r0.1",
        "measInfoList": [
          {
            "measInfoId": {
              "sMeasInfoId": "some measInfoId"
            },
            "measTypes": {
              "sMeasTypesList": [
                "a",
                "c"
              ]
            },
            "measValuesList": [
              {
                "measObjInstId": "some measObjLdn",
                "suspectFlag": "false",
                "measResults": [
                  {
                    "p": 1,
                    "sValue": "86"
                  },
                  {
                    "p": 3,
                    "sValue": "14"
                  }
                ]
              }
            ]
          }
        ]
      }
    }
  }
}


...

Configuration of the service consists of generating an inputs file (YAML) which will be used as part of the Cloudify install. The PM-Mapper blueprints were designed with sane defaults for the majority of the fields.
Below you will find some examples of fields which can be configured, and some of the fields which must be configured.

PropertySample ValueDescriptionRequired
aaf_usernamedcae@dcae.onap.orgIn the Dublin release information about the AAF user must be provided to enable publishing to authenticated topics.Yes
aaf_password<dcae_password>This is the password for the given user e.g.  The <dcae_password> is dcae@dcae.onap.org's password.Yes
enable_httptrueBy default, the PM-Mapper will only allow inbound queries over HTTPS. However, it is possible to configure it to enable HTTP also.No
tag_versionnexus3.onap.org:10001/onap/org.onap.dcaegen2.services.pm-mapper:<version>By default the latest Docker Images will be used when deploying the PM-Mapper.  Replace <version> with the desired Docker image version.No
pm-mapper-filter{"filters": [{"pmDefVsn":"targetVersion", "nfType":"targetNodeType", "vendor":"targetVendor", "measTypes":["targetMeasType"]}]}The default behavior of the PM-Mapper is to map all measType in the received PM XML files, however, it's possible to provide filtering configuration which will reduce the VES event to the counters that the designer has expressed interest in. In this provided example a VES event containing the "targetMeasType" will only be generated and published if the following conditions are true:
  • The vendor of the node sending the file is "targetVendor"
  • The type of the node sending the file is "targetNodeType"

Additional Information on the filter model can be found here.

No


Expand
titleSample cloudify configuration input


Code Block
languageyml
themeRDark
titleinputs.yaml
aaf_username: dcae@dcae.onap.org

aaf_password: demo123456!

enable_http: false

tag_version: nexus3.onap.org:10001/onap/org.onap.dcaegen2.services.pm-mapper:1.0.01

pm-mapper-filter: {"filters": []}


...