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 (Optional)

body

string

The URI of the endpoint to send the notification to. At least one of the “callbackUri” and “authentication” attributes shall be present in request body.

authentication (Optional)

body

object

Authentication parameters to configure the use of Authorization when sending notifications corresponding to this subscription. At least one of the “callbackUri” and “authentication” attributes shall be present in request body.

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 token, obtained using the client credentials grant type after authenticating using client identifier and client password towards the token endpoint.

OAUTH2_CLIENT_CERT: In every HTTP request to the notification endpoint, use an OAuth 2.0 token, obtained using the client credentials grant type after mutually authenticating using client identifier and X.509 certificates towards the token endpoint.

TLS_CERT is not supported.

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.

paramsOauth2ClientCert (Optional)

body

object

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

clientId

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.

certificateRef

body

object

Fingerprint of the client certificate. The hash function shall use SHA256 or higher. Shall be present if it has not been provisioned out of band.

type

body

string

The type of fingerprint. Permitted values:

x5t#S256: The SHA-256 thumbprint of the X.509 certificate as defined in section 4.1.8 of IETF RFC 7515.

value

body

string

The fingerprint value as defined by the type. Shall be present if it has not been provisioned out of band.

tokenEndpoint

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 (Optional)

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.

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 (Optional)

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 (Optional)

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. However the authentication parameter shall not be present in response 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.

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 (Optional)

body

string

The URI of the endpoint to send the notification to. At least one of the “callbackUri” and “authentication” attributes shall be present in request body.

authentication (Optional)

body

object

Authentication parameters to configure the use of Authorization when sending notifications corresponding to this subscription. At least one of the “callbackUri” and “authentication” attributes shall be present in request body.

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 token, obtained using the client credentials grant type after authenticating using client identifier and client password towards the token endpoint.

OAUTH2_CLIENT_CERT: In every HTTP request to the notification endpoint, use an OAuth 2.0 token, obtained using the client credentials grant type after mutually authenticating using client identifier and X.509 certificates towards the token endpoint.

TLS_CERT is not supported.

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.

paramsOauth2ClientCert (Optional)

body

object

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

clientId

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.

certificateRef

body

object

Fingerprint of the client certificate. The hash function shall use SHA256 or higher. Shall be present if it has not been provisioned out of band.

type

body

string

The type of fingerprint. Permitted values:

x5t#S256: The SHA-256 thumbprint of the X.509 certificate as defined in section 4.1.8 of IETF RFC 7515.

value

body

string

The fingerprint value as defined by the type. Shall be present if it has not been provisioned out of band.

tokenEndpoint

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 (Optional)

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'}"
    }
  }
]
POST
/vnfpm/v2/thresholds

Create a PM threshold (v2)

The POST method creates a new PM threshold.

As the result of successfully executing this method, a new PM threshold shall have been created, and return detailed PM threshold 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.

objectInstanceId

body

string

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

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

body

string

This defines the types of performance metrics associated with the threshold.

thresholdType

body

string

Type of threshold. This attribute determines which other attributes are present in the data structure. “SIMPLE: Single-valued static threshold” is permitted.

simpleThresholdDetails (Optional)

body

object

Details of a simple threshold. Shall be present if thresholdType=”SIMPLE”.

thresholdValue

body

number

The threshold value. Shall be represented as a floating point number.

hysteresis

body

number

The hysteresis of the threshold. Shall be represented as a non-negative floating point number.

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 token, obtained using the client credentials grant type after authenticating using client identifier and client password towards the token endpoint.

OAUTH2_CLIENT_CERT: In every HTTP request to the notification endpoint, use an OAuth 2.0 token, obtained using the client credentials grant type after mutually authenticating using client identifier and X.509 certificates towards the token endpoint.

TLS_CERT is not supported.

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.

paramsOauth2ClientCert (Optional)

body

object

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

clientId

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.

certificateRef

body

object

Fingerprint of the client certificate. The hash function shall use SHA256 or higher. Shall be present if it has not been provisioned out of band.

type

body

string

The type of fingerprint. Permitted values:

x5t#S256: The SHA-256 thumbprint of the X.509 certificate as defined in section 4.1.8 of IETF RFC 7515.

value

body

string

The fingerprint value as defined by the type. Shall be present if it has not been provisioned out of band.

tokenEndpoint

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

body

key value pairs

This attribute provides the access information of Prometheus Server.

Request Example

{
    "objectType": "Vnf",
    "objectInstanceId": "4fcf78d6-52d9-4b6a-b3a6-49b2bef65843",
    "criteria": {
        "performanceMetric": "VCpuUsageMeanVnf.4fcf78d6-52d9-4b6a-b3a6-49b2bef65843",
        "thresholdType": "SIMPLE",
        "simpleThresholdDetails": {
            "thresholdValue": 55,
            "hysteresis": 30
        }
    },
    "callbackUri": "http://localhost:9990/notification/callbackuri/4fcf78d6-52d9-4b6a-b3a6-49b2bef65843",
    "authentication": {
        "authType": [
            "BASIC"
        ],
        "paramsBasic": {
            "password": "ubuntu",
            "userName": "ubuntu"
        }
    },
    "metadata": {
        "monitoring": {
            "monitorName": "prometheus",
            "driverType": "external",
            "targetsInfo": [
                {
                    "prometheusHost": "prometheus.example",
                    "prometheusHostPort": 50022,
                    "authInfo": {
                        "ssh_username": "ubuntu",
                        "ssh_password": "ubuntu"
                    },
                    "alertRuleConfigPath":
                        "/etc/prometheus/rule",
                    "prometheusReloadApiEndpoint":
                        "http://prometheus.example:9990/-/reload",
                }
            ]
        }
    }
}

Response Parameters

Name

In

Type

Description

id

body

string

Identifier of this PM threshold.

objectType

body

string

Type of the measured object.

objectInstanceId

body

string

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

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

body

string

This defines the types of performance metrics associated with the threshold.

thresholdType

body

string

Type of threshold. This attribute determines which other attributes are present in the data structure. “SIMPLE: Single-valued static threshold” is permitted.

simpleThresholdDetails (Optional)

body

object

Details of a simple threshold. Shall be present if thresholdType=”SIMPLE”.

thresholdValue

body

number

The threshold value. Shall be represented as a floating point number.

hysteresis

body

number

The hysteresis of the threshold. Shall be represented as a non-negative floating point number.

callbackUri

body

string

The URI of the endpoint to send the notification to.

_links

body

array

Links for this resource.

self

body

object

URI of this resource.

object (Optional)

body

object

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": "bb474274-c5eb-442b-e2a2-0c1c02437bac",
    "objectType": "Vnf",
    "objectInstanceId": "4fcf78d6-52d9-4b6a-b3a6-49b2bef65843",
    "criteria": {
        "performanceMetric": "VCpuUsageMeanVnf.4fcf78d6-52d9-4b6a-b3a6-49b2bef65843",
        "thresholdType": "SIMPLE",
        "simpleThresholdDetails": {
            "thresholdValue": 55,
            "hysteresis": 30
        }
    },
    "callbackUri": "http://localhost:9990/notification/callbackuri/4fcf78d6-52d9-4b6a-b3a6-49b2bef65843",
    "_link": {
        "self": "http://127.0.0.1:9890/vnfpm/v2/thresholds/bb474274-c5eb-442b-e2a2-0c1c02437bac",
        "object": "http://127.0.0.1:9890/vnflcm/v2/vnf_instances/4fcf78d6-52d9-4b6a-b3a6-49b2bef65843"
    }
}
GET
/vnfpm/v2/thresholds

Get for PM thresholds (v2)

The GET method allows users to filter out PM thresholds 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.

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.

Response Parameters

Name

In

Type

Description

id

body

string

Identifier of this PM threshold.

objectType

body

string

Type of the measured object.

objectInstanceId

body

string

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

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

body

string

This defines the types of performance metrics associated with the threshold.

thresholdType

body

string

Type of threshold. This attribute determines which other attributes are present in the data structure. “SIMPLE: Single-valued static threshold” is permitted.

simpleThresholdDetails (Optional)

