Remove legacy documentation and tools

This patch removes documentation for the following legacy features.
- Extensions
- Virtualized Network Function Descriptors (VNFDs)
- Virtualized Network Functions (VNFs)
- Events
- VNF Forwarding Graph Descriptors (VNFFGDs)
- VNF Forwarding Graphs (VNFFGs)
- Network Forwarding Paths (NFPs)
- Service Function Chains (SFCs)
- Classifiers
- Network Service Descriptors (NSD)
- Network Services (NSs)

And also remove the following tools that are currently not in use.
- tools/vnfc/build_image.sh
- tools/check_i18n_test_case.txt
- tools/check_i18n.py
- tools/i18n_cfg.py
- tools/clean.sh
- tools/prepare_function_test.sh
- tools/test-setup.sh
- tools/install_venv_common.py
- tools/install_venv.py
- tools/with_venv.sh

For the following tools used in FT, move them under
`tacker/tests/functional/tools`.
- tools/test-setup-default-vim.sh
- tools/test-setup-k8s-vim.sh
- tools/test-setup-mgmt.sh
- tools/test-setup-fake-prometheus-server.sh

Implements: blueprint deprecate-legacy-apis
Change-Id: Iea89c32f69ccbe47badcfddcf77430abda98362b
This commit is contained in:
Ai Hamano 2023-10-18 09:27:20 +09:00
parent 73b41001a5
commit ccb8dadb55
132 changed files with 92 additions and 14895 deletions

View File

@ -1,96 +0,0 @@
.. -*- rst -*-
===========
Classifiers
===========
Lists classifiers and shows information of a given classifier.
The classifier is a component of a NFP and defines policies to
distinguish which traffic should enter the related SFC.
List classifiers
================
.. rest_method:: GET /v1.0/classifiers
Lists classifiers.
Response Codes
--------------
.. rest_status_code:: success status.yaml
- 200
.. rest_status_code:: error status.yaml
- 401
- 500
Response Parameters
-------------------
.. rest_parameters:: parameters.yaml
- classifiers: classifiers
- status: classifier_status
- nfp_id: classifier_nfp_id
- tenant_id: tenant_id
- chain_id: classifier_chain_id
- instance_id: classifier_instance_id
- id: classifier_id
- match: classifier_match
Response Example
----------------
.. literalinclude:: samples/classifiers/classifiers-list-response.json
:language: javascript
Show classifier
===============
.. rest_method:: GET /v1.0/classifiers/{sfc_id}
Shows information of a given classifier.
Response Codes
--------------
.. rest_status_code:: success status.yaml
- 200
.. rest_status_code:: error status.yaml
- 401
- 404
- 500
Request Parameters
------------------
.. rest_parameters:: parameters.yaml
- sfc_id: sfc_id_path
Response Parameters
-------------------
.. rest_parameters:: parameters.yaml
- classifiers: classifiers
- status: classifier_status
- nfp_id: classifier_nfp_id
- tenant_id: tenant_id
- chain_id: classifier_chain_id
- instance_id: classifier_instance_id
- id: classifier_id
- match: classifier_match
Response Example
----------------
.. literalinclude:: samples/classifiers/classifiers-show-response.json
:language: javascript

View File

@ -1,98 +0,0 @@
.. -*- rst -*-
==========
Events
==========
Lists and shows captured events.
Tacker currently supports events for following resource types:
- VNFD
- VNF
- VIM
List events
===========
.. rest_method:: GET /v1.0/events
Lists events of resources.
Response Codes
--------------
.. rest_status_code:: success status.yaml
- 200
.. rest_status_code:: error status.yaml
- 401
- 500
Response Parameters
-------------------
.. rest_parameters:: parameters.yaml
- events: events
- resource_id: event_resource_id
- timestamp: event_timestamp
- event_details: event_details
- resource_state: event_resource_state
- id: event_id
- resource_type: event_resource_type
Response Example
----------------
.. literalinclude:: samples/events/events-list-response.json
:language: javascript
Show event
==========
.. rest_method:: GET /v1.0/events/{event_id}
Shows information of a given event.
Response Codes
--------------
.. rest_status_code:: success status.yaml
- 200
.. rest_status_code:: error status.yaml
- 401
- 404
- 500
Request Parameters
------------------
.. rest_parameters:: parameters.yaml
- event_id: event_id_path
Response Parameters
-------------------
.. rest_parameters:: parameters.yaml
- event: event
- resource_id: event_resource_id
- timestamp: event_timestamp
- event_details: event_details
- resource_state: event_resource_state
- id: event_id
- resource_type: event_resource_type
Response Example
----------------
.. literalinclude:: samples/events/events-show-response.json
:language: javascript

View File

@ -1,91 +0,0 @@
.. -*- rst -*-
==========
Extensions
==========
Lists extensions and shows information of a given extension.
Extensions introduce features to the API.
List extensions
===============
.. rest_method:: GET /v1.0/extensions
Lists available extensions.
Response Codes
--------------
.. rest_status_code:: success status.yaml
- 200
.. rest_status_code:: error status.yaml
- 401
- 500
Response Parameters
-------------------
.. rest_parameters:: parameters.yaml
- extensions: extensions
- updated: extension_updated_at
- name: name
- links: links
- alias: alias
- description: description
Response Example
----------------
.. literalinclude:: samples/extensions/extensions-list-response.json
:language: javascript
Show extension
==============
.. rest_method:: GET /v1.0/extensions/{alias}
Shows information of a given extension.
Response Codes
--------------
.. rest_status_code:: success status.yaml
- 200
.. rest_status_code:: error status.yaml
- 401
- 404
- 500
Request Parameters
------------------
.. rest_parameters:: parameters.yaml
- alias: alias_path
Response Parameters
-------------------
.. rest_parameters:: parameters.yaml
- extension: extensions
- updated: extension_updated_at
- name: name
- links: links
- alias: alias
- description: description
Response Example
----------------
.. literalinclude:: samples/extensions/extensions-show-response.json
:language: javascript

View File

@ -4,23 +4,7 @@
Legacy Tacker API
#################
.. warning::
Legacy APIs excluding VIM feature are deprecated
and will be removed in the first major release after the Tacker server
version 9.0.0 (2023.1 Antelope release).
.. rest_expand_all::
.. include:: versions.inc
.. include:: extensions.inc
.. include:: vnfds.inc
.. include:: vnfs.inc
.. include:: vims.inc
.. include:: events.inc
.. include:: vnffgds.inc
.. include:: vnffgs.inc
.. include:: nfps.inc
.. include:: sfcs.inc
.. include:: classifiers.inc
.. include:: nsds.inc
.. include:: nss.inc

View File

@ -1,98 +0,0 @@
.. -*- rst -*-
===============================
Network Forwarding Paths (NFPs)
===============================
Lists Network Forwarding Paths (NFPs) and shows information of a given NFP.
The NFP is a component of VNFFG and contains a Service Function Chain (SFC)
and a classifier.
List NFPs
=========
.. rest_method:: GET /v1.0/nfps
Lists NFPs.
Response Codes
--------------
.. rest_status_code:: success status.yaml
- 200
.. rest_status_code:: error status.yaml
- 401
- 500
Response Parameters
-------------------
.. rest_parameters:: parameters.yaml
- nfps: nfps
- status: nfp_status
- name: name
- tenant_id: tenant_id
- chain_id: sfc_id
- path_id: sfc_path_id
- symmetrical: symmetrical
- classifier_id: classifier_id
- id: nfp_id
Response Example
----------------
.. literalinclude:: samples/nfps/nfps-list-response.json
:language: javascript
Show NFP
========
.. rest_method:: GET /v1.0/nfps/{nfp_id}
Shows information of a given NFP.
Response Codes
--------------
.. rest_status_code:: success status.yaml
- 200
.. rest_status_code:: error status.yaml
- 401
- 404
- 500
Request Parameters
------------------
.. rest_parameters:: parameters.yaml
- nfp_id: nfp_id_path
Response Parameters
-------------------
.. rest_parameters:: parameters.yaml
- nfp: nfp
- status: nfp_status
- name: name
- tenant_id: tenant_id
- chain_id: sfc_id
- path_id: sfc_path_id
- symmetrical: symmetrical
- classifier_id: classifier_id
- id: nfp_id
Response Example
----------------
.. literalinclude:: samples/nfps/nfps-show-response.json
:language: javascript

View File

@ -1,183 +0,0 @@
.. -*- rst -*-
==================================
Network Service Descriptors (NSD)
==================================
Manages Network Service Descriptors.
NSD is a TOSCA template that describes the deployment and behaviour of a
Network Service (NS) using a collection of VNFs. For more information, see
`NSD Usage Guide
<https://docs.openstack.org/tacker/latest/user/nsd_usage_guide.html>`_.
Create NSD
===========
.. rest_method:: POST /v1.0/nsds
Creates a NSD.
Response Codes
--------------
.. rest_status_code:: success status.yaml
- 201
.. rest_status_code:: error status.yaml
- 400
- 401
- 500
Request Parameters
------------------
.. rest_parameters:: parameters.yaml
- tenant_id: tenant_id
- name: name
- description: description_opt
- attributes: nsd_attributes
Request Example
---------------
.. literalinclude:: samples/nsds/nsds-create-request.json
:language: javascript
Response Parameters
-------------------
.. rest_parameters:: parameters.yaml
- nsd: nsd
- name: name
- id: nsd_id
- tenant_id: tenant_id
- description: description
- created_at: created_at
- updated_at: updated_at
- attributes: nsd_attributes
Response Example
----------------
.. literalinclude:: samples/nsds/nsds-create-response.json
:language: javascript
List NSDs
==========
.. rest_method:: GET /v1.0/nsds
Lists NSDs.
Response Codes
--------------
.. rest_status_code:: success status.yaml
- 200
.. rest_status_code:: error status.yaml
- 401
- 500
Response Parameters
-------------------
.. rest_parameters:: parameters.yaml
- nsds: nsds
- name: name
- id: nsd_id
- tenant_id: tenant_id
- description: description
- created_at: created_at
- updated_at: updated_at
- attributes: nsd_attributes
Response Example
----------------
.. literalinclude:: samples/nsds/nsds-list-response.json
:language: javascript
Show NSD
=========
.. rest_method:: GET /v1.0/nsds/{nsd_id}
Shows information of a given NSD.
Response Codes
--------------
.. rest_status_code:: success status.yaml
- 200
.. rest_status_code:: error status.yaml
- 401
- 404
- 500
Request Parameters
------------------
.. rest_parameters:: parameters.yaml
- nsd_id: nsd_id_path
Response Parameters
-------------------
.. rest_parameters:: parameters.yaml
- nsds: nsds
- name: name
- id: nsd_id
- tenant_id: tenant_id
- description: description
- created_at: created_at
- updated_at: updated_at
- attributes: nsd_attributes
Response Example
----------------
.. literalinclude:: samples/nsds/nsds-show-response.json
:language: javascript
Delete NSD
===========
.. rest_method:: DELETE /v1.0/nsds/{nsd_id}
Deletes a given NSD.
Only a NSD without any associated NSs can be deleted.
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
- nsd_id: nsd_id_path

View File

@ -1,174 +0,0 @@
.. -*- rst -*-
====================================
Network Services (NSs)
====================================
Manages Network Servicess (NSs) and their resources.
NS resources are instantiations of network services described in the
associated NSD TOSCA template.
Create NS
==========
.. rest_method:: POST /v1.0/nss
Creates a NS.
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
- ns: ns
- name: name
- description: description_opt
- nsd_id: nsd_id
- vim_id: vim_id_opt
- tenant_id: tenant_id_opt
- attributes: ns_attributes_opt
Request Example
---------------
.. literalinclude:: samples/nss/nss-create-request.json
:language: javascript
Response Parameters
-------------------
.. rest_parameters:: parameters.yaml
- ns: ns
- name: name
- description: description
- status: ns_status
- id: ns_id
- nsd_id: nsd_id
- vnf_ids: vnf_ids
- tenant_id: tenant_id
- created_at: ns_created_at
- updated_at: ns_updated_at
- mgmt_ip_address: ns_mgmt_ip_address
- vim_id: vim_id
- error_reason: ns_error_reason
- attributes: ns_attributes
Response Example
----------------
.. literalinclude:: samples/nss/nss-create-response.json
:language: javascript
List NSs
=========
.. rest_method:: GET /v1.0/nss
Lists NSs.
Response Codes
--------------
.. rest_status_code:: success status.yaml
- 200
.. rest_status_code:: error status.yaml
- 401
- 500
Response Parameters
-------------------
.. rest_parameters:: parameters.yaml
- nss: nss
- name: name
- description: description
- status: ns_status
- id: ns_id
- nsd_id: nsd_id
- vnf_ids: vnf_ids
- tenant_id: tenant_id
- created_at: ns_created_at
- updated_at: ns_updated_at
- mgmt_ip_address: ns_mgmt_ip_address
- vim_id: vim_id
- error_reason: ns_error_reason
- attributes: ns_attributes
Response Example
----------------
.. literalinclude:: samples/nss/nss-list-response.json
:language: javascript
Show NS
========
.. rest_method:: GET /v1.0/nss/{ns_id}
Shows information of a given NS.
Response Codes
--------------
.. rest_status_code:: success status.yaml
- 200
.. rest_status_code:: error status.yaml
- 401
- 404
- 500
Request Parameters
------------------
.. rest_parameters:: parameters.yaml
- ns_id: ns_id_path
Response Parameters
-------------------
.. rest_parameters:: parameters.yaml
- ns: ns
- name: name
- description: description
- status: ns_status
- id: ns_id
- nsd_id: nsd_id
- vnf_ids: vnf_ids
- tenant_id: tenant_id
- created_at: ns_created_at
- updated_at: ns_updated_at
- mgmt_ip_address: ns_mgmt_ip_address
- vim_id: vim_id
- error_reason: ns_error_reason
- attributes: ns_attributes
Response Example
----------------
.. literalinclude:: samples/nss/nss-show-response.json
:language: javascript

View File

@ -1,147 +1,16 @@
# variables in header
# variables in path
alias_path:
description: |
The alias of the extension.
in: path
required: true
type: string
classifier_id_path:
description: |
The UUID of the classifier.
in: path
required: true
type: string
event_id_path:
description: |
The ID of the event.
in: path
required: true
type: string
nfp_id_path:
description: |
The UUID of the NFP.
in: path
required: true
type: string
ns_id_path:
description: |
The UUID of the NS.
in: path
required: true
type: string
nsd_id_path:
description: |
The UUID of the VNFD.
in: path
required: true
type: string
sfc_id_path:
description: |
The UUID of the SFC.
in: path
required: true
type: string
vim_id_path:
description: |
The UUID of the VIM.
in: path
required: true
type: string
vnf_id_path:
description: |
The UUID of the VNF.
in: path
required: true
type: string
vnfd_id_path:
description: |
The UUID of the VNFD.
in: path
required: true
type: string
vnffg_id_path:
description: |
The UUID of the VNFFG.
in: path
required: true
type: string
vnffgd_id_path:
description: |
The UUID of the VNFFGD.
in: path
required: true
type: string
# variables in query
# variables in body
alias:
description: |
The alias for the extension. For example,
"Commonservices", "NFVO" or "VNFM".
in: body
required: true
type: string
classifier:
description: |
A ``classifier`` object.
in: body
required: true
type: object
classifier_chain_id:
description: |
The UUID of the SFC which the classifier is related to.
in: body
required: true
type: string
classifier_id:
description: |
The UUID of the Classifier.
in: body
required: true
type: string
classifier_instance_id:
description: |
The UUID information to uniquely identify the classifier instance.
A classifier is instantiated as a Neutron Flow Classifier when
using OpenStack VIM Driver.
in: body
required: true
type: string
classifier_match:
description: |
A match policy object that will be used to distinguish which
traffic should enter the related SFC.
in: body
required: true
type: object
classifier_nfp_id:
description: |
The UUID of the NFP which the classifier belongs to.
in: body
required: true
type: string
classifier_status:
description: |
Status of the classifier.
in: body
required: true
type: string
classifiers:
description: |
A list of ``classifier`` objects.
in: body
required: true
type: array
created_at:
description: |
The date and time when the resource was created. The format is
``YYYY-MM-DD hh:mm:ss``. For example, ``2016-09-23 09:57:35``.
in: body
required: true
type: string
description:
description: |
Human-readable description for the resource.
@ -154,82 +23,6 @@ description_opt:
in: body
required: false
type: string
event:
description: |
An ``event`` object.
in: body
required: true
type: object
event_details:
description: |
The detailed information for the event, if any.
in: body
required: true
type: string
event_id:
description: |
The ID of the event.
in: body
required: true
type: integer
event_resource_id:
description: |
The UUID of the resource that is related to the event.
in: body
required: true
type: string
event_resource_state:
description: |
The state of the resource that is related to the event.
in: body
required: true
type: string
event_resource_type:
description: |
The type of the resource that is related to the event.
in: body
required: true
type: string
event_timestamp:
description: |
The date and time when the event was created. The format is
``YYYY-MM-DD hh:mm:ss``. For example, ``2016-09-23 09:57:35``.
in: body
required: true
type: string
events:
description: |
A list of ``event`` objects.
in: body
required: true
type: array
extension:
description: |
An ``extension`` object.
in: body
required: true
type: object
extension_updated_at:
description: |
The date and time when the resource was updated. The format is
`ISO 8601 <https://en.wikipedia.org/wiki/ISO_8601>`_:
``YYYY-MM-DDThh:mm:ss±hh:mm``. For example, ``2016-09-23 09:59:27-05:00``.
The ``±hh:mm`` value, if included, is the time zone as an offset from UTC.
in: body
required: true
type: string
extensions:
description: |
A list of ``extension`` objects.
in: body
required: true
type: array
links:
description: |
A list of links related to the extension.
in: body
required: true
type: array
name:
description: |
Human-readable name for the resource.
@ -242,197 +35,6 @@ name_opt:
in: body
required: false
type: string
nfp:
description: |
A ``nfp`` object.
in: body
required: true
type: object
nfp_id:
description: |
The UUID of the Network Forwarding Path (NFP).
in: body
required: true
type: string
nfp_status:
description: |
Status of the NFP.
in: body
required: true
type: string
nfps:
description: |
A list of ``nfp`` objects.
in: body
required: true
type: array
ns:
description: |
A ``ns`` object.
in: body
required: true
type: object
ns_attributes:
description: |
NS attributes object.
in: body
required: true
type: object
ns_attributes_opt:
description: |
NS attributes object. This object can contain ``param_values``.
in: body
required: false
type: object
ns_created_at:
description: |
The date and time when the NS was created.
The format is ``YYYY-MM-DD hh:mm:ss.ssssss``.
For example, ``2016-09-23 09:59:27.392759``.
in: body
required: true
type: string
ns_error_reason:
description: |
Reason for NS error, if any.
in: body
required: true
type: string
ns_id:
description: |
The UUID of the NS.
in: body
required: true
type: string
ns_mgmt_ip_address:
description: |
Management ip address for the NS.
in: body
required: true
type: string
ns_status:
description: |
Status of the NS.
in: body
required: true
type: string
ns_updated_at:
description: |
The date and time when the NS was updated.
The format is ``YYYY-MM-DD hh:mm:ss.ssssss``.
For example, ``2016-09-23 09:59:27.392759``.
in: body
required: true
type: string
nsd:
description: |
A ``nsd`` object.
in: body
required: true
type: object
nsd_attributes:
description: |
Attributes necessary for spinning up NS.
in: body
required: true
type: object
nsd_id:
description: |
The UUID of the NSD.
in: body
required: true
type: string
nsds:
description: |
A list of ``nsd`` objects.
in: body
required: true
type: array
nss:
description: |
A list of ``ns`` objects.
in: body
required: true
type: array
service_types:
description: |
A list of service type.
in: body
required: true
type: array
sfc:
description: |
A ``sfc`` object.
in: body
required: true
type: object
sfc_chain:
description: |
A ordered list of node objects to traverse. Each node includes
a list of CPs and correspondent VNF name. Up to 2 CPs may be
listed per node. If 2 CPs are listed, the first will be
considered the ingress port for traffic and the second will be
the egress. If there's only one CP, then it will be considered
both the ingress and egress port for traffic.
in: body
required: true
type: array
sfc_id:
description: |
The UUID of the Service Function Chain (SFC).
in: body
required: true
type: string
sfc_instance_id:
description: |
The UUID information to uniquely identify the SFC instance.
A SFC is instantiated as a Neutron Port Chain when using
OpenStack VIM Driver.
in: body
required: true
type: string
sfc_nfp_id:
description: |
The UUID of the NFP which the SFC belongs to.
in: body
required: true
type: string
sfc_path_id:
description: |
The ID of the path. It will be used in future implementations of
Network Service Header (NSH) to identify paths via the Service
Path Identifier (SPI) attribute.
in: body
required: true
type: string
sfc_status:
description: |
Status of the SFC.
in: body
required: true
type: string
sfcs:
description: |
A list of ``sfc`` objects.
in: body
required: true
type: array
symmetrical:
description: |
Indicate whether reverse traffic should also flow through the path.
Enabling ``symmetrical`` is not currently supported by the OpenStack
VIM driver.
in: body
required: true
type: boolean
symmetrical_opt:
description: |
Indicate whether reverse traffic should also flow through the path.
Enabling ``symmetrical`` is not currently supported by the OpenStack
VIM driver.
in: body
required: false
type: boolean
tenant_id:
description: |
The UUID of the tenant. A tenant is also known as a project.
@ -445,14 +47,6 @@ tenant_id_opt:
in: body
required: false
type: string
updated_at:
description: |
The date and time when the resource was updated.
The format is ``YYYY-MM-DD hh:mm:ss.ssssss``.
For example, ``2016-09-23 09:59:27.392759``.
in: body
required: true
type: string
version_href:
description: |
Link to the API.
@ -533,12 +127,6 @@ vim_id:
in: body
required: true
type: string
vim_id_opt:
description: |
The UUID of the VIM.
in: body
required: false
type: string
vim_is_default:
description: |
Indicate whether the VIM is used as default.
@ -601,307 +189,3 @@ vims:
in: body
required: true
type: array
vnf:
description: |
A ``vnf`` object.
in: body
required: true
type: object
vnf_attributes:
description: |
VNF attributes object. This object can contain ``config``,
``param_values``, ``monitoring_policy``, and ``heat_template``.
in: body
required: true
type: object
vnf_attributes_opt:
description: |
VNF attributes object. This object can contain ``config`` and
``param_values``.
in: body
required: false
type: object
vnf_attributes_put:
description: |
VNF attributes object. This object can contain ``config`` object.
in: body
required: false
type: object
vnf_config:
description: |
VNF configuration object.
in: body
required: true
type: string
vnf_config_opt:
description: |
VNF configuration object.
in: body
required: false
type: object
vnf_created_at:
description: |
The date and time when the VNF was created.
The format is ``YYYY-MM-DD hh:mm:ss.ssssss``.
For example, ``2016-09-23 09:59:27.392759``.
in: body
required: true
type: string
vnf_error_reason:
description: |
Reason for VNF error, if any.
in: body
required: true
type: string
vnf_force_delete_flag:
description: |
VNF attributes object with ``force`` key which can contain true/false value.
in: body
required: false
type: object
vnf_heat_template:
description: |
Heat template which is translated from the VNFD template.
in: body
required: true
type: string
vnf_id:
description: |
The UUID of the VNF.
in: body
required: true
type: string
vnf_ids:
description: |
A list of ``vnf_id`` objects.
in: body
required: true
type: array
vnf_instance_id:
description: |
A UUID information to uniquely identify the instance of VNF.
This instance is equivalent to a Heat stack when using
"openstack" type VIM.
in: body
required: true
type: string
vnf_mapping:
description: |
A ``vnf_mapping`` object which contains mappings from VNFD name
to VNF instance ID.
in: body
required: true
type: object
vnf_mapping_opt:
description: |
A ``vnf_mapping`` object which contains mappings from VNFD name
to VNF instance ID. This is used to declare which exact VNF
instance to be used for each VNFD in the Forwarding Path definition.
If no vnf mappings are provided, then Tacker attempts to search
for VNF instance derived from each VNFDs.
in: body
required: false
type: object
vnf_mgmt_ip_address:
description: |
Management ip address for the VNF.
in: body
required: true
type: string
vnf_monitoring_policy:
description: |
Monitoring policy which is derived from the VNFD template.
in: body
required: true
type: string
vnf_param_values:
description: |
VNF parameter object. These parameters will be substituted for VNF
if the VNFD template is appropriately parameterized.
See `VNFD Template Parameterization
<https://docs.openstack.org/tacker/latest/contributor/vnfd_template_parameterization.html>`_
for more information.
in: body
required: true
type: string
vnf_param_values_opt:
description: |
VNF parameter object. These parameters will be substituted for VNF
if the VNFD template is appropriately parameterized.
See `VNFD Template Parameterization
<https://docs.openstack.org/tacker/latest/contributor/vnfd_template_parameterization.html>`_
for more information.
in: body
required: false
type: object
vnf_placement_attr:
description: |
VNF placement information object. This object includes ``region_name``
and ``vim_name``.
in: body
required: true
type: object
vnf_placement_attr_opt:
description: |
VNF placement information object. This object includes ``region_name``.
in: body
required: false
type: object
vnf_resource_id:
description: |
The UUID of the VNF resource. This is equivalent to Heat stack resource ID.
in: body
required: true
type: string
vnf_resource_name:
description: |
The name of the VNF resource. This is equivalent to Heat stack resource name.
in: body
required: true
type: string
vnf_resource_type:
description: |
The type of the VNF resource. This is equivalent to Heat stack resource type.
in: body
required: true
type: string
vnf_resources:
description: |
A list of VNF ``resource`` objects.
in: body
required: true
type: array
vnf_scale:
description: |
A VNF ``scale`` object, which contains ``policy`` and ``type``.
in: body
required: true
type: object
vnf_scale_policy:
description: |
Scaling policy defined in VNFD template. For more information, see
`VNFD scaling
<https://docs.openstack.org/tacker/latest/contributor/vnfd_template_parameterization.html>`_.
in: body
required: true
type: string
vnf_scale_type:
description: |
Scaling type, which is either ``in`` or ``out``.
in: body
required: true
type: string
vnf_status:
description: |
Status of the VNF.
in: body
required: true
type: string
vnf_updated_at:
description: |
The date and time when the VNF was updated.
The format is ``YYYY-MM-DD hh:mm:ss.ssssss``.
For example, ``2016-09-23 09:59:27.392759``.
in: body
required: true
type: string
vnfd:
description: |
A ``vnfd`` object.
in: body
required: true
type: object
vnfd_attributes:
description: |
Attributes necessary for spinning up VNF.
in: body
required: true
type: object
vnfd_id:
description: |
The UUID of the VNFD.
in: body
required: false
type: string
vnfd_template:
description: |
Template to create VNF.
in: body
required: false
type: object
vnfd_template_source:
description: |
Source of VNFD.
in: body
required: false
type: string
vnfds:
description: |
A list of ``vnfd`` objects.
in: body
required: true
type: array
vnffg:
description: |
A ``vnffg`` object.
in: body
required: true
type: object
vnffg_forwarding_paths:
description: |
The UUID of the Network Forwarding Path (NFP) on which
the VNFFG relies.
in: body
required: true
type: string
vnffg_id:
description: |
The UUID of the VNFFG.
in: body
required: true
type: string
vnffg_status:
description: |
Status of the VNFFG.
in: body
required: true
type: string
vnffgd:
description: |
A ``vnffgd`` object.
in: body
required: true
type: object
vnffgd_id:
description: |
The UUID of the VNFFGD.
in: body
required: true
type: string
vnffgd_template:
description: |
A template object which includes behavioral and deployment
information of VNFFGs. For more information, see
`VNFFG Descriptor Template Guide
<https://docs.openstack.org/tacker/latest/contributor/vnffgd_template_description.html>`_.
in: body
required: true
type: object
vnffgds:
description: |
A list of ``vnffgd`` objects.
in: body
required: true
type: array
vnffgs:
description: |
A list of ``vnffg`` objects.
in: body
required: true
type: array
vnfs:
description: |
A list of ``vnf`` objects.
in: body
required: true
type: array

View File

@ -1,19 +0,0 @@
{
"classifiers": [
{
"status": "ACTIVE",
"nfp_id": "ac4a4a7e-ccb5-4014-8125-966ba42cc015",
"tenant_id": "e8935dc5484345a1aff7a1043e88c8b1",
"chain_id": "b9370af2-0e5f-49b1-a980-0f9a08f216b2",
"instance_id": "5a5e2cd6-c0d9-4768-8361-99ac9e2c8fae",
"id": "b742746d-b09e-4da7-8535-9fc066a71cf1",
"match": {
"ip_proto": 6,
"network_src_port_id": "5fad003e-95c0-46b3-a137-4d423b6ab958",
"ip_dst_prefix": "10.10.0.10/24",
"destination_port_min": 80,
"destination_port_max": 1024
}
}
]
}

View File

@ -1,17 +0,0 @@
{
"classifier": {
"status": "ACTIVE",
"nfp_id": "ac4a4a7e-ccb5-4014-8125-966ba42cc015",
"tenant_id": "e8935dc5484345a1aff7a1043e88c8b1",
"chain_id": "b9370af2-0e5f-49b1-a980-0f9a08f216b2",
"instance_id": "5a5e2cd6-c0d9-4768-8361-99ac9e2c8fae",
"id": "b742746d-b09e-4da7-8535-9fc066a71cf1",
"match": {
"ip_proto": 6,
"network_src_port_id": "5fad003e-95c0-46b3-a137-4d423b6ab958",
"ip_dst_prefix": "10.10.0.10/24",
"destination_port_min": 80,
"destination_port_max": 1024
}
}
}

View File

@ -1,31 +0,0 @@
{
"events": [
{
"event_type": "CREATE",
"resource_id": "f6bd6f24-7a0e-4111-8994-e108c5ee2ff2",
"timestamp": "2016-09-23 09:57:35",
"event_details": "",
"resource_state": "PENDING",
"id": 1,
"resource_type": "vim"
},
{
"event_type": "MONITOR",
"resource_id": "f6bd6f24-7a0e-4111-8994-e108c5ee2ff2",
"timestamp": "2016-09-23 09:57:35",
"event_details": "",
"resource_state": "REACHABLE",
"id": 2,
"resource_type": "vim"
},
{
"event_type": "CREATE",
"resource_id": "31ea84d0-ce43-44d9-9e16-fc38e9636892",
"timestamp": "2016-09-28 05:41:12",
"event_details": "",
"resource_state": "Not Applicable",
"id": 3,
"resource_type": "vnfd"
}
]
}

View File

@ -1,11 +0,0 @@
{
"event": {
"event_type": "MONITOR",
"resource_id": "f6bd6f24-7a0e-4111-8994-e108c5ee2ff2",
"timestamp": "2016-09-23 09:57:35",
"event_details": "",
"resource_state": "REACHABLE",
"id": 2,
"resource_type": "vim"
}
}

View File

@ -1,28 +0,0 @@
{
"extensions": [
{
"updated": "2013-11-19T10:00:00-00:00",
"name": "VNF Manager",
"links": [],
"namespace": "http://wiki.openstack.org/Tacker",
"alias": "VNFM",
"description": "Extension for VNF Manager"
},
{
"updated": "2016-06-06T13:00:00-00:00",
"name": "COMMONSERVICES",
"links": [],
"namespace": "http://wiki.openstack.org/Tacker",
"alias": "Commonservices",
"description": "Extension for CommonServices"
},
{
"updated": "2015-12-21T10:00:00-00:00",
"name": "NFV Orchestrator",
"links": [],
"namespace": "http://wiki.openstack.org/Tacker",
"alias": "NFVO",
"description": "Extension for NFV Orchestrator"
}
]
}

View File

@ -1,10 +0,0 @@
{
"extension": {
"updated": "2013-11-19T10:00:00-00:00",
"name": "VNF Manager",
"links": [],
"namespace": "http://wiki.openstack.org/Tacker",
"alias": "VNFM",
"description": "Extension for VNF Manager"
}
}

View File

@ -1,14 +0,0 @@
{
"nfps": [
{
"status": "ACTIVE",
"name": "Forwarding_path1",
"tenant_id": "e8935dc5484345a1aff7a1043e88c8b1",
"chain_id": "b9370af2-0e5f-49b1-a980-0f9a08f216b2",
"path_id": "51",
"symmetrical": false,
"classifier_id": "b742746d-b09e-4da7-8535-9fc066a71cf1",
"id": "ac4a4a7e-ccb5-4014-8125-966ba42cc015"
}
]
}

View File

@ -1,12 +0,0 @@
{
"nfp": {
"status": "ACTIVE",
"name": "Forwarding_path1",
"tenant_id": "e8935dc5484345a1aff7a1043e88c8b1",
"chain_id": "b9370af2-0e5f-49b1-a980-0f9a08f216b2",
"path_id": "51",
"symmetrical": false,
"classifier_id": "b742746d-b09e-4da7-8535-9fc066a71cf1",
"id": "ac4a4a7e-ccb5-4014-8125-966ba42cc015"
}
}

View File

@ -1,60 +0,0 @@
{
"nsd": {
"tenant_id": "689708956b2d4ae0a27120d3aca6a593",
"name": "sample-nsd",
"description": "Sample nsd",
"attributes": {
"nsd": {
"imports": [
"vnf1",
"vnf2"
],
"tosca_definitions_version": "tosca_simple_profile_for_nfv_1_0_0",
"topology_template": {
"inputs": {
"vl2_name": {
"default": "net0", "type": "string",
"description": "name of VL2 virtuallink"
},
"vl1_name": {
"default": "net_mgmt",
"type": "string",
"description": "name of VL1 virtuallink"
}
},
"node_templates": {
"VL1": {
"type": "tosca.nodes.nfv.VL",
"properties": {
"network_name": {
"get_input": "vl1_name"
},
"vendor": "tacker"
}
},
"VNF1": {
"type": "tosca.nodes.nfv.VNF1",
"requirements": [
{
"virtualLink1": "VL1"
},
{
"virtualLink2": "VL2"
}
]
},
"VL2": {
"type": "tosca.nodes.nfv.VL",
"properties": {
"network_name": {
"get_input": "vl2_name"
},
"vendor": "tacker"
}
}
}
}
}
},
}
}

View File

@ -1,14 +0,0 @@
{
"nsd": {
"name": "nsd1"
"description": "nsd-sample",
"id": "99b2851e-a6a7-4467-9554-0eb50633f012",
"tenant_id": "a81900a92bda40588c52699e1873a92f",
"created_at": "2017-01-30 07:10:29.809127",
"updated_at": null,
"attributes": {
"nsd": "imports: [vnf1, vnf2]\ntopology_template:\n inputs:\n vl1_name: {default: net_mgmt, description: name of VL1 virtuallink, type: string}\n vl2_name: {default: net0, description: name of VL2 virtuallink, type: string}\n node_templates:\n VL1:\n properties:\n network_name: {get_input: vl1_name}\n vendor: tacker\n type: tosca.nodes.nfv.VL\n VL2:\n properties:\n network_name: {get_input: vl2_name}\n vendor: tacker\n type: tosca.nodes.nfv.VL\n VNF1:\n requirements:\n - {virtualLink1: VL1}\n - {virtualLink2: VL2}\n type: tosca.nodes.nfv.VNF1\ntosca_definitions_version: tosca_simple_profile_for_nfv_1_0_0\n"
},
}
}

View File

@ -1,16 +0,0 @@
{
"nsd": [
{
"name": "nsd1"
"description": "nsd-sample",
"id": "99b2851e-a6a7-4467-9554-0eb50633f012",
"tenant_id": "a81900a92bda40588c52699e1873a92f",
"created_at": "2017-01-30 07:10:29.809127",
"updated_at": null,
"attributes": {
"nsd": "imports: [vnf1, vnf2]\ntopology_template:\n inputs:\n vl1_name: {default: net_mgmt, description: name of VL1 virtuallink, type: string}\n vl2_name: {default: net0, description: name of VL2 virtuallink, type: string}\n node_templates:\n VL1:\n properties:\n network_name: {get_input: vl1_name}\n vendor: tacker\n type: tosca.nodes.nfv.VL\n VL2:\n properties:\n network_name: {get_input: vl2_name}\n vendor: tacker\n type: tosca.nodes.nfv.VL\n VNF1:\n requirements:\n - {virtualLink1: VL1}\n - {virtualLink2: VL2}\n type: tosca.nodes.nfv.VNF1\ntosca_definitions_version: tosca_simple_profile_for_nfv_1_0_0\n"
},
}
]
}

View File

@ -1,14 +0,0 @@
{
"nsd": {
"name": "nsd_sample"
"description": "nsd-sample",
"id": "99b2851e-a6a7-5467-9954-0e8a0633f941",
"tenant_id": "a81900a92bda40588c52699e1873a92f",
"created_at": "2017-01-30 07:11:37.807045",
"updated_at": null,
"attributes": {
"nsd": "imports: [vnf1, vnf2]\ntopology_template:\n inputs:\n vl1_name: {default: net_mgmt, description: name of VL1 virtuallink, type: string}\n vl2_name: {default: net0, description: name of VL2 virtuallink, type: string}\n node_templates:\n VL1:\n properties:\n network_name: {get_input: vl1_name}\n vendor: tacker\n type: tosca.nodes.nfv.VL\n VL2:\n properties:\n network_name: {get_input: vl2_name}\n vendor: tacker\n type: tosca.nodes.nfv.VL\n VNF1:\n requirements:\n - {virtualLink1: VL1}\n - {virtualLink2: VL2}\n type: tosca.nodes.nfv.VNF1\ntosca_definitions_version: tosca_simple_profile_for_nfv_1_0_0\n"
},
}
}

View File

@ -1,17 +0,0 @@
{
"ns": {
"name": "ns_test",
"nsd_id": "2e581b27-aa72-4a81-8efd-6c0e58533c9b"
"description:": "sample NS",
"tenant_id": "6673e4d4e13340acb0b847f9ecde613b",
"vnfd_id": "a04b47d1-e8ad-4ef9-8341-eafec398ce02",
"attributes": {
"param_values": {
"nsd": {
"vl2_name": "net0",
"vl1_name": "net_mgmt"
}
}
},
}
}

View File

@ -1,16 +0,0 @@
{
"ns": {
"name": "network_service"
"description": "sample-ns",
"status": "PENDING_CREATE",
"created_at": "2017-01-30 20:23:49.566482",
"tenant_id": "a81900a92bda40588c52699e1873a92f",
"vim_id": "96025dd5-ca16-49f3-9823-958eb04260c4",
"updated_at": null,
"mgmt_ip_addresses": null,
"vnf_ids": null,
"error_reason": null,
"nsd_id": "99b2851e-a6a7-4467-9554-0eb50633f012",
"id": "076d8bcb-5ad4-4036-a692-fe488d24f77d",
}
}

View File

@ -1,81 +0,0 @@
{
"ns": {
"name": "ns_test",
"description": "sample NS",
"tenant_id": "058079ca392749bfa58831e0467a5439",
"attributes": {
"param_values": {
"nsd": {
"vl2_name": "net0",
"vl1_name": "net_mgmt"
}
}
},
"nsd_template": {
"imports": [
"VNFD1",
"VNFD2"
],
"tosca_definitions_version": "tosca_simple_profile_for_nfv_1_0_0",
"topology_template": {
"inputs": {
"vl2_name": {
"default": "net0",
"type": "string",
"description": "name of VL2 virtuallink"
},
"vl1_name": {
"default": "net_mgmt",
"type": "string",
"description": "name of VL1 virtuallink"
}
},
"node_templates": {
"VNF1": {
"type": "tosca.nodes.nfv.VNF1",
"requirements": [
{
"virtualLink1": "VL1"
},
{
"virtualLink2": "VL2"
}
]
},
"VNF2": {
"type": "tosca.nodes.nfv.VNF2"
},
"VL1": {
"type": "tosca.nodes.nfv.VL",
"properties": {
"network_name": {
"get_input": "vl1_name"
},
"vendor": "tacker"
}
},
"VNF1": {
"type": "tosca.nodes.nfv.VNF1",
"requirements": [
{
"virtualLink1": "VL1"
},
{
"virtualLink2": "VL2"
}
]
},
"VL2": {
"type": "tosca.nodes.nfv.VL",
"properties": {
"network_name": {
"get_input": "vl2_name"
},
"vendor": "tacker"
}
}
}
}
}
}
}

View File

@ -1,16 +0,0 @@
{
"ns": {
"status": "PENDING_CREATE",
"created_at": "2017-07-14 17:03:33.596454",
"description": "sample NS",
"tenant_id": "058079ca392749bfa58831e0467a5439",
"vim_id": "0e70ec23-6f32-420a-a039-2cdb2c20c329",
"updated_at": null,
"mgmt_ip_addresses": null,
"vnf_ids": null,
"error_reason": null,
"nsd_id": "be18005d-5656-4d81-b499-6af4d4d8437f",
"id": "ff35e3f0-0a11-4071-bce6-279fdf1c8bf9",
"name": "ns_test"
}
}

View File

@ -1,18 +0,0 @@
{
"ns": [
{
"name": "network_service"
"description": "sample-ns",
"status": "PENDING_CREATE",
"created_at": "2017-01-30 20:23:49.566482",
"tenant_id": "a81900a92bda40588c52699e1873a92f",
"vim_id": "96025dd5-ca16-49f3-9823-958eb04260c4",
"updated_at": null,
"mgmt_ip_addresses": null,
"vnf_ids": null,
"error_reason": null,
"nsd_id": "99b2851e-a6a7-4467-9554-0eb50633f012",
"id": "076d8bcb-5ad4-4036-a692-fe488d24f77d",
}
]
}

View File

@ -1,16 +0,0 @@
{
"ns": {
"name": "network_service"
"description": "sample-ns",
"status": "PENDING_CREATE",
"created_at": "2017-01-30 20:23:49.566482",
"tenant_id": "a81900a92bda40588c52699e1873a92f",
"vim_id": "96025dd5-ca16-49f3-9823-958eb04260c4",
"updated_at": null,
"mgmt_ip_addresses": null,
"vnf_ids": null,
"error_reason": null,
"nsd_id": "99b2851e-a6a7-4467-9554-0eb50633f012",
"id": "076d8bcb-5ad4-4036-a692-fe488d24f77d",
}
}

View File

@ -1,27 +0,0 @@
{
"sfcs": [
{
"status": "ACTIVE",
"path_id": "51",
"nfp_id": "ac4a4a7e-ccb5-4014-8125-966ba42cc015",
"chain": [
{
"connection_points": [
"e48cd49d-3bf7-4c8d-b6a7-3e2846b01c7c"
],
"name": "my-vnf1"
},
{
"connection_points": [
"4b0b3a8f-07ca-46c3-b8fa-90caeaada031"
],
"name": "my-vnf2"
}
],
"tenant_id": "e8935dc5484345a1aff7a1043e88c8b1",
"instance_id": "2645eea6-3744-40f6-aacc-09a784db5d89",
"symmetrical": false,
"id": "b9370af2-0e5f-49b1-a980-0f9a08f216b2"
}
]
}

View File

@ -1,25 +0,0 @@
{
"sfc": {
"status": "ACTIVE",
"path_id": "51",
"nfp_id": "ac4a4a7e-ccb5-4014-8125-966ba42cc015",
"chain": [
{
"connection_points": [
"e48cd49d-3bf7-4c8d-b6a7-3e2846b01c7c"
],
"name": "my-vnf1"
},
{
"connection_points": [
"4b0b3a8f-07ca-46c3-b8fa-90caeaada031"
],
"name": "my-vnf2"
}
],
"tenant_id": "e8935dc5484345a1aff7a1043e88c8b1",
"instance_id": "2645eea6-3744-40f6-aacc-09a784db5d89",
"symmetrical": false,
"id": "b9370af2-0e5f-49b1-a980-0f9a08f216b2"
}
}

View File

@ -1,67 +0,0 @@
{
"vnfd": {
"tenant_id": "689708956a2d4ae0a27120d3aca6a560",
"name": "vnfd-sample",
"description": "Sample",
"service_types": [
{
"service_type": "vnfd"
}
],
"attributes": {
"vnfd": {
"tosca_definitions_version": "tosca_simple_profile_for_nfv_1_0_0",
"description": "Demo example",
"metadata": {
"template_name": "sample-tosca-vnfd"
},
"topology_template": {
"node_templates": {
"VDU1": {
"type": "tosca.nodes.nfv.VDU.Tacker",
"capabilities": {
"nfv_compute": {
"properties": {
"num_cpus": 1,
"mem_size": "512 MB",
"disk_size": "1 GB"
}
}
},
"properties": {
"image": "cirros-0.5.2-x86_64-disk"
}
},
"CP1": {
"type": "tosca.nodes.nfv.CP.Tacker",
"properties": {
"order": 0,
"management": true,
"anti_spoofing_protection": false
},
"requirements": [
{
"virtualLink": {
"node": "VL1"
}
},
{
"virtualBinding": {
"node": "VDU1"
}
}
]
},
"VL1": {
"type": "tosca.nodes.nfv.VL",
"properties": {
"vendor": "Tacker",
"network_name": "net_mgmt"
}
}
}
}
}
}
}
}

View File

@ -1,19 +0,0 @@
{
"vnfd": {
"service_types": [
{
"service_type": "vnfd",
"id": "ca0d8667-ce35-4f7a-9744-ac4bc7d5579d"
}
],
"description": "Sample",
"tenant_id": "689708956a2d4ae0a27120d3aca6a560",
"created_at": "2016-10-20 07:38:54.600003",
"updated_at": null,
"attributes": {
"vnfd": "description: Demo example\nmetadata: {template_name: sample-tosca-vnfd}\ntopology_template:\n node_templates:\n CP1:\n properties: {anti_spoofing_protection: false, management: true, order: 0}\n requirements:\n - virtualLink: {node: VL1}\n - virtualBinding: {node: VDU1}\n type: tosca.nodes.nfv.CP.Tacker\n VDU1:\n capabilities:\n nfv_compute:\n properties: {disk_size: 1 GB, mem_size: 512 MB, num_cpus: 1}\n properties: {image: cirros-0.5.2-x86_64-disk}\n type: tosca.nodes.nfv.VDU.Tacker\n VL1:\n properties: {network_name: net_mgmt, vendor: Tacker}\n type: tosca.nodes.nfv.VL\ntosca_definitions_version: tosca_simple_profile_for_nfv_1_0_0\n"
},
"id": "0fb827e7-32b0-4e5b-b300-e1b1dce8a831",
"name": "vnfd-sample"
}
}

View File

@ -1,22 +0,0 @@
{
"vnfds": [
{
"service_types": [
{
"service_type": "vnfd",
"id": "ca0d8667-ce35-4f7a-9744-ac4bc7d5579d"
}
],
"description": "Sample",
"tenant_id": "689708956a2d4ae0a27120d3aca6a560",
"created_at": "2016-10-20 07:38:54",
"updated_at": null,
"attributes": {
"vnfd": "description: Demo example\nmetadata: {template_name: sample-tosca-vnfd}\ntopology_template:\n node_templates:\n CP1:\n properties: {anti_spoofing_protection: false, management: true, order: 0}\n requirements:\n - virtualLink: {node: VL1}\n - virtualBinding: {node: VDU1}\n type: tosca.nodes.nfv.CP.Tacker\n VDU1:\n capabilities:\n nfv_compute:\n properties: {disk_size: 1 GB, mem_size: 512 MB, num_cpus: 1}\n properties: {image: cirros-0.5.2-x86_64-disk}\n type: tosca.nodes.nfv.VDU.Tacker\n VL1:\n properties: {network_name: net_mgmt, vendor: Tacker}\n type: tosca.nodes.nfv.VL\ntosca_definitions_version: tosca_simple_profile_for_nfv_1_0_0\n"
},
"id": "0fb827e7-32b0-4e5b-b300-e1b1dce8a831",
"name": "vnfd-sample",
"template_source": "onboarded or inline"
}
]
}

View File

@ -1,20 +0,0 @@
{
"vnfd": {
"service_types": [
{
"service_type": "vnfd",
"id": "ca0d8667-ce35-4f7a-9744-ac4bc7d5579d"
}
],
"description": "Sample",
"tenant_id": "689708956a2d4ae0a27120d3aca6a560",
"created_at": "2016-10-20 07:38:54",
"updated_at": null,
"attributes": {
"vnfd": "description: Demo example\nmetadata: {template_name: sample-tosca-vnfd}\ntopology_template:\n node_templates:\n CP1:\n properties: {anti_spoofing_protection: false, management: true, order: 0}\n requirements:\n - virtualLink: {node: VL1}\n - virtualBinding: {node: VDU1}\n type: tosca.nodes.nfv.CP.Tacker\n VDU1:\n capabilities:\n nfv_compute:\n properties: {disk_size: 1 GB, mem_size: 512 MB, num_cpus: 1}\n properties: {image: cirros-0.5.2-x86_64-disk}\n type: tosca.nodes.nfv.VDU.Tacker\n VL1:\n properties: {network_name: net_mgmt, vendor: Tacker}\n type: tosca.nodes.nfv.VL\ntosca_definitions_version: tosca_simple_profile_for_nfv_1_0_0\n"
},
"id": "0fb827e7-32b0-4e5b-b300-e1b1dce8a831",
"name": "vnfd-sample",
"template_source": "onboarded or inline"
}
}

View File

@ -1,6 +0,0 @@
{
"vnfd": {
"name": "vnfd-sample-updated",
"description": "Updated sample"
}
}

View File

@ -1,19 +0,0 @@
{
"vnfd": {
"service_types": [
{
"service_type": "vnfd",
"id": "ca0d8667-ce35-4f7a-9744-ac4bc7d5579d"
}
],
"description": "Updated sample",
"tenant_id": "689708956a2d4ae0a27120d3aca6a560",
"created_at": "2016-10-20 07:38:54",
"updated_at": "2016-10-20 07:41:27.392759",
"attributes": {
"vnfd": "description: Demo example\nmetadata: {template_name: sample-tosca-vnfd}\ntopology_template:\n node_templates:\n CP1:\n properties: {anti_spoofing_protection: false, management: true, order: 0}\n requirements:\n - virtualLink: {node: VL1}\n - virtualBinding: {node: VDU1}\n type: tosca.nodes.nfv.CP.Tacker\n VDU1:\n capabilities:\n nfv_compute:\n properties: {disk_size: 1 GB, mem_size: 512 MB, num_cpus: 1}\n properties: {image: cirros-0.5.2-x86_64-disk}\n type: tosca.nodes.nfv.VDU.Tacker\n VL1:\n properties: {network_name: net_mgmt, vendor: Tacker}\n type: tosca.nodes.nfv.VL\ntosca_definitions_version: tosca_simple_profile_for_nfv_1_0_0\n"
},
"id": "0fb827e7-32b0-4e5b-b300-e1b1dce8a831",
"name": "vnfd-sample-updated"
}
}

View File

@ -1,78 +0,0 @@
{
"vnffgd": {
"tenant_id": "e8935dc5484345a1aff7a1043e88c8b1",
"name": "vnffgd1",
"template": {
"vnffgd": {
"tosca_definitions_version": "tosca_simple_profile_for_nfv_1_0_0",
"description": "Sample VNFFG template",
"topology_template": {
"node_templates": {
"Forwarding_path1": {
"type": "tosca.nodes.nfv.FP.Tacker",
"description": "creates path (CP12->CP22)",
"properties": {
"policy": {
"type": "ACL",
"criteria": [
{
"network_src_port_id": "5fad003e-95c0-46b3-a137-4d423b6ab958"
},
{
"destination_port_range": "80-1024"
},
{
"ip_proto": 6
},
{
"ip_dst_prefix": "10.10.0.10/24"
}
]
},
"path": [
{
"capability": "CP12",
"forwarder": "VNFD1"
},
{
"capability": "CP22",
"forwarder": "VNFD2"
}
],
"id": 51
}
}
},
"description": "Sample VNFFG template",
"groups": {
"VNFFG1": {
"type": "tosca.groups.nfv.VNFFG",
"description": "HTTP to Corporate Net",
"members": [
"Forwarding_path1"
],
"properties": {
"vendor": "tacker",
"connection_point": [
"CP12",
"CP22"
],
"version": 1.0,
"constituent_vnfs": [
"VNFD1",
"VNFD2"
],
"number_of_endpoints": 2,
"dependent_virtual_link": [
"VL12",
"VL22"
]
}
}
}
}
}
},
"description": "sample vnffgd"
}
}

View File

@ -1,83 +0,0 @@
{
"vnffgd": {
"tenant_id": "e8935dc5484345a1aff7a1043e88c8b1",
"name": "vnffgd1",
"description": "sample vnffgd",
"template": {
"vnffgd": {
"imports": [
"/opt/stack/tacker/tacker/tosca/lib/tacker_defs.yaml",
"/opt/stack/tacker/tacker/tosca/lib/tacker_nfv_defs.yaml"
],
"description": "Sample VNFFG template",
"topology_template": {
"node_templates": {
"Forwarding_path1": {
"type": "tosca.nodes.nfv.FP.Tacker",
"description": "creates path (CP12->CP22)",
"properties": {
"policy": {
"type": "ACL",
"criteria": [
{
"network_src_port_id": "5fad003e-95c0-46b3-a137-4d423b6ab958"
},
{
"destination_port_range": "80-1024"
},
{
"ip_proto": 6
},
{
"ip_dst_prefix": "10.10.0.10/24"
}
]
},
"path": [
{
"capability": "CP12",
"forwarder": "VNFD1"
},
{
"capability": "CP22",
"forwarder": "VNFD2"
}
],
"id": 51
}
}
},
"description": "Sample VNFFG template",
"groups": {
"VNFFG1": {
"type": "tosca.groups.nfv.VNFFG",
"description": "HTTP to Corporate Net",
"members": [
"Forwarding_path1"
],
"properties": {
"vendor": "tacker",
"connection_point": [
"CP12",
"CP22"
],
"version": 1.0,
"constituent_vnfs": [
"VNFD1",
"VNFD2"
],
"number_of_endpoints": 2,
"dependent_virtual_link": [
"VL12",
"VL22"
]
}
}
}
},
"tosca_definitions_version": "tosca_simple_profile_for_nfv_1_0_0"
}
},
"id": "60b8e717-11a7-4395-8438-a21d2eeeb855"
}
}

View File

@ -1,85 +0,0 @@
{
"vnffgds": [
{
"tenant_id": "e8935dc5484345a1aff7a1043e88c8b1",
"name": "vnffgd1",
"description": "sample vnffgd",
"template": {
"vnffgd": {
"tosca_definitions_version": "tosca_simple_profile_for_nfv_1_0_0",
"imports": [
"/opt/stack/tacker/tacker/tosca/lib/tacker_defs.yaml",
"/opt/stack/tacker/tacker/tosca/lib/tacker_nfv_defs.yaml"
],
"description": "Sample VNFFG template",
"topology_template": {
"node_templates": {
"Forwarding_path1": {
"type": "tosca.nodes.nfv.FP.Tacker",
"description": "creates path (CP12->CP22)",
"properties": {
"policy": {
"type": "ACL",
"criteria": [
{
"network_src_port_id": "5fad003e-95c0-46b3-a137-4d423b6ab958"
},
{
"destination_port_range": "80-1024"
},
{
"ip_proto": 6
},
{
"ip_dst_prefix": "10.10.0.10/24"
}
]
},
"path": [
{
"capability": "CP12",
"forwarder": "VNFD1"
},
{
"capability": "CP22",
"forwarder": "VNFD2"
}
],
"id": 51
}
}
},
"description": "Sample VNFFG template",
"groups": {
"VNFFG1": {
"type": "tosca.groups.nfv.VNFFG",
"description": "HTTP to Corporate Net",
"members": [
"Forwarding_path1"
],
"properties": {
"vendor": "tacker",
"connection_point": [
"CP12",
"CP22"
],
"version": 1.0,
"constituent_vnfs": [
"VNFD1",
"VNFD2"
],
"number_of_endpoints": 2,
"dependent_virtual_link": [
"VL12",
"VL22"
]
}
}
}
}
}
},
"id": "60b8e717-11a7-4395-8438-a21d2eeeb855"
}
]
}

View File

@ -1,83 +0,0 @@
{
"vnffgd": {
"tenant_id": "e8935dc5484345a1aff7a1043e88c8b1",
"name": "vnffgd1",
"description": "sample vnffgd",
"template": {
"vnffgd": {
"tosca_definitions_version": "tosca_simple_profile_for_nfv_1_0_0",
"imports": [
"/opt/stack/tacker/tacker/tosca/lib/tacker_defs.yaml",
"/opt/stack/tacker/tacker/tosca/lib/tacker_nfv_defs.yaml"
],
"description": "Sample VNFFG template",
"topology_template": {
"node_templates": {
"Forwarding_path1": {
"type": "tosca.nodes.nfv.FP.Tacker",
"description": "creates path (CP12->CP22)",
"properties": {
"policy": {
"type": "ACL",
"criteria": [
{
"network_src_port_id": "5fad003e-95c0-46b3-a137-4d423b6ab958"
},
{
"destination_port_range": "80-1024"
},
{
"ip_proto": 6
},
{
"ip_dst_prefix": "10.10.0.10/24"
}
]
},
"path": [
{
"capability": "CP12",
"forwarder": "VNFD1"
},
{
"capability": "CP22",
"forwarder": "VNFD2"
}
],
"id": 51
}
}
},
"description": "Sample VNFFG template",
"groups": {
"VNFFG1": {
"type": "tosca.groups.nfv.VNFFG",
"description": "HTTP to Corporate Net",
"members": [
"Forwarding_path1"
],
"properties": {
"vendor": "tacker",
"connection_point": [
"CP12",
"CP22"
],
"version": 1.0,
"constituent_vnfs": [
"VNFD1",
"VNFD2"
],
"number_of_endpoints": 2,
"dependent_virtual_link": [
"VL12",
"VL22"
]
}
}
}
}
}
},
"id": "60b8e717-11a7-4395-8438-a21d2eeeb855"
}
}

View File

@ -1,12 +0,0 @@
{
"vnffg": {
"tenant_id": "e8935dc5484345a1aff7a1043e88c8b1",
"vnffgd_id": "ec81d6b9-da96-4eed-80f8-0dadcebda926",
"name": "vnffg1",
"vnf_mapping": {
"VNFD2": "0918d77d-f353-4e52-be42-9e078ca8c443",
"VNFD1": "86f3f4c5-ffb9-43a0-b5b8-7767f75100ac"
},
"symmetrical": false
}
}

View File

@ -1,15 +0,0 @@
{
"vnffg": {
"forwarding_paths": "476e2882-45d1-45cb-9856-45cf603f7d9a",
"status": "PENDING_CREATE",
"description": "sample vnffgd",
"tenant_id": "e8935dc5484345a1aff7a1043e88c8b1",
"vnffgd_id": "ec81d6b9-da96-4eed-80f8-0dadcebda926",
"vnf_mapping": {
"VNFD2": "0918d77d-f353-4e52-be42-9e078ca8c443",
"VNFD1": "86f3f4c5-ffb9-43a0-b5b8-7767f75100ac"
},
"id": "8cc66ad5-8513-4afe-a2f2-1e13543348fe",
"name": "vnffg1"
}
}

View File

@ -1,74 +0,0 @@
{
"vnffg": {
"tenant_id": "058079ca392749bfa58831e0467a5439",
"name": "vnffg1",
"vnf_mapping": {
"VNFD2": "e40f29eb-b3e5-4c47-ab05-567be3a63fdb",
"VNFD1": "e759aa4c-ae09-403a-8c04-90c77abfae56"
},
"symmetrical": false,
"vnffgd_template": {
"tosca_definitions_version": "tosca_simple_profile_for_nfv_1_0_0",
"description": "Sample VNFFG template",
"topology_template": {
"description": "Sample VNFFG template",
"node_templates": {
"Forwarding_path1": {
"type": "tosca.nodes.nfv.FP.Tacker",
"description": "creates path (CP12->CP22)",
"properties": {
"id": 51,
"policy": {
"type": "ACL",
"criteria": [
{
"network_src_port_id": "92011ca7-565d-408d-af67-09f21cdf9107"
},
{
"ip_proto": 1
}
]
},
"path": [
{
"forwarder": "VNFD1",
"capability": "CP12"
},
{
"forwarder": "VNFD2",
"capability": "CP22"
}
]
}
}
},
"groups": {
"VNFFG1": {
"type": "tosca.groups.nfv.VNFFG",
"description": "HTTP to Corporate Net",
"properties": {
"vendor": "tacker",
"version": 1.0,
"number_of_endpoints": 2,
"dependent_virtual_link": [
"VL12",
"VL22"
],
"connection_point": [
"CP12",
"CP22"
],
"constituent_vnfs": [
"VNFD1",
"VNFD2"
]
},
"members": [
"Forwarding_path1"
]
}
}
}
}
}
}

View File

@ -1,84 +0,0 @@
{
"vnffg": {
"forwarding_paths": "a2d2d1dd-433f-47b7-89f8-be3cd6b2086a",
"status": "PENDING_CREATE",
"description": "",
"tenant_id": "058079ca392749bfa58831e0467a5439",
"vnffgd_id": "5263b036-8d11-410c-9417-6e0300456160",
"vnf_mapping": {
"VNFD2": "af76238b-75db-4f70-9ad7-bd286bb0f88a",
"VNFD1": "dcda3482-1e75-4b37-8bdd-77c018a59cd7"
},
"attributes": {
"vnffgd": {
"imports": [
"/opt/stack/tacker/tacker/tosca/lib/tacker_defs.yaml",
"/opt/stack/tacker/tacker/tosca/lib/tacker_nfv_defs.yaml"
],
"description": "Sample VNFFG template",
"topology_template": {
"node_templates": {
"Forwarding_path1": {
"type": "tosca.nodes.nfv.FP.Tacker",
"description": "creates path (CP12->CP22)",
"properties": {
"policy": {
"type": "ACL",
"criteria": [
{
"network_src_port_id": "9ec6bef0-5da9-4b04-bdc7-c57bc26bcdea"
},
{
"ip_proto": 1
}
]
},
"path": [
{
"capability": "CP12",
"forwarder": "VNFD1"
},
{
"capability": "CP22",
"forwarder": "VNFD2"
}
],
"id": 51
}
}
},
"description": "Sample VNFFG template",
"groups": {
"VNFFG1": {
"type": "tosca.groups.nfv.VNFFG",
"description": "HTTP to Corporate Net",
"members": [
"Forwarding_path1"
],
"properties": {
"vendor": "tacker",
"connection_point": [
"CP12",
"CP22"
],
"version": 1,
"constituent_vnfs": [
"VNFD1",
"VNFD2"
],
"number_of_endpoints": 2,
"dependent_virtual_link": [
"VL12",
"VL22"
]
}
}
}
},
"tosca_definitions_version": "tosca_simple_profile_for_nfv_1_0_0"
}
},
"id": "d86b2e7c-6e88-4d6e-ac1a-9a9ad56b48f5",
"name": "vnffg1"
}
}

View File

@ -1,17 +0,0 @@
{
"vnffgs": [
{
"forwarding_paths": "476e2882-45d1-45cb-9856-45cf603f7d9a",
"status": "ACTIVE",
"description": "sample vnffgd",
"tenant_id": "e8935dc5484345a1aff7a1043e88c8b1",
"vnffgd_id": "ec81d6b9-da96-4eed-80f8-0dadcebda926",
"vnf_mapping": {
"VNFD2": "0918d77d-f353-4e52-be42-9e078ca8c443",
"VNFD1": "86f3f4c5-ffb9-43a0-b5b8-7767f75100ac"
},
"id": "8cc66ad5-8513-4afe-a2f2-1e13543348fe",
"name": "vnffg1"
}
]
}

View File

@ -1,15 +0,0 @@
{
"vnffg": {
"forwarding_paths": "476e2882-45d1-45cb-9856-45cf603f7d9a",
"status": "ACTIVE",
"description": "sample vnffgd",
"tenant_id": "e8935dc5484345a1aff7a1043e88c8b1",
"vnffgd_id": "ec81d6b9-da96-4eed-80f8-0dadcebda926",
"vnf_mapping": {
"VNFD2": "0918d77d-f353-4e52-be42-9e078ca8c443",
"VNFD1": "86f3f4c5-ffb9-43a0-b5b8-7767f75100ac"
},
"id": "8cc66ad5-8513-4afe-a2f2-1e13543348fe",
"name": "vnffg1"
}
}

View File

@ -1,6 +0,0 @@
{
"scale": {
"policy": "SP1",
"type": "out"
}
}

View File

@ -1,6 +0,0 @@
{
"scale": {
"policy": "SP1",
"type": "out"
}
}

View File

@ -1,32 +0,0 @@
{
"vnf": {
"tenant_id": "6673e4d4e13340acb0b847f9ecde613b",
"vnfd_id": "a04b47d1-e8ad-4ef9-8341-eafec398ce02",
"vim_id": "f6bd6f24-7a0e-4111-8994-e108c5ee2ff2",
"name": "OpenWRT",
"description": "OpenWRT VNF",
"attributes": {
"config": {
"vdus": {
"vdu1": {
"config": {
"firewall": "package firewall\n"
}
}
}
},
"param_values": {
"vdus": {
"vdu1": {
"param": {
"vdu-name": "openwrt_vdu1"
}
}
}
}
},
"placement_attr": {
"region_name": "RegionOne"
}
}
}

View File

@ -1,27 +0,0 @@
{
"vnf": {
"status": "PENDING_CREATE",
"description": "OpenWRT VNFD with parameterized VDU name",
"vnfd_id": "a04b47d1-e8ad-4ef9-8341-eafec398ce02",
"tenant_id": "6673e4d4e13340acb0b847f9ecde613b",
"created_at": "2016-10-25 10:15:06.959431",
"updated_at": null,
"instance_id": "178d3186-5b5f-483c-b2f5-75b484ec793e",
"mgmt_ip_address": null,
"vim_id": "f6bd6f24-7a0e-4111-8994-e108c5ee2ff2",
"placement_attr": {
"region_name": "RegionOne",
"vim_name": "VIM0"
},
"error_reason": null,
"attributes": {
"config": "vdus:\n vdu1:\n config: {firewall: 'package firewall\n\n '}\n",
"heat_template": "heat_template_version: 2013-05-23\ndescription: 'OpenWRT with services\n\n '\nparameters:\n vdu-name:\n type: string\n description: Vdu name\n default: test-vdu\nresources:\n CP1:\n type: OS::Neutron::Port\n properties:\n network: net_mgmt\n port_security_enabled: false\n CP2:\n type: OS::Neutron::Port\n properties:\n network: net0\n port_security_enabled: false\n CP3:\n type: OS::Neutron::Port\n properties:\n network: net1\n port_security_enabled: false\n VDU1:\n type: OS::Nova::Server\n properties:\n config_drive: false\n flavor: {get_resource: VDU1_flavor}\n image: OpenWRT\n name:\n get_param: vdu-name\n networks:\n - port:\n get_resource: CP1\n - port:\n get_resource: CP2\n - port:\n get_resource: CP3\n user_data_format: SOFTWARE_CONFIG\n VDU1_flavor:\n properties: {disk: 1, ram: 512, vcpus: 1}\n type: OS::Nova::Flavor\noutputs:\n mgmt_ip-VDU1:\n value:\n get_attr: [CP1, fixed_ips, 0, ip_address]\n",
"param_values": "vdus:\n vdu1:\n param: {vdu-name: openwrt_vdu1}\n",
"monitoring_policy": "{\"vdus\": {\"VDU1\": {\"ping\": {\"actions\": {\"failure\": \"respawn\"}, \"name\": \"ping\", \"parameters\": {\"count\": 3, \"interval\": 10}, \"monitoring_params\": {\"count\": 3, \"interval\": 10}}}}}"
},
"id": "2b85ac49-e59e-4f22-89b8-42c3e27115ef",
"name": "OpenWRT"
}
}

View File

@ -1,8 +0,0 @@
{
"vnf": {
"attributes": {
"force": true
}
}
}

View File

@ -1,66 +0,0 @@
{
"vnf": {
"tenant_id": "6673e4d4e13340acb0b847f9ecde613b",
"vim_id": "f6bd6f24-7a0e-4111-8994-e108c5ee2ff2",
"name": "OpenWRT",
"description": "OpenWRT VNF",
"attributes": {
"config": {
"vdus": {
"vdu1": {
"config": {
"firewall": "package firewall\n"
}
}
}
},
"param_values": {
"vdus": {
"vdu1": {
"param": {
"vdu-name": "openwrt_vdu1"
}
}
}
}
},
"placement_attr": {
"region_name": "RegionOne"
},
"vnfd_template": {
"tosca_definitions_version": "tosca_simple_profile_for_nfv_1_0_0",
"description": "Demo example",
"metadata": {
"template_name": "sample-tosca-vnfd"},
"topology_template": {
"node_templates": {
"VDU1": {
"type": "tosca.nodes.nfv.VDU.Tacker",
"capabilities": {
"nfv_compute": {
"properties": {
"num_cpus": 1,
"mem_size": "512 MB",
"disk_size": "1 GB"}}},
"properties": {"image": "cirros-0.5.2-x86_64-disk"}},
"CP1": {
"type": "tosca.nodes.nfv.CP.Tacker",
"properties": {
"order": 0,
"management": true,
"anti_spoofing_protection": false},
"requirements": [
{"virtualLink": {
"node": "VL1"}},
{"virtualBinding": {
"node": "VDU1"}}]},
"VL1": {
"type": "tosca.nodes.nfv.VL",
"properties": {
"vendor": "Tacker",
"network_name": "net_mgmt"}}
}
}
}
}
}

View File

@ -1,28 +0,0 @@
{
"vnfs": [
{
"status": "ACTIVE",
"description": "OpenWRT VNFD with parameterized VDU name",
"vnfd_id": "a04b47d1-e8ad-4ef9-8341-eafec398ce02",
"tenant_id": "6673e4d4e13340acb0b847f9ecde613b",
"created_at": "2016-10-25 10:15:06",
"updated_at": null,
"instance_id": "178d3186-5b5f-483c-b2f5-75b484ec793e",
"mgmt_ip_address": "{\"VDU1\": \"192.168.120.3\"}",
"vim_id": "f6bd6f24-7a0e-4111-8994-e108c5ee2ff2",
"placement_attr": {
"region_name": "RegionOne",
"vim_name": "VIM0"
},
"error_reason": null,
"attributes": {
"config": "vdus:\n vdu1:\n config: {firewall: 'package firewall\n\n '}\n",
"monitoring_policy": "{\"vdus\": {\"VDU1\": {\"ping\": {\"actions\": {\"failure\": \"respawn\"}, \"name\": \"ping\", \"parameters\": {\"count\": 3, \"interval\": 10}, \"monitoring_params\": {\"count\": 3, \"interval\": 10}}}}}",
"param_values": "vdus:\n vdu1:\n param: {vdu-name: openwrt_vdu1}\n",
"heat_template": "heat_template_version: 2013-05-23\ndescription: 'OpenWRT with services\n\n '\nparameters:\n vdu-name:\n type: string\n description: Vdu name\n default: test-vdu\nresources:\n CP1:\n type: OS::Neutron::Port\n properties:\n network: net_mgmt\n port_security_enabled: false\n CP2:\n type: OS::Neutron::Port\n properties:\n network: net0\n port_security_enabled: false\n CP3:\n type: OS::Neutron::Port\n properties:\n network: net1\n port_security_enabled: false\n VDU1:\n type: OS::Nova::Server\n properties:\n config_drive: false\n flavor: {get_resource: VDU1_flavor}\n image: OpenWRT\n name:\n get_param: vdu-name\n networks:\n - port:\n get_resource: CP1\n - port:\n get_resource: CP2\n - port:\n get_resource: CP3\n user_data_format: SOFTWARE_CONFIG\n VDU1_flavor:\n properties: {disk: 1, ram: 512, vcpus: 1}\n type: OS::Nova::Flavor\noutputs:\n mgmt_ip-VDU1:\n value:\n get_attr: [CP1, fixed_ips, 0, ip_address]\n"
},
"id": "2b85ac49-e59e-4f22-89b8-42c3e27115ef",
"name": "OpenWRT"
}
]
}

View File

@ -1,29 +0,0 @@
{
"resources": [
{
"type": "OS::Nova::Server",
"name": "VDU1",
"id": "94c19bcf-6c89-4129-98fe-759e37e2f8c7"
},
{
"type": "OS::Neutron::Port",
"name": "CP1",
"id": "20602131-03f9-4cb2-b9fe-24bf56f1bb4f"
},
{
"type": "OS::Neutron::Port",
"name": "CP2",
"id": "ff641e7d-35f9-4095-a1f7-c3f6fb2fa294"
},
{
"type": "OS::Neutron::Port",
"name": "CP3",
"id": "ebe816df-3bc0-48a8-9278-140809d1d953"
},
{
"type": "OS::Nova::Flavor",
"name": "VDU1_flavor",
"id": "0f5e0bf2-f1a9-4474-aff9-cfffad22c5f8"
}
]
}

View File

@ -1,26 +0,0 @@
{
"vnf": {
"status": "ACTIVE",
"description": "OpenWRT VNFD with parameterized VDU name",
"vnfd_id": "a04b47d1-e8ad-4ef9-8341-eafec398ce02",
"tenant_id": "6673e4d4e13340acb0b847f9ecde613b",
"created_at": "2016-10-25 10:15:06",
"updated_at": "2016-10-25 10:16:43",
"instance_id": "178d3186-5b5f-483c-b2f5-75b484ec793e",
"mgmt_ip_address": "{\"VDU1\": \"192.168.120.3\"}",
"vim_id": "f6bd6f24-7a0e-4111-8994-e108c5ee2ff2",
"placement_attr": {
"region_name": "RegionOne",
"vim_name": "VIM0"
},
"error_reason": null,
"attributes": {
"config": "vdus:\n vdu1:\n config: {firewall: 'package firewall\n\n '}\n",
"monitoring_policy": "{\"vdus\": {\"VDU1\": {\"ping\": {\"actions\": {\"failure\": \"respawn\"}, \"name\": \"ping\", \"parameters\": {\"count\": 3, \"interval\": 10}, \"monitoring_params\": {\"count\": 3, \"interval\": 10}}}}}",
"param_values": "vdus:\n vdu1:\n param: {vdu-name: openwrt_vdu1}\n",
"heat_template": "heat_template_version: 2013-05-23\ndescription: 'OpenWRT with services\n\n '\nparameters:\n vdu-name:\n type: string\n description: Vdu name\n default: test-vdu\nresources:\n CP1:\n type: OS::Neutron::Port\n properties:\n network: net_mgmt\n port_security_enabled: false\n CP2:\n type: OS::Neutron::Port\n properties:\n network: net0\n port_security_enabled: false\n CP3:\n type: OS::Neutron::Port\n properties:\n network: net1\n port_security_enabled: false\n VDU1:\n type: OS::Nova::Server\n properties:\n config_drive: false\n flavor: {get_resource: VDU1_flavor}\n image: OpenWRT\n name:\n get_param: vdu-name\n networks:\n - port:\n get_resource: CP1\n - port:\n get_resource: CP2\n - port:\n get_resource: CP3\n user_data_format: SOFTWARE_CONFIG\n VDU1_flavor:\n properties: {disk: 1, ram: 512, vcpus: 1}\n type: OS::Nova::Flavor\noutputs:\n mgmt_ip-VDU1:\n value:\n get_attr: [CP1, fixed_ips, 0, ip_address]\n"
},
"id": "2b85ac49-e59e-4f22-89b8-42c3e27115ef",
"name": "OpenWRT"
}
}

View File

@ -1,15 +0,0 @@
{
"vnf": {
"attributes": {
"config": {
"vdus": {
"VDU1": {
"config": {
"firewall": "package firewall\n\nconfig defaults\n option syn_flood 1\n option input ACCEPT\n option output ACCEPT\n option forward REJECT\n"
}
}
}
}
}
}
}

View File

@ -1,26 +0,0 @@
{
"vnf": {
"status": "PENDING_UPDATE",
"description": "OpenWRT VNFD with parameterized VDU name",
"vnfd_id": "a04b47d1-e8ad-4ef9-8341-eafec398ce02",
"tenant_id": "6673e4d4e13340acb0b847f9ecde613b",
"created_at": "2016-10-25 10:15:06",
"updated_at": "2016-10-25 10:16:43",
"instance_id": "178d3186-5b5f-483c-b2f5-75b484ec793e",
"mgmt_ip_address": "{\"VDU1\": \"192.168.120.3\"}",
"vim_id": "f6bd6f24-7a0e-4111-8994-e108c5ee2ff2",
"placement_attr": {
"region_name": "RegionOne",
"vim_name": "VIM0"
},
"error_reason": null,
"attributes": {
"config": "vdus:\n VDU1:\n config: {firewall: \"package firewall\\n\\nconfig defaults\\n option syn_flood\\\n \\ 1\\n option input ACCEPT\\n option output ACCEPT\\n option forward\\\n \\ REJECT\\n\"}\n vdu1:\n config: {firewall: 'package firewall\n\n '}\n",
"monitoring_policy": "{\"vdus\": {\"VDU1\": {\"ping\": {\"actions\": {\"failure\": \"respawn\"}, \"name\": \"ping\", \"parameters\": {\"count\": 3, \"interval\": 10}, \"monitoring_params\": {\"count\": 3, \"interval\": 10}}}}}",
"param_values": "vdus:\n vdu1:\n param: {vdu-name: openwrt_vdu1}\n",
"heat_template": "heat_template_version: 2013-05-23\ndescription: 'OpenWRT with services\n\n '\nparameters:\n vdu-name:\n type: string\n description: Vdu name\n default: test-vdu\nresources:\n CP1:\n type: OS::Neutron::Port\n properties:\n network: net_mgmt\n port_security_enabled: false\n CP2:\n type: OS::Neutron::Port\n properties:\n network: net0\n port_security_enabled: false\n CP3:\n type: OS::Neutron::Port\n properties:\n network: net1\n port_security_enabled: false\n VDU1:\n type: OS::Nova::Server\n properties:\n config_drive: false\n flavor: {get_resource: VDU1_flavor}\n image: OpenWRT\n name:\n get_param: vdu-name\n networks:\n - port:\n get_resource: CP1\n - port:\n get_resource: CP2\n - port:\n get_resource: CP3\n user_data_format: SOFTWARE_CONFIG\n VDU1_flavor:\n properties: {disk: 1, ram: 512, vcpus: 1}\n type: OS::Nova::Flavor\noutputs:\n mgmt_ip-VDU1:\n value:\n get_attr: [CP1, fixed_ips, 0, ip_address]\n"
},
"id": "2b85ac49-e59e-4f22-89b8-42c3e27115ef",
"name": "OpenWRT"
}
}

View File

@ -1,97 +0,0 @@
.. -*- rst -*-
==============================
Service Function Chains (SFCs)
==============================
Lists Service Function Chains (SFCs) and shows information of a given SFC.
The SFC is a component of a NFP and forms a path which traffics flow through.
List SFCs
=========
.. rest_method:: GET /v1.0/sfcs
Lists SFCs.
Response Codes
--------------
.. rest_status_code:: success status.yaml
- 200
.. rest_status_code:: error status.yaml
- 401
- 500
Response Parameters
-------------------
.. rest_parameters:: parameters.yaml
- sfcs: sfcs
- status: sfc_status
- path_id: sfc_path_id
- nfp_id: sfc_nfp_id
- chain: sfc_chain
- tenant_id: tenant_id
- instance_id: sfc_instance_id
- symmetrical: symmetrical
- id: sfc_id
Response Example
----------------
.. literalinclude:: samples/sfcs/sfcs-list-response.json
:language: javascript
Show SFC
========
.. rest_method:: GET /v1.0/sfcs/{sfc_id}
Shows information of a given SFC.
Response Codes
--------------
.. rest_status_code:: success status.yaml
- 200
.. rest_status_code:: error status.yaml
- 401
- 404
- 500
Request Parameters
------------------
.. rest_parameters:: parameters.yaml
- sfc_id: sfc_id_path
Response Parameters
-------------------
.. rest_parameters:: parameters.yaml
- sfc: sfc
- status: sfc_status
- path_id: sfc_path_id
- nfp_id: sfc_nfp_id
- chain: sfc_chain
- tenant_id: tenant_id
- instance_id: sfc_instance_id
- symmetrical: symmetrical
- id: sfc_id
Response Example
----------------
.. literalinclude:: samples/sfcs/sfcs-show-response.json
:language: javascript

View File

@ -1,248 +0,0 @@
.. -*- rst -*-
================================================
Virtualized Network Function Descriptors (VNFDs)
================================================
Manages Virtualized Network Function Descriptors (VNFDs).
The VNFD is a template which describes information about deployment
and behavior of Virtualized Network Functions (VNFs). For more information, see
`VNF Descriptor Template Guide
<https://docs.openstack.org/tacker/latest/contributor/vnfd_template_description.html>`_.
Create VNFD
===========
.. rest_method:: POST /v1.0/vnfds
Creates a VNFD.
Response Codes
--------------
.. rest_status_code:: success status.yaml
- 201
.. rest_status_code:: error status.yaml
- 400
- 401
- 500
Request Parameters
------------------
.. rest_parameters:: parameters.yaml
- tenant_id: tenant_id_opt
- name: name
- description: description_opt
- service_types: service_types
- attributes: vnfd_attributes
Request Example
---------------
.. literalinclude:: samples/vnfds/vnfds-create-request.json
:language: javascript
Response Parameters
-------------------
.. rest_parameters:: parameters.yaml
- vnfd: vnfd
- service_types: service_types
- description: description
- tenant_id: tenant_id
- created_at: created_at
- updated_at: updated_at
- attributes: vnfd_attributes
- id: vnfd_id
- name: name
Response Example
----------------
.. literalinclude:: samples/vnfds/vnfds-create-response.json
:language: javascript
List VNFDs
==========
.. rest_method:: GET /v1.0/vnfds
Lists VNFDs.
Response Codes
--------------
.. rest_status_code:: success status.yaml
- 200
.. rest_status_code:: error status.yaml
- 401
- 500
Response Parameters
-------------------
.. rest_parameters:: parameters.yaml
- vnfds: vnfds
- service_types: service_types
- description: description
- tenant_id: tenant_id
- created_at: created_at
- updated_at: updated_at
- attributes: vnfd_attributes
- id: vnfd_id
- name: name
- template_source: vnfd_template_source
Response Example
----------------
.. literalinclude:: samples/vnfds/vnfds-list-response.json
:language: javascript
Show VNFD
=========
.. rest_method:: GET /v1.0/vnfds/{vnfd_id}
Shows information of a given VNFD.
Response Codes
--------------
.. rest_status_code:: success status.yaml
- 200
.. rest_status_code:: error status.yaml
- 401
- 404
- 500
Request Parameters
------------------
.. rest_parameters:: parameters.yaml
- vnfd_id: vnfd_id_path
Response Parameters
-------------------
.. rest_parameters:: parameters.yaml
- vnfd: vnfd
- service_types: service_types
- description: description
- tenant_id: tenant_id
- created_at: created_at
- updated_at: updated_at
- attributes: vnfd_attributes
- id: vnfd_id
- name: name
- template_source: vnfd_template_source
Response Example
----------------
.. literalinclude:: samples/vnfds/vnfds-show-response.json
:language: javascript
Update VNFD
===========
.. rest_method:: PUT /v1.0/vnfds/{vnfd_id}
Updates a given VNFD.
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
- vnfd_id: vnfd_id_path
- name: name_opt
- description: description_opt
Request Example
---------------
.. literalinclude:: samples/vnfds/vnfds-update-request.json
:language: javascript
Response Parameters
-------------------
.. rest_parameters:: parameters.yaml
- vnfd: vnfd
- service_types: service_types
- description: description
- tenant_id: tenant_id
- created_at: created_at
- updated_at: updated_at
- attributes: vnfd_attributes
- id: vnfd_id
- name: name
Response Example
----------------
.. literalinclude:: samples/vnfds/vnfds-update-response.json
:language: javascript
Delete VNFD
===========
.. rest_method:: DELETE /v1.0/vnfds/{vnfd_id}
Deletes a given VNFD.
Only a VNFD without any associated VNFs can be deleted.
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
- vnfd_id: vnfd_id_path

View File

@ -1,176 +0,0 @@
.. -*- rst -*-
==========================================
VNF Forwarding Graph Descriptors (VNFFGDs)
==========================================
Manages VNF Forwarding Graph Descriptors (VNFFGDs).
The VNFFGD is a template which describes information about deployment and
behavior of VNF Forwarding Graphs (VNFFGs). For more information, see
`VNFFG Descriptor Template Guide
<https://docs.openstack.org/tacker/latest/contributor/vnffgd_template_description.html>`_.
Create VNFFGD
=============
.. rest_method:: POST /v1.0/vnffgds
Creates a VNFFGD.
Response Codes
--------------
.. rest_status_code:: success status.yaml
- 201
.. rest_status_code:: error status.yaml
- 400
- 401
- 500
Request Parameters
------------------
.. rest_parameters:: parameters.yaml
- tenant_id: tenant_id_opt
- name: name
- template: vnffgd_template
- description: description_opt
Request Example
---------------
.. literalinclude:: samples/vnffgds/vnffgds-create-request.json
:language: javascript
Response Parameters
-------------------
.. rest_parameters:: parameters.yaml
- vnffgd: vnffgd
- tenant_id: tenant_id
- name: name
- template: vnffgd_template
- description: description
Response Example
----------------
.. literalinclude:: samples/vnffgds/vnffgds-create-response.json
:language: javascript
List VNFFGDs
============
.. rest_method:: GET /v1.0/vnffgds
Lists VNFFGDs.
Response Codes
--------------
.. rest_status_code:: success status.yaml
- 200
.. rest_status_code:: error status.yaml
- 401
- 500
Response Parameters
-------------------
.. rest_parameters:: parameters.yaml
- vnffgds: vnffgds
- description: description
- tenant_id: tenant_id
- id: vnffgd_id
- name: name
Response Example
----------------
.. literalinclude:: samples/vnffgds/vnffgds-list-response.json
:language: javascript
Show VNFFGD
===========
.. rest_method:: GET /v1.0/vnffgds/{vnffgd_id}
Shows information of a given VNFFGD.
Response Codes
--------------
.. rest_status_code:: success status.yaml
- 200
.. rest_status_code:: error status.yaml
- 401
- 404
- 500
Request Parameters
------------------
.. rest_parameters:: parameters.yaml
- vnffgd_id: vnffgd_id_path
Response Parameters
-------------------
.. rest_parameters:: parameters.yaml
- vnffgd: vnffgd
- description: description
- tenant_id: tenant_id
- id: vnffgd_id
- name: name
Response Example
----------------
.. literalinclude:: samples/vnffgds/vnffgds-show-response.json
:language: javascript
Delete VNFFGD
=============
.. rest_method:: DELETE /v1.0/vnffgds/{vnffgd_id}
Deletes a given VNFFGD.
Only a VNFFGD without any associated VNFFGs can be deleted.
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
- vnffgd_id: vnffgd_id_path

View File

@ -1,187 +0,0 @@
.. -*- rst -*-
==============================
VNF Forwarding Graphs (VNFFGs)
==============================
Manages VNF Forwarding Graphs (VNFFGs).
The VNFFG feature is used to orchestrate and manage traffic through VNFs.
For more information about VNFFG, see
`VNF Forwarding Graph
<https://docs.openstack.org/tacker/latest/user/vnffg_usage_guide.html>`_.
Create VNFFG
============
.. rest_method:: POST /v1.0/vnffgs
Creates a VNFFG.
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
- tenant_id: tenant_id_opt
- vnffgd_id: vnffgd_id
- name: name
- vnf_mapping: vnf_mapping_opt
- symmetrical: symmetrical_opt
Request Example
---------------
.. literalinclude:: samples/vnffgs/vnffgs-create-request.json
:language: javascript
Response Parameters
-------------------
.. rest_parameters:: parameters.yaml
- vnffg: vnffg
- forwarding_paths: vnffg_forwarding_paths
- status: vnffg_status
- description: description
- tenant_id: tenant_id
- vnffgd_id: vnffgd_id
- vnf_mapping: vnf_mapping
- id: vnffg_id
- name: name
Response Example
----------------
.. literalinclude:: samples/vnffgs/vnffgs-create-response.json
:language: javascript
List VNFFGs
===========
.. rest_method:: GET /v1.0/vnffgs
Lists VNFFGs.
Response Codes
--------------
.. rest_status_code:: success status.yaml
- 200
.. rest_status_code:: error status.yaml
- 401
- 500
Response Parameters
-------------------
.. rest_parameters:: parameters.yaml
- vnffgs: vnffgs
- forwarding_paths: vnffg_forwarding_paths
- status: vnffg_status
- description: description
- tenant_id: tenant_id
- vnffgd_id: vnffgd_id
- vnf_mapping: vnf_mapping
- id: vnffg_id
- name: name
Response Example
----------------
.. literalinclude:: samples/vnffgs/vnffgs-list-response.json
:language: javascript
Show VNFFG
==========
.. rest_method:: GET /v1.0/vnffgs/{vnffg_id}
Shows information of a given VNFFG.
Response Codes
--------------
.. rest_status_code:: success status.yaml
- 200
.. rest_status_code:: error status.yaml
- 401
- 404
- 500
Request Parameters
------------------
.. rest_parameters:: parameters.yaml
- vnffg_id: vnffg_id_path
Response Parameters
-------------------
.. rest_parameters:: parameters.yaml
- vnffg: vnffg
- forwarding_paths: vnffg_forwarding_paths
- status: vnffg_status
- description: description
- tenant_id: tenant_id
- vnffgd_id: vnffgd_id
- vnf_mapping: vnf_mapping
- id: vnffg_id
- name: name
Response Example
----------------
.. literalinclude:: samples/vnffgs/vnffgs-show-response.json
:language: javascript
Delete VNFFG
============
.. rest_method:: DELETE /v1.0/vnffgs/{vnffg_id}
Deletes a given VNFFG.
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
- vnffg_id: vnffg_id_path

View File

@ -1,397 +0,0 @@
.. -*- 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

View File

@ -83,8 +83,6 @@ TACKER_NOVA_API_INSECURE=${TACKER_NOVA_API_INSECURE:-False}
CEILOMETER_CONF_DIR=/etc/ceilometer
source ${TACKER_DIR}/tacker/tests/contrib/post_test_hook_lib.sh
VNF_PACKAGE_CSAR_PATH=${VNF_PACKAGE_CSAR_PATH:=$TACKER_DATA_DIR/vnfpackage}
FILESYSTEM_STORE_DATA_DIR=${FILESYSTEM_STORE_DATA_DIR:=$TACKER_DATA_DIR/csar_files}
GLANCE_DEFAULT_BACKEND=${GLANCE_DEFAULT_BACKEND:=file}

View File

@ -1,24 +0,0 @@
redirectmatch 301 ^/tacker/([^/]+)/devref/vnfd_template_description.html$ ^/tacker/$1/contributor/vnfd_template_description.html
redirectmatch 301 ^/tacker/([^/]+)/devref/vnffg_usage_guide.html$ ^/tacker/$1/user/vnffg_usage_guide.html
redirectmatch 301 ^/tacker/([^/]+)/devref/api_extensions.html$ ^/tacker/$1/contributor/api/api_extensions.html
redirectmatch 301 ^/tacker/([^/]+)/devref/api_layer.html$ ^/tacker/$1/contributor/api/api_layer.html
redirectmatch 301 ^/tacker/([^/]+)/devref/mano_api.html$ ^/tacker/$1/contributor/api/mano_api.html
redirectmatch 301 ^/tacker/([^/]+)/devref/dashboards.html$ ^/tacker/$1/contributor/dashboards.html
redirectmatch 301 ^/tacker/([^/]+)/devref/development.environment.html$ ^/tacker/$1/contributor/development.environment.html
redirectmatch 301 ^/tacker/([^/]+)/devref/encrypt_vim_auth_with_barbican.html$ ^/tacker/$1/contributor/encrypt_vim_auth_with_barbican.html
redirectmatch 301 ^/tacker/([^/]+)/devref/event_logging.html$ ^/tacker/$1/contributor/event_logging.html
redirectmatch 301 ^/tacker/([^/]+)/devref/monitor-api.html$ ^/tacker/$1/contributor/monitor-api.html
redirectmatch 301 ^/tacker/([^/]+)/devref/policy_actions_framework.html$ ^/tacker/$1/contributor/policy_actions_framework.html
redirectmatch 301 ^/tacker/([^/]+)/devref/tacker_conductor.html$ ^/tacker/$1/contributor/tacker_conductor.html
redirectmatch 301 ^/tacker/([^/]+)/devref/tacker_functional_test.html$ ^/tacker/$1/contributor/tacker_functional_test.html
redirectmatch 301 ^/tacker/([^/]+)/devref/tacker_vim_monitoring.html$ ^/tacker/$1/contributor/tacker_vim_monitoring.html
redirectmatch 301 ^/tacker/([^/]+)/devref/vnfd_template_parameterization.html$ ^/tacker/$1/contributor/vnfd_template_parameterization.html
redirectmatch 301 ^/tacker/([^/]+)/devref/vnffgd_template_description.html$ ^/tacker/$1/contributor/vnffgd_template_description.html
redirectmatch 301 ^/tacker/([^/]+)/devref/vnfm_usage_guide.html$ ^/tacker/$1/user/vnfm_usage_guide.html
redirectmatch 301 ^/tacker/([^/]+)/policies/dev-process.html$ ^/tacker/$1/contributor/dev-process.html
redirectmatch 301 ^/tacker/([^/]+)/devref/alarm_monitoring_usage_guide.html$ ^/tacker/$1/user/alarm_monitoring_usage_guide.html
redirectmatch 301 ^/tacker/([^/]+)/devref/enhanced_placement_awareness_usage_guide.html$ ^/tacker/$1/user/enhanced_placement_awareness_usage_guide.html
redirectmatch 301 ^/tacker/([^/]+)/devref/multisite_vim_usage_guide.html$ ^/tacker/$1/user/multisite_vim_usage_guide.html
redirectmatch 301 ^/tacker/([^/]+)/devref/nsd_usage_guide.html$ ^/tacker/$1/user/nsd_usage_guide.html
redirectmatch 301 ^/tacker/([^/]+)/devref/scale_usage_guide.html$ ^/tacker/$1/user/scale_usage_guide.html
redirectmatch 301 ^/tacker/([^/]+)/devref/vnf_component_usage_guide.html$ ^/tacker/$1/user/vnf_component_usage_guide.html

View File

@ -24,54 +24,83 @@ The following list covers the commands for Tacker services available in
These commands can be referenced by doing **openstack help** and the detail
of individual command can be referred by **openstack help <command-name>**.
.. warning::
Legacy commands excluding VIM feature are deprecated
and will be removed in the first major release after the Tacker server
version 9.0.0 (2023.1 Antelope release).
.. code-block:: console
openstack vnf create Create a VNF.
openstack vnf delete Delete given VNF(s).
openstack vnf list List VNF(s) that belong to a given tenant.
openstack vnf resource list List resources of a VNF like VDU, CP, etc.
openstack vnf scale Scale a VNF.
openstack vnf show Show information of a given VNF.
openstack vnf set Update a given VNF.
openstack vnf descriptor create Create a VNFD.
openstack vnf descriptor delete Delete given VNFD(s).
openstack vnf descriptor list List VNFD(s) that belong to a given tenant.
openstack vnf descriptor show Show information of a given VNFD.
openstack vnf descriptor template show Show template of a given VNFD.
openstack vim list List VIM(s) that belong to a given tenant.
openstack vim register Create a VIM.
openstack vim show Show information of a given VIM.
openstack vim set Update a given VIM.
openstack vim delete Delete given VIM(s).
openstack ns create Create a NS.
openstack ns delete Delete given NS(s).
openstack ns list List NS that belong to a given tenant.
openstack ns show Show information of a given NS.
openstack ns descriptor create Create a NSD.
openstack ns descriptor delete Delete a given NSD.
openstack ns descriptor list List NSD(s) that belong to a given tenant.
openstack ns descriptor show Show information of a given NSD.
openstack ns descriptor template show Show template of a given NSD.
openstack vnf graph create Create a VNFFG.
openstack vnf graph delete Delete a given VNFFG.
openstack vnf graph list List VNFFG(s) that belong to a given tenant.
openstack vnf graph show Show information of a given VNFFG.
openstack vnf graph set Update a given VNFFG.
openstack vnf graph descriptor create Create a VNFFGD.
openstack vnf graph descriptor delete Delete a given VNFFGD.
openstack vnf graph descriptor list List VNFFGD(s) that belong to a given tenant.
openstack vnf graph descriptor show Show information of a given VNFFGD.
openstack vnf graph descriptor template show Show template of a given VNFFGD.
openstack vnf chain list List SFC(s) that belong to a given tenant.
openstack vnf chain show Show information of a given SFC.
openstack vnf classifier list List FC(s) that belong to a given tenant.
openstack vnf classifier show Show information of a given FC.
openstack vnf network forwarding path list List NFP(s) that belong to a given tenant.
openstack vnf network forwarding path show Show information of a given NFP.
openstack nfv event show Show event given the event id.
openstack nfv event list List events of resources.
[legacy]
openstack vim delete Delete given VIM(s).
openstack vim list List VIM(s) in a given tenant.
openstack vim register Create a VIM.
openstack vim set Update a given VIM.
openstack vim show Show information of a given VIM.
[v1] --os-tacker-api-version 1
openstack vnf package artifact download Download VNF package artifact.
openstack vnf package create Create a new VNF Package.
openstack vnf package delete Delete VNF Package.
openstack vnf package download Download VNF package.
openstack vnf package list List VNF Packages.
openstack vnf package show Show VNF Package Details.
openstack vnf package update Update a VNF package.
openstack vnf package upload Upload VNF Package.
openstack vnflcm change-ext-conn Change External VNF Connectivity.
openstack vnflcm create Create a new VNF Instance.
openstack vnflcm delete Delete VNF Instance(s).
openstack vnflcm heal Heal VNF Instance.
openstack vnflcm instantiate Instantiate a VNF Instance.
openstack vnflcm list List VNF Instance.
openstack vnflcm op cancel Cancel VNF Instance.
openstack vnflcm op fail Fail VNF Instance.
openstack vnflcm op list List LCM Operation Occurrences.
openstack vnflcm op retry Retry VNF Instance.
openstack vnflcm op rollback Rollback VNF Instance.
openstack vnflcm op show Display Operation Occurrence details.
openstack vnflcm scale Scale a VNF Instance.
openstack vnflcm show Display VNF instance details.
openstack vnflcm subsc create Create a new Lccn Subscription.
openstack vnflcm subsc delete Delete Lccn Subscription(s).
openstack vnflcm subsc list List Lccn Subscriptions.
openstack vnflcm subsc show Display Lccn Subscription details.
openstack vnflcm terminate Terminate a VNF instance.
openstack vnflcm update Update VNF Instance.
openstack vnflcm versions Show VnfLcm Api versions.
[v2] --os-tacker-api-version 2
openstack vnflcm change-ext-conn Change External VNF Connectivity.
openstack vnflcm change-vnfpkg Change Current VNF Package.
openstack vnflcm create Create a new VNF Instance.
openstack vnflcm delete Delete VNF Instance(s)
openstack vnflcm heal Heal VNF Instance
openstack vnflcm instantiate Instantiate a VNF Instance.
openstack vnflcm list List VNF Instance.
openstack vnflcm op fail Fail VNF Instance.
openstack vnflcm op list List LCM Operation Occurrences.
openstack vnflcm op retry Retry VNF Instance.
openstack vnflcm op rollback Rollback VNF Instance.
openstack vnflcm op show Display Operation Occurrence details.
openstack vnflcm scale Scale a VNF Instance.
openstack vnflcm show Display VNF instance details.
openstack vnflcm subsc create Create a new Lccn Subscription.
openstack vnflcm subsc delete Delete Lccn Subscription(s).
openstack vnflcm subsc list List Lccn Subscriptions.
openstack vnflcm subsc show Display Lccn Subscription details.
openstack vnflcm terminate Terminate a VNF instance.
openstack vnflcm update Update VNF Instance.
openstack vnflcm versions Show VnfLcm Api versions.
openstack vnffm alarm listn List VNF FM alarms.
openstack vnffm alarm show Display VNF FM alarm details.
openstack vnffm alarm update Update a VNF FM alarm information.
openstack vnffm sub create Create a new VNF FM subscription.
openstack vnffm sub delete Delete VNF FM subscription(s).
openstack vnffm sub list List VNF FM subs.
openstack vnffm sub show Display VNF FM subscription details.
openstack vnfpm job create Create a new VNF PM job.
openstack vnfpm job delete Delete VNF PM job.
openstack vnfpm job list List VNF PM jobs.
openstack vnfpm job show Display VNF PM job details.
openstack vnfpm job update Update a VNF PM job information.
openstack vnfpm report show Display VNF PM report details.
openstack vnfpm threshold create Create a new VNF PM threshold.
openstack vnfpm threshold delete Delete VNF PM threshold.
openstack vnfpm threshold list List VNF PM thresholds.
openstack vnfpm threshold show Display VNF PM threshold details.
openstack vnfpm threshold update Update a VNF PM threshold information.

View File

@ -1,123 +0,0 @@
================
Event Management
================
.. warning::
Event Management commands are deprecated
and will be removed in the first major release after the Tacker server
version 9.0.0 (2023.1 Antelope release).
This document describes how to manage Event with CLI in Tacker.
Prerequisites
-------------
The following packages should be installed:
* tacker
* python-tackerclient
CLI reference for Event Management
----------------------------------
1. List Events
^^^^^^^^^^^^^^
.. code-block:: console
$ openstack nfv event list
Result:
.. code-block:: console
+----+---------------+--------------------------------------+-------------------+------------+---------------------+
| ID | Resource Type | Resource ID | Resource State | Event Type | Timestamp |
+----+---------------+--------------------------------------+-------------------+------------+---------------------+
| 1 | vim | aacb3c7f-d532-44d9-b8ed-49e2b30114aa | PENDING | CREATE | 2020-08-12 02:28:22 |
| 2 | vim | aacb3c7f-d532-44d9-b8ed-49e2b30114aa | REACHABLE | MONITOR | 2020-08-12 02:28:23 |
| 3 | vim | aacb3c7f-d532-44d9-b8ed-49e2b30114aa | REACHABLE | UPDATE | 2020-08-12 02:40:40 |
| 4 | vnfd | 94f2b44c-06f7-4d43-a2bb-dcd54f44d0f5 | OnBoarded | CREATE | 2020-08-13 05:52:07 |
| 5 | vnf | 4ffb436f-7f2c-4df1-96c4-38e9208261fd | PENDING_CREATE | CREATE | 2020-08-13 05:53:45 |
| 6 | vnf | 4ffb436f-7f2c-4df1-96c4-38e9208261fd | ACTIVE | CREATE | 2020-08-13 05:53:45 |
| 7 | vnf | 83fb8124-b475-400f-b0eb-f2b6741eeedc | PENDING_CREATE | CREATE | 2020-08-13 05:54:07 |
| 8 | vnf | 83fb8124-b475-400f-b0eb-f2b6741eeedc | ACTIVE | CREATE | 2020-08-13 05:54:07 |
+----+---------------+--------------------------------------+-------------------+------------+---------------------+
Help:
.. code-block:: console
$ openstack nfv event list --help
usage: openstack nfv event list [-h] [-f {csv,json,table,value,yaml}]
[-c COLUMN]
[--quote {all,minimal,none,nonnumeric}]
[--noindent] [--max-width <integer>]
[--fit-width] [--print-empty]
[--sort-column SORT_COLUMN] [--id ID]
[--resource-type RESOURCE_TYPE]
[--resource-id RESOURCE_ID]
[--resource-state RESOURCE_STATE]
[--event-type EVENT_TYPE] [--long]
List events of resources.
optional arguments:
-h, --help show this help message and exit
--id ID id of the event to look up.
--resource-type RESOURCE_TYPE
resource type of the events to look up.
--resource-id RESOURCE_ID
resource id of the events to look up.
--resource-state RESOURCE_STATE
resource state of the events to look up.
--event-type EVENT_TYPE
event type of the events to look up.
--long List additional fields in output
2. Show Event
^^^^^^^^^^^^^
.. code-block:: console
$ openstack nfv event show <ID: 1>
Result:
.. code-block:: console
+----------------+--------------------------------------+
| Field | Value |
+----------------+--------------------------------------+
| event_details | |
| event_type | CREATE |
| id | 1 |
| resource_id | aacb3c7f-d532-44d9-b8ed-49e2b30114aa |
| resource_state | PENDING |
| resource_type | vim |
| timestamp | 2020-08-12 02:28:22 |
+----------------+--------------------------------------+
Help:
.. code-block:: console
$ openstack nfv event show --help
usage: openstack nfv event show [-h] [-f {json,shell,table,value,yaml}]
[-c COLUMN] [--noindent] [--prefix PREFIX]
[--max-width <integer>] [--fit-width]
[--print-empty]
ID
Show event given the event id.
positional arguments:
ID ID of event to display
optional arguments:
-h, --help show this help message and exit

View File

@ -1,144 +0,0 @@
==========================
Flow Classifier Management
==========================
.. warning::
Flow Classifier Management commands are deprecated
and will be removed in the first major release after the Tacker server
version 9.0.0 (2023.1 Antelope release).
Flow Classifier (FC) is a part of Network Forwarding Path (NFP) in VNF
Forwarding Graph (VNFFG).
This document describes how to manage FC with CLI in Tacker.
Prerequisites
-------------
The following packages should be installed:
* tacker
* python-tackerclient
A default VIM should be registered according to :doc:`./cli-legacy-vim`.
The following VNFDs are created with the name ``VNFD1`` and ``VNFD2``
according to :doc:`./cli-legacy-vnfd`.
* `tosca-vnffg-vnfd1.yaml <https://opendev.org/openstack/tacker/src/branch/master/samples/tosca-templates/vnffgd/tosca-vnffg-vnfd1.yaml>`_
* `tosca-vnffg-vnfd2.yaml <https://opendev.org/openstack/tacker/src/branch/master/samples/tosca-templates/vnffgd/tosca-vnffg-vnfd2.yaml>`_
.. code-block:: console
$ openstack vnf descriptor create --vnfd-file tosca-vnffg-vnfd1.yaml VNFD1
$ openstack vnf descriptor create --vnfd-file tosca-vnffg-vnfd2.yaml VNFD2
The VNFs from the created VNFDs are deployed with the name ``VNF1`` and
``VNF2`` according to :doc:`./cli-legacy-vnf`.
.. code-block:: console
$ openstack vnf create --vnfd-name VNFD1 VNF1
$ openstack vnf create --vnfd-name VNFD2 VNF2
VNFFG should be deployed according to :doc:`./cli-legacy-vnffg`. Before
deploying the VNFFG, a VNFFGD may need to be created according to
:doc:`./cli-legacy-vnffgd`.
CLI reference for FC Management
-------------------------------
1. List Flow Classifier
^^^^^^^^^^^^^^^^^^^^^^^
.. code-block:: console
$ openstack vnf classifier list
Result:
.. code-block:: console
+--------------------------------------+-----------+--------+--------------------------------------+--------------------------------------+
| ID | Name | Status | NFP ID | Chain ID |
+--------------------------------------+-----------+--------+--------------------------------------+--------------------------------------+
| 31268b39-27d3-4108-9552-73490125d29a | block_tcp | ACTIVE | ed450e71-345d-4dc8-8f32-69e3a697ad56 | 89f99c03-a152-413b-bb39-c7618a54b23a |
+--------------------------------------+-----------+--------+--------------------------------------+--------------------------------------+
Help:
.. code-block:: console
$ openstack vnf classifier list --help
usage: openstack vnf classifier list [-h] [-f {csv,json,table,value,yaml}]
[-c COLUMN]
[--quote {all,minimal,none,nonnumeric}]
[--noindent] [--max-width <integer>]
[--fit-width] [--print-empty]
[--sort-column SORT_COLUMN]
[--nfp-id NFP_ID] [--tenant-id TENANT_ID]
List flow classifier(s) that belong to a given tenant.
optional arguments:
-h, --help show this help message and exit
--nfp-id NFP_ID List flow classifier(s) with specific nfp id
--tenant-id TENANT_ID
The owner tenant ID or project ID
2. Show Flow Classifier
^^^^^^^^^^^^^^^^^^^^^^^
.. code-block:: console
$ openstack vnf classifier show <ID: 31268b39-27d3-4108-9552-73490125d29a>
Result:
.. code-block:: console
+-------------+--------------------------------------------------------------------+
| Field | Value |
+-------------+--------------------------------------------------------------------+
| chain_id | 89f99c03-a152-413b-bb39-c7618a54b23a |
| id | 31268b39-27d3-4108-9552-73490125d29a |
| instance_id | 566e6760-9f0b-4b5e-a6e5-d8deab00efd3 |
| match | { |
| | "ip_dst_prefix": "10.10.0.5/24", |
| | "ip_proto": 6, |
| | "destination_port_min": 80, |
| | "destination_port_max": 1024, |
| | "network_src_port_id": "d4940639-764a-4a62-9b21-6ba2e86498eb", |
| | "tenant_id": "e77397d2a02c4af1b7d79cef2a406396" |
| | } |
| name | block_tcp |
| nfp_id | ed450e71-345d-4dc8-8f32-69e3a697ad56 |
| project_id | e77397d2a02c4af1b7d79cef2a406396 |
| status | ACTIVE |
+-------------+--------------------------------------------------------------------+
Help:
.. code-block:: console
$ openstack vnf classifier show --help
usage: openstack vnf classifier show [-h] [-f {json,shell,table,value,yaml}]
[-c COLUMN] [--noindent]
[--prefix PREFIX] [--max-width <integer>]
[--fit-width] [--print-empty]
<Classifier ID>
Display flow classifier details
positional arguments:
<Classifier ID> Flow Classifier to display (name or ID)
optional arguments:
-h, --help show this help message and exit

View File

@ -1,141 +0,0 @@
==================================
Network Forwarding Path Management
==================================
.. warning::
Network Forwarding Path Management commands are deprecated
and will be removed in the first major release after the Tacker server
version 9.0.0 (2023.1 Antelope release).
Network Forwarding Path (NFP) is composed of a Service Function Chain (SFC)
and a Flow Classifier (FC) in VNF Forwarding Graph (VNFFG).
This document describes how to manage NFP with CLI in Tacker.
Prerequisites
-------------
The following packages should be installed:
* tacker
* python-tackerclient
A default VIM should be registered according to :doc:`./cli-legacy-vim`.
The following VNFDs are created with the name ``VNFD1`` and ``VNFD2``
according to :doc:`./cli-legacy-vnfd`.
* `tosca-vnffg-vnfd1.yaml <https://opendev.org/openstack/tacker/src/branch/master/samples/tosca-templates/vnffgd/tosca-vnffg-vnfd1.yaml>`_
* `tosca-vnffg-vnfd2.yaml <https://opendev.org/openstack/tacker/src/branch/master/samples/tosca-templates/vnffgd/tosca-vnffg-vnfd2.yaml>`_
.. code-block:: console
$ openstack vnf descriptor create --vnfd-file tosca-vnffg-vnfd1.yaml VNFD1
$ openstack vnf descriptor create --vnfd-file tosca-vnffg-vnfd2.yaml VNFD2
The VNFs from the created VNFDs are deployed with the name ``VNF1`` and
``VNF2`` according to :doc:`./cli-legacy-vnf`.
.. code-block:: console
$ openstack vnf create --vnfd-name VNFD1 VNF1
$ openstack vnf create --vnfd-name VNFD2 VNF2
A VNFFG should be deployed according to :doc:`./cli-legacy-vnffg`. Before
deploying the VNFFG, a VNFFGD may need to be created according to
:doc:`./cli-legacy-vnffgd`.
CLI reference for NFP Management
--------------------------------
1. List Network Forwarding Path
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.. code-block:: console
$ openstack vnf network forwarding path list
Result:
.. code-block:: console
+--------------------------------------+------------------+--------+--------------------------------------+---------+
| ID | Name | Status | VNFFG ID | Path ID |
+--------------------------------------+------------------+--------+--------------------------------------+---------+
| ed450e71-345d-4dc8-8f32-69e3a697ad56 | Forwarding_path1 | ACTIVE | 3b1be255-4b3b-4ff2-b985-19f043f3f40c | 51 |
+--------------------------------------+------------------+--------+--------------------------------------+---------+
Help:
.. code-block:: console
$ openstack vnf network forwarding path list --help
usage: openstack vnf network forwarding path list [-h]
[-f {csv,json,table,value,yaml}]
[-c COLUMN]
[--quote {all,minimal,none,nonnumeric}]
[--noindent]
[--max-width <integer>]
[--fit-width]
[--print-empty]
[--sort-column SORT_COLUMN]
[--vnffg-id VNFFG_ID]
List NFP(s) that belong to a given tenant.
optional arguments:
-h, --help show this help message and exit
--vnffg-id VNFFG_ID List NFP(s) with specific VNFFG ID
2. Show Network Forwarding Path
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.. code-block:: console
$ openstack vnf network forwarding path show <NFP>
Result:
.. code-block:: console
+-------------+--------------------------------------+
| Field | Value |
+-------------+--------------------------------------+
| chain_id | 89f99c03-a152-413b-bb39-c7618a54b23a |
| id | ed450e71-345d-4dc8-8f32-69e3a697ad56 |
| name | Forwarding_path1 |
| path_id | 51 |
| project_id | e77397d2a02c4af1b7d79cef2a406396 |
| status | ACTIVE |
| symmetrical | False |
| vnffg_id | 3b1be255-4b3b-4ff2-b985-19f043f3f40c |
+-------------+--------------------------------------+
Help:
.. code-block:: console
$ openstack vnf network forwarding path show --help
usage: openstack vnf network forwarding path show [-h]
[-f {json,shell,table,value,yaml}]
[-c COLUMN] [--noindent]
[--prefix PREFIX]
[--max-width <integer>]
[--fit-width]
[--print-empty]
<NFP>
Display NFP details
positional arguments:
<NFP> NFP to display (name or ID)
optional arguments:
-h, --help show this help message and exit

View File

@ -1,417 +0,0 @@
=====================================
Network Service Descriptor Management
=====================================
.. warning::
Network Service Descriptor Management commands are deprecated
and will be removed in the first major release after the Tacker server
version 9.0.0 (2023.1 Antelope release).
To enable dynamic composition of network services, NFV introduces Network
Service Descriptors (NSDs) that specify the network service to be created.
This document describes how to manage NSD with CLI in Tacker.
Prerequisites
-------------
The following packages should be installed:
* tacker
* python-tackerclient
A default VIM should be registered according to :doc:`./cli-legacy-vim`.
The following VNFDs are created according to :doc:`./cli-legacy-vnfd`.
* `sample-tosca-vnfd1.yaml <https://opendev.org/openstack/tacker/src/branch/master/samples/tosca-templates/nsd/sample-tosca-vnfd1.yaml>`_
* `sample-tosca-vnfd2.yaml <https://opendev.org/openstack/tacker/src/branch/master/samples/tosca-templates/nsd/sample-tosca-vnfd2.yaml>`_
CLI reference for NSD Management
--------------------------------
1. Create Network Service Descriptor
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Create ``sample-tosca-nsd.yaml`` file:
* https://opendev.org/openstack/tacker/src/branch/master/samples/tosca-templates/nsd/sample-tosca-nsd.yaml
Create a NSD:
.. code-block:: console
$ openstack ns descriptor create --nsd-file \
sample-tosca-nsd.yaml <NAME: sample-tosca-nsd>
Result:
.. code-block:: console
+-----------------+----------------------------------------------------------------------------------+
| Field | Value |
+-----------------+----------------------------------------------------------------------------------+
| attributes | { |
| | "nsd": { |
| | "description": "Import VNFDs(already on-boarded) with input parameters", |
| | "imports": [ |
| | "sample-tosca-vnfd1", |
| | "sample-tosca-vnfd2" |
| | ], |
| | "topology_template": { |
| | "inputs": { |
| | "vl1_name": { |
| | "default": "net_mgmt", |
| | "description": "name of VL1 virtuallink", |
| | "type": "string" |
| | }, |
| | "vl2_name": { |
| | "default": "net0", |
| | "description": "name of VL2 virtuallink", |
| | "type": "string" |
| | } |
| | }, |
| | "node_templates": { |
| | "VL1": { |
| | "properties": { |
| | "network_name": { |
| | "get_input": "vl1_name" |
| | }, |
| | "vendor": "tacker" |
| | }, |
| | "type": "tosca.nodes.nfv.VL" |
| | }, |
| | "VL2": { |
| | "properties": { |
| | "network_name": { |
| | "get_input": "vl2_name" |
| | }, |
| | "vendor": "tacker" |
| | }, |
| | "type": "tosca.nodes.nfv.VL" |
| | }, |
| | "VNF1": { |
| | "requirements": [ |
| | { |
| | "virtualLink1": "VL1" |
| | }, |
| | { |
| | "virtualLink2": "VL2" |
| | } |
| | ], |
| | "type": "tosca.nodes.nfv.VNF1" |
| | }, |
| | "VNF2": { |
| | "type": "tosca.nodes.nfv.VNF2" |
| | } |
| | } |
| | }, |
| | "tosca_definitions_version": "tosca_simple_profile_for_nfv_1_0_0" |
| | } |
| | } |
| created_at | 2020-08-12 07:16:42.297675 |
| description | Import VNFDs(already on-boarded) with input parameters |
| id | 99a25f74-1bb9-4985-a548-f171060d00fd |
| name | sample-tosca-nsd |
| project_id | e77397d2a02c4af1b7d79cef2a406396 |
| template_source | onboarded |
| updated_at | None |
+-----------------+----------------------------------------------------------------------------------+
Help:
.. code-block:: console
$ openstack ns descriptor create --help
usage: openstack ns descriptor create [-h] [-f {json,shell,table,value,yaml}]
[-c COLUMN] [--noindent]
[--prefix PREFIX]
[--max-width <integer>] [--fit-width]
[--print-empty] [--tenant-id TENANT_ID]
--nsd-file NSD_FILE
[--description DESCRIPTION]
NAME
Create a new NSD.
positional arguments:
NAME Name for NSD
optional arguments:
-h, --help show this help message and exit
--tenant-id TENANT_ID
The owner tenant ID or project ID
--nsd-file NSD_FILE YAML file with NSD parameters
--description DESCRIPTION
Set a description for the NSD
2. List Network Service Descriptor
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.. code-block:: console
$ openstack ns descriptor list
Result:
.. code-block:: console
+--------------------------------------+------------------+-----------------+------------------------------+
| ID | Name | Template_Source | Description |
+--------------------------------------+------------------+-----------------+------------------------------+
| 99a25f74-1bb9-4985-a548-f171060d00fd | sample-tosca-nsd | onboarded | Import VNFDs(already on-b... |
+--------------------------------------+------------------+-----------------+------------------------------+
Help:
.. code-block:: console
$ openstack ns descriptor list --help
usage: openstack ns descriptor list [-h] [-f {csv,json,table,value,yaml}]
[-c COLUMN]
[--quote {all,minimal,none,nonnumeric}]
[--noindent] [--max-width <integer>]
[--fit-width] [--print-empty]
[--sort-column SORT_COLUMN]
[--template-source TEMPLATE_SOURCE]
List (NSD)s that belong to a given tenant.
optional arguments:
-h, --help show this help message and exit
--template-source TEMPLATE_SOURCE
List NSD with specified template source. Available
options are 'onboared' (default), 'inline' or 'all'
3. Show Network Service Descriptor
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.. code-block:: console
$ openstack ns descriptor show <NSD: sample-tosca-nsd>
Result:
.. code-block:: console
+-----------------+----------------------------------------------------------------------------------+
| Field | Value |
+-----------------+----------------------------------------------------------------------------------+
| attributes | { |
| | "nsd": { |
| | "description": "Import VNFDs(already on-boarded) with input parameters", |
| | "imports": [ |
| | "sample-tosca-vnfd1", |
| | "sample-tosca-vnfd2" |
| | ], |
| | "topology_template": { |
| | "inputs": { |
| | "vl1_name": { |
| | "default": "net_mgmt", |
| | "description": "name of VL1 virtuallink", |
| | "type": "string" |
| | }, |
| | "vl2_name": { |
| | "default": "net0", |
| | "description": "name of VL2 virtuallink", |
| | "type": "string" |
| | } |
| | }, |
| | "node_templates": { |
| | "VL1": { |
| | "properties": { |
| | "network_name": { |
| | "get_input": "vl1_name" |
| | }, |
| | "vendor": "tacker" |
| | }, |
| | "type": "tosca.nodes.nfv.VL" |
| | }, |
| | "VL2": { |
| | "properties": { |
| | "network_name": { |
| | "get_input": "vl2_name" |
| | }, |
| | "vendor": "tacker" |
| | }, |
| | "type": "tosca.nodes.nfv.VL" |
| | }, |
| | "VNF1": { |
| | "requirements": [ |
| | { |
| | "virtualLink1": "VL1" |
| | }, |
| | { |
| | "virtualLink2": "VL2" |
| | } |
| | ], |
| | "type": "tosca.nodes.nfv.VNF1" |
| | }, |
| | "VNF2": { |
| | "type": "tosca.nodes.nfv.VNF2" |
| | } |
| | } |
| | }, |
| | "tosca_definitions_version": "tosca_simple_profile_for_nfv_1_0_0" |
| | } |
| | } |
| created_at | 2020-08-12 07:16:42 |
| description | Import VNFDs(already on-boarded) with input parameters |
| id | 99a25f74-1bb9-4985-a548-f171060d00fd |
| name | sample-tosca-nsd |
| project_id | e77397d2a02c4af1b7d79cef2a406396 |
| template_source | onboarded |
| updated_at | None |
+-----------------+----------------------------------------------------------------------------------+
Help:
.. code-block:: console
$ openstack ns descriptor show --help
usage: openstack ns descriptor show [-h] [-f {json,shell,table,value,yaml}]
[-c COLUMN] [--noindent] [--prefix PREFIX]
[--max-width <integer>] [--fit-width]
[--print-empty]
<NSD>
Display NSD details
positional arguments:
<NSD> NSD to display (name or ID)
optional arguments:
-h, --help show this help message and exit
4. Show template Network Service Descriptor
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.. code-block:: console
openstack ns descriptor template show <name or ID of NSD: sample-tosca-nsd>
Result:
.. code-block:: console
+------------+----------------------------------------------------------------------------------+
| Field | Value |
+------------+----------------------------------------------------------------------------------+
| attributes | { |
| | "nsd": { |
| | "description": "Import VNFDs(already on-boarded) with input parameters", |
| | "imports": [ |
| | "sample-tosca-vnfd1", |
| | "sample-tosca-vnfd2" |
| | ], |
| | "topology_template": { |
| | "inputs": { |
| | "vl1_name": { |
| | "default": "net_mgmt", |
| | "description": "name of VL1 virtuallink", |
| | "type": "string" |
| | }, |
| | "vl2_name": { |
| | "default": "net0", |
| | "description": "name of VL2 virtuallink", |
| | "type": "string" |
| | } |
| | }, |
| | "node_templates": { |
| | "VL1": { |
| | "properties": { |
| | "network_name": { |
| | "get_input": "vl1_name" |
| | }, |
| | "vendor": "tacker" |
| | }, |
| | "type": "tosca.nodes.nfv.VL" |
| | }, |
| | "VL2": { |
| | "properties": { |
| | "network_name": { |
| | "get_input": "vl2_name" |
| | }, |
| | "vendor": "tacker" |
| | }, |
| | "type": "tosca.nodes.nfv.VL" |
| | }, |
| | "VNF1": { |
| | "requirements": [ |
| | { |
| | "virtualLink1": "VL1" |
| | }, |
| | { |
| | "virtualLink2": "VL2" |
| | } |
| | ], |
| | "type": "tosca.nodes.nfv.VNF1" |
| | }, |
| | "VNF2": { |
| | "type": "tosca.nodes.nfv.VNF2" |
| | } |
| | } |
| | }, |
| | "tosca_definitions_version": "tosca_simple_profile_for_nfv_1_0_0" |
| | } |
| | } |
+------------+----------------------------------------------------------------------------------+
Help:
.. code-block:: console
$ openstack ns descriptor template show --help
usage: openstack ns descriptor template show [-h]
[-f {json,shell,table,value,yaml}]
[-c COLUMN] [--noindent]
[--prefix PREFIX]
[--max-width <integer>]
[--fit-width] [--print-empty]
<NSD>
Display NSD Template details
positional arguments:
<NSD> NSD to display (name or ID)
optional arguments:
-h, --help show this help message and exit
5. Delete Network Service Descriptor
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.. code-block:: console
$ openstack ns descriptor delete <NSD: sample-tosca-nsd>
Result:
All specified nsd(s) deleted successfully
Help:
$ openstack ns descriptor delete --help
usage: openstack ns descriptor delete [-h] <NSD> [<NSD> ...]
Delete NSD(s).
positional arguments:
<NSD> NSD(s) to delete (name or ID)
optional arguments:
-h, --help show this help message and exit

View File

@ -1,147 +0,0 @@
=======================================
Service Function Chain (SFC) Management
=======================================
.. warning::
Service Function Chain (SFC) Management commands are deprecated
and will be removed in the first major release after the Tacker server
version 9.0.0 (2023.1 Antelope release).
Prerequisites
-------------
The following packages should be installed:
* tacker
* python-tackerclient
A default VIM should be registered according to :doc:`./cli-legacy-vim`.
The following VNFDs are created with the name ``VNFD1`` and ``VNFD2``
according to :doc:`./cli-legacy-vnfd`.
* `tosca-vnffg-vnfd1.yaml <https://opendev.org/openstack/tacker/src/branch/master/samples/tosca-templates/vnffgd/tosca-vnffg-vnfd1.yaml>`_
* `tosca-vnffg-vnfd2.yaml <https://opendev.org/openstack/tacker/src/branch/master/samples/tosca-templates/vnffgd/tosca-vnffg-vnfd2.yaml>`_
.. code-block:: console
$ openstack vnf descriptor create --vnfd-file tosca-vnffg-vnfd1.yaml VNFD1
$ openstack vnf descriptor create --vnfd-file tosca-vnffg-vnfd2.yaml VNFD2
The VNFs from the created VNFDs are deployed with the name ``VNF1`` and
``VNF2`` according to :doc:`./cli-legacy-vnf`.
.. code-block:: console
$ openstack vnf create --vnfd-name VNFD1 VNF1
$ openstack vnf create --vnfd-name VNFD2 VNF2
A VNFFG should be deployed according to :doc:`./cli-legacy-vnffg`. Before
deploying the VNFFG, a VNFFGD may need to be created according to
:doc:`./cli-legacy-vnffgd`.
CLI reference for SFC Management
--------------------------------
1. List Service Function Chain
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.. code-block:: console
$ openstack vnf chain list
Result:
.. code-block:: console
+--------------------------------------+--------+--------------------------------------+
| ID | Status | NFP ID |
+--------------------------------------+--------+--------------------------------------+
| 89f99c03-a152-413b-bb39-c7618a54b23a | ACTIVE | ed450e71-345d-4dc8-8f32-69e3a697ad56 |
+--------------------------------------+--------+--------------------------------------+
Help:
.. code-block:: console
$ openstack vnf chain list --help
usage: openstack vnf chain list [-h] [-f {csv,json,table,value,yaml}]
[-c COLUMN]
[--quote {all,minimal,none,nonnumeric}]
[--noindent] [--max-width <integer>]
[--fit-width] [--print-empty]
[--sort-column SORT_COLUMN] [--nfp-id NFP_ID]
[--tenant-id TENANT_ID]
List SFC(s) that belong to a given tenant.
optional arguments:
-h, --help show this help message and exit
--nfp-id NFP_ID List SFC(s) with specific nfp id
--tenant-id TENANT_ID
The owner tenant ID or project ID
2. Show Service Function Chain
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.. code-block:: console
$ openstack vnf chain show <SFC: 89f99c03-a152-413b-bb39-c7618a54b23a>
Result:
.. code-block:: console
+-------------+----------------------------------------------------+
| Field | Value |
+-------------+----------------------------------------------------+
| chain | [ |
| | { |
| | "name": "VNF1", |
| | "connection_points": [ |
| | "d4940639-764a-4a62-9b21-6ba2e86498eb" |
| | ], |
| | "sfc_encap": true |
| | }, |
| | { |
| | "name": "VNF2", |
| | "connection_points": [ |
| | "eeda565a-656b-4c86-b2da-c38683ff14e3" |
| | ], |
| | "sfc_encap": true |
| | } |
| | ] |
| id | 89f99c03-a152-413b-bb39-c7618a54b23a |
| instance_id | ba0b5218-1e63-49b2-9112-aba1747f29af |
| nfp_id | ed450e71-345d-4dc8-8f32-69e3a697ad56 |
| path_id | 51 |
| project_id | e77397d2a02c4af1b7d79cef2a406396 |
| status | ACTIVE |
| symmetrical | False |
+-------------+----------------------------------------------------+
Help:
.. code-block:: console
$ openstack vnf chain show --help
usage: openstack vnf chain show [-h] [-f {json,shell,table,value,yaml}]
[-c COLUMN] [--noindent] [--prefix PREFIX]
[--max-width <integer>] [--fit-width]
[--print-empty]
<SFC>
Display SFC details
positional arguments:
<SFC> SFC to display (name or ID)
optional arguments:
-h, --help show this help message and exit

View File

@ -1,939 +0,0 @@
==============
VNF Management
==============
.. warning::
VNF Management commands are deprecated
and will be removed in the first major release after the Tacker server
version 9.0.0 (2023.1 Antelope release).
.. TODO(yoshito-ito): add the other patterns of update.
This document describes how to manage VNF with CLI in Tacker.
Prerequisites
-------------
The following packages should be installed:
* tacker
* python-tackerclient
A default VIM should be registered according to :doc:`./cli-legacy-vim`.
CLI reference for VNF Management
--------------------------------
1. Create VNF
^^^^^^^^^^^^^
Create ``tosca-vnfd-scale.yaml`` file:
* https://opendev.org/openstack/tacker/src/branch/master/samples/tosca-templates/vnfd/tosca-vnfd-scale.yaml
Create a VNFD:
.. code-block:: console
$ openstack vnf descriptor create --vnfd-file \
tosca-vnfd-scale.yaml <VNFD: tosca-vnfd-scale>
Result:
.. code-block:: console
+-----------------+---------------------------------------------------------------------------+
| Field | Value |
+-----------------+---------------------------------------------------------------------------+
| attributes | { |
| | "vnfd": { |
| | "description": "sample-tosca-vnfd-scaling", |
| | "metadata": { |
| | "template_name": "sample-tosca-vnfd-scaling" |
| | }, |
| | "topology_template": { |
| | "node_templates": { |
| | "CP1": { |
| | "properties": { |
| | "anti_spoofing_protection": false, |
| | "management": true, |
| | "order": 0 |
| | }, |
| | "requirements": [ |
| | { |
| | "virtualLink": { |
| | "node": "VL1" |
| | } |
| | }, |
| | { |
| | "virtualBinding": { |
| | "node": "VDU1" |
| | } |
| | } |
| | ], |
| | "type": "tosca.nodes.nfv.CP.Tacker" |
| | }, |
| | "CP2": { |
| | "properties": { |
| | "anti_spoofing_protection": false, |
| | "management": true, |
| | "order": 0 |
| | }, |
| | "requirements": [ |
| | { |
| | "virtualLink": { |
| | "node": "VL1" |
| | } |
| | }, |
| | { |
| | "virtualBinding": { |
| | "node": "VDU2" |
| | } |
| | } |
| | ], |
| | "type": "tosca.nodes.nfv.CP.Tacker" |
| | }, |
| | "VDU1": { |
| | "properties": { |
| | "availability_zone": "nova", |
| | "flavor": "m1.tiny", |
| | "image": "cirros-0.5.2-x86_64-disk", |
| | "mgmt_driver": "noop" |
| | }, |
| | "type": "tosca.nodes.nfv.VDU.Tacker" |
| | }, |
| | "VDU2": { |
| | "properties": { |
| | "availability_zone": "nova", |
| | "flavor": "m1.tiny", |
| | "image": "cirros-0.5.2-x86_64-disk", |
| | "mgmt_driver": "noop" |
| | }, |
| | "type": "tosca.nodes.nfv.VDU.Tacker" |
| | }, |
| | "VL1": { |
| | "properties": { |
| | "network_name": "net_mgmt", |
| | "vendor": "Tacker" |
| | }, |
| | "type": "tosca.nodes.nfv.VL" |
| | } |
| | }, |
| | "policies": [ |
| | { |
| | "SP1": { |
| | "properties": { |
| | "cooldown": 120, |
| | "default_instances": 2, |
| | "increment": 1, |
| | "max_instances": 3, |
| | "min_instances": 1 |
| | }, |
| | "targets": [ |
| | "VDU1", |
| | "VDU2" |
| | ], |
| | "type": "tosca.policies.tacker.Scaling" |
| | } |
| | } |
| | ] |
| | }, |
| | "tosca_definitions_version": "tosca_simple_profile_for_nfv_1_0_0" |
| | } |
| | } |
| created_at | 2020-08-12 04:20:08.908891 |
| description | sample-tosca-vnfd-scaling |
| id | 1001f4e6-2e62-4950-be7a-541963e7e575 |
| name | tosca-vnfd-scale |
| project_id | e77397d2a02c4af1b7d79cef2a406396 |
| service_types | ['vnfd'] |
| template_source | onboarded |
| updated_at | None |
+-----------------+---------------------------------------------------------------------------+
Create the VNF:
.. code-block:: console
$ openstack vnf create --vnfd-name <VNFD_NAME: tosca-vnfd-scale> \
<NAME: vnf-scale>
Result:
.. code-block:: console
+-----------------+---------------------------------------------------+
| Field | Value |
+-----------------+---------------------------------------------------+
| attributes | SP1_res.yaml=heat_template_version: 2013-05-23 |
| | description: Scaling template |
| | resources: |
| | CP1: |
| | type: OS::Neutron::Port |
| | properties: |
| | port_security_enabled: false |
| | network: net_mgmt |
| | CP2: |
| | type: OS::Neutron::Port |
| | properties: |
| | port_security_enabled: false |
| | network: net_mgmt |
| | VDU1: |
| | type: OS::Nova::Server |
| | properties: |
| | flavor: m1.tiny |
| | user_data_format: SOFTWARE_CONFIG |
| | availability_zone: nova |
| | image: cirros-0.5.2-x86_64-disk |
| | config_drive: false |
| | networks: |
| | - port: |
| | get_resource: CP1 |
| | VDU2: |
| | type: OS::Nova::Server |
| | properties: |
| | flavor: m1.tiny |
| | user_data_format: SOFTWARE_CONFIG |
| | availability_zone: nova |
| | image: cirros-0.5.2-x86_64-disk |
| | config_drive: false |
| | networks: |
| | - port: |
| | get_resource: CP2 |
| | VL1: |
| | type: OS::Neutron::Net |
| | outputs: |
| | mgmt_ip-VDU1: |
| | value: |
| | get_attr: |
| | - CP1 |
| | - fixed_ips |
| | - 0 |
| | - ip_address |
| | mgmt_ip-VDU2: |
| | value: |
| | get_attr: |
| | - CP2 |
| | - fixed_ips |
| | - 0 |
| | - ip_address |
| | , heat_template=heat_template_version: 2013-05-23 |
| | description: 'sample-tosca-vnfd-scaling |
| | |
| | ' |
| | parameters: {} |
| | resources: |
| | SP1_scale_out: |
| | type: OS::Heat::ScalingPolicy |
| | properties: |
| | auto_scaling_group_id: |
| | get_resource: SP1_group |
| | adjustment_type: change_in_capacity |
| | scaling_adjustment: 1 |
| | cooldown: 120 |
| | SP1_group: |
| | type: OS::Heat::AutoScalingGroup |
| | properties: |
| | min_size: 1 |
| | max_size: 3 |
| | desired_capacity: 2 |
| | cooldown: 120 |
| | resource: |
| | type: SP1_res.yaml |
| | SP1_scale_in: |
| | type: OS::Heat::ScalingPolicy |
| | properties: |
| | auto_scaling_group_id: |
| | get_resource: SP1_group |
| | adjustment_type: change_in_capacity |
| | scaling_adjustment: -1 |
| | cooldown: 120 |
| | outputs: {} |
| | , scaling_group_names=b'{"SP1": "SP1_group"}' |
| created_at | 2020-08-12 04:22:35.006543 |
| description | sample-tosca-vnfd-scaling |
| error_reason | None |
| id | 9b312a7c-15de-4230-85fb-27da7d37978b |
| instance_id | 0e00ca75-23b7-4ff8-a90f-83c55d756d4f |
| mgmt_ip_address | None |
| name | vnf-scale |
| placement_attr | vim_name=openstack-nfv-vim |
| project_id | e77397d2a02c4af1b7d79cef2a406396 |
| status | PENDING_CREATE |
| updated_at | None |
| vim_id | aacb3c7f-d532-44d9-b8ed-49e2b30114aa |
| vnfd_id | 1001f4e6-2e62-4950-be7a-541963e7e575 |
+-----------------+---------------------------------------------------+
Help:
.. code-block:: console
$ openstack vnf create --help
usage: openstack vnf create [-h] [-f {json,shell,table,value,yaml}]
[-c COLUMN] [--noindent] [--prefix PREFIX]
[--max-width <integer>] [--fit-width]
[--print-empty] [--tenant-id TENANT_ID]
(--vnfd-id VNFD_ID | --vnfd-name VNFD_NAME | --vnfd-template VNFD_TEMPLATE)
[--vim-id VIM_ID | --vim-name VIM_NAME]
[--vim-region-name VIM_REGION_NAME]
[--config-file CONFIG_FILE]
[--param-file PARAM_FILE]
[--description DESCRIPTION]
NAME
Create a new VNF
positional arguments:
NAME Set a name for the VNF
optional arguments:
-h, --help show this help message and exit
--tenant-id TENANT_ID
The owner tenant ID or project ID
--vnfd-id VNFD_ID VNFD ID to use as template to create VNF
--vnfd-name VNFD_NAME
VNFD Name to use as template to create VNF
--vnfd-template VNFD_TEMPLATE
VNFD file to create VNF
--vim-id VIM_ID VIM ID to deploy VNF on specified VIM
--vim-name VIM_NAME VIM name to deploy VNF on specified VIM
--vim-region-name VIM_REGION_NAME
VIM Region to deploy VNF on specified VIM
--config-file CONFIG_FILE
YAML file with VNF configuration
--param-file PARAM_FILE
Specify parameter yaml file
--description DESCRIPTION
Set description for the VNF
2. List VNFs
^^^^^^^^^^^^
.. code-block:: console
$ openstack vnf list
Result (CREATING):
.. code-block:: console
+--------------------------------------+-----------+-----------------+----------------+--------------------------------------+--------------------------------------+
| ID | Name | Mgmt Ip Address | Status | VIM ID | VNFD ID |
+--------------------------------------+-----------+-----------------+----------------+--------------------------------------+--------------------------------------+
| 9b312a7c-15de-4230-85fb-27da7d37978b | vnf-scale | None | PENDING_CREATE | aacb3c7f-d532-44d9-b8ed-49e2b30114aa | 1001f4e6-2e62-4950-be7a-541963e7e575 |
+--------------------------------------+-----------+-----------------+----------------+--------------------------------------+--------------------------------------+
Result (CREATED):
.. code-block:: console
+--------------------------------------+-----------+-----------------------------------------------------------------------------------------------+--------+--------------------------------------+--------------------------------------+
| ID | Name | Mgmt Ip Address | Status | VIM ID | VNFD ID |
+--------------------------------------+-----------+-----------------------------------------------------------------------------------------------+--------+--------------------------------------+--------------------------------------+
| 9b312a7c-15de-4230-85fb-27da7d37978b | vnf-scale | {"VDU2": ["192.168.120.250", "192.168.120.41"], "VDU1": ["192.168.120.69", "192.168.120.92"]} | ACTIVE | aacb3c7f-d532-44d9-b8ed-49e2b30114aa | 1001f4e6-2e62-4950-be7a-541963e7e575 |
+--------------------------------------+-----------+-----------------------------------------------------------------------------------------------+--------+--------------------------------------+--------------------------------------+
Help:
.. code-block:: console
$ openstack vnf list --help
usage: openstack vnf list [-h] [-f {csv,json,table,value,yaml}] [-c COLUMN]
[--quote {all,minimal,none,nonnumeric}] [--noindent]
[--max-width <integer>] [--fit-width]
[--print-empty] [--sort-column SORT_COLUMN]
[--template-source TEMPLATE_SOURCE]
[--vim-id VIM_ID | --vim-name VIM_NAME]
[--vnfd-id VNFD_ID | --vnfd-name VNFD_NAME]
[--tenant-id TENANT_ID] [--long]
List VNF(s) that belong to a given tenant.
optional arguments:
-h, --help show this help message and exit
--template-source TEMPLATE_SOURCE
List VNF with specified template source. Available
options are 'onboarded' (default), 'inline' or 'all'
--vim-id VIM_ID List VNF(s) that belong to a given VIM ID
--vim-name VIM_NAME List VNF(s) that belong to a given VIM Name
--vnfd-id VNFD_ID List VNF(s) that belong to a given VNFD ID
--vnfd-name VNFD_NAME
List VNF(s) that belong to a given VNFD Name
--tenant-id TENANT_ID
The owner tenant ID or project ID
--long List additional fields in output
3. Show VNF
^^^^^^^^^^^
.. code-block:: console
$ openstack vnf show <VNF: vnf-scale>
Result:
.. code-block:: console
+-----------------+-----------------------------------------------------------------------------------------------+
| Field | Value |
+-----------------+-----------------------------------------------------------------------------------------------+
| attributes | SP1_res.yaml=heat_template_version: 2013-05-23 |
| | description: Scaling template |
| | resources: |
| | CP1: |
| | type: OS::Neutron::Port |
| | properties: |
| | port_security_enabled: false |
| | network: net_mgmt |
| | CP2: |
| | type: OS::Neutron::Port |
| | properties: |
| | port_security_enabled: false |
| | network: net_mgmt |
| | VDU1: |
| | type: OS::Nova::Server |
| | properties: |
| | flavor: m1.tiny |
| | user_data_format: SOFTWARE_CONFIG |
| | availability_zone: nova |
| | image: cirros-0.5.2-x86_64-disk |
| | config_drive: false |
| | networks: |
| | - port: |
| | get_resource: CP1 |
| | VDU2: |
| | type: OS::Nova::Server |
| | properties: |
| | flavor: m1.tiny |
| | user_data_format: SOFTWARE_CONFIG |
| | availability_zone: nova |
| | image: cirros-0.5.2-x86_64-disk |
| | config_drive: false |
| | networks: |
| | - port: |
| | get_resource: CP2 |
| | VL1: |
| | type: OS::Neutron::Net |
| | outputs: |
| | mgmt_ip-VDU1: |
| | value: |
| | get_attr: |
| | - CP1 |
| | - fixed_ips |
| | - 0 |
| | - ip_address |
| | mgmt_ip-VDU2: |
| | value: |
| | get_attr: |
| | - CP2 |
| | - fixed_ips |
| | - 0 |
| | - ip_address |
| | , heat_template=heat_template_version: 2013-05-23 |
| | description: 'sample-tosca-vnfd-scaling |
| | |
| | ' |
| | parameters: {} |
| | resources: |
| | SP1_scale_out: |
| | type: OS::Heat::ScalingPolicy |
| | properties: |
| | auto_scaling_group_id: |
| | get_resource: SP1_group |
| | adjustment_type: change_in_capacity |
| | scaling_adjustment: 1 |
| | cooldown: 120 |
| | SP1_group: |
| | type: OS::Heat::AutoScalingGroup |
| | properties: |
| | min_size: 1 |
| | max_size: 3 |
| | desired_capacity: 2 |
| | cooldown: 120 |
| | resource: |
| | type: SP1_res.yaml |
| | SP1_scale_in: |
| | type: OS::Heat::ScalingPolicy |
| | properties: |
| | auto_scaling_group_id: |
| | get_resource: SP1_group |
| | adjustment_type: change_in_capacity |
| | scaling_adjustment: -1 |
| | cooldown: 120 |
| | outputs: {} |
| | , scaling_group_names={"SP1": "SP1_group"} |
| created_at | 2020-08-12 04:22:35 |
| description | sample-tosca-vnfd-scaling |
| error_reason | None |
| id | 9b312a7c-15de-4230-85fb-27da7d37978b |
| instance_id | 0e00ca75-23b7-4ff8-a90f-83c55d756d4f |
| mgmt_ip_address | {"VDU2": ["192.168.120.250", "192.168.120.41"], "VDU1": ["192.168.120.69", "192.168.120.92"]} |
| name | vnf-scale |
| placement_attr | vim_name=openstack-nfv-vim |
| project_id | e77397d2a02c4af1b7d79cef2a406396 |
| status | ACTIVE |
| updated_at | None |
| vim_id | aacb3c7f-d532-44d9-b8ed-49e2b30114aa |
| vnfd_id | 1001f4e6-2e62-4950-be7a-541963e7e575 |
+-----------------+-----------------------------------------------------------------------------------------------+
Help:
.. code-block:: console
$ openstack vnf show --help
usage: openstack vnf show [-h] [-f {json,shell,table,value,yaml}] [-c COLUMN]
[--noindent] [--prefix PREFIX]
[--max-width <integer>] [--fit-width]
[--print-empty]
<VNF>
Display VNF details
positional arguments:
<VNF> VNF to display (name or ID)
optional arguments:
-h, --help show this help message and exit
4. List VNF resource
^^^^^^^^^^^^^^^^^^^^
.. code-block:: console
$ openstack vnf resource list <VNF: vnf-scale>
Result:
.. code-block:: console
+--------------------------------------+---------------+----------------------------+
| ID | Name | Type |
+--------------------------------------+---------------+----------------------------+
| 4abedc36da294bb0a0fa8aaa7f4c01f4 | SP1_scale_out | OS::Heat::ScalingPolicy |
| 0060aff7150d43c5ace293e3cac4552a | SP1_scale_in | OS::Heat::ScalingPolicy |
| 141c0279-1dfb-42a3-b947-4caa3765b27f | SP1_group | OS::Heat::AutoScalingGroup |
| 9f65c3d6-e5ce-4611-8589-82fab1a32d6e | qf4qc4l6qk7o | SP1_res.yaml |
| 9a01d98e-9c01-4e55-ba86-571b61e4ea74 | edilzqp2htvv | SP1_res.yaml |
| 0abc3f38-647e-4b47-8376-06d2e56c4217 | VDU2 | OS::Nova::Server |
| a6374222-ecbc-4eee-96e6-9fe601807c9d | CP2 | OS::Neutron::Port |
| 8d2fc2d9-33ee-440d-9e02-db6083cd5cb6 | VL1 | OS::Neutron::Net |
| 84c78850-8a06-41ab-98a7-371224125beb | VDU1 | OS::Nova::Server |
| 5462f8c1-3292-44af-8661-39e1a7474859 | CP1 | OS::Neutron::Port |
+--------------------------------------+---------------+----------------------------+
Help:
.. code-block:: console
$ openstack vnf resource list --help
usage: openstack vnf resource list [-h] [-f {csv,json,table,value,yaml}]
[-c COLUMN]
[--quote {all,minimal,none,nonnumeric}]
[--noindent] [--max-width <integer>]
[--fit-width] [--print-empty]
[--sort-column SORT_COLUMN]
<VNF>
List resources of a VNF like VDU, CP, etc.
positional arguments:
<VNF> VNF to display (name or ID)
optional arguments:
-h, --help show this help message and exit
5. Update VNF
^^^^^^^^^^^^^
Create ``vnf-config.yaml``:
.. code-block:: console
vdus:
VDU1:
config:
foo: 'bar'
Update VNF with the config file ``vnf-config.yaml``:
.. code-block:: console
$ openstack vnf set --config-file vnf-config.yaml <VNF: vnf-scale>
Result (Updating):
.. code-block:: console
+-----------------+-----------------------------------------------------------------------------------------------+
| Field | Value |
+-----------------+-----------------------------------------------------------------------------------------------+
| attributes | SP1_res.yaml=heat_template_version: 2013-05-23 |
| | description: Scaling template |
| | resources: |
| | CP1: |
| | type: OS::Neutron::Port |
| | properties: |
| | port_security_enabled: false |
| | network: net_mgmt |
| | CP2: |
| | type: OS::Neutron::Port |
| | properties: |
| | port_security_enabled: false |
| | network: net_mgmt |
| | VDU1: |
| | type: OS::Nova::Server |
| | properties: |
| | flavor: m1.tiny |
| | user_data_format: SOFTWARE_CONFIG |
| | availability_zone: nova |
| | image: cirros-0.5.2-x86_64-disk |
| | config_drive: false |
| | networks: |
| | - port: |
| | get_resource: CP1 |
| | VDU2: |
| | type: OS::Nova::Server |
| | properties: |
| | flavor: m1.tiny |
| | user_data_format: SOFTWARE_CONFIG |
| | availability_zone: nova |
| | image: cirros-0.5.2-x86_64-disk |
| | config_drive: false |
| | networks: |
| | - port: |
| | get_resource: CP2 |
| | VL1: |
| | type: OS::Neutron::Net |
| | outputs: |
| | mgmt_ip-VDU1: |
| | value: |
| | get_attr: |
| | - CP1 |
| | - fixed_ips |
| | - 0 |
| | - ip_address |
| | mgmt_ip-VDU2: |
| | value: |
| | get_attr: |
| | - CP2 |
| | - fixed_ips |
| | - 0 |
| | - ip_address |
| | , config=vdus: |
| | VDU1: |
| | config: |
| | foo: bar |
| | , heat_template=heat_template_version: 2013-05-23 |
| | description: 'sample-tosca-vnfd-scaling |
| | |
| | ' |
| | parameters: {} |
| | resources: |
| | SP1_scale_out: |
| | type: OS::Heat::ScalingPolicy |
| | properties: |
| | auto_scaling_group_id: |
| | get_resource: SP1_group |
| | adjustment_type: change_in_capacity |
| | scaling_adjustment: 1 |
| | cooldown: 120 |
| | SP1_group: |
| | type: OS::Heat::AutoScalingGroup |
| | properties: |
| | min_size: 1 |
| | max_size: 3 |
| | desired_capacity: 2 |
| | cooldown: 120 |
| | resource: |
| | type: SP1_res.yaml |
| | SP1_scale_in: |
| | type: OS::Heat::ScalingPolicy |
| | properties: |
| | auto_scaling_group_id: |
| | get_resource: SP1_group |
| | adjustment_type: change_in_capacity |
| | scaling_adjustment: -1 |
| | cooldown: 120 |
| | outputs: {} |
| | , scaling_group_names={"SP1": "SP1_group"} |
| created_at | 2020-08-12 04:22:35 |
| description | sample-tosca-vnfd-scaling |
| error_reason | None |
| id | 9b312a7c-15de-4230-85fb-27da7d37978b |
| instance_id | 0e00ca75-23b7-4ff8-a90f-83c55d756d4f |
| mgmt_ip_address | {"VDU2": ["192.168.120.250", "192.168.120.41"], "VDU1": ["192.168.120.69", "192.168.120.92"]} |
| name | vnf-scale |
| placement_attr | vim_name=openstack-nfv-vim |
| project_id | e77397d2a02c4af1b7d79cef2a406396 |
| status | PENDING_UPDATE |
| updated_at | None |
| vim_id | aacb3c7f-d532-44d9-b8ed-49e2b30114aa |
| vnfd_id | 1001f4e6-2e62-4950-be7a-541963e7e575 |
+-----------------+-----------------------------------------------------------------------------------------------+
Result (Updated):
.. code-block:: console
+-----------------+-----------------------------------------------------------------------------------------------+
| Field | Value |
+-----------------+-----------------------------------------------------------------------------------------------+
| attributes | SP1_res.yaml=heat_template_version: 2013-05-23 |
| | description: Scaling template |
| | resources: |
| | CP1: |
| | type: OS::Neutron::Port |
| | properties: |
| | port_security_enabled: false |
| | network: net_mgmt |
| | CP2: |
| | type: OS::Neutron::Port |
| | properties: |
| | port_security_enabled: false |
| | network: net_mgmt |
| | VDU1: |
| | type: OS::Nova::Server |
| | properties: |
| | flavor: m1.tiny |
| | user_data_format: SOFTWARE_CONFIG |
| | availability_zone: nova |
| | image: cirros-0.5.2-x86_64-disk |
| | config_drive: false |
| | networks: |
| | - port: |
| | get_resource: CP1 |
| | VDU2: |
| | type: OS::Nova::Server |
| | properties: |
| | flavor: m1.tiny |
| | user_data_format: SOFTWARE_CONFIG |
| | availability_zone: nova |
| | image: cirros-0.5.2-x86_64-disk |
| | config_drive: false |
| | networks: |
| | - port: |
| | get_resource: CP2 |
| | VL1: |
| | type: OS::Neutron::Net |
| | outputs: |
| | mgmt_ip-VDU1: |
| | value: |
| | get_attr: |
| | - CP1 |
| | - fixed_ips |
| | - 0 |
| | - ip_address |
| | mgmt_ip-VDU2: |
| | value: |
| | get_attr: |
| | - CP2 |
| | - fixed_ips |
| | - 0 |
| | - ip_address |
| | , config=vdus: |
| | VDU1: |
| | config: |
| | foo: bar |
| | , heat_template=heat_template_version: 2013-05-23 |
| | description: 'sample-tosca-vnfd-scaling |
| | |
| | ' |
| | parameters: {} |
| | resources: |
| | SP1_scale_out: |
| | type: OS::Heat::ScalingPolicy |
| | properties: |
| | auto_scaling_group_id: |
| | get_resource: SP1_group |
| | adjustment_type: change_in_capacity |
| | scaling_adjustment: 1 |
| | cooldown: 120 |
| | SP1_group: |
| | type: OS::Heat::AutoScalingGroup |
| | properties: |
| | min_size: 1 |
| | max_size: 3 |
| | desired_capacity: 2 |
| | cooldown: 120 |
| | resource: |
| | type: SP1_res.yaml |
| | SP1_scale_in: |
| | type: OS::Heat::ScalingPolicy |
| | properties: |
| | auto_scaling_group_id: |
| | get_resource: SP1_group |
| | adjustment_type: change_in_capacity |
| | scaling_adjustment: -1 |
| | cooldown: 120 |
| | outputs: {} |
| | , scaling_group_names={"SP1": "SP1_group"} |
| created_at | 2020-08-12 04:22:35 |
| description | sample-tosca-vnfd-scaling |
| error_reason | None |
| id | 9b312a7c-15de-4230-85fb-27da7d37978b |
| instance_id | 0e00ca75-23b7-4ff8-a90f-83c55d756d4f |
| mgmt_ip_address | {"VDU2": ["192.168.120.250", "192.168.120.41"], "VDU1": ["192.168.120.69", "192.168.120.92"]} |
| name | vnf-scale |
| placement_attr | vim_name=openstack-nfv-vim |
| project_id | e77397d2a02c4af1b7d79cef2a406396 |
| status | ACTIVE |
| updated_at | 2020-08-12 05:06:13 |
| vim_id | aacb3c7f-d532-44d9-b8ed-49e2b30114aa |
| vnfd_id | 1001f4e6-2e62-4950-be7a-541963e7e575 |
+-----------------+-----------------------------------------------------------------------------------------------+
Help:
.. code-block:: console
$ openstack vnf set --help
usage: openstack vnf set [-h] [-f {json,shell,table,value,yaml}] [-c COLUMN]
[--noindent] [--prefix PREFIX]
[--max-width <integer>] [--fit-width] [--print-empty]
(--config-file CONFIG_FILE | --config CONFIG | --param-file PARAM_FILE)
<VNF>
Update a given VNF.
positional arguments:
<VNF> VNF to update (name or ID)
optional arguments:
-h, --help show this help message and exit
--config-file CONFIG_FILE
YAML file with VNF configuration
--config CONFIG YAML data with VNF configuration
--param-file PARAM_FILE
YAML file with VNF parameter
.. note:: When the update VNF operation executed, Tacker ask Heat to update
the stack and the change is reflected immediately, and the VMs may
reboot.
6. Scale VNF
^^^^^^^^^^^^
Scale out the VNF:
.. code-block:: console
$ openstack vnf scale --scaling-policy-name <SCALING_POLICY_NAME: SP1> \
--scaling-type out <VNF: vnf-scale>
Check the VMs scaled out:
.. code-block:: console
$ openstack server list
+--------------------------------------+-------------------------------------------------------+--------+--------------------------+--------------------------+---------+
| ID | Name | Status | Networks | Image | Flavor |
+--------------------------------------+-------------------------------------------------------+--------+--------------------------+--------------------------+---------+
| dfb04024-666c-4b82-94eb-12766851cfb7 | vn-6okzhe-k6n2umsyoizd-ex2uwxma2tlt-VDU2-ljontrce3bd7 | ACTIVE | net_mgmt=192.168.120.8 | cirros-0.5.2-x86_64-disk | m1.tiny |
| e48999e8-5f65-43e4-b8a5-e81e358e2e21 | vn-6okzhe-k6n2umsyoizd-ex2uwxma2tlt-VDU1-3dcglaxrwyzl | ACTIVE | net_mgmt=192.168.120.82 | cirros-0.5.2-x86_64-disk | m1.tiny |
| 0abc3f38-647e-4b47-8376-06d2e56c4217 | vn-6okzhe-edilzqp2htvv-ibfssgztffjf-VDU2-43gjj46b2nrr | ACTIVE | net_mgmt=192.168.120.41 | cirros-0.5.2-x86_64-disk | m1.tiny |
| 43840dde-1ec3-4da6-aeab-afca96299a9f | vn-6okzhe-qf4qc4l6qk7o-tukln5mwcokq-VDU2-zd7nq3smgjdr | ACTIVE | net_mgmt=192.168.120.250 | cirros-0.5.2-x86_64-disk | m1.tiny |
| 84c78850-8a06-41ab-98a7-371224125beb | vn-6okzhe-edilzqp2htvv-ibfssgztffjf-VDU1-qvv2vv37f65t | ACTIVE | net_mgmt=192.168.120.92 | cirros-0.5.2-x86_64-disk | m1.tiny |
| 9318b9fe-d655-4088-9910-b5f7481ed059 | vn-6okzhe-qf4qc4l6qk7o-tukln5mwcokq-VDU1-omaexvftqjee | ACTIVE | net_mgmt=192.168.120.69 | cirros-0.5.2-x86_64-disk | m1.tiny |
+--------------------------------------+-------------------------------------------------------+--------+--------------------------+--------------------------+---------+
Scale in the VNF:
.. code-block:: console
$ openstack vnf scale --scaling-policy-name <SCALING_POLICY_NAME: SP1> \
--scaling-type in <VNF: vnf-scale>
Check the VMs scaled in:
.. code-block:: console
$ openstack server list
+--------------------------------------+-------------------------------------------------------+--------+--------------------------+--------------------------+---------+
| ID | Name | Status | Networks | Image | Flavor |
+--------------------------------------+-------------------------------------------------------+--------+--------------------------+--------------------------+---------+
| dfb04024-666c-4b82-94eb-12766851cfb7 | vn-6okzhe-k6n2umsyoizd-ex2uwxma2tlt-VDU2-ljontrce3bd7 | ACTIVE | net_mgmt=192.168.120.8 | cirros-0.5.2-x86_64-disk | m1.tiny |
| e48999e8-5f65-43e4-b8a5-e81e358e2e21 | vn-6okzhe-k6n2umsyoizd-ex2uwxma2tlt-VDU1-3dcglaxrwyzl | ACTIVE | net_mgmt=192.168.120.82 | cirros-0.5.2-x86_64-disk | m1.tiny |
| 43840dde-1ec3-4da6-aeab-afca96299a9f | vn-6okzhe-qf4qc4l6qk7o-tukln5mwcokq-VDU2-zd7nq3smgjdr | ACTIVE | net_mgmt=192.168.120.250 | cirros-0.5.2-x86_64-disk | m1.tiny |
| 9318b9fe-d655-4088-9910-b5f7481ed059 | vn-6okzhe-qf4qc4l6qk7o-tukln5mwcokq-VDU1-omaexvftqjee | ACTIVE | net_mgmt=192.168.120.69 | cirros-0.5.2-x86_64-disk | m1.tiny |
+--------------------------------------+-------------------------------------------------------+--------+--------------------------+--------------------------+---------+
Help:
.. code-block:: console
$ openstack vnf scale --help
usage: openstack vnf scale [-h] [--scaling-policy-name SCALING_POLICY_NAME]
[--scaling-type SCALING_TYPE]
<VNF>
Scale a VNF.
positional arguments:
<VNF> VNF to scale (name or ID)
optional arguments:
-h, --help show this help message and exit
--scaling-policy-name SCALING_POLICY_NAME
VNF policy name used to scale
--scaling-type SCALING_TYPE
VNF scaling type, it could be either "out" or "in"
7. Delete VNFs
^^^^^^^^^^^^^^
.. code-block:: console
$ openstack vnf delete <VNF: vnf-scale>
Result:
.. code-block:: console
All specified vnf(s) deleted successfully
Help:
.. code-block:: console
$ openstack vnf delete --help
usage: openstack vnf delete [-h] [--force] <VNF> [<VNF> ...]
Delete VNF(s).
positional arguments:
<VNF> VNF(s) to delete (name or ID)
optional arguments:
-h, --help show this help message and exit
--force Force delete VNF instance

View File

@ -1,575 +0,0 @@
================================
VNF Descriptor (VNFD) Management
================================
.. warning::
VNF Descriptor (VNFD) Management commands are deprecated
and will be removed in the first major release after the Tacker server
version 9.0.0 (2023.1 Antelope release).
The behavioural and deployment information of a VNF in Tacker is defined in a
template known as VNF Descriptor (VNFD). The template is based on TOSCA
standards and is written in YAML.
This document describes how to manage VNFD with CLI in Tacker.
Prerequisites
-------------
The following packages should be installed:
* tacker
* python-tackerclient
CLI reference for VNFD Management
---------------------------------
1. Create VNF Descriptor
^^^^^^^^^^^^^^^^^^^^^^^^
Create ``tosca-vnfd-hello-world.yaml`` file:
* https://opendev.org/openstack/tacker/src/branch/master/samples/tosca-templates/vnfd/tosca-vnfd-hello-world.yaml
Create a VNFD:
.. code-block:: console
$ openstack vnf descriptor create --vnfd-file \
tosca-vnfd-hello-world.yaml <NAME: tosca-vnfd-hello-world>
Result:
.. code-block:: console
+-----------------+---------------------------------------------------------------------------+
| Field | Value |
+-----------------+---------------------------------------------------------------------------+
| attributes | { |
| | "vnfd": { |
| | "description": "Demo example", |
| | "metadata": { |
| | "template_name": "sample-tosca-vnfd" |
| | }, |
| | "topology_template": { |
| | "node_templates": { |
| | "CP1": { |
| | "properties": { |
| | "anti_spoofing_protection": false, |
| | "management": true, |
| | "order": 0 |
| | }, |
| | "requirements": [ |
| | { |
| | "virtualLink": { |
| | "node": "VL1" |
| | } |
| | }, |
| | { |
| | "virtualBinding": { |
| | "node": "VDU1" |
| | } |
| | } |
| | ], |
| | "type": "tosca.nodes.nfv.CP.Tacker" |
| | }, |
| | "CP2": { |
| | "properties": { |
| | "anti_spoofing_protection": false, |
| | "order": 1 |
| | }, |
| | "requirements": [ |
| | { |
| | "virtualLink": { |
| | "node": "VL2" |
| | } |
| | }, |
| | { |
| | "virtualBinding": { |
| | "node": "VDU1" |
| | } |
| | } |
| | ], |
| | "type": "tosca.nodes.nfv.CP.Tacker" |
| | }, |
| | "CP3": { |
| | "properties": { |
| | "anti_spoofing_protection": false, |
| | "order": 2 |
| | }, |
| | "requirements": [ |
| | { |
| | "virtualLink": { |
| | "node": "VL3" |
| | } |
| | }, |
| | { |
| | "virtualBinding": { |
| | "node": "VDU1" |
| | } |
| | } |
| | ], |
| | "type": "tosca.nodes.nfv.CP.Tacker" |
| | }, |
| | "VDU1": { |
| | "capabilities": { |
| | "nfv_compute": { |
| | "properties": { |
| | "disk_size": "1 GB", |
| | "mem_size": "512 MB", |
| | "num_cpus": 1 |
| | } |
| | } |
| | }, |
| | "properties": { |
| | "availability_zone": "nova", |
| | "config": "param0: key1\nparam1: key2\n", |
| | "image": "cirros-0.5.2-x86_64-disk", |
| | "mgmt_driver": "noop" |
| | }, |
| | "type": "tosca.nodes.nfv.VDU.Tacker" |
| | }, |
| | "VL1": { |
| | "properties": { |
| | "network_name": "net_mgmt", |
| | "vendor": "Tacker" |
| | }, |
| | "type": "tosca.nodes.nfv.VL" |
| | }, |
| | "VL2": { |
| | "properties": { |
| | "network_name": "net0", |
| | "vendor": "Tacker" |
| | }, |
| | "type": "tosca.nodes.nfv.VL" |
| | }, |
| | "VL3": { |
| | "properties": { |
| | "network_name": "net1", |
| | "vendor": "Tacker" |
| | }, |
| | "type": "tosca.nodes.nfv.VL" |
| | } |
| | } |
| | }, |
| | "tosca_definitions_version": "tosca_simple_profile_for_nfv_1_0_0" |
| | } |
| | } |
| created_at | 2020-08-12 03:28:04.171956 |
| description | Demo example |
| id | 57f46bdb-c5b5-448e-bf98-df3d7d94038e |
| name | tosca-vnfd-hello-world |
| project_id | e77397d2a02c4af1b7d79cef2a406396 |
| service_types | ['vnfd'] |
| template_source | onboarded |
| updated_at | None |
+-----------------+---------------------------------------------------------------------------+
Help:
.. code-block:: console
$ openstack vnf descriptor create --help
usage: openstack vnf descriptor create [-h] [-f {json,shell,table,value,yaml}]
[-c COLUMN] [--noindent]
[--prefix PREFIX]
[--max-width <integer>] [--fit-width]
[--print-empty] [--tenant-id TENANT_ID]
--vnfd-file VNFD_FILE
[--description DESCRIPTION]
NAME
Create a new VNFD
positional arguments:
NAME Name for VNFD
optional arguments:
-h, --help show this help message and exit
--tenant-id TENANT_ID
The owner tenant ID or project ID
--vnfd-file VNFD_FILE
YAML file with VNFD parameters
--description DESCRIPTION
Set a description for the VNFD
2. List VNF Descriptors
^^^^^^^^^^^^^^^^^^^^^^^
.. code-block:: console
$ openstack vnf descriptor list
Result:
.. code-block:: console
+--------------------------------------+------------------------+-----------------+--------------+
| ID | Name | Template_Source | Description |
+--------------------------------------+------------------------+-----------------+--------------+
| 57f46bdb-c5b5-448e-bf98-df3d7d94038e | tosca-vnfd-hello-world | onboarded | Demo example |
+--------------------------------------+------------------------+-----------------+--------------+
Help:
.. code-block:: console
$ openstack vnf descriptor list --help
usage: openstack vnf descriptor list [-h] [-f {csv,json,table,value,yaml}]
[-c COLUMN]
[--quote {all,minimal,none,nonnumeric}]
[--noindent] [--max-width <integer>]
[--fit-width] [--print-empty]
[--sort-column SORT_COLUMN]
[--template-source TEMPLATE_SOURCE]
List (VNFD)s that belong to a given tenant.
optional arguments:
-h, --help show this help message and exit
--template-source TEMPLATE_SOURCE
List VNFD with specified template source. Available
options are 'onboarded' (default), 'inline' or 'all'
3. Show VNF Descriptor
^^^^^^^^^^^^^^^^^^^^^^
.. code-block:: console
$ openstack vnf descriptor show <VNFD: tosca-vnfd-hello-world>
Result:
.. code-block:: console
+-----------------+---------------------------------------------------------------------------+
| Field | Value |
+-----------------+---------------------------------------------------------------------------+
| attributes | { |
| | "vnfd": { |
| | "description": "Demo example", |
| | "metadata": { |
| | "template_name": "sample-tosca-vnfd" |
| | }, |
| | "topology_template": { |
| | "node_templates": { |
| | "CP1": { |
| | "properties": { |
| | "anti_spoofing_protection": false, |
| | "management": true, |
| | "order": 0 |
| | }, |
| | "requirements": [ |
| | { |
| | "virtualLink": { |
| | "node": "VL1" |
| | } |
| | }, |
| | { |
| | "virtualBinding": { |
| | "node": "VDU1" |
| | } |
| | } |
| | ], |
| | "type": "tosca.nodes.nfv.CP.Tacker" |
| | }, |
| | "CP2": { |
| | "properties": { |
| | "anti_spoofing_protection": false, |
| | "order": 1 |
| | }, |
| | "requirements": [ |
| | { |
| | "virtualLink": { |
| | "node": "VL2" |
| | } |
| | }, |
| | { |
| | "virtualBinding": { |
| | "node": "VDU1" |
| | } |
| | } |
| | ], |
| | "type": "tosca.nodes.nfv.CP.Tacker" |
| | }, |
| | "CP3": { |
| | "properties": { |
| | "anti_spoofing_protection": false, |
| | "order": 2 |
| | }, |
| | "requirements": [ |
| | { |
| | "virtualLink": { |
| | "node": "VL3" |
| | } |
| | }, |
| | { |
| | "virtualBinding": { |
| | "node": "VDU1" |
| | } |
| | } |
| | ], |
| | "type": "tosca.nodes.nfv.CP.Tacker" |
| | }, |
| | "VDU1": { |
| | "capabilities": { |
| | "nfv_compute": { |
| | "properties": { |
| | "disk_size": "1 GB", |
| | "mem_size": "512 MB", |
| | "num_cpus": 1 |
| | } |
| | } |
| | }, |
| | "properties": { |
| | "availability_zone": "nova", |
| | "config": "param0: key1\nparam1: key2\n", |
| | "image": "cirros-0.5.2-x86_64-disk", |
| | "mgmt_driver": "noop" |
| | }, |
| | "type": "tosca.nodes.nfv.VDU.Tacker" |
| | }, |
| | "VL1": { |
| | "properties": { |
| | "network_name": "net_mgmt", |
| | "vendor": "Tacker" |
| | }, |
| | "type": "tosca.nodes.nfv.VL" |
| | }, |
| | "VL2": { |
| | "properties": { |
| | "network_name": "net0", |
| | "vendor": "Tacker" |
| | }, |
| | "type": "tosca.nodes.nfv.VL" |
| | }, |
| | "VL3": { |
| | "properties": { |
| | "network_name": "net1", |
| | "vendor": "Tacker" |
| | }, |
| | "type": "tosca.nodes.nfv.VL" |
| | } |
| | } |
| | }, |
| | "tosca_definitions_version": "tosca_simple_profile_for_nfv_1_0_0" |
| | } |
| | } |
| created_at | 2020-08-12 03:28:04 |
| description | Demo example |
| id | 57f46bdb-c5b5-448e-bf98-df3d7d94038e |
| name | tosca-vnfd-hello-world |
| project_id | e77397d2a02c4af1b7d79cef2a406396 |
| service_types | ['vnfd'] |
| template_source | onboarded |
| updated_at | None |
+-----------------+---------------------------------------------------------------------------+
Help:
.. code-block:: console
$ openstack vnf descriptor show --help
usage: openstack vnf descriptor show [-h] [-f {json,shell,table,value,yaml}]
[-c COLUMN] [--noindent]
[--prefix PREFIX] [--max-width <integer>]
[--fit-width] [--print-empty]
<VNFD>
Display VNFD details
positional arguments:
<VNFD> VNFD to display (name or ID)
optional arguments:
-h, --help show this help message and exit
4. Show VNF Descriptor template
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.. code-block:: console
$ openstack vnf descriptor template show <VNFD: tosca-vnfd-hello-world>
Result:
.. code-block:: console
+------------+---------------------------------------------------------------------------+
| Field | Value |
+------------+---------------------------------------------------------------------------+
| attributes | { |
| | "vnfd": { |
| | "description": "Demo example", |
| | "metadata": { |
| | "template_name": "sample-tosca-vnfd" |
| | }, |
| | "topology_template": { |
| | "node_templates": { |
| | "CP1": { |
| | "properties": { |
| | "anti_spoofing_protection": false, |
| | "management": true, |
| | "order": 0 |
| | }, |
| | "requirements": [ |
| | { |
| | "virtualLink": { |
| | "node": "VL1" |
| | } |
| | }, |
| | { |
| | "virtualBinding": { |
| | "node": "VDU1" |
| | } |
| | } |
| | ], |
| | "type": "tosca.nodes.nfv.CP.Tacker" |
| | }, |
| | "CP2": { |
| | "properties": { |
| | "anti_spoofing_protection": false, |
| | "order": 1 |
| | }, |
| | "requirements": [ |
| | { |
| | "virtualLink": { |
| | "node": "VL2" |
| | } |
| | }, |
| | { |
| | "virtualBinding": { |
| | "node": "VDU1" |
| | } |
| | } |
| | ], |
| | "type": "tosca.nodes.nfv.CP.Tacker" |
| | }, |
| | "CP3": { |
| | "properties": { |
| | "anti_spoofing_protection": false, |
| | "order": 2 |
| | }, |
| | "requirements": [ |
| | { |
| | "virtualLink": { |
| | "node": "VL3" |
| | } |
| | }, |
| | { |
| | "virtualBinding": { |
| | "node": "VDU1" |
| | } |
| | } |
| | ], |
| | "type": "tosca.nodes.nfv.CP.Tacker" |
| | }, |
| | "VDU1": { |
| | "capabilities": { |
| | "nfv_compute": { |
| | "properties": { |
| | "disk_size": "1 GB", |
| | "mem_size": "512 MB", |
| | "num_cpus": 1 |
| | } |
| | } |
| | }, |
| | "properties": { |
| | "availability_zone": "nova", |
| | "config": "param0: key1\nparam1: key2\n", |
| | "image": "cirros-0.5.2-x86_64-disk", |
| | "mgmt_driver": "noop" |
| | }, |
| | "type": "tosca.nodes.nfv.VDU.Tacker" |
| | }, |
| | "VL1": { |
| | "properties": { |
| | "network_name": "net_mgmt", |
| | "vendor": "Tacker" |
| | }, |
| | "type": "tosca.nodes.nfv.VL" |
| | }, |
| | "VL2": { |
| | "properties": { |
| | "network_name": "net0", |
| | "vendor": "Tacker" |
| | }, |
| | "type": "tosca.nodes.nfv.VL" |
| | }, |
| | "VL3": { |
| | "properties": { |
| | "network_name": "net1", |
| | "vendor": "Tacker" |
| | }, |
| | "type": "tosca.nodes.nfv.VL" |
| | } |
| | } |
| | }, |
| | "tosca_definitions_version": "tosca_simple_profile_for_nfv_1_0_0" |
| | } |
| | } |
+------------+---------------------------------------------------------------------------+
Help:
.. code-block:: console
$ openstack vnf descriptor template show --help
usage: openstack vnf descriptor template show [-h]
[-f {json,shell,table,value,yaml}]
[-c COLUMN] [--noindent]
[--prefix PREFIX]
[--max-width <integer>]
[--fit-width] [--print-empty]
<VNFD>
Display VNFD Template details
positional arguments:
<VNFD> VNFD to display (name or ID)
optional arguments:
-h, --help show this help message and exit
5. Delete VNF Descriptors
^^^^^^^^^^^^^^^^^^^^^^^^^
.. code-block:: console
$ openstack vnf descriptor delete <VNFD: tosca-vnfd-hello-world>
Result:
.. code-block:: console
All specified vnfd(s) deleted successfully
Help:
.. code-block:: console
$ openstack vnf descriptor delete --help
usage: openstack vnf descriptor delete [-h] <VNFD> [<VNFD> ...]
Delete VNFD(s).
positional arguments:
<VNFD> VNFD(s) to delete (name or ID)
optional arguments:
-h, --help show this help message and exit

View File

@ -1,578 +0,0 @@
=======================================
VNF Forwarding Graph (VNFFG) Management
=======================================
.. warning::
VNF Forwarding Graph (VNFFG) Management commands are deprecated
and will be removed in the first major release after the Tacker server
version 9.0.0 (2023.1 Antelope release).
.. TODO(yoshito-ito): Update "Update VNFFG" operation after fixing the bug:
* https://bugs.launchpad.net/python-tackerclient/+bug/1892152
Prerequisites
-------------
The following packages should be installed:
* tacker
* python-tackerclient
A default VIM should be registered according to :doc:`./cli-legacy-vim`.
The following VNFDs are created with the name ``VNFD1`` and ``VNFD2``
according to :doc:`./cli-legacy-vnfd`.
* `tosca-vnffg-vnfd1.yaml <https://opendev.org/openstack/tacker/src/branch/master/samples/tosca-templates/vnffgd/tosca-vnffg-vnfd1.yaml>`_
* `tosca-vnffg-vnfd2.yaml <https://opendev.org/openstack/tacker/src/branch/master/samples/tosca-templates/vnffgd/tosca-vnffg-vnfd2.yaml>`_
.. code-block:: console
$ openstack vnf descriptor create --vnfd-file tosca-vnffg-vnfd1.yaml VNFD1
$ openstack vnf descriptor create --vnfd-file tosca-vnffg-vnfd2.yaml VNFD2
The VNFs from the created VNFDs are deployed with the name ``VNF1`` and
``VNF2`` according to :doc:`./cli-legacy-vnf`.
.. code-block:: console
$ openstack vnf create --vnfd-name VNFD1 VNF1
$ openstack vnf create --vnfd-name VNFD2 VNF2
CLI reference for VNFFG Management
----------------------------------
1. Create VNF Forwarding Graph
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Check the source port ID ``CP12`` of VNF1:
.. code-block:: console
$ openstack port list -c ID -c Name | grep CP12
| d4940639-764a-4a62-9b21-6ba2e86498eb | VNF1_4ffb436f-7f2c-4df1-96c4-38e9208261fd-CP12-pj3nwzbv2wt2 |
Create and update `tosca-vnffgd-sample.yaml <https://opendev.org/openstack/tacker/src/branch/master/samples/tosca-templates/vnffgd/tosca-vnffgd-sample.yaml>`_:
.. code-block:: console
(Before)
network_src_port_id: 14ad4f29-629f-4b97-8bc8-86e96cb49974
(After)
network_src_port_id: <ID: d4940639-764a-4a62-9b21-6ba2e86498eb>
.. note:: The appropriate port ID should be used according to your environment.
Create the VNFFGD:
.. code-block:: console
$ openstack vnf graph descriptor create --vnffgd-file \
tosca-vnffgd-sample.yaml <NAME: tosca-vnffgd-sample>
Create the VNFFG:
.. code-block:: console
$ openstack vnf graph create --vnffgd-name <VNFFGD: tosca-vnffgd-sample> \
<NAME: tosca-vnffg-sample>
Result:
.. code-block:: console
+------------------+--------------------------------------------------------------------------------------------------------+
| Field | Value |
+------------------+--------------------------------------------------------------------------------------------------------+
| attributes | { |
| | "vnffgd": { |
| | "tosca_definitions_version": "tosca_simple_profile_for_nfv_1_0_0", |
| | "description": "Sample VNFFG template", |
| | "topology_template": { |
| | "node_templates": { |
| | "Forwarding_path1": { |
| | "type": "tosca.nodes.nfv.FP.TackerV2", |
| | "description": "creates path (CP12->CP22)", |
| | "properties": { |
| | "id": 51, |
| | "policy": { |
| | "type": "ACL", |
| | "criteria": [ |
| | { |
| | "name": "block_tcp", |
| | "classifier": { |
| | "network_src_port_id": "d4940639-764a-4a62-9b21-6ba2e86498eb", |
| | "destination_port_range": "80-1024", |
| | "ip_proto": 6, |
| | "ip_dst_prefix": "10.10.0.5/24" |
| | } |
| | } |
| | ] |
| | }, |
| | "path": [ |
| | { |
| | "forwarder": "VNFD1", |
| | "capability": "CP12", |
| | "sfc_encap": true |
| | }, |
| | { |
| | "forwarder": "VNFD2", |
| | "capability": "CP22", |
| | "sfc_encap": true |
| | } |
| | ] |
| | } |
| | } |
| | }, |
| | "groups": { |
| | "VNFFG1": { |
| | "type": "tosca.groups.nfv.VNFFG", |
| | "description": "HTTP to Corporate Net", |
| | "properties": { |
| | "vendor": "tacker", |
| | "version": 1.0, |
| | "number_of_endpoints": 2, |
| | "dependent_virtual_link": [ |
| | "VL12", |
| | "VL22" |
| | ], |
| | "connection_point": [ |
| | "CP12", |
| | "CP22" |
| | ], |
| | "constituent_vnfs": [ |
| | "VNFD1", |
| | "VNFD2" |
| | ] |
| | }, |
| | "members": [ |
| | "Forwarding_path1" |
| | ] |
| | } |
| | } |
| | }, |
| | "imports": [ |
| | "/opt/stack/tacker/tacker/tosca/lib/tacker_defs.yaml", |
| | "/opt/stack/tacker/tacker/tosca/lib/tacker_nfv_defs.yaml" |
| | ] |
| | } |
| | } |
| description | Sample VNFFG template |
| forwarding_paths | fc518827-eb74-4cd5-972b-943f80720065 |
| id | b6669b6a-1a3c-40b6-a8c2-28ce3f0bd9bb |
| name | tosca-vnffg-sample |
| ns_id | None |
| project_id | e77397d2a02c4af1b7d79cef2a406396 |
| status | PENDING_CREATE |
| vnf_mapping | VNFD1=4ffb436f-7f2c-4df1-96c4-38e9208261fd, VNFD2=83fb8124-b475-400f-b0eb-f2b6741eeedc |
| vnffgd_id | f19a36f9-3768-4846-8972-84960d328156 |
+------------------+--------------------------------------------------------------------------------------------------------+
Help:
.. code-block:: console
$ openstack vnf graph create --help
usage: openstack vnf graph create [-h] [-f {json,shell,table,value,yaml}]
[-c COLUMN] [--noindent] [--prefix PREFIX]
[--max-width <integer>] [--fit-width]
[--print-empty] [--tenant-id TENANT_ID]
(--vnffgd-id VNFFGD_ID | --vnffgd-name VNFFGD_NAME | --vnffgd-template VNFFGD_TEMPLATE)
[--vnf-mapping VNF_MAPPING] [--symmetrical]
[--param-file PARAM_FILE]
[--description DESCRIPTION]
NAME
Create a new VNFFG.
positional arguments:
NAME Set a name for the VNFFG
optional arguments:
-h, --help show this help message and exit
--tenant-id TENANT_ID
The owner tenant ID
--vnffgd-id VNFFGD_ID
VNFFGD ID to use as template to create VNFFG
--vnffgd-name VNFFGD_NAME
VNFFGD Name to use as template to create VNFFG
--vnffgd-template VNFFGD_TEMPLATE
VNFFGD file to create VNFFG
--vnf-mapping VNF_MAPPING
List of logical VNFD name to VNF instance name
mapping. Example: VNF1:my_vnf1,VNF2:my_vnf2
--symmetrical Should a reverse path be created for the NFP (True or
False)
--param-file PARAM_FILE
YAML file with specific VNFFG parameters
--description DESCRIPTION
Set a description for the VNFFG
2. List VNF Forwarding Graphs
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.. code-block:: console
$ openstack vnf graph list
Result:
.. code-block:: console
+--------------------------------------+--------------------+-------+--------------------------------------+--------+
| ID | Name | NS ID | VNFFGD ID | Status |
+--------------------------------------+--------------------+-------+--------------------------------------+--------+
| b6669b6a-1a3c-40b6-a8c2-28ce3f0bd9bb | tosca-vnffg-sample | None | f19a36f9-3768-4846-8972-84960d328156 | ACTIVE |
+--------------------------------------+--------------------+-------+--------------------------------------+--------+
Help:
.. code-block:: console
$ openstack vnf graph list --help
usage: openstack vnf graph list [-h] [-f {csv,json,table,value,yaml}]
[-c COLUMN]
[--quote {all,minimal,none,nonnumeric}]
[--noindent] [--max-width <integer>]
[--fit-width] [--print-empty]
[--sort-column SORT_COLUMN] [--long]
List VNFFG(s) that belong to a given tenant.
optional arguments:
-h, --help show this help message and exit
--long List additional fields in output
output formatters:
output formatter options
-f {csv,json,table,value,yaml}, --format {csv,json,table,value,yaml}
the output format, defaults to table
-c COLUMN, --column COLUMN
specify the column(s) to include, can be repeated to
show multiple columns
--sort-column SORT_COLUMN
specify the column(s) to sort the data (columns
specified first have a priority, non-existing columns
are ignored), can be repeated
3. Show VNF Forwarding Graph
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.. code-block:: console
$ openstack vnf graph show <VNFFG: tosca-vnffg-sample>
Result:
.. code-block:: console
+------------------+--------------------------------------------------------------------------------------------------------+
| Field | Value |
+------------------+--------------------------------------------------------------------------------------------------------+
| attributes | { |
| | "vnffgd": { |
| | "tosca_definitions_version": "tosca_simple_profile_for_nfv_1_0_0", |
| | "description": "Sample VNFFG template", |
| | "topology_template": { |
| | "node_templates": { |
| | "Forwarding_path1": { |
| | "type": "tosca.nodes.nfv.FP.TackerV2", |
| | "description": "creates path (CP12->CP22)", |
| | "properties": { |
| | "id": 51, |
| | "policy": { |
| | "type": "ACL", |
| | "criteria": [ |
| | { |
| | "name": "block_tcp", |
| | "classifier": { |
| | "network_src_port_id": "d4940639-764a-4a62-9b21-6ba2e86498eb", |
| | "destination_port_range": "80-1024", |
| | "ip_proto": 6, |
| | "ip_dst_prefix": "10.10.0.5/24" |
| | } |
| | } |
| | ] |
| | }, |
| | "path": [ |
| | { |
| | "forwarder": "VNFD1", |
| | "capability": "CP12", |
| | "sfc_encap": true |
| | }, |
| | { |
| | "forwarder": "VNFD2", |
| | "capability": "CP22", |
| | "sfc_encap": true |
| | } |
| | ] |
| | } |
| | } |
| | }, |
| | "groups": { |
| | "VNFFG1": { |
| | "type": "tosca.groups.nfv.VNFFG", |
| | "description": "HTTP to Corporate Net", |
| | "properties": { |
| | "vendor": "tacker", |
| | "version": 1.0, |
| | "number_of_endpoints": 2, |
| | "dependent_virtual_link": [ |
| | "VL12", |
| | "VL22" |
| | ], |
| | "connection_point": [ |
| | "CP12", |
| | "CP22" |
| | ], |
| | "constituent_vnfs": [ |
| | "VNFD1", |
| | "VNFD2" |
| | ] |
| | }, |
| | "members": [ |
| | "Forwarding_path1" |
| | ] |
| | } |
| | } |
| | }, |
| | "imports": [ |
| | "/opt/stack/tacker/tacker/tosca/lib/tacker_defs.yaml", |
| | "/opt/stack/tacker/tacker/tosca/lib/tacker_nfv_defs.yaml" |
| | ] |
| | } |
| | } |
| description | Sample VNFFG template |
| forwarding_paths | fc518827-eb74-4cd5-972b-943f80720065 |
| id | b6669b6a-1a3c-40b6-a8c2-28ce3f0bd9bb |
| name | tosca-vnffg-sample |
| ns_id | None |
| project_id | e77397d2a02c4af1b7d79cef2a406396 |
| status | ACTIVE |
| vnf_mapping | VNFD1=4ffb436f-7f2c-4df1-96c4-38e9208261fd, VNFD2=83fb8124-b475-400f-b0eb-f2b6741eeedc |
| vnffgd_id | f19a36f9-3768-4846-8972-84960d328156 |
+------------------+--------------------------------------------------------------------------------------------------------+
Help:
.. code-block:: console
$ openstack vnf graph show --help
usage: openstack vnf graph show [-h] [-f {json,shell,table,value,yaml}]
[-c COLUMN] [--noindent] [--prefix PREFIX]
[--max-width <integer>] [--fit-width]
[--print-empty]
<VNFFG>
Display VNFFG details
positional arguments:
<VNFFG> VNFFG to display (name or ID)
optional arguments:
-h, --help show this help message and exit
4. Update VNF Forwarding Graph
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Create a new VNF ``VNF3`` according to :doc:`./cli-legacy-vnfd` with the
following template:
.. code-block:: yaml
tosca_definitions_version: tosca_simple_profile_for_nfv_1_0_0
description: Demo example
metadata:
template_name: sample-tosca-vnfd3
topology_template:
node_templates:
VDU1:
type: tosca.nodes.nfv.VDU.Tacker
capabilities:
nfv_compute:
properties:
num_cpus: 1
mem_size: 512 MB
disk_size: 1 GB
properties:
image: cirros-0.5.2-x86_64-disk
availability_zone: nova
mgmt_driver: noop
config: |
param0: key1
param1: key2
user_data_format: RAW
user_data: |
#!/bin/sh
echo 1 > /proc/sys/net/ipv4/ip_forward
cat << EOF >> /etc/network/interfaces
auto eth1
iface eth1 inet dhcp
auto eth2
iface eth2 inet dhcp
EOF
ifup eth1
ifup eth2
CP31:
type: tosca.nodes.nfv.CP.Tacker
properties:
management: true
order: 0
anti_spoofing_protection: false
requirements:
- virtualLink:
node: VL31
- virtualBinding:
node: VDU1
CP32:
type: tosca.nodes.nfv.CP.Tacker
properties:
order: 1
anti_spoofing_protection: false
requirements:
- virtualLink:
node: VL32
- virtualBinding:
node: VDU1
CP33:
type: tosca.nodes.nfv.CP.Tacker
properties:
order: 2
anti_spoofing_protection: false
requirements:
- virtualLink:
node: VL33
- virtualBinding:
node: VDU1
VL31:
type: tosca.nodes.nfv.VL
properties:
network_name: net_mgmt
vendor: Tacker
VL32:
type: tosca.nodes.nfv.VL
properties:
network_name: net0
vendor: Tacker
VL33:
type: tosca.nodes.nfv.VL
properties:
network_name: net1
vendor: Tacker
Create the VNFD and VNF:
.. code-block:: console
openstack vnf descriptor create --vnfd-file tosca-vnffg-vnfd2.yaml VNFD3
openstack vnf create --vnfd-name VNFD3 VNF3
Create the updated VNFD file ``tosca-vnffgd-sample-update.yaml``:
.. code-block:: console
VNFD2 -> VNFD3
CP22 -> CP32
VL22 -> VL32
Update the VNFFG:
.. code-block:: console
$ openstack vnf graph set --vnffgd-template tosca-vnffgd-sample-update.yaml \
--description <DESCRIPTION: 'New description for Sample VNFFG template'> \
<VNFFG: tosca-vnffg-sample>
Result:
.. code-block:: console
'Namespace' object has no attribute 'param_file'
Help:
.. code-block:: console
$ openstack vnf graph set --help
usage: openstack vnf graph set [-h] [-f {json,shell,table,value,yaml}]
[-c COLUMN] [--noindent] [--prefix PREFIX]
[--max-width <integer>] [--fit-width]
[--print-empty]
[--vnffgd-template VNFFGD_TEMPLATE]
[--vnf-mapping VNF_MAPPING] [--symmetrical]
[--description DESCRIPTION]
<VNFFG>
Update VNFFG.
positional arguments:
<VNFFG> VNFFG to update (name or ID)
optional arguments:
-h, --help show this help message and exit
--vnffgd-template VNFFGD_TEMPLATE
VNFFGD file to update VNFFG
--vnf-mapping VNF_MAPPING
List of logical VNFD name to VNF instance name
mapping. Example: VNF1:my_vnf1,VNF2:my_vnf2
--symmetrical Should a reverse path be created for the NFP
--description DESCRIPTION
Set a description for the VNFFG
5. Delete VNF Forwarding Graph
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.. code-block:: console
$ openstack vnf graph delete <VNFFG: tosca-vnffg-sample>
.. code-block:: console
All specified vnffg(s) deleted successfully
Help:
.. code-block:: console
$ openstack vnf graph delete --help
usage: openstack vnf graph delete [-h] <VNFFG> [<VNFFG> ...]
Delete VNFFG(s).
positional arguments:
<VNFFG> VNFFG(s) to delete (name or ID)
optional arguments:
-h, --help show this help message and exit

View File

@ -1,465 +0,0 @@
===================================================
VNF Forwarding Graph Descriptor (VNFFGD) Management
===================================================
.. warning::
VNF Forwarding Graph Descriptor (VNFFGD) Management commands are deprecated
and will be removed in the first major release after the Tacker server
version 9.0.0 (2023.1 Antelope release).
VNF Forwarding Graph (VNFFG) feature in Tacker is used to orchestrate and
manage traffic through VNFs. In short, abstract VNFFG TOSCA definitions are
rendered into Service Function Chains (SFCs) and Classifiers. The SFC makes up
an ordered list of VNFs for traffic to traverse, while the classifier decides
which traffic should go through them. Similar to how VNFs are described by
VNFDs, VNFFGs are described by VNF Forwarding Graph Descriptors (VNFFGD).
This document describes how to manage VNFFGD with CLI in Tacker.
Prerequisites
-------------
The following packages should be installed:
* tacker
* python-tackerclient
CLI reference for VNFFGD Management
-----------------------------------
1. Create VNF Forwarding Graph Descriptor
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Create ``tosca-vnffgd-sample.yaml`` file:
* https://opendev.org/openstack/tacker/src/branch/master/samples/tosca-templates/vnffgd/tosca-vnffgd-sample.yaml
Create a VNFFGD:
.. code-block:: console
$ openstack vnf graph descriptor create --vnffgd-file \
tosca-vnffgd-sample.yaml <NAME: tosca-vnffgd-sample>
Result:
.. code-block:: console
+-----------------+--------------------------------------------------------------------------------------------------------+
| Field | Value |
+-----------------+--------------------------------------------------------------------------------------------------------+
| description | Sample VNFFG template |
| id | 81d9cc7a-674d-463d-ad3d-95640e388b20 |
| name | tosca-vnffgd-sample |
| project_id | e77397d2a02c4af1b7d79cef2a406396 |
| template | { |
| | "vnffgd": { |
| | "tosca_definitions_version": "tosca_simple_profile_for_nfv_1_0_0", |
| | "description": "Sample VNFFG template", |
| | "topology_template": { |
| | "node_templates": { |
| | "Forwarding_path1": { |
| | "type": "tosca.nodes.nfv.FP.TackerV2", |
| | "description": "creates path (CP12->CP22)", |
| | "properties": { |
| | "id": 51, |
| | "policy": { |
| | "type": "ACL", |
| | "criteria": [ |
| | { |
| | "name": "block_tcp", |
| | "classifier": { |
| | "network_src_port_id": "14ad4f29-629f-4b97-8bc8-86e96cb49974", |
| | "destination_port_range": "80-1024", |
| | "ip_proto": 6, |
| | "ip_dst_prefix": "10.10.0.5/24" |
| | } |
| | } |
| | ] |
| | }, |
| | "path": [ |
| | { |
| | "forwarder": "VNFD1", |
| | "capability": "CP12", |
| | "sfc_encap": true |
| | }, |
| | { |
| | "forwarder": "VNFD2", |
| | "capability": "CP22", |
| | "sfc_encap": true |
| | } |
| | ] |
| | } |
| | } |
| | }, |
| | "groups": { |
| | "VNFFG1": { |
| | "type": "tosca.groups.nfv.VNFFG", |
| | "description": "HTTP to Corporate Net", |
| | "properties": { |
| | "vendor": "tacker", |
| | "version": 1.0, |
| | "number_of_endpoints": 2, |
| | "dependent_virtual_link": [ |
| | "VL12", |
| | "VL22" |
| | ], |
| | "connection_point": [ |
| | "CP12", |
| | "CP22" |
| | ], |
| | "constituent_vnfs": [ |
| | "VNFD1", |
| | "VNFD2" |
| | ] |
| | }, |
| | "members": [ |
| | "Forwarding_path1" |
| | ] |
| | } |
| | } |
| | }, |
| | "imports": [ |
| | "/opt/stack/tacker/tacker/tosca/lib/tacker_defs.yaml", |
| | "/opt/stack/tacker/tacker/tosca/lib/tacker_nfv_defs.yaml" |
| | ] |
| | } |
| | } |
| template_source | onboarded |
+-----------------+--------------------------------------------------------------------------------------------------------+
Help:
.. code-block:: console
$ openstack vnf graph descriptor create --help
usage: openstack vnf graph descriptor create [-h]
[-f {json,shell,table,value,yaml}]
[-c COLUMN] [--noindent]
[--prefix PREFIX]
[--max-width <integer>]
[--fit-width] [--print-empty]
[--tenant-id TENANT_ID]
--vnffgd-file VNFFGD_FILE
[--description DESCRIPTION]
NAME
Create a new VNFFGD
positional arguments:
NAME Name for VNFFGD
optional arguments:
-h, --help show this help message and exit
--tenant-id TENANT_ID
The owner tenant ID or project ID
--vnffgd-file VNFFGD_FILE
YAML file with VNFFGD parameters
--description DESCRIPTION
Set a description for the VNFFGD
2. List VNF Forwarding Graph Descriptors
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.. code-block:: console
$ openstack vnf graph descriptor list
Result:
.. code-block:: console
+--------------------------------------+---------------------+-----------------+-----------------------+
| ID | Name | Template_Source | Description |
+--------------------------------------+---------------------+-----------------+-----------------------+
| 81d9cc7a-674d-463d-ad3d-95640e388b20 | tosca-vnffgd-sample | onboarded | Sample VNFFG template |
+--------------------------------------+---------------------+-----------------+-----------------------+
Help:
.. code-block:: console
$ openstack vnf graph descriptor list --help
usage: openstack vnf graph descriptor list [-h]
[-f {csv,json,table,value,yaml}]
[-c COLUMN]
[--quote {all,minimal,none,nonnumeric}]
[--noindent]
[--max-width <integer>]
[--fit-width] [--print-empty]
[--sort-column SORT_COLUMN]
[--template-source TEMPLATE_SOURCE]
List (VNFFGD)s that belong to a given tenant.
optional arguments:
-h, --help show this help message and exit
--template-source TEMPLATE_SOURCE
List VNFFGD with specified template source. Available
options are 'onboarded' (default), 'inline' or 'all'
3. Show VNF Forwarding Graph Descriptor
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.. code-block:: console
$ openstack vnf graph descriptor show <VNFFGD: tosca-vnffgd-sample>
Result:
.. code-block:: console
+-----------------+--------------------------------------------------------------------------------------------------------+
| Field | Value |
+-----------------+--------------------------------------------------------------------------------------------------------+
| description | Sample VNFFG template |
| id | 81d9cc7a-674d-463d-ad3d-95640e388b20 |
| name | tosca-vnffgd-sample |
| project_id | e77397d2a02c4af1b7d79cef2a406396 |
| template | { |
| | "vnffgd": { |
| | "tosca_definitions_version": "tosca_simple_profile_for_nfv_1_0_0", |
| | "description": "Sample VNFFG template", |
| | "topology_template": { |
| | "node_templates": { |
| | "Forwarding_path1": { |
| | "type": "tosca.nodes.nfv.FP.TackerV2", |
| | "description": "creates path (CP12->CP22)", |
| | "properties": { |
| | "id": 51, |
| | "policy": { |
| | "type": "ACL", |
| | "criteria": [ |
| | { |
| | "name": "block_tcp", |
| | "classifier": { |
| | "network_src_port_id": "14ad4f29-629f-4b97-8bc8-86e96cb49974", |
| | "destination_port_range": "80-1024", |
| | "ip_proto": 6, |
| | "ip_dst_prefix": "10.10.0.5/24" |
| | } |
| | } |
| | ] |
| | }, |
| | "path": [ |
| | { |
| | "forwarder": "VNFD1", |
| | "capability": "CP12", |
| | "sfc_encap": true |
| | }, |
| | { |
| | "forwarder": "VNFD2", |
| | "capability": "CP22", |
| | "sfc_encap": true |
| | } |
| | ] |
| | } |
| | } |
| | }, |
| | "groups": { |
| | "VNFFG1": { |
| | "type": "tosca.groups.nfv.VNFFG", |
| | "description": "HTTP to Corporate Net", |
| | "properties": { |
| | "vendor": "tacker", |
| | "version": 1.0, |
| | "number_of_endpoints": 2, |
| | "dependent_virtual_link": [ |
| | "VL12", |
| | "VL22" |
| | ], |
| | "connection_point": [ |
| | "CP12", |
| | "CP22" |
| | ], |
| | "constituent_vnfs": [ |
| | "VNFD1", |
| | "VNFD2" |
| | ] |
| | }, |
| | "members": [ |
| | "Forwarding_path1" |
| | ] |
| | } |
| | } |
| | }, |
| | "imports": [ |
| | "/opt/stack/tacker/tacker/tosca/lib/tacker_defs.yaml", |
| | "/opt/stack/tacker/tacker/tosca/lib/tacker_nfv_defs.yaml" |
| | ] |
| | } |
| | } |
| template_source | onboarded |
+-----------------+--------------------------------------------------------------------------------------------------------+
Help:
.. code-block:: console
$ openstack vnf graph descriptor show --help
usage: openstack vnf graph descriptor show [-h]
[-f {json,shell,table,value,yaml}]
[-c COLUMN] [--noindent]
[--prefix PREFIX]
[--max-width <integer>]
[--fit-width] [--print-empty]
<VNFFGD>
Display VNFFGD details
positional arguments:
<VNFFGD> VNFFGD to display (name or ID)
optional arguments:
-h, --help show this help message and exit
4. Show template VNF Forwarding Graph Descriptor
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.. code-block:: console
$ openstack vnf graph descriptor template show <VNFFGD: tosca-vnffgd-sample>
Result:
.. code-block:: console
+----------+--------------------------------------------------------------------------------------------------------+
| Field | Value |
+----------+--------------------------------------------------------------------------------------------------------+
| template | { |
| | "vnffgd": { |
| | "tosca_definitions_version": "tosca_simple_profile_for_nfv_1_0_0", |
| | "description": "Sample VNFFG template", |
| | "topology_template": { |
| | "node_templates": { |
| | "Forwarding_path1": { |
| | "type": "tosca.nodes.nfv.FP.TackerV2", |
| | "description": "creates path (CP12->CP22)", |
| | "properties": { |
| | "id": 51, |
| | "policy": { |
| | "type": "ACL", |
| | "criteria": [ |
| | { |
| | "name": "block_tcp", |
| | "classifier": { |
| | "network_src_port_id": "14ad4f29-629f-4b97-8bc8-86e96cb49974", |
| | "destination_port_range": "80-1024", |
| | "ip_proto": 6, |
| | "ip_dst_prefix": "10.10.0.5/24" |
| | } |
| | } |
| | ] |
| | }, |
| | "path": [ |
| | { |
| | "forwarder": "VNFD1", |
| | "capability": "CP12", |
| | "sfc_encap": true |
| | }, |
| | { |
| | "forwarder": "VNFD2", |
| | "capability": "CP22", |
| | "sfc_encap": true |
| | } |
| | ] |
| | } |
| | } |
| | }, |
| | "groups": { |
| | "VNFFG1": { |
| | "type": "tosca.groups.nfv.VNFFG", |
| | "description": "HTTP to Corporate Net", |
| | "properties": { |
| | "vendor": "tacker", |
| | "version": 1.0, |
| | "number_of_endpoints": 2, |
| | "dependent_virtual_link": [ |
| | "VL12", |
| | "VL22" |
| | ], |
| | "connection_point": [ |
| | "CP12", |
| | "CP22" |
| | ], |
| | "constituent_vnfs": [ |
| | "VNFD1", |
| | "VNFD2" |
| | ] |
| | }, |
| | "members": [ |
| | "Forwarding_path1" |
| | ] |
| | } |
| | } |
| | }, |
| | "imports": [ |
| | "/opt/stack/tacker/tacker/tosca/lib/tacker_defs.yaml", |
| | "/opt/stack/tacker/tacker/tosca/lib/tacker_nfv_defs.yaml" |
| | ] |
| | } |
| | } |
+----------+--------------------------------------------------------------------------------------------------------+
Help:
.. code-block:: console
$ openstack vnf graph descriptor template show --help
usage: openstack vnf graph descriptor template show [-h]
[-f {json,shell,table,value,yaml}]
[-c COLUMN] [--noindent]
[--prefix PREFIX]
[--max-width <integer>]
[--fit-width]
[--print-empty]
<VNFFGD>
Display VNFFGD Template details
positional arguments:
<VNFFGD> VNFFGD to display (name or ID)
optional arguments:
-h, --help show this help message and exit
5. Delete VNF Forwarding Graph Descriptors
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.. code-block:: console
$ openstack vnf graph descriptor delete <VNFFGD: tosca-vnffgd-sample>
.. code-block:: console
All specified vnffgd(s) deleted successfully
Help:
.. code-block:: console
$ openstack vnf graph descriptor delete --help
usage: openstack vnf graph descriptor delete [-h] <VNFFGD> [<VNFFGD> ...]
Delete VNFFGD(s).
positional arguments:
<VNFFGD> VNFFGD(s) to delete (name or ID)
optional arguments:
-h, --help show this help message and exit

View File

@ -31,31 +31,10 @@ Operations for ETSI NFV-SOL implementation
Operations for Legacy implementation
------------------------------------
.. warning::
Legacy CLI excluding VIM feature are deprecated
and will be removed in the first major release after the Tacker server
version 9.0.0 (2023.1 Antelope release).
.. toctree::
cli-legacy-vim
cli-legacy-vnfd
cli-legacy-vnf
cli-legacy-vnffgd
cli-legacy-vnffg
cli-legacy-sfc
cli-legacy-fc
cli-legacy-nfp
cli-legacy-nsd
cli-legacy-event
.. TODO(yoshito-ito): update vnffg after fixing CLI bug:
* https://bugs.launchpad.net/python-tackerclient/+bug/1892152
cli-legacy-vnffg
.. TODO(yoshito-ito): add ns after confirming ns operations
* https://bugs.launchpad.net/tacker/+bug/1892144
cli-legacy-ns
Other operations
----------------

View File

@ -88,10 +88,6 @@ html_theme = 'openstackdocs'
# Output file base name for HTML help builder.
htmlhelp_basename = '%sdoc' % project
# Add any paths that contain "extra" files, such as .htaccess or
# robots.txt.
html_extra_path = ['_extra']
# Grouping the document tree into LaTeX files. List of tuples
# (source start file, target name, title, author, documentclass
# [howto/manual]).

View File

@ -1,219 +0,0 @@
..
This work is licensed under a Creative Commons Attribution 3.0 Unported
License.
http://creativecommons.org/licenses/by/3.0/legalcode
Tacker Resource Events Usage Guide
==================================
.. warning::
Legacy Tacker features excluding VIM feature are deprecated
and will be removed in the first major release after the Tacker server
version 9.0.0 (2023.1 Antelope release).
Overview
--------
OpenStack Tacker supports capturing resource event information when the
tacker resources undergo create, update, delete, scale and monitor
operations. This information becomes useful to an admin for audit purposes.
Tacker Resources Supporting Events
----------------------------------
As of Newton release, events information is captured for below:
- VNF
- VNFD
- VIM
Tacker Supported Event Types
----------------------------
Below are the event types that are currently supported:
- CREATE
- DELETE
- MONITOR
- SCALE
- UPDATE
The above can be used as filters when listing events using tacker client.
Accessing Events
----------------
Tacker supports display of events to an end user via
- Horizon UI - a separate events tab per resource displays associated events.
- OpenStackClient CLI - supports below commands:
- openstack nfv event show: Show detailed info for a given event ID.
- openstack nfv event list: Lists all events for all resources.
NOTE: For more details on the syntax of these CLIs, refer to
`OpenStackClient CLI reference guide <https://docs.openstack.org/tacker/latest/admin/index.html>`_
OpenStackClient CLI Usage Examples to Access Resource Lifecycle Events
----------------------------------------------------------------------
1. The following command displays all the state transitions that occurred on
a long running VNF. The sample output illustrates a VNF that has
successfully gone through a scale out operation. Note, the <VNF Resource ID>
here is VNF's uuid.
.. code-block:: console
openstack nfv event list --resource-id <VNF Resource ID>
+----+---------------+-------------------+-------------------+------------+-------------------+---------------------+
| ID | Resource Type | Resource ID | Resource State | Event Type | Timestamp | Event Details |
+----+---------------+-------------------+-------------------+------------+-------------------+---------------------+
| 13 | vnf | 9dd7b2f1-e91e-418 | PENDING_CREATE | CREATE | 2016-09-21 | VNF UUID assigned. |
| | | 3-bcbe- | | | 20:12:37 | |
| | | 34b80bdb18fb | | | | |
| 14 | vnf | 9dd7b2f1-e91e-418 | PENDING_CREATE | CREATE | 2016-09-21 | Infra Instance ID |
| | | 3-bcbe- | | | 20:13:09 | created: 3bd369e4-9 |
| | | 34b80bdb18fb | | | | ee3-4e58-86e3-8acbb |
| | | | | | | dccedb5 and Mgmt |
| | | | | | | URL set: {"VDU1": |
| | | | | | | ["10.0.0.9", |
| | | | | | | "10.0.0.2"], |
| | | | | | | "VDU2": |
| | | | | | | ["10.0.0.4", |
| | | | | | | "10.0.0.5"]} |
| 15 | vnf | 9dd7b2f1-e91e-418 | ACTIVE | CREATE | 2016-09-21 | VNF status updated |
| | | 3-bcbe- | | | 20:13:09 | |
| | | 34b80bdb18fb | | | | |
| 16 | vnf | 9dd7b2f1-e91e-418 | PENDING_SCALE_OUT | SCALE | 2016-09-21 | |
| | | 3-bcbe- | | | 20:23:58 | |
| | | 34b80bdb18fb | | | | |
| 17 | vnf | 9dd7b2f1-e91e-418 | ACTIVE | SCALE | 2016-09-21 | |
| | | 3-bcbe- | | | 20:24:45 | |
| | | 34b80bdb18fb | | | | |
+----+---------------+-------------------+-------------------+------------+-------------------+---------------------+
2. The following command displays any reachability issues related to a VIM
site. The sample output illustrates a VIM that is reachable. Note, the
<VIM Resource ID> here is a VIM uuid.
.. code-block:: console
openstack nfv event list --resource-id <VIM Resource ID>
+----+---------------+---------------------+----------------+------------+---------------------+---------------+
| ID | Resource Type | Resource ID | Resource State | Event Type | Timestamp | Event Details |
+----+---------------+---------------------+----------------+------------+---------------------+---------------+
| 1 | vim | d8c11a53-876c-454a- | PENDING | CREATE | 2016-09-20 23:07:42 | |
| | | bad1-cb13ad057595 | | | | |
| 2 | vim | d8c11a53-876c-454a- | REACHABLE | MONITOR | 2016-09-20 23:07:42 | |
| | | bad1-cb13ad057595 | | | | |
+----+---------------+---------------------+----------------+------------+---------------------+---------------+
Miscellaneous Events Command Examples:
--------------------------------------
1. List all events for all resources from the beginning
.. code-block:: console
openstack nfv event list
+----+---------------+-----------------+----------------+------------+-----------------+-----------------+
| ID | Resource Type | Resource ID | Resource State | Event Type | Timestamp | Event Details |
+----+---------------+-----------------+----------------+------------+-----------------+-----------------+
| 1 | vim | c89e5d9d-6d55-4 | PENDING | CREATE | 2016-09-10 | |
| | | db1-bd67-30982f | | | 20:32:46 | |
| | | 01133e | | | | |
| 2 | vim | c89e5d9d-6d55-4 | REACHABLE | MONITOR | 2016-09-10 | |
| | | db1-bd67-30982f | | | 20:32:46 | |
| | | 01133e | | | | |
| 3 | vnfd | afc0c662-5117-4 | Not Applicable | CREATE | 2016-09-14 | |
| | | 7a7-8088-02e9f8 | | | 05:17:30 | |
| | | a3532b | | | | |
| 4 | vnf | 52adaae4-36b5 | PENDING_CREATE | CREATE | 2016-09-14 | VNF UUID |
| | | -41cf-acb5-32ab | | | 17:49:24 | assigned. |
| | | 8c109265 | | | | |
| 5 | vnf | 52adaae4-36b5 | PENDING_CREATE | CREATE | 2016-09-14 | Infra Instance |
| | | -41cf-acb5-32ab | | | 17:49:51 | ID created: |
| | | 8c109265 | | | | 046dcb04-318d-4 |
| | | | | | | ec9-8a23-19d9c1 |
| | | | | | | f8c21d and Mgmt |
| | | | | | | URL set: |
| | | | | | | {"VDU1": "192.1 |
| | | | | | | 68.120.8"} |
| 6 | vnf | 52adaae4-36b5 | ACTIVE | CREATE | 2016-09-14 | VNF status |
| | | -41cf-acb5-32ab | | | 17:49:51 | updated |
| | | 8c109265 | | | | |
+----+---------------+-----------------+----------------+------------+-----------------+-----------------+
2. List all events for all resources given a certain event type
.. code-block:: console
openstack nfv event list --event-type CREATE
+----+---------------+-----------------+----------------+------------+-----------------+-----------------+
| ID | Resource Type | Resource ID | Resource State | Event Type | Timestamp | Event Details |
+----+---------------+-----------------+----------------+------------+-----------------+-----------------+
| 1 | vim | c89e5d9d-6d55-4 | PENDING | CREATE | 2016-09-10 | |
| | | db1-bd67-30982f | | | 20:32:46 | |
| | | 01133e | | | | |
| 3 | vnfd | afc0c662-5117-4 | ACTIVE | CREATE | 2016-09-14 | |
| | | 7a7-8088-02e9f8 | | | 05:17:30 | |
| | | a3532b | | | | |
| 4 | vnf | 52adaae4-36b5 | PENDING_CREATE | CREATE | 2016-09-14 | VNF UUID |
| | | -41cf-acb5-32ab | | | 17:49:24 | assigned. |
| | | 8c109265 | | | | |
| 5 | vnf | 52adaae4-36b5 | PENDING_CREATE | CREATE | 2016-09-14 | Infra Instance |
| | | -41cf-acb5-32ab | | | 17:49:51 | ID created: |
| | | 8c109265 | | | | 046dcb04-318d-4 |
| | | | | | | ec9-8a23-19d9c1 |
| | | | | | | f8c21d and Mgmt |
| | | | | | | URL set: |
| | | | | | | {"VDU1": "192.1 |
| | | | | | | 68.120.8"} |
| 6 | vnf | 52adaae4-36b5 | ACTIVE | CREATE | 2016-09-14 | VNF status |
| | | -41cf-acb5-32ab | | | 17:49:51 | updated |
| | | 8c109265 | | | | |
+----+---------------+-----------------+----------------+------------+-----------------+-----------------+
3. List details for a specific event
.. code-block:: console
openstack nfv event show 5
+----------------+------------------------------------------------------------------------------------------+
| Field | Value |
+----------------+------------------------------------------------------------------------------------------+
| event_details | Infra Instance ID created: 046dcb04-318d-4ec9-8a23-19d9c1f8c21d and Mgmt IP address set: |
| | {"VDU1": "192.168.120.8"} |
| event_type | CREATE |
| id | 5 |
| resource_id | 52adaae4-36b5-41cf-acb5-32ab8c109265 |
| resource_state | PENDING_CREATE |
| resource_type | vnf |
| timestamp | 2016-09-14 17:49:51 |
+----------------+------------------------------------------------------------------------------------------+
Note for Tacker Developers
--------------------------
If as a developer, you are creating new resources and would like to capture
event information for resource operations such as create, update, delete,
scale and monitor, you would need to :
- Import the module tacker.db.common_services.common_services_db to use the
create_event() method for logging events.
- Make edits in the file tacker/plugins/common/constants.py if you would need
to create new event types.

View File

@ -1,159 +0,0 @@
Tacker Monitoring Framework
============================
.. warning::
Legacy Tacker features excluding VIM feature are deprecated
and will be removed in the first major release after the Tacker server
version 9.0.0 (2023.1 Antelope release).
This section will introduce tacker monitoring framework and describes the
various actions that a user can take when a specific event occurs.
* Introduction
* How to write a new monitor driver
* Events
* Actions
* How to write TOSCA template to monitor VNF entities
Introduction
-------------
Tacker monitoring framework provides the NFV operators and VNF vendors to
write a pluggable driver that monitors the various status conditions of the
VNF entities it deploys and manages.
How to write a new monitor driver
----------------------------------
A monitor driver for tacker is a python module which contains a class that
inherits from
"tacker.vnfm.monitor_drivers.abstract_driver.VNFMonitorAbstractDriver". If the
driver depends/imports more than one module, then create a new python package
under tacker/vnfm/monitor_drivers folder. After this we have to mention our
driver path in setup.cfg file in root directory.
For example:
::
tacker.tacker.monitor_drivers =
ping = tacker.vnfm.monitor_drivers.ping.ping:VNFMonitorPing
Following methods need to be overridden in the new driver:
``def get_type(self)``
This method must return the type of driver. ex: ping
``def get_name(self)``
This method must return the symbolic name of the vnf monitor plugin.
``def get_description(self)``
This method must return the description for the monitor driver.
``def monitor_get_config(self, plugin, context, vnf)``
This method must return dictionary of configuration data for the monitor
driver.
``def monitor_url(self, plugin, context, vnf)``
This method must return the url of vnf to monitor.
``def monitor_call(self, vnf, kwargs)``
This method is called cyclically each time a monitoring is
triggered. **kwagrs** is a dict object given under **parameters** in
the target VDU template. This method must either return boolean
value 'True', if VNF is healthy. Otherwise it should return an event
string like 'failure' or 'calls-capacity-reached' based on specific
VNF health condition. More details on these event is given in below
section.
Custom events
--------------
As mentioned in above section, if the return value of monitor_call method is
other than boolean value 'True', then we have to map those event to the
corresponding action as described below.
For example:
::
VDU1:
properties:
...
monitoring_policy:
name: ping
actions:
failure: respawn
In this example, we have an event called 'failure'. So whenever monitor_call
returns 'failure' tacker will respawn the VNF.
Actions
--------
The available actions that a monitor driver can call when a particular event
occurs.
#. respawn
In case of OpenStack VIM, when any VDU monitoring fails, it will delete
the entire VNF and create a new one.
#. vdu_autoheal
In case of OpenStack VIM, when any VDU monitoring fails, it will delete
only that specific VDU resource and create a new one alone with it's
dependent resources like CP.
#. log
#. log_and_kill
How to write TOSCA template to monitor VNF entities
----------------------------------------------------
In the vdus section, you can specify the monitor details with
corresponding actions and parameters. The syntax for writing monitor
policy is as follows:
::
vduN:
properties:
...
monitoring_policy:
name: <monitoring-driver-name>:
parameters:
<param-name>: <param-value>
...
actions:
<event-name>: <action-name>
Example Template
----------------
::
VDU1:
properties:
...
monitoring_policy:
name: ping
actions:
failure: respawn
VDU2:
properties:
...
monitoring_policy:
name: http-ping
parameters:
port: 8080
actions:
failure: vdu_autoheal
VDU3:
properties:
...
monitoring_policy:
name: <your-driver-name>
parameters:
<param1>: <value1>
<param2>: <value2>
actions:
<event1>: <action>
<event2>: <action>

View File

@ -1,96 +0,0 @@
Tacker Policy Framework
=======================
.. warning::
Legacy Tacker features excluding VIM feature are deprecated
and will be removed in the first major release after the Tacker server
version 9.0.0 (2023.1 Antelope release).
This section will introduce framework for tacker policy actions.
* Introduction
* How to write a new policy action
* Event and Auditing support
* How to combine policy actions with existing monitoring frameworks in Tacker
Introduction
------------
Tacker policy actions framework provides the NFV operators and VNF vendors to
write a pluggable action that manages their own VNFs. Currently Tacker
already provided some common actions like autoscaling, respawning, and
logging. With this framework the custom actions can be easily
applied for the management purpose.
How to write a new policy action
--------------------------------
A policy action for tacker is a python module which contains a class that
inherits from
"tacker.vnfm.policy_actions.abstract_action.AbstractPolicyAction". If the
driver depends/imports more than one module, then create a new python package
under tacker/vnfm/policy_actions folder. After this we have to mention our
driver path in setup.cfg file in root directory.
For example:
::
tacker.tacker.policy.actions =
respawn = tacker.vnfm.policy_actions.respawn.respawn:VNFActionRespawn
Following methods need to be overridden in the new action:
``def get_type(self)``
This method must return the type of action. ex: respawn
``def get_name(self)``
This method must return the symbolic name of the vnf policy action.
``def get_description(self)``
This method must return the description for the policy action.
``def execute_action(self, plugin, context, vnf, arguments)``
This method must expose what will be executed with the policy action.
'arguments' is used to add more options for policy actions. For example,
if action is scaling, 'arguments' should let you know
'scaling-out' or 'scaling-in' will be applied.
Event and Auditing support
--------------------------
This function can be used to describe the execution process of policy.
For example:
::
_log_monitor_events(context, vnf_dict, "ActionRespawnHeat invoked")
How to combine policy with existing monitoring framework in Tacker
------------------------------------------------------------------
In the monitoring policy section, you can specify the monitors details with
corresponding action.
The below example shows how policy is used for alarm monitor.
Example Template
----------------
::
policies:
- vdu1_cpu_usage_monitoring_policy:
type: tosca.policies.tacker.Alarming
triggers:
resize_compute:
event_type:
type: tosca.events.resource.utilization
implementation: ceilometer
metrics: cpu_util
condition:
threshold: 50
constraint: utilization greater_than 50%
period: 65
evaluations: 1
method: avg
comparison_operator: gt
actions: [respawn]

View File

@ -92,12 +92,6 @@ Execution of testcase:
tacker service and endpoint, creates "nfv_user" and "nfv" project,
and registers default VIM with the created user and project.
* Under tacker project dir, to prepare function test env via:
.. code-block:: console
./tools/prepare_functional_test.sh
* From tacker directory, all function testcases can be executed using
following commands:

View File

@ -1,725 +0,0 @@
VNF Descriptor (VNFD) Template Guide
====================================
.. warning::
Legacy Tacker features excluding VIM feature are deprecated
and will be removed in the first major release after the Tacker server
version 9.0.0 (2023.1 Antelope release).
Overview
--------
This document explains VNFD template structure and its various fields based
on TOSCA standards `V1.0 CSD 03`_.
The behavioral and deployment information of a VNF in Tacker is defined in a
template known as VNF Descriptor (VNFD). The template is based on TOSCA
standards and is written in YAML. It is on-boarded in a VNF catalog.
Each VNFD template have the below fields:
.. code-block:: yaml
tosca_definitions_version:
This defines the TOSCA definition version on which the template is based.
The current version being tosca_simple_profile_for_nfv_1_0_0.
tosca_default_namespace:
This is optional. It mentions the default namespace which includes
schema, types versions, etc.
description:
A short description of the template.
metadata:
template_name: A name to be given to the template.
topology_template:
Describes the topology of the VNF under node_template field.
node_template:
Describes node types of a VNF.
VDU:
Describes the properties and capabilities of Virtual Deployment
Unit.
CP:
Describes the properties and capabilities of Connection Point.
VL:
Describes the properties and capabilities of Virtual Link.
For examples, please refer sample VNFD templates available at
`VNFD TOSCA TEMPLATES`_.
Node Types
----------
A VNF includes ``VDU/s``, ``connection point/s`` and ``virtual link/s``. Hence
a valid VNFD must have these 3 components. Each component is referred as a
node and can have a certain type, capabilities, properties, attributes, and
requirements. These components are described under ``node_templates`` in the
VNFD template. ``node_templates`` is a child of ``topology_template``.
VDU
---
Virtual Deployment Unit is a basic part of VNF. It is the VM that hosts the
network function.
:type:
tosca.nodes.nfv.VDU.Tacker
:properties:
Describes the properties like image to be used in VDU, availability zone in
which VDU is to be spawned, management driver to be used to manage the VDU,
flavor describing physical properties for the VDU to be spawned, monitoring
policies for the VDU, providing user data in form of custom commands to the
VDU. A complete list of VDU properties currently supported by Tacker are
listed `here`_ under ``properties`` section of
``tosca.nodes.nfv.VDU.Tacker`` field.
Specifying VDU Properties
^^^^^^^^^^^^^^^^^^^^^^^^^
A very simple VDU with 10 GB disk, 2 GB RAM, 2 CPUs, cirros image and in nova
availability zone can be described as:
.. code-block:: yaml
topology_template:
node_templates:
VDU1:
type: tosca.nodes.nfv.VDU.Tacker
properties:
image: cirros-0.5.2-x86_64-disk
availability_zone: nova
capabilities:
nfv_compute:
properties:
disk_size: 10 GB
mem_size: 2048 MB
num_cpus: 2
Using Nova Flavors for VDU
^^^^^^^^^^^^^^^^^^^^^^^^^^
OpenStack specific ``flavors`` can also be used to describe VDU configuration.
.. code-block:: yaml
topology_template:
node_templates:
VDU1:
type: tosca.nodes.nfv.VDU.Tacker
properties:
image: cirros-0.5.2-x86_64-disk
flavor: m1.tiny
availability_zone: nova
However, when both ``nfv_compute properties`` and ``flavor`` are mentioned in
a VNFD, ``flavor`` setting will take precedence.
Monitoring the VDU
""""""""""""""""""
A VDU can be monitored by pinging it. Tacker supports pinging
VDU with given intervals and certain retries.
The VDUs can be re-spawned in case of failure. See :doc:`monitor-api`
for more information.
.. code-block:: yaml
..
VDU1:
type: tosca.nodes.nfv.VDU.Tacker
properties:
monitoring_policy:
name: ping
parameters:
monitoring_delay: 20
count: 3
interval: 0.2
timeout: 2
retry: 6
actions:
failure: respawn
VDU2:
type: tosca.nodes.nfv.VDU.Tacker
properties:
monitoring_policy:
name: http-ping
parameters:
monitoring_delay: 20
timeout: 2
retry: 6
port: 80
actions:
failure: respawn
Providing User Data
"""""""""""""""""""
Custom commands to be run on VDU once it is spawned can be specified in a VNFD
the template as user data.
.. code-block:: yaml
..
VDU1:
type: tosca.nodes.nfv.VDU.Tacker
properties:
user_data_format: RAW
user_data: |
#!/bin/sh
echo "Adding this line to demofile" > /tmp/demofile
Configuring a VDU
"""""""""""""""""
A VDU can be configured as a specific Network Function under ``config``
section in VNFD template. A sample template configuring a VDU as a firewall
can be viewed in a `sample file`_.
Specifying External Image
"""""""""""""""""""""""""
:artifacts:
To specify an image via a file or an external link
An image URL can be specified as ``artifacts``. Tacker will specify the image
location in HOT (Heat Template) and pass it to heat-api. Heat will then spawn
the VDU with that image.
.. code-block:: yaml
..
VDU1:
type: tosca.nodes.nfv.VDU.Tacker
artifacts:
VNFImage:
type: tosca.artifacts.Deployment.Image.VM
file: http://download.cirros-cloud.net/0.5.2/ \
cirros-0.5.2-x86_64-disk.img
VDU Capabilities
^^^^^^^^^^^^^^^^
The computational properties of a VDU are described as its capabilities.
Allocated RAM and disk size, memory page size, number of CPUs, number of
cores per CPU and a number of threads per core can be specified.
A VDU with 10 GB disk, 2 GB RAM, 2 CPUs, 4 KB of memory page, and a dedicated
CPU can be specified as below.
Thread and core counts can be specified as shown.
.. code-block:: yaml
..
VDU1:
type: tosca.nodes.nfv.VDU.Tacker
capabilities:
nfv_compute:
properties:
disk_size: 10 GB
mem_size: 2048 MB
num_cpus: 2
mem_page_size: small
cpu_allocation:
cpu_affinity: dedicated
thread_count: 4
core_count: 2
.. list-table:: **capabilities**
:widths: 12 30 4 71
:header-rows: 1
* - Name
- Type
- Constraints
- Description
* - nfv_compute
- Compute.
Container.
Architecture
- None
- Describes the configuration of the VM on which the VDU resides.
Compute Container Architecture
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
:type:
tosca.capabilities.Compute.Container.Architecture
.. list-table:: **properties**
:widths: 25 8 15 20 40
:header-rows: 1
* - Name
- Required
- Type
- Constraints
- Description
* - mem_page_size (in MB)
- No
- String
- Size can be small, large,
any (default) or custom
- Indicates page size of the VM where
small maps to 4 KB, large maps to 2 MB,
any maps to system's default and custom
sets the size to specified value.
* - cpu_allocation
- No
- CPUAllocation
- NA
- CPU allocation requirement like dedicated CPUs,
socket/thread count.
* - numa_node_count
- No
- Integer
- NA
- Symmetric count of NUMA nodes to expose to VM.
vCPU and Memory are split equally across this
number of NUMA
* - numa_nodes
- No
- Map of NUMA
- Symmetric numa_node_count should not be specified.
- Asymmetric allocation of vCPU and memory across the
specified NUMA nodes.
CPUAllocation
"""""""""""""
This describes the granular CPU allocation requirements for VDUs.
:type:
tosca.datatypes.compute.Container.Architecture.CPUAllocation
.. list-table:: **properties**
:widths: 20 8 20 40
:header-rows: 1
* - Name
- Type
- Constraints
- Description
* - cpu_affinity
- String
- Affinity can be shared or dedicated
- Describes whether vCPU need to be
pinned to dedicated CPU core or shared dynamically.
* - thread_allocation
- String
- Allocation can be avoid, separate, isolate or prefer
- Describes thread allocation requirement.
* - socket_count
- Integer
- None
- Number of CPU sockets.
* - core_count
- Integer
- None
- Number of cores per sockets.
* - thread_count
- Integer
- None
- Number of threads per core.
NUMA Architecture
"""""""""""""""""
Following code snippet describes symmetric NUMA topology requirements for VDUs.
.. code-block:: yaml
..
VDU1:
capabilities:
nfv_compute:
properties:
numa_node_count: 2
numa_nodes: 3
For asymmetric NUMA architecture:
.. code-block:: yaml
..
VDU1:
capabilities:
nfv_compute:
properties:
mem_size: 4096 MB
num_cpus: 4
numa_nodes:
node0:
id: 0
vcpus: [0,1]
mem_size: 1024 MB
node1:
id: 1
vcpus: [2,3]
mem_size: 3072 MB
:type:
tosca.datatypes.compute.Container.Architecture.NUMA
.. list-table:: **properties**
:widths: 10 10 12 20
:header-rows: 1
* - Name
- Type
- Constraints
- Description
* - id
- Integer
- >= 0
- CPU socket identifier
* - vcpus
- Map of integers
- None
- List of specific host cpu numbers
within a NUMA socket complex.
* - mem_size
- scalar-unit.size
- >= 0MB
- Size of memory allocated from this
NUMA memory bank.
Connection Points
-----------------
Connection point is used to connect the internal virtual link or outside
virtual link. It may be a virtual NIC or a SR-IOV NIC. Each connection
point has to bind to a VDU. A CP always requires a virtual link and a
virtual binding associated with it.
A code snippet for virtual NIC (Connection Point) without anti-spoof
protection and are accessible by the user. CP1 and CP2 are connected to
VDU1 in this order. Also CP1/CP2 are connected to VL1/VL2 respectively.
.. code-block:: yaml
..
topology_template:
node_templates:
VDU1:
..
CP1:
type: tosca.nodes.nfv.CP.Tacker
properties:
mac_address: fa:40:08:a0:de:0a
ip_address: 10.10.1.12
type: vnic
anti_spoofing_protection: false
management: true
order: 0
security_groups:
- secgroup1
- secgroup2
requirements:
- virtualLink:
node: VL1
- virtualBinding:
node: VDU1
CP2:
type: tosca.nodes.nfv.CP.Tacker
properties:
type: vnic
anti_spoofing_protection: false
management: true
order: 1
requirements:
- virtualLink:
node: VL2
- virtualBinding:
node: VDU1
VL1:
..
VL2:
..
:type:
tosca.nodes.nfv.CP.Tacker
.. list-table:: **properties**
:widths: 25 8 7 20 25
:header-rows: 1
* - Name
- Required
- Type
- Constraints
- Description
* - type
- No
- String
- Type can be vnic(default) or sriov
- Specifies the type of CP.
* - anti_spoofing_protection
- No
- Boolean
- None
- Indicates whether anti_spoof rule
is enabled for the VNF or not.
Applicable only when CP type is virtual NIC.
* - management
- No
- Boolean
- None
- Specifies whether the CP is accessible by
the user or not.
* - order
- No
- Integer
- >= 0
- Uniquely numbered order of CP within a VDU.
Must be provided when binding more than one CP to a VDU
and ordering is required.
* - security_groups
- No
- List
- None
- List of security groups to be associated with the CP.
* - mac_address
- No
- String
- None
- The MAC address.
* - ip_address
- No
- String
- None
- The IP address.
.. list-table:: **requirements**
:widths: 15 20 20 25
:header-rows: 1
* - Name
- Capability
- Relationship
- Description
* - virtualLink
- nfv.VirtualLinkable
- nfv.VirtualLinksTo
- States the VL node to connect to.
* - virtualbinding
- nfv.VirtualBindable
- nfv.VirtualBindsTo
- States the VDU node to connect to.
Virtual Links
-------------
Virtual link provides connectivity between VDUs. It represents the logical
virtual link entity.
An example of a virtual link whose vendor is "Tacker" and is attached to
network net-01 is as shown below.
.. code-block:: yaml
..
topology_template:
node_templates:
VDU1:
..
CP1:
..
VL1:
type: tosca.nodes.nfv.VL
properties:
vendor: Tacker
network_name: net-01
:type:
tosca.nodes.nfv.VL
.. list-table:: **properties**
:widths: 15 10 8 15 25
:header-rows: 1
* - Name
- Required
- Type
- Constraints
- Description
* - vendor
- Yes
- String
- None
- Vendor generating this VL.
* - network_name
- Yes
- String
- None
- Name of the network to which
VL is to be attached.
Floating IP
-----------
Floating IP is used to access VDU from public network.
An example of assign floating ip to VDU
.. code-block:: yaml
..
topology_template:
node_templates:
VDU1:
..
CP1:
type: tosca.nodes.nfv.CP.Tacker
properties:
management: true
requirements:
- virtualLink:
node: VL1
- virtualBinding:
node: VDU1
VL1:
..
FIP1:
type: tosca.nodes.network.FloatingIP
properties:
floating_network: public
requirements:
- link:
node: CP1
:type:
tosca.nodes.network.FloatingIP
.. list-table:: **properties**
:widths: 20 10 10 15 25
:header-rows: 1
* - Name
- Required
- Type
- Constraints
- Description
* - floating_network
- Yes
- String
- None
- Name of public network.
* - floating_ip_address
- No
- String
- None
- Floating IP Address from public network.
.. list-table:: **requirements**
:widths: 8 20 20 20
:header-rows: 1
* - Name
- Capability
- Relationship
- Description
* - link
- tosca.capabilities.network.Linkable
- tosca.relationships.network.LinksTo
- States the CP node to connect.
Multiple Nodes
--------------
Multiple node types can be defined in a VNFD.
.. code-block:: yaml
..
topology_template:
node_templates:
VDU1:
..
VDU2:
..
CP1:
..
CP2:
..
VL1:
..
VL2:
..
Summary
-------
To summarize VNFD is written in YAML and describes a VNF topology. It has
three node types, each with different capabilities and requirements. Below is
a template that mentions all node types with all available options.
.. code-block:: yaml
tosca_definitions_version: tosca_simple_profile_for_nfv_1_0_0
description: Sample VNFD template mentioning possible values for each node.
metadata:
template_name: sample-tosca-vnfd-template-guide
topology_template:
node_templates:
VDU:
type: tosca.nodes.nfv.VDU.Tacker
capabilities:
nfv_compute:
properties:
mem_page_size: [small, large, any, custom]
cpu_allocation:
cpu_affinity: [shared, dedicated]
thread_allocation: [avoid, separate, isolate, prefer]
socket_count: any integer
core_count: any integer
thread_count: any integer
numa_node_count: any integer
numa_nodes:
node0:
id: any integer
vcpus: [host CPU numbers]
mem_size: in MB
properties:
image: Image to be used in VDU
flavor: Nova supported flavors
availability_zone: available availability zone
mem_size: in MB
disk_size: in GB
num_cpus: any integer
metadata:
entry_schema:
config_drive: [true, false]
monitoring_policy:
name: [ping, noop, http-ping]
parameters:
monitoring_delay: delay time
count: any integer
interval: time to wait between monitoring
timeout: monitoring timeout time
actions:
failure: [respawn, terminate, log]
retry: Number of retries
port: specific port number if any
config: Configuring the VDU as per the network function requirements
mgmt_driver: [default=noop]
service_type: type of network service to be done by VDU
user_data: custom commands to be executed on VDU
user_data_format: format of the commands
key_name: user key
artifacts:
VNFImage:
type: tosca.artifacts.Deployment.Image.VM
file: file to be used for image
CP:
type: tosca.nodes.nfv.CP.Tacker
properties:
management: [true, false]
anti_spoofing_protection: [true, false]
type: [ sriov, vnic ]
order: order of CP within a VDU
security_groups: list of security groups
requirements:
virtualLink:
node: VL to link to
virtualBinding:
node: VDU to bind to
VL:
type: tosca.nodes.nfv.VL
properties:
network_name: name of network to attach to
vendor: Tacker
.. _V1.0 CSD 03 : http://docs.oasis-open.org/tosca/tosca-nfv/v1.0/tosca-nfv-v1.0.html
.. _VNFD TOSCA TEMPLATES : https://opendev.org/openstack/tacker/src/branch/master/samples/tosca-templates/vnfd
.. _here : https://opendev.org/openstack/tacker/src/branch/master/tacker/tosca/lib/tacker_nfv_defs.yaml
.. _sample file : https://opendev.org/openstack/tacker/src/branch/master/samples/tosca-templates/vnfd/tosca-config-openwrt-firewall.yaml

View File

@ -1,282 +0,0 @@
VNF Descriptor (VNFD) Template Parameterization
===============================================
.. warning::
Legacy Tacker features excluding VIM feature are deprecated
and will be removed in the first major release after the Tacker server
version 9.0.0 (2023.1 Antelope release).
Overview
--------
Parameterization allows for the ability to use a single VNFD to be deployed
multiple times with different values for the VDU parameters provided at
deploy time. In contrast, a non-parameterized VNFD has static values
for the parameters that might limit the number of concurrent VNFs that can be
deployed using a single VNFD. For example, deploying an instance of a
non-parameterized template that has fixed IP addresses specified for network
interface a second time without deleting the first instance of VNF would lead
to an error.
Non-parameterized VNFD Template
-------------------------------
Find below an example of a non-parameterized VNFD where the text italicized
are the VDU parameters and text in bold are the values for those VDU
parameters that get applied to the VDU when this template is deployed.
The next section will illustrate how the below non-parameterized template
can be parameterized and re-used for deploying multiple VNFs.
Here is the sample template:
.. code-block:: yaml
tosca_definitions_version: tosca_simple_profile_for_nfv_1_0_0
description: VNF TOSCA template with input parameters
metadata:
template_name: sample-tosca-vnfd
topology_template:
node_templates:
VDU1:
type: tosca.nodes.nfv.VDU.Tacker
properties:
image: cirros-0.5.2-x86_64-disk
flavor: m1.tiny
availability_zone: nova
mgmt_driver: noop
config: |
param0: key1
param1: key2
CP1:
type: tosca.nodes.nfv.CP.Tacker
properties:
management: True
anti_spoofing_protection: false
requirements:
- virtualLink:
node: VL1
- virtualBinding:
node: VDU1
CP2:
type: tosca.nodes.nfv.CP.Tacker
properties:
anti_spoofing_protection: false
requirements:
- virtualLink:
node: VL2
- virtualBinding:
node: VDU1
CP3:
type: tosca.nodes.nfv.CP.Tacker
properties:
anti_spoofing_protection: false
requirements:
- virtualLink:
node: VL3
- virtualBinding:
node: VDU1
VL1:
type: tosca.nodes.nfv.VL
properties:
network_name: net_mgmt
vendor: Tacker
VL2:
type: tosca.nodes.nfv.VL
properties:
network_name: net0
vendor: Tacker
VL3:
type: tosca.nodes.nfv.VL
properties:
network_name: net1
vendor: Tacker
Parameterized VNFD Template
---------------------------
This section will walk through parameterizing the template in above section
for re-use and allow for deploying multiple VNFs with the same template.
(Note: All the parameters italicized in the above template could be
parameterized to accept values at deploy time).
For the current illustration purpose, we will assume that an end user would
want to be able to supply different values for the parameters
**image_name**, **flavor**, **network**, **management**, **pkt_in_network**,
**pkt_out_network**, **vendor**, during each deploy of the VNF.
The next step is to substitute the identified parameter values that will be
provided at deploy time with { get_input: <param_name>}. For example, the
instance_type: **cirros-0.5.2-x86_64-disk** would now be replaced as:
**image: {get_input: image_name}**. The **get_input** is a reserved
keyword in the template that indicates value will be supplied at deploy time
for the parameter instance_type. The **image_name** is the variable that will
hold the value for the parameter **image** in a parameters value file
that will be supplied at VNF deploy time.
The template in above section will look like below when parameterized for
**image_name**, **flavor**, **network**, **management** and remaining
parameters.
Here is the sample template:
.. code-block:: yaml
tosca_definitions_version: tosca_simple_profile_for_nfv_1_0_0
description: VNF TOSCA template with input parameters
metadata:
template_name: sample-tosca-vnfd
topology_template:
inputs:
image_name:
type: string
description: Image Name
flavor:
type: string
description: Flavor Information
zone:
type: string
description: Zone Information
network:
type: string
description: management network
management:
type: string
description: management network
pkt_in_network:
type: string
description: In network
pkt_out_network:
type: string
description: Out network
vendor:
type: string
description: Vendor information
node_templates:
VDU1:
type: tosca.nodes.nfv.VDU.Tacker
properties:
image: { get_input: image_name}
flavor: {get_input: flavor}
availability_zone: { get_input: zone }
mgmt_driver: noop
config: |
param0: key1
param1: key2
CP1:
type: tosca.nodes.nfv.CP.Tacker
properties:
management: { get_input: management }
anti_spoofing_protection: false
requirements:
- virtualLink:
node: VL1
- virtualBinding:
node: VDU1
CP2:
type: tosca.nodes.nfv.CP.Tacker
properties:
anti_spoofing_protection: false
requirements:
- virtualLink:
node: VL2
- virtualBinding:
node: VDU1
CP3:
type: tosca.nodes.nfv.CP.Tacker
properties:
anti_spoofing_protection: false
requirements:
- virtualLink:
node: VL3
- virtualBinding:
node: VDU1
VL1:
type: tosca.nodes.nfv.VL
properties:
network_name: { get_input: network }
vendor: {get_input: vendor}
VL2:
type: tosca.nodes.nfv.VL
properties:
network_name: { get_input: pkt_in_network }
vendor: {get_input: vendor}
VL3:
type: tosca.nodes.nfv.VL
properties:
network_name: { get_input: pkt_out_network }
vendor: {get_input: vendor}
Parameter Values File at VNF Deploy
-----------------------------------
The below illustrates the parameters value file to be supplied containing the
values to be substituted for the above parameterized template above during
VNF deploy.
.. code-block:: yaml
image_name: cirros-0.5.2-x86_64-disk
flavor: m1.tiny
zone: nova
network: net_mgmt
management: True
pkt_in_network: net0
pkt_out_network: net1
vendor: Tacker
.. note::
IP address values for network interfaces should be in the below format
in the parameters values file:
param_name_value:
\- xxx.xxx.xxx.xxx
Key Summary
-----------
#. Parameterize your VNFD if you want to re-use for multiple VNF deployments.
#. Identify parameters that would need to be provided values at deploy time
and substitute value in VNFD template with {get_input: <param_value_name>},
where 'param_value_name' is the name of the variable that holds the value
in the parameters value file.
#. Supply a parameters value file in yaml format each time during VNF
deployment with different values for the parameters.
#. An example of a OpenStackClient vnf creation command specifying a
parameterized template and parameter values file would like below:
.. code-block:: console
openstack vnf create --vnfd-name <vnfd_name> --param-file <param_yaml_file> <vnf_name>
#. Specifying a parameter values file during VNF creation is also supported in
Horizon UI.
#. Sample VNFD parameterized templates and parameter values files can be found
at https://github.com/openstack/tacker/tree/master/samples/tosca-templates/vnfd.

View File

@ -1,284 +0,0 @@
VNF Forwarding Graph Descriptor (VNFFGD) Template Guide
=======================================================
Overview
--------
.. warning::
Legacy Tacker features excluding VIM feature are deprecated
and will be removed in the first major release after the Tacker server
version 9.0.0 (2023.1 Antelope release).
This document explains VNFFGD template structure and its various fields based
on TOSCA standards V1.0 [#f1]_.
For VNFFG usage, please refer to the document available at [#f6]_.
The behavioural and deployment information of a VNFFG in Tacker is defined in a
template known as VNFFGD. The template is based on TOSCA
standards and is written in YAML. It is on-boarded in a VNFFG catalog.
Each VNFFGD template will have below fields:
.. code-block:: yaml
tosca_definitions_version:
This defines the TOSCA definition version on which the template is based.
The current version being tosca_simple_profile_for_nfv_1_0_0.
tosca_default_namespace:
This is optional. It mentions default namespace which includes schema,
types version etc.
description:
A short description about the template.
metadata:
template_name: A name to be given to the template.
topology_template:
Describes the topology of the VNFFG under node_template field.
node_template:
Describes node types of a VNFFG.
FP:
Describes properties and path of a Forwarding Path.
groups:
Describes groupings of nodes that have an implied relationship.
VNFFG:
Describes properties and members of a VNF Forwarding Graph.
..
For examples, please refer sample VNFFGD templates available at GitHub [#f2]_.
Node Types
----------
For Tacker purposes a VNFFGD only includes **Forwarding Path**. In a full
Network Services Descriptor (NSD), it would include information about each
VNFD as well. However until that implementation, VNFD is described in a
separate template. Only a single Forwarding Path is currently supported.
**node_templates** is a child of **topology_template**.
Forwarding Path
---------------
Forwarding Path is a required entry in a VNFFGD. It describes the chain as
well as the classifier that will eventually be created to form a path
through a set of VNFs.
:type:
tosca.nodes.nfv.FP.Tacker
:properties:
Describes the properties of a FP. These include id (path ID), policy
(traffic match policy to flow through the path), and path (chain of
VNFs/Connection Points). A complete list of VNFFG properties currently
supported by Tacker are listed here [#f3]_ under **properties** section of
**tosca.nodes.nfv.FP.TackerV2** field.
Specifying FP Properties
^^^^^^^^^^^^^^^^^^^^^^^^
An example FP shown below:
.. code-block:: yaml
node_templates:
Forwarding_path1:
type: tosca.nodes.nfv.FP.TackerV2
description: creates path (CP12->CP22)
properties:
id: 51
policy:
type: ACL
criteria:
- name: block_tcp
classifier:
network_src_port_id: 640dfd77-c92b-45a3-b8fc-22712de480e1
destination_port_range: 80-1024
ip_proto: 6
ip_dst_prefix: 192.168.1.2/24
path:
- forwarder: VNFD1
capability: CP12
- forwarder: VNFD2
capability: CP22
..
Or, you can add more named classifiers like below since the current Tacker's
TOSCA template support multiple named classifiers
.. code-block:: yaml
node_templates:
Forwarding_path1:
type: tosca.nodes.nfv.FP.TackerV2
description: creates path (CP12->CP22)
properties:
id: 51
policy:
type: ACL
criteria:
- name: block_tcp
classifier:
network_src_port_id: 640dfd77-c92b-45a3-b8fc-22712de480e1
destination_port_range: 80-1024
ip_proto: 6
ip_dst_prefix: 192.168.1.2/24
- name: block_udp
classifier:
network_src_port_id: 640dfd77-c92b-45a3-b8fc-22712de480eda
destination_port_range: 80-1024
ip_proto: 17
ip_dst_prefix: 192.168.2.2/24
path:
- forwarder: VNFD1
capability: CP12
- forwarder: VNFD2
capability: CP22
..
id
""
ID from the above example is used to identify the path. This path ID will
be used in future implementations of Network Service Header (NSH) to
identify paths via the Service Path Identifier (SPI) attribute.
policy
""""""
Policy defines the type of match policy that will be used to distinguish
which traffic should enter this Forwarding Path. The only currently
supported type is ACL (access-list).
Please reference tosca.nfv.datatypes.aclType [#f4]_ under **properties**
section for more information on supported match criteria.
path
""""
Path defines an ordered list of nodes to traverse in a Forwarding Path. Each
node is really a logical port, which is defined in the path as a Connection
Point (CP) belonging to a specific VNFD. It is not necessary at VNFFGD
creation time to have predefined these VNFDs used in the path. They may be
created later. Up to 2 CPs may be listed (in order) per VNFD. If 2 are
listed, the first will be considered the ingress port for traffic and the
second will be the egress. If only one port is provided, then it will be
interpreted as both the ingress and egress port for traffic.
Groups
------
In Tacker and TOSCA, the VNFFG itself is described in this section. There
may only be a single VNFFG described in each VNFFGD under this section.
VNFFG
-----
VNFFG maps the Forwarding Path to other node types defined in the properties
section.
:type:
tosca.groups.nfv.VNFFG
:properties:
Describes the properties of a VNFFG. These include vendor, version,
dependent_virtual_link, connection_points, constituent_vnfs.
. A complete list of VNFFG properties currently
supported by Tacker are listed in TOSCA [#f5]_.
:members:
A list of Forwarding Paths which belong to this VNFFG. At the moment
only one is supported.
Specifying VNFFG Properties and Members
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
An example VNFFG shown below:
.. code-block:: yaml
groups:
VNFFG1:
type: tosca.groups.nfv.VNFFG
description: HTTP to Corporate Net
properties:
vendor: tacker
version: 1.0
number_of_endpoints: 2
dependent_virtual_link: [VL1,VL2,VL3]
connection_point: [CP1,CP2]
constituent_vnfs: [VNF1,VNF2]
members: [Forwarding_path1]
..
number_of_endpoints
"""""""""""""""""""
Number of CPs included in this VNFFG.
dependent_virtual_link
""""""""""""""""""""""
The Virtual Link Descriptors (VLD) that connect each VNF/CP in this
Forwarding Graph.
connection_point
""""""""""""""""
List of Connection Points defined in the Forwarding Path.
constituent_vnfs
""""""""""""""""
List of VNFD names used in this Forwarding Graph (also defined in Forwarding
Path).
Summary
-------
To summarize VNFFGD is written in YAML and describes a VNFFG topology. It is
composed of a Forwarding Path and a VNFFG. A full VNFFGD is shown below:
.. code-block:: yaml
tosca_definitions_version: tosca_simple_profile_for_nfv_1_0_0
description: Sample VNFFG template
topology_template:
node_templates:
Forwarding_path1:
type: tosca.nodes.nfv.FP.TackerV2
description: creates path (CP12->CP22)
properties:
id: 51
policy:
type: ACL
criteria:
- name: block_tcp
classifier:
network_src_port_id: 640dfd77-c92b-45a3-b8fc-22712de480e1
destination_port_range: 80-1024
ip_proto: 6
ip_dst_prefix: 192.168.1.2/24
path:
- forwarder: VNFD1
capability: CP12
- forwarder: VNFD2
capability: CP22
groups:
VNFFG1:
type: tosca.groups.nfv.VNFFG
description: HTTP to Corporate Net
properties:
vendor: tacker
version: 1.0
number_of_endpoints: 2
dependent_virtual_link: [VL12,VL22]
connection_point: [CP12,CP22]
constituent_vnfs: [VNFD1,VNFD2]
members: [Forwarding_path1]
..
.. rubric:: Footnotes
.. [#f1] http://docs.oasis-open.org/tosca/tosca-nfv/v1.0/tosca-nfv-v1.0.html
.. [#f2] https://github.com/openstack/tacker/tree/master/samples/tosca-templates/vnffgd
.. [#f3] https://opendev.org/openstack/tacker/src/branch/master/tacker/tosca/lib/tacker_nfv_defs.yaml
.. [#f4] https://opendev.org/openstack/tacker/src/branch/master/tacker/tosca/lib/tacker_nfv_defs.yaml
.. [#f5] http://docs.oasis-open.org/tosca/tosca-nfv/v1.0/csd03/tosca-nfv-v1.0-csd03.html#_Toc447714727
.. [#f6] https://docs.openstack.org/tacker/latest/user/vnffg_usage_guide.html

View File

@ -1,198 +0,0 @@
..
Copyright 2014-2017 OpenStack Foundation
All Rights Reserved.
Licensed under the Apache License, Version 2.0 (the "License"); you may
not use this file except in compliance with the License. You may obtain
a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
License for the specific language governing permissions and limitations
under the License.
========================
How to use Zabbix Plugin
========================
.. warning::
Legacy Tacker features excluding VIM feature are deprecated
and will be removed in the first major release after the Tacker server
version 9.0.0 (2023.1 Antelope release).
This document explains how Tacker VNFM's Zabbix-plugin works with Zabbix
monitoring tool to provide application monitoring for VNF.
VNF application monitoring requires three pre-installation or configuration
settings. You do not have to do a lot of work or complex settings.
1. Zabbix-agent Installation and Setting in VNF.
Zabbix-Agent must be installed in the VNF. And you need to set it up. The
necessary settings must be made in /etc/zabbix/zabbix_agentd.conf in the
VNF. Installation and the setting method is as follows.
.. code-block:: console
sudo apt-get update
sudo apt-get upgrade
sudo apt-get install zabbix-agent
sudo echo 'zabbix ALL=NOPASSWD: ALL' >> /etc/sudoers
Then open the /etc/zabbix/zabbix_agentd.conf file and write for Server,
ServerActive Hostname, EnableRemoteCommands. However, this approach is
more difficult to manage as the number of VNFs increases.
Therefore, to solve this problem, the method presented in this document
are as follows. After creating the VNF based on the TOSCA template,
the USER_DATA parameter is executed on the assumption that the VNF
is initialized. We can install and make the necessary settings
automatically. Here is an example of a User-data script.
.. code-block:: console
user_data: |
#!/bin/bash
sudo apt-get -y update
sudo apt-get -y upgrade
sudo apt-get -y install zabbix-agent
sudo sed -i "2s/.*/`ifconfig [Interface name in VNF] | grep ""\"inet addr:\"""| cut -d: -f2 | awk ""\"{ print $1 }\"""`/g" "/etc/hosts"
sudo sed -i "s/Bcast/`cat /etc/hostname`/g" "/etc/hosts"
sudo sed -i "3s/.*/[Zabbix Host IP Address]\tmonitor/g" "/etc/hosts"
sudo /etc/init.d/networking restart
sudo echo 'zabbix ALL=NOPASSWD: ALL' >> /etc/sudoers
sudo sed -i "s/# EnableRemoteCommands=0/EnableRemoteCommands=1/" "/etc/zabbix/zabbix_agentd.conf"
sudo sed -i "s/Server=127.0.0.1/Server=[Zabbix server's IP Address]/" "/etc/zabbix/zabbix_agentd.conf"
sudo sed -i "s/ServerActive=127.0.0.1/ServerActive=[Zabbix server's IP Address:Port]/" "/etc/zabbix/zabbix_agentd.conf"
sudo sed -i "s/Hostname=Zabbix server/Hostname=`cat /etc/hostname`/" "/etc/zabbix/zabbix_agentd.conf"
sudo service zabbix-agent restart
Use the sed command to modify the information in the conf file.
The basic network interface finds the IP address for ens3, sets it,
and sets the hostname. The zabbix user also needs permissions to run
the monitoring script. EnablRemoteCommands can be set to 1 to enable
execution of action commands created by Zabbix-Server.
2. Installing Zabbix Server
Because Zabbix Server requires a lot of processes for monitoring
projects, it is recommended to build it as a separate physical
node if performance stability is required. Installation instructions
for Zabbix Server are detailed in the manual provided by Zabbix (see [#first]_).
Examples of installation procedures are based on Ubuntu16.04
and zabbix 3.2.
.. code-block:: console
sudo apt-get update
sudo apt-get upgrade
sudo apt-get install php7.0* libapache2-mod-php7.0
sudo wget http://repo.zabbix.com/zabbix/3.2/ubuntu/pool/main/z/zabbix-release/zabbix-release_3.2-1+xenial_all.deb
sudo dpkg -i zabbix-release_3.2-1+xenial_all.deb
sudo apt-get install zabbix-server-mysql zabbix-frontend-php
Install mysql to store Zabbix-server and monitoring data and
necessary information, and install Zabbix-frotend-php to
provide web pages. Database creation is as follows.
.. code-block:: console
shell> mysql -uroot -p[ROOT_PASSWORD]
mysql> create database zabbix character set utf8 collate utf8_bin;
mysql> grant all privileges on zabbix.* to zabbix@localhost identified by '[PASSWORD]';
FLUSH PRIVILEGES;
mysql> quit;
cd /usr/share/doc/zabbix-server-mysql
zcat create.sql.gz | mysql -u root -p zabbix
We must modify the vi /etc/zabbix/zabbix_server.conf file to
provide the Zabbix-server.
.. code-block:: console
DBHost=localhost
DBName=[DBName]
DBUser=[DBUser]
DBPassword=[PASSWORD]
At the end of the next operation, we are now ready to use the
Zabbix-server to complete the finish operation.
.. code-block:: console
service zabbix-server start
update-rc.d zabbix-server enable
vi /etc/zabbix/apache.conf
=>php_value date.timezone [location/city]
service zabbix-server restart
service apache2 restart
This installation method is based on manual, but it includes
additional explanation and installation part of dependency
file installation.
3. Template
The following templates are used for application monitoring.
If we create a VNFD by creating the template below and use it
to create a VNF, we can monitor the application without any
additional steps. If we want automatic configuration, it is
recommended to use USER_DATA parameter.
If we enter Zabbix-related information in the template, you will
get a Token according to the internal workflow of Zabbix-plugin.
It it used to configure various monitoring functions.
.. code-block:: console
app_monitoring_policy:
name: zabbix
zabbix_username: [Zabbix user ID]
zabbix_password: [Zabbix user Password]
zabbix_server_ip: [Zabbix server IP]
zabbix_server_port: [Zabbix server Port]
parameters:
application:
app_name: [application-name]
app_port: [application-port]
ssh_username: [ssh username in VNF OS]
ssh_password: [ssh password in VNF OS]
app_status:
condition: [comparison,value]
actionname: [action name]
cmd-action: [Command to be executed in VNF]
app_memory:
condition: [comparison,value]
actionname: [action name]
cmd-action: [Command to be executed in VNF]
OS:
os_agent_info:
condition: [comparison,value]
actionname: [action name]
cmd-action: [Command to be executed in VNF]
os_proc_value:
condition: [comparison,value]
actionname: [action name]
cmd-action: [Command to be executed in VNF]
os_cpu_load:
condition: [comparison,value]
actionname: [action name]
cmd-action: [Command to be executed in VNF]
os_cpu_usage:
condition: [comparison,value]
actionname: [action name]
cmd-action: [Command to be executed in VNF]
4. Actions
Currently, only cmd is supported as an action function.
Respawn and Scale Action will be updated with additional
proposals and corresponding functionality as more template
definitions and corresponding additional functions are required.
References
==========
.. [#first] https://www.zabbix.com/documentation/3.2/manual

View File

@ -1,158 +0,0 @@
..
Copyright 2014-2015 OpenStack Foundation
All Rights Reserved.
Licensed under the Apache License, Version 2.0 (the "License"); you may
not use this file except in compliance with the License. You may obtain
a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
License for the specific language governing permissions and limitations
under the License.
==================================
Getting Started with Legacy Tacker
==================================
.. warning::
Legacy Tacker features excluding VIM feature are deprecated
and will be removed in the first major release after the Tacker server
version 9.0.0 (2023.1 Antelope release).
Once Tacker is installed successfully, follow the steps given below to get
started with Tacker and validate the installation.
Registering Default OpenStack VIM
---------------------------------
#. Get one account on the OpenStack VIM
In Tacker MANO system, VNFs can be on-boarded to a target OpenStack which
is also called as VIM. Get one account on your OpenStack, such as ``admin``
if you deploy your OpenStack via devstack. Here is an example of a user
named as ``nfv_user`` and has a project ``nfv`` on OpenStack for
VIM configuration. It is described in ``vim_config.yaml`` [#f1]_:
.. literalinclude:: ../../../samples/vim/vim_config.yaml
:language: yaml
.. note::
In Keystone, port ``5000`` is enabled for authentication service [#f2]_,
so the end users can use ``auth_url: 'http://127.0.0.1:5000/v3'`` instead
of ``auth_url: 'http://127.0.0.1/identity'`` as above mention.
By default, ``cert_verify`` is set as ``True``. To disable verifying SSL
certificate, user can set ``cert_verify`` parameter to ``False``.
#. Register VIM
Register the default VIM with the config file for VNF deployment.
This will be required when the optional argument ``--vim-id`` is not
provided by the user during VNF creation.
.. code-block:: console
$ openstack vim register --config-file vim_config.yaml \
--description 'my first vim' --is-default hellovim
Onboarding Sample VNF
---------------------
#. Create a ``sample-vnfd.yaml`` file with the following template
.. code-block:: yaml
tosca_definitions_version: tosca_simple_profile_for_nfv_1_0_0
description: Demo example
metadata:
template_name: sample-tosca-vnfd
topology_template:
node_templates:
VDU1:
type: tosca.nodes.nfv.VDU.Tacker
capabilities:
nfv_compute:
properties:
num_cpus: 1
mem_size: 512 MB
disk_size: 1 GB
properties:
image: cirros-0.5.2-x86_64-disk
availability_zone: nova
mgmt_driver: noop
config: |
param0: key1
param1: key2
CP1:
type: tosca.nodes.nfv.CP.Tacker
properties:
management: true
order: 0
anti_spoofing_protection: false
requirements:
- virtualLink:
node: VL1
- virtualBinding:
node: VDU1
VL1:
type: tosca.nodes.nfv.VL
properties:
network_name: net_mgmt
vendor: Tacker
.. note::
You can find several samples of tosca template for VNFD at [#f3]_.
#. Create a sample VNFD
.. code-block:: console
$ openstack vnf descriptor create --vnfd-file sample-vnfd.yaml samplevnfd
#. Create a VNF
.. code-block:: console
$ openstack vnf create --vnfd-name samplevnfd samplevnf
#. Some basic Tacker commands
You can find each of VIM, VNFD and VNF created in previous steps by using
``list`` subcommand.
.. code-block:: console
$ openstack vim list
$ openstack vnf descriptor list
$ openstack vnf list
If you inspect attributes of the instance, use ``show`` subcommand with
name or ID. For example, you can inspect the VNF named ``samplevnf``
as below.
.. code-block:: console
$ openstack vnf show samplevnf
References
----------
.. rubric:: Footnotes
.. [#] https://opendev.org/openstack/tacker/src/branch/master/samples/vim/vim_config.yaml
.. [#] https://docs.openstack.org/keystoneauth/latest/using-sessions.html#sessions-for-users
.. [#] https://opendev.org/openstack/tacker/src/branch/master/samples/tosca-templates/vnfd

View File

@ -1,149 +0,0 @@
..
Licensed under the Apache License, Version 2.0 (the "License"); you may
not use this file except in compliance with the License. You may obtain
a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
License for the specific language governing permissions and limitations
under the License.
.. _ref-vnfd:
=========================================
Orchestrating VNFs with attached Volumes
=========================================
.. warning::
Legacy Tacker features excluding VIM feature are deprecated
and will be removed in the first major release after the Tacker server
version 9.0.0 (2023.1 Antelope release).
To support persistent volumes to VNF, the TOSCA NFV profile supports a new type
of nodes. Tacker has now the feature of parsing of those new nodes and creation
of cinder volumes which are attached to the VDUs.
Prerequisites
~~~~~~~~~~~~~
To have persistent volume support to VDUs, we must enable cinder service in
addition to the other services needed by Tacker.
VNFD Changes
~~~~~~~~~~~~
There are two steps to have volume attached to VDU:
* Create volume or Use an existing volume.
* Attach Volume to VDU
Create Volume
~~~~~~~~~~~~~
To add volume, we need to add the below node to the VNFD:
.. code-block:: yaml
VB1:
type: tosca.nodes.BlockStorage.Tacker
properties:
size: 1 GB
Use Existing Volume
~~~~~~~~~~~~~~~~~~~
We can also attach an already created/existing volume with VNF by providing
``volume_id`` in input.
.. code-block:: yaml
topology_template:
inputs:
my_vol:
description: volume id
type: string
VB1:
type: tosca.nodes.BlockStorage.Tacker
properties:
volume_id: my_vol
Attach volume to VDU
~~~~~~~~~~~~~~~~~~~~
Next attach the created volume to VDU as below:
.. code-block:: yaml
CB1:
type: tosca.nodes.BlockStorageAttachment
properties:
location: /dev/vdb
requirements:
- virtualBinding:
node: VDU1
- virtualAttachment:
node: VB1
With these additions, the new VNFD looks like below:
.. code-block:: yaml
tosca_definitions_version: tosca_simple_profile_for_nfv_1_0_0
description: Demo example
metadata:
template_name: sample-tosca-vnfd
topology_template:
node_templates:
VDU1:
type: tosca.nodes.nfv.VDU.Tacker
capabilities:
nfv_compute:
properties:
num_cpus: 1
mem_size: 512 MB
disk_size: 1 GB
properties:
image: cirros-0.5.2-x86_64-disk
availability_zone: nova
mgmt_driver: noop
config: |
param0: key1
param1: key2
CP1:
type: tosca.nodes.nfv.CP.Tacker
properties:
management: true
order: 0
anti_spoofing_protection: false
requirements:
- virtualLink:
node: VL1
- virtualBinding:
node: VDU1
VB1:
type: tosca.nodes.BlockStorage.Tacker
properties:
size: 1 GB
CB1:
type: tosca.nodes.BlockStorageAttachment
properties:
location: /dev/vdb
requirements:
- virtualBinding:
node: VDU1
- virtualAttachment:
node: VB1
VL1:
type: tosca.nodes.nfv.VL
properties:
network_name: net_mgmt
vendor: Tacker

View File

@ -22,7 +22,4 @@ Reference
:maxdepth: 1
vim_config.rst
block_storage_usage_guide.rst
reservation_policy_usage_guide.rst
maintenance_usage_guide.rst
kubernetes_openid_token_auth_usage_guide.rst

View File

@ -1,188 +0,0 @@
..
Copyright 2020 Distributed Cloud and Network (DCN)
Licensed under the Apache License, Version 2.0 (the "License"); you may
not use this file except in compliance with the License. You may obtain
a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
License for the specific language governing permissions and limitations
under the License.
================================
VNF zero impact host maintenance
================================
.. warning::
Legacy Tacker features excluding VIM feature are deprecated
and will be removed in the first major release after the Tacker server
version 9.0.0 (2023.1 Antelope release).
Tacker allows you to maintenance host with VNF zero impact. Maintenance
workflows will be performed in the ``Fenix`` service by creating a session
which can do scaling, migrating VNFs and patch hosts.
References
~~~~~~~~~~
- `Fenix <https://fenix.readthedocs.io/en/latest/>`_.
- `Fenix Configuration Guide <https://fenix.readthedocs.io/en/latest/configuration/dependencies.html>`_.
Installation and configurations
-------------------------------
1. You need Fenix, Ceilometer and Aodh OpenStack services.
2. Modify the below configuration files:
/etc/ceilometer/event_pipeline.yaml
.. code-block:: yaml
sinks:
- name: event_sink
publishers:
- panko://
- notifier://
- notifier://?topic=alarm.all
/etc/ceilometer/event_definitions.yaml:
.. code-block:: yaml
- event_type: 'maintenance.scheduled'
traits:
service:
fields: payload.service
allowed_actions:
fields: payload.allowed_actions
instance_ids:
fields: payload.instance_ids
reply_url:
fields: payload.reply_url
state:
fields: payload.state
session_id:
fields: payload.session_id
actions_at:
fields: payload.actions_at
type: datetime
project_id:
fields: payload.project_id
reply_at:
fields: payload.reply_at
type: datetime
metadata:
fields: payload.metadata
- event_type: 'maintenance.host'
traits:
host:
fields: payload.host
project_id:
fields: payload.project_id
session_id:
fields: payload.session_id
state:
fields: payload.state
Deploying maintenance tosca template with tacker
------------------------------------------------
When template is normal
~~~~~~~~~~~~~~~~~~~~~~~
If ``Fenix`` service is enabled and maintenance event_types are defined, then
all VNF created by legacy VNFM will get ``ALL_MAINTENANCE`` resource in Stack.
.. code-block:: yaml
resources:
ALL_maintenance:
properties:
alarm_actions:
- http://openstack-master:9890/v1.0/vnfs/e8b9bec5-541b-492c-954e-cd4af71eda1f/maintenance/0cc65f4bba9c42bfadf4aebec6ae7348/hbyhgkav
event_type: maintenance.scheduled
type: OS::Aodh::EventAlarm
When template has maintenance property
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
If VDU in VNFD has maintenance property, then VNFM creates
``[VDU_NAME]_MAINTENANCE`` alarm resources and will be use for VNF software
modification later. This is not works yet. It will be updated.
``Sample tosca-template``:
.. code-block:: yaml
tosca_definitions_version: tosca_simple_profile_for_nfv_1_0_0
description: VNF TOSCA template with maintenance
metadata:
template_name: sample-tosca-vnfd-maintenance
topology_template:
node_templates:
VDU1:
type: tosca.nodes.nfv.VDU.Tacker
properties:
maintenance: True
image: cirros-0.5.2-x86_64-disk
capabilities:
nfv_compute:
properties:
disk_size: 1 GB
mem_size: 512 MB
num_cpus: 2
CP1:
type: tosca.nodes.nfv.CP.Tacker
properties:
management: true
order: 0
anti_spoofing_protection: false
requirements:
- virtualLink:
node: VL1
- virtualBinding:
node: VDU1
VL1:
type: tosca.nodes.nfv.VL
properties:
network_name: net_mgmt
vendor: Tacker
policies:
- SP1:
type: tosca.policies.tacker.Scaling
properties:
increment: 1
cooldown: 120
min_instances: 1
max_instances: 3
default_instances: 2
targets: [VDU1]
Configure maintenance constraints with config yaml
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
When ``Fenix`` does maintenance, it requires some constraints for zero impact.
Like below config file, each VNF can set and update constraints.
.. code-block:: yaml
maintenance:
max_impacted_members: 1
recovery_time: 60,
mitigation_type: True,
lead_time: 120,
migration_type: 'MIGRATE'

View File

@ -1,518 +0,0 @@
..
Copyright 2018 NTT DATA
Licensed under the Apache License, Version 2.0 (the "License"); you may
not use this file except in compliance with the License. You may obtain
a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
License for the specific language governing permissions and limitations
under the License.
===================================
VNF scaling with reserved resources
===================================
.. warning::
Legacy Tacker features excluding VIM feature are deprecated
and will be removed in the first major release after the Tacker server
version 9.0.0 (2023.1 Antelope release).
Tacker allows you to configure reserved compute resources in reservation
policy. The compute resources should be first reserved in the OpenStack
``Blazar`` service by creating leases which can then be configured in the
VNFD template.
TOSCA schema for reservation policy
-----------------------------------
Tacker defines TOSCA schema for the reservation policy as given below:
.. code-block:: yaml
tosca.policies.tacker.Reservation:
derived_from: tosca.policies.Reservation
reservation:
start_actions:
type: map
entry_schema:
type: string
required: true
before_end_actions:
type: map
entry_schema:
type: string
required: true
end_actions:
type: map
entry_schema:
type: string
required: true
properties:
lease_id:
type: string
required: true
Following TOSCA snippet shows VNFD template using reservation policy.
In this policy, you can see there are three different types of actions.
#. start_actions
#. before_end_actions
#. end_actions
In these actions, you can configure multiple actions but scaling policy is
mandatory in start_actions and one of before_end_actions or end_actions.
The scaling policy configured in the start_actions will be scaling-out policy
so configure max_instances as per the compute resources reserved in the Blazar
service and the scaling policy configured in either of before_end_actions or
end_actions will be scaling-in policy so configure min_instances to 0.
Also, `default_instances` should be set to 0 because we don't want VDUs until
tacker receives the lease start trigger from Blazar through Aodh service.
The parameter `increment` should also be set equal to `max_instances` as
tacker will receive lease start trigger only once during the lifecycle
of a lease.
.. code-block:: yaml
policies:
- RSV:
type: tosca.policies.tacker.Reservation
reservation:
start_actions: [SP_RSV, log]
before_end_actions: [SP_RSV]
end_actions: [noop]
properties:
lease_id: { get_input: lease_id }
- SP_RSV:
type: tosca.policies.tacker.Scaling
properties:
increment: 2
cooldown: 120
min_instances: 0
max_instances: 2
default_instances: 0
targets: [VDU1]
Installation and configurations
-------------------------------
1. You need Blazar, ceilometer and Aodh OpenStack services.
2. Modify the below configuration files:
/etc/blazar/blazar.conf:
.. code-block:: yaml
[oslo_messaging_notifications]
driver = messaging, log
/etc/ceilometer/event_pipeline.yaml:
.. code-block:: yaml
sinks:
- name: event_sink
transformers:
publishers:
- gnocchi://?archive_policy=low&filter_project=gnocchi_swift
- notifier://
- notifier://?topic=alarm.all
/etc/ceilometer/event_definitions.yaml:
.. code-block:: yaml
- event_type: lease.event.start_lease
traits: &lease_traits
lease_id:
fields: payload.lease_id
project_id:
fields: payload.project_id
user_id:
fields: payload.user_id
start_date:
fields: payload.start_date
end_date:
fields: payload.end_date
- event_type: lease.event.before_end_lease
traits: *lease_traits
- event_type: lease.event.end_lease
traits: *lease_traits
Deploying reservation tosca template with tacker
------------------------------------------------
When reservation resource type is virtual:instance
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1. Create a lease in blazar for instance reservation:
.. sourcecode:: console
$ blazar lease-create --reservation resource_type=virtual:instance,vcpus=1,memory_mb=1024,disk_gb=20,amount=0,affinity=False
--start-date "2019-04-24 20:00" --end-date "2019-07-09 21:00" lease-1
+--------------+-----------------------------------------------------------------+
| Field | Value |
+--------------+-----------------------------------------------------------------+
| created_at | 2018-12-10 07:44:46 |
| degraded | False |
| end_date | 2019-07-09T21:00:00.000000 |
| events | { |
| | "status": "UNDONE", |
| | "lease_id": "aca14613-2bed-480e-aefe-97fa02813fcf", |
| | "event_type": "start_lease", |
| | "created_at": "2018-12-10 07:44:49", |
| | "updated_at": null, |
| | "time": "2019-04-24T20:00:00.000000", |
| | "id": "038c882a-1c9e-4785-aab0-07a6898653cf" |
| | } |
| | { |
| | "status": "UNDONE", |
| | "lease_id": "aca14613-2bed-480e-aefe-97fa02813fcf", |
| | "event_type": "before_end_lease", |
| | "created_at": "2018-12-10 07:44:49", |
| | "updated_at": null, |
| | "time": "2019-07-09T20:00:00.000000", |
| | "id": "607fb807-55e1-44ff-927e-64a4ec71b0f1" |
| | } |
| | { |
| | "status": "UNDONE", |
| | "lease_id": "aca14613-2bed-480e-aefe-97fa02813fcf", |
| | "event_type": "end_lease", |
| | "created_at": "2018-12-10 07:44:49", |
| | "updated_at": null, |
| | "time": "2019-07-09T21:00:00.000000", |
| | "id": "fd6b1f91-bfc8-49d8-94a7-5136ee2fdaee" |
| | } |
| id | aca14613-2bed-480e-aefe-97fa02813fcf |
| name | lease-1 |
| project_id | 683322bea7154651b18792b59df67d4e |
| reservations | { |
| | "status": "pending", |
| | "memory_mb": 1024, |
| | "lease_id": "aca14613-2bed-480e-aefe-97fa02813fcf", |
| | "resource_properties": "", |
| | "disk_gb": 10, |
| | "resource_id": "bb335cc1-770d-4251-90d8-8f9ea95dac56", |
| | "created_at": "2018-12-10 07:44:46", |
| | "updated_at": "2018-12-10 07:44:49", |
| | "missing_resources": false, |
| | "server_group_id": "589b014e-2a68-48b1-87ee-4e9054560206", |
| | "amount": 1, |
| | "affinity": false, |
| | "flavor_id": "edcc0e22-1f7f-4d57-abe4-aeb0775cbd36", |
| | "id": "edcc0e22-1f7f-4d57-abe4-aeb0775cbd36", |
| | "aggregate_id": 6, |
| | "vcpus": 1, |
| | "resource_type": "virtual:instance", |
| | "resources_changed": false |
| | } |
| start_date | 2019-04-24T20:00:00.000000 |
| status | PENDING |
| trust_id | 080f059dabbb4cb0a6398743abcc3224 |
| updated_at | 2018-12-10 07:44:49 |
| user_id | c42317bee82940509427c63410fd058a |
+--------------+-----------------------------------------------------------------+
..
2. Replace the flavor, lease_id and server_group_id value in the parameter file
given for reservation with the lease response flavor, lease_id and
server_group_id value.
Ref:
``samples/tosca-templates/vnfd/tosca-vnfd-instance-reservation-param-values.yaml``
.. note::
The `server_group_id` parameter should be specified in VDU section only
when reservation resource type is `virtual:instance`. Operator shouldn't
configure both placement policy under policies and server_group_id in VDU
in VNFD template otherwise the server_group_id specified in VDU will be
superseded by the server group that will be created by heat for placement
policy.
.. code-block:: yaml
{
flavor: 'edcc0e22-1f7f-4d57-abe4-aeb0775cbd36',
lease_id: 'aca14613-2bed-480e-aefe-97fa02813fcf',
resource_type: 'virtual_instance',
server_group_id: '8b01bdf8-a47c-49ea-96f1-3504fccfc9d4',
}
``Sample tosca-template``:
.. sourcecode:: yaml
tosca_definitions_version: tosca_simple_profile_for_nfv_1_0_0
description: VNF TOSCA template with flavor input parameters
metadata:
template_name: sample-tosca-vnfd-instance-reservation
topology_template:
inputs:
flavor:
type: string
description: Flavor Information
lease_id:
type: string
description: lease id
resource_type:
type: string
description: reservation resource type
server_group_id:
type: string
description: server group id
node_templates:
VDU1:
type: tosca.nodes.nfv.VDU.Tacker
properties:
image: cirros-0.5.2-x86_64-disk
flavor: { get_input: flavor }
reservation_metadata:
resource_type: { get_input: resource_type }
id: { get_input: server_group_id }
CP1:
type: tosca.nodes.nfv.CP.Tacker
properties:
management: true
order: 0
anti_spoofing_protection: false
requirements:
- virtualLink:
node: VL1
- virtualBinding:
node: VDU1
VL1:
type: tosca.nodes.nfv.VL
properties:
network_name: net_mgmt
vendor: Tacker
policies:
- RSV:
type: tosca.policies.tacker.Reservation
reservation:
start_actions: [SP_RSV]
before_end_actions: [SP_RSV]
end_actions: [noop]
properties:
lease_id: { get_input: lease_id }
- SP_RSV:
type: tosca.policies.tacker.Scaling
properties:
increment: 2
cooldown: 120
min_instances: 0
max_instances: 2
default_instances: 0
targets: [VDU1]
..
``Scaling process``
After the lease lifecycle begins in the Blazar service, tacker will receive a
start_lease event at ``2019-04-24T20:00:00``. Tacker will start scaling-out
process and you should notice VDUs will be created as per the ``increment``
value.
Similarly, when before_end_lease event is triggered at ``2019-07-09T20:00``,
tacker will start scaling-in process in which VDUs will be deleted as per the
``increment`` value.
When reservation resource type is physical:host
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1. Create a lease for compute host reservation:
.. sourcecode:: console
$ blazar lease-create --physical-reservation min=1,max=1,hypervisor_properties='[">=", "$vcpus", "2"]' --start-date
"2019-04-08 12:00" --end-date "2019-07-09 12:00" lease-1
+--------------+--------------------------------------------------------------+
| Field | Value |
+--------------+--------------------------------------------------------------+
| created_at | 2018-12-10 07:42:44 |
| degraded | False |
| end_date | 2019-07-09T12:00:00.000000 |
| events | { |
| | "status": "UNDONE", |
| | "lease_id": "5caba925-b591-48d9-bafb-6b2b1fc1c934", |
| | "event_type": "before_end_lease", |
| | "created_at": "2018-12-10 07:42:46", |
| | "updated_at": null, |
| | "time": "2019-07-09T11:00:00.000000", |
| | "id": "62682a3a-07fa-49f9-8f95-5b1d8ea49a7f" |
| | } |
| | { |
| | "status": "UNDONE", |
| | "lease_id": "5caba925-b591-48d9-bafb-6b2b1fc1c934", |
| | "event_type": "end_lease", |
| | "created_at": "2018-12-10 07:42:46", |
| | "updated_at": null, |
| | "time": "2019-07-09T12:00:00.000000", |
| | "id": "9f98f8a3-3154-4e8f-b27e-8f61646110d2" |
| | } |
| | { |
| | "status": "UNDONE", |
| | "lease_id": "5caba925-b591-48d9-bafb-6b2b1fc1c934", |
| | "event_type": "start_lease", |
| | "created_at": "2018-12-10 07:42:46", |
| | "updated_at": null, |
| | "time": "2019-04-08T12:00:00.000000", |
| | "id": "c9cd4310-ba8e-41da-a6a0-40dc38702fab" |
| | } |
| id | 5caba925-b591-48d9-bafb-6b2b1fc1c934 |
| name | lease-1 |
| project_id | 683322bea7154651b18792b59df67d4e |
| reservations | { |
| | "status": "pending", |
| | "before_end": "default", |
| | "lease_id": "5caba925-b591-48d9-bafb-6b2b1fc1c934", |
| | "resource_id": "1c05b68f-a94a-4c64-8010-745c3d51dcd8", |
| | "max": 1, |
| | "created_at": "2018-12-10 07:42:44", |
| | "min": 1, |
| | "updated_at": "2018-12-10 07:42:46", |
| | "missing_resources": false, |
| | "hypervisor_properties": "[\">=\", \"$vcpus\", \"2\"]", |
| | "resource_properties": "", |
| | "id": "c56778a4-028c-4425-8e99-babc049de9dc", |
| | "resource_type": "physical:host", |
| | "resources_changed": false |
| | } |
| start_date | 2019-04-08T12:00:00.000000 |
| status | PENDING |
| trust_id | dddffafc804c4063898f0a5d2a6d8709 |
| updated_at | 2018-12-10 07:42:46 |
| user_id | c42317bee82940509427c63410fd058a |
+--------------+--------------------------------------------------------------+
..
2. Replace the flavor with reservation in tosca-template given for reservation
policy as below:
Ref:
``samples/tosca-templates/vnfd/tosca-vnfd-host-reservation.yaml``
.. note::
reservation id will be used only when reservation resource type is
physical:host.
Add lease_id and reservation id in the parameter file.
.. code-block:: yaml
{
resource_type: 'physical_host',
reservation_id: 'c56778a4-028c-4425-8e99-babc049de9dc',
lease_id: '5caba925-b591-48d9-bafb-6b2b1fc1c934',
}
``Sample tosca-template``:
.. sourcecode:: yaml
tosca_definitions_version: tosca_simple_profile_for_nfv_1_0_0
description: VNF TOSCA template with reservation_id input parameters
metadata:
template_name: sample-tosca-vnfd-host-reservation
topology_template:
inputs:
resource_type:
type: string
description: reservation resource type
reservation_id:
type: string
description: Reservation Id Information
lease_id:
type: string
description: lease id
node_templates:
VDU1:
type: tosca.nodes.nfv.VDU.Tacker
properties:
image: cirros-0.5.2-x86_64-disk
reservation_metadata:
resource_type: { get_input: resource_type }
id: { get_input: reservation_id }
CP1:
type: tosca.nodes.nfv.CP.Tacker
properties:
management: true
order: 0
anti_spoofing_protection: false
requirements:
- virtualLink:
node: VL1
- virtualBinding:
node: VDU1
VL1:
type: tosca.nodes.nfv.VL
properties:
network_name: net_mgmt
vendor: Tacker
policies:
- RSV:
type: tosca.policies.tacker.Reservation
reservation:
start_actions: [SP_RSV]
before_end_actions: [noop]
end_actions: [SP_RSV]
properties:
lease_id: { get_input: lease_id }
- SP_RSV:
type: tosca.policies.tacker.Scaling
properties:
increment: 2
cooldown: 120
min_instances: 0
max_instances: 2
default_instances: 0
targets: [VDU1]
..
``Scaling process``
After the lease lifecycle begins in the Blazar service, tacker will receive a
start_lease event at ``2019-04-08T12:00:00``. Tacker will start scaling-out
process and you should notice VDUs will be created as per the ``increment``
value.
Similarly, when end_lease event is triggered at ``2019-07-09T12:00``, tacker
will start scaling-in process in which VDUs will be deleted as per the
``increment`` value.

View File

@ -1,265 +0,0 @@
..
Licensed under the Apache License, Version 2.0 (the "License"); you may
not use this file except in compliance with the License. You may obtain
a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
License for the specific language governing permissions and limitations
under the License.
.. _ref-alarm_frm:
==========================
Alarm monitoring framework
==========================
.. warning::
Legacy Tacker features excluding VIM feature are deprecated
and will be removed in the first major release after the Tacker server
version 9.0.0 (2023.1 Antelope release).
This document describes how to use alarm-based monitoring driver in Tacker.
Sample TOSCA with monitoring policy
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
The following example shows monitoring policy using TOSCA template.
The target (VDU1) of the monitoring policy in this example need to be
described firstly like other TOSCA templates in Tacker.
.. code-block:: yaml
policies:
- vdu1_cpu_usage_monitoring_policy:
type: tosca.policies.tacker.Alarming
triggers:
vdu_hcpu_usage_respawning:
event_type:
type: tosca.events.resource.utilization
implementation: ceilometer
metric: cpu_util
condition:
threshold: 50
constraint: utilization greater_than 50%
granularity: 600
evaluations: 1
aggregation_method: mean
resource_type: instance
comparison_operator: gt
metadata: VDU1
action: [respawn]
Alarm framework already supported the some default backend actions like
**scaling, respawn, log, and log_and_kill**.
Tacker users could change the desired action as described in the above example.
Until now, the backend actions could be pointed to the specific policy which
is also described in TOSCA template like scaling policy. The integration
between alarming monitoring and scaling was also supported by Alarm monitor
in Tacker:
.. code-block:: yaml
tosca_definitions_version: tosca_simple_profile_for_nfv_1_0_0
description: Demo example
metadata:
template_name: sample-tosca-vnfd
topology_template:
node_templates:
VDU1:
type: tosca.nodes.nfv.VDU.Tacker
capabilities:
nfv_compute:
properties:
disk_size: 1 GB
mem_size: 512 MB
num_cpus: 2
properties:
image: cirros-0.5.2-x86_64-disk
mgmt_driver: noop
availability_zone: nova
metadata: {metering.server_group: SG1}
CP1:
type: tosca.nodes.nfv.CP.Tacker
properties:
management: true
anti_spoofing_protection: false
requirements:
- virtualLink:
node: VL1
- virtualBinding:
node: VDU1
VL1:
type: tosca.nodes.nfv.VL
properties:
network_name: net_mgmt
vendor: Tacker
policies:
- SP1:
type: tosca.policies.tacker.Scaling
targets: [VDU1]
properties:
increment: 1
cooldown: 120
min_instances: 1
max_instances: 3
default_instances: 1
- vdu_cpu_usage_monitoring_policy:
type: tosca.policies.tacker.Alarming
triggers:
vdu_hcpu_usage_scaling_out:
event_type:
type: tosca.events.resource.utilization
implementation: ceilometer
metric: cpu_util
condition:
threshold: 80
constraint: utilization greater_than 80%
granularity: 300
evaluations: 1
aggregation_method: mean
resource_type: instance
comparison_operator: gt
metadata: SG1
action: [SP1]
vdu_lcpu_usage_scaling_in:
event_type:
type: tosca.events.resource.utilization
implementation: ceilometer
metric: cpu_util
condition:
threshold: 10
constraint: utilization less_than 10%
granularity: 300
evaluations: 1
aggregation_method: mean
resource_type: instance
comparison_operator: lt
metadata: SG1
action: [SP1]
**NOTE:**
metadata defined in VDU properties must be matched with metadata
in monitoring policy
How to setup environment
~~~~~~~~~~~~~~~~~~~~~~~~
If OpenStack Devstack is used to test alarm monitoring in Tacker, OpenStack
Ceilometer and Aodh plugins will need to be enabled in local.conf:
.. code-block::ini
**enable_plugin ceilometer https://opendev.org/openstack/ceilometer master**
**enable_plugin aodh https://opendev.org/openstack/aodh master**
How to monitor VNFs via alarm triggers
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
How to setup alarm configuration
================================
Tacker provides templates that implemented Ceilometer as alarm for monitoring
VNFs, which are located in **tacker/samples/tosca-templates/vnfd**.
1. tosca-vnfd-alarm-multi-actions.yaml
2. tosca-vnfd-alarm-respawn.yaml
3. tosca-vnfd-alarm-scale.yaml
The following commands shows creating VNF with alarms for scaling in and out.
.. code-block:: console
$ cd ~/tacker/samples/tosca-templates/vnfd
$ openstack vnf create --vnfd-template tosca-vnfd-alarm-scale.yaml VNF1
Firstly, vnfd and vnf need to be created successfully using pre-defined TOSCA
template for alarm monitoring. Then, in order to know whether alarm
configuration defined in Tacker is successfully passed to Ceilometer,
Tacker users could use CLI:
.. code-block:: console
$ openstack alarm list
+--------------------------------------+--------------------------------------------+-----------------------------------------------------------------------------------+-------------------+----------+---------+
| alarm_id | type | name | state | severity | enabled |
+--------------------------------------+--------------------------------------------+-----------------------------------------------------------------------------------+-------------------+----------+---------+
| f418ebf8-f8a6-4991-8f0d-938e38434411 | gnocchi_aggregation_by_resources_threshold | VNF1_7582cdf4-58ed-4df8-8fa2-c15938adf70b-vdu_hcpu_usage_scaling_out-4imzw3c7cicb | insufficient data | low | True |
| 70d86622-940a-4bc3-87c2-d5dfbb01bbea | gnocchi_aggregation_by_resources_threshold | VNF1_7582cdf4-58ed-4df8-8fa2-c15938adf70b-vdu_lcpu_usage_scaling_in-dwvdvbegiqdk | insufficient data | low | True |
+--------------------------------------+--------------------------------------------+-----------------------------------------------------------------------------------+-------------------+----------+---------+
.. code-block:: console
$ openstack alarm show 70d86622-940a-4bc3-87c2-d5dfbb01bbea
+---------------------------+------------------------------------------------------------------------------------------------------------------+
| Field | Value |
+---------------------------+------------------------------------------------------------------------------------------------------------------+
| aggregation_method | mean |
| alarm_actions | [u'http://ubuntu:9890/v1.0/vnfs/7582cdf4-58ed-4df8-8fa2-c15938adf70b/vdu_lcpu_usage_scaling_in/SP1-in/v2fq7rd7'] |
| alarm_id | 70d86622-940a-4bc3-87c2-d5dfbb01bbea |
| comparison_operator | lt |
| description | utilization less_than 10% |
| enabled | True |
| evaluation_periods | 1 |
| granularity | 60 |
| insufficient_data_actions | [] |
| metric | cpu_util |
| name | VNF1_7582cdf4-58ed-4df8-8fa2-c15938adf70b-vdu_lcpu_usage_scaling_in-dwvdvbegiqdk |
| ok_actions | [] |
| project_id | b5e054a3861b4da2b084aca9530096be |
| query | {"=": {"server_group": "SG1-64beb5e4-c0"}} |
| repeat_actions | True |
| resource_type | instance |
| severity | low |
| state | insufficient data |
| state_reason | Not evaluated yet |
| state_timestamp | 2018-07-20T06:00:33.142762 |
| threshold | 10.0 |
| time_constraints | [] |
| timestamp | 2018-07-20T06:00:33.142762 |
| type | gnocchi_aggregation_by_resources_threshold |
| user_id | 61fb5c6193e549f3baee26bd508c0b29 |
+---------------------------+------------------------------------------------------------------------------------------------------------------+
How to trigger alarms:
======================
As shown in the above Ceilometer command, alarm state is shown as
"insufficient data". Alarm is triggered by Ceilometer once alarm
state changes to "alarm".
To make VNF instance reach to the pre-defined threshold, some
simple scripts could be used.
Note: Because Ceilometer pipeline set the default interval to 600s (10 mins),
in order to reduce this interval, users could edit "interval" value
in **/etc/ceilometer/pipeline.yaml** file and then restart Ceilometer service.
Another way could be used to check if backend action is handled well in Tacker:
.. code-block:: console
curl -H "Content-Type: application/json" -X POST -d '{"alarm_id": "35a80852-e24f-46ed-bd34-e2f831d00172", "current": "alarm"}' http://ubuntu:9890/v1.0/vnfs/7582cdf4-58ed-4df8-8fa2-c15938adf70b/vdu_lcpu_usage_scaling_in/SP1-in/v2fq7rd7
Then, users can check Horizon to know if vnf is respawned. Please note
that the url used in the above command could be captured from
"**ceilometer alarm-show** command as shown before. "key" attribute
in body request need to be captured from the url. The reason is that
key will be authenticated so that the url is requested only one time.

View File

@ -1,429 +0,0 @@
====================================================
Experimenting containerized VNFs with Kubernetes VIM
====================================================
.. warning::
Legacy Tacker features excluding VIM feature are deprecated
and will be removed in the first major release after the Tacker server
version 9.0.0 (2023.1 Antelope release).
In the past, Tacker only supports creating virtual machine based VNF using
Heat. This section covers how to deploy `containerized VNF` using Kubernetes
VIM in Tacker.
Prepare Kubernetes VIM
======================
To use Kubernetes type of VNF, firstly user must register Kubernetes VIM.
Tacker supports Kubernetes authentication with two types: basic authentication
(username and password) or Bearer token. User can secure the connection to
Kubernetes cluster by providing SSL certificate. The following
``vim-config.yaml`` file provides necessary information to register a
Kubernetes VIM.
.. code-block:: console
auth_url: "https://192.168.11.110:6443"
username: "admin"
password: "admin"
project_name: "default"
ssl_ca_cert: None
type: "kubernetes"
More details about registering Kubernetes VIM, please refer [#first]_
Sample container TOSCA templates
================================
1. One container per VDU example
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Currently, because Kubernetes does not support multiple networks such as
choosing networks, connection points for applications, therefore users only
deploys their applications with default networks (Pod and Service networks).
In this case, user need to provide only information about VDU to create a VNF
in Tacker.
The following example shows TOSCA template of containerized VNF for pure
Kubernetes environment with one container per VDU.
**tosca-vnfd-containerized-two-containers.yaml**
.. code-block:: yaml
tosca_definitions_version: tosca_simple_profile_for_nfv_1_0_0
description: A sample containerized VNF with two containers per VDU
metadata:
template_name: sample-tosca-vnfd
topology_template:
node_templates:
VDU1:
type: tosca.nodes.nfv.VDU.Tacker
properties:
namespace: default
mapping_ports:
- "80:80"
- "88:88"
service_type: NodePort
vnfcs:
front_end:
num_cpus: 0.5
mem_size: 512 MB
image: nginx
ports:
- "80"
rss_reader:
num_cpus: 0.5
mem_size: 512 MB
image: nickchase/rss-php-nginx:v1
ports:
- "88"
policies:
- SP1:
type: tosca.policies.tacker.Scaling
targets: [VDU1]
properties:
min_instances: 1
max_instances: 3
target_cpu_utilization_percentage: 40
default_instances: 1 # required parameter but ignored for cnf
increment: 1 # required parameter but ignored for cnf
In "vnfcs", there are 2 components: front_end and rss_reader.
We model them as Containers [#second]_ inside a Pod [#third]_. To provide
recover ability of these containers, we put all of containers inside a
Deployment [#fourth]_ object, that can warrant the number of replica with
auto-healing automatically.
The following table shows details about parameter of a Container. Config is
translated to ConfigMap [#fifth]_, when user want to update the VNF (config),
equivalent ConfigMap will be updated.
.. code-block:: console
+-----------------------------------------------------------------------------------------------+
| vnfcs | Example | Description |
+-----------------------------------------------------------------------------------------------+
| name | front_end | Name of container |
+-----------------------------------------------------------------------------------------------+
| num_cpus | 0.5 | Number of CPUs |
+-----------------------------------------------------------------------------------------------+
| mem_size | 512 MB | Memory size |
+-----------------------------------------------------------------------------------------------+
| image | nginx | Image to launch container |
+-----------------------------------------------------------------------------------------------+
| ports | - "80" | Exposed ports in container |
+-----------------------------------------------------------------------------------------------+
| command | ['/bin/sh','echo'] | Command when container was started |
+-----------------------------------------------------------------------------------------------+
| args | ['hello'] | Args of command |
+-----------------------------------------------------------------------------------------------+
| config | param0: key1 | Set variables |
| | param1: key2 | |
+-----------------------------------------------------------------------------------------------+
In Tacker, VDU is modeled as a Service [#sixth]_ in Kubernetes. Because Pods
can be easily replaced by others, when the number of replica increased,
workload should be shared between Pods. To do this task, we model VDU as
Service, it acts as a Load balancer for Pods. Currently, we support some
parameters as the following table.
.. code-block:: console
+--------------------------------------------------------------------------------------------------------------------------------+
| VDU properties | Example | Description |
+--------------------------------------------------------------------------------------------------------------------------------+
| namespace | default | Namespace in Kubernetes where all objects are deployed |
+--------------------------------------------------------------------------------------------------------------------------------+
| mapping_ports | - "443:443" | Published ports and target ports (container ports) of Service Kubernetes |
| | - "80:8080" | |
+--------------------------------------------------------------------------------------------------------------------------------+
| labels | "app: webserver" | Labels which is set for Kubernetes objects, it is used as Selector to |
| | | Service can send requests to Pods |
+--------------------------------------------------------------------------------------------------------------------------------+
| service_type | ClusterIP | Set service type for Service object. |
| | | |
+--------------------------------------------------------------------------------------------------------------------------------+
| vnfcs | | Vnfcs are modeled by Containers and Deployment object. User can limit |
| | | resource, set image, publish container ports, set commands and variables |
+--------------------------------------------------------------------------------------------------------------------------------+
User can also set scaling policy for VDU by adding the following policy. These
information is translated to Horizontal Pod Autoscaler in Kubernetes. In the
current scope, we just support auto-scaling with CPU utilization, more metrics
will be added in the future.
.. code-block:: yaml
policies:
- SP1:
type: tosca.policies.tacker.Scaling
targets: [VDU1]
properties:
min_instances: 1
max_instances: 3
target_cpu_utilization_percentage: 40
default_instances: 1 # required parameter but ignored for cnf
increment: 1 # required parameter but ignored for cnf
2. Two containers per VDU example
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Similar to the above example, in this scenario, we define 2 containers in VDU1.
**tosca-vnfd-containerized.yaml**
.. code-block:: yaml
tosca_definitions_version: tosca_simple_profile_for_nfv_1_0_0
description: A sample containerized VNF with two containers per VDU
metadata:
template_name: sample-tosca-vnfd
topology_template:
node_templates:
VDU1:
type: tosca.nodes.nfv.VDU.Tacker
properties:
namespace: default
mapping_ports:
- "80:8080"
labels:
- "app: webserver"
service_type: ClusterIP
vnfcs:
web_server:
num_cpus: 0.5
mem_size: 512 MB
image: celebdor/kuryr-demo
ports:
- "8080"
config: |
param0: key1
param1: key2
policies:
- SP1:
type: tosca.policies.tacker.Scaling
targets: [VDU1]
properties:
min_instances: 1
max_instances: 3
target_cpu_utilization_percentage: 40
default_instances: 1 # required parameter but ignored for cnf
increment: 1 # required parameter but ignored for cnf
Viewing a containerized VNF
~~~~~~~~~~~~~~~~~~~~~~~~~~~
Create sample containerized VNF
.. code-block:: console
$ openstack vnf descriptor create --vnfd-file tosca-vnfd-containerized.yaml VNFD1
Created a new vnfd:
+-----------------+-------------------------------------------------------------------------------------------------------+
| Field | Value |
+-----------------+-------------------------------------------------------------------------------------------------------+
| created_at | 2018-01-21 14:36:51.757044 |
| description | A sample containerized VNF with one container per VDU |
| id | fb4a0aa8-e410-4e73-abdc-d2808de155ef |
| name | VNFD1 |
| service_types | vnfd |
| template_source | onboarded |
| tenant_id | 2d22508be9694091bb2f03ce27911416 |
| updated_at | |
+-----------------+-------------------------------------------------------------------------------------------------------+
$ openstack vnf create --vnfd-name VNFD1 --vim-name vim-kubernetes VNF1
Created a new vnf:
+----------------+-------------------------------------------------------------------------------------------------------+
| Field | Value |
+----------------+-------------------------------------------------------------------------------------------------------+
| created_at | 2018-01-21 14:37:23.318018 |
| description | A sample containerized VNF with one container per VDU |
| error_reason | |
| id | 1faf776b-8d2b-4ee6-889d-e3b7c7310411 |
| instance_id | default,svc-vdu1-05db44 |
| mgmt_ip_address| |
| name | VNF1 |
| placement_attr | {"vim_name": "vim-kubernetes"} |
| status | PENDING_CREATE |
| tenant_id | 2d22508be9694091bb2f03ce27911416 |
| updated_at | |
| vim_id | 791830a6-45fd-468a-bd85-e07fe24e5ce3 |
| vnfd_id | fb4a0aa8-e410-4e73-abdc-d2808de155ef |
+----------------+-------------------------------------------------------------------------------------------------------+
$ openstack vnf list
+--------------------------------------+------+----------------------------+--------+--------------------------------------+--------------------------------------+
| id | name | mgmt_ip_address | status | vim_id | vnfd_id |
+--------------------------------------+------+----------------------------+--------+--------------------------------------+--------------------------------------+
| 1faf776b-8d2b-4ee6-889d-e3b7c7310411 | VNF1 | | ACTIVE | 791830a6-45fd-468a-bd85-e07fe24e5ce3 | fb4a0aa8-e410-4e73-abdc-d2808de155ef |
+--------------------------------------+------+----------------------------+--------+--------------------------------------+--------------------------------------+
To test VNF is running in Kubernetes environment, we can check by running
following commands
.. code-block:: console
$ kubectl get svc
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
kubernetes ClusterIP 192.168.28.129 <none> 443/TCP 5h
svc-vdu1-05db44 ClusterIP 192.168.28.187 <none> 80/TCP 12m
$ kubectl get deployment
NAME DESIRED CURRENT UP-TO-DATE AVAILABLE AGE
svc-vdu1-05db44 1 1 1 1 16m
$ kubectl get pod
NAME READY STATUS RESTARTS AGE
svc-vdu1-05db44-7dcb6b955d-wkh7d 1/1 Running 0 18m
$ kubectl get hpa
NAME REFERENCE TARGETS MINPODS MAXPODS REPLICAS AGE
svc-vdu1-05db44 Deployment/svc-vdu1-05db44 <unknown> / 40% 1 3 1 17m
$ kubectl get configmap
NAME DATA AGE
svc-vdu1-05db44 2 17m
User also can scale VNF manually, by running the following commands:
.. code-block:: console
$ openstack vnf scale --scaling-policy-name SP1 --scaling-type out VNF1
$ kubectl get deployment
NAME DESIRED CURRENT UP-TO-DATE AVAILABLE AGE
svc-vdu1-651815 2 2 2 1 3h
$ kubectl get pods
NAME READY STATUS RESTARTS AGE
svc-vdu1-651815-5b894b8bfb-b6mzq 2/2 Running 0 3h
svc-vdu1-651815-5b894b8bfb-b7f2c 2/2 Running 0 40s
In the same way, user also scale in VNF with scaling-type is 'in'. The range
of scaling manually is limited by 'min_instances' and 'max_instances' user
provide in VNF template.
Multi-Interface for C-VNF
=========================
To use multi-interface for C-VNF, User should follow below procedure.
1. Checking kuryr.conf
~~~~~~~~~~~~~~~~~~~~~~
After installation, user should check kuryr.conf configuration.
.. code-block:: console
$ sudo cat /etc/kuryr/kuryr.conf | grep multi_vif_drivers
multi_vif_drivers = npwg_multiple_interfaces
2. Adding K8s CustomResourceDefinition
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
To use CustomResourceDefinition, user needs to add CRD.
User can make a additional network using yaml file like below.
Create yaml file like below and register it.
.. code-block:: console
$ cat ./crdnetwork.yaml
.. code-block:: yaml
apiVersion: apiextensions.k8s.io/v1beta1
kind: CustomResourceDefinition
metadata:
name: network-attachment-definitions.k8s.cni.cncf.io
spec:
group: k8s.cni.cncf.io
version: v1
scope: Namespaced
names:
plural: network-attachment-definitions
singular: network-attachment-definition
kind: NetworkAttachmentDefinition
shortNames:
- net-attach-def
validation:
openAPIV3Schema:
properties:
spec:
properties:
config:
type: string
Register crdnetwork.yaml
.. code-block:: console
$ kubectl create -f ~/crdnetwork.yaml
Get crd list
.. code-block:: console
$ kubectl get crd
NAME CREATED AT
kuryrnetpolicies.openstack.org 2019-07-31T02:23:54Z
kuryrnets.openstack.org 2019-07-31T02:23:54Z
network-attachment-definitions.k8s.cni.cncf.io 2019-07-31T02:23:55Z
3. Adding neutron subnet id information to k8s CRD
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
To use neutron subnet in kubernetes, user should register neutron
subnet to CRD. At first, user should create subnet.yaml file.
.. code-block:: console
$ cat ./kuryr-subnetname1.yaml
apiVersion: "k8s.cni.cncf.io/v1"
kind: NetworkAttachmentDefinition
metadata:
name: subnetname1
annotations:
openstack.org/kuryr-config: '{"subnetId": "$subnet_id"}'
After making a yaml file, user should create subnet with yaml file.
.. code-block:: console
$ kubectl create -f ~/kuryr-subnetname1.yaml
After created, user can check subnet info like below.
.. code-block:: console
$ kubectl get net-attach-def
NAME AGE
k8s-multi-10 7d
k8s-multi-11 7d
Known Issues and Limitations
~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- Does not support Volumes in Kubernetes
- Horizontal Pod AutoScaler only support CPU utilization
- Add support Kuryr-Kubernetes for making hybrid network in the future
References
==========
.. [#first] https://opendev.org/openstack/tacker/src/branch/master/doc/source/install/kubernetes_vim_installation.rst
.. [#second] https://kubernetes.io/docs/concepts/workloads/pods/init-containers
.. [#third] https://kubernetes.io/docs/concepts/workloads/pods/pod-overview
.. [#fourth] https://kubernetes.io/docs/concepts/workloads/controllers/deployment
.. [#fifth] https://kubernetes.io/docs/tasks/configure-pod-container/configure-pod-configmap
.. [#sixth] https://kubernetes.io/docs/concepts/services-networking/service

View File

@ -1,305 +0,0 @@
..
Licensed under the Apache License, Version 2.0 (the "License"); you may
not use this file except in compliance with the License. You may obtain
a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
License for the specific language governing permissions and limitations
under the License.
==========================
A Use Case of VNFFG Update
==========================
.. warning::
Legacy Tacker features excluding VIM feature are deprecated
and will be removed in the first major release after the Tacker server
version 9.0.0 (2023.1 Antelope release).
.. TODO(h-asahina): check this use case still works.
This guide walks you through a specific usecase in which you can leverage
the Zabbix monitoring software to create a dynamic VNF Forwarding Graph
(VNFFG) or Service Function Chaining (SFC). You can check out the video
presentation here [#f1]_ and slides here [#f2]_ to see how to do it in action.
Prerequisites
=============
**1. Two libvirt VMs** to install devstack and Zabbix server.
**2. Two libvirt networks** which can reach the internet (one management,
one devstack external)
Topology
========
**1. Chain:** IDS (Suricata), Openwrt (VNFs)
**2. Target to protect:** Server nova instance.
+ SFC with no classifier (HTTP works, ICMP works)
.. figure:: ../_images/sfc1.png
:width: 100%
:alt: SFC with no classifier
+ SFC with ICMP classifier (HTTP works, ICMP dropped)
.. figure:: ../_images/sfc2.png
:width: 100%
:alt: SFC with ICMP classifier
Setting up and produce the scenario
===================================
**1.** Install **devstack** in a VM as it is described here [#f3]_ using the
configuration sample here [#f4]_ (Please add here the right configuration for
the management and external networks). Two network interfaces, one for the
management and one for the external network.
**2.** Create a second VM where you will install the **Zabbix server**
according to these instructions [#f5]_. Please be sure that the Zabbix server
has an interface on the same network as the external network of devstack to be
able to monitor the server nova instance through the floating IP.
Config the Zabbix server as below:
+ Register the devstack machine (the host that we want to monitor and it
should have installed the Zabbix agent, see step 3)
.. figure:: ../_images/zabbix1.JPG
:width: 100%
:alt: Zabbix server config 1
+ Create a trigger with a name which contains the keyword BpS (e.g. BpS in the
eth0 is too high) and add to that trigger an expression-condition which will
generate an event if the traffic will set this expression-condition to True.
The expression-condition is:
.. code-block:: console
{host-10-10-1-12:net.if.in[eth0].avg(2)}>2000
..
.. figure:: ../_images/zabbix2.JPG
:width: 100%
:alt: Zabbix server config 2
+ Create an action which will update the classifier if a trigger with the BpS
name will generated by the Zabbix server. To do this you need to create an
action , set the keyword of the Trigger which will make this action to
actually come to play and also you need to create an operation inside that
action where you will write the update-vnffg command which you will execute
to update the current classifier.
.. figure:: ../_images/zabbix3.JPG
:width: 100%
:alt: Zabbix server config 3
.. figure:: ../_images/zabbix4.JPG
:width: 100%
:alt: Zabbix server config 4
The action command is as follows:
.. code-block:: console
/usr/local/bin/openstack --os-username admin \
--os-password devstack \
--os-project-name admin \
--os-user-domain-name default \
--os-project-domain-name default \
--os-project-domain-id default \
--os-auth-url http://<devstack ip address>/identity/v3 \
--os-region-name RegionOne \
vnf graph set \
--vnffgd-template vnffg_block_icmp.yaml block_icmp
..
**3.** Install in the **server nova instance** and in the devstack VM
natively the **Zabbix agent**. The Zabbix agent in the server nova instance is
used to send data back to the Zabbix server. The Zabbix agent in the devstack
VM is essential because we execute from the Zabbix server the vnffg-update
command so we can update the classifier of the chain. And for this we need the
Zabbix agent to the devstack VM.
**4.** Deploy two Service Functions (SFs) via two VNFs:
- The first one is Suricata (IDS) which will be deployed using this VNFD
template
.. code-block:: yaml
tosca_definitions_version: tosca_simple_profile_for_nfv_1_0_0
description: suricata
metadata:
template_name: suricata
topology_template:
node_templates:
VDU1:
type: tosca.nodes.nfv.VDU.Tacker
capabilities:
nfv_compute:
properties:
num_cpus: 1
mem_size: 4096 MB
disk_size: 15 GB
properties:
image: danube
availability_zone: nova
mgmt_driver: noop
config: |
param0: key1
param1: key2
service_type: firewall
monitoring_policy:
name: ping
parameters:
monitoring_delay: 10
count: 3
interval: 2
timeout: 2
action:
failure: respawn
retry: 5
port: 22
CP2:
type: tosca.nodes.nfv.CP.Tacker
properties:
management: true
order: 0
anti_spoofing_protection: false
requirements:
- virtualLink:
node: VL1
- virtualBinding:
node: VDU1
VL1:
type: tosca.nodes.nfv.VL
properties:
network_name: net1
vendor: Tacker
..
After the VNF instance has been deployed successfully, SSH to it and
configure as in [#f6]_.
- The second one is OpenWrt with the VNFD template here [#f8]_ and param file
here [#f7]_.
**5.** Create a VNFFG with a chain (IDS, Openwrt) and no classifier
**vnffg_no_classifier.yaml**
.. code-block:: yaml
tosca_definitions_version: tosca_simple_profile_for_nfv_1_0_0
description: Sample VNFFG template
topology_template:
node_templates:
Forwarding_path1:
type: tosca.nodes.nfv.FP.TackerV2
description: demo chain
properties:
id: 51
path:
- forwarder: IDS
capability: CP2
- forwarder: openwrt
capability: CP4
groups:
VNFFG1:
type: tosca.groups.nfv.VNFFG
description: Traffic to server
properties:
vendor: tacker
version: 1.0
number_of_endpoints: 2
dependent_virtual_link: [VL1,VL2]
connection_point: [CP2,CP4]
constituent_vnfs: [IDS,openwrt]
members: [Forwarding_path1]
..
**6.** Generate ICMP traffic using PING towards the floating IP of the server
nova instance and when that traffic reaches a threshold a specific event is
published to the Zabbix server and Zabbix server executes the vvnffg-update
action which update the already created VNFFG with a classifier which
classifies the ICMP traffic
**vnffg_block_icmp.yaml**
.. code-block:: yaml
tosca_definitions_version: tosca_simple_profile_for_nfv_1_0_0
description: Sample VNFFG template
topology_template:
node_templates:
Forwarding_path1:
type: tosca.nodes.nfv.FP.TackerV2
description: demo chain
properties:
id: 51
policy:
type: ACL
criteria:
- name: block_icmp
classifier:
network_src_port_id: 654eaf96-3737-4b72-9dd7-445a26dfc2ee
ip_proto: 1
path:
- forwarder: IDS
capability: CP2
- forwarder: openwrt
capability: CP4
groups:
VNFFG1:
type: tosca.groups.nfv.VNFFG
description: Traffic to server
properties:
vendor: tacker
version: 1.0
number_of_endpoints: 2
dependent_virtual_link: [VL1,VL2]
connection_point: [CP2,CP4]
constituent_vnfs: [IDS,openwrt]
members: [Forwarding_path1]
..
That means that the traffic will be steered to the SFs and it will be
mitigated.
.. rubric:: Footnotes
.. [#f1] https://www.openstack.org/videos/vancouver-2018/dynamic-sfc-from-tacker-to-incept-specific-traffic-of-vm-1
.. [#f2] https://github.com/dangtrinhnt/DynamicSFCDemo/blob/master/DynamicSFC_OpenStackSummit2018Vancouver.pdf
.. [#f3] https://docs.openstack.org/devstack/latest/
.. [#f4] https://opendev.org/openstack/tacker/src/branch/master/devstack/local.conf.example
.. [#f5] https://www.digitalocean.com/community/tutorials/how-to-install-and-configure-zabbix-to-securely-monitor-remote-servers-on-ubuntu-16-04
.. [#f6] https://blog.rapid7.com/2017/02/14/how-to-install-suricata-nids-on-ubuntu-linux/
.. [#f7] https://opendev.org/openstack/tacker/src/branch/master/samples/tosca-templates/vnfd/tosca-vnfd-openwrt.yaml
.. [#f8] https://opendev.org/openstack/tacker/src/branch/master/samples/tosca-templates/vnfd/tosca-config-openwrt-firewall.yaml

View File

@ -1,160 +0,0 @@
..
This work is licensed under a Creative Commons Attribution 3.0 Unported
License.
http://creativecommons.org/licenses/by/3.0/legalcode
Enhanced Placement Awareness Usage Guide
========================================
.. warning::
Legacy Tacker features excluding VIM feature are deprecated
and will be removed in the first major release after the Tacker server
version 9.0.0 (2023.1 Antelope release).
Overview
--------
OpenStack Tacker supports TOSCA VNFD templates that allow specifying
requirements for a VNF that leverages features of a compute node such as
NUMA topology, SR-IOV, Huge pages and CPU pinning. This allows for Enhanced
Platform Awareness(EPA) placement of a VNF that has high performance and low
latency requirements.
Configuring compute nodes to be EPA nodes
-----------------------------------------
The compute nodes requires configuration in the BIOS, Hypervisor and
OpenStack to enable it be an EPA compute node for deploying high performance
VNFs.
Below table shows the configurations needed for the different features across
BIOS, Hypervisor and OpenStack.
+----------------+------+------------+-----------+
| | BIOS | Hypervisor | OpenStack |
+----------------+------+------------+-----------+
| NUMA Topology | X | | X |
+----------------+------+------------+-----------+
| SR-IOV | X | X | X |
+----------------+------+------------+-----------+
| HyperThreading | X | | |
+----------------+------+------------+-----------+
| Huge Pages | | X | |
+----------------+------+------------+-----------+
| CPU Pinning | | X | X |
+----------------+------+------------+-----------+
**NOTE**: Consult the configuration guide from the Server and NIC vendor to
enable NUMA topology, SR-IOV and HyperThreading in BIOS. Also check the
Hypervisor documentation to verify if NUMA topology is supported.
Below is a snippet of the /etc/default/grub file in Ubuntu that enables
a) CPU isolation from kernel process to be used for VMs(refer keyword
*isolcpus* in the code block below)
b) Reserving huge memory pages (refer keywords *default_hugepagesz*,
*hugepagesz* and *hugepages* in the code block below)
c) Enabling SR-IOV Virtual functions to be exposed (refer keyword
*intel_iommu* in the code block below)
.. code-block:: console
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash isolcpus=8-19 default_hugepagesz=1G hugepagesz=1G hugepages=24"
GRUB_CMDLINE_LINUX="intel_iommu=on"
**NOTE**: The above could be different based on the Hypervisor and the
hardware architecture of the Server. Please consult the Hypervisor
documentation.
Below table shows the OpenStack related files that needs to be configured
to enable the EPA features on compute nodes.
+---------------+-----------+--------------+--------------------+
| | nova.conf | ml2_conf.ini | ml2_conf_sriov.ini |
+---------------+-----------+--------------+--------------------+
| NUMA Topology | X | | |
+---------------+-----------+--------------+--------------------+
| SR-IOV | X | X | X |
+---------------+-----------+--------------+--------------------+
| CPU Pinning | X | | |
+---------------+-----------+--------------+--------------------+
The NUMA Topology feature enablement on compute nodes requires the
**NUMATopologyFilter** to be added to the scheduler_default_filters in
nova.conf file.
The SR-IOV feature enablement requires configuration on both the controller
and compute nodes. Please refer link similar to below for the appropriate
OpenStack release to setup SR-IOV:
https://docs.openstack.org/neutron/latest/admin/config-sriov.html
The CPU Pinning feature enablement requires configuring the nova.conf on
compute nodes. It requires an entry similar to below:
.. code-block:: console
[DEFAULT]
vcpu_pin_set = 8-19
cpu_allocation_ratio = 1.0
[libvirt]
virt_type = kvm
**NOTE**: Please refer OpenStack release documentation for configuring the
above-mentioned features.
Creating availability zone using compute nodes
----------------------------------------------
Once the compute nodes have been prepared for high performance requirement
VNF deployments, the next step would be to create an 'aggregate-list' and
availability zone from the compute nodes identified for VNF deployments.
Below commands illustrates an example of creating such an aggregate-list,
availability zone and adding compute nodes.
.. code-block:: console
openstack aggregate create --zone NFV-AZ NFV-AGG
openstack aggregate add host NFV-AGG <NFV_HOST1>
openstack aggregate add host NFV-AGG <NFV_HOST2>
**NOTE**: Consult http://docs.openstack.org/cli-reference/nova.html for
latest supported commands.
Specifying Availability Zone for VDU in VNFD template
-----------------------------------------------------
Find below snippet of VNFD template that specifies the EPA Availability Zone
created as part of the VDU properties using **availability_zone** property.
.. code-block:: yaml
vdu1:
type: tosca.nodes.nfv.VDU.Tacker
capabilities:
nfv_compute:
properties:
disk_size: 10 GB
mem_size: 2048 MB
num_cpus: 2
mem_page_size: large
properties:
availability_zone: NFV-AZ
image: cirros
Deploying EPA TOSCA templates using Tacker
------------------------------------------
Once OpenStack/Devstack along with Tacker has been successfully installed,
deploy a sample EPA template such as tosca-vnfd-hugepages.yaml from location
below:
https://github.com/openstack/tacker/tree/master/samples/tosca-templates/vnfd
Refer the 'Getting Started' link below on how to create a VNFD and deploy a
VNF:
https://docs.openstack.org/tacker/latest/install/getting_started.html

View File

@ -24,11 +24,8 @@ Getting Started
.. toctree::
:maxdepth: 1
../install/etsi_getting_started
../install/legacy_getting_started
etsi_getting_started
.. TODO(h-asahina): add `Getting started with ETSI NFV-SOL Tacker`
* https://etherpad.opendev.org/p/tacker-wallaby-revise-docs
Overview
--------
@ -45,16 +42,10 @@ Overview
Use Case Guide
--------------
.. warning::
Legacy Tacker features excluding VIM feature are deprecated
and will be removed in the first major release after the Tacker server
version 9.0.0 (2023.1 Antelope release).
.. toctree::
:maxdepth: 1
etsi_use_case_guide
legacy_use_case_guide
oauth2_usage_guide
oauth2_mtls_usage_guide
external_oauth2_usage_guide
@ -62,3 +53,4 @@ Use Case Guide
prometheus_plugin_use_case_guide
db_migration_tool_usage_guide
enhanced_tacker_policy_usage_guide
encrypt_vim_auth_with_barbican

View File

@ -7,16 +7,6 @@ operate Network Services (NSs) and Virtual Network Functions (VNFs) on an NFV
infrastructure platform like OpenStack or Kubernetes. The operations are based
on ETSI NFV Management and Orchestration (MANO) Architecture [1]_.
Now Tacker has two different architectures:
* ETSI NFV-SOL based implementation
* Legacy implementation
.. warning::
Legacy Tacker features excluding VIM feature are deprecated
and will be removed in the first major release after the Tacker server
version 9.0.0 (2023.1 Antelope release).
When Tacker project was originated to follow the ETSI NFV MANO standards in
Liberty release, the standarding for "NFV Solutions (SOL)", which is the
specifications for protocols and data models, was not yet defined. After the

View File

@ -1,140 +0,0 @@
=======================
Legacy Tacker Use Cases
=======================
.. warning::
Legacy Tacker features excluding VIM feature are deprecated
and will be removed in the first major release after the Tacker server
version 9.0.0 (2023.1 Antelope release).
VIM
---
Enable Multi Site
^^^^^^^^^^^^^^^^^
.. toctree::
:maxdepth: 1
multisite_vim_usage_guide
VNFFG
-----
Deploy
^^^^^^
.. toctree::
:maxdepth: 1
vnffg_usage_guide
vnffg_usage_guide_advanced
Update
^^^^^^
.. toctree::
:maxdepth: 1
dynamic_vnffg_usage_guide
NS
--
Deploy
^^^^^^
.. toctree::
:maxdepth: 1
nsd_usage_guide
VNF
---
Deploy
^^^^^^
VM
~~
.. toctree::
:maxdepth: 1
vnfm_usage_guide
placement_policy_usage_guide
containerized_vnf_usage_guide
Container
~~~~~~~~~
.. toctree::
:maxdepth: 1
containerized_vnf_usage_guide
Scale
^^^^^
.. toctree::
:maxdepth: 1
scale_usage_guide
Monitor Driver
^^^^^^^^^^^^^^
Overview
~~~~~~~~
.. toctree::
:maxdepth: 1
../contributor/monitor-api
Zabbix
~~~~~~
.. toctree::
:maxdepth: 1
../contributor/zabbix-plugin
.. TODO(h-asahina): add `Ping.
* https://etherpad.opendev.org/p/tacker-wallaby-revise-docs
Policy-Action Driver
^^^^^^^^^^^^^^^^^^^^
Overview
~~~~~~~~
.. toctree::
:maxdepth: 1
../contributor/policy_actions_framework
.. TODO(h-asahina): add `AutoHeal` `AutoScale`, `Respawn` and `Log`.
* https://etherpad.opendev.org/p/tacker-wallaby-revise-docs
Placement-Aware Deployment
---------------------------------
.. toctree::
:maxdepth: 1
enhanced_placement_awareness_usage_guide
Collaboration with Other Projects
---------------------------------
.. toctree::
:maxdepth: 1
../contributor/encrypt_vim_auth_with_barbican
../reference/block_storage_usage_guide
alarm_monitoring_usage_guide
../reference/reservation_policy_usage_guide

View File

@ -633,8 +633,8 @@ Please refer to the procedure in Section `Termination and Delete`_.
.. _NFV-SOL001 v2.6.1 : https://www.etsi.org/deliver/etsi_gs/NFV-SOL/001_099/001/02.06.01_60/gs_NFV-SOL001v020601p.pdf
.. _Ansible Installation Guide : https://docs.ansible.com/ansible/2.9/installation_guide/index.html
.. _Create and Upload VNF Package : https://docs.openstack.org/tacker/latest/install/etsi_getting_started.html#create-and-upload-vnf-package
.. _Create & Instantiate VNF : https://docs.openstack.org/tacker/latest/install/etsi_getting_started.html#create-instantiate-vnf
.. _Termination and Delete : https://docs.openstack.org/tacker/latest/install/etsi_getting_started.html#terminate-delete-vnf
.. _Create and Upload VNF Package : https://docs.openstack.org/tacker/latest/user/etsi_getting_started.html#create-and-upload-vnf-package
.. _Create & Instantiate VNF : https://docs.openstack.org/tacker/latest/user/etsi_getting_started.html#create-instantiate-vnf
.. _Termination and Delete : https://docs.openstack.org/tacker/latest/user/etsi_getting_started.html#terminate-delete-vnf
.. _VNF Healing : https://docs.openstack.org/tacker/latest/user/etsi_vnf_healing.html
.. _VNF Scaling : https://docs.openstack.org/tacker/latest/user/etsi_vnf_scaling.html

View File

@ -1,189 +0,0 @@
..
Licensed under the Apache License, Version 2.0 (the "License"); you may
not use this file except in compliance with the License. You may obtain
a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
License for the specific language governing permissions and limitations
under the License.
.. _ref-multisite:
===================
Multisite VIM Usage
===================
.. warning::
Legacy Tacker features excluding VIM feature are deprecated
and will be removed in the first major release after the Tacker server
version 9.0.0 (2023.1 Antelope release).
A single Tacker controller node can be used to manage multiple OpenStack sites
without having the need to deploy Tacker server on each of these sites. Tacker
allows users to deploy VNFs in multiple OpenStack sites using the multisite VIM
feature. OpenStack versions starting from Kilo are supported with this feature.
Preparing the OpenStack site
~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1. Create a new 'nfv' project and admin privileged 'nfv' user on the remote
OpenStack site.
2. Create the required neutron networks for management, packet in and packet
out networks that will be used by VNFs.
Register a new OpenStack VIM
~~~~~~~~~~~~~~~~~~~~~~~~~~~~
To register a new OpenStack VIM inside Tacker.
::
$ openstack vim register --description 'OpenStack Liberty' --config-file vim_config.yaml Site1
Created a new vim:
+----------------+----------------------------------------------------------------------------------------------------------------------------------------------------------+
| Field | Value |
+----------------+----------------------------------------------------------------------------------------------------------------------------------------------------------+
| auth_cred | {"username": "nfv_user", "password": "***", "project_name": "nfv", "user_id": "", "user_domain_name": "default", "auth_url": |
| | "http://127.0.0.1/identity", "project_id": "", "project_domain_name": "default"} |
| auth_url | http://127.0.0.1/identity |
| description | OpenStack Liberty |
| id | 3f3c51c5-8bda-4bd3-adb3-5ae62eae65c3 |
| name | Site1 |
| placement_attr | {"regions": ["RegionOne", "RegionTwo"]} |
| tenant_id | 8907bae480c0414d98c3519acbad1b06 |
| type | openstack |
| vim_project | {"id": "", "name": "nfv"} |
+----------------+----------------------------------------------------------------------------------------------------------------------------------------------------------+
In the above command, config.yaml contains VIM specific parameters as below:
::
auth_url: 'http://127.0.0.1/identity'
username: 'nfv_user'
password: 'devstack'
project_name: 'nfv'
The parameter auth_url points to the keystone service authorization URL of the
remote OpenStack site.
.. note::
In Keystone, port `5000` is enabled for authentication service [1]_, so the
end users can use `auth_url: 'http://127.0.0.1:5000/v3` instead of
`auth_url: 'http://127.0.0.1/identity'` as above mention.
Default VIM configuration
~~~~~~~~~~~~~~~~~~~~~~~~~
The default vim needs to be registered. This is required when the optional
argument --vim-id is not provided during vnf creation. Refer to steps described
in `manual installation`_ to register default vim.
.. _manual installation: https://docs.openstack.org/tacker/latest/install/manual_installation.html#registering-default-vim
Onboard a VNFD
~~~~~~~~~~~~~~
::
$ openstack vnf descriptor create --description "Openwrt VNFD" --vnfd-file vnfd1.yaml openwrt-vnfd1
Created a new vnfd:
+-----------------+--------------------------------------+
| Field | Value |
+-----------------+--------------------------------------+
| created_at | 2018-06-20 05:37:57.589182 |
| description | Openwrt VNFD |
| id | c3cbf0c0-a492-49e3-9541-945e49e7ed7e |
| name | openwrt-vnfd1 |
| service_types | vnfd |
| template_source | onboarded |
| tenant_id | a5346a4d3c464b4f8776ee2f4bfb86af |
| updated_at | |
+-----------------+--------------------------------------+
Deploying a new VNF on registered VIM
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
::
$ openstack vnf create --description 'Openwrt VNF on Site1' --vnfd-id c3cbf0c0-a492-49e3-9541-945e49e7ed7e --vim-name Site1 openwrt_VNF
Created a new vnf:
+----------------+--------------------------------------+
| Field | Value |
+----------------+--------------------------------------+
| description | Openwrt tosca template |
| id | 159ed8a5-a5a7-4f7a-be50-0f5f86603e3a |
| instance_id | 7b4ab046-d977-4781-9f0c-1ee9dcce01c6 |
| mgmt_ip_address| |
| name | openwrt_VNF |
| placement_attr | {"vim_name": "Site1"} |
| status | PENDING_CREATE |
| tenant_id | 8907bae480c0414d98c3519acbad1b06 |
| vim_id | 3f3c51c5-8bda-4bd3-adb3-5ae62eae65c3 |
| vnfd_id | c3cbf0c0-a492-49e3-9541-945e49e7ed7e |
+----------------+--------------------------------------+
The --vim-id/--vim-name argument is optional during vnf creation. If
--vim-id/--vim-name is not specified, the default vim will
be used to deploy VNF on the default site. We can create default vim
by specifying --is-default option with vim-register command.
User can optionally provide --vim-region-name during vnf creation to deploy the
VNF in a specify region within that VIM.
Updating a VIM
~~~~~~~~~~~~~~
Tacker allows for updating VIM authorization parameters such as 'username',
'password' and 'project_name' and 'ids' after it has been registered. To update
'username' and password' for a given VIM user within Tacker:
::
$ openstack vim set VIM0 --config-file update.yaml
update.yaml in above command will contain:
::
username: 'new_user'
password: 'new_pw'
Note that 'auth_url' parameter of a VIM is not allowed to be updated as
'auth_url' uniquely identifies a given 'vim' resource.
Deleting a VIM
~~~~~~~~~~~~~~
To delete a VIM :
::
$ openstack vim delete VIM1
Deleted vim: VIM1
Features
~~~~~~~~
* Tacker support multi-tenancy, that means a VIM registered by one tenant can
not be shared with other.
* Pluggable driver module framework allowing Tacker to interact with multiple
VIM types.
* Compatible for OpenStack versions starting from Kilo.
* Supports keystone versions v2.0 and v3.
Limitations
~~~~~~~~~~~
* Fernet keys for password encryption and decryption is stored on file systems.
This is a limitation when multiple servers are serving behind a load balancer
server and the keys need to be synced across tacker server systems.
References
==========
.. [1] https://docs.openstack.org/keystoneauth/latest/using-sessions.html#sessions-for-users

View File

@ -1,501 +0,0 @@
..
Licensed under the Apache License, Version 2.0 (the "License"); you may
not use this file except in compliance with the License. You may obtain
a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
License for the specific language governing permissions and limitations
under the License.
====================================================================
Orchestrating VNFs and VNFFG using Network Services Descriptor (NSD)
====================================================================
.. warning::
Legacy Tacker features excluding VIM feature are deprecated
and will be removed in the first major release after the Tacker server
version 9.0.0 (2023.1 Antelope release).
To enable dynamic composition of network services, NFV introduces Network
Service Descriptors (NSDs) that specify the network service to be created.
In Network Function Virtualization (NFV), Network Service (NS) is a set of
network functions, that includes virtual network functions (VNFs), physical
network functions (PNFs), and VNF forwarding graph (VNFFG) that defines
connection between NFs [#f1]_, [#f2]_.
.. code-block:: console
TOSCA NFV
+------------------------------------------+ +--------------------+
| | | |
| Service Template <------------------------+ Network Service |
| | | Descriptor (NSD) |
| +-------------------+ | | |
| | Topology template | +-------------+ | | +----------+ |
| | +---------+ | | Node types <------------------+ VNFD | |
| | | Node <----------+substitutable| | | +----------+ |
| | | Template| | +-------------+ | | |
| | +---------+ | | | +----------+ |
| | +---------+ | +-------------+ | +--------+ VLD | |
| | | Node <----------+ Node types <---------+ | +----------+ |
| | | Template| | +-------------+ | | |
| | +---------+ | | | +----------+ |
| | +---------+ | +-------------+ | +--------+ VNFFGD | |
| | | Node <----------+ Group types <---------+ | +----------+ |
| | | Template| | +-------------+ | | |
| | +---------+ | | | +----------+ |
| | +---------+ | | +--------+ PNFD | |
| | | Node | | +-------------+ | | | +----------+ |
| | | Template<----------+ Node types <---------+ | |
| | +---------+ | +-------------+ | +--------------------+
| | | |
| +-------------------+ |
| |
+------------------------------------------+
NSD in Ocata can be used for creating multiple (related) VNFs in one shot
using a single TOSCA template.
In Rocky version, Tacker add VNFFG support in NSD. That lets users can use
NSD to create VNFs and VNFFGs.
.. note::
For current implementation, Tacker does not support creating VLs/neutron
networks using NSD (to support inter-VNF private VL).
This usage guide describes lifecycle of Network service descriptors and
services.
Network Service creation procedure
==================================
Tacker uses Mistral to call actions to create Network Service. Firstly, Tacker
extracts VNFDs from NSD template to create VNFs. When creating VNF tasks is
on-success state (VNFs are in **RUNNING** state), nested VNFFGD template in
NSD template is extracted and **create_vnffg** task is called to create VNFFGs.
When NSD does not have nested VNFFG template, Tacker does not invoke creating
VNFFGs, only VNFs are created. Users can find detail implementation in [#f3]_
.. code-block:: console
+------------------------+
| |
| NSD template |
| |
| |
+------------------------+
| extract templates
+-------------------v---------------+
| |
+----v------------+ +---------v------+
| | | |
| VNFFGD templates| | VNFDs |
| | | |
+----+------------+ +---------+------+
| | create VNFs
| +-----------+------+-----------------+
| | | |
| | | |
| +----v---+ +---v----+ +----v---+
| | VNF1 | | VNF2 | | VNFn |
| +----+---+ +---+----+ +----+---+
| | | |
| | +---------+ |
| | | +--------------------------------+
| | | |
| | | |on-success
| | | |
| +---v-v-v---------+
| | VNFFGs |
+------------> (optional) |
create VNFFGs | |
+-----------------+
Network Service examples
========================
With NS, Tacker can use NSD template to create VNFs and VNFFGs to make a chain
between VNFs. In this document, we provide two NS examples:
1. Deploy VNFs
In this scenario, users can use NSD template to create VNFs. There are no
VNFFGs created. Templates are located in tacker/samples/tosca-templates/nsd.
2. Deploy VNFs and VNFFG between 2 HTTP servers
In the second scenario, users can use NSD template to create 2 VNFs and
2 VNFFGs. Templates are located in tacker/samples/tosca-templates/vnffg-nsd.
The below diagram describes the second scenario, NSD is used to create VNF1,
VNF2, VNFFG1 and VNFFG2. VNFFG1 will chain traffic from http_client to
http_server go through VNF1 and VNF2, while VNFFG2 only route traffic go
through VNF1.
.. code-block:: console
+------------+ +------------+
| VNF1 | | VNF2 |
| | | |
| CP12 | | CP22 |
+--^-+---^-+-+ +----^--+----+
| | | | | |
| | | | | |
+-------------+ VNFFG1 | | | | | | +-------------+
| +-----------+ +---------------------+ +---------------> |
| http_client | | | | http_server |
| +-----------------+ +----------------------------------> |
+-------------+ VNFFG2 +-------------+
.. note::
VNF1 and VNF2 are just a name, that can be changed.
Users can look at document about VNF [#f4]_ and VNFFG [#f5]_ [#f6]_ usage guide
to know more detail about this scenarios.
Setup experiment environment
============================
To support users easily create testing environment, Tacker provides some bash
scripts to create **http_client**, **http_server** servers and default VIM0.
Tacker also update information in **ns_param.yaml** file.
Users can go to **contrib/tacker-config/**, then run **ns-config.sh** script:
.. code-block:: console
$ cd ~/tacker/contrib/tacker-config
$ ./ns-config.sh
After ns-config.sh is deployed, if there are no error, 2 new servers and
a new default VIM will be launched and **ns_param.yaml** will be updated.
.. code-block:: console
$ openstack server list
$ openstack vim list
$ cat ../../samples/tosca-templates/nsd/ns_param.yaml
$ cat ../../samples/tosca-templates/vnffg-nsd/ns_param.yaml
1. Using NSD to create VNFs
===========================
Once OpenStack along with Tacker has been successfully installed, deploying
sample VNFD templates using **sample-tosca-vnfd1.yaml** [#f7]_ and
**sample-tosca-vnfd2.yaml** [#f8]_.
.. code-block:: console
$ cd ~/tacker/samples/tosca-templates/nsd
$ openstack vnf descriptor create --vnfd-file sample-tosca-vnfd1.yaml sample-tosca-vnfd1
$ openstack vnf descriptor create --vnfd-file sample-tosca-vnfd2.yaml sample-tosca-vnfd2
The following code represents sample NSD which instantiates the above VNFs.
.. note::
VNF descriptor names must be same as values in **imports** part in NSD
template.
.. code-block:: console
tosca_definitions_version: tosca_simple_profile_for_nfv_1_0_0
description: Import VNFDs(already on-boarded) with input parameters
imports:
- sample-tosca-vnfd1
- sample-tosca-vnfd2
topology_template:
inputs:
vl1_name:
type: string
description: name of VL1 virtuallink
default: net_mgmt
vl2_name:
type: string
description: name of VL2 virtuallink
default: net0
node_templates:
VNF1:
type: tosca.nodes.nfv.VNF1
requirements:
- virtualLink1: VL1
- virtualLink2: VL2
VNF2:
type: tosca.nodes.nfv.VNF2
VL1:
type: tosca.nodes.nfv.VL
properties:
network_name: {get_input: vl1_name}
vendor: tacker
VL2:
type: tosca.nodes.nfv.VL
properties:
network_name: {get_input: vl2_name}
vendor: tacker
In above NSD template VL1 and VL2 are substituting the virtual links of VNF1.
To create Network Service, users can use two ways:
1. Onboard the above NSD, then create NS from NSD.
.. code-block:: console
$ openstack ns descriptor create --nsd-file sample-tosca-nsd.yaml NSD-template
$ openstack ns create --nsd-name NSD-template --param-file ns_param.yaml NS1
2. Create NS directly from NSD
.. code-block:: console
$ openstack ns create --nsd-template sample-tosca-nsd.yaml --param-file ns_param.yaml NS1
2. Using NSD to create VNFs and VNFFG
=====================================
In this scenario, in the same way with above scenario, firstly, users need to
create vnf descriptors, which is defined in NSD template.
.. code-block:: console
$ cd ~/tacker/samples/tosca-templates/vnffg-nsd
$ openstack vnf descriptor create --vnfd-file tosca-vnfd1-sample.yaml sample-vnfd1
$ openstack vnf descriptor create --vnfd-file tosca-vnfd2-sample.yaml sample-vnfd2
The following code represents sample NSD which instantiates the above VNFs and
VNFFG.
.. code-block:: yaml
tosca_definitions_version: tosca_simple_profile_for_nfv_1_0_0
description: Import VNFDs(already on-boarded) with input parameters
imports:
- sample-vnfd1
- sample-vnfd2
topology_template:
inputs:
vl1_name:
type: string
description: name of VL1 virtuallink
default: net_mgmt
vl2_name:
type: string
description: name of VL2 virtuallink
default: net0
net_src_port_id:
type: string
description: neutron port id of source port
ip_dest_prefix:
type: string
description: IP prefix of destination port
node_templates:
VNF1:
type: tosca.nodes.nfv.VNF1
requirements:
- virtualLink1: VL1
VNF2:
type: tosca.nodes.nfv.VNF2
VL1:
type: tosca.nodes.nfv.VL
properties:
network_name: {get_input: vl1_name}
vendor: tacker
VL2:
type: tosca.nodes.nfv.VL
properties:
network_name: {get_input: vl2_name}
vendor: tacker
Forwarding_path1:
type: tosca.nodes.nfv.FP.TackerV2
description: creates path inside ns (src_port->CP12->CP22->dst_port)
properties:
id: 51
symmetrical: true
policy:
type: ACL
criteria:
- name: block_tcp
classifier:
network_src_port_id: {get_input: net_src_port_id}
destination_port_range: 80-1024
ip_proto: 6
ip_dst_prefix: {get_input: ip_dest_prefix}
path:
- forwarder: sample-vnfd1
capability: CP12
- forwarder: sample-vnfd2
capability: CP22
Forwarding_path2:
type: tosca.nodes.nfv.FP.TackerV2
description: creates path inside ns (src_port->CP12->CP22->dst_port)
properties:
id: 52
symmetrical: false
policy:
type: ACL
criteria:
- name: block_tcp
classifier:
network_src_port_id: {get_input: net_src_port_id}
destination_port_range: 8080-8080
ip_proto: 6
ip_dst_prefix: {get_input: ip_dest_prefix}
path:
- forwarder: sample-vnfd1
capability: CP12
groups:
VNFFG1:
type: tosca.groups.nfv.VNFFG
description: HTTP to Corporate Net
properties:
vendor: tacker
version: 1.0
number_of_endpoints: 2
dependent_virtual_link: [VL1, VL2]
connection_point: [CP12, CP22]
constituent_vnfs: [sample-vnfd1, sample-vnfd2]
members: [Forwarding_path1]
VNFFG2:
type: tosca.groups.nfv.VNFFG
description: HTTP to Corporate Net
properties:
vendor: tacker
version: 1.0
number_of_endpoints: 1
dependent_virtual_link: [VL1]
connection_point: [CP12]
constituent_vnfs: [sample-vnfd1]
members: [Forwarding_path2]
To create Network Service, users can use two ways:
1. Onboard the above NSD, then create NS from NSD.
.. code-block:: console
$ openstack ns descriptor create --nsd-file tosca-multiple-vnffg-nsd.yaml NSD-VNFFG-template
$ openstack ns create --nsd-name NSD-VNFFG-template --param-file ns_param.yaml NS2
2. Create NS directly from NSD
.. code-block:: console
$ openstack ns create --nsd-template tosca-multiple-vnffg-nsd.yaml --param-file ns_param.yaml NS2
Result
======
The following commands shows the result of launching NS in second scenario. If
users run the first scenario, some information about VNFFG is not listed, such
as VNFFG ID and can not see any VNFFG is created.
.. code-block:: console
$ openstack ns list --fit-width
+------------------+------+------------------+------------------+------------------+--------------------+----------------+
| ID | Name | NSD ID | VNF IDs | VNFFG IDs | Mgmt Urls | Status |
+------------------+------+------------------+------------------+------------------+--------------------+----------------+
| 23380f92-3e0a-45 | NS2 | 7ff1c49a-4e89-4b | {'VNF2': 'f92aad | {'VNFFG2': | {'VNF2': {'VDU1': | ACTIVE |
| 39-877c- | | 66-9413-810715b8 | a2-c194-4906-b58 | '24f03f01-7a6d- | '192.168.120.12'}, | |
| b421dc8960b6 | | 470e | 5-e6c8201f0010', | 44ba-b8b8-086ab7 | 'VNF1': {'VDU1': | |
| | | | 'VNF1': | bd2f21', | '192.168.120.3'}} | |
| | | | '25686357-ebdf- | 'VNFFG1': '3ccad | | |
| | | | 4b8e-ab04-7b34a5 | c6e-5702-4516 | | |
| | | | 66e21f'} | -babd- | | |
| | | | | 1013e9afffbf'} | | |
+------------------+------+------------------+------------------+------------------+--------------------+----------------+
$ openstack vnf graph list --fit-width
+------------------------------------+------------------------------------+-------------------------------------+--------+
| ID | Name | VNFFGD ID | Status |
+------------------------------------+------------------------------------+-------------------------------------+--------+
| 24f03f01-7a6d-44ba- | NS2_VNFFG2_a7f77e11-d847-4090-aa79 | 1f2bdd92-c313-4f1d-a423-51e66bc6f1d | ACTIVE |
| b8b8-086ab7bd2f21 | -496610c522bf | 1 | |
| 3ccadc6e-5702-4516-babd- | NS2_VNFFG1_a7f77e11-d847-4090-aa79 | 9923e4ab-19d4-4ff5-b07b- | ACTIVE |
| 1013e9afffbf | -496610c522bf | 0e82a61e2268 | |
+------------------------------------+------------------------------------+-------------------------------------+--------+
$ openstack vnf list --fit-width
+---------------------+---------------------+---------------------+--------+---------------------+-----------------------+
| ID | Name | Mgmt Url | Status | VIM ID | VNFD ID |
+---------------------+---------------------+---------------------+--------+---------------------+-----------------------+
| 25686357-ebdf-4b8e- | NS2_VNF_183c3dba-70 | {"VDU1": | ACTIVE | 3ec1a3f0-058a-40e7- | 183c3dba-7090-4984-bb |
| ab04-7b34a566e21f | 90-4984-bb57-e0dd11 | "192.168.120.3"} | | 83d2-cc8dd24af0ca | 57-e0dd11045563 |
| | 045563_a7f77e11-d84 | | | | |
| | 7-4090-aa79-496610c | | | | |
| | 522bf | | | | |
| f92aada2-c194-4906- | NS2_VNF_3762c695-08 | {"VDU1": | ACTIVE | 3ec1a3f0-058a-40e7- | 3762c695-08f1-4247 |
| b585-e6c8201f0010 | f1-4247-bfda-56d2f5 | "192.168.120.12"} | | 83d2-cc8dd24af0ca | -bfda-56d2f565e8b7 |
| | 65e8b7_a7f77e11-d84 | | | | |
| | 7-4090-aa79-496610c | | | | |
| | 522bf | | | | |
+---------------------+---------------------+---------------------+--------+---------------------+-----------------------+
$ openstack vnf network forwarding path list
+--------------------------------------+------------------+--------+--------------------------------------+---------+
| ID | Name | Status | VNFFG ID | Path ID |
+--------------------------------------+------------------+--------+--------------------------------------+---------+
| 3d24b870-fe0d-4af9-a03f-9e0811859256 | Forwarding_path2 | ACTIVE | a601e938-a37b-493c-a48c-2c90aba73a77 | 52 |
| a2ca3a24-f02e-4629-b12c-54256886c050 | Forwarding_path1 | ACTIVE | 1f48603b-6740-4b94-a981-15de8c5c0fb3 | 51 |
+--------------------------------------+------------------+--------+--------------------------------------+---------+
$ openstack sfc port chain list --fit-width
+---------------------+---------------------+---------------------+---------------------+---------------------+----------+
| ID | Name | Port Pair Groups | Flow Classifiers | Chain Parameters | Chain ID |
+---------------------+---------------------+---------------------+---------------------+---------------------+----------+
| 2950fa88-d98f-4812 | NS2_VNFFG2_a7f77e11 | [u'e92feb43-4906-45 | [u'3eff5973-c612-43 | {u'symmetric': | 51 |
| -830a-ae15452a8c08 | -d847-4090-aa79 | 21-852f- | 83-aee2-d1eb05c832e | False, | |
| | -496610c522bf-port- | 1940c2f344a6'] | e'] | u'correlation': | |
| | chain | | | u'mpls'} | |
| 61c938f9-15a1-4ec8 | NS2_VNFFG1_a7f77e11 | [u'e92feb43-4906-45 | [u'b4cb5575-cb3c-41 | {u'symmetric': | 52 |
| -8dec-44e5f8af70ff | -d847-4090-aa79 | 21-852f- | a3-8649-c69e0cd48db | False, | |
| | -496610c522bf-port- | 1940c2f344a6', u'82 | e'] | u'correlation': | |
| | chain | dab526-540e-4047 | | u'mpls'} | |
| | | -ba8a- | | | |
| | | c97c4cdbaef1'] | | | |
+---------------------+---------------------+---------------------+---------------------+---------------------+----------+
After deployment is finished, users can clean resources (NS, VNFD, http client
and server) with **ns-clean.sh** script.
.. code-block:: console
$ cd ~/tacker/contrib/tacker-config
$ ./ns-clean.sh
Reference
=========
.. [#f1] https://www.etsi.org/deliver/etsi_gs/NFV-IFA/001_099/014/02.01.01_60/gs_NFV-IFA014v020101p.pdf
.. [#f2] https://wiki.onap.org/display/DW/ONAP+Release+1+modeling+specification?preview=%2F13599755%2F13599839%2FNSD+Specification.pdf
.. [#f3] https://opendev.org/openstack/tacker/src/branch/master/tacker/nfvo/drivers/workflow/workflow_generator.py
.. [#f4] https://docs.openstack.org/tacker/latest/install/getting_started.html#onboarding-sample-vnf
.. [#f5] https://docs.openstack.org/tacker/latest/user/vnffg_usage_guide.html
.. [#f6] https://docs.openstack.org/tacker/latest/user/vnffg_usage_guide_advanced.html
.. [#f7] https://opendev.org/openstack/tacker/src/branch/master/samples/tosca-templates/nsd/sample-tosca-vnfd1.yaml
.. [#f8] https://opendev.org/openstack/tacker/src/branch/master/samples/tosca-templates/nsd/sample-tosca-vnfd2.yaml

View File

@ -1,156 +0,0 @@
..
Licensed under the Apache License, Version 2.0 (the "License"); you may
not use this file except in compliance with the License. You may obtain
a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
License for the specific language governing permissions and limitations
under the License.
.. _ref-placement:
====================
VDU Placement policy
====================
.. warning::
Legacy Tacker features excluding VIM feature are deprecated
and will be removed in the first major release after the Tacker server
version 9.0.0 (2023.1 Antelope release).
OpenStack nova server groups can be used to control the affinity and
anti-affinity scheduling policy for a group of VDU's. Below placement
policies are supported::
Affinity:
The policy that forces Nova to hosts the concerned VDUs in a same
hypervisor.
Anti-Affinity:
The policy that forces Nova to hosts the concerned VDUs each
in a different hypervisor.
Soft-Affinity:
The policy that forces nova about if it is not possible to
schedule some VDUs to the same host then the subsequent VDUs will be
scheduled together on another host. In this way operator can express a
good-to-have relationship between a group of VDUs.
Soft-Anti-Affinity:
The policy that forces nova about if it is not
possible to schedule VDUs on different hosts then VDUs might get
scheduled on a same host where another VDUs are running from the same
group.
TOSCA schema for placement policy
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Tacker defines TOSCA schema for the placement policy as given below:
.. code-block:: yaml
tosca.policies.tacker.Placement:
derived_from: tosca.policies.Placement
description: Defines policy for placement of VDU's.
properties:
policy:
type: string
required: false
default: affinity
constraints:
- valid_values: [ affinity, anti-affinity ]
description: Placement policy for target VDU's.
strict:
type: boolean
required: false
default: true
description: If the policy is not mandatory, set this flag to
'false'. Setting this flag to 'false' allows the VDU deployment
request to continue even if the nova-scheduler fails to assign
compute hosts under the policy.
targets:
type: list
entry_schema:
type: string
required: true
description: List of VDU's on which placement policy will be applied.
Sample TOSCA with placement policy
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Following TOSCA snippet shows the placement policy used in VNFD, in which vdu1
and vdu2 are already defined VDUs.
**Affinity policy**
.. code-block:: yaml
policies:
- my_compute_placement_policy:
type: tosca.policies.tacker.Placement
properties:
policy: affinity
strict: true
description: Apply my placement policy to my applications servers
targets: [ VDU1, VDU2 ]
**Anti-Affinity policy**
.. code-block:: yaml
policies:
- my_compute_placement_policy:
type: tosca.policies.tacker.Placement
properties:
policy: anti-affinity
strict: true
description: Apply my placement policy to my applications servers
targets: [ VDU1, VDU2 ]
**Soft-Affinity policy**
.. code-block:: yaml
policies:
- my_compute_placement_policy:
type: tosca.policies.tacker.Placement
properties:
policy: affinity
strict: false
description: Apply my placement policy to my applications servers
targets: [ VDU1, VDU2 ]
**Soft-Anti-Affinity policy**
.. code-block:: yaml
policies:
- my_compute_placement_policy:
type: tosca.policies.tacker.Placement
properties:
policy: anti-affinity
strict: false
description: Apply my placement policy to my applications servers
targets: [ VDU1, VDU2 ]
The ``soft`` flag defines the softness of the placement policy.
Deploying placement TOSCA template using Tacker
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Once OpenStack/Devstack along with Tacker has been successfully installed,
deploy a sample placement policy template from location given below:
https://opendev.org/openstack/tacker/src/branch/master/samples/tosca-templates/vnfd/tosca-placement-policy-anti-affinity.yaml
Refer the 'Getting Started' link below on how to create a VNFD and deploy a
VNF:
https://docs.openstack.org/tacker/latest/install/getting_started.html

Some files were not shown because too many files have changed in this diff Show More