Commit 18eb0cf2 authored by Lars-Erik Helander's avatar Lars-Erik Helander Committed by Michele Carignani
Browse files

Added specifications for VNF Indicator and VNF Indicator Notification

Change-Id: Id25ff21f7da03db748ea3072a185e215eb65c55e
parent 0919638a
This diff is collapsed.
definitions:
SubscriptionAuthentication:
description: >
If an API consumer requires the API producer to authorize for sending notifications to that API consumer,
it shall include in the subscription request data according to the following structure.
type: object
required:
- authType
properties:
authType:
description: >
Defines the type of Authentication/Authorization to use when sending a notification.
Permitted values:
* BASIC
* In every POST request that sends a notification, use HTTP Basic authentication with
the client credentials.
* The API producer shall pass its client credentials in every POST request that sends a
notification, as defined in IETF RFC 7617.
* NOTE: The clientId and clientPassword passed in a subscription shall not be the same as the
clientId and clientPassword that are used to obtain authorization for API requests.
Client credentials may differ between subscriptions. The value of clientPassword should be
generated by a random process.
* OAUTH2_CLIENT_CREDENTIALS
* In every POST request that sends a notification, use an
OAuth 2.0 Bearer token, obtained using the client credentials grant type.
* The API producer shall, prior to sending any notification, obtain an access token from
the token endpoint using the OAuth 2.0 client credentials grant type as defined in
IETF RFC 6749. The API consumer should include expiry information with the token response.
* The API producer shall include that access token as a Bearer token in every POST request
that sends a notification (according to IETF RFC 6750).
* If the access token is expired, the API consumer shall reject the notification. In that case,
the API producer shall obtain a new access token, and repeat sending the notification.
* If the token expiry time is known to the API producer, it may obtain proactively a new access token.
type: string
enum:
- BASIC
- OAUTH2_CLIENT_CREDENTIALS
paramsBasic:
description: >
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.
type: object
properties:
userName:
description: >
Username to be used in HTTP Basic authentication. Shall be present if it has not been provisioned
out of band.
type: string
password:
description: >
Password to be used in HTTP Basic authentication. Shall be present if it has not been provisioned
out of band.
type: string
paramsOauth2Client Credentials:
description: >
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.
type: object
properties:
clientId:
description: >
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. See NOTE.
type: string
clientPassword:
description: >
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. See NOTE.
type: string
tokenEndpoint:
description: >
The token endpoint from which the access token can be obtained. Shall be present if it has
not been provisioned out of band.
type: string
format: URI
definitions:
VnfIndicatorNotificationsFilter:
description: >
This type represents a subscription filter related to notifications about VNF indicator value changes.
At a particular nesting level in the filter structure, the following applies:
All attributes shall match in order for the filter to match (logical "and" between different filter attributes).
If an attribute is an array, the attribute shall match if at least one of the values in the array matches
(logical "or" between the values of one filter attribute).
type: object
properties:
vnfInstanceSubscriptionFilter:
description: >
Filter criteria to select VNF instances about which to notify. This attribute shall not be included
when the VNFM sends a subscription request to a particular VNF instance.
$ref: 'VnfInstanceSubscriptionFilter_def.yaml#/definitions/VnfInstanceSubscriptionFilter'
indicatorIds:
description: >
Match particular VNF indicator identifiers.
type: array
items:
$ref: '../../../definitions/SOL002SOL003_def.yaml#/definitions/IdentifierInVnfd'
definitions:
VnfIndicatorSubscriptionRequest:
description: >
This type represents a subscription request related to VNF indicator value change notifications.
type: object
required:
- callbackUri
properties:
filter:
description: >
Filter settings for this subscription, to define the subset of all notifications this
subscription relates to. A particular notification is sent to the subscriber if the filter
matches, or if there is no filter.
$ref: 'VnfIndicatorNotificationsFilter_def.yaml#/definitions/VnfIndicatorNotificationsFilter'
callbackUri:
description: >
The URI of the endpoint to send the notification to.
type: string
format: URI
authentication:
description: >
Authentication parameters to configure the use of Authorization when sending notifications corresponding
to this subscription. This attribute shall only be present if the subscriber requires authorization of
notifications.
$ref: 'SubscriptionAuthentication_def.yaml#/definitions/SubscriptionAuthentication'
\ No newline at end of file
definitions:
VnfIndicatorSubscription:
description: >
This type represents a subscription related to notifications about VNF indicator value changes.
type: object
required:
- callbackUri
- id
- _links
properties:
id:
description: >
Identifier of this subscription resource.
$ref: '../../../definitions/SOL002SOL003_def.yaml#/definitions/Identifier'
filter:
description: >
Filter settings for this subscription, to define the subset of all notifications this subscription
relates to. A particular notification is sent to the subscriber if the filter matches, or if there
is no filter.
$ref: 'VnfIndicatorNotificationsFilter_def.yaml#/definitions/VnfIndicatorNotificationsFilter'
callbackUri:
description: >
The URI of the endpoint to send the notification to.
type: string
format: URI
_links:
description: >
Links to resources related to this resource.
type: object
required:
- self
properties:
self:
description: >
URI of this resource.
$ref: '../../../definitions/SOL002SOL003_def.yaml#/definitions/Link'
definitions:
VnfIndicator:
type: object
required:
- id
- value
- vnfInstanceId
- _links
properties:
id:
$ref: '../../../definitions/SOL002SOL003_def.yaml#/definitions/IdentifierInVnfd'
name:
type: string
value:
type: object
vnfInstanceId:
$ref: '../../../definitions/SOL002SOL003_def.yaml#/definitions/Identifier'
_links:
description: >
Links to resources related to this resource.
type: object
required:
- self
properties:
self:
description: URI of this resource.
$ref: '../../../definitions/SOL002SOL003_def.yaml#/definitions/Link'
vnfInstance:
description: Link to the VNF instance that the operation applies to.
$ref: '../../../definitions/SOL002SOL003_def.yaml#/definitions/Link'
definitions:
VnfInstanceSubscriptionFilter:
description: >
This type represents subscription filter criteria to match VNF instances.
* NOTE 1:
The attributes "vnfdIds" and "vnfProductsFromProviders" are alternatives to reference to
VNF instances that are based on certain VNFDs in a filter. They should not be used both
in the same filter instance, but one alternative should be chosen.
* NOTE 2:
The attributes "vnfInstanceIds" and "vnfInstanceNames" are alternatives to reference to
particular VNF instances in a filter. They should not be used both in the same filter instance,
but one alternative should be chosen.
type: object
properties:
vnfdIds:
description: >
If present, match VNF instances that were created based on a VNFD identified by one of the
vnfdId values listed in this attribute. See NOTE 1.
type: array
items:
$ref: '../../../definitions/SOL002SOL003_def.yaml#/definitions/Identifier'
vnfProductsFromProviders:
description: >
If present, match VNF instances that belong to VNF products from certain providers. See NOTE 1.
type: array
items:
type: object
required:
- vnfProvider
properties:
vnfProvider:
description: >
Name of the VNF provider to match.
type: string
vnfProducts:
description: >
If present, match VNF instances that belong to VNF products with certain product names,
from one particular provider.
type: array
items:
type: object
required:
- vnfProductName
properties:
vnfProductName:
description: >
Name of the VNF product to match.
type: string
versions:
description: >
If present, match VNF instances that belong to VNF products with certain versions
and a certain product name, from one particular provider.
type: array
items:
type: object
required:
- vnfSoftwareVersions
properties:
vnfSoftwareVersions:
description: >
Software version to match.
$ref: '../../../definitions/SOL002SOL003_def.yaml#/definitions/Version'
vnfdVersions:
description: >
If present, match VNF instances that belong to VNF products with certain VNFD versions,
a certain software version and a certain product name, from one particular provider.
type: array
items:
$ref: '../../../definitions/SOL002SOL003_def.yaml#/definitions/Version'
vnfInstanceIds:
description: >
If present, match VNF instances with an instance identifier listed in this attribute. See NOTE 2.
type: array
items:
$ref: '../../../definitions/SOL002SOL003_def.yaml#/definitions/Identifier'
vnfInstanceNames:
description: >
If present, match VNF instances with a VNF Instance Name listed in this attribute. See NOTE 2
type: array
items:
type: string
responses:
409:
description: >
Another request is in progress that prohibits the fulfilment of
the current request, or the current resource state is inconsistent
with the request.
headers:
Content-Type:
description: The MIME type of the body of the response.
type: string
maximum: 1
minimum: 1
WWW-Authenticate:
description: >
Challenge if the corresponding HTTP request has not provided
authorization, or error details if the corresponding HTTP
request has provided an invalid authorization token.
type: string
maximum: 1
minimum: 0
schema:
$ref: "../../../definitions/SOL002SOL003_def.yaml#/definitions/ProblemDetails"
swagger: "2.0"
info:
version: "2.3.1"
title: "VNF Indicator Notification Endpoint interface"
description: "VNF Indicator Notification Endpoint interface of ETSI NFV SOL002"
termsOfService: "http://etsi.org"
contact:
name: "NFV-SOL WG"
license:
name: "ETSI Forge copyright notice"
url: https://forge.etsi.org/etsi-forge-copyright-notice.txt
basePath: /callback/v1
schemes:
- http
- https
consumes:
- application/json
produces:
- application/json
paths:
/notificationendpoint:
post:
summary: Notification endpoint
description: >
The API producer can use this resource to send notifications related to VNF indicator
value changes to a subscribed API consumer, which has provided the URI of this resource
during the subscription process.
The POST method delivers a notification from the server to the client.
parameters:
- name: vnfIndicatorValueChangeNotification
in: body
description: >
A notification about VNF indicator value changes.
required: true
schema:
$ref: 'definitions/VnfIndicatorValueChangeNotification_def.yaml#/definitions/VnfIndicatorValueChangeNotification'
responses:
204:
description: >
The notification was delivered successfully. The response body shall be empty.
400: { $ref: '../../responses/SOL002SOL003_resp.yaml#/responses/400' }
401: { $ref: '../../responses/SOL002SOL003_resp.yaml#/responses/401' }
403: { $ref: '../../responses/SOL002SOL003_resp.yaml#/responses/403' }
404: { $ref: '../../responses/SOL002SOL003_resp.yaml#/responses/404' }
405: { $ref: '../../responses/SOL002SOL003_resp.yaml#/responses/405' }
406: { $ref: '../../responses/SOL002SOL003_resp.yaml#/responses/406' }
409: { $ref: 'responses/VNFIndicatorNotification_resp.yaml#/responses/409' }
416: { $ref: '../../responses/SOL002SOL003_resp.yaml#/responses/416' }
422: { $ref: '../../responses/SOL002SOL003_resp.yaml#/responses/422' }
500: { $ref: '../../responses/SOL002SOL003_resp.yaml#/responses/500' }
503: { $ref: '../../responses/SOL002SOL003_resp.yaml#/responses/503' }
get:
summary: Test notification endpoint.
description: >
The GET method allows the server to test the notification endpoint that is provided
by the client, e.g. during subscription.
responses:
204:
description: >
The notification endpoint was tested successfully. The response body shall be empty.
400: { $ref: '../../responses/SOL002SOL003_resp.yaml#/responses/400' }
401: { $ref: '../../responses/SOL002SOL003_resp.yaml#/responses/401' }
403: { $ref: '../../responses/SOL002SOL003_resp.yaml#/responses/403' }
404: { $ref: '../../responses/SOL002SOL003_resp.yaml#/responses/404' }
405: { $ref: '../../responses/SOL002SOL003_resp.yaml#/responses/405' }
406: { $ref: '../../responses/SOL002SOL003_resp.yaml#/responses/406' }
409: { $ref: 'responses/VNFIndicatorNotification_resp.yaml#/responses/409' }
416: { $ref: '../../responses/SOL002SOL003_resp.yaml#/responses/416' }
422: { $ref: '../../responses/SOL002SOL003_resp.yaml#/responses/422' }
500: { $ref: '../../responses/SOL002SOL003_resp.yaml#/responses/500' }
503: { $ref: '../../responses/SOL002SOL003_resp.yaml#/responses/503' }
definitions:
VnfIndicatorValueChangeNotification:
description: >
This type represents a VNF indicator value change notification.
type: object
required:
- id
- notificationType
- subscriptionId
- timeStamp
- vnfIndicatorId
- value
- vnfInstanceId
- _links
properties:
id:
description: >
Identifier of this notification. If a notification is sent multiple
times due to multiple subscriptions, the "id" attribute of all these
notifications shall have the same value.
$ref: '../../../definitions/SOL002SOL003_def.yaml#/definitions/Identifier'
notificationType:
description: >
Discriminator for the different notification types.
Shall be set to "VnfIndicatorValueChangeNotification" for this notification type.
type: string
subscriptionId:
description: >
Identifier of the subscription that this notification relates to.
$ref: '../../../definitions/SOL002SOL003_def.yaml#/definitions/Identifier'
timeStamp:
description: >
Date-time of the generation of the notification.
$ref: '../../../definitions/SOL002SOL003_def.yaml#/definitions/DateTime'
vnfIndicatorId:
description: >
Identifier of the VNF indicator whose value has changed.
$ref: '../../../definitions/SOL002SOL003_def.yaml#/definitions/IdentifierInVnfd'
name:
description: >
Human readable name of the VNF indicator. Shall be present if defined in the VNFD.
type: string
value:
description: >
Provides the value of the VNF indicator. The value format is defined in the VNFD.
type: object
vnfInstanceId:
description: >
Identifier of the VNF instance which provides the indicator value.
$ref: '../../../definitions/SOL002SOL003_def.yaml#/definitions/Identifier'
_links:
description: >
Links to resources related to this resource.
type: object
required:
- vnfInstance
- subscription
properties:
# LEH this must be reported as strong candidate for removal.
vnfInstance:
description: >
Link to the related VNF instance resource.
$ref: '../../../definitions/SOL002SOL003_def.yaml#/definitions/Link'
subscription:
description: >
Link to the related subscription.
$ref: '../../../definitions/SOL002SOL003_def.yaml#/definitions/Link'
responses:
409:
description: >
Another request is in progress that prohibits the fulfilment of
the current request, or the current resource state is inconsistent
with the request.
headers:
Content-Type:
description: The MIME type of the body of the response.
type: string
maximum: 1
minimum: 1
WWW-Authenticate:
description: >
Challenge if the corresponding HTTP request has not provided
authorization, or error details if the corresponding HTTP
request has provided an invalid authorization token.
type: string
maximum: 1
minimum: 0
schema:
$ref: "../../../definitions/SOL002SOL003_def.yaml#/definitions/ProblemDetails"
Supports Markdown
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