body

object

Details of a simple threshold. Shall be present if thresholdType=”SIMPLE”.

thresholdValue

body

number

The threshold value. Shall be represented as a floating point number.

hysteresis

body

number

The hysteresis of the threshold. Shall be represented as a non-negative floating point number.

callbackUri

body

string

The URI of the endpoint to send the notification to.

_links

body

array

Links for this resource.

self

body

object

URI of this resource.

object (Optional)

body

object

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": "bb474274-c5eb-442b-e2a2-0c1c02437bac",
    "objectType": "Vnf",
    "objectInstanceId": "4fcf78d6-52d9-4b6a-b3a6-49b2bef65843",
    "criteria": {
        "performanceMetric": "VCpuUsageMeanVnf.4fcf78d6-52d9-4b6a-b3a6-49b2bef65843",
        "thresholdType": "SIMPLE",
        "simpleThresholdDetails": {
            "thresholdValue": 55,
            "hysteresis": 30
        }
    },
    "callbackUri": "http://localhost:9990/notification/callbackuri/4fcf78d6-52d9-4b6a-b3a6-49b2bef65843",
    "_link": {
        "self": "http://127.0.0.1:9890/vnfpm/v2/thresholds/bb474274-c5eb-442b-e2a2-0c1c02437bac",
        "object": "http://127.0.0.1:9890/vnflcm/v2/vnf_instances/4fcf78d6-52d9-4b6a-b3a6-49b2bef65843"
    }
  }
]
GET
/vnfpm/v2/thresholds/{thresholdId}

Get a PM threshold (v2)

The GET method gets an individual PM threshold.

If the API consumer intends to read information about a particular PM threshold, it sends a GET request to the “Individual PM threshold” resource, addressed by the appropriate PM threshold identifier in its resource URI. The VNFM returns a “200 OK” response to the API consumer, and includes one data structure of type “PmThreshold” 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

thresholdId

path

string

Identifier of this PM threshold.

Response Parameters

Name

In

Type

Description

id

body

string

Identifier of this PM threshold.

objectType

body

string

Type of the measured object.

objectInstanceId

body

string

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

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

body

string

This defines the types of performance metrics associated with the threshold.

thresholdType

body

string

Type of threshold. This attribute determines which other attributes are present in the data structure. “SIMPLE: Single-valued static threshold” is permitted.

simpleThresholdDetails (Optional)

body

object

Details of a simple threshold. Shall be present if thresholdType=”SIMPLE”.

thresholdValue

body

number

The threshold value. Shall be represented as a floating point number.

hysteresis

body

number

The hysteresis of the threshold. Shall be represented as a non-negative floating point number.

callbackUri

body

string

The URI of the endpoint to send the notification to.

_links

body

array

Links for this resource.

self

body

object

URI of this resource.

object (Optional)

body

object

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": "bb474274-c5eb-442b-e2a2-0c1c02437bac",
    "objectType": "Vnf",
    "objectInstanceId": "4fcf78d6-52d9-4b6a-b3a6-49b2bef65843",
    "criteria": {
        "performanceMetric": "VCpuUsageMeanVnf.4fcf78d6-52d9-4b6a-b3a6-49b2bef65843",
        "thresholdType": "SIMPLE",
        "simpleThresholdDetails": {
            "thresholdValue": 55,
            "hysteresis": 30
        }
    },
    "callbackUri": "http://localhost:9990/notification/callbackuri/4fcf78d6-52d9-4b6a-b3a6-49b2bef65843",
    "_link": {
        "self": "http://127.0.0.1:9890/vnfpm/v2/thresholds/bb474274-c5eb-442b-e2a2-0c1c02437bac",
        "object": "http://127.0.0.1:9890/vnflcm/v2/vnf_instances/4fcf78d6-52d9-4b6a-b3a6-49b2bef65843"
    }
}
PATCH
/vnfpm/v2/thresholds/{thresholdId}

Modify a PM threshold(v2)

The PATCH method Modifies a PM threshold.

