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:
parent
73b41001a5
commit
ccb8dadb55
@ -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
|
@ -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
|
@ -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
|
@ -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
|
||||
|
@ -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
|
@ -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
|
@ -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
|
@ -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
|
||||
|
@ -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
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
@ -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
|
||||
}
|
||||
}
|
||||
}
|
@ -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"
|
||||
}
|
||||
]
|
||||
}
|
@ -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"
|
||||
}
|
||||
}
|
@ -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"
|
||||
}
|
||||
]
|
||||
}
|
@ -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"
|
||||
}
|
||||
}
|
@ -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"
|
||||
}
|
||||
]
|
||||
}
|
@ -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"
|
||||
}
|
||||
}
|
@ -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"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
}
|
||||
}
|
@ -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"
|
||||
},
|
||||
}
|
||||
}
|
||||
|
@ -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"
|
||||
},
|
||||
}
|
||||
]
|
||||
}
|
||||
|
@ -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"
|
||||
},
|
||||
}
|
||||
}
|
||||
|
@ -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"
|
||||
}
|
||||
}
|
||||
},
|
||||
}
|
||||
}
|
@ -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",
|
||||
}
|
||||
}
|
@ -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"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@ -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"
|
||||
}
|
||||
}
|
@ -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",
|
||||
}
|
||||
]
|
||||
}
|
@ -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",
|
||||
}
|
||||
}
|
@ -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"
|
||||
}
|
||||
]
|
||||
}
|
@ -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"
|
||||
}
|
||||
}
|
@ -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"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@ -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"
|
||||
}
|
||||
}
|
@ -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"
|
||||
}
|
||||
]
|
||||
}
|
@ -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"
|
||||
}
|
||||
}
|
@ -1,6 +0,0 @@
|
||||
{
|
||||
"vnfd": {
|
||||
"name": "vnfd-sample-updated",
|
||||
"description": "Updated sample"
|
||||
}
|
||||
}
|
@ -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"
|
||||
}
|
||||
}
|
@ -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"
|
||||
}
|
||||
}
|
@ -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"
|
||||
}
|
||||
}
|
@ -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"
|
||||
}
|
||||
]
|
||||
}
|
@ -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"
|
||||
}
|
||||
}
|
@ -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
|
||||
}
|
||||
}
|
@ -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"
|
||||
}
|
||||
}
|
@ -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"
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@ -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"
|
||||
}
|
||||
}
|
@ -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"
|
||||
}
|
||||
]
|
||||
}
|
@ -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"
|
||||
}
|
||||
}
|
@ -1,6 +0,0 @@
|
||||
{
|
||||
"scale": {
|
||||
"policy": "SP1",
|
||||
"type": "out"
|
||||
}
|
||||
}
|
@ -1,6 +0,0 @@
|
||||
{
|
||||
"scale": {
|
||||
"policy": "SP1",
|
||||
"type": "out"
|
||||
}
|
||||
}
|
@ -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"
|
||||
}
|
||||
}
|
||||
}
|
@ -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"
|
||||
}
|
||||
}
|
||||
|
@ -1,8 +0,0 @@
|
||||
{
|
||||
"vnf": {
|
||||
"attributes": {
|
||||
"force": true
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -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"}}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@ -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"
|
||||
}
|
||||
]
|
||||
}
|
@ -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"
|
||||
}
|
||||
]
|
||||
}
|
@ -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"
|
||||
}
|
||||
}
|
@ -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"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@ -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"
|
||||
}
|
||||
}
|
@ -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
|
@ -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
|
@ -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
|
@ -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
|
@ -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
|
@ -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}
|
||||
|
@ -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
|
@ -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.
|
||||
|
@ -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
|
@ -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
|
@ -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
|
@ -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
|
@ -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
|
@ -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
|
@ -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
|
@ -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
|
@ -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
|
@ -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
|
||||
----------------
|
||||
|
@ -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]).
|
||||
|
@ -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.
|
@ -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>
|
@ -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]
|
@ -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:
|
||||
|
||||
|
@ -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
|
@ -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.
|
@ -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
|
@ -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
|
||||
|
@ -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
|
@ -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
|
@ -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
|
||||
|
@ -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'
|
@ -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.
|
@ -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.
|
@ -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
|
@ -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
|
@ -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
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
@ -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
|
||||
|
@ -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
|
@ -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
|
@ -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
Loading…
Reference in New Issue
Block a user