Virtualized Network Function Performance Management Interface (VNF PM) v2

Virtualized Network Function Performance Management Interface (VNF PM)

This interface manages the VNF performance management operations of VNF instances.

This interface allows providing performance management (measurement results collection and notifications) related to VNFs. The detail of this interface is described in SOL002 v3.3.1 clause 6. The parameters of some specific standards need reference SOL013 v3.4.1 clause 5.

POST
/vnfpm/v2/pm_jobs

Create a PM job (v2)

The POST method creates a new PM job. PM jobs group details of performance collection and reporting information.

As the result of successfully executing this method, a new PM job shall have been created, and return detailed PM job data. In case of failure, including an invalid notification endpoint, appropriate error information is provided in the response.

Response Codes

Success

Code

Reason

201 - Created

Resource was created and is ready to use.

Error

Code

Reason

400 - Bad Request

Some content in the request was invalid.

401 - Unauthorized

User must authenticate before making a request.

404 - Not Found

The requested resource could not be found.

406 - Not Acceptable

Not Acceptable, the requested resource is only capable of generating content not acceptable according to the ‘Accept’ headers sent in the request.

409 - Conflict

This operation conflicted with another operation on this resource.

422 - Unprocessable Entity

The content type of the payload body is supported and the payload body of a request contains syntactically correct data (e.g. well-formed JSON) but the data cannot be processed (e.g. because it fails validation against a schema).

503 - Service Unavailable

Service is not available. This is mostly caused by service configuration errors which prevents the service from successful start up.

Request Parameters

Name

In

Type

Description

objectType

body

string

Type of the measured object.

objectInstanceIds

body

array

Identifiers of the measured object instances for which performance information is requested to be collected.

subObjectInstanceIds (Optional)

body

array

Identifiers of the measured object instances in case of a structured measured object.

criteria

body

object

Criteria of the collection of performance information.

performanceMetric (Optional)

body

array

This defines the types of performance metrics for the specified object instances. At least one of the two attributes (performance metric or group) shall be present.

performanceMetricGroup (Optional)

body

array

Group of performance metrics. A metric group is a pre-defined list of metrics, known to the API producer that it can decompose to individual metrics. At least one of the two attributes (performance metric or group) shall be present.

collectionPeriod

body

integer

Specifies the periodicity at which the API producer will collect performance information. The unit shall be seconds.

reportingPeriod

body

integer

Specifies the periodicity at which the API producer will report to the API consumer. about performance information. The unit shall be seconds. The reportingPeriod should be equal to or a multiple of the collectionPeriod.

reportingBoundary (Optional)

body

string

Identifies a time boundary after which the reporting will stop. The boundary shall allow a single reporting as well as periodic reporting up to the boundary(format:date-time).

callbackUri

body

string

The URI of the endpoint to send the notification to.

authentication (Optional)

body

object

Authentication parameters to configure the use of Authorization when sending notifications corresponding to this subscription.

authType

body

array

Defines the types of Authentication/Authorization which the API consumer is willing to accept when receiving a notification. Permitted values:

BASIC: In every HTTP request to the notification endpoint, use HTTP Basic authentication with the client credentials.

OAUTH2_CLIENT_CREDENTIALS: In every HTTP request to the notification endpoint, use an OAuth 2.0 bearer token, obtained using the client credentials grant type.

TLS_CERT: Every HTTP request to the notification endpoint is sent over a mutually authenticated TLS session, i.e. not only the server is authenticated, but also the client is authenticated during the TLS tunnel setup.

paramsBasic (Optional)

body

object

Parameters for authentication/authorization using BASIC. Shall be present if authType is “BASIC” and the contained information has not been provisioned out of band. Shall be absent otherwise.

userName (Optional)

body

string

Username to be used in HTTP Basic authentication. Shall be present if it has not been provisioned out of band.

password (Optional)

body

string

Password to be used in HTTP Basic authentication. Shall be present if it has not been provisioned out of band.

paramsOauth2ClientCredentials (Optional)

body

object

Parameters for authentication/authorization using OAUTH2_CLIENT_CREDENTIALS. Shall be present if authType is “OAUTH2_CLIENT_CREDENTIALS” and the contained information has not been provisioned out of band. Shall be absent otherwise.

clientId (Optional)

body

string

Client identifier to be used in the access token request of the OAuth 2.0 client credentials grant type. Shall be present if it has not been provisioned out of band.

clientPassword (Optional)

body

string

