tacker/api-ref/source/v1/vnfs.inc
Shubham Potale 938262073f Delete VNF should fail with 409 error
If user deletes VNF in "PENDING_CREATE" status, VNF is deleted from
tacker but the resources created by VIM driver are not cleaned up
properly. This patch doesn't allow VNF to be deleted if the status is
in "PENDING_CREATE" status. It will raise 409 error.

APIImpact
Return 409 error instead of 200 when VNF is deleted in
"PENDING_CREATE" status.

Change-Id: I2de9c3dce5a4b3795119e2550aa8acea68940c45
Closes-Bug: #1798726
2020-01-31 13:54:49 +05:30

398 lines
7.2 KiB
ReStructuredText

.. -*- rst -*-
====================================
Virtualized Network Functions (VNFs)
====================================
Manages Virtualized Network Functions (VNFs) and their resources.
The VNF takes on the responsibility for handling specific network functions.
Create VNF
==========
.. rest_method:: POST /v1.0/vnfs
Creates a VNF.
Response Codes
--------------
.. rest_status_code:: success status.yaml
- 201
.. rest_status_code:: error status.yaml
- 400
- 401
- 404
- 500
Request Parameters
------------------
.. rest_parameters:: parameters.yaml
- vnf: vnf
- tenant_id: tenant_id_opt
- vnfd_id: vnfd_id
- vim_id: vim_id_opt
- name: name
- description: description_opt
- attributes: vnf_attributes_opt
- config: vnf_config_opt
- param_values: vnf_param_values_opt
- placement_attr: vnf_placement_attr_opt
- vnfd_template: vnfd_template
Request Example
---------------
.. literalinclude:: samples/vnfs/vnfs-create-request.json
:language: javascript
Response Parameters
-------------------
.. rest_parameters:: parameters.yaml
- vnf: vnf
- status: vnf_status
- description: description
- vnfd_id: vnfd_id
- tenant_id: tenant_id
- created_at: vnf_created_at
- updated_at: vnf_updated_at
- instance_id: vnf_instance_id
- mgmt_ip_address: vnf_mgmt_ip_address
- vim_id: vim_id
- placement_attr: vnf_placement_attr
- error_reason: vnf_error_reason
- attributes: vnf_attributes
- config: vnf_config
- param_values: vnf_param_values
- monitoring_policy: vnf_monitoring_policy
- heat_template: vnf_heat_template
- id: vnf_id
- name: name
Response Example
----------------
.. literalinclude:: samples/vnfs/vnfs-create-response.json
:language: javascript
List VNFs
=========
.. rest_method:: GET /v1.0/vnfs
Lists VNFs.
Response Codes
--------------
.. rest_status_code:: success status.yaml
- 200
.. rest_status_code:: error status.yaml
- 401
- 500
Response Parameters
-------------------
.. rest_parameters:: parameters.yaml
- vnfs: vnfs
- status: vnf_status
- description: description
- vnfd_id: vnfd_id
- tenant_id: tenant_id
- created_at: vnf_created_at
- updated_at: vnf_updated_at
- instance_id: vnf_instance_id
- mgmt_ip_address: vnf_mgmt_ip_address
- vim_id: vim_id
- placement_attr: vnf_placement_attr
- error_reason: vnf_error_reason
- attributes: vnf_attributes
- config: vnf_config
- param_values: vnf_param_values
- monitoring_policy: vnf_monitoring_policy
- heat_template: vnf_heat_template
- id: vnf_id
- name: name
Response Example
----------------
.. literalinclude:: samples/vnfs/vnfs-list-response.json
:language: javascript
Show VNF
========
.. rest_method:: GET /v1.0/vnfs/{vnf_id}
Shows information of a given VNF.
Response Codes
--------------
.. rest_status_code:: success status.yaml
- 200
.. rest_status_code:: error status.yaml
- 401
- 404
- 500
Request Parameters
------------------
.. rest_parameters:: parameters.yaml
- vnf_id: vnf_id_path
Response Parameters
-------------------
.. rest_parameters:: parameters.yaml
- vnf: vnf
- status: vnf_status
- description: description
- vnfd_id: vnfd_id
- tenant_id: tenant_id
- created_at: vnf_created_at
- updated_at: vnf_updated_at
- instance_id: vnf_instance_id
- mgmt_ip_address: vnf_mgmt_ip_address
- vim_id: vim_id
- placement_attr: vnf_placement_attr
- error_reason: vnf_error_reason
- attributes: vnf_attributes
- config: vnf_config
- param_values: vnf_param_values
- monitoring_policy: vnf_monitoring_policy
- heat_template: vnf_heat_template
- id: vnf_id
- name: name
Response Example
----------------
.. literalinclude:: samples/vnfs/vnfs-show-response.json
:language: javascript
Update VNF
===========
.. rest_method:: PUT /v1.0/vnfs/{vnf_id}
Updates a given VNF.
Response Codes
--------------
.. rest_status_code:: success status.yaml
- 200
.. rest_status_code:: error status.yaml
- 400
- 401
- 404
- 409
- 500
Request Parameters
------------------
.. rest_parameters:: parameters.yaml
- vnf_id: vnf_id_path
- attributes: vnf_attributes_put
- config: vnf_config_opt
Request Example
---------------
.. literalinclude:: samples/vnfs/vnfs-update-request.json
:language: javascript
Response Parameters
-------------------
.. rest_parameters:: parameters.yaml
- vnf: vnf
- status: vnf_status
- description: description
- vnfd_id: vnfd_id
- tenant_id: tenant_id
- created_at: vnf_created_at
- updated_at: vnf_updated_at
- instance_id: vnf_instance_id
- mgmt_ip_address: vnf_mgmt_ip_address
- vim_id: vim_id
- placement_attr: vnf_placement_attr
- error_reason: vnf_error_reason
- attributes: vnf_attributes
- config: vnf_config
- param_values: vnf_param_values
- monitoring_policy: vnf_monitoring_policy
- heat_template: vnf_heat_template
- id: vnf_id
- name: name
Response Example
----------------
.. literalinclude:: samples/vnfs/vnfs-update-response.json
:language: javascript
Delete VNF
==========
.. rest_method:: DELETE /v1.0/vnfs/{vnf_id}
Deletes a given VNF.
.. note::
Non-admin users are not allowed to delete a VNF in ``PENDING_CREATE`` and
``PENDING_DELETE`` status. In this case, it would return 409 error. Admin
users can delete a VNF in any status with force flag true.
Response Codes
--------------
.. rest_status_code:: success status.yaml
- 204
.. rest_status_code:: error status.yaml
- 401
- 404
- 409
- 500
Request Parameters
------------------
.. rest_parameters:: parameters.yaml
- vnf_id: vnf_id_path
- attributes: vnf_force_delete_flag
Request Example
---------------
Admin user can request to delete VNF forcefully.
.. literalinclude:: samples/vnfs/vnfs-delete-request.json
:language: javascript
List VNF resources
==================
.. rest_method:: GET /v1.0/vnfs/{vnf_id}/resources
Lists resources, such as VDU/CP, of a given VNF.
Response Codes
--------------
.. rest_status_code:: success status.yaml
- 200
.. rest_status_code:: error status.yaml
- 401
- 404
- 500
Request Parameters
------------------
.. rest_parameters:: parameters.yaml
- vnf_id: vnf_id_path
Response Parameters
-------------------
.. rest_parameters:: parameters.yaml
- resources: vnf_resources
- type: vnf_resource_type
- name: vnf_resource_name
- id: vnf_resource_id
Response Example
----------------
.. literalinclude:: samples/vnfs/vnfs-resources-list-response.json
:language: javascript
Trigger VNF scaling
===================
.. rest_method:: POST /v1.0/vnfs/{vnf_id}/actions
Triggers VNF scaling action.
Response Codes
--------------
.. rest_status_code:: success status.yaml
- 201
.. rest_status_code:: error status.yaml
- 400
- 401
- 404
- 500
Request Parameters
------------------
.. rest_parameters:: parameters.yaml
- vnf_id: vnf_id_path
- scale: vnf_scale
- policy: vnf_scale_policy
- type: vnf_scale_type
Request Example
---------------
.. literalinclude:: samples/vnfs/vnfs-actions-create-request.json
:language: javascript
Response Parameters
-------------------
.. rest_parameters:: parameters.yaml
- scale: vnf_scale
- policy: vnf_scale_policy
- type: vnf_scale_type
Response Example
----------------
.. literalinclude:: samples/vnfs/vnfs-actions-create-response.json
:language: javascript