If the API consumer intends to update the callback URI in a PM threshold, it sends a PATCH request to the “Individual PM threshold” resource, including a data structure of type “ThresholdModifications” 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 “ThresholdModifications” to indicate the performed modifications. However the authentication parameter shall not be present in response 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.

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

thresholdId

path

string

Identifier of this PM threshold.

callbackUri (Optional)

body

string

The URI of the endpoint to send the notification to. At least one of the “callbackUri” and “authentication” attributes shall be present in request body.

authentication (Optional)

body

object

Authentication parameters to configure the use of Authorization when sending notifications corresponding to this subscription. At least one of the “callbackUri” and “authentication” attributes shall be present in request body.

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 token, obtained using the client credentials grant type after authenticating using client identifier and client password towards the token endpoint.

OAUTH2_CLIENT_CERT: In every HTTP request to the notification endpoint, use an OAuth 2.0 token, obtained using the client credentials grant type after mutually authenticating using client identifier and X.509 certificates towards the token endpoint.

TLS_CERT is not supported.

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.

paramsOauth2ClientCert (Optional)

body

object

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

clientId

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.

certificateRef

body

object

Fingerprint of the client certificate. The hash function shall use SHA256 or higher. Shall be present if it has not been provisioned out of band.

type

body

string

The type of fingerprint. Permitted values:

x5t#S256: The SHA-256 thumbprint of the X.509 certificate as defined in section 4.1.8 of IETF RFC 7515.

value

body

string

The fingerprint value as defined by the type. Shall be present if it has not been provisioned out of band.

tokenEndpoint

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 (Optional)

body

string

The URI of the endpoint to send the notification to.

Response Example

{
    "callbackUri": "http://localhost:9990/notification/callback/callbackUri"
}
DELETE
/vnfpm/v2/thresholds/{thresholdId}

Delete a PM threshold (v2)

The DELETE method deletes a PM threshold.

If the API consumer intends to delete a PM threshold, it sends a DELETE request to the “Individual PM threshold” resource addressed by the appropriate PM threshold 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

thresholdId

path

string

Identifier of this PM threshold.

Virtualized Network Function Performance Management Notification Interface

This interface is notification about VNF performance management.

This interface is a notification that is sent to the endpoint configured as the callbackUri when a performance management job or performance management threshold is created, when an event occurs that indicates a threshold crossing or the availability of performance information for a PM job. The detail of this interface is described in SOL002 v3.3.1 clause 6.

POST
< callbackUri (provided by API consumer) >

PerformanceInformationAvailableNotification

The POST method delivers a notification about performance information availability from Tacker to the API consumer.

When an event occurs indicating the availability of performance information for a PM job, Tacker sends this notification to the endpoint configured in the callbackUri of the “Create a PM job (v2)” API.

Response Codes

Tacker expects a “204 No Content” response from the endpoint of the API consumer. If any other response code is returned, it will be treated as an error.

Success

Code

Reason

204 - No Content

The notification has been delivered successfully.

Request Parameters

Name

In

Type

Description

id

body

string

Identifier of this notification.

notificationType

body

string

Discriminator for the different notification types. Set to “PerformanceInformationAvailableNotification” for this notification type.

timeStamp

body

string

Date and time of the generation of the notification.

pmJobId

body

string

Identifier of the PM job for which performance information is available.

objectType

body

string

Type of the measured object.

objectInstanceId

body

string

Identifier of the measured object instance.

subObjectInstanceIds (Optional)

body

array

Identifiers of the sub-object instances of the measured object instance for which the measurements have been taken.

_links

body

object

Links to resources related to this notification.

objectInstance (Optional)

body

object

Link to the resource representing the measured object instance to which the notified change applies. Shall be present if the measured object instance information is accessible as a resource.

pmJob

body

object

Link to the resource that represents the PM job for which performance information is available.

performanceReport

body

object

Link from which the available performance information of data type “PerformanceReport” can be obtained.

Request Example