Client password to be used in the access token request of the OAuth 2.0 client credentials grant type. Shall be present if it has not been provisioned out of band.

tokenEndpoint (Optional)

body

string

The token endpoint from which the access token can be obtained. Shall be present if it has not been provisioned out of band.

metadata (Optional)

body

key value pairs

This attribute provides the access information of Prometheus Server.

Request Example

{
    "objectType": "Vnf",
    "objectInstanceIds": ["da459819-a2eb-442b-b9a2-0c1c02466baf"],
    "subObjectInstanceIds": [],
    "criteria": {
        "performanceMetric": [
            "VCpuUsageMeanVnf.25b9b9d0-2461-4109-866e-a7767375415b"],
        "performanceMetricGroup": ["VirtualisedComputeResource"],
        "collectionPeriod": 5,
        "reportingPeriod": 10,
        "reportingBoundary": "2022-08-05T02:24:46Z"
    },
    "callbackUri": "http://localhost:9990/notification/callback/callbackUri",
    "authentication": {
        "authType": [
            "BASIC"
        ],
        "paramsBasic": {
            "password": "ubuntu",
            "userName": "ubuntu"
        }
    },
    "metadata": {
            "monitor": {
                "monitorName": "prometheus",
                "driverType": "external",
                "targetsInfo": [
                        {
                            "prometheusHost": "prometheus.example",
                            "alertmanagerHost": "prometheus.example",
                            "authInfo": {
                                "ssh_username": "ubuntu",
                                "ssh_password": "ubuntu"
                            },
                            "metricsEndpointConfigPath":
                                "/etc/prometheus/prometheus.yml",
                            "alertRuleConfigPath":
                                "/etc/prometheus/rules/tacker-rule.yml",
                            "receiverConfigPath":
                                "/etc/prometheus/alertmanager.yml",
                            "prometheusReloadApiEndpoint":
                                "http://localhost:9990/-/reload",
                            "alertmanagerReloadApiEndpoint":
                                "http://prometheus.example:9093/-/reload"
                        }
                    ]
            }
        }
}

Response Parameters

Name

In

Type

Description

id

body

string

Identifier of this PM job.

objectType

body

string

Type of the measured object.

objectInstanceIds

body

array

Identifiers of the measured object instances for which performance information is requested to be collected.

subObjectInstanceIds (Optional)

body

array

Identifiers of the measured object instances in case of a structured measured object.

criteria

body

object

Criteria of the collection of performance information.

performanceMetric (Optional)

body

array

This defines the types of performance metrics for the specified object instances. At least one of the two attributes (performance metric or group) shall be present.

performanceMetricGroup (Optional)

body

array

Group of performance metrics. A metric group is a pre-defined list of metrics, known to the API producer that it can decompose to individual metrics. At least one of the two attributes (performance metric or group) shall be present.

collectionPeriod

body

integer

Specifies the periodicity at which the API producer will collect performance information. The unit shall be seconds.

reportingPeriod

body

integer

Specifies the periodicity at which the API producer will report to the API consumer. about performance information. The unit shall be seconds. The reportingPeriod should be equal to or a multiple of the collectionPeriod.

reportingBoundary (Optional)

body

string

Identifies a time boundary after which the reporting will stop. The boundary shall allow a single reporting as well as periodic reporting up to the boundary(format:date-time).

callbackUri

body

string

The URI of the endpoint to send the notification to.

reports (Optional)

body

array

Information about available reports collected by this PM job.

href

body

string

The URI where the report can be obtained.

readyTime

body

string

The time when the report was made available.

expiryTime (Optional)

body

string

The time when the report will expire.

fileSize (Optional)

body

integer

The size of the report file in bytes, if known.

_links

body

array

Links for this resource.

self

body

object

URI of this resource.

objects (Optional)

body

array

Links to resources representing the measured object instances for which performance information is collected. Shall be present if the measured object instance information is accessible as a resource.

Response Example

{
    "id": "aa474574-a2eb-442b-b9a2-0c1c02466baf",
    "objectType": "Vnf",
    "objectInstanceIds": ["da459819-a2eb-442b-b9a2-0c1c02466baf"],
    "criteria": {
        "performanceMetric": [
            "VCpuUsageMeanVnf.25b9b9d0-2461-4109-866e-a7767375415b"
        ],
        "performanceMetricGroup": [
            "VirtualisedComputeResource"
        ],
        "collectionPeriod": 5,
        "reportingPeriod": 10,
        "reportingBoundary": "2022-08-05T02:24:46Z"
    },
    "callbackUri":"http://127.0.0.1/",
    "_links": {
        "href": "http://127.0.0.1:9890/vnfpm/v2/pm_jobs/aa474574-a2eb-442b-b9a2-0c1c02466baf"
    },
}
GET
/vnfpm/v2/pm_jobs

