Commit 6e9403a4 authored by Elian Kraja's avatar Elian Kraja
Browse files

Initial work on VNF Performance Management

parent 5124b1f8
*** Settings ***
Library HttpLibrary.HTTP
Library JSONSchemaLibrary schemas/
Resource environment/generic.txt # Generic Parameters
Library JSONLibrary
Resource environment/IndividualPmJob.txt
*** Test Cases ***
GET Individual PM Job
Log Trying to get a Pm Job present in the NFVO Catalogue
Create HTTP Context ${NFVO_HOST}:${NFVO_PORT} ${NFVO_SCHEMA}
Set Request Header Accept ${ACCEPT_JSON}
Run Keyword If ${AUTH_USAGE} == 1 Set Request Header Authorization ${AUTHORIZATION}
GET ${apiRoot}/${apiName}/${apiVersion}/pm_jobs/${pmJobId}
Response Status Code Should Equal 200
${result}= Get Response Body
${json}= evaluate json.loads('''${result}''') json
Response Header Should Equal Content-Type ${CONTENT_TYPE_JSON}
Log Trying to validate response
Validate Json PmJob.schema.json ${json}
Log Validation OK
GET Individual PM Job - Negative (Not Found)
Log Trying to perform a negative get, using erroneous PM Job identifier
Create HTTP Context ${NFVO_HOST}:${NFVO_PORT} ${NFVO_SCHEMA}
Set Request Header Accept ${ACCEPT_JSON}
Run Keyword If ${AUTH_USAGE} == 1 Set Request Header Authorization ${AUTHORIZATION}
GET ${apiRoot}/${apiName}/${apiVersion}/pm_jobs/${erroneousPmJobId}
Response Status Code Should Equal 404
Log Received 404 Not Found as expected
${problemDetails}= Get Response Body
${json}= evaluate json.loads('''${problemDetails}''') json
Response Header Should Equal Content-Type ${CONTENT_TYPE_JSON}
Log Trying to validate ProblemDetails
Validate Json ProblemDetails.schema.json ${json}
Log Validation OK
GET Individual PM Job - Negative (Unauthorized: Wrong Token)
Log Trying to perform a negative get, using wrong authorization bearer
Pass Execution If ${AUTH_USAGE} == 0 Skipping test as NFVO is not supporting authentication
Create HTTP Context ${NFVO_HOST}:${NFVO_PORT} ${NFVO_SCHEMA}
Set Request Header Accept ${ACCEPT_JSON}
Set Request Header Authorization ${NEG_AUTHORIZATION}
GET ${apiRoot}/${apiName}/${apiVersion}/pm_jobs/${pmJobId}
Response Status Code Should Equal 401
Log Received 401 Unauthorized as expected
${problemDetails}= Get Response Body
${json}= evaluate json.loads('''${problemDetails}''') json
Response Header Should Equal Content-Type ${CONTENT_TYPE_JSON}
Log Trying to validate ProblemDetails
Validate Json ProblemDetails.schema.json ${json}
Log Validation OK
GET Individual PM Job - Negative (Unauthorized: No Token)
Log Trying to perform a negative get, without authentication token.
Pass Execution If ${AUTH_USAGE} == 0 Skipping test as NFVO is not supporting authentication
Create HTTP Context ${NFVO_HOST}:${NFVO_PORT} ${NFVO_SCHEMA}
Set Request Header Accept ${ACCEPT_JSON}
GET ${apiRoot}/${apiName}/${apiVersion}/pm_jobs/${pmJobId}
Response Status Code Should Equal 401
Log Received 401 Unauthorized as expected
${problemDetails}= Get Response Body
${json}= evaluate json.loads('''${problemDetails}''') json
Response Header Should Equal Content-Type ${CONTENT_TYPE_JSON}
Log Trying to validate ProblemDetails
Validate Json ProblemDetails.schema.json ${json}
Log Validation OK
POST Individual PM Job - (Method not implemented)
Log Trying to perform a POST (method should not be implemented)
Create HTTP Context ${NFVO_HOST}:${NFVO_PORT} ${NFVO_SCHEMA}
Set Request Header Accept ${ACCEPT_JSON}
Run Keyword If ${AUTH_USAGE} == 1 Set Request Header Authorization ${AUTHORIZATION}
POST ${apiRoot}/${apiName}/${apiVersion}/pm_jobs/${pmJobId}
Response Status Code Should Equal 405
Log Received 405 Method not implemented as expected
PUT Individual PM Job - (Method not implemented)
Log Trying to perform a PUT. This method should not be implemented
Create HTTP Context ${NFVO_HOST}:${NFVO_PORT} ${NFVO_SCHEMA}
Set Request Header Accept ${ACCEPT_JSON}
Run Keyword If ${AUTH_USAGE} == 1 Set Request Header Authorization ${AUTHORIZATION}
PUT ${apiRoot}/${apiName}/${apiVersion}/pm_jobs/${pmJobId}
Response Status Code Should Equal 405
Log Received 405 Method not implemented as expected
PATCH Individual PM Job - (Method not implemented)
Log Trying to perform a PATCH. This method should not be implemented
Create HTTP Context ${NFVO_HOST}:${NFVO_PORT} ${NFVO_SCHEMA}
Set Request Header Accept ${ACCEPT_JSON}
Run Keyword If ${AUTH_USAGE} == 1 Set Request Header Authorization ${AUTHORIZATION}
Http Request PATCH ${apiRoot}/${apiName}/${apiVersion}/pm_jobs/${pmJobId}
Response Status Code Should Equal 405
Log Received 405 Method not implemented as expected
DELETE Individual PM Job - (Method not implemented)
Log Trying to delete an existing PM Job
Create HTTP Context ${NFVO_HOST}:${NFVO_PORT} ${NFVO_SCHEMA}
Set Request Header Accept ${ACCEPT_JSON}
Run Keyword If ${AUTH_USAGE} == 1 Set Request Header Authorization ${AUTHORIZATION}
DELETE ${apiRoot}/${apiName}/${apiVersion}/pm_jobs/${pmJobId}
Response Status Code Should Equal 204
Log Received 204 No Content as expected
Log Trying to delete the same resource again
Create HTTP Context ${NFVO_HOST}:${NFVO_PORT} ${NFVO_SCHEMA}
Set Request Header Accept ${ACCEPT_JSON}
Run Keyword If ${AUTH_USAGE} == 1 Set Request Header Authorization ${AUTHORIZATION}
DELETE ${apiRoot}/${apiName}/${apiVersion}/pm_jobs/${pmJobId}
Response Status Code Should Equal 404
Log Received 404 Not Found as expected
*** Settings ***
Library HttpLibrary.HTTP
Library JSONSchemaLibrary schemas/
Resource environment/generic.txt # Generic Parameters
Library JSONLibrary
Library OperatingSystem
Resource environment/pmJobs.txt
*** Test Cases ***
GET all Pm Jobs
Log Trying to get all PM Jobs present in the NFVO Catalogue
Create HTTP Context ${NFVO_HOST}:${NFVO_PORT} ${NFVO_SCHEMA}
Set Request Header Accept ${ACCEPT_JSON}
Run Keyword If ${AUTH_USAGE} == 1 Set Request Header Authorization ${AUTHORIZATION}
GET ${apiRoot}/${apiName}/${apiVersion}/pm_jobs
Response Status Code Should Equal 200
${result}= Get Response Body
${json}= evaluate json.loads('''${result}''') json
Response Header Should Equal Content-Type ${CONTENT_TYPE_JSON}
Log Trying to validate response
Validate Json PmJob.schema.json ${json}
Log Validation OK
GET all Pm Jobs - Filter
Log Trying to get all PM Jobs present in the NFVO Catalogue, using filter params
Create HTTP Context ${NFVO_HOST}:${NFVO_PORT} ${NFVO_SCHEMA}
Set Request Header Accept ${ACCEPT_JSON}
Run Keyword If ${AUTH_USAGE} == 1 Set Request Header Authorization ${AUTHORIZATION}
GET ${apiRoot}/${apiName}/${apiVersion}/pm_jobs?${POS_FILTER}
Response Status Code Should Equal 200
${result}= Get Response Body
${json}= evaluate json.loads('''${result}''') json
Response Header Should Equal Content-Type ${CONTENT_TYPE_JSON}
Log Trying to validate response
Validate Json vnfPkgInfo.schema.json ${json}
Log Validation OK
GET all Pm Jobs - Negative (wronge filter name)
Log Trying to get all PM Jobs present in the NFVO Catalogue, using an erroneous filter param
Create HTTP Context ${NFVO_HOST}:${NFVO_PORT} ${NFVO_SCHEMA}
Set Request Header Accept ${ACCEPT_JSON}
Run Keyword If ${AUTH_USAGE} == 1 Set Request Header Authorization ${AUTHORIZATION}
GET ${apiRoot}/${apiName}/${apiVersion}/pm_jobs?${NEG_FILTER}
Response Status Code Should Equal 400
Log Received 400 Bad Request as expected
${problemDetails}= Get Response Body
${json}= evaluate json.loads('''${problemDetails}''') json
Response Header Should Equal Content-Type ${CONTENT_TYPE_JSON}
Log Trying to validate ProblemDetails
Validate Json ProblemDetails.schema.json ${json}
Log Validation OK
GET all Pm Jobs - Negative (Unauthorized: Wrong Token)
Log Trying to perform a negative get, using wrong authorization bearer
Pass Execution If ${AUTH_USAGE} == 0 Skipping test as NFVO is not supporting authentication
Create HTTP Context ${NFVO_HOST}:${NFVO_PORT} ${NFVO_SCHEMA}
Set Request Header Accept ${ACCEPT_JSON}
Set Request Header Authorization ${NEG_AUTHORIZATION}
GET ${apiRoot}/${apiName}/${apiVersion}/pm_jobs
Response Status Code Should Equal 401
Log Received 401 Unauthorized as expected
${problemDetails}= Get Response Body
${json}= evaluate json.loads('''${problemDetails}''') json
Response Header Should Equal Content-Type ${CONTENT_TYPE_JSON}
Log Trying to validate ProblemDetails
Validate Json ProblemDetails.schema.json ${json}
Log Validation OK
GET all Pm Jobs - Negative (Unauthorized: No Token)
Log Trying to perform a negative get, using wrong authorization bearer
Pass Execution If ${AUTH_USAGE} == 0 Skipping test as NFVO is not supporting authentication
Create HTTP Context ${NFVO_HOST}:${NFVO_PORT} ${NFVO_SCHEMA}
Set Request Header Accept ${ACCEPT_JSON}
Set Request Header Authorization ${NEG_AUTHORIZATION}
GET ${apiRoot}/${apiName}/${apiVersion}/pm_jobs
Response Status Code Should Equal 401
Log Received 401 Unauthorized as expected
${problemDetails}= Get Response Body
${json}= evaluate json.loads('''${problemDetails}''') json
Response Header Should Equal Content-Type ${CONTENT_TYPE_JSON}
Log Trying to validate ProblemDetails
Validate Json ProblemDetails.schema.json ${json}
Log Validation OK
GET all Pm Jobs - all_fields
Log Trying to get all PM Jobs present in the NFVO Catalogue, using 'all_fields' filter
Create HTTP Context ${NFVO_HOST}:${NFVO_PORT} ${NFVO_SCHEMA}
Set Request Header Accept ${ACCEPT_JSON}
Run Keyword If ${AUTH_USAGE} == 1 Set Request Header Authorization ${AUTHORIZATION}
GET ${apiRoot}/${apiName}/${apiVersion}/pm_jobs?all_fields
Response Status Code Should Equal 200
${result}= Get Response Body
${json}= evaluate json.loads('''${result}''') json
Response Header Should Equal Content-Type ${CONTENT_TYPE_JSON}
Log Trying to validate response
Validate Json PmJob.schema.json ${json}
Log Validation OK
Log Trying to validate criteria schema
${criteria}= Get Value From Json ${json} $..criteria
Validate Json criteria.schema.json ${criteria[0]}
Log Validation for criteria schema OK
Log Trying to validate criteria schema
${reports}= Get Value From Json ${json} $..reports
Validate Json reports.schema.json ${reports[0]}
Log Validation for reports schema OK
Log Validating _links schema
${links}= Get Value From Json ${json} $.._links
Validate Json links.schema.json ${links[0]}
Log Validation for _links schema OK
GET all Pm Jobs - fields
Log Trying to get all VNF Packages present in the NFVO Catalogue, using filter params
Pass Execution If ${AUTH_USAGE} == 0 Skipping test as NFVO is not supporting 'fields'
Create HTTP Context ${NFVO_HOST}:${NFVO_PORT} ${NFVO_SCHEMA}
Set Request Header Accept ${ACCEPT_JSON}
Run Keyword If ${AUTH_USAGE} == 1 Set Request Header Authorization ${AUTHORIZATION}
GET ${apiRoot}/${apiName}/${apiVersion}/pm_jobs?fields=${fields}
Response Status Code Should Equal 200
${vnfPkgInfos}= Get Response Body
${json}= evaluate json.loads('''${vnfPkgInfos}''') json
Response Header Should Equal Content-Type ${CONTENT_TYPE_JSON}
Log Trying to validate response, checking vnfPkgInfo and other complex attributes included in the vnfPkgInfo
Validate Json vnfPkgInfo.schema.json ${json}
Log Validation for vnfPkgInfo OK
Log Trying to validate softwareImages schema
${softwareImages}= Get Value From Json ${json} $..softwareImages
Validate Json softwareImage.schema.json ${softwareImages[0]}
Log Validation for softwareImage schema OK
Log Trying to validate additionalArtifacts schema
${additional_artifacts}= Get Value From Json ${json} $..additionalArtifacts
Validate Json additionalArtifacts.schema.json ${additional_artifacts[0]}
Log Validation for additionalArtifacts schema OK
GET all Pm Jobs (Negative: Not found)
Log Trying to perform a GET on a erroneous URI
Create HTTP Context ${NFVO_HOST}:${NFVO_PORT} ${NFVO_SCHEMA}
Set Request Header Accept ${ACCEPT_JSON}
Run Keyword If ${AUTH_USAGE} == 1 Set Request Header Authorization ${AUTHORIZATION}
GET ${apiRoot}/${apiName}/${apiVersion}/pm_job # wrong URI /pm_job instead of /pm_jobs
Response Status Code Should Equal 404
Log Received 404 Not Found as expected
${problemDetails}= Get Response Body
${json}= evaluate json.loads('''${problemDetails}''') json
Response Header Should Equal Content-Type ${CONTENT_TYPE_JSON}
Log Trying to validate ProblemDetails
Validate Json ProblemDetails.schema.json ${json}
Log Validation OK
POST PM Jobs - Create new PM Job
Log Creating a new PM Job
Create HTTP Context ${NFVO_HOST}:${NFVO_PORT} ${NFVO_SCHEMA}
Set Request Header Accept ${ACCEPT_JSON}
Set Request Header Content-Type ${CONTENT_TYPE_JSON}
Run Keyword If ${AUTH_USAGE} == 1 Set Request Header Authorization ${AUTHORIZATION}
${body}= Get File jsons/CreatePmJobRequest.json
Set Request Body ${body}
POST ${apiRoot}/${apiName}/${apiVersion}/pm_jobs
Response Status Code Should Equal 201
Log Received 201 Created as expected
${result}= Get Response Body
${json}= evaluate json.loads('''${result}''') json
Validate Json PmJob.schema.json ${json}
Log Validated VnfIndicatorSubscription schema
PUT PM Jobs - (Method not implemented)
Log Trying to perform a PUT. This method should not be implemented
Create HTTP Context ${NFVO_HOST}:${NFVO_PORT} ${NFVO_SCHEMA}
Set Request Header Accept ${ACCEPT_JSON}
Run Keyword If ${AUTH_USAGE} == 1 Set Request Header Authorization ${AUTHORIZATION}
PUT ${apiRoot}/${apiName}/${apiVersion}/pm_jobs
Response Status Code Should Equal 405
Log Received 405 Method not implemented as expected
PATCH Pm Jobs - (Method not implemented)
Log Trying to perform a PUT. This method should not be implemented
Create HTTP Context ${NFVO_HOST}:${NFVO_PORT} ${NFVO_SCHEMA}
Set Request Header Accept ${ACCEPT_JSON}
Run Keyword If ${AUTH_USAGE} == 1 Set Request Header Authorization ${AUTHORIZATION}
Http Request PATCH ${apiRoot}/${apiName}/${apiVersion}/pm_jobs
Response Status Code Should Equal 405
Log Received 405 Method not implemented as expected
DELETE Pm Jobs - \ (Method not implemented)
Log Trying to perform a PUT. This method should not be implemented
Create HTTP Context ${NFVO_HOST}:${NFVO_PORT} ${NFVO_SCHEMA}
Set Request Header Accept ${ACCEPT_JSON}
Run Keyword If ${AUTH_USAGE} == 1 Set Request Header Authorization ${AUTHORIZATION}
DELETE ${apiRoot}/${apiName}/${apiVersion}/pm_jobs
Response Status Code Should Equal 405
Log Received 405 Method not implemented as expected
This source diff could not be displayed because it is too large. You can view the blob instead.
*** Variables ***
${pmJobId} 29f4ff6a-be91-4ec8-856e-fcf1e2479e4e
${erroneousPmJobId} erroneousPmJobId
*** Variables ***
${VNFM_HOST} localhost # Hostname of the VNFM
${VNFM_PORT} 8080 # Listening port of the VNFM
${NFVO_HOST} localhost # Hostname of the NFVO
${NFVO_PORT} 8081 # Listening port of the NFVO
${VNFM_SCHEMA} https
${NFVO_SCHEMA} https
${AUTHORIZATION} Bearer 0b79bab50daca910b000d4f1a2b675d604257e42
${CONTENT_TYPE_JSON} application/json
${ACCEPT_JSON} application/json
${apiRoot} /
${AUTH_USAGE} 1
${NEG_AUTHORIZATION} Bearer negativetoken
${apiVersion} v1
${apiName} vnfpm
${FIELD_USAGE} 1
*** Variables ***
${POS_FILTER} objectInstanceIds=1f50d68b-82e8-4deb-bd40-c934d4d1ac0a
${NEG_FILTER} criteriaPmJob=erroneousAttributeName
${fields} criteria,objectInstanceIds
{
"objectInstanceIds" : ["1f50d68b-82e8-4deb-bd40-c934d4d1ac0a"],
"criteria" : {
"performanceMetric": [],
"performanceMetricGroup": [],
"collectionPeriod": 10,
"reportingPeriod": 30,
}
}
\ No newline at end of file
{
"callbackUri": "http://127.0.0.1/subscribe",
"filter": {
"vnfPkgId": "788106a2-d692-44f3-a86d-384f0ce35e42"
}
}
\ No newline at end of file
{ "description": "This type represents a PM job.\n", "type": "object", "required": [ "id", "objectInstanceIds", "criteria" ], "properties": { "id": { "description": "An identifier with the intention of being globally unique.\n", "type": "string" }, "objectInstanceIds": { "description": "Identifiers of the VNF instances for which performance information is collected.\n", "type": "array", "items": { "description": "An identifier with the intention of being globally unique.\n", "type": "string" } }, "criteria": { "description": "Criteria of the collection of performance information.\n", "type": "object", "required": [ "collectionPeriod", "reportingPeriod" ], "properties": { "performanceMetric": { "description": "This defines the types of performance metrics for the specified object instances, as specified in ETSI GS NFV-IFA 027). At least one of the two attributes (performance metric or group) shall be present.\n", "type": "array", "items": { "type": "string" } }, "performanceMetricGroup": { "description": "Group of performance metrics. A metric group is a pre-defined list of metrics, known to the producer that it can decompose to individual metrics. At least one of the two attributes (performance metric or group) shall be present.\n", "type": "array", "items": { "type": "string" } }, "collectionPeriod": { "description": "Specifies the periodicity at which the producer will collect performance information. The unit shall be seconds. At the end of each reportingPeriod, the producer will inform the consumer about availability of the performance data collected for each completed collection period during this reportingPeriod. The reportingPeriod should be equal to or a multiple of the collectionPeriod. In the latter case, the performance data for the collection periods within one reporting period are reported together.\n", "type": "integer" }, "reportingPeriod": { "description": "Specifies the periodicity at which the producer will report to the consumer. about performance information. The unit shall be seconds. At the end of each reportingPeriod, the producer will inform the consumer about availability of the performance data collected for each completed collection period during this reportingPeriod. The reportingPeriod should be equal to or a multiple of the collectionPeriod. In the latter case, the performance data for the collection periods within one reporting period are reported together.\n", "type": "integer" }, "reportingBoundary": { "description": "Date-time stamp. Representation: String formatted according to IETF RFC 3339.\n", "type": "string", "format": "date-time" } } }, "reports": { "description": "Information about available reports collected by this PM job.\n", "type": "object", "required": [ "href", "readyTime", "_links" ], "properties": { "href": { "description": "The Uri where the report can be obtained.\n", "type": "string", "format": "url" }, "readyTime": { "description": "Date-time stamp. Representation: String formatted according to IETF RFC 3339.\n", "type": "string", "format": "date-time" }, "expiryTime": { "description": "Date-time stamp. Representation: String formatted according to IETF RFC 3339.\n", "type": "string", "format": "date-time" }, "fileSize": { "description": "The size of the report file in bytes, if known.\n", "type": "integer" }, "_links": { "description": "Links for this resource.\n", "type": "object", "required": [ "self" ], "properties": { "self": { "description": "This type represents a link to a resource.\n", "type": "object", "required": [ "href" ], "properties": { "href": { "description": "URI of the referenced resource.\n", "type": "string", "format": "url" } } }, "objects": { "description": "Links to resources representing the VNF instances for which performance information is collected. Shall be present if the VNF instance information is accessible as a resource.\n", "type": "array", "items": { "description": "This type represents a link to a resource.\n", "type": "object", "required": [ "href" ], "properties": { "href": { "description": "URI of the referenced resource.\n", "type": "string", "format": "url" } } } } } } } } }}
\ No newline at end of file
{ "description": "The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced inthis structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n", "type": "object", "required": [ "status", "detail" ], "properties": { "type": { "description": "A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n", "type": "string", "format": "URI" }, "title": { "description": "A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n", "type": "string" }, "status": { "description": "The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n", "type": "integer" }, "detail": { "description": "A human-readable explanation specific to this occurrence of the problem.\n", "type": "string" }, "instance": { "description": "A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n", "type": "string", "format": "URI" } }}
\ No newline at end of file
{
"description": "Criteria of the collection of performance information.\n",
"type": "object",
"required": ["collectionPeriod", "reportingPeriod"],
"properties": {
"performanceMetric": {
"description": "This defines the types of performance metrics for the specified object instances, as specified in ETSI GS NFV-IFA 027). At least one of the two attributes (performance metric or group) shall be present.\n",
"type": "array",
"items": {
"type": "string"
}
},
"performanceMetricGroup": {
"description": "Group of performance metrics. A metric group is a pre-defined list of metrics, known to the producer that it can decompose to individual metrics. At least one of the two attributes (performance metric or group) shall be present.\n",
"type": "array",
"items": {
"type": "string"
}
},
"collectionPeriod": {
"description": "Specifies the periodicity at which the producer will collect performance information. The unit shall be seconds. At the end of each reportingPeriod, the producer will inform the consumer about availability of the performance data collected for each completed collection period during this reportingPeriod. The reportingPeriod should be equal to or a multiple of the collectionPeriod. In the latter case, the performance data for the collection periods within one reporting period are reported together.\n",
"type": "integer"
},
"reportingPeriod": {
"description": "Specifies the periodicity at which the producer will report to the consumer. about performance information. The unit shall be seconds. At the end of each reportingPeriod, the producer will inform the consumer about availability of the performance data collected for each completed collection period during this reportingPeriod. The reportingPeriod should be equal to or a multiple of the collectionPeriod. In the latter case, the performance data for the collection periods within one reporting period are reported together.\n",
"type": "integer"
},
"reportingBoundary": {
"description": "Date-time stamp. Representation: String formatted according to IETF RFC 3339.\n",
"type": "string",
"format": "date-time"
}
}
}
\ No newline at end of file
{
"description": "Links for this resource.\n",
"type": "object",
"required": ["self"],
"properties": {
"self": {
"description": "This type represents a link to a resource.\n",
"type": "object",
"required": ["href"],
"properties": {
"href": {
"description": "URI of the referenced resource.\n",
"type": "string",
"format": "url"
}
}
},
"objects": {
"description": "Links to resources representing the VNF instances for which performance information is collected. Shall be present if the VNF instance information is accessible as a resource.\n",
"type": "array",
"items": {
"description": "This type represents a link to a resource.\n",
"type": "object",
"required": ["href"],
"properties": {
"href": {
"description": "URI of the referenced resource.\n",
"type": "string",
"format": "url"
}
}
}
}
}
}
\ No newline at end of file
{
"description": "Information about available reports collected by this PM job.\n",
"type": "object",
"required": ["href", "readyTime"],
"properties": {
"href": {
"description": "The Uri where the report can be obtained.\n",
"type": "string",
"format": "url"
},
"readyTime": {
"description": "Date-time stamp. Representation: String formatted according to IETF RFC 3339.\n",
"type": "string",
"format": "date-time"
},
"expiryTime": {
"description": "Date-time stamp. Representation: String formatted according to IETF RFC 3339.\n",
"type": "string",
"format": "date-time"
},
"fileSize": {
"description": "The size of the report file in bytes, if known.\n",
"type": "integer"
}
}
}
\ No newline at end of file
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment