Commit 46079d2d authored by Gergely Csatari's avatar Gergely Csatari
Browse files

WIP: VNF Lifecycle Management interface



Things to do:
   - Fix the attribite fliters as it was discussed

Change-Id: I008b6f98cdb96f718ceb68c1d32d81ae0101a8d5
Signed-off-by: Gergely Csatari's avatarGergely Csatari <gergely.csatari@nokia.com>
parent 9c8ebfec
swagger: "2.0"
info:
version: "2.3.0"
title: SOL003
license:
name: "ETSI Forge copyright notice"
url: https://forge.etsi.org/etsi-forge-copyright-notice.txt
basePath: "/vnflcm/v1"
schemes:
- https
consumes:
- "application/json"
produces:
- "application/json"
paths:
###############################################################################
# VNF instances #
###############################################################################
'/vnf_instances':
#SOL003 location: 5.4.2
post:
#TODO: Add headers defined in 4.3.4.2
description: "The POST method creates a new VNF instance resource."
parameters:
- name: createVnfRequest
description: The VNF creation parameters
in: body
required: true
schema:
$ref: "../../definitions/SOL002SOL003VNFLifecycleManagement_def.yaml#/definitions/CreateVnfRequest"
- name: Accept
description: >
Content-Types that are acceptable for the response.
Reference: IETF RFC 7231
in: header
required: true
type: string
- name: Authorization
description: >
The authorization token for the request.
Reference: IETF RFC 7235
in: header
required: true
type: string
- name: Content-Type
description: >
The MIME type of the body of the request.
Reference: IETF RFC 7231
in: header
required: true
type: string
responses:
201:
description: A VNF Instance identifier was created successfully
headers:
#TODO: Add headers defined in 4.3.4.3
Content-Type:
description: The MIME type of the body of the response.
type: string
maximum: 1
minimum: 1
Location:
description: The resource URI of the created VNF instance
type: string
format: url
WWW-Authenticate:
description: >
Challenge if the corresponding HTTP request has not provided
authorization, or error details if the corresponding HTTP
request has provided an invalid authorization token.
type: string
maximum: 1
minimum: 0
schema:
$ref: "definitions/VNFLifecycleManagement_def.yaml#/definitions/VnfInstance"
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/404"
406:
$ref: "../../responses/SOL002SOL003_resp.yaml#/responses/406"
409:
$ref: "responses/VNFLifecycleManagement_resp.yaml#/responses/409-inconsistent-state"
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:
description: >
The GET method queries information about multiple VNF instances.
parameters:
- name: filter
description: >
Attribute-based filtering parameters. The VNFM shall support
receiving filtering parameters as part of the URI query string.
The NFVO may supply filtering parameters. All attribute names
that appear in the VnfInstance and in data types referenced
from it shall be supported in attribute-based filtering
parameters.
in: query
minimum: 0
maximum: 1
type: array
allowEmptyValue: true
collectionFormat: multi
items:
type: string
pattern: '[a-zA-Z][.a-zA-Z]*\.(eq|neq|gt|lt|gte|lte|cont|ncont)\?=[0-9](,[0-9])*'
- name: all_fields
description: >
Include all complex attributes in the response. This URI query
parameter requests that all complex attributes are included in
the response, including those suppressed by exclude_default. It
is inverse to the "exclude_default" parameter. The API producer
shall support this parameter for certain resources. Details are
defined in the clauses specifying the actual resources. The VNFM
shall support this parameter.
in: query
minimum: 0
maximum: 1
type: boolean
- name: fields
description: >
Complex attributes to be included into the response. This URI
query parameter requests that only the listed complex
attributes are included in the response.
The parameter shall be formatted as a list of attribute names.
An attribute name shall either be the name of an attribute, or a
path consisting of the names of multiple attributes with
parent-child relationship, separated by ".". Attribute names in
the list shall be separated by comma (","). Valid attribute
names for a particular GET request are the names of all complex
attributes in the expected response that have a lower cardinality
bound of 0 and that are not conditionally mandatory.
The API producer should support this parameter for certain
resources. Details are defined in the clauses specifying the
actual resources.
The VNFM should support this parameter.
in: query
minimum: 0
maximum: 1
type: array
collectionFormat: csv
items:
type: string
pattern: '(([a-zA-Z])?(\.[a-zA-Z])*)?,(([a-zA-Z])?(\.[a-zA-Z])*)*'
- name: exclude_fields
description: >
Complex attributes to be excluded from the response. This URI
query parameter requests that the listed complex attributes are
excluded from the response. For the format, eligible attributes
and support by the API producer, the provisions defined for the
"fields" parameter shall apply.
The VNFM should support this parameter.
in: query
minimum: 0
maximum: 1
type: array
collectionFormat: csv
items:
type: string
pattern: '(([a-zA-Z])?(\.[a-zA-Z])*)?,(([a-zA-Z])?(\.[a-zA-Z])*)*'
- name: exclude_default
description: >
Indicates to exclude the following complex attributes from the
response.
Presence of this URI query parameter requests that a default set
of complex attributes shall be excluded from the response. The
default set is defined per resource in the present document. Not
every resource will necessarily have such a default set. Only
complex attributes with a lower cardinality bound of zero that are
not conditionally mandatory can be included in the set.
The API producer shall support this parameter for certain
resources. Details are defined in the clauses specifying the
actual resources. This parameter is a flag, i.e. it has no
value.
If a resource supports attribute selectors and none of the
attribute selector parameters is specified in a GET request, the
"exclude_default" parameter shall be assumed as the default.
The VNFM shall support this parameter.
The following attributes shall be excluded from the VnfInstance
structure in the response body if this parameter is provided, or
none of the parameters "all_fields," "fields", "exclude_fields",
"exclude_default" are provided:
* vnfConfigurableProperties
* vimConnectionInfo
* instantiatedVnfInfo
* metadata
* extensions
in: query
minimum: 0
maximum: 1
type: boolean
- name: Accept
description: >
Content-Types that are acceptable for the response.
Reference: IETF RFC 7231
in: header
required: true
type: string
- name: Authorization
description: >
The authorization token for the request.
Reference: IETF RFC 7235
in: header
required: true
type: string
responses:
200:
description: >
Information about zero or more VNF instances was queried
successfully. The response body shall contain
representations of zero or more VNF instances.
headers:
Content-Type:
description: The MIME type of the body of the response.
type: string
maximum: 1
minimum: 1
WWW-Authenticate:
description: >
Challenge if the corresponding HTTP request has not provided
authorization, or error details if the corresponding HTTP
request has provided an invalid authorization token.
type: string
maximum: 1
minimum: 0
schema:
type: array
items:
$ref: "definitions/VNFLifecycleManagement_def.yaml#/definitions/VnfInstance"
400:
$ref: "../../responses/SOL002SOL003_resp.yaml#/responses/400-attr-selector"
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/404"
406:
$ref: "../../responses/SOL002SOL003_resp.yaml#/responses/406"
409:
$ref: "responses/VNFLifecycleManagement_resp.yaml#/responses/409-inconsistent-state"
416:
$ref: "../../responses/SOL002SOL003_resp.yaml#/responses/416"
500:
$ref: "../../responses/SOL002SOL003_resp.yaml#/responses/500"
503:
$ref: "../../responses/SOL002SOL003_resp.yaml#/responses/503"
###############################################################################
# Individual VNF instance #
###############################################################################
'/vnf_instances/{vnfInstanceId}':
#SOL003 location: 5.4.3.2
parameters:
- name: vnfInstanceId
description: >
Identifier of the VNF instance. 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.
in: path
type: string
required: true
get:
description: >
Information about an individual VNF instance was queried successfully.
responses:
200:
description: >
Information about zero or more VNF instances was queried
successfully. The response body shall contain
representations of zero or more VNF instances.
headers:
Content-Type:
description: The MIME type of the body of the response.
type: string
maximum: 1
minimum: 1
WWW-Authenticate:
description: >
Challenge if the corresponding HTTP request has not provided
authorization, or error details if the corresponding HTTP
request has provided an invalid authorization token.
type: string
maximum: 1
minimum: 0
schema:
$ref: "definitions/VNFLifecycleManagement_def.yaml#/definitions/VnfInstance"
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/404"
406:
$ref: "../../responses/SOL002SOL003_resp.yaml#/responses/406"
409:
$ref: "responses/VNFLifecycleManagement_resp.yaml#/responses/409-inconsistent-state"
416:
$ref: "../../responses/SOL002SOL003_resp.yaml#/responses/416"
500:
$ref: "../../responses/SOL002SOL003_resp.yaml#/responses/500"
503:
$ref: "../../responses/SOL002SOL003_resp.yaml#/responses/503"
patch:
#SOL003 location: 5.4.3.3.4
description: >
This method modifies an individual VNF instance resource. Changes to
the VNF configurable properties are applied to the configuration in
the VNF instance, and are reflected in the representation of this
resource. Other changes are applied to the VNF instance information
managed by the VNFM, and are reflected in the representation of this
resource
parameters:
- name: vnfInfoModifications
description: Input parameters for VNF info modification
required: true
in: body
schema:
$ref: "../../definitions/SOL002SOL003VNFLifecycleManagement_def.yaml#/definitions/VnfInfoModifications"
responses:
202:
$ref: "responses/VNFLifecycleManagement_resp.yaml#/responses/202-with-Location"
400:
$ref: "../../responses/SOL002SOL003_resp.yaml#/responses/400-attr-selector"
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/404"
406:
$ref: "../../responses/SOL002SOL003_resp.yaml#/responses/406"
409:
$ref: "responses/VNFLifecycleManagement_resp.yaml#/responses/409-another-lcm-operation-ongoing"
412:
$ref: "../../responses/SOL002SOL003_resp.yaml#/responses/412"
500:
$ref: "../../responses/SOL002SOL003_resp.yaml#/responses/500"
503:
$ref: "../../responses/SOL002SOL003_resp.yaml#/responses/503"
delete:
#SOL003 location: 5.4.3.3.5
description: >
This method deletes an individual VNF instance resource.
responses:
204:
description: >
The VNF instance resource and the associated VNF identifier were
deleted successfully.
The response body shall be empty.
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.
type: string
maximum: 1
minimum: 0
400:
$ref: "../../responses/SOL002SOL003_resp.yaml#/responses/400-attr-selector"
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/404"
406:
$ref: "../../responses/SOL002SOL003_resp.yaml#/responses/406"
409:
$ref: "responses/VNFLifecycleManagement_resp.yaml#/responses/409-state-conflict-INSTANTIATED"
412:
$ref: "../../responses/SOL002SOL003_resp.yaml#/responses/412"
500:
$ref: "../../responses/SOL002SOL003_resp.yaml#/responses/500"
503:
$ref: "../../responses/SOL002SOL003_resp.yaml#/responses/503"
###############################################################################
# Instantiate VNF task #
###############################################################################
'/vnf_instances/{vnfInstanceId}/instantiate':
#SOL003 location: 5.4.4.2
parameters:
- name: vnfInstanceId
description: >
Identifier of the VNF instance. 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.
in: path
type: string
required: true
post:
#SOL003 location: 5.4.4.3.1
description: >
The POST method instantiates a VNF instance.
parameters:
- name: InstantiateVnfRequest
description: Parameters for the VNF instantiation.
in: body
required: true
schema:
$ref: "definitions/VNFLifecycleManagement_def.yaml#/definitions/InstantiateVnfRequest"
responses:
200:
description: >
Information about zero or more VNF instances was queried
successfully. The response body shall contain
representations of zero or more VNF instances.
headers:
Content-Type:
description: The MIME type of the body of the response.
type: string
maximum: 1
minimum: 1
WWW-Authenticate:
description: >
Challenge if the corresponding HTTP request has not provided
authorization, or error details if the corresponding HTTP
request has provided an invalid authorization token.
type: string
maximum: 1
minimum: 0
schema:
$ref: "definitions/VNFLifecycleManagement_def.yaml#/definitions/VnfInstance"
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/404"
406:
$ref: "../../responses/SOL002SOL003_resp.yaml#/responses/406"
409:
$ref: "responses/VNFLifecycleManagement_resp.yaml#/responses/409-state-conflict-INSTANTIATED"
416:
$ref: "../../responses/SOL002SOL003_resp.yaml#/responses/416"
500:
$ref: "../../responses/SOL002SOL003_resp.yaml#/responses/500"
503:
$ref: "../../responses/SOL002SOL003_resp.yaml#/responses/503"
get:
description: >
Information about an individual VNF instance was queried successfully.
parameters:
- name: vnfInstanceId
description: >
Identifier of the VNF instance. 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.
in: path
type: string
required: true
responses:
200:
description: >
Information about zero or more VNF instances was queried
successfully. The response body shall contain
representations of zero or more VNF instances.
headers:
Content-Type:
description: The MIME type of the body of the response.
type: string
maximum: 1
minimum: 1
WWW-Authenticate:
description: >
Challenge if the corresponding HTTP request has not provided
authorization, or error details if the corresponding HTTP
request has provided an invalid authorization token.
type: string
maximum: 1
minimum: 0
schema:
$ref: "definitions/VNFLifecycleManagement_def.yaml#/definitions/VnfInstance"
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/404"
406:
$ref: "../../responses/SOL002SOL003_resp.yaml#/responses/406"
409:
$ref: "responses/VNFLifecycleManagement_resp.yaml#/responses/409-inconsistent-state"
416:
$ref: "../../responses/SOL002SOL003_resp.yaml#/responses/416"
500:
$ref: "../../responses/SOL002SOL003_resp.yaml#/responses/500"
503:
$ref: "../../responses/SOL002SOL003_resp.yaml#/responses/503"
patch:
#SOL003 location: 5.4.3.3.4
description: >
This method modifies an individual VNF instance resource. Changes to
the VNF configurable properties are applied to the configuration in
the VNF instance, and are reflected in the representation of this
resource. Other changes are applied to the VNF instance information
managed by the VNFM, and are reflected in the representation of this
resource
parameters:
- name: vnfInfoModifications
description: Input parameters for VNF info modification
required: true
in: body
schema:
$ref: "../../definitions/SOL002SOL003VNFLifecycleManagement_def.yaml#/definitions/VnfInfoModifications"
- name: vnfInstanceId
description: >
Identifier of the VNF instance. 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.
in: path
type: string
required: true
responses:
202:
$ref: "responses/VNFLifecycleManagement_resp.yaml#/responses/202-with-Location"
400:
$ref: "../../responses/SOL002SOL003_resp.yaml#/responses/400-attr-selector"
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/404"
406:
$ref: "../../responses/SOL002SOL003_resp.yaml#/responses/406"
409:
$ref: "responses/VNFLifecycleManagement_resp.yaml#/responses/409-inconsistent-state"
412:
$ref: "../../responses/SOL002SOL003_resp.yaml#/responses/412"
500:
$ref: "../../responses/SOL002SOL003_resp.yaml#/responses/500"
503:
$ref: "../../responses/SOL002SOL003_resp.yaml#/responses/503"
delete:
#SOL003 location: 5.4.3.3.5
description: >
This method deletes an individual VNF instance resource.
parameters:
- name: vnfInstanceId
description: >
Identifier of the VNF instance. 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.
in: path
type: string
required: true
responses:
204:
description: >
The VNF instance resource and the associated VNF identifier were
deleted successfully.