Skip to content
Snippets Groups Projects

Compare revisions

Changes are shown as if the source revision was being merged into the target revision. Learn more about comparing revisions.

Source

Select target project
No results found

Target

Select target project
  • nfv/SOL002-SOL003
  • reinaortega/SOL002-SOL003
2 results
Show changes
Commits on Source (556)
Showing
with 3531 additions and 694 deletions
build/
*.pyc
.idea/
[gerrit]
host=forge.etsi.org
port=29418
project=NFV-SOL002-SOL003
defaultbranch=master
defaultremote=origin
......@@ -14,9 +14,7 @@ cd docker
./build-container.sh
./run-container.sh "${run_dir}" "$1"
OUTCOME=$?
cd ..
exit $OUTCOME
python ./scripts/add_change_comment.py
exit $?
ETSI FORGE COPYRIGHT STATEMENT
Copyright (c) ETSI 2017.
This software is subject to copyrights owned by ETSI. Non-exclusive permission
is hereby granted, free of charge, to copy, reproduce and amend this file
under the following conditions: It is provided "as is", without warranty of any
kind, expressed or implied.
ETSI shall never be liable for any claim, damages, or other liability arising
from its use or inability of use.This permission does not apply to any documentation
associated with this file for which ETSI keeps all rights reserved. The present
copyright notice shall be included in all copies of whole or part of this
software and shall not imply any sub-license right.
Copyright 2019 ETSI
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:
1. Redistributions of source code must retain the above copyright notice,
this list of conditions and the following disclaimer.
2. Redistributions in binary form must reproduce the above copyright notice,
this list of conditions and the following disclaimer in the documentation
and/or other materials provided with the distribution.
3. Neither the name of the copyright holder nor the names of its contributors
may be used to endorse or promote products derived from this software without
specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
OF THE POSSIBILITY OF SUCH DAMAGE.
# NFV SOL002 and SOL003 APIs
This repository hosts the [OpenAPI](https://www.openapis.org/) specificatons and other documentation
for the APIs defined in ETSI NFV GSs [SOL002](http://www.etsi.org/deliver/etsi_gs/NFV-SOL/001_099/002/02.03.01_60/gs_NFV-SOL002v020301p.pdf) and [SOL003](http://www.etsi.org/deliver/etsi_gs/NFV-SOL/001_099/003/02.03.01_60/gs_NFV-SOL003v020301p.pdf).
for the APIs defined in ETSI NFV GSs SOL002 and SOL003 v3.7.1.
The APIs described in this repository are defined for the following reference points:
* `Or-Vnfm`
* `Ve-vnfm`
**IMPORTANT: Please note that this file might be not aligned to the current version of the ETSI Group Specification it refers to and has not been approved by the ETSI NFV ISG. In case of discrepancies the published ETSI Group Specification takes precedence.**
**IMPORTANT: In case of discrepancies the published ETSI Group Specification takes precedence.**
More information at [NFV Solutions wiki](https://nfvwiki.etsi.org/index.php?title=NFV_Solutions).
......@@ -35,22 +35,23 @@ and the results will be stored in a `build/` directory in the project folder.
## How to raise issues
Change requests can be filed at [ETSI Forge Bugzilla](forge.etsi.org/bugzilla/buglist.cgi?component=Nfv-Openapis&list_id=62&product=NFV). Please report errors, bugs or other issues [here](https://forge.etsi.org/bugzilla/enter_bug.cgi?product=NFV).
Please report errors, bugs or other issues [here](https://forge.etsi.org/rep/nfv/SOL002-SOL003/-/issues).
## How to contribute
ETSI Forge uses Gerrit to manage submissions to the repository, any submission is tracked with a Change. Currently open and closed Changes can be reviewed [here](https://forge.etsi.org/gerrit/#/q/project:NFV-SOL002-SOL003).
ETSI Forge uses Gitlab to manage submissions to the repository.
More information is available [here](https://nfvwiki.etsi.org/index.php?title=SOL_OpenAPI_Main_Page#How_to_Contribute).
### Latest builds
See the recent builds from:
* [Master](https://forge.etsi.org/jenkins/job/NFV%20-%20Network%20Functions%20Virtualisation/job/sol002-sol003-master/)
* [Gerrit changes](https://forge.etsi.org/jenkins/job/NFV%20-%20Network%20Functions%20Virtualisation/job/sol002-sol003/).
* [Master branch](https://forge.etsi.org/jenkins/job/NFV%20-%20Network%20Functions%20Virtualisation/job/sol002-sol003-master/)
* [Other branches](https://forge.etsi.org/jenkins/job/NFV%20-%20Network%20Functions%20Virtualisation/job/sol002-sol003/).
## License
Copyright (c) ETSI 2017.
Copyright (c) ETSI 2020.
This software is subject to copyrights owned by ETSI. Non-exclusive permission
is hereby granted, free of charge, to copy, reproduce and amend this file
......
# Copyright ETSI 2017
# See: https://forge.etsi.org/etsi-forge-copyright-statement.txt
FROM alpine:3.6
FROM alpine:3.10.0
RUN env
RUN apk update
......@@ -12,13 +12,13 @@ RUN apk add asciidoctor
RUN apk add openjdk8
RUN apk add ca-certificates wget && update-ca-certificates
RUN apk add openssl
RUN gem install rdoc --pre || gem install rdoc --pre
RUN gem install rdoc -v 6.3.3 || gem install rdoc -v 6.3.3
RUN gem install asciidoctor-pdf-cjk
RUN wget https://forge.etsi.org/swagger2markup-cli-1.3.2.jar
RUN npm config set proxy $http_proxy
RUN npm install -g swagger-tools@0.10.3
RUN npm install -g json-refs@3.0.2
RUN npm install -g yamljs@0.3.0
RUN npm install -g swagger-cli
RUN npm install -g json-refs
RUN npm install -g yamljs
ADD validate-in-docker.sh /validate-in-docker.sh
RUN chmod +x /validate-in-docker.sh
......
......@@ -23,7 +23,7 @@ function validate_api () {
echo "--- Merging file."
merged_file="../build/${deliverable}-${api}-API.yaml"
json_file="../build/${deliverable}-${api}-API.json"
json-refs resolve "${file}" > "${merged_file}"
json-refs --filter relative resolve "${file}" > "${merged_file}"
yaml2json "${merged_file}" > "${json_file}"
# Create the PDF version
......@@ -32,7 +32,7 @@ function validate_api () {
mv "${deliverable}-${api}-API.pdf" "../build/"
echo "--- Validating ${merged_file}"
swagger-tools validate "${merged_file}"
swagger-cli validate "${merged_file}"
vres=$?
echo "--- Validation done ($vres)."
......
"""
Add comments on gerrit
"""
import os
import sys
import jnk_grt_comment as jgc
import glob
CHANGE = os.environ.get('GERRIT_CHANGE_NUMBER') or None
PATCH = os.environ.get('GERRIT_PATCHSET_NUMBER') or None
URL = os.environ.get('BUILD_URL') or None
# print glob.glob("**/*-API.yaml")
if not (CHANGE and PATCH and URL):
print "No Gerrit change information found. Exiting"
sys.exit()
print "START Comment on Gerrit change ---"
jgc.comment_openapis_artifacts(CHANGE, PATCH, URL)
print "DONE Comment on Gerrit change ---\n"
#!/env/python2.7
"""
Comments on gerrit
"""
import os.path
import subprocess
import glob
def mk_swg_ui_link(artifact, build_uri):
"""
creates the link to the swagger ui
"""
swg_ui = "https://forge.etsi.org/swagger/ui"
return swg_ui + "/?url=" + build_uri + "/artifact/"+ artifact +"/*view*/"
def mk_swg_ui_comment(files, bu):
"""
creates the link to the swagger ui
"""
msg = "Review links for the built OpenAPIS:"
for artifact in glob.glob(files):
msg += "\n * " + os.path.basename(artifact) + ": " + mk_swg_ui_link(artifact, bu)
return msg
def mk_grt_comment_cmd(change, payload):
"""
creates the link to the swagger ui
"""
command = "ssh -p 29418 forge.etsi.org \"gerrit review --message '"+payload+"' "+change + "\""
print command
return command
def send_gerrit_comment(change, patchset):
"""
creates the link to the swagger ui
"""
cmd = mk_grt_comment_cmd(change, patchset)
print "Executing: " + cmd
subprocess.call(cmd, shell=True)
def jenkins_gerrit_comment(change_num, patch_num, comment):
send_gerrit_comment(change_num+","+patch_num, comment)
def comment_openapis_artifacts(cn, pn, bu):
comment = mk_swg_ui_comment("**/*-API.yaml", bu)
# print "comment: "+comment
jenkins_gerrit_comment(str(cn), str(pn), comment)
\ No newline at end of file
openapi: 3.0.2
info:
title: SOL002 - API version interface
description: |
SOL002 - API version Interface
IMPORTANT: Please note that this file might be not aligned to the current
version of the ETSI Group Specification it refers to. In case of
discrepancies the published ETSI Group Specification takes precedence.
Please report bugs to https://forge.etsi.org/rep/nfv/SOL002-SOL003/issues
contact:
name: NFV-SOL WG
license:
name: ETSI Forge copyright notice
url: https://forge.etsi.org/etsi-forge-copyright-notice.txt
version: 1.3.0-impl:etsi.org:ETSI_NFV_OpenAPI:1
externalDocs:
description: ETSI GS NFV-SOL 002 V3.7.1
url: https://www.etsi.org/deliver/etsi_gs/NFV-SOL/001_099/002/03.07.01_60/gs_NFV-SOL002v030701p.pdf
paths:
/vnfconfig/api_versions:
$ref: ../../endpoints/SOL002SOL003_endpoints.yaml#/endpoints/api-versions
/vnffm/api_versions:
$ref: ../../endpoints/SOL002SOL003_endpoints.yaml#/endpoints/api-versions
/vnfind/api_versions:
$ref: ../../endpoints/SOL002SOL003_endpoints.yaml#/endpoints/api-versions
/vnflcm/api_versions:
$ref: ../../endpoints/SOL002SOL003_endpoints.yaml#/endpoints/api-versions
/vnfpm/api_versions:
$ref: ../../endpoints/SOL002SOL003_endpoints.yaml#/endpoints/api-versions
/lcmcoord/api_versions:
$ref: ../../endpoints/SOL002SOL003_endpoints.yaml#/endpoints/api-versions
\ No newline at end of file
......@@ -2,213 +2,482 @@
# https://forge.etsi.org/etsi-forge-copyright-notice.txt
definitions:
AffectedVnfc:
Link:
description: >
This type provides information about added, deleted, modified and
temporary VNFCs.
This type represents a link to a resource using an absolute URI.
type: object
required:
- id
- vduId
- changeType
- computeResource
- href
properties:
id:
description: >
Identifier of the Vnfc instance, identifying the applicable
"vnfcResourceInfo" entry in the "VnfInstance" data type.
$ref: "#/definitions/IdentifierInVnf"
vduId:
href:
description: >
Identifier of the related VDU in the VNFD.
$ref: "#/definitions/IdentifierInVnfd"
changeType:
description: >
Signals the type of change. Permitted values:
* ADDED
* REMOVED
* MODIFIED
* TEMPORARY
For a temporary resource, an AffectedVnfc structure exists as long
as the temporary resource exists.
type: string
enum:
- ADDED
- REMOVED
- MODIFIED
- TEMPORARY
computeResource:
description: >
Reference to the VirtualCompute resource. Detailed information is
(for new and modified resources) or has been (for removed
resources) available from the VIM.
$ref: "#/definitions/ResourceHandle"
metadata:
description: >
Metadata about this resource.
The content of this attribute shall be a copy of the content of the
"metadata" attribute of the VnfcResourceInfo structure.
$ref: "#/definitions/KeyValuePairs"
affectedVnfcCpIds:
description: >
Identifiers of CP(s) of the VNFC instance that were affected by the
change.
Shall be present for those affected CPs of the VNFC instance that
are associated to an external CP of the VNF instance.
May be present for further affected CPs of the VNFC instance.
type: array
items:
$ref: "#/definitions/IdentifierInVnf"
addedStorageResourceIds:
description: >
References to VirtualStorage resources that have been added. Each
value refers to a VirtualStorageResourceInfo item in the
VnfInstance that was added to the VNFC. It shall be provided if at
least one storage resource was added to the VNFC.
type: array
items:
$ref: "#/definitions/IdentifierInVnf"
removedStorageResourceIds:
description: >
References to VirtualStorage resources that have been removed.
The value contains the identifier of a VirtualStorageResourceInfo
item that has been removed from the VNFC, and might no longer exist
in the VnfInstance.
It shall be provided if at least one storage resource was removed
from the VNFC.
type: array
items:
$ref: "#/definitions/IdentifierInVnf"
URI of another resource referenced from a resource.
Shall be an absolute URI (i.e. a UTI that contains {apiRoot}).
$ref: "#/definitions/Uri"
Link:
NotificationLink:
description: >
This type represents a link to a resource.
This type represents a link to a resource in a notification, using an absolute or relative URI.
type: object
required:
- href
properties:
href:
description: >
URI of the referenced resource.
type: string
format: url
Version:
description: >
A version.
type: string
URI of a resource referenced from a notification.
Should be an absolute URI (i.e. a URI that contains
{apiRoot}), however, may be a relative URI (i.e. a URI
where the {apiRoot} part is omitted) if the {apiRoot}
information is not available.
$ref: "#/definitions/Uri"
MacAddress:
description: >
A MAC address. Representation: string that consists of groups of two hexadecimal digits, separated by hyphens or colons.
type: string
format: MAC
IpAddress:
KeyValuePairs:
description: >
An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal
integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that
consists of groups of zero to four hexadecimal digits, separated by colons.
type: string
format: IP
This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON,
a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4
of IETF RFC 8259. In the following example, a list of key-value pairs with four keys ("aString", "aNumber",
"anArray" and "anObject") is provided to illustrate that the values associated with different keys can be of
different type.
type: object
CpProtocolData:
ApiVersionInformation:
description: >
This type represents network protocol data.
This type represents API version information.
type: object
required:
- layerProtocol
properties:
layerProtocol:
required:
- uriPrefix
- apiVersions
properties:
uriPrefix:
description: >
Identifier of layer(s) and protocol(s).
This attribute allows to signal the addition of further types of
layer and protocol in future versions of the present document in a
backwards-compatible way. In the current version of the present
document, only IP over Ethernet is supported.
Specifies the URI prefix for the API, in the following
form {apiRoot}/{apiName}/{apiMajorVersion}/.
type: string
enum:
- IP_OVER_ETHERNET
ipOverEthernet:
apiVersions:
description: >
Network address data for IP over Ethernet to assign to the extCP
instance. Shall be present if layerProtocol is equal to
"IP_OVER_ETHERNET", and shall be absent otherwise.
$ref: "#/definitions/IpOverEthernetAddressData"
Version(s) supported for the API signaled by the
uriPrefix attribute.
type: array
items:
type: object
required:
- version
properties:
version:
description: >
Identifies a supported version. The value of the
version attribute shall be a version identifier as
specified in clause 9.1 (SOL013).
type: string
isDeprecated:
description: >
If such information is available, this attribute indicates
whether use of the version signaled by the version
attribute is deprecated (true) or not (false).
DateTime:
description: >
Date-time stamp.
Representation: String formatted according to IETF RFC 3339.
type: string
format: "date-time"
A deprecated version is still supported by the API producer but is recommended
not to be used any longer.
When a version is no longer supported, it does not appear in the response body.
type: boolean
retirementDate:
description: >
The date and time after which the API version will no
longer be supported.
This attribute may be included if the value of the
isDeprecated attribute is set to true and shall be
absent otherwise.
$ref: "#/definitions/DateTime"
ExtLinkPortData:
VnfInstanceSubscriptionFilter:
description: >
This type represents an externally provided link port to be used to
connect an external connection point to an external VL.
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
required:
- id
- resourceHandle
anyOf:
- oneOf:
- required:
- vnfdId
- required:
- vnfProductsFromProviders
- oneOf:
- required:
- vnfInstanceIds
- required:
- vnfInstanceNames
properties:
id:
vnfdIds:
description: >
Identifier of this link port as provided by the entity that has
created the link port.
$ref: "#/definitions/Identifier"
resourceHandle:
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/Identifier"
vnfProductsFromProviders:
description: >
Reference to the virtualised resource realizing this link port.
$ref: "#/definitions/ResourceHandle"
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:
- vnfSoftwareVersion
properties:
vnfSoftwareVersion:
description: >
Software version to match.
$ref: "#/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/Version"
vnfInstanceIds:
description: >
If present, match VNF instances with an instance identifier listed
in this attribute. See note 2.
type: array
items:
$ref: "#/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
ExtManagedVirtualLinkData:
type: object
ResourceHandle:
required:
- id
- virtualLinkDescId
- resourceId
type: object
description: >
This type represents the information that allows addressing a virtualised resource that is used by a VNF instance.
Information about the resource is available from the VIM.
* NOTE 1: The information about the VIM connection referenced by the VIM connection id is known to the VNFM. Moreover,
the identifier of the VIM connection provides scope to the resourceId.
* NOTE 2: The value set of the "vimLevelResourceType" attribute is within the scope of the VIM or the resource provider
and can be used as information that complements the ResourceHandle.
properties:
id:
description: >
The identifier of the externally-managed internal VL instance. The
identifier is assigned by the NFV-MANO entity that manages this VL
instance.
$ref: "#/definitions/Identifier"
virtualLinkDescId:
description: >
The identifier of the VLD in the VNFD for this VL.
$ref: "#/definitions/IdentifierInVnfd"
vimConnectionId:
description: >
Identifier of the VIM connection to manage this resource. This
attribute shall only be supported and present if VNF-related
resource management in direct mode is applicable.
Identifier of the VIM connection to manage the resource.
This attribute shall only be supported and present if VNF-related resource management in direct mode is applicable.
See note 1.
$ref: "#/definitions/Identifier"
resourceProviderId:
description: >
Identifies the entity responsible for the management of this
resource. This attribute shall only be supported and present if
Identifier of the entity responsible for the management of the
resource. This attribute shall only be supported and present when
VNF-related resource management in indirect mode is applicable. The
identification scheme is outside the scope of the present document.
$ref: "#/definitions/Identifier"
resourceId:
description: >
The identifier of the resource in the scope of the VIM or the
resource provider.
Identifier of the resource in the scope of the VIM or the resource provider.
$ref: "#/definitions/IdentifierInVim"
vimLevelResourceType:
description: >
Type of the resource in the scope of the VIM or the resource provider. See note 2.
type: string
VnfExtCpData:
description: >
This type represents configuration information for external CPs created.
* NOTE 1: In case this identifier refers to a CPD with trunking enabled, the external CP instances created
from this CPD will represent ports in a trunk.
* NOTE 2: Within one VNF instance, all VNFC instances created from a particular VDU have the same external
connectivity. Thus, given a particular value of the "cpdId" attribute, there shall be one
"cpConfig" entry for each VNFC instance that has been or can be created from a VDU which includes
a CPD identified by the "cpdId" attribute. If the cpConfig represents a subport in a trunk,
all "cpConfig" entries in this list shall have the same segmentationId, which means they are
connected to the same set of external VLs via the trunk.
* NOTE 3: The map entry value shall be set to "null" in order to delete a "VnfExtCpConfig" entry identified
by a particular key value from the map, i.e. for the disconnection of an existing external
CP instance addressed by cpInstanceId in the deleted map entry from a particular external
virtual link, and deletion of that instance in case it represents a subport. Deleting the
last key from the map removes the affected instance of the "VnfExtCpData" structure from
its parent data structure.
* NOTE 4: If, as defined by the input parameters of a "ChangeVnfFlavour", "ChangeExtVnfConnectivity" or
"ChangeCurrentVnfPkg" operation, a cpConfig map entry identified by a particular map key value
is moved into another "ExtVirtualLinkData" or "VnfExtCpData" structure, this particular cpConfig
map entry may be used by an external CP instance different than the one that has used it before the
operation, or by no external CP instance at all. Renaming a CPD identifier during the "changeCurrentVnfPkg"
operation does not count as moving the related "cpConfig" map entries to a new "extCpData" structure.
type: object
required:
- cpdId
properties:
cpdId:
description: >
The identifier of the CPD in the VNFD. See note 1.
$ref: "#/definitions/IdentifierInVnfd"
cpConfig:
description: >
Map of instance data that need to be configured on the CP instances
created from the respective CPD.
The key of the map which identifies the individual VnfExtCpConfig entries is of type "IdentifierInVnf"
and is managed by the NFVO.
The entries shall be applied by the VNFM according to the rules of JSON Merge Patch (see IETF RFC 7396).
See notes 2, 3 and 4.
type: object
additionalProperties:
$ref: "#/definitions/VnfExtCpConfig"
VnfExtCpConfig:
description: >
This type represents an externally provided link port or network address information per instance of an
external connection point. In case a link port is provided, the VNFM shall use that link port when
connecting the external CP to the external VL. In case a link port is not provided, the VNFM shall create
a link port on the external VL, and use that link port to connect the external CP to the external VL.
* NOTE : The following conditions apply to the attributes "linkPortId" and "cpProtocolData":
1) Void.
2) At least one of the "linkPortId" and "cpProtocolData" attributes shall be present for an external CP instance
representing a subport that is to be created, or an external CP instance that is to be created by creating the
corresponding VNFC or VNF instance during the current or a subsequent LCM operation, or for an existing
external CP instance that is to be re-configured or added to a particular external virtual link.
3) If the "linkPortId" attribute is absent, the VNFM shall create a link port.
4) If the "cpProtocolData" attribute is absent, the "linkPortId" attribute shall be provided referencing a
precreated link port, and the VNFM can use means outside the scope of the present document to obtain the
pre-configured address information for the connection point from the resource representing the link port.
5) If both "cpProtocolData" and "linkportId" are provided, the NFVO shall ensure that the
cpProtocolData can be used with the pre-created link port referenced by "linkPortId".
anyOf:
- required:
- linkPortId
- required:
- cpProtocolData
- required:
- netAttDefResourceId
type: object
properties:
parentCpConfigId:
description: >
Value of the key that identifies the "VnfExtCpConfig" map entry which corresponds to the parent port of the
trunk. Reference to the "VnfExtCpConfig" entry that corresponds to the parent port of the trunk. Only present
in "VnfExtCpConfig" structures that provide configuration information for a CP which represents a sub-port in
a trunk, and if parent ports are supported.
$ref: "#/definitions/IdentifierInVnf"
linkPortId:
description: >
Identifier of a pre-configured link port to which the external CP
will be associated. See notes 1 and 4.
$ref: "#/definitions/Identifier"
createExtLinkPort:
description: >
Indicates to the VNFM the need to create a dedicated link port for the external CP.
If set to True, the VNFM shall create a link port.
If set to False, the VNFM shall not create a link port.
This attribute is only applicable for external CP instances without a floating IP address that expose a VIP CP
instance for which a dedicated IP address is allocated. It shall be present in that case and shall be absent otherwise.
type: boolean
cpProtocolData:
description: >
Parameters for configuring the network protocols on the link port that connects the
CP to a VL. See note.
type: array
items:
$ref: "#/definitions/CpProtocolData"
CpProtocolData:
description: >
This type represents network protocol data.
* NOTE: This attribute allows to signal the addition of further types of layer and protocol
in future versions of the present document in a backwards-compatible way. In the current
version of the present document, only IP over Ethernet is supported.
type: object
required:
- layerProtocol
properties:
layerProtocol:
description: >
Identifier of layer(s) and protocol(s). Permitted values: IP_OVER_ETHERNET See note.
type: string
enum:
- IP_OVER_ETHERNET
ipOverEthernet:
description: >
Network address data for IP over Ethernet to assign to the extCP instance. Shall be
present if layerProtocol is equal to "IP_OVER_ETHERNET", and shall be absent otherwise.
$ref: "#/definitions/IpOverEthernetAddressData"
IpOverEthernetAddressData:
description: >
This type represents network address data for IP over Ethernet.
* NOTE 1: At least one of "macAddress" or "ipAddresses" shall be present.
* NOTE 2: Exactly one of "fixedAddresses", "numDynamicAddresses" or "ipAddressRange" shall be present.
* NOTE 3: If the CP instance represents a subport in a trunk, segmentationId shall be present.
Otherwise it shall not be present.
* NOTE 4: Depending on the NFVI networking infrastructure, the segmentationId may indicate the actual
network segment value (e.g. vlan Id, Vxlan segmentation id, etc.) used in the transport header
of the packets or it may be an identifier used between the application and the NFVI networking
infrastructure to identify the network sub-interface of the trunk port in question. In the latter
case the NFVI infrastructure will map this local segmentationId to whatever segmentationId is
actually used by the NFVI's transport technology.
type: object
anyOf:
- required:
- macAddress
- required:
- ipAddresses
oneOf:
- required:
- fixedAddresses
- required:
- numDynamicAddresses
- required:
- ipAddressRange
properties:
macAddress:
description: >
MAC address. If this attribute is not present, it shall be chosen by
the VIM. See note 1.
$ref: "#/definitions/MacAddress"
segmentationType:
description: >
Specifies the encapsulation type for the traffics coming in and out of the trunk subport.
Permitted values:
- VLAN: the subport uses VLAN as encapsulation type.
- INHERIT: the subport gets it is segmentation type from the network it’s connected to.
This attribute may be present for CP instances that represent subports in a trunk and shall be
absent otherwise. If this attribute is not present for a subport CP instance, default value VLAN shall be used.
type: string
enum:
- VLAN
- INHERIT
segmentationId:
description: >
Identification of the network segment to which the CP instance connects to. See note 3 and note 4.
type: string
ipAddresses:
description: >
List of IP addresses to assign to the CP instance. Each entry
represents IP address data for fixed or dynamic IP address
assignment per subnet.
If this attribute is not present, no IP address shall be assigned. See note 1.
type: array
items:
type: object
required:
- type
properties:
type:
description: >
The type of the IP addresses.
Permitted values: IPV4, IPV6.
type: string
enum:
- IPV4
- IPV6
fixedAddresses:
description: >
Fixed addresses to assign (from the subnet defined by
"subnetId" if provided). See note 2.
type: array
items:
$ref: "#/definitions/IpAddress"
numDynamicAddresses:
description: >
Number of dynamic addresses to assign (from the subnet defined
by "subnetId" if provided). See note 2.
type: integer
addressRange:
description: >
An IP address range to be used, e.g. in case of egress
connections.
In case this attribute is present, IP addresses from the range
will be used. See note 2.
type: object
required:
- minAddress
- maxAddress
properties:
minAddress:
description: >
Lowest IP address belonging to the range.
$ref: "#/definitions/IpAddress"
maxAddress:
description: >
Highest IP address belonging to the range.
$ref: "#/definitions/IpAddress"
subnetId:
description: >
Subnet defined by the identifier of the subnet resource in the
VIM.
In case this attribute is present, IP addresses from that
subnet will be assigned; otherwise, IP addresses not bound to
a subnet will be assigned.
$ref: "#/definitions/IdentifierInVim"
ExtVirtualLinkData:
description: >
This type represents an external VL.
* NOTE 1: The information about the VIM connection referenced by the VIM connection id is known to the VNFM.
Moreover, the identifier of the VIM connection provides scope to the resourceId.
* NOTE 2: A link port is not needed for an external CP instance that exposes a VIP CP in the following cases:
1) For a VIP CP directly exposed as an extCP:
1.1) No dedicated IP address is allocated as VIP address, as indicated in the VNFD.
1.2) A dedicated IP address is allocated as VIP address, but the NFVO indicates that no port is needed
(createExtLinkPort in VnfExtCpConfig set to false).
2) For a VIP CP exposed as an extCP via a floating IP address:
2.1) No dedicated IP address is allocated as VIP address, as indicated in the VNFD, and the VNFC CP
associated to the VIP CP is also exposed via a floating IP address.
type: object
required:
- id
- resourceId
- extCps
properties:
id:
properties:
id:
description: >
The identifier of the external VL instance. The identifier is
assigned by the NFV-MANO entity that manages this VL instance.
......@@ -217,9 +486,9 @@ definitions:
description: >
Identifier of the VIM connection to manage this resource. This
attribute shall only be supported and present if VNF-related
resource management in direct mode is applicable.
resource management in direct mode is applicable. See note 1.
$ref: "#/definitions/Identifier"
resourceProviderId:
resourceProviderId:
description: >
Identifies the entity responsible for the management of this
resource. This attribute shall only be supported and present
......@@ -227,34 +496,122 @@ definitions:
The identification scheme is outside the scope of the present
document.
$ref: "#/definitions/Identifier"
resourceId:
resourceId:
description: >
The identifier of the resource in the scope of the VIM or the
resource provider.
$ref: "#/definitions/IdentifierInVim"
extCps:
description: >
External CPs of the VNF to be connected to this external VL.
External CPs of the VNF to be connected to this external VL. Entries in the list of external
CP data that are unchanged need not be supplied if the ExtVirtualLinkData structure is part
of a request or response that modifies the external connectivity.
type: array
items:
items:
$ref: "#/definitions/VnfExtCpData"
extLinkPorts:
description: >
Externally provided link ports to be used to connect external
connection points to this external VL. If this attribute is not
present, the VNFM shall create the link ports on the external VL.
Externally provided link ports to be used to connect external connection points to this external
VL. If this attribute is not present, the VNFM shall create the link ports on the external VL
unless the extCp exposes a VIP CP and a link port is not needed for it based on the conditions
defined below. See note 2.
type: array
items:
items:
$ref: "#/definitions/ExtLinkPortData"
ScaleInfo:
description: >
This type represents the scale level of a VNF instance related to a scaling aspect.
type: object
required:
- aspectId
- scaleLevel
properties:
aspectId:
description: >
Identifier of the scaling aspect.
$ref: "#/definitions/IdentifierInVnfd"
vnfdId:
description: >
Identifier of the VNFD.
Shall be present in case the value differs from the vnfdId
attribute of the VnfInstance (e.g. during a "Change
current VNF package" operation or due to its final
failure).
$ref: "#/definitions/IdentifierInVnfd"
scaleToLevel:
description: >
Indicates the scale level. The minimum value shall be 0
and the maximum value shall be ≤ maxScaleLevel as
described in the VNFD.
$ref: "#/definitions/Identifier"
Identifier:
description: >
An identifier with the intention of being globally unique.
type: string
DateTime:
description: >
Date-time stamp.
Representation: String formatted according to IETF RFC 3339.
type: string
format: date-time
Uri:
description: >
String formatted according to IETF RFC 3986.
type: string
Boolean:
description: >
The Boolean is a data type having two values (true and false).
type: boolean
MacAddress:
description: >
A MAC address. Representation: string that consists of groups of two hexadecimal digits,
separated by hyphens or colons.
type: string
format: MAC
IpAddress:
description: >
An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal
integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that
consists of groups of zero to four hexadecimal digits, separated by colons.
type: string
format: IP
Version:
description: >
A version.
type: string
String:
description: >
A string defined in IETF RFC 8259.
type: string
Number:
description: >
A number defined in IETF RFC 8259.
type: number
UnsignedInt:
description: >
Unsigned integer number
type: integer
minimum: 0
IdentifierInVnfd:
description: >
An identifier that is unique within a VNF descriptor.
type: string
IdentifierInVim:
description: >
An identifier maintained by the VIM or other resource provider. It is
An identifier maintained by the VIM or the CISM or other resource provider. It is
expected to be unique within the VIM instance.
type: string
......@@ -264,95 +621,104 @@ definitions:
instance, but may not be globally unique.
type: string
IdentifierInVnfd:
IdentifierLocal:
description: >
An identifier that is unique within a VNF descriptor.
An identifier that is unique within a limited local scope other than above listed identifiers,
such as within a complex data structure or within a request-response pair.
Representation: string of variable length.
type: string
IpOverEthernetAddressData:
Checksum: #no definition found
description: >
Cheksum description
type: string
########################################################################################################################
# TO CHECK IF INCLUDE THESE DATA TYPES IN ANOTHER DEF FILES
VnfLinkPortData:
description: >
This type represents an externally provided link port to be used to connect a VNFC connection point
to an exernally managed VL.
type: object
required:
- vnfLinkPortId
- resourceHandle
properties:
vnfLinkPortId:
description: >
Identifier of this link port as provided by the entity that has created the link port.
$ref: "#/definitions/Identifier"
resourceHandle:
description: >
Resource handle of the virtualised resource that realizes the link port.
$ref: "#/definitions/ResourceHandle"
ExtLinkPortData:
description: >
This type represents network address data for IP over Ethernet.
This type represents an externally provided link port to be used to
connect an external connection point to an external VL.
* NOTE: The value of "trunkResourceId" is scoped by the value of "vimConnectionId" in the "resourceHandle" attribute.
type: object
required:
- id
- resourceHandle
properties:
macAddress:
id:
description: >
MAC address. If this attribute is not present, it shall be chosen by
the VIM.
At least one of "macAddress" or "ipAddresses" shall be present.
$ref: "#/definitions/MacAddress"
ipAddresses:
Identifier of this link port as provided by the entity that has
created the link port.
$ref: "#/definitions/Identifier"
resourceHandle:
description: >
List of IP addresses to assign to the CP instance. Each entry
represents IP address data for fixed or dynamic IP address
assignment per subnet.
If this attribute is not present, no IP address shall be assigned.
type: array
items:
type: object
required:
- type
properties:
type:
description: >
The type of the IP addresses.
Permitted values: IPV4, IPV6.
type: string
enum:
- IPV4
- IPV6
fixedAddresses:
description: >
Fixed addresses to assign (from the subnet defined by
"subnetId" if provided).
Exactly one of "fixedAddresses", "numDynamicAddresses" or
"ipAddressRange" shall be present.
type: array
items:
$ref: "#/definitions/IpAddress"
numDynamicAddresses:
description: >
Number of dynamic addresses to assign (from the subnet defined
by "subnetId" if provided).
Exactly one of "fixedAddresses", "numDynamicAddresses" or
"ipAddressRange" shall be present.
type: integer
addressRange:
description: >
An IP address range to be used, e.g. in case of egress
connections.
In case this attribute is present, IP addresses from the range
will be used.
type: object
required:
- minAddress
- maxAddress
properties:
minAddress:
description: >
Lowest IP address belonging to the range.
$ref: "#/definitions/IpAddress"
maxAddress:
description: >
Highest IP address belonging to the range.
$ref: "#/definitions/IpAddress"
subnetId:
description: >
Subnet defined by the identifier of the subnet resource in the
VIM.
In case this attribute is present, IP addresses from that
subnet will be assigned; otherwise, IP addresses not bound to
a subnet will be assigned.
$ref: "#/definitions/IdentifierInVim"
Reference to the virtualised resource realizing this link port.
$ref: "#/definitions/ResourceHandle"
KeyValuePairs:
trunkResourceId:
description: >
Identifier of the trunk resource in the VIM.
Shall be present if the present link port corresponds to the parent
port that the trunk resource is associated with. See note.
$ref: "#/definitions/IdentifierInVim"
GrantedLcmOperationType:
description: >
This type represents a list of key-value pairs. The order of the pairs in the list is not significant.
In JSON, a set of key- value pairs is represented as an object. It shall comply with the provisions
defined in clause 4 of IETF RFC 7159.
type: object
The enumeration GrantedLcmOperationType defines the permitted values
to represent VNF lifecycle operation types in grant requests.
Value | Description
------|------------
INSTANTIATE | Represents the "Instantiate VNF" LCM operation.
SCALE | Represents the "Scale VNF" LCM operation.
SCALE_TO_LEVEL | Represents the "Scale VNF to Level" LCM operation.
CHANGE_FLAVOUR | Represents the "Change VNF Flavour" LCM operation.
TERMINATE | Represents the "Terminate VNF" LCM operation.
HEAL | Represents the "Heal VNF" LCM operation.
OPERATE | Represents the "Operate VNF" LCM operation.
CHANGE_EXT_CONN | Represents the "Change external VNF connectivity" LCM operation.
CHANGE_VNFPKG | Represents the "Change current VNF package" LCM operation.
CREATE_SNAPSHOT | Represents the "Create VNF snapshot" LCM operation.
REVERT_TO_SNAPSHOT | Represents the "Revert to VNF snapshot" LCM operation.
type: string
enum:
- INSTANTIATE
- SCALE
- SCALE_TO_LEVEL
- CHANGE_FLAVOUR
- TERMINATE
- HEAL
- OPERATE
- CHANGE_EXT_CONN
- CHANGE_VNFPKG
- CREATE_SNAPSHOT
- REVERT_TO_SNAPSHOT
LcmOperationType:
description: >
The enumeration LcmOpType defines the permitted values to represent
VNF lifecycle operation types in VNF lifecycle management operation
occurrence resources and VNF lifecycle management operation occurrence
notifications.
Value | Description
------|------------
INSTANTIATE | Represents the "Instantiate VNF" LCM operation.
......@@ -363,7 +729,10 @@ definitions:
HEAL | Represents the "Heal VNF" LCM operation.
OPERATE | Represents the "Operate VNF" LCM operation.
CHANGE_EXT_CONN | Represents the "Change external VNF connectivity" LCM operation.
MODIFY_INFO | Represents the "Modify VNF Information" LCM operation.
MODIFY_INFO | Represents the "Modify VNF Information" LCM operation.
CREATE_SNAPSHOT | Represents the "Create VNF Snapshot" LCM operation.
REVERT_TO_SNAPSHOT | Represents the “Revert-To VNF Snapshot" LCM operation.
CHANGE_VNFPKG | Represents the "Change current VNF package" LCM operation.
type: string
enum:
- INSTANTIATE
......@@ -374,23 +743,26 @@ definitions:
- HEAL
- OPERATE
- CHANGE_EXT_CONN
- MODIFY_INFO
- MODIFY_INFO
- CREATE_SNAPSHOT
- REVERT_TO_SNAPSHOT
- CHANGE_VNFPKG
ProblemDetails:
#SOL003 location: 4.3.5.3
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
IETF RFC 7807 is reproduced inthis structure. Compared to the
general framework defined in IETF RFC 7807, 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
an error. IETF RFC 7807 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].
IETF RFC 7807.
type: object
required:
- status
......@@ -398,7 +770,7 @@ definitions:
properties:
type:
description: >
A URI reference according to IETF RFC 3986 [5] that identifies the
A URI reference according to IETF RFC 3986 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
......@@ -435,49 +807,15 @@ definitions:
format: URI
#TODO: How to express "any additional attributes"?
ResourceHandle:
required:
- vimConnectionId
- resourceId
type: object
description: >
This type represents the information that allows addressing a virtualised
resource that is used by a VNF instance. Information about the resource
is available from the VIM.
properties:
vimConnectionId:
description: >
Identifier of the VIM connection to manage the resource. This
attribute shall only be supported and present if VNF-related resource
management in direct mode is applicable. The applicable
"VimConnectionInfo" structure, which is referenced by
vimConnectionId, can be obtained from the "vimConnectionInfo"
attribute of the "VnfInstance" structure.
$ref: "#/definitions/Identifier"
resourceProviderId:
description: >
Identifier of the entity responsible for the management of the
resource. This attribute shall only be supported and present when
VNF-related resource management in indirect mode is applicable. The
identification scheme is outside the scope of the present document.
$ref: "#/definitions/Identifier"
resourceId:
description: >
Identifier of the resource in the scope of the VIM or the resource
provider.
$ref: "#/definitions/IdentifierInVim"
vimLevelResourceType:
description: >
Type of the resource in the scope of the VIM or the resource
provider.
type: string
#TODO: Note of Table 4.4.1.7-1
SubscriptionAuthentication:
description: >
* 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
type: object
required:
required:
- authType
properties:
properties:
authType:
description: >
Defines the types of Authentication / Authorization which the API
......@@ -493,7 +831,7 @@ definitions:
server is authenticated, but also the client is authenticated
during the TLS tunnel setup.
type: array
items:
items:
type: string
enum:
- BASIC
......@@ -530,325 +868,64 @@ definitions:
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.
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.
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.
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.
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.
$ref: "#/definitions/Uri"
Uri:
LcmCoordResultType:
description: >
String formatted according to IETF RFC 3986.
The enumeration LcmCoordResultType defines the permitted values
to represent the result of executing an LCM coordination action.
The coordination result also implies the action to be performed by
the VNFM as the follow-up to this coordination.
Value | Description
------|------------
CONTINUE | The related LCM operation shall be continued, staying in the state "PROCESSING".
ABORT | The related LCM operation shall be aborted by transitioning into the state "FAILED_TEMP".
CANCELLED | The coordination action has been cancelled upon request of the API consumer, i.e. the VNFM.
The related LCM operation shall be aborted by transitioning into the state "FAILED_TEMP".
type: string
enum:
- CONTINUE
- ABORT
- CANCELLED
VimConnectionInfo:
description: >
This type represents parameters to connect to a VIM for managing the
resources of a VNF instance.
This structure is used to convey VIM-related parameters over the Or-Vnfm
interface. Additional parameters for a VIM may be configured into the
VNFM by means outside the scope of the present document, and bound to
the identifier of that VIM.
type: object
required:
- id
- vimType
properties:
id:
description: >
The identifier of the VIM Connection. This identifier is managed by
the NFVO.
$ref: "#/definitions/Identifier"
vimId:
description: >
The identifier of the VIM instance. This identifier is managed by
the NFVO.
Shall be present to address additional information about the VIM if
such information has been configured into the VNFM by means outside
the scope of the present document, and should be absent otherwise.
$ref: "#/definitions/Identifier"
vimType:
description: >
Discriminator for the different types of the VIM information. The
value of this attribute determines the structure of the
"interfaceInfo" and "accessInfo" attributes, based on the type of the
VIM. The set of permitted values is expected to change over time as
new types or versions of VIMs become available.
The ETSI NFV registry of VIM-related information provides access to
information about VimConnectionInfo definitions for various VIM
types. The structure of the registry is defined in Annex C of SOL003.
type: string
interfaceInfo:
description: >
Information about the interface or interfaces to the VIM, if
applicable, such as the URI of an interface endpoint to
communicate with the VIM. The applicable keys are dependent on the
content of vimType.
Alternatively, such information may have been configured into the
VNFM and bound to the vimId.
$ref: "#/definitions/KeyValuePairs"
accessInfo:
description: >
Authentication credentials for accessing the VIM, and other
access-related information such as tenants or infrastructure
resource groups (see note). The applicable keys are dependent on the
content of vimType.
If the VimConnectionInfo structure is part of an HTTP response
payload body, sensitive attributes that are children of this attributes
(such as passwords) shall not be included.
If the VimConnectionInfo structure is part of an HTTP request payload
body, sensitive attributes that are children of this attribute (such
as passwords) shall be present if they have not been provisioned out
of band.
$ref: "#/definitions/KeyValuePairs"
extra:
description: >
VIM type specific additional information. The applicable structure,
and whether or not this attribute is available, is dependent on the
content of vimType.
$ref: "#/definitions/KeyValuePairs"
VnfExtCpConfig:
description: >
This type represents an externally provided link port or network address
information per instance of an external connection point. In case a link
port is provided, the VNFM shall use that link port when connecting the
external CP to the external VL. In a link port is not provided, the VNFM
shall create a link port on the external VL, and use that link port to
connect the external CP to the external VL.
type: object
properties:
cpInstanceId:
description: >
Identifier of the external CP instance to which this set of
configuration parameters is requested to be applied.
Shall be present if this instance has already been created.
$ref: "#/definitions/IdentifierInVnf"
linkPortId:
description: >
Identifier of a pre-configured link port to which the external CP
will be associated.
The following conditions apply to the attributes "linkPortId" and
"cpProtocolData":
* The "linkPortId" and "cpProtocolData" attributes shall both be
absent for the deletion of an existing external CP instance
addressed by cpInstanceId.
* At least one of these attributes shall be present for a
to-be-created external CP instance or an existing external
CP instance.
* If the "linkPortId" attribute is absent, the VNFM shall create a
link port.
* If the "cpProtocolData" attribute is absent, the "linkPortId"
attribute shall be provided referencing a pre-created link port,
and the VNFM can use means outside the scope of the present
document to obtain the pre-configured address information for the
connection point from the resource representing the link port.
* If both "cpProtocolData" and "linkportId" are provided, the API
consumer shall ensure that the cpProtocolData can be used with the
pre-created link port referenced by "linkPortId".
$ref: "#/definitions/Identifier"
cpProtocolData:
description: >
Parameters for configuring the network protocols on the link port
that connects the CP to a VL.
The following conditions apply to the attributes "linkPortId" and
"cpProtocolData":
* The "linkPortId" and "cpProtocolData" attributes shall both be
absent for the deletion of an existing external CP instance
addressed by cpInstanceId.
* At least one of these attributes shall be present for a
to-be-created external CP instance or an existing external
CP instance.
* If the "linkPortId" attribute is absent, the VNFM shall create a
link port.
* If the "cpProtocolData" attribute is absent, the "linkPortId"
attribute shall be provided referencing a pre-created link port,
and the VNFM can use means outside the scope of the present
document to obtain the pre-configured address information for the
connection point from the resource representing the link port.
* If both "cpProtocolData" and "linkportId" are provided, the API
consumer shall ensure that the cpProtocolData can be used with the
pre-created link port referenced by "linkPortId".
type: array
items:
$ref: "#/definitions/CpProtocolData"
VnfExtCpData:
description: >
This type represents configuration information for external CPs created
from a CPD.
type: object
required:
- cpdId
properties:
cpdId:
description: >
The identifier of the CPD in the VNFD.
$ref: "#/definitions/IdentifierInVnfd"
cpConfig:
description: >
List of instance data that need to be configured on the CP instances
created from the respective CPD.
type: array
items:
$ref: "#/definitions/VnfExtCpConfig"
VnfInfoModificationRequest:
description: >
This type represents attribute modifications for an
"Individual VNF instance" resource, i.e. modifications to a resource
representation based on the "VnfInstance" data type.
type: object
properties:
vnfInstanceName:
description: >
New value of the "vnfInstanceName" attribute in "VnfInstance", or
"null" to remove the attribute.
type: string
vnfInstanceDescription:
description: >
New value of the "vnfInstanceDescription" attribute in
"VnfInstance", or "null" to remove the attribute.
type: string
vnfPkgId:
description: >
New value of the "vnfPkgId" attribute in "VnfInstance".
The value "null" is not permitted.
$ref: "#/definitions/Identifier"
vnfConfigurableProperties:
description: >
Modifications of the "vnfConfigurableProperties" attribute in
"VnfInstance". If present, these modifications shall be applied
according to the rules of JSON Merge PATCH (see IETF RFC 7396).
$ref: "#/definitions/KeyValuePairs"
metadata:
description: >
Modifications of the "metadata" attribute in "VnfInstance". If
present, these modifications shall be applied according to the rules
of JSON Merge PATCH (see IETF RFC 7396).
$ref: "#/definitions/KeyValuePairs"
extensions:
description: >
Modifications of the "extensions" attribute in "VnfInstance". If
present, these modifications shall be applied according to the rules
of JSON Merge PATCH (see IETF RFC 7396).
$ref: "#/definitions/KeyValuePairs"
vimConnectionInfo:
description: >
New content of certain entries in the "vimConnectionInfo" attribute
array in "VnfInstance", as defined below this table.
$ref: "#/definitions/VimConnectionInfo"
VnfInstanceSubscriptionFilter:
LcmOperationForCoordType:
description: >
This type represents subscription filter criteria to match VNF
instances.
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.
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.
type: array
items:
$ref: "#/definitions/Identifier"
vnfProductsFromProviders:
description: >
If present, match VNF instances that belong to VNF products from
certain providers.
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.
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:
- vnfSoftwareVersion
properties:
vnfSoftwareVersion:
description: >
Software version to match.
$ref: "#/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/Version"
vnfInstanceIds:
description: >
If present, match VNF instances with an instance identifier listed
in this attribute.
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: array
items:
$ref: "#/definitions/Identifier"
vnfInstanceNames:
description: >
If present, match VNF instances with a VNF Instance Name listed in
this attribute.
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: array
items:
type: string
The enumeration LcmOperationForCoordType defines the permitted values to
represent VNF lifecycle operation types in VNF LCM operation coordination actions.
* INSTANTIATE: Represents the "Instantiate VNF" LCM operation.
* SCALE: Represents the "Scale VNF" LCM operation.
* SCALE_TO_LEVEL: Represents the "Scale VNF to Level" LCM operation.
* CHANGE_FLAVOUR: Represents the "Change VNF Flavour" LCM operation.
* TERMINATE: Represents the "Terminate VNF" LCM operation.
* HEAL: Represents the "Heal VNF" LCM operation.
* OPERATE: Represents the "Operate VNF" LCM operation.
* CHANGE_EXT_CONN: Represents the "Change external VNF connectivity" LCM operation.
* MODIFY_INFO: Represents the "Modify VNF Information" LCM operation.
* CREATE_SNAPSHOT: Represents the "Create VNF Snapshot" LCM operation.
* REVERT_TO_SNAPSHOT: Represents the "Revert To VNF Snapshot" LCM operation.
* CHANGE_VNFPKG: Represents the "Change current VNF package" LCM operation.
type: string
enum:
- INSTANTIATE
- SCALE
- SCALE_TO_LEVEL
- CHANGE_FLAVOUR
- TERMINATE
- HEAL
- OPERATE
- CHANGE_EXT_CONN
- MODIFY_INFO
- CREATE_SNAPSHOT
- REVERT_TO_SNAPSHOT
- CHANGE_VNFPKG
\ No newline at end of file
swagger: "2.0"
openapi: 3.0.2
info:
title: SOL002 - VNF Configuration interface
description: |
SOL002 - VNF Configuration Interface
info:
version: "2.3.1"
title: "DRAFT VNF Configuration interface"
description: >
DRAFT VNF Configuration interface of ETSI NFV SOL002
IMPORTANT: Please note that this file might be not aligned to the current
version of the ETSI Group Specification it refers to and has not been
approved by the ETSI NFV ISG. In case of discrepancies the published ETSI
Group Specification takes precedence.
Please report bugs to https://forge.etsi.org/bugzilla/buglist.cgi?component=Nfv-Openapis&list_id=61&product=NFV&resolution=---
termsOfService: "http://etsi.org"
contact:
name: "NFV-SOL WG"
version of the ETSI Group Specification it refers to. In case of
discrepancies the published ETSI Group Specification takes precedence.
Please report bugs to https://forge.etsi.org/rep/nfv/SOL002-SOL003/issues
contact:
name: NFV-SOL WG
license:
name: "ETSI Forge copyright notice"
name: ETSI Forge copyright notice
url: https://forge.etsi.org/etsi-forge-copyright-notice.txt
version: 1.3.0-impl:etsi.org:ETSI_NFV_OpenAPI:1
externalDocs:
description: ETSI GS NFV-SOL 002 V3.7.1
url: https://www.etsi.org/deliver/etsi_gs/NFV-SOL/001_099/002/03.07.01_60/gs_NFV-SOL002v030701p.pdf
basePath: /vnfconfig/v1
servers:
- url: http://127.0.0.1/vnfconfig/v1
- url: https://127.0.0.1/vnfconfig/v1
schemes:
- http
- https
consumes:
- application/json
paths:
/api_versions:
$ref: '../../endpoints/SOL002SOL003_endpoints.yaml#/endpoints/api-versions'
produces:
- application/json
/configuration:
parameters:
- $ref: ../../components/SOL002_params.yaml#/components/parameters/Version
- $ref: ../../components/SOL002_params.yaml#/components/parameters/Authorization
get:
description: |
The API consumer can use this method to read configuration information about a VNF instance and/or its VNFC instances.
See clause 9.4.2.3.2.
responses:
"200":
$ref: '#/components/responses/Configuration.Get.200'
"400":
$ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/400
"401":
$ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/401
"403":
$ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/403
"404":
$ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/404
"405":
$ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/405
"406":
$ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/406
"422":
$ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/422
"429":
$ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/429
"500":
$ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/500
"503":
$ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/503
"504":
$ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/504
patch:
description: |
This method sets or modifies a configuration resource. See clause 9.4.2.3.4.
parameters:
- $ref: ../../components/SOL002_params.yaml#/components/parameters/If-Unmodified-Since
- $ref: ../../components/SOL002_params.yaml#/components/parameters/If-Match
requestBody:
$ref: '#/components/requestBodies/ConfigurationRequest'
responses:
"200":
$ref: '#/components/responses/Configuration.Patch.200'
"400":
$ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/400
"401":
$ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/401
"403":
$ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/403
"404":
$ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/404
"405":
$ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/405
"406":
$ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/406
"412":
$ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/412
"416":
$ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/416
"422":
$ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/422
"429":
$ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/429
"500":
$ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/500
"503":
$ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/503
"504":
$ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/504
paths:
components:
requestBodies:
ConfigurationRequest:
description: |
The parameter for the configuration modification, as defined in clause 9.5.2.2.
content:
application/json:
schema:
$ref: ./definitions/SOL002VNFConfiguration_def.yaml#/definitions/VnfConfigModifications
required: true
/configuration:
get:
summary: Read VNF/VNFC configuration from VNF.
description: >
The client can use this method to read configuration information about a VNF instance and/or its VNFC instances.
responses:
200:
description: >
Configuration information about a VNF instance was read successfully.
The response body shall contain a representation of the configuration resource.
schema:
$ref: 'definitions/VnfConfiguration_def.yaml#/definitions/VnfConfiguration'
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/VNFConfiguration_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' }
patch:
summary: Modify VNF/VNFC configuration.
description: This method sets or modifies a configuration resource.
parameters:
- name: configModifications
description: The parameter for the configuration modification.
required: true
in: body
schema:
$ref: 'definitions/VnfConfiguration_def.yaml#/definitions/VnfConfigModifications'
responses:
200:
description: >
The request was accepted and completed. The response body shall contain the parameters
of the configuration modification that was applied to the configuration resource.
schema:
$ref: 'definitions/VnfConfiguration_def.yaml#/definitions/VnfConfigModifications'
412: { $ref: '../../responses/SOL002SOL003_resp.yaml#/responses/412' }
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/VNFConfiguration_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' }
responses:
Configuration.Get.200:
description: |
200 OK
Shall be returned when configuration information about a VNF instance has been read successfully. The response
body shall contain a representation of the configuration resource.
headers:
Version:
description: The used API version.
style: simple
explode: false
schema:
type: string
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.
style: simple
explode: false
schema:
type: string
Content-Type:
description: The MIME type of the body of the response.
style: simple
explode: false
schema:
type: string
ETag:
description: >
Used to provide the current entity-tag for the selected resource representation. It can be sent in
"200 OK", "201 Created" and "204 No Content" responses.
style: simple
schema:
type: string
Last-Modified:
description: >
Used to provide a timestamp indicating the date and time at which the server believes the selected resource
representation was last modified. It can be sent in "200 OK", "201 Created" and "204 No Content" responses.
style: simple
schema:
type: string
format: date-time
content:
application/json:
schema:
$ref: ./definitions/SOL002VNFConfiguration_def.yaml#/definitions/VnfConfiguration
Configuration.Patch.200:
description: |
200 OK
Shall be returned when the request has been accepted and completed. The response body shall contain the
parameters of the configuration modification that was applied to the configuration resource.
headers:
Version:
description: The used API version.
style: simple
explode: false
schema:
type: string
Content-Type:
description: The MIME type of the body of the response.
style: simple
explode: false
schema:
type: string
ETag:
description: >
Used to provide the current entity-tag for the selected resource representation. It can be sent in
"200 OK", "201 Created" and "204 No Content" responses.
style: simple
schema:
type: string
Last-Modified:
description: >
Used to provide a timestamp indicating the date and time at which the server believes the selected resource
representation was last modified. It can be sent in "200 OK", "201 Created" and "204 No Content" responses.
style: simple
schema:
type: string
format: date-time
content:
application/json:
schema:
$ref: ./definitions/SOL002VNFConfiguration_def.yaml#/definitions/VnfConfigModifications
\ No newline at end of file
definitions:
VnfConfiguration:
description: >
This type represents configuration parameters of a VNF instance and its VNFC instances.
type: object
required:
- vnfConfigurationData
properties:
vnfConfigurationData:
description: >
Configuration parameters of the VNF instance.
$ref: '#/definitions/VnfConfigurationData'
vnfcConfigurationData:
description: >
Configuration parameters of the VNFC instances.
type: array
items:
$ref: '#/definitions/VnfcConfigurationData'
# Copyright (c) ETSI 2017.
# https://forge.etsi.org/etsi-forge-copyright-notice.txt
definitions:
VnfConfigModifications:
description: >
This type represents request parameters for the "Set Configuration" operation.
......@@ -27,64 +10,93 @@ definitions:
* NOTE 2: The VnfcConfiguration data type can only be used to modify the configuration
of existing VNFC instances.
type: object
anyOf:
- required:
- vnfConfigurationData
- required:
- vnfcConfigurationData
properties:
vnfConfigurationData:
description: >
Modifications to configuration data for the VNF instance. See NOTE 1.
If present, the modifications of the "vnfConfigurationData" attribute shall
be applied according to the rules of JSON Merge PATCH (see IETF RFC 7396).
$ref: '#/definitions/VnfConfigurationData'
$ref: '#/definitions/VnfConfigurationData'
vnfcConfigurationData:
description: >
Modifications to configuration data for certain VNFC instances. See NOTE 1 and NOTE 2.
If present, the modifications of the "vnfcConfigurationData" attribute shall follow these
If present, the modifications of the "vnfcConfigurationData" attribute shall follow these
provisions:
Modifying an attribute that is an array of objects of type "VnfcConfigurationData".
Assumptions:
1) "oldList" is the "VnfcConfigurationData" array to be modified and "newList"
is the "VnfcConfigurationData" array that contains the changes.
2) "oldEntry" is an entry in "oldList" and "newEntry" is an entry in "newList".
3) A "newEntry" has a "corresponding entry" if there exists an "oldEntry" that
has the same content of the "vnfcInstanceId" attribute as the "newEntry";
a "newEntry" has no corresponding entry if no such "oldEntry" exists.
4) In any array of "VnfcConfigurationData" structures, the content of "vnfcInstanceId"
is unique (i.e. there shall be no two entries with the same content of "vnfcInstanceId").
1) "oldList" is the "VnfcConfigurationData" array to be modified and "newList"
is the "VnfcConfigurationData" array that contains the changes.
2) "oldEntry" is an entry in "oldList" and "newEntry" is an entry in "newList".
3) A "newEntry" has a "corresponding entry" if there exists an "oldEntry" that
has the same content of the "vnfcInstanceId" attribute as the "newEntry";
a "newEntry" has no corresponding entry if no such "oldEntry" exists.
4) In any array of "VnfcConfigurationData" structures, the content of "vnfcInstanceId"
is unique (i.e. there shall be no two entries with the same content of "vnfcInstanceId").
Provisions:
1) For each "newEntry" in "newList" that has no corresponding entry in "oldList",
the "oldList" array shall be modified by adding that "newEntry".
1) For each "newEntry" in "newList" that has no corresponding entry in "oldList",
the "oldList" array shall be modified by adding that "newEntry".
2) For each "newEntry" in "newList" that has a corresponding "oldEntry" in "oldList",
the value of "oldEntry" shall be updated with the value of "newEntry" according to
the rules of JSON Merge PATCH (see IETF RFC 7396 ).
2) For each "newEntry" in "newList" that has a corresponding "oldEntry" in "oldList",
the value of "oldEntry" shall be updated with the value of "newEntry" according to
the rules of JSON Merge PATCH (see IETF RFC 7396 ).
type: array
items:
$ref: '#/definitions/VnfcConfigurationData'
$ref: '#/definitions/VnfcConfigurationData'
vnfcConfigurationDataDeleteIds:
description: >
List of identifiers entries to be deleted from the 'vnfcConfigurationData" attribute array to be used
as "deleteIdList" as defined below this table.
type: array
items:
$ref: "../../General_Definitions/SOL002_def.yaml#/definitions/Identifier"
VnfConfiguration:
description: >
This type represents configuration parameters of a VNF instance and its VNFC instances.
type: object
required:
- vnfConfigurationData
properties:
vnfConfigurationData:
description: >
Configuration parameters of the VNF instance.
$ref: '#/definitions/VnfConfigurationData'
vnfcConfigurationData:
description: >
Configuration parameters of the VNFC instances.
type: array
items:
$ref: '#/definitions/VnfcConfigurationData'
VnfConfigurationData:
description: >
This type represents configuration parameters of a VNF instance.
* NOTE: ETSI GS NFV-SOL 001 specifies the structure and format of
the VNFD based on TOSCA specifications.
type: object
properties:
extCpConfig:
description: >
Configuration parameters for the external CPs of the VNF instance.
$ref: '#/definitions/CpConfiguration'
dhcpServer:
description: >
IP address of the DHCP server that the VNF instance can use to obtain
IP addresses to be assigned to its external CPs.
$ref: '../../../definitions/SOL002SOL003_def.yaml#/definitions/IpAddress'
type: array
items:
$ref: '#/definitions/CpConfiguration'
vnfSpecificData:
description: >
Additional configurable properties of the VNF instance declared in the
VNFD as "VnfConfigurableProperties".
$ref: '../../../definitions/SOL002SOL003_def.yaml#/definitions/KeyValuePairs'
VNFD as "VnfConfigurableProperties". see note.
$ref: '../../General_Definitions/SOL002_def.yaml#/definitions/KeyValuePairs'
VnfcConfigurationData:
description: >
This type represents configuration parameters of a VNFC instance.
* NOTE: ETSI GS NFV-SOL 001 specifies the structure and format
of the VNFD based on TOSCA specifications.
type: object
required:
- vnfcInstanceId
......@@ -92,22 +104,19 @@ definitions:
vnfcInstanceId:
description: >
Identifier of a VNFC instance to which this set of configuration data applies.
$ref: '../../../definitions/SOL002SOL003_def.yaml#/definitions/IdentifierInVnf'
extCpConfig:
description: >
Configuration parameters for the external CPs of the VNFC instance.
$ref: '#/definitions/CpConfiguration'
dhcpServer:
The identifier references the "id" attribute in a "VnfcInfo" structure.
$ref: '../../General_Definitions/SOL002_def.yaml#/definitions/IdentifierInVnf'
intCpConfig:
description: >
IP address of the DHCP server that the VNF instance can use to obtain
IP addresses to be assigned to its external CPs.
$ref: '../../../definitions/SOL002SOL003_def.yaml#/definitions/IpAddress'
Configuration parameters for the internal CPs of the VNFC instance.
type: array
items:
$ref: '#/definitions/CpConfiguration'
vnfcSpecificData:
description: >
Additional configurable properties of the VNFC instance declared in the
VNFD as "VnfcConfigurableProperties".
$ref: '../../../definitions/SOL002SOL003_def.yaml#/definitions/KeyValuePairs'
VNFD as "VnfcConfigurableProperties". See note.
$ref: '../../General_Definitions/SOL002_def.yaml#/definitions/KeyValuePairs'
CpConfiguration:
description: >
......@@ -121,17 +130,17 @@ definitions:
cpId:
description: >
Identifier of a CP instance within the namespace of a specific VNF instance or a VNFC instance.
$ref: '../../../definitions/SOL002SOL003_def.yaml#/definitions/IdentifierInVnf'
$ref: '../../General_Definitions/SOL002_def.yaml#/definitions/IdentifierInVnf'
cpdId:
description: >
Identifier of the CPD in the VNFD.
$ref: '../../../definitions/SOL002SOL003_def.yaml#/definitions/IdentifierInVnfd'
$ref: '../../General_Definitions/SOL002_def.yaml#/definitions/IdentifierInVnfd'
addresses:
description: >
Network address and port assigned to the CP.
type: array
items:
$ref: '#/definitions/CpAddress'
$ref: '#/definitions/CpAddress'
CpAddress:
description: >
......@@ -139,6 +148,16 @@ definitions:
* NOTE 1: Either "address" or "useDynamicAddress" shall be present.
* NOTE 2: At least one of "macAddress" and "ipAddress" shall be present.
type: object
oneOf:
- required:
- address
- required:
- useDynamicAddress
anyOf:
- required:
- macAddress
- required:
- ipAddress
properties:
address:
description: >
......@@ -148,11 +167,11 @@ definitions:
macAddress:
description: >
Mac address. See NOTE 2.
$ref: '../../../definitions/SOL002SOL003_def.yaml#/definitions/MacAddress'
$ref: '../../General_Definitions/SOL002_def.yaml#/definitions/MacAddress'
ipAddress:
description: >
IP address. See NOTE 2.
$ref: '../../../definitions/SOL002SOL003_def.yaml#/definitions/IpAddress'
$ref: '../../General_Definitions/SOL002_def.yaml#/definitions/IpAddress'
useDynamicAddress:
description: >
Set to true if an address shall be assigned dynamically. Otherwise set to false.
......@@ -161,8 +180,4 @@ definitions:
port:
description: >
The port assigned to the CP instance (e.g. IP port number, Ethernet port number, etc.).
type: integer
type: integer
\ No newline at end of file
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
schema:
$ref: "../../../definitions/SOL002SOL003_def.yaml#/definitions/ProblemDetails"
openapi: 3.0.2
info:
title: SOL002 - VNF Fault Management interface
description: |
SOL002 - VNF Fault Management interface
IMPORTANT: Please note that this file might be not aligned to the current
version of the ETSI Group Specification it refers to. In case of
discrepancies the published ETSI Group Specification takes precedence.
Please report bugs to https://forge.etsi.org/rep/nfv/SOL002-SOL003/issues
contact:
name: NFV-SOL WG
license:
name: ETSI Forge copyright notice
url: https://forge.etsi.org/etsi-forge-copyright-notice.txt
version: 1.5.0-impl:etsi.org:ETSI_NFV_OpenAPI:1
externalDocs:
description: ETSI GS NFV-SOL 002 V3.7.1
url: https://www.etsi.org/deliver/etsi_gs/NFV-SOL/001_099/002/03.07.01_60/gs_NFV-SOL002v030701p.pdf
servers:
- url: http://127.0.0.1/vnffm/v1
- url: https://127.0.0.1/vnffm/v1
paths:
/api_versions:
$ref: '../../endpoints/SOL002SOL003_endpoints.yaml#/endpoints/api-versions'
/alarms:
parameters:
- $ref: ../../components/SOL002_params.yaml#/components/parameters/Version
- $ref: ../../components/SOL002_params.yaml#/components/parameters/Authorization
get:
description: |
The API consumer can use this method to retrieve information about the alarm list. See clause 7.4.2.3.2.
parameters:
- $ref: ../../components/SOL002_params.yaml#/components/parameters/Accept
- $ref: ../../components/SOL002_params.yaml#/components/parameters/ContentType
- $ref: '#/components/parameters/filter_alarms'
- $ref: ../../components/SOL002_params.yaml#/components/parameters/nextpage_opaque_marker_vnfm
responses:
"200":
$ref: '#/components/responses/Alarms.Get.200'
"400":
$ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/400
"401":
$ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/401
"403":
$ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/403
"404":
$ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/404
"405":
$ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/405
"406":
$ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/406
"416":
$ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/416
"422":
$ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/422
"429":
$ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/429
"500":
$ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/500
"503":
$ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/503
"504":
$ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/504
/alarms/{alarmId}:
parameters:
- $ref: '#/components/parameters/AlarmId'
- $ref: ../../components/SOL002_params.yaml#/components/parameters/Version
- $ref: ../../components/SOL002_params.yaml#/components/parameters/Authorization
get:
description: |
The API consumer can use this method to read an individual alarm. See clause 7.4.3.3.2.
parameters:
- $ref: ../../components/SOL002_params.yaml#/components/parameters/Accept
- $ref: ../../components/SOL002_params.yaml#/components/parameters/ContentType
responses:
"200":
$ref: '#/components/responses/IndividualAlarm.Get.200'
"400":
$ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/400
"401":
$ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/401
"403":
$ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/403
"404":
$ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/404
"405":
$ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/405
"406":
$ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/406
"416":
$ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/416
"422":
$ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/422
"429":
$ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/429
"500":
$ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/500
"503":
$ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/503
"504":
$ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/504
patch:
description: |
This method modifies an individual alarm resource. See clause 7.4.3.3.4.
parameters:
- $ref: ../../components/SOL002_params.yaml#/components/parameters/Accept
- $ref: ../../components/SOL002_params.yaml#/components/parameters/ContentType
- $ref: ../../components/SOL002_params.yaml#/components/parameters/If-Unmodified-Since
- $ref: ../../components/SOL002_params.yaml#/components/parameters/If-Match
requestBody:
$ref: '#/components/requestBodies/IndividualAlarmRequest'
responses:
"200":
$ref: '#/components/responses/IndividualAlarm.Patch.200'
"409":
$ref: '#/components/responses/IndividualAlarm.Patch.409'
"400":
$ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/400
"401":
$ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/401
"403":
$ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/403
"404":
$ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/404
"405":
$ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/405
"406":
$ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/406
"412":
$ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/412
"416":
$ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/416
"422":
$ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/422
"429":
$ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/429
"500":
$ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/500
"503":
$ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/503
"504":
$ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/504
/alarms/{alarmId}/escalate:
parameters:
- $ref: '#/components/parameters/AlarmId'
- $ref: ../../components/SOL002_params.yaml#/components/parameters/Version
- $ref: ../../components/SOL002_params.yaml#/components/parameters/Authorization
post:
description: |
The POST method enables the API consumer to escalate the perceived severity of an alarm that is represented
by an individual alarm resource. See clause 7.4.4.3.1.
requestBody:
$ref: '#/components/requestBodies/IndividualAlarmEscalateRequest'
responses:
"204":
$ref: '#/components/responses/IndividualAlarmEscalate.Post.204'
"400":
$ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/400
"401":
$ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/401
"403":
$ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/403
"404":
$ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/404
"405":
$ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/405
"406":
$ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/406
"416":
$ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/416
"422":
$ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/422
"429":
$ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/429
"500":
$ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/500
"503":
$ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/503
"504":
$ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/504
/subscriptions:
parameters:
- $ref: ../../components/SOL002_params.yaml#/components/parameters/Version
- $ref: ../../components/SOL002_params.yaml#/components/parameters/Authorization
get:
description: |
The API consumer can use this method to retrieve the list of active subscriptions for VNF alarms subscribed
by the API consumer. It can be used e.g. for resynchronization after error situations. See clause 7.4.5.3.2.
parameters:
- $ref: ../../components/SOL002_params.yaml#/components/parameters/Accept
- $ref: ../../components/SOL002_params.yaml#/components/parameters/ContentType
- $ref: '#/components/parameters/filter_subscriptions'
- $ref: ../../components/SOL002_params.yaml#/components/parameters/nextpage_opaque_marker_vnfm
responses:
"200":
$ref: '#/components/responses/Subscriptions.Get.200'
"400":
$ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/400
"401":
$ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/401
"403":
$ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/403
"404":
$ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/404
"405":
$ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/405
"406":
$ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/406
"416":
$ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/416
"422":
$ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/422
"429":
$ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/429
"500":
$ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/500
"503":
$ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/503
"504":
$ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/504
post:
description: |
The POST method creates a new subscription. See clause 7.4.5.3.1.
parameters:
- $ref: ../../components/SOL002_params.yaml#/components/parameters/Accept
- $ref: ../../components/SOL002_params.yaml#/components/parameters/ContentType
requestBody:
$ref: '#/components/requestBodies/FmSubscriptionRequest'
responses:
"201":
$ref: '#/components/responses/Subscriptions.Post.201'
"303":
$ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/303
"400":
$ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/400
"401":
$ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/401
"403":
$ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/403
"404":
$ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/404
"405":
$ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/405
"406":
$ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/406
"416":
$ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/416
"422":
$ref: '#/components/responses/Subscriptions.Post.422'
"429":
$ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/429
"500":
$ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/500
"503":
$ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/503
"504":
$ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/504
/subscriptions/{subscriptionId}:
parameters:
- $ref: '#/components/parameters/SubscriptionId'
- $ref: ../../components/SOL002_params.yaml#/components/parameters/Version
- $ref: ../../components/SOL002_params.yaml#/components/parameters/Authorization
get:
description: |
The API consumer can use this method for reading an individual subscription for VNF alarms subscribed
by the API consumer. See clause 7.4.6.3.2.
parameters:
- $ref: ../../components/SOL002_params.yaml#/components/parameters/Accept
- $ref: ../../components/SOL002_params.yaml#/components/parameters/ContentType
responses:
"200":
$ref: '#/components/responses/IndividualSubscription.Get.200'
"400":
$ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/400
"401":
$ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/401
"403":
$ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/403
"404":
$ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/404
"405":
$ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/405
"406":
$ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/406
"416":
$ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/416
"422":
$ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/422
"429":
$ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/429
"500":
$ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/500
"503":
$ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/503
"504":
$ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/504
delete:
description: |
This method terminates an individual subscription. See clause 7.4.6.3.5.
responses:
"204":
$ref: '#/components/responses/IndividualSubscription.Delete.204'
"400":
$ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/400
"401":
$ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/401
"403":
$ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/403
"404":
$ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/404
"405":
$ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/405
"406":
$ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/406
"416":
$ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/416
"422":
$ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/422
"429":
$ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/429
"500":
$ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/500
"503":
$ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/503
"504":
$ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/504
components:
parameters:
filter_subscriptions:
name: filter
description: >
Attribute-based filtering expression according to clause 5.2 of ETSI
GS NFV-SOL 013 [6].
The VNFM shall support receiving this parameter as part of the URI query
string. The EM may supply this parameter. The VNF may supply its instance
Id as an attribute filter.
All attribute names that appear in the FmSubscription and in data types
referenced from it shall be supported by the VNFM in the filter expression
in: query
required: false
schema:
type: string
filter_alarms:
name: filter
description: >
Attribute-based filtering expression according to clause 5.2 of ETSI
GS NFV-SOL 013 [6].
The VNFM shall support receiving this parameter as part of the URI query string. The
EM may supply this parameter. The VNF may supply its instance Id as an attribute
filter.
The following attribute names shall be supported in the filter expression: id,
managedObjectId, vnfcInstanceIds, rootCauseFaultyResource.faultyResourceType,
eventType, perceivedSeverity, probableCause. If the vnfcInstanceIds parameter is
provided, exactly one value for the managedObjectId attribute shall be provided.
in: query
required: false
schema:
type: string
AlarmId:
name: alarmId
in: path
description: |
Identifier of the alarm. This identifier can be retrieved from the "id" attribute of the "alarm" attribute
in the AlarmNotification or AlarmClearedNotification. It can also be retrieved from the "id" attribute of
the applicable array element in the message content of the response to a GET request to the "Alarms" resource.
required: true
style: simple
explode: false
schema:
type: string
SubscriptionId:
name: subscriptionId
in: path
description: |
Identifier of this subscription. This identifier can be retrieved from the resource referenced by the "Location"
HTTP header in the response to a POST request creating a new subscription resource. It can also be retrieved
from the "id" attribute in the message content of that response.
required: true
style: simple
explode: false
schema:
type: string
requestBodies:
IndividualAlarmRequest:
description: The parameter for the alarm modification
content:
application/json:
schema:
$ref: definitions/SOL002VNFFaultManagement_def.yaml#/definitions/AlarmModifications
required: true
IndividualAlarmEscalateRequest:
description: The proposed "escalated perceived severity" value
content:
application/json:
schema:
$ref: ./definitions/SOL002VNFFaultManagement_def.yaml#/definitions/PerceivedSeverityRequest
required: false
FmSubscriptionRequest:
description: The VNF creation parameters
content:
application/json:
schema:
$ref: definitions/SOL002VNFFaultManagement_def.yaml#/definitions/FmSubscriptionRequest
required: true
responses:
Alarms.Get.200:
description: |
200 OK
Shall be returned when information about zero or more alarms was queried successfully. The response body shall
contain in an array the representations of zero or more alarms as defined in clause 7.5.2.4. If the "filter"
URI parameter was supplied in the request, the data in the response body shall have been transformed according
to the rules specified in clause 5.2.2 of ETSI GS NFV-SOL 013. If the VNFM supports alternative 2 (paging)
according to clause 5.4.2.1 of ETSI GS NFV-SOL 013for this resource, inclusion of the Link HTTP header in this
response shall follow the provisions in clause 5.4.2.3 of ETSI GS NFV-SOL 013.
headers:
Version:
description: The used API version.
style: simple
explode: false
schema:
type: string
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.
style: simple
explode: false
schema:
type: string
Link:
description: |
Reference to other resources. Used for paging in the present document, see clause 4.7.2.1.
style: simple
explode: false
schema:
type: string
Content-Type:
description: The MIME type of the body of the response.
style: simple
explode: false
schema:
type: string
content:
application/json:
schema:
$ref: ./definitions/SOL002VNFFaultManagement_def.yaml#/definitions/Alarm
IndividualAlarm.Get.200:
description: |
200 OK
Shall be returned when information about an individual alarm read successfully. The response body shall contain
a representation of the individual alarm.
headers:
Version:
description: The used API version.
style: simple
explode: false
schema:
type: string
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.
style: simple
explode: false
schema:
type: string
Content-Type:
description: The MIME type of the body of the response.
style: simple
explode: false
schema:
type: string
ETag:
description: >
Used to provide the current entity-tag for the selected resource representation. It can be sent in
"200 OK", "201 Created" and "204 No Content" responses.
style: simple
schema:
type: string
Last-Modified:
description: >
Used to provide a timestamp indicating the date and time at which the server believes the selected resource
representation was last modified. It can be sent in "200 OK", "201 Created" and "204 No Content" responses.
style: simple
schema:
type: string
format: date-time
content:
application/json:
schema:
$ref: ./definitions/SOL002VNFFaultManagement_def.yaml#/definitions/Alarm
IndividualAlarm.Patch.200:
description: |
200 OK
Shall be returned when the request was accepted and completed. The response body shall contain attribute
modifications for an "Individual alarm" resource.
headers:
Version:
description: The used API version.
style: simple
explode: false
schema:
type: string
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.
style: simple
explode: false
schema:
type: string
Content-Type:
description: The MIME type of the body of the response.
style: simple
explode: false
schema:
type: string
ETag:
description: >
Used to provide the current entity-tag for the selected resource representation. It can be sent in
"200 OK", "201 Created" and "204 No Content" responses.
style: simple
schema:
type: string
Last-Modified:
description: >
Used to provide a timestamp indicating the date and time at which the server believes the selected resource
representation was last modified. It can be sent in "200 OK", "201 Created" and "204 No Content" responses.
style: simple
schema:
type: string
format: date-time
content:
application/json:
schema:
$ref: definitions/SOL002VNFFaultManagement_def.yaml#/definitions/AlarmModifications
IndividualAlarm.Patch.409:
description: |
409 CONFLICT
Shall be returned upon the following error: The
operation cannot be executed currently, due to a
conflict with the state of the "Individual alarm"
resource.
Typically, this is due to the fact that the alarm is
already in the state that is requested to be set (such
as trying to acknowledge an already-acknowledged
alarm).
The response body shall contain a ProblemDetails
structure, in which the "detail" attribute shall convey
more information about the error.
headers:
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.
style: simple
explode: false
schema:
type: string
Version:
description: The used API version.
style: simple
explode: false
schema:
type: string
Content-Type:
description: |
The MIME type of the body of the response. Reference: IETF RFC 7231
style: simple
explode: false
schema:
type: string
content:
application/json:
schema:
$ref: "../General_Definitions/SOL002_def.yaml#/definitions/ProblemDetails"
IndividualAlarmEscalate.Post.204:
description: |
204 No Content
Shall be returned when the VNFM has received the proposed "escalated perceived severity" value successfully.
The response body shall be empty.
headers:
Version:
description: The used API version.
style: simple
explode: false
schema:
type: string
content: {}
Subscriptions.Get.200:
description: |
200 OK
Shall be returned when the list of subscriptions has been queried successfully.
The response body shall contain the representations of all active subscriptions of the functional block that
invokes the method. If the "filter" URI parameter was supplied in the request, the data in the response body
shall have been transformed according to the rules specified in clause 5.2.2 of ETSI GS NFV-SOL 013.
If the VNFM supports alternative 2 (paging) according to clause 5.4.2.1 of ETSI GS NFV-SOL 013 for this resource,
inclusion of the Link HTTP header in this response shall follow the provisions in clause 5.4.2.3 of
ETSI GS NFV-SOL 013.
headers:
Version:
description: The used API version.
style: simple
explode: false
schema:
type: string
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.
style: simple
explode: false
schema:
type: string
Link:
description: |
Reference to other resources. Used for paging in the present document, see clause 4.7.2.1.
style: simple
explode: false
schema:
type: string
Content-Type:
description: The MIME type of the body of the response.
style: simple
explode: false
schema:
type: string
content:
application/json:
schema:
$ref: definitions/SOL002VNFFaultManagement_def.yaml#/definitions/FmSubscription
Subscriptions.Post.201:
description: |
201 CREATED
The subscription was created successfully. The response body shall contain a representation of the created
subscription resource. The HTTP response shall include a "Location:" HTTP header that points to the created
subscription resource.
headers:
Version:
description: The used API version.
style: simple
explode: false
schema:
type: string
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.
style: simple
explode: false
schema:
type: string
Content-Type:
description: The MIME type of the body of the response.
style: simple
explode: false
schema:
type: string
Location:
description: |
The resource URI of the created subscription resource.
style: simple
explode: false
schema:
type: string
format: url
content:
application/json:
schema:
$ref: definitions/SOL002VNFFaultManagement_def.yaml#/definitions/FmSubscription
Subscriptions.Post.422:
description: |
422 Unprocessable Content
Shall be returned upon the following error: The content type of the message content is supported
and the message content of a request contains syntactically correct data but the data cannot be processed.
The general cause for this error and its handling is specified in clause 6.4 of ETSI GS NFV-SOL 013 [6],
including rules for the presence of the response body.
Specifically in case of this resource, the response code 422 shall also be returned if the VNFM has tested
the Notification endpoint as described in clause 7.4.7.3.2 and the test has failed.
In this case, the "detail" attribute in the "ProblemDetails" structure shall convey more information
about the error.
headers:
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.
style: simple
explode: false
schema:
type: string
Version:
description: Version of the API used in the response.
style: simple
explode: false
schema:
type: string
Content-Type:
description: |
The MIME type of the body of the response. Reference: IETF RFC 7231
style: simple
explode: false
schema:
type: string
content:
application/json:
schema:
$ref: "../General_Definitions/SOL002_def.yaml#/definitions/ProblemDetails"
IndividualSubscription.Get.200:
description: |
200 OK
Shall be returned when information about an individual subscription has been read successfully.
The response body shall contain a representation of the "Individual subscription" resource.
headers:
Version:
description: The used API version.
style: simple
explode: false
schema:
type: string
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.
style: simple
explode: false
schema:
type: string
Content-Type:
description: The MIME type of the body of the response.
style: simple
explode: false
schema:
type: string
content:
application/json:
schema:
$ref: definitions/SOL002VNFFaultManagement_def.yaml#/definitions/FmSubscription
IndividualSubscription.Delete.204:
description: |
204 NO CONTENT
Shall be returned when the "Individual subscription" resource has been deleted successfully.
The response body shall be empty.
headers:
Version:
description: The used API version.
style: simple
explode: false
schema:
type: string
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.
style: simple
explode: false
schema:
type: string
content: {}
\ No newline at end of file
# Copyright (c) ETSI 2017.
# https://forge.etsi.org/etsi-forge-copyright-notice.txt
definitions:
Alarm:
description: >
The alarm data type encapsulates information about an alarm.
If the attribute "faultType" has the value "NFVI_OAM_VIRTUALISED_RESOURCE_STATE_CHANGE",
the following provisions apply for the values of the attribute "faultDetails" related to
changes in the state of virtualised resources:
- One of the entries in the array shall provide information about the anticipated time of maintenance in the
following format: "anticipatedTime=$time", wherein "$time" shall be formatted as a "DateTime", as specified
in ETSI GS NFV-SOL 013 [6].
- One of the entries in the array shall provide identification information about the affinity/anti-affinity group
defined in the VNFD that is associated to the affected virtualised resource indicated by "rootCauseFaultyResource"
in the following format: "affinityOrAntiAffinityGroupId=$group", wherein "$group" shall be equal to the
"affinityOrAntiAffinityGroupId" value in the corresponding "VduProfile" (for a VNFC/COMPUTE affected resource)
or "VirtualLinkProfile" for a VL/NETWORK affected resource) in the VNFD, which is mapped by the VNFM to the
virtualised resource group identifier in the virtualised resource change notification received by the VNFM from
the VIM.
NOTE 1: For an alarm about upcoming impact due to NFVI operation and maintenance (i.e. the attribute "faultType"
has the value "NFVI_OAM_VIRTUALISED_RESOURCE_STATE_CHANGE"), the attribute "rootCauseFaultyResource"
indicates a resource to be impacted. Further information on the upcoming impact (e.g. group of impacted
resources, time of impact) is provided in the attribute "faultDetails".
NOTE 2: When alarms are due to upcoming NFVI operation and maintenance (i.e. the attribute "faultType" has the
value "NFVI_OAM_VIRTUALISED_RESOURCE_STATE_CHANGE"), the attribute "faultDetails" shall include information
about the anticipated time of the maintenance. See provisions under the present table.
type: object
required:
- id
- managedObjectId
- alarmRaisedTime
- ackState
- perceivedSeverity
- eventTime
- eventType
- probableCause
- isRootCause
- _links
properties:
id:
description: >
Identifier of this Alarm.
$ref: "../../General_Definitions/SOL002_def.yaml#/definitions/Identifier"
managedObjectId:
description: >
Identifier of the affected VNF instance.
$ref: "../../General_Definitions/SOL002_def.yaml#/definitions/Identifier"
vnfcInstanceIds:
description: >
Identifiers of the affected VNFC instances. Each identifier references the
"id" attribute in a "VnfcInfo" structure. Shall be present if the alarm affects
at least one VNFC instance.
type: array
items:
$ref: "../../General_Definitions/SOL002_def.yaml#/definitions/IdentifierInVnf"
rootCauseFaultyResource:
description: >
The virtualised resources that are causing the VNF fault. Shall be present if the alarm affects
virtualised resources. See note 1.
$ref: "#/definitions/FaultyResourceInfo"
alarmRaisedTime:
description: >
Time stamp indicating when the alarm is raised by the managed
object.
$ref: "../../General_Definitions/SOL002_def.yaml#/definitions/DateTime"
alarmChangedTime:
description: >
Time stamp indicating when the alarm was last changed. It shall be
present if the alarm has been updated.
$ref: "../../General_Definitions/SOL002_def.yaml#/definitions/DateTime"
alarmClearedTime:
description: >
Time stamp indicating when the alarm was cleared. It shall be
present if the alarm has been cleared.
$ref: "../../General_Definitions/SOL002_def.yaml#/definitions/DateTime"
alarmAcknowledgedTime:
description: >
Time stamp indicating when the alarm was
acknowledged. It shall be present if the alarm has
been acknowledged.
$ref: "../../General_Definitions/SOL002_def.yaml#/definitions/DateTime"
ackState:
description: >
Acknowledgement state of the alarm.
Permitted values:
* UNACKNOWLEDGED
* ACKNOWLEDGED.
type: string
enum:
- UNACKNOWLEDGED
- ACKNOWLEDGED
perceivedSeverity:
description: >
Perceived severity of the managed object failure.
$ref: "#/definitions/PerceivedSeverityType"
eventTime:
description: >
Time stamp indicating when the fault was observed. See note 2.
$ref: "../../General_Definitions/SOL002_def.yaml#/definitions/DateTime"
eventType:
description: >
Type of event.
$ref: "#/definitions/EventType"
type: string
faultType:
description: >
Additional information to clarify the type of the fault.
If the alarm is related to changes in the state of virtualised resources due to NFVI
operation and maintenance, this attribute shall be set to "NFVI_OAM_VIRTUALISED_RESOURCE_STATE _CHANGE".
type: string
probableCause:
description: >
Information about the probable cause of the fault.
If the attribute "faultType" has the value “NFVI_OAM_VIRTUALISED_RESOURCE_STATE_CHANGE”, the
permitted values are:
- "NFVI_COMPONENT_MAINTENANCE": Maintenance of NFVI components, e.g. physical maintenance/repair,
hypervisor software updates, etc.
- "NFVI_COMPONENT_EVACUATION": Evacuation of physical hosts.
- "NFVI_COMPONENT_OPTIMIZATION": Operation and management of NFVI resources, e.g. to support energy
efficiency or resource usage optimization.
type: string
isRootCause:
description: >
Attribute indicating if this fault is the root for other correlated
alarms. If TRUE, then the alarms listed in the attribute
CorrelatedAlarmId are caused by this fault.
$ref: "../../General_Definitions/SOL002_def.yaml#/definitions/Boolean"
correlatedAlarmIds:
description: >
List of identifiers of other alarms correlated to this fault.
type: array
items:
$ref: "../../General_Definitions/SOL002_def.yaml#/definitions/Identifier"
faultDetails:
description: >
Provides additional information about the fault. See notes 1 and 2.
type: array
items:
type: string
_links:
description: >
Links for this resource.
type: object
required:
- self
properties:
self:
description: >
URI of this resource.
$ref: "../../General_Definitions/SOL002_def.yaml#/definitions/Link"
objectInstance:
description: >
Link to the resource representing the VNF instance to which the
notified alarm is correlated. Shall be present if the VNF
instance information is accessible as a resource.
$ref: "../../General_Definitions/SOL002_def.yaml#/definitions/Link"
PerceivedSeverityRequest:
description: >
This type represents the escalated value of the perceived severity for an alarm.
type: object
required:
- proposedPerceivedSeverity
properties:
proposedPerceivedSeverity:
description: >
Indicates the proposed escalated perceived severity for an alarm.
$ref: "#/definitions/PerceivedSeverityType"
FmSubscriptionRequest:
description: >
This type represents a subscription request related to notifications
about VNF faults.
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: "#/definitions/FmNotificationsFilter"
callbackUri:
description: >
The URI of the endpoint to send the notification to.
$ref: "../../General_Definitions/SOL002_def.yaml#/definitions/Uri"
authentication:
description: >
Authentication parameters to configure the use of Authorization when sending notifications
corresponding to this subscription, as defined in clause 8.3.4 of ETSI GS NFV-SOL 013.
This attribute shall only be present if the subscriber requires authorization of notifications.
$ref: "../../General_Definitions/SOL002_def.yaml#/definitions/SubscriptionAuthentication"
FmSubscription:
description: >
This type represents a subscription related to notifications about VNF
faults.
type: object
required:
- id
- callbackUri
- _links
properties:
id:
description: >
Identifier of this "Individual subscription" resource.
$ref: "../../General_Definitions/SOL002_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: "#/definitions/FmNotificationsFilter"
callbackUri:
description: >
The URI of the endpoint to send the notification to.
$ref: "../../General_Definitions/SOL002_def.yaml#/definitions/Uri"
_links:
description: >
Links for this resource.
type: object
required:
- self
properties:
self:
description: >
URI of this resource.
$ref: "../../General_Definitions/SOL002_def.yaml#/definitions/Link"
AlarmModifications:
description: >
This type represents attribute modifications for an "Individual alarm"
resource, i.e. modifications to a resource representation based on the
"Alarm" data type. The attributes of "Alarm" that can be modified
are included in the "AlarmModifications" data type.
type: object
required:
- ackState
properties:
ackState:
description: >
New value of the "ackState" attribute in "Alarm".
Permitted values:
* ACKNOWLEDGED
* UNACKNOWLEDGED
type: string
enum:
- ACKNOWLEDGED
- UNACKNOWLEDGED
EventType:
description: >
The enumeration EventType represents those types of events that trigger
an alarm.
* COMMUNICATIONS_ALARM: An alarm of this type is associated with the
procedure and/or process required conveying information from one point
to another (ITU-T Recommendation X.733).
* PROCESSING_ERROR_ALARM: An alarm of this type is associated with a
software or processing fault (ITU-T Recommendation X.733).
* ENVIRONMENTAL_ALARM: An alarm of this type is associated with a
condition related to an enclosure in which the equipment resides
(ITU-T Recommendation X.733).
* QOS_ALARM: An alarm of this type is associated with degradation in the
quality of a service (ITU-T Recommendation X.733).
* EQUIPMENT_ALARM: An alarm of this type is associated with an equipment
fault (ITU-T Recommendation X.733).
type: string
enum:
- COMMUNICATIONS_ALARM
- PROCESSING_ERROR_ALARM
- ENVIRONMENTAL_ALARM
- QOS_ALARM
- EQUIPMENT_ALARM
FaultyResourceInfo:
description: >
This type represents the faulty virtual resources that have a negative
impact on a VNF.
type: object
required:
- faultyResource
- faultyResourceType
properties:
faultyResource:
description: >
Information that identifies the faulty resource instance and its
managing entity.
$ref: "../../General_Definitions/SOL002_def.yaml#/definitions/ResourceHandle"
faultyResourceType:
description: >
Type of the faulty resource.
$ref: "#/definitions/FaultyResourceType"
FaultyResourceType:
description: >
The enumeration FaultyResourceType represents those types of faulty
resource.
type: string
enum:
- COMPUTE
- STORAGE
- NETWORK
FmNotificationsFilter:
description: >
This type represents a subscription filter related to notifications about VNF faults.
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).
NOTE: The permitted values of the "notificationTypes" attribute are spelled exactly as the names
of the notification types to facilitate automated code generation systems.
type: object
properties:
vnfInstanceSubscriptionFilter:
description: >
Filter criteria to select VNF instances about which to notify.
$ref: "../../General_Definitions/SOL002_def.yaml#/definitions/VnfInstanceSubscriptionFilter"
notificationTypes:
description: >
Match particular notification types.
Permitted values:
- AlarmNotification
- AlarmClearedNotification
- AlarmListRebuiltNotification
See note.
type: array
items:
type: string
enum:
- AlarmNotification
- AlarmClearedNotification
- AlarmListRebuiltNotification
faultyResourceTypes:
description: >
Match VNF alarms with a faulty resource type listed in this
attribute.
type: array
items:
$ref: "#/definitions/FaultyResourceType"
perceivedSeverities:
description: >
Match VNF alarms with a perceived severity listed in this attribute.
type: array
items:
$ref: "#/definitions/PerceivedSeverityType"
eventTypes:
description: >
Match VNF alarms with an event type listed in this attribute.
type: array
items:
$ref: "#/definitions/EventType"
probableCauses:
description: >
Match VNF alarms with a probable cause listed in this attribute.
type: array
items:
type: string
PerceivedSeverityType:
description: >
Indicates the relative level of urgency for operator attention.
* CRITICAL: The Critical severity level indicates that a service
affecting condition has occurred and an immediate corrective action
is required. Such a severity can be reported, for example, when a
managed object becomes totally out of service and its capability needs
to be restored (ITU-T Recommendation X.733).
* MAJOR: The Major severity level indicates that a service affecting
condition has developed and an urgent corrective action is required.
Such a severity can be reported, for example, when there is a severe
degradation in the capability of the managed object and its full
capability needs to be restored (ITU-T Recommendation X.733).
* MINOR: The Minor severity level indicates the existence of a
non-service affecting fault condition and that corrective action
should be taken in order to prevent a more serious (for example,
service affecting) fault. Such a severity can be reported, for
example, when the detected alarm condition is not currently degrading
the capacity of the managed object (ITU-T Recommendation X.733).
* WARNING: The Warning severity level indicates the detection of a
potential or impending service affecting fault, before any significant
effects have been felt. Action should be taken to further diagnose (if
necessary) and correct the problem in order to prevent it from
becoming a more serious service affecting fault (ITU-T Recommendation
X.733).
* INDETERMINATE: The Indeterminate severity level indicates that the
severity level cannot be determined (ITU-T Recommendation X.733).
* CLEARED: The Cleared severity level indicates the clearing of one or
more previously reported alarms. This alarm clears all alarms for this
managed object that have the same Alarm type, Probable cause and
Specific problems (if given) (ITU-T Recommendation X.733).
type: string
enum:
- CRITICAL
- MAJOR
- MINOR
- WARNING
- INDETERMINATE
- CLEARED
openapi: 3.0.2
info:
title: SOL002 - VNF Fault Management Notification interface
description: |
SOL002 - VNF Fault Management Notification interface
IMPORTANT: Please note that this file might be not aligned to the current
version of the ETSI Group Specification it refers to. In case of
discrepancies the published ETSI Group Specification takes precedence.
https://forge.etsi.org/rep/nfv/SOL002-SOL003/issues
contact:
name: NFV-SOL WG
license:
name: ETSI Forge copyright notice
url: https://forge.etsi.org/etsi-forge-copyright-notice.txt
version: 1.5.0-impl:etsi.org:ETSI_NFV_OpenAPI:1
externalDocs:
description: ETSI GS NFV-SOL 002 V3.7.1
url: https://www.etsi.org/deliver/etsi_gs/NFV-SOL/001_099/002/03.07.01_60/gs_NFV-SOL002v030701p.pdf
servers:
- url: http://127.0.0.1/callback/v1
- url: https://127.0.0.1/callback/v1
paths:
/URI_is_provided_by_the_client_when_creating_the_subscription-AlarmNotification:
parameters:
- $ref: ../../components/SOL002_params.yaml#/components/parameters/Version
- $ref: ../../components/SOL002_params.yaml#/components/parameters/Authorization
get:
description: |
The GET method allows the API producer to test the notification endpoint that is provided by the API consumer,
e.g. during subscription. See clause 7.4.7.3.2.
responses:
"204":
$ref: '#/components/responses/VNFFMNotification.Get.204'
"400":
$ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/400
"401":
$ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/401
"403":
$ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/403
"405":
$ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/405
"406":
$ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/406
"500":
$ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/500
"503":
$ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/503
post:
description: |
The POST method notifies a VNF alarm or that the alarm list has been rebuilt. The API consumer shall have
previously created an "Individual subscription" resource with a matching filter. See clause 7.4.7.3.1.
parameters:
- $ref: ../../components/SOL002_params.yaml#/components/parameters/ContentType
requestBody:
$ref: '#/components/requestBodies/AlarmNotification'
responses:
"204":
$ref: '#/components/responses/VNFFMNotification.Post.204'
"400":
$ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/400
"401":
$ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/401
"403":
$ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/403
"405":
$ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/405
"406":
$ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/406
"500":
$ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/500
"503":
$ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/503
/URI_is_provided_by_the_client_when_creating_the_subscription-AlarmClearedNotification:
parameters:
- $ref: ../../components/SOL002_params.yaml#/components/parameters/Version
- $ref: ../../components/SOL002_params.yaml#/components/parameters/Authorization
get:
description: |
The GET method allows the API producer to test the notification endpoint that is provided by the API consumer,
e.g. during subscription. See clause 7.4.7.3.2.
responses:
"204":
$ref: '#/components/responses/VNFFMNotification.Get.204'
"400":
$ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/400
"401":
$ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/401
"403":
$ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/403
"405":
$ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/405
"406":
$ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/406
"500":
$ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/500
"503":
$ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/503
post:
description: |
The POST method notifies a VNF alarm or that the alarm list has been rebuilt. The API consumer shall have
previously created an "Individual subscription" resource with a matching filter. See clause 7.4.7.3.1.
parameters:
- $ref: ../../components/SOL002_params.yaml#/components/parameters/ContentType
requestBody:
$ref: '#/components/requestBodies/AlarmClearedNotification'
responses:
"204":
$ref: '#/components/responses/VNFFMNotification.Post.204'
"400":
$ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/400
"401":
$ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/401
"403":
$ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/403
"405":
$ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/405
"406":
$ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/406
"500":
$ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/500
"503":
$ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/503
/URI_is_provided_by_the_client_when_creating_the_subscription-AlarmListRebuiltNotification:
parameters:
- $ref: ../../components/SOL002_params.yaml#/components/parameters/Version
- $ref: ../../components/SOL002_params.yaml#/components/parameters/Authorization
get:
description: |
The GET method allows the API producer to test the notification endpoint that is provided by the API consumer,
e.g. during subscription. See clause 7.4.7.3.2.
responses:
"204":
$ref: '#/components/responses/VNFFMNotification.Get.204'
"400":
$ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/400
"401":
$ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/401
"403":
$ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/403
"405":
$ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/405
"406":
$ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/406
"500":
$ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/500
"503":
$ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/503
post:
description: |
The POST method notifies a VNF alarm or that the alarm list has been rebuilt. The API consumer shall have
previously created an "Individual subscription" resource with a matching filter. See clause 7.4.7.3.1.
parameters:
- $ref: ../../components/SOL002_params.yaml#/components/parameters/ContentType
requestBody:
$ref: '#/components/requestBodies/AlarmListRebuiltNotification'
responses:
"204":
$ref: '#/components/responses/VNFFMNotification.Post.204'
"400":
$ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/400
"401":
$ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/401
"403":
$ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/403
"405":
$ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/405
"406":
$ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/406
"500":
$ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/500
"503":
$ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/503
components:
requestBodies:
AlarmNotification:
description: |
Information of a VNF alarm.
content:
application/json:
schema:
$ref: definitions/SOL002VNFFaultManagementNotification_def.yaml#/definitions/AlarmNotification
required: true
AlarmClearedNotification:
description: |
Information of the clearance of a VNF alarm.
content:
application/json:
schema:
$ref: definitions/SOL002VNFFaultManagementNotification_def.yaml#/definitions/AlarmClearedNotification
required: true
AlarmListRebuiltNotification:
description: |
Information that the alarm list has been rebuilt by the VNFM.
content:
application/json:
schema:
$ref: definitions/SOL002VNFFaultManagementNotification_def.yaml#/definitions/AlarmListRebuiltNotification
required: true
responses:
VNFFMNotification.Get.204:
description: |
204 NO CONTENT
Shall be returned to indicate the notification endpoint has been tested successfully. The response body
shall be empty.
headers:
Version:
description: |
Version of the API used in the response.
style: simple
explode: false
schema:
type: string
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.
style: simple
explode: false
schema:
type: string
content: {}
VNFFMNotification.Post.204:
description: |
204 NO CONTENT
Shall be returned when the notification has been delivered successfully. The response body shall be empty.
headers:
Version:
description: |
Version of the API used in the response.
style: simple
explode: false
schema:
type: string
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.
style: simple
explode: false
schema:
type: string
content: {}
\ No newline at end of file
......@@ -2,130 +2,135 @@
# https://forge.etsi.org/etsi-forge-copyright-notice.txt
definitions:
Alarm:
AlarmNotification:
description: >
The alarm data type encapsulates information about an alarm.
This type represents an alarm notification about VNF faults.
This notification shall be triggered by the VNFM when:
* An alarm has been created.
* An alarm has been updated, e.g. if the severity of the alarm has
changed.
type: object
required:
- id
- managedObjectId
- rootCauseFaultyResource
- alarmRaisedTime
- ackState
- perceivedSeverity
- eventTime
- eventType
- probableCause
- isRootCause
- notificationType
- subscriptionId
- timeStamp
- alarm
- _links
properties:
id:
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: "../../General_Definitions/SOL002_def.yaml#/definitions/Identifier"
notificationType:
description: >
Identifier of this Alarm information element.
$ref: "../../definitions/SOL002SOL003_def.yaml#/definitions/Identifier"
managedObjectId:
Discriminator for the different notification types. Shall be set to
"AlarmNotification" for this notification type.
type: string
enum:
- AlarmNotification
subscriptionId:
description: >
Identifier of the affected VNF instance.
$ref: "../../definitions/SOL002SOL003_def.yaml#/definitions/Identifier"
rootCauseFaultyResource:
Identifier of the subscription that this notification relates to.
$ref: "../../General_Definitions/SOL002_def.yaml#/definitions/Identifier"
timeStamp:
description: >
The virtualised resources that are causing the VNF fault.
$ref: "../../definitions/SOL002SOL003VNFFaultManagement_def.yaml#/definitions/FaultyResourceInfo"
alarmRaisedTime:
Date-time of the generation of the notification.
$ref: "../../General_Definitions/SOL002_def.yaml#/definitions/DateTime"
alarm:
description: >
Time stamp indicating when the alarm is raised by the managed
object.
$ref: "../../definitions/SOL002SOL003_def.yaml#/definitions/DateTime"
alarmChangedTime:
Information about an alarm including AlarmId, affected VNF
identifier, and FaultDetails.
$ref: "../../VNFFaultManagement/definitions/SOL002VNFFaultManagement_def.yaml#/definitions/Alarm"
_links:
description: >
Time stamp indicating when the alarm was last changed. It shall be
present if the alarm has been updated.
$ref: "../../definitions/SOL002SOL003_def.yaml#/definitions/DateTime"
alarmClearedTime:
Links to resources related to this notification.
type: object
required:
- subscription
properties:
subscription:
description: >
Link to the related subscription.
$ref: "../../General_Definitions/SOL002_def.yaml#/definitions/NotificationLink"
AlarmClearedNotification:
description: >
This type represents an alarm cleared notification about VNF faults.
The notification shall be triggered by the VNFM when an alarm has been
cleared.
type: object
required:
- id
- notificationType
- subscriptionId
- timeStamp
- alarmId
- alarmClearedTime
- _links
properties:
id:
description: >
Time stamp indicating when the alarm was cleared. It shall be
present if the alarm has been cleared.
$ref: "../../definitions/SOL002SOL003_def.yaml#/definitions/DateTime"
ackState:
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: "../../General_Definitions/SOL002_def.yaml#/definitions/Identifier"
notificationType:
description: >
Acknowledgement state of the alarm.
Permitted values:
* UNACKNOWLEDGED
* ACKNOWLEDGED.
Discriminator for the different notification types. Shall be set to
"AlarmClearedNotification" for this notification type.
type: string
enum:
- UNACKNOWLEDGED
- ACKNOWLEDGED
perceivedSeverity:
description: >
Perceived severity of the managed object failure.
$ref: "../../definitions/SOL002SOL003VNFFaultManagement_def.yaml#/definitions/PerceivedSeverityType"
eventTime:
enum:
- AlarmClearedNotification
subscriptionId:
description: >
Time stamp indicating when the fault was observed.
$ref: "../../definitions/SOL002SOL003_def.yaml#/definitions/DateTime"
eventType:
Identifier of the subscription that this notification relates to.
$ref: "../../General_Definitions/SOL002_def.yaml#/definitions/Identifier"
timeStamp:
description: >
Type of event.
$ref: "../../definitions/SOL002SOL003VNFFaultManagement_def.yaml#/definitions/EventType"
faultType:
Date-time of the generation of the notification.
$ref: "../../General_Definitions/SOL002_def.yaml#/definitions/DateTime"
alarmId:
description: >
Additional information to clarify the type of the fault.
type: string
probableCause:
Alarm identifier.
$ref: "../../General_Definitions/SOL002_def.yaml#/definitions/Identifier"
alarmClearedTime:
description: >
Information about the probable cause of the fault.
type: string
isRootCause:
description: >
Attribute indicating if this fault is the root for other correlated
alarms. If TRUE, then the alarms listed in the attribute
CorrelatedAlarmId are caused by this fault.
type: boolean
correlatedAlarmIds:
description: >
List of identifiers of other alarms correlated to this fault.
type: array
items:
$ref: "../../definitions/SOL002SOL003_def.yaml#/definitions/Identifier"
faultDetails:
description: >
Provides additional information about the fault.
type: array
items:
type: string
The time stamp indicating when the alarm was cleared.
$ref: "../../General_Definitions/SOL002_def.yaml#/definitions/DateTime"
_links:
description: >
Links for this resource.
Links to resources related to this notification.
type: object
required:
- self
- subscription
- alarm
properties:
self:
subscription:
description: >
URI of this resource.
$ref: "../../definitions/SOL002SOL003_def.yaml#/definitions/Link"
objectInstance:
Link to the related subscription.
$ref: "../../General_Definitions/SOL002_def.yaml#/definitions/NotificationLink"
alarm:
description: >
Link to the resource representing the VNF instance to which the
notified alarm is correlated. Shall be present if the VNF
instance information is accessible as a resource.
$ref: "../../definitions/SOL002SOL003_def.yaml#/definitions/Link"
Link to the resource that represents the related alarm.
$ref: "../../General_Definitions/SOL002_def.yaml#/definitions/NotificationLink"
AlarmNotification:
AlarmListRebuiltNotification:
description: >
This type represents an alarm notification about VNF faults.
This notification shall be triggered by the VNFM when:
* An alarm has been created.
* An alarm has been updated, e.g. if the severity of the alarm has
changed.
This type represents a notification that the alarm list has been
rebuilt, e.g. if the VNFM detects its storage holding the alarm
list is corrupted.
The notification shall be triggered by the VNFM when the alarm list has
been rebuilt, e.g. because the VNFM has detected that its storage
holding the alarm list was corrupted.
type: object
required:
required:
- id
- notificationType
- subscriptionId
- timeStamp
- alarm
- _links
properties:
id:
......@@ -133,36 +138,35 @@ definitions:
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"
$ref: "../../General_Definitions/SOL002_def.yaml#/definitions/Identifier"
notificationType:
description: >
Discriminator for the different notification types. Shall be set to
"AlarmNotification" for this notification type.
"AlarmListRebuiltNotification" for this notification type.
type: string
enum:
- AlarmNotification
enum:
- AlarmListRebuiltNotification
subscriptionId:
description: >
Identifier of the subscription that this notification relates to.
$ref: "../../definitions/SOL002SOL003_def.yaml#/definitions/Identifier"
$ref: "../../General_Definitions/SOL002_def.yaml#/definitions/Identifier"
timeStamp:
description: >
Date-time of the generation of the notification.
$ref: "../../definitions/SOL002SOL003_def.yaml#/definitions/DateTime"
alarm:
description: >
Information about an alarm including AlarmId, affected VNF
identifier, and FaultDetails.
$ref: "#/definitions/Alarm"
$ref: "../../General_Definitions/SOL002_def.yaml#/definitions/DateTime"
_links:
description: >
Links to resources related to this notification.
type: object
required:
required:
- subscription
properties:
subscription:
- alarms
properties:
subscription:
description: >
Link to the related subscription.
$ref: "../../definitions/SOL002SOL003_def.yaml#/definitions/Link"
\ No newline at end of file
$ref: "../../General_Definitions/SOL002_def.yaml#/definitions/NotificationLink"
alarms:
description: >
Link to the alarm list, i.e. the "Alarms" resource.
$ref: "../../General_Definitions/SOL002_def.yaml#/definitions/NotificationLink"
\ No newline at end of file
swagger: "2.0"
openapi: 3.0.2
info:
title: SOL002 - VNF Indicator interface
description: |
SOL002 - VNF Indicator interface
info:
version: "2.3.1"
title: "DRAFT VNF Indicator interface"
description: >
DRAFT VNF Indicator interface of ETSI NFV SOL002
IMPORTANT: Please note that this file might be not aligned to the current
version of the ETSI Group Specification it refers to and has not been
approved by the ETSI NFV ISG. In case of discrepancies the published ETSI
Group Specification takes precedence.
Please report bugs to https://forge.etsi.org/bugzilla/buglist.cgi?component=Nfv-Openapis&list_id=61&product=NFV&resolution=---
termsOfService: "http://etsi.org"
contact:
name: "NFV-SOL WG"
version of the ETSI Group Specification it refers to. In case of
discrepancies the published ETSI Group Specification takes precedence.
Please report bugs to https://forge.etsi.org/rep/nfv/SOL002-SOL003/issues
contact:
name: NFV-SOL WG
license:
name: "ETSI Forge copyright notice"
name: ETSI Forge copyright notice
url: https://forge.etsi.org/etsi-forge-copyright-notice.txt
version: 1.4.0-impl:etsi.org:ETSI_NFV_OpenAPI:1
externalDocs:
description: ETSI GS NFV-SOL 002 V3.7.1
url: https://www.etsi.org/deliver/etsi_gs/NFV-SOL/001_099/002/03.07.01_60/gs_NFV-SOL002v030701p.pdf
basePath: /vnfind/v1
servers:
- url: http://127.0.0.1/vnfind/v1
- url: https://127.0.0.1/vnfind/v1
schemes:
- http
- https
paths:
/api_versions:
$ref: ../../endpoints/SOL002SOL003_endpoints.yaml#/endpoints/api-versions
consumes:
- application/json
/indicators:
parameters:
- $ref: ../../components/SOL002_params.yaml#/components/parameters/Version
- $ref: ../../components/SOL002_params.yaml#/components/parameters/Authorization
get:
description: |
The GET method queries multiple VNF indicators. See clause 8.4.2.3.2.
parameters:
- $ref: '#/components/parameters/filter_indicators'
- $ref: ../../components/SOL002_params.yaml#/components/parameters/nextpage_opaque_marker_vnfm
responses:
"200":
$ref: '#/components/responses/Indicators.Get.200'
"400":
$ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/400
"401":
$ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/401
"403":
$ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/403
"404":
$ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/404
"405":
$ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/405
"406":
$ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/406
"416":
$ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/416
"422":
$ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/422
"429":
$ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/429
"500":
$ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/500
"503":
$ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/503
"504":
$ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/504
produces:
- application/json
/indicators/{vnfInstanceId}:
parameters:
- $ref: '#/components/parameters/VnfInstanceId'
- $ref: ../../components/SOL002_params.yaml#/components/parameters/Version
- $ref: ../../components/SOL002_params.yaml#/components/parameters/Authorization
get:
description: |
The GET method queries multiple VNF indicators related to a VNF instance. See clause 8.4.3.3.2.
parameters:
- $ref: '#/components/parameters/filter_vnf_indicators_related_to_vnf_instance'
- $ref: ../../components/SOL002_params.yaml#/components/parameters/nextpage_opaque_marker_vnfm
responses:
"200":
$ref: '#/components/responses/VnfIndicators.Get.200'
"400":
$ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/400
"401":
$ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/401
"403":
$ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/403
"404":
$ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/404
"405":
$ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/405
"406":
$ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/406
"416":
$ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/416
"422":
$ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/422
"429":
$ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/429
"500":
$ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/500
"503":
$ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/503
"504":
$ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/504
/indicators/{vnfInstanceId}/{indicatorId}:
parameters:
- $ref: '#/components/parameters/VnfInstanceId'
- $ref: '#/components/parameters/IndicatorId'
- $ref: ../../components/SOL002_params.yaml#/components/parameters/Version
- $ref: ../../components/SOL002_params.yaml#/components/parameters/Authorization
get:
description: |
The GET method reads a VNF indicator. See clause 8.4.4.3.2.
responses:
"200":
$ref: '#/components/responses/VnfIndividualIndicator.Get.200'
"400":
$ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/400
"401":
$ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/401
"403":
$ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/403
"404":
$ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/404
"405":
$ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/405
"406":
$ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/406
"416":
$ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/416
"422":
$ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/422
"429":
$ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/429
"500":
$ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/500
"503":
$ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/503
"504":
$ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/504
paths:
/subscriptions:
parameters:
- $ref: ../../components/SOL002_params.yaml#/components/parameters/Version
- $ref: ../../components/SOL002_params.yaml#/components/parameters/Authorization
get:
description: |
The GET method queries the list of active subscriptions of the functional block that invokes the method.
It can be used e.g. for resynchronization after error situations. See clause 8.4.5.3.2.
parameters:
- $ref: '#/components/parameters/filter_subscriptions'
- $ref: ../../components/SOL002_params.yaml#/components/parameters/nextpage_opaque_marker_vnfm
responses:
"200":
$ref: '#/components/responses/VnfIndicatorSubscriptions.Get.200'
"400":
$ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/400
"401":
$ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/401
"403":
$ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/403
"404":
$ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/404
"405":
$ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/405
"406":
$ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/406
"416":
$ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/416
"422":
$ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/422
"429":
$ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/429
"500":
$ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/500
"503":
$ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/503
"504":
$ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/504
/indicators:
get:
summary: Query multiple indicators
description: Get a list of indicators. Support of attribute based filtering via query parameters.
# parameters:
# - name: id.eq
# in: query
# description: Attribute based filtering for indicator identifer as specified in VNFD.
# type: array
# items:
# type: string
# - name: name.eq
# in: query
# description: Attribute based filtering for indicator name as specified in VNFD.
# type: array
# items:
# type: string
# - name: value.eq
# in: query
# description: Attribute based filtering for indicator value equality.
# type: array
# items:
# type: string
# - name: value.neq
# in: query
# description: Attribute based filtering for indicator value unequality.
# type: array
# items:
# type: string
# - name: value.gt
# in: query
# description: Attribute based filtering for indicator value greater than.
# type: array
# items:
# type: string
# - name: value.gte
# in: query
# description: Attribute based filtering for indicator value greater then or equal.
# type: array
# items:
# type: string
# - name: value.lt
# in: query
# description: Attribute based filtering for indicator value less than.
# type: array
# items:
# type: string
# - name: value.lte
# in: query
# description: Attribute based filtering for indicator value less than or equal.
# type: array
# items:
# type: string
# - name: vnfInstanceId.eq
# in: query
# description: Attribute based filtering for indicators belonging to specified VNF instance.
# type: array
# items:
# type: string
responses:
200:
description: >
The list of VNF indicators was queried successfully.
The response body shall contain the representations of all VNF indicators that match
the attribute-based filtering parameters.
schema:
type: array
items:
$ref: 'definitions/VnfIndicator_def.yaml#/definitions/VnfIndicator'
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/VNFIndicator_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' }
post:
description: |
The POST method creates a new subscription. See clause 8.4.5.3.1.
parameters:
- $ref: ../../components/SOL002_params.yaml#/components/parameters/Accept
- $ref: ../../components/SOL002_params.yaml#/components/parameters/ContentType
requestBody:
$ref: '#/components/requestBodies/VnfIndicatorSubscriptionRequest'
responses:
"201":
$ref: '#/components/responses/VnfIndicatorSubscription.Post.201'
"303":
$ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/303
"400":
$ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/400
"401":
$ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/401
"403":
$ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/403
"404":
$ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/404
"405":
$ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/405
"406":
$ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/406
"416":
$ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/416
"422":
$ref: '#/components/responses/VnfIndicatorSubscription.Post.422'
"429":
$ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/429
"500":
$ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/500
"503":
$ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/503
"504":
$ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/504
/subscriptions/{subscriptionId}:
parameters:
- $ref: '#/components/parameters/SubscriptionId'
- $ref: ../../components/SOL002_params.yaml#/components/parameters/Version
- $ref: ../../components/SOL002_params.yaml#/components/parameters/Authorization
get:
description: |
The GET method reads an individual subscription. See clause 8.4.6.3.2.
responses:
"200":
$ref: '#/components/responses/VnfIndicatorSubscription.Get.200'
"400":
$ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/400
"401":
$ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/401
"403":
$ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/403
"404":
$ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/404
"405":
$ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/405
"406":
$ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/406
"416":
$ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/416
"422":
$ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/422
"429":
$ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/429
"500":
$ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/500
"503":
$ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/503
"504":
$ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/504
/indicators/{vnfInstanceId}:
parameters:
- name: vnfInstanceId
in: path
description: >
Identifier of the VNF instance to which the VNF indicators applies.
NOTE: This identifier can be retrieved from the resource referenced by the "Location" HTTP header in the response to a
POST request creating a new VNF instance resource. It can also be retrieved from the "id" attribute in the payload body
of that response.
type: string
required: true
get:
summary: Query multiple indicators related to a VNF instance.
description: >
Get a list of indicators related to a specific VNF instance. Support of attribute based filtering via query parameters.
# parameters:
# - name: id.eq
# in: query
# description: Attribute based filtering for indicator identifer as specified in VNFD.
# type: array
# items:
# type: string
# - name: name.eq
# in: query
# description: Attribute based filtering for indicator name as specified in VNFD.
# type: array
# items:
# type: string
# - name: value.eq
# in: query
# description: Attribute based filtering for indicator value equality.
# type: array
# items:
# type: string
# - name: value.neq
# in: query
# description: Attribute based filtering for indicator value unequality.
# type: array
# items:
# type: string
# - name: value.gt
# in: query
# description: Attribute based filtering for indicator value greater than.
# type: array
# items:
# type: string
# - name: value.gte
# in: query
# description: Attribute based filtering for indicator value greater then or equal.
# type: array
# items:
# type: string
# - name: value.lt
# in: query
# description: Attribute based filtering for indicator value less than.
# type: array
# items:
# type: string
# - name: value.lte
# in: query
# description: Attribute based filtering for indicator value less than or equal.
# type: array
# items:
# type: string
responses:
200:
description: >
The list of VNF indicators was queried successfully.
The response body shall contain the representations of all VNF indicators that match
the attribute-based filtering parameters.
schema:
type: array
items:
$ref: 'definitions/VnfIndicator_def.yaml#/definitions/VnfIndicator'
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/VNFIndicator_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' }
delete:
description: |
The DELETE method terminates an individual subscription. See clause 8.4.6.3.5.
responses:
"204":
$ref: '#/components/responses/VnfIndicatorSubscription.Delete.204'
"400":
$ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/400
"401":
$ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/401
"403":
$ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/403
"404":
$ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/404
"405":
$ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/405
"406":
$ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/406
"416":
$ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/416
"422":
$ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/422
"429":
$ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/429
"500":
$ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/500
"503":
$ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/503
"504":
$ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/504
components:
parameters:
filter_subscriptions:
name: filter
description: >
Attribute-based filtering expression according to clause 5.2 of ETSI
GS NFV-SOL 013 [6].
The EM shall and the VNF may support receiving this parameter as part of the URI
query string. The VNFM may supply this parameter.
All attribute names that appear in the VnfIndicatorSubscription data type and in data
types referenced from it shall be supported in the filter expression. If receiving, this
parameter is not supported, a 400 Bad Request response shall be returned (see
table 8.4.5.3.2-2).
in: query
required: false
schema:
type: string
/indicators/{vnfInstanceId}/{indicatorId}:
parameters:
- name: vnfInstanceId
in: path
description: >
Identifier of the VNF instance to which the VNF indicators applies.
NOTE: This identifier can be retrieved from the resource referenced by the "Location" HTTP header in the response to a
POST request creating a new VNF instance resource. It can also be retrieved from the "id" attribute in the payload body
of that response.
type: string
required: true
- name: indicatorId
in: path
description: >
Identifier of the VNF indicator.
# LEH NOTE from SOL002 is strange
type: string
required: true
get:
summary: Query multiple indicators related to a VNF instance.
description: >
Get a list of indicators related to a specific VNF instance. Support of attribute based filtering via query parameters.
NOTE: This identifier can be retrieved from the resource referenced by the "Location" HTTP header in the response to a
POST request creating a new VNF instance resource. It can also be retrieved from the "id" attribute in the payload body
of that response.
responses:
200:
description: >
The list of VNF indicators was queried successfully.
The response body shall contain the representations of all VNF indicators that match
the attribute-based filtering parameters.
schema:
$ref: 'definitions/VnfIndicator_def.yaml#/definitions/VnfIndicator'
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/VNFIndicator_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' }
filter_vnf_indicators_related_to_vnf_instance:
name: filter
description: >
Attribute-based filtering expression according to clause 5.2 of ETSI
GS NFV-SOL 013 [6].
The API producer shall support receiving this parameter as part of the URI query
string. The VNFM may supply this parameter.
All attribute names that appear in the VnfIndicator data type and in data types
referenced from it shall be supported by the API producer in the filter expression.
in: query
required: false
schema:
type: string
filter_indicators:
name: filter
description: >
Attribute-based filtering expression according to clause 5.2 of ETSI
GS NFV-SOL 013 [6].
The API producer shall support receiving this parameter as part of the URI query
string. The VNFM may supply this parameter.
All attribute names that appear in the VnfIndicator data type and in data types
referenced from it shall be supported by the API producer in the filter expression.
in: query
required: false
schema:
type: string
VnfInstanceId:
name: vnfInstanceId
in: path
description: |
Service Unavailable.
Identifier of the VNF instance to which the VNF indicators applies.
NOTE: This identifier can be retrieved from the resource referenced by the "Location" HTTP header in the
response to a POST request creating a new VNF instance resource. It can also be retrieved from the "id"
attribute in the message content of that response.
required: true
style: simple
explode: false
schema:
type: string
IndicatorId:
name: indicatorId
in: path
description: |
Identifier of the VNF indicator.
This identifier can be retrieved from the resource referenced by the message content in the response to a
POST request creating a new "Individual VNF instance" resource.
required: true
style: simple
explode: false
schema:
type: string
SubscriptionId:
name: subscriptionId
in: path
description: |
Identifier of this subscription. NOTE:
This identifier can be retrieved from the resource referenced by the "Location" HTTP header
in the response to a POST request creating a new subscription resource. It can also be retrieved
from the "id" attribute in the message content of that response.
required: true
style: simple
explode: false
schema:
type: string
requestBodies:
VnfIndicatorSubscriptionRequest:
description: Details of the subscription to be created.
content:
application/json:
schema:
$ref: definitions/SOL002VNFIndicator_def.yaml#/definitions/VnfIndicatorSubscriptionRequest
required: true
responses:
Indicators.Get.200:
description: |
200 OK
Shall be returned when information about zero or more VNF indicators was queried successfully.
The response body shall contain in an array the representations of all VNF indicators that match the
attribute-based filtering parameters, i.e. zero or more representations of VNF indicators as defined
in clause 8.5.2.2. If the "filter" URI parameter was supplied in the request, the data in the response
body shall have been transformed according to the rules specified in clause 5.2.2 of ETSI GS NFV-SOL 013.
If the EM/VNF supports alternative 2 (paging) according to clause 5.4.2.1 of ETSI GS NFV-SOL 013for this
resource, inclusion of the Link HTTP header in this response shall follow the provisions in clause 5.4.2.3
of ETSI GS NFV-SOL 013.
headers:
Version:
description: The used API version.
style: simple
explode: false
schema:
type: string
Link:
description: |
Reference to other resources. Used for paging in the present document, see clause 4.7.2.1.
style: simple
explode: false
schema:
type: string
Content-Type:
description: The MIME type of the body of the response.
style: simple
explode: false
schema:
type: string
content:
application/json:
schema:
type: array
items:
$ref: definitions/SOL002VNFIndicator_def.yaml#/definitions/VnfIndicator
VnfIndicators.Get.200:
description: |
200 OK
Shall be returned when information about zero or more VNF indicators was queried successfully.
The response body shall contain in an array the representations of all VNF indicators that are related
to the particular VNF instance and that match the attribute filter., i.e. zero or more representations
of VNF indicators as defined in clause 8.5.2.2. If the "filter" URI parameter was supplied in the request,
the data in the response body shall have been transformed according to the rules specified in clause
5.2.2 of ETSI GS NFV-SOL 013. If the EM/VMF supports alternative 2 (paging) according to clause 5.4.2.1 of
ETSI GS NFV-SOL 013 for this resource, inclusion of the Link HTTP header in this response shall follow the
provisions in clause 5.4.2.3 of ETSI GS NFV-SOL 013.
headers:
Version:
description: The used API version.
style: simple
explode: false
schema:
type: string
Link:
description: |
Reference to other resources. Used for paging in the present document, see clause 4.7.2.1.
style: simple
explode: false
schema:
type: string
Content-Type:
description: The MIME type of the body of the response.
style: simple
explode: false
schema:
type: string
content:
application/json:
schema:
type: array
items:
$ref: definitions/SOL002VNFIndicator_def.yaml#/definitions/VnfIndicator
VnfIndividualIndicator.Get.200:
description: |
200 OK
Shall be returned when the VNF indicator has been read successfully. The response body shall contain the
representation of the VNF indicator.
headers:
Version:
description: The used API version.
style: simple
explode: false
schema:
type: string
Content-Type:
description: The MIME type of the body of the response.
style: simple
explode: false
schema:
type: string
content:
application/json:
schema:
$ref: definitions/SOL002VNFIndicator_def.yaml#/definitions/VnfIndicator
VnfIndicatorSubscriptions.Get.200:
description: |
200 OK
Shall be returned when the list of subscriptions was queried successfully.
The response body shall contain in an array the representations of all active subscriptions of the functional
block that invokes the method which match the attribute filter, i.e. zero or more representations of VNF
indicators subscriptions as defined in clause 8.5.2.4. If the "filter" URI parameter was supplied in the request,
the data in the response body shall have been transformed according to the rules specified in clause 5.2.2 of
ETSI GS NFV SOL 013. If the EM supports alternative 2 (paging) according to clause 5.4.2.1 of ETSI GS NFV-SOL 013
for this resource, inclusion of the Link HTTP header in this response shall follow the provisions in clause 5.4.2.3
of ETSI GS NFV-SOL 013.
headers:
Version:
description: The used API version.
style: simple
explode: false
schema:
type: string
Link:
description: |
Reference to other resources. Used for paging in the present document, see clause 4.7.2.1.
style: simple
explode: false
schema:
type: string
Content-Type:
description: The MIME type of the body of the response.
style: simple
explode: false
schema:
type: string
content:
application/json:
schema:
type: array
items:
$ref: definitions/SOL002VNFIndicator_def.yaml#/definitions/VnfIndicatorSubscription
/subscriptions:
post:
summary: Create a new subscription
description: Create a new subscription
parameters:
- name: subscription
in: body
description: Subscription data.
required: true
schema:
$ref: 'definitions/VnfIndicatorSubscriptionRequest_def.yaml#/definitions/VnfIndicatorSubscriptionRequest'
responses:
201:
description: >
The subscription was created successfully.
The response body shall contain a representation of the created subscription resource.
schema:
$ref: 'definitions/VnfIndicatorSubscription_def.yaml#/definitions/VnfIndicatorSubscription'
headers:
Location:
description: >
Pointer to the created subscription resource.
type: string
format: URI
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/VNFIndicator_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: Query subscriptions.
description: >
The GET method queries the list of active subscriptions of the functional block
that invokes the method. It can be used e.g. for resynchronization after error situations.
# parameters:
# - name: id.eq
# in: query
# description: >
# Attribute based filtering for subscription identifiers.
# type: array
# items:
# type: string
# - name: callbackUri.eq
# in: query
# description: >
# Attribute based filtering for the subscription's call back URIs.
# type: array
# items:
# type: string
# - name: filter.indicatorIds.cont
# in: query
# description: >
# Attribute based filtering for indicator identifiers.
# type: array
# items:
# type: string
# - name: filter.vnfInstanceSubscriptionFilter.vnfdIds.cont
# in: query
# description: >
# Attribute based filtering for VNFD identifiers.
# type: array
# items:
# type: string
# - name: filter.vnfInstanceSubscriptionFilter.vnfProductsFromProviders.vnfProvider.eq
# in: query
# description: >
# Attribute based filtering for VNF providers.
# type: array
# items:
# type: string
# - name: filter.vnfInstanceSubscriptionFilter.vnfProductsFromProviders.vnfProducts.vnfProductName.eq
# in: query
# description: >
# Attribute based filtering for VNF product name.
# type: array
# items:
# type: string
# - name: filter.vnfInstanceSubscriptionFilter.vnfProductsFromProviders.vnfProducts.versions.vnfSoftwareVersion.cont
# in: query
# description: >
# Attribute based filtering for VNF software versions.
# type: array
# items:
# type: string
# - name: filter.vnfInstanceSubscriptionFilter.vnfProductsFromProviders.vnfProducts.versions.vnfdVersion.cont
# in: query
# description: >
# Attribute based filtering for VNFD versions.
# type: array
# items:
# type: string
# - name: filter.vnfInstanceSubscriptionFilter.vnfInstanceIds.cont
# in: query
# description: >
# Attribute based filtering for VNF instance identifiers.
# type: array
# items:
# type: string
# - name: filter.vnfInstanceSubscriptionFilter.vnfInstanceNames.cont
# in: query
# description: >
# Attribute based filtering for VNF instance names.
# type: array
# items:
# type: string
responses:
200:
description: >
The list of subscriptions was queried successfully. The response body shall contain
the representations of all active subscriptions of the functional block that invokes
the method which match the attribute filter.
schema:
type: array
items:
$ref: 'definitions/VnfIndicatorSubscription_def.yaml#/definitions/VnfIndicatorSubscription'
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/VNFIndicator_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' }
VnfIndicatorSubscription.Post.201:
description: |
201 CREATED
Shall be returned when the subscription has been created successfully. The response body shall contain a
representation of the created "Individual subscription" resource.
headers:
Version:
description: The used API version.
style: simple
explode: false
schema:
type: string
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.
style: simple
explode: false
schema:
type: string
Location:
description: |
Pointer to the created subscription resource.
style: simple
explode: false
schema:
type: string
format: URI
Content-Type:
description: The MIME type of the body of the response.
style: simple
explode: false
schema:
type: string
content:
application/json:
schema:
type: array
items:
$ref: definitions/SOL002VNFIndicator_def.yaml#/definitions/VnfIndicatorSubscription
VnfIndicatorSubscription.Post.422:
description: |
422 Unprocessable Content
/subscriptions/{subscriptionId}:
get:
summary: Query subscriptions.
description: >
This resource represents an individual subscription. The client can use this resource to
read and to terminate a subscription to notifications related to VNF indicator value changes.
parameters:
- name: subscriptionId
description: >
Identifier of this subscription.
NOTE:
This identifier can be retrieved from the resource referenced by the "Location" HTTP header
in the response to a POST request creating a new subscription resource. It can also be retrieved
from the "id" attribute in the payload body of that response.
in: path
type: string
required: true
responses:
200:
description: >
The subscriptions was queried successfully. The response body shall contain
the representation of the requested subscription.
schema:
$ref: 'definitions/VnfIndicatorSubscription_def.yaml#/definitions/VnfIndicatorSubscription'
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/VNFIndicator_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' }
delete:
summary: Delete a subscription
description: Terminate an individual subscription.
parameters:
- name: subscriptionId
description: >
Identifier of this subscription.
NOTE:
This identifier can be retrieved from the resource referenced by the "Location" HTTP header
in the response to a POST request creating a new subscription resource. It can also be retrieved
from the "id" attribute in the payload body of that response.
in: path
type: string
required: true
responses:
204:
description: >
The subscription was deleted 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/VNFIndicator_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' }
Shall be returned upon the following error: The content type of the message content is supported and
the message content of a request contains syntactically correct data but the data cannot be processed.
The general cause for this error and its handling is specified in clause 6.4 of ETSI GS NFV-SOL 013 [6],
including rules for the presence of the response body.
Specifically in case of this resource, the response code 422 shall also be returned if the VNFM has tested
the Notification endpoint as described in clause 8.4.7.3.2 and the test has failed.
In this case, the "detail" attribute in the "ProblemDetails" structure shall convey more information
about the error.
headers:
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.
style: simple
explode: false
schema:
type: string
Version:
description: Version of the API used in the response.
style: simple
explode: false
schema:
type: string
Content-Type:
description: |
The MIME type of the body of the response. Reference: IETF RFC 7231
style: simple
explode: false
schema:
type: string
content:
application/json:
schema:
$ref: "../General_Definitions/SOL002_def.yaml#/definitions/ProblemDetails"
VnfIndicatorSubscription.Get.200:
description: |
200 OK
Shall be returned when information about an individual subscription has been read successfully.
The response body shall contain the representation of the "Individual subscription" resource.
headers:
Version:
description: The used API version.
style: simple
explode: false
schema:
type: string
Content-Type:
description: The MIME type of the body of the response.
style: simple
explode: false
schema:
type: string
content:
application/json:
schema:
$ref: definitions/SOL002VNFIndicator_def.yaml#/definitions/VnfIndicatorSubscription
VnfIndicatorSubscription.Delete.204:
description: |
204 NO CONTENT
Shall be returned when the subscription has been deleted successfully. The response body shall be empty.
headers:
Version:
description: The used API version.
style: simple
explode: false
schema:
type: string
content: {}
\ No newline at end of file