Get for PM jobs (v2)

The GET method allows users to filter out PM jobs based on query parameter in the request.

It supports attribute-based filtering and attribute selectors defined in ETSI NFV SOL013 v3.4.1. The detail of attribute-based filtering is described in SOL013 v3.4.1 clause 5.2. The detail of attribute selectors is described in SOL013 v3.4.1 clause 5.3.

An attribute selector allows the API consumer to choose which attributes it wants to be contained in the response. all_fields, fields, exclude_fields and exclude_default can be set as query parameters.

Response Codes

Success

Code

Reason

200 - OK

Request was successful.

Error

Code

Reason

400 - Bad Request

Some content in the request was invalid.

401 - Unauthorized

User must authenticate before making a request.

406 - Not Acceptable

Not Acceptable, the requested resource is only capable of generating content not acceptable according to the ‘Accept’ headers sent in the request.

409 - Conflict

This operation conflicted with another operation on this resource.

Response Parameters

Name

In

Type

Description

id

body

string

Identifier of this PM job.

objectType

body

string

Type of the measured object.

objectInstanceIds

body

array

Identifiers of the measured object instances for which performance information is requested to be collected.

subObjectInstanceIds (Optional)

body

array

Identifiers of the measured object instances in case of a structured measured object.

criteria

body

object

Criteria of the collection of performance information.

performanceMetric (Optional)

body

array

This defines the types of performance metrics for the specified object instances. At least one of the two attributes (performance metric or group) shall be present.

performanceMetricGroup (Optional)

body

array

Group of performance metrics. A metric group is a pre-defined list of metrics, known to the API producer that it can decompose to individual metrics. At least one of the two attributes (performance metric or group) shall be present.

collectionPeriod

body

integer

Specifies the periodicity at which the API producer will collect performance information. The unit shall be seconds.

reportingPeriod

body

integer

Specifies the periodicity at which the API producer will report to the API consumer. about performance information. The unit shall be seconds. The reportingPeriod should be equal to or a multiple of the collectionPeriod.

reportingBoundary (Optional)

body

string

Identifies a time boundary after which the reporting will stop. The boundary shall allow a single reporting as well as periodic reporting up to the boundary(format:date-time).

callbackUri

body

string

The URI of the endpoint to send the notification to.

reports (Optional)

body

array

Information about available reports collected by this PM job.

href

body

string

The URI where the report can be obtained.

readyTime

body

string

The time when the report was made available.

expiryTime (Optional)

body

string

The time when the report will expire.

fileSize (Optional)

body

integer

The size of the report file in bytes, if known.

_links

body

array

Links for this resource.

self

body

object

URI of this resource.

objects (Optional)

body

array

Links to resources representing the measured object instances for which performance information is collected. Shall be present if the measured object instance information is accessible as a resource.

Response Example

[
  {
    "id": "aa474574-a2eb-442b-b9a2-0c1c02466baf",
    "objectType": "Vnf",
    "objectInstanceIds": ["da459819-a2eb-442b-b9a2-0c1c02466baf"],
    "criteria": {
        "performanceMetric": [
            "VCpuUsageMeanVnf.25b9b9d0-2461-4109-866e-a7767375415b"
        ],
        "performanceMetricGroup": [
            "VirtualisedComputeResource"
        ],
        "collectionPeriod": 5,
        "reportingPeriod": 10,
        "reportingBoundary": "2022-08-05T02:24:46Z"
    },
    "callbackUri":"http://127.0.0.1/",
    "_links": {
        "href": "http://127.0.0.1:9890/vnfpm/v2/pm_jobs/aa474574-a2eb-442b-b9a2-0c1c02466baf"
    }
  }
]
GET
/vnfpm/v2/pm_jobs/{pmJobId}

Get a PM job (v2)

The GET method gets an individual PM job.

If the API consumer intends to read information about a particular PM job, it sends a GET request to the “Individual PM job” resource, addressed by the appropriate PM job identifier in its resource URI. The VNFM returns a “200 OK” response to the API consumer, and includes one data structure of type “PmJob” in the payload body. In case of failure, appropriate error information is provided in the response.

Response Codes