{
    "id": "29de3afc-0547-4f43-b921-1d6ceaf16bd4",
    "notificationType": "PerformanceInformationAvailableNotification",
    "timeStamp": "2023-11-20T14:25:04Z",
    "pmJobId": "84b227dc-5ed0-411a-aff6-c830528eaec5",
    "objectType": "Vnf",
    "objectInstanceId": "a0205e7c-fdeb-4f6c-b266-962246e32626",
    "_links": {
        "objectInstance": {
            "href": "http://127.0.0.1:9890/vnflcm/v2/vnf_instances/a0205e7c-fdeb-4f6c-b266-962246e32626"
        },
        "pmJob": {
            "href": "http://127.0.0.1:9890/vnfpm/v2/pm_jobs/84b227dc-5ed0-411a-aff6-c830528eaec5"
        },
        "performanceReport": {
            "href": "http://127.0.0.1:9890/vnfpm/v2/pm_jobs/84b227dc-5ed0-411a-aff6-c830528eaec5/reports/eab93857-eb72-49ce-9173-628a3f00ba2d"
        }
    }
}
POST
< callbackUri (provided by API consumer) >

ThresholdCrossedNotification

The POST method delivers a notification about threshold crossing from Tacker to the API consumer.

When a performance threshold is crossing for a VNF configured to be monitored by VNF performance management threshold, Tacker sends this notification to the endpoint configured in the callbackUri of the “Create a PM threshold (v2)” API.

Response Codes

Tacker expects a “204 No Content” response from the endpoint of the API consumer. If any other response code is returned, it will be treated as an error.

Success

Code

Reason

204 - No Content

The notification has been delivered successfully.

Request Parameters

Name

In

Type

Description

id

body

string

Identifier of this notification.

notificationType

body

string

Discriminator for the different notification types. Set to “ThresholdCrossedNotification” for this notification type.

timeStamp

body

string

Date and time of the generation of the notification.

thresholdId

body

string

Identifier of the threshold which has been crossed.

crossingDirection

body

string

An indication of whether the threshold was crossed in upward or downward direction.

objectType

body

string

Type of the measured object.

objectInstanceId

body

string

Identifier of the measured object instance.

subObjectInstanceId (Optional)

body

string

Identifier of the sub-object of the measured object to which the measurement applies.

performanceMetric

body

string

Performance metric associated with the threshold.

performanceValue

body

string

Value of the metric that resulted in threshold crossing.

context (Optional)

body

string

Measurement context information related to the measured value.

_links

body

object

Links to resources related to this notification.

objectInstance (Optional)

body

object

Link to the resource representing the measured object instance to which the notified change applies. Shall be present if the measured object instance information is accessible as a resource.

threshold

body

object

Link to the resource that represents the threshold that was crossed.

Request Example

{
    "id": "0aa6500e-cdee-41f7-aadd-af80f7622ebc",
    "notificationType": "ThresholdCrossedNotification",
    "timeStamp": "2023-12-06T09:08:06Z",
    "thresholdId": "135db472-4f7b-4d55-abaf-27a3ab4d7ba1",
    "crossingDirection": "DOWN",
    "objectType": "Vnf",
    "objectInstanceId": "c21fd71b-2866-45f6-89d0-70c458a5c32e",
    "performanceMetric": "VCpuUsageMeanVnf.c21fd71b-2866-45f6-89d0-70c458a5c32e",
    "performanceValue": "0.0004428400000000465",
    "_links": {
        "objectInstance": {
            "href": "http://127.0.0.1:9890/vnflcm/v2/vnf_instances/c21fd71b-2866-45f6-89d0-70c458a5c32e"
        },
        "threshold": {
            "href": "http://127.0.0.1:9890/vnfpm/v2/thresholds/135db472-4f7b-4d55-abaf-27a3ab4d7ba1"
        }
    }
}
GET
< callbackUri (provided by API consumer) >

Test the notification endpoint (VNF PM)

The GET method test the notification endpoint.

When a PM job is created using the “Create a PM job (v2)” API or a PM threshold is created using the “Create a PM threshold (v2)” API, Tacker sends this notification to the endpoint configured with callbackUri to confirm communication.

Response Codes

Tacker expects a “204 No Content” response from the endpoint of the API consumer. If any other response code is returned, it will be treated as an error.

Success

Code

Reason

204 - No Content

The notification has been delivered successfully.