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.
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"
},
}
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"
}
}
]
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"
}
}
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"
}
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. |
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'}"
}
}
]
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"
}
}
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"
}
}
]
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"
}
}
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"
}
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.
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"
}
}
}
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. |