Success

Code

Reason

200 - OK

Request was successful.

Error

Code

Reason

400 - Bad Request

Some content in the request was invalid.

401 - Unauthorized

User must authenticate before making a request.

404 - Not Found

The requested resource could not be found.

Request Parameters

Name

In

Type

Description

pmJobId

path

string

Identifier of this PM job.

Response Parameters

Name

In

Type

Description

id

body

string

Identifier of this PM job.

objectType

body

string

Type of the measured object.

objectInstanceIds

body

array

Identifiers of the measured object instances for which performance information is requested to be collected.

subObjectInstanceIds (Optional)

body

array

Identifiers of the measured object instances in case of a structured measured object.

criteria

body

object

Criteria of the collection of performance information.

performanceMetric (Optional)

body

array

This defines the types of performance metrics for the specified object instances. At least one of the two attributes (performance metric or group) shall be present.

performanceMetricGroup (Optional)

body

array

Group of performance metrics. A metric group is a pre-defined list of metrics, known to the API producer that it can decompose to individual metrics. At least one of the two attributes (performance metric or group) shall be present.

collectionPeriod

body

integer

Specifies the periodicity at which the API producer will collect performance information. The unit shall be seconds.

reportingPeriod

body

integer

Specifies the periodicity at which the API producer will report to the API consumer. about performance information. The unit shall be seconds. The reportingPeriod should be equal to or a multiple of the collectionPeriod.

reportingBoundary (Optional)

body

string

Identifies a time boundary after which the reporting will stop. The boundary shall allow a single reporting as well as periodic reporting up to the boundary(format:date-time).

callbackUri

body

string

The URI of the endpoint to send the notification to.

reports (Optional)

body

array

Information about available reports collected by this PM job.

href

body

string

The URI where the report can be obtained.

readyTime

body

string

The time when the report was made available.

expiryTime (Optional)

body

string

The time when the report will expire.

fileSize (Optional)

body

integer

The size of the report file in bytes, if known.

_links

body

array

Links for this resource.

self

body

object

URI of this resource.

objects (Optional)

body

array

Links to resources representing the measured object instances for which performance information is collected. Shall be present if the measured object instance information is accessible as a resource.

Response Example

  {
    "id": "aa474574-a2eb-442b-b9a2-0c1c02466baf",
    "objectType": "Vnf",
    "objectInstanceIds": ["da459819-a2eb-442b-b9a2-0c1c02466baf"],
    "criteria": {
        "performanceMetric": [
            "VCpuUsageMeanVnf.25b9b9d0-2461-4109-866e-a7767375415b"
        ],
        "performanceMetricGroup": [
            "VirtualisedComputeResource"
        ],
        "collectionPeriod": 5,
        "reportingPeriod": 10,
        "reportingBoundary": "2022-08-05T02:24:46Z"
    },
    "callbackUri":"http://127.0.0.1/",
    "_links": {
        "href": "http://127.0.0.1:9890/vnfpm/v2/pm_jobs/aa474574-a2eb-442b-b9a2-0c1c02466baf"
    }
  }
PATCH
/vnfpm/v2/pm_jobs/{pmJobId}

Modify a PM job(v2)

The PATCH method Modifies a PM job.

If the API consumer intends to update the callback URI in a PM job, it sends a PATCH request to the “Individual PM job” resource, including a data structure of type “PmJobModifications” in the payload body. The VNFM returns a “200 OK” response to the API consumer and includes in the payload body a data structure of type “PmJobModifications” to indicate the performed modifications.

Response Codes

Success

Code

Reason

200 - OK

Request was successful.

Error

Code

Reason

400 - Bad Request

Some content in the request was invalid.

401 - Unauthorized

User must authenticate before making a request.

422 - Unprocessable Entity

The content type of the payload body is supported and the payload body of a request contains syntactically correct data (e.g. well-formed JSON) but the data cannot be processed (e.g. because it fails validation against a schema).

Request Parameters

Name

In

Type

Description

pmJobId

path

string

Identifier of this PM job.

callbackUri

body

string

The URI of the endpoint to send the notification to.

authentication (Optional)

body

object

Authentication parameters to configure the use of Authorization when sending notifications corresponding to this subscription.

authType

body

array

Defines the types of Authentication/Authorization which the API consumer is willing to accept when receiving a notification. Permitted values:

BASIC: In every HTTP request to the notification endpoint, use HTTP Basic authentication with the client credentials.

OAUTH2_CLIENT_CREDENTIALS: In every HTTP request to the notification endpoint, use an OAuth 2.0 bearer token, obtained using the client credentials grant type.

TLS_CERT: Every HTTP request to the notification endpoint is sent over a mutually authenticated TLS session, i.e. not only the server is authenticated, but also the client is authenticated during the TLS tunnel setup.

paramsBasic (Optional)

body

object

Parameters for authentication/authorization using BASIC. Shall be present if authType is “BASIC” and the contained information has not been provisioned out of band. Shall be absent otherwise.

userName (Optional)

body

string

Username to be used in HTTP Basic authentication. Shall be present if it has not been provisioned out of band.

password (Optional)

body

string

Password to be used in HTTP Basic authentication. Shall be present if it has not been provisioned out of band.

paramsOauth2ClientCredentials (Optional)

body

object

Parameters for authentication/authorization using OAUTH2_CLIENT_CREDENTIALS. Shall be present if authType is “OAUTH2_CLIENT_CREDENTIALS” and the contained information has not been provisioned out of band. Shall be absent otherwise.

clientId (Optional)

body

string

Client identifier to be used in the access token request of the OAuth 2.0 client credentials grant type. Shall be present if it has not been provisioned out of band.

clientPassword (Optional)

body

string

Client password to be used in the access token request of the OAuth 2.0 client credentials grant type. Shall be present if it has not been provisioned out of band.

tokenEndpoint (Optional)

body

string

The token endpoint from which the access token can be obtained. Shall be present if it has not been provisioned out of band.

Request Example

{
  "callbackUri": "http://localhost:9990/notification/callback/callbackUri"
}

Response Parameters

Name

In

Type

Description

callbackUri

body

string

The URI of the endpoint to send the notification to.

Response Example

{
    "callbackUri": "http://localhost:9990/notification/callback/callbackUri"
}
DELETE
/vnfpm/v2/pm_jobs/{pmJobId}

Delete a PM job (v2)

The DELETE method deletes a PM job.

If the API consumer intends to delete a PM job, it sends a DELETE request to the “Individual PM job” resource addressed by the appropriate PM job identifier in its resource URI. The VNFM returns a response with a “204 No Content” response code and an empty payload body to the API consumer.

Response Codes

Success

Code

Reason

204 - No Content

The server has fulfilled the request by deleting the resource.

Error

Code

Reason

400 - Bad Request

Some content in the request was invalid.

401 - Unauthorized

User must authenticate before making a request.

404 - Not Found

The requested resource could not be found.

Request Parameters

Name

In

Type

Description

pmJobId

path

string

Identifier of this PM job.

GET
/vnfpm/v2/pm_jobs/{pmJobId}/reports/{reportId}

Get individual performance report (v2)

The GET method gets individual performance report.

The API consumer sends to the VNFM a GET request to the URI , in order to read an “Individual performance report” resource. The VNFM returns a “200 OK” response to the API consumer, and includes a data structure of type “PerformanceReport” in the payload body.

Response Codes

Success

Code

Reason

200 - OK

Request was successful.

Error

Code

Reason

400 - Bad Request

Some content in the request was invalid.

401 - Unauthorized

User must authenticate before making a request.

404 - Not Found

The requested resource could not be found.

Request Parameters

Name

In

Type

Description

pmJobId

path

string

Identifier of this PM job.

reportId

path

string

Identifier of this PM job report.

Response Parameters

Name

In

Type

Description

entries

body

array

List of performance information entries.

objectType

body

string

Type of the measured object.

objectInstanceId

body

string

Identifier of the measured object instance for which the performance metric is reported.

subObjectInstanceId (Optional)

body

string

Identifier of the sub-object instance of the measured object instance for which the performance metric is reported.

performanceMetric

body

string

Name of the metric collected.

performanceValues

body

array

List of performance values with associated timestamp.

timeStamp

body

string

Time stamp indicating when the data has been collected.

value

body

string

Value of the metric collected.

context (Optional)

body

key value pairs

Measurement context information related to the measured value.

Response Example

[
  {
    "objectType": "Vnf",
    "objectInstanceId": "da459819-a2eb-442b-b9a2-0c1c02466baf",
    "performanceMetric": "VCpuUsageMeanVnf.25b9b9d0-2461-4109-866e-a7767375415b",
    "performanceValues": {
      "timeStamp": "2022-08-05T02:24:46Z",
      "value": "value_test",
      "context": "{'test': 'test'}"
    }
  }
]