diff --git a/api-ref/source/v1/classifiers.inc b/api-ref/source/v1/classifiers.inc deleted file mode 100644 index b5356ec32..000000000 --- a/api-ref/source/v1/classifiers.inc +++ /dev/null @@ -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 diff --git a/api-ref/source/v1/events.inc b/api-ref/source/v1/events.inc deleted file mode 100644 index 3250c7352..000000000 --- a/api-ref/source/v1/events.inc +++ /dev/null @@ -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 diff --git a/api-ref/source/v1/extensions.inc b/api-ref/source/v1/extensions.inc deleted file mode 100644 index 7f5d3457b..000000000 --- a/api-ref/source/v1/extensions.inc +++ /dev/null @@ -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 diff --git a/api-ref/source/v1/legacy.rst b/api-ref/source/v1/legacy.rst index 497f356c6..3528f2cd9 100644 --- a/api-ref/source/v1/legacy.rst +++ b/api-ref/source/v1/legacy.rst @@ -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 diff --git a/api-ref/source/v1/nfps.inc b/api-ref/source/v1/nfps.inc deleted file mode 100644 index e74b90b0e..000000000 --- a/api-ref/source/v1/nfps.inc +++ /dev/null @@ -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 diff --git a/api-ref/source/v1/nsds.inc b/api-ref/source/v1/nsds.inc deleted file mode 100644 index 427074eda..000000000 --- a/api-ref/source/v1/nsds.inc +++ /dev/null @@ -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 -`_. - -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 diff --git a/api-ref/source/v1/nss.inc b/api-ref/source/v1/nss.inc deleted file mode 100644 index a1ad1ec0c..000000000 --- a/api-ref/source/v1/nss.inc +++ /dev/null @@ -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 diff --git a/api-ref/source/v1/parameters.yaml b/api-ref/source/v1/parameters.yaml index 8c9a60430..6e6e1b473 100644 --- a/api-ref/source/v1/parameters.yaml +++ b/api-ref/source/v1/parameters.yaml @@ -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 `_: - ``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 - `_ - 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 - `_ - 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 - `_. - 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 - `_. - 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 diff --git a/api-ref/source/v1/samples/classifiers/classifiers-list-response.json b/api-ref/source/v1/samples/classifiers/classifiers-list-response.json deleted file mode 100644 index 723595e18..000000000 --- a/api-ref/source/v1/samples/classifiers/classifiers-list-response.json +++ /dev/null @@ -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 - } - } - ] -} diff --git a/api-ref/source/v1/samples/classifiers/classifiers-show-response.json b/api-ref/source/v1/samples/classifiers/classifiers-show-response.json deleted file mode 100644 index 22511dd12..000000000 --- a/api-ref/source/v1/samples/classifiers/classifiers-show-response.json +++ /dev/null @@ -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 - } - } -} diff --git a/api-ref/source/v1/samples/events/events-list-response.json b/api-ref/source/v1/samples/events/events-list-response.json deleted file mode 100644 index f396d6816..000000000 --- a/api-ref/source/v1/samples/events/events-list-response.json +++ /dev/null @@ -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" - } - ] -} diff --git a/api-ref/source/v1/samples/events/events-show-response.json b/api-ref/source/v1/samples/events/events-show-response.json deleted file mode 100644 index 31b2b7822..000000000 --- a/api-ref/source/v1/samples/events/events-show-response.json +++ /dev/null @@ -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" - } -} diff --git a/api-ref/source/v1/samples/extensions/extensions-list-response.json b/api-ref/source/v1/samples/extensions/extensions-list-response.json deleted file mode 100644 index df24fa40a..000000000 --- a/api-ref/source/v1/samples/extensions/extensions-list-response.json +++ /dev/null @@ -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" - } - ] -} diff --git a/api-ref/source/v1/samples/extensions/extensions-show-response.json b/api-ref/source/v1/samples/extensions/extensions-show-response.json deleted file mode 100644 index cd14a0580..000000000 --- a/api-ref/source/v1/samples/extensions/extensions-show-response.json +++ /dev/null @@ -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" - } -} diff --git a/api-ref/source/v1/samples/nfps/nfps-list-response.json b/api-ref/source/v1/samples/nfps/nfps-list-response.json deleted file mode 100644 index 55a4c8666..000000000 --- a/api-ref/source/v1/samples/nfps/nfps-list-response.json +++ /dev/null @@ -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" - } - ] -} diff --git a/api-ref/source/v1/samples/nfps/nfps-show-response.json b/api-ref/source/v1/samples/nfps/nfps-show-response.json deleted file mode 100644 index 3b98e494c..000000000 --- a/api-ref/source/v1/samples/nfps/nfps-show-response.json +++ /dev/null @@ -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" - } -} diff --git a/api-ref/source/v1/samples/nsds/nsds-create-request.json b/api-ref/source/v1/samples/nsds/nsds-create-request.json deleted file mode 100644 index 066b7c6b5..000000000 --- a/api-ref/source/v1/samples/nsds/nsds-create-request.json +++ /dev/null @@ -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" - } - } - } - } - } - }, - } -} diff --git a/api-ref/source/v1/samples/nsds/nsds-create-response.json b/api-ref/source/v1/samples/nsds/nsds-create-response.json deleted file mode 100644 index 748cc2828..000000000 --- a/api-ref/source/v1/samples/nsds/nsds-create-response.json +++ /dev/null @@ -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" - }, - } -} - diff --git a/api-ref/source/v1/samples/nsds/nsds-list-response.json b/api-ref/source/v1/samples/nsds/nsds-list-response.json deleted file mode 100644 index b4af9f45d..000000000 --- a/api-ref/source/v1/samples/nsds/nsds-list-response.json +++ /dev/null @@ -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" - }, - } - ] -} - diff --git a/api-ref/source/v1/samples/nsds/nsds-show-response.json b/api-ref/source/v1/samples/nsds/nsds-show-response.json deleted file mode 100644 index 71c8fd494..000000000 --- a/api-ref/source/v1/samples/nsds/nsds-show-response.json +++ /dev/null @@ -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" - }, - } -} - diff --git a/api-ref/source/v1/samples/nss/nss-create-request.json b/api-ref/source/v1/samples/nss/nss-create-request.json deleted file mode 100644 index ad1f20380..000000000 --- a/api-ref/source/v1/samples/nss/nss-create-request.json +++ /dev/null @@ -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" - } - } - }, - } -} diff --git a/api-ref/source/v1/samples/nss/nss-create-response.json b/api-ref/source/v1/samples/nss/nss-create-response.json deleted file mode 100644 index f96872743..000000000 --- a/api-ref/source/v1/samples/nss/nss-create-response.json +++ /dev/null @@ -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", - } -} diff --git a/api-ref/source/v1/samples/nss/nss-inline-create-request.json b/api-ref/source/v1/samples/nss/nss-inline-create-request.json deleted file mode 100644 index 30e5c7d9a..000000000 --- a/api-ref/source/v1/samples/nss/nss-inline-create-request.json +++ /dev/null @@ -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" - } - } - } - } - } - } -} diff --git a/api-ref/source/v1/samples/nss/nss-inline-create-response.json b/api-ref/source/v1/samples/nss/nss-inline-create-response.json deleted file mode 100644 index e5dbbb70e..000000000 --- a/api-ref/source/v1/samples/nss/nss-inline-create-response.json +++ /dev/null @@ -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" - } -} \ No newline at end of file diff --git a/api-ref/source/v1/samples/nss/nss-list-response.json b/api-ref/source/v1/samples/nss/nss-list-response.json deleted file mode 100644 index 27666e888..000000000 --- a/api-ref/source/v1/samples/nss/nss-list-response.json +++ /dev/null @@ -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", - } - ] -} diff --git a/api-ref/source/v1/samples/nss/nss-show-response.json b/api-ref/source/v1/samples/nss/nss-show-response.json deleted file mode 100644 index f96872743..000000000 --- a/api-ref/source/v1/samples/nss/nss-show-response.json +++ /dev/null @@ -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", - } -} diff --git a/api-ref/source/v1/samples/sfcs/sfcs-list-response.json b/api-ref/source/v1/samples/sfcs/sfcs-list-response.json deleted file mode 100644 index 3550885d3..000000000 --- a/api-ref/source/v1/samples/sfcs/sfcs-list-response.json +++ /dev/null @@ -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" - } - ] -} diff --git a/api-ref/source/v1/samples/sfcs/sfcs-show-response.json b/api-ref/source/v1/samples/sfcs/sfcs-show-response.json deleted file mode 100644 index ec3ada349..000000000 --- a/api-ref/source/v1/samples/sfcs/sfcs-show-response.json +++ /dev/null @@ -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" - } -} diff --git a/api-ref/source/v1/samples/vnfds/vnfds-create-request.json b/api-ref/source/v1/samples/vnfds/vnfds-create-request.json deleted file mode 100644 index 59e5fbf06..000000000 --- a/api-ref/source/v1/samples/vnfds/vnfds-create-request.json +++ /dev/null @@ -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" - } - } - } - } - } - } - } -} diff --git a/api-ref/source/v1/samples/vnfds/vnfds-create-response.json b/api-ref/source/v1/samples/vnfds/vnfds-create-response.json deleted file mode 100644 index 79da908b0..000000000 --- a/api-ref/source/v1/samples/vnfds/vnfds-create-response.json +++ /dev/null @@ -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" - } -} diff --git a/api-ref/source/v1/samples/vnfds/vnfds-list-response.json b/api-ref/source/v1/samples/vnfds/vnfds-list-response.json deleted file mode 100644 index a23737fcb..000000000 --- a/api-ref/source/v1/samples/vnfds/vnfds-list-response.json +++ /dev/null @@ -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" - } - ] -} diff --git a/api-ref/source/v1/samples/vnfds/vnfds-show-response.json b/api-ref/source/v1/samples/vnfds/vnfds-show-response.json deleted file mode 100644 index 39d7772b7..000000000 --- a/api-ref/source/v1/samples/vnfds/vnfds-show-response.json +++ /dev/null @@ -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" - } -} diff --git a/api-ref/source/v1/samples/vnfds/vnfds-update-request.json b/api-ref/source/v1/samples/vnfds/vnfds-update-request.json deleted file mode 100644 index d765d16e5..000000000 --- a/api-ref/source/v1/samples/vnfds/vnfds-update-request.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "vnfd": { - "name": "vnfd-sample-updated", - "description": "Updated sample" - } -} diff --git a/api-ref/source/v1/samples/vnfds/vnfds-update-response.json b/api-ref/source/v1/samples/vnfds/vnfds-update-response.json deleted file mode 100644 index a5e018382..000000000 --- a/api-ref/source/v1/samples/vnfds/vnfds-update-response.json +++ /dev/null @@ -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" - } -} diff --git a/api-ref/source/v1/samples/vnffgds/vnffgds-create-request.json b/api-ref/source/v1/samples/vnffgds/vnffgds-create-request.json deleted file mode 100644 index f11bb47e9..000000000 --- a/api-ref/source/v1/samples/vnffgds/vnffgds-create-request.json +++ /dev/null @@ -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" - } -} diff --git a/api-ref/source/v1/samples/vnffgds/vnffgds-create-response.json b/api-ref/source/v1/samples/vnffgds/vnffgds-create-response.json deleted file mode 100644 index a6d25095f..000000000 --- a/api-ref/source/v1/samples/vnffgds/vnffgds-create-response.json +++ /dev/null @@ -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" - } -} diff --git a/api-ref/source/v1/samples/vnffgds/vnffgds-list-response.json b/api-ref/source/v1/samples/vnffgds/vnffgds-list-response.json deleted file mode 100644 index 226e4a5d4..000000000 --- a/api-ref/source/v1/samples/vnffgds/vnffgds-list-response.json +++ /dev/null @@ -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" - } - ] -} diff --git a/api-ref/source/v1/samples/vnffgds/vnffgds-show-response.json b/api-ref/source/v1/samples/vnffgds/vnffgds-show-response.json deleted file mode 100644 index fe96874fb..000000000 --- a/api-ref/source/v1/samples/vnffgds/vnffgds-show-response.json +++ /dev/null @@ -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" - } -} diff --git a/api-ref/source/v1/samples/vnffgs/vnffgs-create-request.json b/api-ref/source/v1/samples/vnffgs/vnffgs-create-request.json deleted file mode 100644 index 1ca999672..000000000 --- a/api-ref/source/v1/samples/vnffgs/vnffgs-create-request.json +++ /dev/null @@ -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 - } -} diff --git a/api-ref/source/v1/samples/vnffgs/vnffgs-create-response.json b/api-ref/source/v1/samples/vnffgs/vnffgs-create-response.json deleted file mode 100644 index fb5eb2c06..000000000 --- a/api-ref/source/v1/samples/vnffgs/vnffgs-create-response.json +++ /dev/null @@ -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" - } -} diff --git a/api-ref/source/v1/samples/vnffgs/vnffgs-inline-create-request.json b/api-ref/source/v1/samples/vnffgs/vnffgs-inline-create-request.json deleted file mode 100644 index 75b2edb94..000000000 --- a/api-ref/source/v1/samples/vnffgs/vnffgs-inline-create-request.json +++ /dev/null @@ -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" - ] - } - } - } - } - } -} diff --git a/api-ref/source/v1/samples/vnffgs/vnffgs-inline-create-response.json b/api-ref/source/v1/samples/vnffgs/vnffgs-inline-create-response.json deleted file mode 100644 index 91e35b9ac..000000000 --- a/api-ref/source/v1/samples/vnffgs/vnffgs-inline-create-response.json +++ /dev/null @@ -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" - } -} \ No newline at end of file diff --git a/api-ref/source/v1/samples/vnffgs/vnffgs-list-response.json b/api-ref/source/v1/samples/vnffgs/vnffgs-list-response.json deleted file mode 100644 index 2bed1f904..000000000 --- a/api-ref/source/v1/samples/vnffgs/vnffgs-list-response.json +++ /dev/null @@ -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" - } - ] -} diff --git a/api-ref/source/v1/samples/vnffgs/vnffgs-show-response.json b/api-ref/source/v1/samples/vnffgs/vnffgs-show-response.json deleted file mode 100644 index 7de108143..000000000 --- a/api-ref/source/v1/samples/vnffgs/vnffgs-show-response.json +++ /dev/null @@ -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" - } -} diff --git a/api-ref/source/v1/samples/vnfs/vnfs-actions-create-request.json b/api-ref/source/v1/samples/vnfs/vnfs-actions-create-request.json deleted file mode 100644 index 983dfd1fb..000000000 --- a/api-ref/source/v1/samples/vnfs/vnfs-actions-create-request.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "scale": { - "policy": "SP1", - "type": "out" - } -} diff --git a/api-ref/source/v1/samples/vnfs/vnfs-actions-create-response.json b/api-ref/source/v1/samples/vnfs/vnfs-actions-create-response.json deleted file mode 100644 index 983dfd1fb..000000000 --- a/api-ref/source/v1/samples/vnfs/vnfs-actions-create-response.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "scale": { - "policy": "SP1", - "type": "out" - } -} diff --git a/api-ref/source/v1/samples/vnfs/vnfs-create-request.json b/api-ref/source/v1/samples/vnfs/vnfs-create-request.json deleted file mode 100644 index 0636e7f33..000000000 --- a/api-ref/source/v1/samples/vnfs/vnfs-create-request.json +++ /dev/null @@ -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" - } - } -} diff --git a/api-ref/source/v1/samples/vnfs/vnfs-create-response.json b/api-ref/source/v1/samples/vnfs/vnfs-create-response.json deleted file mode 100644 index 378407889..000000000 --- a/api-ref/source/v1/samples/vnfs/vnfs-create-response.json +++ /dev/null @@ -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" - } -} - diff --git a/api-ref/source/v1/samples/vnfs/vnfs-delete-request.json b/api-ref/source/v1/samples/vnfs/vnfs-delete-request.json deleted file mode 100644 index 00284f7ea..000000000 --- a/api-ref/source/v1/samples/vnfs/vnfs-delete-request.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "vnf": { - "attributes": { - "force": true - } - } -} - diff --git a/api-ref/source/v1/samples/vnfs/vnfs-inline-create-request.json b/api-ref/source/v1/samples/vnfs/vnfs-inline-create-request.json deleted file mode 100644 index 3a6708e3d..000000000 --- a/api-ref/source/v1/samples/vnfs/vnfs-inline-create-request.json +++ /dev/null @@ -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"}} - } - } - } - } -} diff --git a/api-ref/source/v1/samples/vnfs/vnfs-list-response.json b/api-ref/source/v1/samples/vnfs/vnfs-list-response.json deleted file mode 100644 index 3801e1dd2..000000000 --- a/api-ref/source/v1/samples/vnfs/vnfs-list-response.json +++ /dev/null @@ -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" - } - ] -} diff --git a/api-ref/source/v1/samples/vnfs/vnfs-resources-list-response.json b/api-ref/source/v1/samples/vnfs/vnfs-resources-list-response.json deleted file mode 100644 index 5d3092da7..000000000 --- a/api-ref/source/v1/samples/vnfs/vnfs-resources-list-response.json +++ /dev/null @@ -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" - } - ] -} diff --git a/api-ref/source/v1/samples/vnfs/vnfs-show-response.json b/api-ref/source/v1/samples/vnfs/vnfs-show-response.json deleted file mode 100644 index 00d200901..000000000 --- a/api-ref/source/v1/samples/vnfs/vnfs-show-response.json +++ /dev/null @@ -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" - } -} diff --git a/api-ref/source/v1/samples/vnfs/vnfs-update-request.json b/api-ref/source/v1/samples/vnfs/vnfs-update-request.json deleted file mode 100644 index eb86bebb6..000000000 --- a/api-ref/source/v1/samples/vnfs/vnfs-update-request.json +++ /dev/null @@ -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" - } - } - } - } - } - } -} diff --git a/api-ref/source/v1/samples/vnfs/vnfs-update-response.json b/api-ref/source/v1/samples/vnfs/vnfs-update-response.json deleted file mode 100644 index c7db2f9d1..000000000 --- a/api-ref/source/v1/samples/vnfs/vnfs-update-response.json +++ /dev/null @@ -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" - } -} diff --git a/api-ref/source/v1/sfcs.inc b/api-ref/source/v1/sfcs.inc deleted file mode 100644 index 65c2af0ee..000000000 --- a/api-ref/source/v1/sfcs.inc +++ /dev/null @@ -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 diff --git a/api-ref/source/v1/vnfds.inc b/api-ref/source/v1/vnfds.inc deleted file mode 100644 index 34fc34775..000000000 --- a/api-ref/source/v1/vnfds.inc +++ /dev/null @@ -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 -`_. - -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 diff --git a/api-ref/source/v1/vnffgds.inc b/api-ref/source/v1/vnffgds.inc deleted file mode 100644 index 2d7edc2e9..000000000 --- a/api-ref/source/v1/vnffgds.inc +++ /dev/null @@ -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 -`_. - - -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 diff --git a/api-ref/source/v1/vnffgs.inc b/api-ref/source/v1/vnffgs.inc deleted file mode 100644 index 3f0faba90..000000000 --- a/api-ref/source/v1/vnffgs.inc +++ /dev/null @@ -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 -`_. - -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 diff --git a/api-ref/source/v1/vnfs.inc b/api-ref/source/v1/vnfs.inc deleted file mode 100644 index 150988df9..000000000 --- a/api-ref/source/v1/vnfs.inc +++ /dev/null @@ -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 diff --git a/devstack/lib/tacker b/devstack/lib/tacker index a59e15afd..25ecccc71 100644 --- a/devstack/lib/tacker +++ b/devstack/lib/tacker @@ -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} diff --git a/doc/source/_extra/.htaccess b/doc/source/_extra/.htaccess deleted file mode 100644 index 3934407c5..000000000 --- a/doc/source/_extra/.htaccess +++ /dev/null @@ -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 diff --git a/doc/source/admin/index.rst b/doc/source/admin/index.rst index 9e7a09492..7969e7487 100644 --- a/doc/source/admin/index.rst +++ b/doc/source/admin/index.rst @@ -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 **. -.. 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. diff --git a/doc/source/cli/cli-legacy-event.rst b/doc/source/cli/cli-legacy-event.rst deleted file mode 100644 index 58ae5248d..000000000 --- a/doc/source/cli/cli-legacy-event.rst +++ /dev/null @@ -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 ] - [--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 - - -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 ] [--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 diff --git a/doc/source/cli/cli-legacy-fc.rst b/doc/source/cli/cli-legacy-fc.rst deleted file mode 100644 index 1fd39f532..000000000 --- a/doc/source/cli/cli-legacy-fc.rst +++ /dev/null @@ -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 `_ -* `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 ] - [--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 - - -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 ] - [--fit-width] [--print-empty] - - - Display flow classifier details - - positional arguments: - Flow Classifier to display (name or ID) - - optional arguments: - -h, --help show this help message and exit diff --git a/doc/source/cli/cli-legacy-nfp.rst b/doc/source/cli/cli-legacy-nfp.rst deleted file mode 100644 index f6c83308e..000000000 --- a/doc/source/cli/cli-legacy-nfp.rst +++ /dev/null @@ -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 `_ -* `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 ] - [--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 - - -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 ] - [--fit-width] - [--print-empty] - - - Display NFP details - - positional arguments: - NFP to display (name or ID) - - optional arguments: - -h, --help show this help message and exit diff --git a/doc/source/cli/cli-legacy-nsd.rst b/doc/source/cli/cli-legacy-nsd.rst deleted file mode 100644 index 7bcf4b341..000000000 --- a/doc/source/cli/cli-legacy-nsd.rst +++ /dev/null @@ -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 `_ -* `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 - - -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 ] [--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 ] - [--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 - - -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 ] [--fit-width] - [--print-empty] - - - Display NSD details - - positional arguments: - 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 - -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 ] - [--fit-width] [--print-empty] - - - Display NSD Template details - - positional arguments: - 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 - - -Result: - - All specified nsd(s) deleted successfully - - -Help: - - $ openstack ns descriptor delete --help - usage: openstack ns descriptor delete [-h] [ ...] - - Delete NSD(s). - - positional arguments: - NSD(s) to delete (name or ID) - - optional arguments: - -h, --help show this help message and exit diff --git a/doc/source/cli/cli-legacy-sfc.rst b/doc/source/cli/cli-legacy-sfc.rst deleted file mode 100644 index c75549703..000000000 --- a/doc/source/cli/cli-legacy-sfc.rst +++ /dev/null @@ -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 `_ -* `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 ] - [--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 - - -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 ] [--fit-width] - [--print-empty] - - - Display SFC details - - positional arguments: - SFC to display (name or ID) - - optional arguments: - -h, --help show this help message and exit diff --git a/doc/source/cli/cli-legacy-vnf.rst b/doc/source/cli/cli-legacy-vnf.rst deleted file mode 100644 index 0668c6612..000000000 --- a/doc/source/cli/cli-legacy-vnf.rst +++ /dev/null @@ -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 - - -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 \ - - - -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 ] [--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 ] [--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 - - -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 ] [--fit-width] - [--print-empty] - - - Display VNF details - - positional arguments: - 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 - - -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 ] - [--fit-width] [--print-empty] - [--sort-column SORT_COLUMN] - - - List resources of a VNF like VDU, CP, etc. - - positional arguments: - 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 - - -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 ] [--fit-width] [--print-empty] - (--config-file CONFIG_FILE | --config CONFIG | --param-file PARAM_FILE) - - - Update a given VNF. - - positional arguments: - 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-type out - - -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-type in - - -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] - - - Scale a VNF. - - positional arguments: - 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 - - -Result: - -.. code-block:: console - - All specified vnf(s) deleted successfully - - -Help: - -.. code-block:: console - - $ openstack vnf delete --help - usage: openstack vnf delete [-h] [--force] [ ...] - - Delete VNF(s). - - positional arguments: - VNF(s) to delete (name or ID) - - optional arguments: - -h, --help show this help message and exit - --force Force delete VNF instance diff --git a/doc/source/cli/cli-legacy-vnfd.rst b/doc/source/cli/cli-legacy-vnfd.rst deleted file mode 100644 index 8d09a3bcc..000000000 --- a/doc/source/cli/cli-legacy-vnfd.rst +++ /dev/null @@ -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 - - -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 ] [--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 ] - [--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 - - -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 ] - [--fit-width] [--print-empty] - - - Display VNFD details - - positional arguments: - 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 - - -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 ] - [--fit-width] [--print-empty] - - - Display VNFD Template details - - positional arguments: - 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 - - -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] [ ...] - - Delete VNFD(s). - - positional arguments: - VNFD(s) to delete (name or ID) - - optional arguments: - -h, --help show this help message and exit diff --git a/doc/source/cli/cli-legacy-vnffg.rst b/doc/source/cli/cli-legacy-vnffg.rst deleted file mode 100644 index e88c9ab50..000000000 --- a/doc/source/cli/cli-legacy-vnffg.rst +++ /dev/null @@ -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 `_ -* `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 `_: - -.. code-block:: console - - (Before) - network_src_port_id: 14ad4f29-629f-4b97-8bc8-86e96cb49974 - - (After) - network_src_port_id: - - -.. 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 - - -Create the VNFFG: - -.. code-block:: console - - $ openstack vnf graph create --vnffgd-name \ - - - -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 ] [--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 ] - [--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 - - -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 ] [--fit-width] - [--print-empty] - - - Display VNFFG details - - positional arguments: - 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 \ - - - -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 ] [--fit-width] - [--print-empty] - [--vnffgd-template VNFFGD_TEMPLATE] - [--vnf-mapping VNF_MAPPING] [--symmetrical] - [--description DESCRIPTION] - - - Update VNFFG. - - positional arguments: - 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 - - -.. code-block:: console - - All specified vnffg(s) deleted successfully - - -Help: - -.. code-block:: console - - $ openstack vnf graph delete --help - usage: openstack vnf graph delete [-h] [ ...] - - Delete VNFFG(s). - - positional arguments: - VNFFG(s) to delete (name or ID) - - optional arguments: - -h, --help show this help message and exit diff --git a/doc/source/cli/cli-legacy-vnffgd.rst b/doc/source/cli/cli-legacy-vnffgd.rst deleted file mode 100644 index c724c904e..000000000 --- a/doc/source/cli/cli-legacy-vnffgd.rst +++ /dev/null @@ -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 - - -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 ] - [--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 ] - [--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 - - -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 ] - [--fit-width] [--print-empty] - - - Display VNFFGD details - - positional arguments: - 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 - - -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 ] - [--fit-width] - [--print-empty] - - - Display VNFFGD Template details - - positional arguments: - 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 - - -.. 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] [ ...] - - Delete VNFFGD(s). - - positional arguments: - VNFFGD(s) to delete (name or ID) - - optional arguments: - -h, --help show this help message and exit diff --git a/doc/source/cli/index.rst b/doc/source/cli/index.rst index 5e05d3232..2784c1bf9 100644 --- a/doc/source/cli/index.rst +++ b/doc/source/cli/index.rst @@ -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 ---------------- diff --git a/doc/source/conf.py b/doc/source/conf.py index 9f5a23c9a..0e208cced 100644 --- a/doc/source/conf.py +++ b/doc/source/conf.py @@ -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]). diff --git a/doc/source/contributor/event_logging.rst b/doc/source/contributor/event_logging.rst deleted file mode 100644 index e186b7419..000000000 --- a/doc/source/contributor/event_logging.rst +++ /dev/null @@ -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 `_ - -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 -here is VNF's uuid. - -.. code-block:: console - - openstack nfv event list --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 - here is a VIM uuid. - -.. code-block:: console - - openstack nfv event list --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. diff --git a/doc/source/contributor/monitor-api.rst b/doc/source/contributor/monitor-api.rst deleted file mode 100644 index 6594d5cf0..000000000 --- a/doc/source/contributor/monitor-api.rst +++ /dev/null @@ -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: : - parameters: - : - ... - actions: - : - - -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: - parameters: - : - : - actions: - : - : diff --git a/doc/source/contributor/policy_actions_framework.rst b/doc/source/contributor/policy_actions_framework.rst deleted file mode 100644 index b7cf05d2c..000000000 --- a/doc/source/contributor/policy_actions_framework.rst +++ /dev/null @@ -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] diff --git a/doc/source/contributor/tacker_functional_test.rst b/doc/source/contributor/tacker_functional_test.rst index 49c59e6c7..9c0930651 100644 --- a/doc/source/contributor/tacker_functional_test.rst +++ b/doc/source/contributor/tacker_functional_test.rst @@ -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: diff --git a/doc/source/contributor/vnfd_template_description.rst b/doc/source/contributor/vnfd_template_description.rst deleted file mode 100644 index 6a426dd56..000000000 --- a/doc/source/contributor/vnfd_template_description.rst +++ /dev/null @@ -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 diff --git a/doc/source/contributor/vnfd_template_parameterization.rst b/doc/source/contributor/vnfd_template_parameterization.rst deleted file mode 100644 index a271f908f..000000000 --- a/doc/source/contributor/vnfd_template_parameterization.rst +++ /dev/null @@ -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: }. 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: }, - 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 --param-file - -#. 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. diff --git a/doc/source/contributor/vnffgd_template_description.rst b/doc/source/contributor/vnffgd_template_description.rst deleted file mode 100644 index 2797b10e8..000000000 --- a/doc/source/contributor/vnffgd_template_description.rst +++ /dev/null @@ -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 diff --git a/doc/source/contributor/zabbix-plugin.rst b/doc/source/contributor/zabbix-plugin.rst deleted file mode 100644 index c04af6133..000000000 --- a/doc/source/contributor/zabbix-plugin.rst +++ /dev/null @@ -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 - diff --git a/doc/source/install/legacy_getting_started.rst b/doc/source/install/legacy_getting_started.rst deleted file mode 100644 index 9e769d6e3..000000000 --- a/doc/source/install/legacy_getting_started.rst +++ /dev/null @@ -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 diff --git a/doc/source/reference/block_storage_usage_guide.rst b/doc/source/reference/block_storage_usage_guide.rst deleted file mode 100644 index 3cb454d2b..000000000 --- a/doc/source/reference/block_storage_usage_guide.rst +++ /dev/null @@ -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 diff --git a/doc/source/reference/index.rst b/doc/source/reference/index.rst index 98a92b44b..7411abd91 100644 --- a/doc/source/reference/index.rst +++ b/doc/source/reference/index.rst @@ -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 diff --git a/doc/source/reference/maintenance_usage_guide.rst b/doc/source/reference/maintenance_usage_guide.rst deleted file mode 100644 index bf0b2fc08..000000000 --- a/doc/source/reference/maintenance_usage_guide.rst +++ /dev/null @@ -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 `_. -- `Fenix Configuration Guide `_. - -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' diff --git a/doc/source/reference/reservation_policy_usage_guide.rst b/doc/source/reference/reservation_policy_usage_guide.rst deleted file mode 100644 index 5352071b5..000000000 --- a/doc/source/reference/reservation_policy_usage_guide.rst +++ /dev/null @@ -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. diff --git a/doc/source/user/alarm_monitoring_usage_guide.rst b/doc/source/user/alarm_monitoring_usage_guide.rst deleted file mode 100644 index 14335dca2..000000000 --- a/doc/source/user/alarm_monitoring_usage_guide.rst +++ /dev/null @@ -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. diff --git a/doc/source/user/containerized_vnf_usage_guide.rst b/doc/source/user/containerized_vnf_usage_guide.rst deleted file mode 100644 index f06a23c88..000000000 --- a/doc/source/user/containerized_vnf_usage_guide.rst +++ /dev/null @@ -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 443/TCP 5h - svc-vdu1-05db44 ClusterIP 192.168.28.187 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 / 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 diff --git a/doc/source/user/dynamic_vnffg_usage_guide.rst b/doc/source/user/dynamic_vnffg_usage_guide.rst deleted file mode 100644 index 9267daa1e..000000000 --- a/doc/source/user/dynamic_vnffg_usage_guide.rst +++ /dev/null @@ -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:///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 diff --git a/doc/source/contributor/encrypt_vim_auth_with_barbican.rst b/doc/source/user/encrypt_vim_auth_with_barbican.rst similarity index 100% rename from doc/source/contributor/encrypt_vim_auth_with_barbican.rst rename to doc/source/user/encrypt_vim_auth_with_barbican.rst diff --git a/doc/source/user/enhanced_placement_awareness_usage_guide.rst b/doc/source/user/enhanced_placement_awareness_usage_guide.rst deleted file mode 100644 index 793277fd5..000000000 --- a/doc/source/user/enhanced_placement_awareness_usage_guide.rst +++ /dev/null @@ -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 - - openstack aggregate add host NFV-AGG - -**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 diff --git a/doc/source/install/etsi_getting_started.rst b/doc/source/user/etsi_getting_started.rst similarity index 100% rename from doc/source/install/etsi_getting_started.rst rename to doc/source/user/etsi_getting_started.rst diff --git a/doc/source/user/index.rst b/doc/source/user/index.rst index c04932b21..55f92ee7a 100644 --- a/doc/source/user/index.rst +++ b/doc/source/user/index.rst @@ -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 diff --git a/doc/source/user/introduction.rst b/doc/source/user/introduction.rst index 8998938e6..6cb9dbac9 100644 --- a/doc/source/user/introduction.rst +++ b/doc/source/user/introduction.rst @@ -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 diff --git a/doc/source/user/legacy_use_case_guide.rst b/doc/source/user/legacy_use_case_guide.rst deleted file mode 100644 index c31de77d0..000000000 --- a/doc/source/user/legacy_use_case_guide.rst +++ /dev/null @@ -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 diff --git a/doc/source/user/mgmt_driver_for_ansible_driver_usage_guide.rst b/doc/source/user/mgmt_driver_for_ansible_driver_usage_guide.rst index 34ee803e2..f936089e1 100644 --- a/doc/source/user/mgmt_driver_for_ansible_driver_usage_guide.rst +++ b/doc/source/user/mgmt_driver_for_ansible_driver_usage_guide.rst @@ -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 diff --git a/doc/source/user/multisite_vim_usage_guide.rst b/doc/source/user/multisite_vim_usage_guide.rst deleted file mode 100644 index 6ac94c00d..000000000 --- a/doc/source/user/multisite_vim_usage_guide.rst +++ /dev/null @@ -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 diff --git a/doc/source/user/nsd_usage_guide.rst b/doc/source/user/nsd_usage_guide.rst deleted file mode 100644 index b096e4b84..000000000 --- a/doc/source/user/nsd_usage_guide.rst +++ /dev/null @@ -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 diff --git a/doc/source/user/placement_policy_usage_guide.rst b/doc/source/user/placement_policy_usage_guide.rst deleted file mode 100644 index d531ee503..000000000 --- a/doc/source/user/placement_policy_usage_guide.rst +++ /dev/null @@ -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 diff --git a/doc/source/user/resources.rst b/doc/source/user/resources.rst index f3593ebbf..24b883e35 100644 --- a/doc/source/user/resources.rst +++ b/doc/source/user/resources.rst @@ -58,47 +58,5 @@ Grant granting_interface - -Legacy Tacker 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). - -NFVO -^^^^ - -VNFFG, VNFFGD -""""""""""""" - -.. toctree:: - :maxdepth: 1 - - ../contributor/vnffgd_template_description - -.. TODO(h-asahina): add `VIM` and `NS, NSD`. +.. TODO(h-asahina): add `VIM`. * https://etherpad.opendev.org/p/tacker-wallaby-revise-docs - - -VNFM -^^^^ - -VNF, VNFD -""""""""" - -.. toctree:: - :maxdepth: 1 - - ../contributor/vnfd_template_description - ../contributor/vnfd_template_parameterization - vnf_component_usage_guide - -Event -^^^^^ - -.. toctree:: - :maxdepth: 1 - - ../contributor/event_logging diff --git a/doc/source/user/scale_usage_guide.rst b/doc/source/user/scale_usage_guide.rst deleted file mode 100644 index 682c8fdda..000000000 --- a/doc/source/user/scale_usage_guide.rst +++ /dev/null @@ -1,178 +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-scale: - -=========== -VNF scaling -=========== - -.. 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). - -VNF resources in terms of CPU core and memory are hardcoded in the VNFD -template through image flavor settings. This results in either provisioning -VNF for typical usage or for maximum usage. The former leads to service -disruption when the load exceeds provisioned capacity. And the latter leads -to underutilized resources and waste during normal system load. So Tacker -provides a way to seamlessly scale the number of VNFs on demand either -manually or automatically. - - -TOSCA schema for scaling policy -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -Tacker defines TOSCA schema for the scaling policy as given below: - -.. code-block:: yaml - - tosca.policies.tacker.Scaling: - derived_from: tosca.policies.Scaling - description: Defines policy for scaling the given targets. - properties: - increment: - type: integer - required: true - description: Number of nodes to add or remove during the scale out/in. - min_instances: - type: integer - required: true - description: Minimum number of instances to scale in. - max_instances: - type: integer - required: true - description: Maximum number of instances to scale out. - default_instances: - type: integer - required: true - description: Initial number of instances. - cooldown: - type: integer - required: false - default: 120 - description: Wait time (in seconds) between consecutive scaling - operations. During the cooldown period, scaling action will be ignored - targets: - type: list - entry_schema: - type: string - required: true - description: List of Scaling nodes. - - -Sample TOSCA with scaling policy -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -The following TOSCA snippet shows the scaling policy used in VNFD, in which -vdu1 and vdu2 are already defined VDUs. - -.. code-block:: yaml - - policies: - - sp1: - type: tosca.policies.tacker.Scaling - description: Simple VDU scaling - targets: [vdu1, vdu2] - properties: - min_instances: 1 - max_instances: 3 - default_instances: 2 - increment: 1 - -Deploying scaling TOSCA template using Tacker -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -Once OpenStack/Devstack along with Tacker has been successfully installed, -deploy a sample scaling template from location given -below: -https://opendev.org/openstack/tacker/src/branch/master/samples/tosca-templates/vnfd - -How to create a VNFD and deploy a VNF refer to -:doc:`../install/legacy_getting_started`. - - -How to scale VNF using CLI -~~~~~~~~~~~~~~~~~~~~~~~~~~ - -Tacker provides following CLI for scaling. - -.. code-block:: console - - $ openstack vnf scale --vnf-id --vnf-name \ - --scaling-policy-name --scaling-type - -Here, - -* scaling-policy-name - Policy name defined in scaling VNFD -* scaling-type - in or out -* vnf-id - scaling VNF id -* vnf-name - scaling VNF name - -For example, to scale-out policy 'sp1' defined above, this command could be -used as below: - -.. code-block:: console - - $ openstack vnf scale --vnf-name sample-vnf --scaling-policy-name sp1 \ - --scaling-type out - -How to scale VNF using REST API -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -Tacker provides following REST API for scaling. - -**POST on v1.0/vnfs//actions** - -with body - -.. code-block:: json - - {"scale": { "type": "", "policy" : ""}} - -Here, - -* scaling-policy-name - Policy name defined in scaling VNFD -* scaling-type - in or out -* vnf-id - scaling VNF id - -Response http status codes: - -* 202 - Accepted the request for doing the scaling operation -* 404 - Bad request, if given scaling-policy-name and type are invalid -* 500 - Internal server error, on scaling operation failed due to an error -* 401 - Unauthorized - -VNF state transitions during scaling operation -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -During the scaling operation, the VNF will be moving in below state -transformations: - -* **ACTIVE -> PENDING_SCALE_IN -> ACTIVE** -* **ACTIVE -> PENDING_SCALE_IN -> ERROR** -* **ACTIVE -> PENDING_SCALE_OUT -> ACTIVE** -* **ACTIVE -> PENDING_SCALE_OUT -> ERROR** - - -Limitations -~~~~~~~~~~~ - -Following features are not supported with scaling: - -* Auto-scaling feature is supported only with alarm monitors and it does - not work with other monitors such as ping, http_ping. -* When VNF is modelled with scaling requirement in VNFD, any config - management requirement in VNFD is not supported. -* Scaling feature does not support to selectively choose the VDU as part - of scaling. diff --git a/doc/source/user/vnf_component_usage_guide.rst b/doc/source/user/vnf_component_usage_guide.rst deleted file mode 100644 index ae594ee7f..000000000 --- a/doc/source/user/vnf_component_usage_guide.rst +++ /dev/null @@ -1,63 +0,0 @@ -======================== -VNF Component in 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). - -This section will cover how to deploy `vnf component` in Tacker with the -examples of how to write VNF descriptors. - - -Sample TOSCA with VNFC -======================= - -The following example shows vnfc resource using TOSCA template. -The target (VDU1) of the 'firewall_vnfc' in this example need to be -described firstly like other TOSCA templates in Tacker. - -.. code-block:: yaml - - topology_template: - node_templates: - firewall_vnfc: - type: tosca.nodes.nfv.VNFC.Tacker - requirements: - - host: VDU1 - interfaces: - Standard: - create: install_vnfc.sh - -Every vnfc node must be of type 'tosca.nodes.nfv.VNFC.Tacker'. It takes -two parameters: - -1) requirements: This node will accept list of hosts on which VNFC has to be - installed. -2) interfaces: This node will accept the absolute path of shell script to be run - on the VDUs. This shell script should reside in the machine where tacker - server is running. - - -How to Setup Environment -~~~~~~~~~~~~~~~~~~~~~~~~~ -To make use of VNFC in Tacker, we have to upload the image to the glance in -which heat-config and heat-config agents are installed. The installation steps -can be referred `here `_. The tool -'tools/vnfc/build_image.sh' can be used to generate such a kind of image. - -Currently VNFC feature works by using `heat software config `_ which -makes use of heat API. - -So the glance images which has heat-config agents installed are only to be -passed to VDU. - -Known Limitations -~~~~~~~~~~~~~~~~~ -1) Only one VNFC is supported for one VDU. Multiple VNFC per VDU will - be introduced in future. -2) The shell script for vnfc has to be placed in the machine where tacker - server is running. diff --git a/doc/source/user/vnffg_usage_guide.rst b/doc/source/user/vnffg_usage_guide.rst deleted file mode 100644 index 2be999323..000000000 --- a/doc/source/user/vnffg_usage_guide.rst +++ /dev/null @@ -1,495 +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-vnffg: - -==================== -VNF Forwarding Graph -==================== - -.. 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). - -VNF Forwarding Graph or 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). Please see the `devref guide -`_ on VNFFGD to learn more about -how a VNFFGD is defined. - -VNFFG can be instantiated from VNFFGD or directly from VNFFGD template by -separate Tacker commands. This action will build the chain and classifier -necessary to realize the VNFFG. - -Prerequisites -~~~~~~~~~~~~~ - -VNFFG with OpenStack VIM relies on Neutron Networking-sfc to create SFC and -Classifiers. Therefore it is required to install `networking-sfc -`_ project -in order to use Tacker VNFFG. Networking-sfc also requires at least OVS 2.5 -.0, so also ensure that is installed. See the full `Networking-sfc guide -`_. - -A simple example of a service chain would be one that forces all traffic -from HTTP client to HTTP server to go through VNFs that was created by -VNFFG. - -Firstly, HTTP client and HTTP server must be launched. - -.. code-block:: console - - net_id=$(openstack network list | grep net0 | awk '{print $2}') - - openstack server create --flavor m1.tiny --image cirros-0.5.2-x86_64-disk \ - --nic net-id=$net_id http_client - - openstack server create --flavor m1.tiny --image cirros-0.5.2-x86_64-disk \ - --nic net-id=$net_id http_server - -Creating the VNFFGD -~~~~~~~~~~~~~~~~~~~ - -Once OpenStack/Devstack along with Tacker has been successfully installed, -deploy a sample VNFFGD template such as the one `here `_. - -.. note:: - - A current constraint of the Forwarding Path policy match criteria is - to include the network_src_port_id, such as: - - .. code-block:: yaml - - 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 - -In above example, VNFFG will have 2 flow classifier. List flow classifiers -are defined in list of criteria. - -You can get network_src_port_id, network_dest_port_id and destination IP -address through OpenStack commands like bellow: - -.. code-block:: console - - client_ip=$(openstack server list | grep http_client | grep -Eo '[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+') - - network_source_port_id=$(openstack port list | grep $client_ip | awk '{print $2}') - - ip_dst=$(openstack server list | grep http_server | grep -Eo '[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+') - - network_dest_port_id=$(openstack port list | grep $ip_dst | awk '{print $2}') - -This is required due to a limitation of Neutron networking-sfc and only -applies to an OpenStack VIM. - -Two "network_dst_port_id" and "ip_dst_prefix" parameters must be set when you -want to create VNFFG with "symmetrical" feature. If you want to create VNFFG -without "symmetrical", you can omit "network_dst_port_id" and "ip_dst_prefix". - -.. code-block:: yaml - - Forwarding_path1: - type: tosca.nodes.nfv.FP.TackerV2 - description: creates path (CP12->CP22) - properties: - id: 51 - symmetrical: true - correlation: nsh - policy: - type: ACL - criteria: - - name: block_tcp - classifier: - network_src_port_id: 640dfd77-c92b-45a3-b8fc-22712de480e1 - network_dst_port_id: ea206bba-7083-4364-a9f1-c0b7fdf61b6e - ip_dst_prefix: 192.168.1.2/24 - destination_port_range: 80-1024 - ip_proto: 6 - path: - - forwarder: VNFD1 - capability: CP12 - sfc_encap: True - - forwarder: VNFD2 - capability: CP22 - sfc_encap: False - -In above template, users can set **symmetrical** in properties of a forwarding -path create symmetrical VNFFG. If this property is not set, **symmetrical** -will be specified by **--symmetrical** in create VNFFG command (default value -is False). - -In other hand, by setting **correlation** in properties let users can choose -SFC encapsulation between MPLS or NSH (default: MPLS). If sfc_encap is True, -port pair's correlation is set to same value with **correlation** to make use -of **correlation** that SFC Encapsulation provides, otherwise port pair's -correlation is set to None to install SFC proxy `SFC_PROXY`_. Detailed -information about SFC encapsulation can be found in Networking-SFC project -`SFC_ENCAPSULATION`_ - -You can use the sample VNFFGD template for symmetrical feature (in port chain) -such as this `link `_. - -The symmetrical argument is used to indicate if reverse traffic should also -flow through the path. This creates an extra classifier to ensure return -traffic flows through the chain in a reverse path, otherwise this traffic -routed normally and does not enter the VNFFG. - -Tacker provides the following OpenStackClient CLI to create a VNFFGD: - -.. code-block:: console - - openstack vnf graph descriptor create --vnffgd-file - - -Creating the VNFFG -~~~~~~~~~~~~~~~~~~ - -To create a VNFFG, you must have first created VNF instances of the same -VNFD types listed in the VNFFGD. Failure to do so will result in error when -trying to create a VNFFG. Note, the VNFD you define **must** include the -same Connection Point definitions as the ones you declared in your VNFFGD. - -.. code-block:: console - - openstack vnf descriptor create --vnfd-file tosca-vnffg-vnfd1.yaml VNFD1 - openstack vnf create --vnfd-name VNFD1 VNF1 - - openstack vnf descriptor create --vnfd-file tosca-vnffg-vnfd2.yaml VNFD2 - openstack vnf create --vnfd-name VNFD2 VNF2 - -Refer the 'Getting Started' link below on how to create a VNFD and deploy -2 VNFs: `VNF1`_ and `VNF2`_. - -https://docs.openstack.org/tacker/latest/install/getting_started.html - -Tacker provides the following OpenStackClient CLI to create VNFFG from VNFFGD: - -.. code-block:: console - - openstack vnf graph create --vnffgd-name --vnf-mapping --symmetrical - -or you can create directly VNFFG from vnffgd template without initiating -VNFFGD. - -.. code-block:: console - - openstack vnf graph create --vnffgd-template --vnf-mapping \ - --symmetrical - -If you use a parameterized vnffg template: - -.. code-block:: console - - openstack vnf graph create --vnffgd-name --param-file --vnf-mapping \ - --symmetrical - -Here, - -* vnffgd-name - VNFFGD to use to instantiate this VNFFG -* param-file - Parameter file in Yaml. -* vnf-mapping - Allows a list of logical VNFD to VNF instance mapping -* symmetrical - If --symmetrical is present, symmetrical is True - (default: False - The **symmectical** is set in template has higher priority) - -VNF Mapping is used to declare which exact VNF instance to be used for -each VNF in the Forwarding Path. The following command would list VNFs -in Tacker and then map each VNFD defined in the VNFFGD Forwarding Path -to the desired VNF instance: - -.. code-block:: console - - openstack vnf list - - +--------------------------------------+------+---------------------------+--------+--------------------------------------+--------------------------------------+ - | id | name | mgmt_ip_address | status | vim_id | vnfd_id | - +--------------------------------------+------+---------------------------+--------+--------------------------------------+--------------------------------------+ - | 7168062e-9fa1-4203-8cb7-f5c99ff3ee1b | VNF2 | {"VDU1": "192.168.1.5"} | ACTIVE | 0e70ec23-6f32-420a-a039-2cdb2c20c329 | ea842879-5a7a-4f29-a8b0-528b2ad3b027 | - | 91e32c20-6d1f-47a4-9ba7-08f5e5effe07 | VNF1 | {"VDU1": "192.168.1.7"} | ACTIVE | 0e70ec23-6f32-420a-a039-2cdb2c20c329 | 27795330-62a7-406d-9443-2daad76e674b | - +--------------------------------------+------+---------------------------+--------+--------------------------------------+--------------------------------------+ - - openstack vnf graph create --vnffgd-name myvnffgd --vnf-mapping \ - VNFD1:'91e32c20-6d1f-47a4-9ba7-08f5e5effe07',VNFD2:'7168062e-9fa1-4203-8cb7-f5c99ff3ee1b' --symmetrical myvnffg - -Alternatively, if no vnf-mapping is provided then Tacker VNFFG will attempt -to search for VNF instances derived from the given VNFDs in the VNFFGD. If -multiple VNF instances exist for a given VNFD, the VNF instance chosen to be -used in the VNFFG is done at random. - -Parameters for VNFFGD template -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -Similar to TOSCA VNFD template, any value of VNFFGD template can be -parameterized. Once parameterized different values can be passed while -instantiating the forwarding graph using the same VNFFGD template. -The value of a parameterized attribute can be specified like *{get_input foo}* -in the TOSCA VNFFGD template. The corresponding param-file in the following -YAML format can be provided in the vnffg-create command, - -.. code-block:: console - - { - foo: bar - } - -VNFFG command with parameter file: - - -.. code-block:: console - - openstack vnf graph create --vnffgd-name vnffgd-param --vnf-mapping VNFD1:'91e32c20-6d1f-47a4-9ba7-08f5e5effe07',\ - VNFD2:'7168062e-9fa1-4203-8cb7-f5c99ff3ee1b' --param-file vnffg-param-file.yaml myvnffg - - -See `VNFFGD template samples with parameter support `_. - -Viewing a VNFFG -~~~~~~~~~~~~~~~ - -A VNFFG once created is instantiated as multiple sub-components. These -components include the VNFFG itself, which relies on a Network Forwarding -Path (NFP). The NFP is then composed of a Service Function Chain (SFC) and -a Classifier. The main command to view a VNFFG is 'openstack vnf graph show', -however there are several commands available in order to view the -sub-components for a rendered VNFFG: - -.. code-block:: console - - openstack vnf network forwarding path list - openstack vnf network forwarding path show - openstack vnf chain list - openstack vnf chain show - openstack vnf classifier list - openstack vnf classifier show - -Updating the VNFFG -~~~~~~~~~~~~~~~~~~ - -To update an already created VNFFG template the user needs to locate the VNFFG -which wants to update. To do so the following command is getting executed: - -Using the below command query the list of existing VNFFG templates. - -.. code-block:: console - - openstack vnf graph list - - +--------------------+---------+--------+-------------------------------------+ - | ID | Name | Status | VNFFGD ID | - +--------------------+------------------+-------------------------------------+ - | f4438511-e33d-43df-| | | | - | 95d9-0199253db72e | myvnffg | ACTIVE | bd7829bf-85de-4f3b-960a-8482028bfb34| - +--------------------+---------+--------+-------------+--------+--------------+ - -To verify result, user can get information of port chain in networking-sfc: - -.. code-block:: console - - $ openstack sfc port chain list --fit-width - - +-----------------------+-------------------+-----------------------+-----------------------+-----------------------+----------+ - | ID | Name | Port Pair Groups | Flow Classifiers | Chain Parameters | Chain ID | - +-----------------------+-------------------+-----------------------+-----------------------+-----------------------+----------+ - | 60d1a3ee-8455-415e- | VNFFG1-port-chain | [u'87d7d4c2-d2d1-4a99 | [u'02fa422c-9f40-4092 | {u'symmetric': False, | 51 | - | 8ff1-e0b6b9f9f277 | | -81fb-f3d5f51dd919', | -a8b0-c04355116e5e'] | u'correlation': | | - | | | u'81213b4c-0e5e-445d- | | u'nsh'} | | - | | | add6-dea2bf55078f'] | | | | - +-----------------------+-------------------+-----------------------+-----------------------+-----------------------+----------+ - -After the user located the VNFFG the subsequent action is to update it. -Based on the appropriate choice, update VNFFG template. -Currently two choices are supported for the update of an existing VNFFG. -The first choice is the use of the vnf-mapping parameter. -The user needs to use a VNF which is actually derived from the VNFD which -is going to be used in the vnf-mapping parameter. -If the user is not sure which VNF was used for the mapping during the time -of the VNFFG creation he can execute: - -Execute the below command to query the VNF that was used in mapping at the time -of VNFFG creation. - -.. code-block:: console - - openstack vnf graph show myvnffg - -After user determined which VNF is used and which VNF is going to be used -in the update procedure he can execute: - -To update the VNF mappings to VNFFG, execute the below command - -.. code-block:: console - - openstack vnf graph set --vnf-mapping VNFD1:vnf1,VNFD2:vnf2 myvnffg - - Updated vnffg: myvnffg - -The second choice is the use of the vnffgd-template parameter. -The aforementioned parameter provides the ability to use a vnffgd formated yaml -template which contains all the elements and their parameters that Tacker is -going to apply to its ecosystem. - -Below there is an example usage of updating an existing VNFFG: - -Assuming that the existing VNFFG in the system that we want to update is -derived from the following VNFFGD template. - -.. 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 (CP1) - properties: - id: 51 - symmetrical: false - policy: - type: ACL - criteria: - - name: block_udp - classifier: - destination_port_range: 80-1024 - ip_proto: 17 - path: - - forwarder: VNFD3 - capability: CP1 - - groups: - VNFFG1: - type: tosca.groups.nfv.VNFFG - description: UDP to Corporate Net - properties: - vendor: tacker - version: 1.0 - number_of_endpoints: 1 - dependent_virtual_link: [VL1] - connection_point: [CP1] - constituent_vnfs: [VNFD3] - members: [Forwarding_path1] - -By using the below VNFFGD template we can update the existing VNFFG. - -.. code-block:: yaml - - tosca_definitions_version: tosca_simple_profile_for_nfv_1_0_0 - - description: Sample VNFFG template - - topology_template: - - node_templates: - - Forwarding_path2: - type: tosca.nodes.nfv.FP.TackerV2 - description: creates path (CP1->CP2) - properties: - id: 52 - symmetrical: false - correlation: nsh - policy: - type: ACL - criteria: - - name: block_tcp - classifier: - network_src_port_id: 640dfd77-c92b-45a3-b8fc-22712de480e1 - destination_port_range: 22-28 - ip_proto: 6 - ip_dst_prefix: 192.168.1.2/24 - path: - - forwarder: VNFD1 - capability: CP1 - sfc_encap: True - - forwarder: VNFD2 - capability: CP2 - sfc_encap: False - - groups: - VNFFG1: - type: tosca.groups.nfv.VNFFG - description: SSH to Corporate Net - properties: - vendor: tacker - version: 1.0 - number_of_endpoints: 2 - dependent_virtual_link: [VL1,VL2] - connection_point: [CP1,CP2] - constituent_vnfs: [VNFD1,VNFD2] - members: [Forwarding_path2] - -The above template informs Tacker to update the current classifier,NFP and -path (chain) with the ones that are described in that template. After the -completion of the update procedure the new NFP will be named 'Forwarding_path2' -with an id of '52',the classifier in that NFP will be named 'block_tcp' -and will have the corresponding match criteria and the updated chain will -be consisted by two NVFs which are derived from VNFD1,VNFD2 VNFDs. - -To update the existing VNFFG through the vnffgd-template parameter, execute the -below command: - -.. code-block:: console - - openstack vnf graph set --vnffgd-template myvnffgd.yaml myvnffg - - Updated vnffg: myvnffg - -Of course the above update VNFFG's choices can be combined in a single command. - -.. code-block:: console - - openstack vnf graph set --vnf-mapping VNFD1:vnf1,VNFD2:vnf2 --vnffgd-template myvnffgd.yaml myvnffg - - Updated vnffg: myvnffg - -Known Issues and Limitations -~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -- Match criteria requires 'network_src_port_id' -- Only one Forwarding Path allowed per VNFFGD -- Matching on criteria with postfix 'name' does not work, for example - 'network_name' -- NSH attributes not yet supported -- n-sfc Bug: https://bugs.launchpad.net/networking-sfc/+bug/1746686 - -.. _VNF1: https://opendev.org/openstack/tacker/src/branch/master/samples/tosca-templates/vnffgd/tosca-vnffg-vnfd1.yaml -.. _VNF2: https://opendev.org/openstack/tacker/src/branch/master/samples/tosca-templates/vnffgd/tosca-vnffg-vnfd2.yaml -.. _SFC_PROXY: https://tools.ietf.org/html/rfc8300 -.. _SFC_ENCAPSULATION: https://docs.openstack.org/networking-sfc/latest/contributor/ietf_sfc_encapsulation.html diff --git a/doc/source/user/vnffg_usage_guide_advanced.rst b/doc/source/user/vnffg_usage_guide_advanced.rst deleted file mode 100644 index afb1c9664..000000000 --- a/doc/source/user/vnffg_usage_guide_advanced.rst +++ /dev/null @@ -1,248 +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. - -========================================= -VNF Forwarding Graph Advanced 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). - -This section cover some examples about advanced VNFFG usage guide in Tacker. -Users should have some basic knowledge about VNFFG [#f1]_, before following -this document. - -Two VNFFGs go through one VNF -============================= - -This scenario describes an example, where 2 VNFFGs go through one virtual -network functions (VNFs). The VNFFG1 creates the chain from VNF1 and VNF2, and -VNFFG2 creates the chain from VNF1. VNF1 belongs to both of VNFFGs. - -Bellow example is the template of VNFFG1 [#f2]_, in **properties** of -Forwarding_path1, the **path** shows that VNFFG1 will go through VNF1 and VNF2. - -.. 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] - -Similar to the above example, VNFFG2 template [#f3]_ only create a chain that -goes through VNF1. - -.. 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: 8080-8080 - ip_proto: 6 - ip_dst_prefix: 192.168.1.2/24 - path: - - forwarder: VNFD1 - capability: CP12 - - groups: - VNFFG1: - type: tosca.groups.nfv.VNFFG - description: HTTP to Corporate Net - properties: - vendor: tacker - version: 1.0 - number_of_endpoints: 1 - dependent_virtual_link: [VL12] - connection_point: [CP12] - constituent_vnfs: [VNFD1] - members: [Forwarding_path1] - -For testing VNF Forwarding graph feature, we create 2 servers, **http_client** -and **http_server**. The example uses **net0** to create VNFFG on that network. - -.. code-block:: console - - $ net_id=$(openstack network list | grep net0 | awk '{print $2}') - $ openstack server create --flavor m1.tiny --image cirros-0.5.2-x86_64-disk --nic net-id=$net_id http_client - $ openstack server create --flavor m1.tiny --image cirros-0.5.2-x86_64-disk --nic net-id=$net_id http_server - -To get information about neutron ports of **http_client** and **http_server** -that are used for classifying traffics, user can use openstack commands to -get these information. - -.. code-block:: console - - $ client_ip=$(openstack server list | grep http_client | grep -Eo '[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+') - $ network_source_port_id=$(openstack port list | grep $client_ip | awk '{print $2}') - $ ip_dst=$(openstack server list | grep http_server | grep -Eo '[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+') - -.. note:: - - Please update parameters in **classifier** such as **network_src_port_id**, - **destination_port_range**, **ip_proto**, **ip_dst_prefix** to meet your - environment, which is described in VNFFG usage guide [#f4]_. Classifiers - must be different to each others. - - We assume that **http_server** and **http_client** are already created. - VNF1 and VNF2 templates are shown in [#f5]_ and [#f6]_. - -Once the OpenStack VIM is ready, firstly we can create VNFs (VNF1 and VNF2) -from VNFD templates. For easily, we put all VNFD templates and VNFFGD templates -in [#f7]_. - -.. code-block:: console - - $ openstack vnf descriptor create --vnfd-file tosca-vnffg-vnfd1.yaml VNFD1 - $ openstack vnf create --vnfd-name VNFD1 --vim-name VIM0 VNF1 - $ openstack vnf descriptor create --vnfd-file tosca-vnffg-vnfd2.yaml VNFD2 - $ openstack vnf create --vnfd-name VNFD2 --vim-name VIM0 VNF2 - -To create VNFFG, we should get the **vnf id** for VNF1 and VNF2: - -.. code-block:: console - - $ openstack vnf list --fit-width - +-------------------------------+------+---------------------------+--------+-------------------------------+----------------------------------+ - | ID | Name | Mgmt Url | Status | VIM ID | VNFD ID | - +-------------------------------+------+---------------------------+--------+-------------------------------+----------------------------------+ - | 2ea1b577-89c1-478e-bedd- | VNF2 | {"VDU1": "192.168.120.5"} | ACTIVE | 45fecf6f-9080-4e8b-953c- | 69a4d2d4-9329-4807-9c59-09cb8d95 | - | 76f69951e840 | | | | d9556e6ad2cb | c612 | - | 45c6c5ee-517e- | VNF1 | {"VDU1": "192.168.120.9"} | ACTIVE | 45fecf6f-9080-4e8b-953c- | f4cb1509-c216-47a1-b76e- | - | 4fc3-ad41-6e86c38d1a63 | | | | d9556e6ad2cb | e419f8ae6534 | - +-------------------------------+------+---------------------------+--------+-------------------------------+----------------------------------+ - -Then we can create VNFFG1 that goes through VNF1, VNF2 and VNFFG2 that only -goes through VNF1. We need to record **vnf id** to provide them in create -VNFFG commands. - -.. code-block:: console - - $ openstack vnf graph descriptor create --vnffgd-file tosca-vnffgd-sample.yaml VNFFGD1 - $ openstack vnf graph descriptor create --vnffgd-file tosca-vnffgd-sample-VNF1.yaml VNFFGD2 - $ openstack vnf graph create --vnffgd-name VNFFGD1 --vnf-mapping VNFD1:45c6c5ee-517e-4fc3-ad41-6e86c38d1a63,VNFD2:2ea1b577-89c1-478e-bedd-76f69951e840 VNFFG1 - $ openstack vnf graph create --vnffgd-name VNFFGD2 --vnf-mapping VNFD1:45c6c5ee-517e-4fc3-ad41-6e86c38d1a63 VNFFG2 - -To check the VNFFG works fine, we can use list VNFFG and neutron port chain -list to see what happens. - -.. code-block:: console - - $ openstack vnf graph list - +--------------------------------------+--------+--------------------------------------+--------+ - | ID | Name | VNFFGD ID | Status | - +--------------------------------------+--------+--------------------------------------+--------+ - | 097dcd5d-b329-44da-9693-8e56ff3612e3 | VNFFG1 | 75f53d50-f79b-446b-b9bd-48e26c3a87d0 | ACTIVE | - | e33bc531-e124-432a-abf3-bec4f66ec15b | VNFFG2 | ead1a94f-2bf9-41fd-b543-8446cdbaac83 | ACTIVE | - +--------------------------------------+--------+--------------------------------------+--------+ - - $ openstack sfc port chain list --fit-width - +----------------------------+-------------------+----------------------------+----------------------------+----------------------------+----------+ - | ID | Name | Port Pair Groups | Flow Classifiers | Chain Parameters | Chain ID | - +----------------------------+-------------------+----------------------------+----------------------------+----------------------------+----------+ - | 03ca4afb-8fc9-4337-94a3-98 | VNFFG1-port-chain | [u'1f71e5b1-b8f2-4f1b- | [u'46fd7fac-29f9-49cd-8959 | {u'symmetric': False, | 1 | - | c90c5511a8 | | 9c85-6a6f31cf9906', | -42078d873487'] | u'correlation': u'mpls'} | | - | | | u'8be115b1-7422-417b- | | | | - | | | abc0-49b194d432cf'] | | | | - | 24cbfa45-4033-4f95-aaa0-dd | VNFFG2-port-chain | [u'1f71e5b1-b8f2-4f1b- | [u'6c94dd78-9cda-4891-ad71 | {u'symmetric': False, | 2 | - | 690ee1e9af | | 9c85-6a6f31cf9906'] | -81a46354356e'] | u'correlation': u'mpls'} | | - +----------------------------+-------------------+----------------------------+----------------------------+----------------------------+----------+ - -We can see that, both of port chain will go through port pair group with the id -**1f71e5b1-b8f2-4f1b-9c85-6a6f31cf9906**, that is created from neutron port of -VNF1. - -If user delete VNFFG1, the VNFFG2 is not affected because the port pair group -**1f71e5b1-b8f2-4f1b-9c85-6a6f31cf9906** is not deleted. - -.. code-block:: console - - $ openstack vnf graph delete VNFFG1 - All specified vnffg(s) deleted successfully - $ openstack vnf graph list - +--------------------------------------+--------+--------------------------------------+--------+ - | ID | Name | VNFFGD ID | Status | - +--------------------------------------+--------+--------------------------------------+--------+ - | e33bc531-e124-432a-abf3-bec4f66ec15b | VNFFG2 | ead1a94f-2bf9-41fd-b543-8446cdbaac83 | ACTIVE | - +--------------------------------------+--------+--------------------------------------+--------+ - $ openstack sfc port chain list --fit-width - +----------------------------+-------------------+----------------------------+----------------------------+----------------------------+----------+ - | ID | Name | Port Pair Groups | Flow Classifiers | Chain Parameters | Chain ID | - +----------------------------+-------------------+----------------------------+----------------------------+----------------------------+----------+ - | 24cbfa45-4033-4f95-aaa0-dd | VNFFG2-port-chain | [u'1f71e5b1-b8f2-4f1b- | [u'6c94dd78-9cda-4891-ad71 | {u'symmetric': False, | 2 | - | 690ee1e9af | | 9c85-6a6f31cf9906'] | -81a46354356e'] | u'correlation': u'mpls'} | | - +----------------------------+-------------------+----------------------------+----------------------------+----------------------------+----------+ - - -.. rubric:: Footnotes - -.. [#f1] https://docs.openstack.org/tacker/latest/user/vnffg_usage_guide.html -.. [#f2] https://opendev.org/openstack/tacker/src/branch/master/samples/tosca-templates/vnffgd/tosca-vnffgd-sample.yaml -.. [#f3] https://opendev.org/openstack/tacker/src/branch/master/samples/tosca-templates/vnffgd/tosca-vnffgd-sample-VNF1.yaml -.. [#f4] https://docs.openstack.org/tacker/latest/user/vnffg_usage_guide.html -.. [#f5] https://opendev.org/openstack/tacker/src/branch/master/samples/tosca-templates/vnffgd/tosca-vnffg-vnfd1.yaml -.. [#f6] https://opendev.org/openstack/tacker/src/branch/master/samples/tosca-templates/vnffgd/tosca-vnffg-vnfd2.yaml -.. [#f7] https://opendev.org/openstack/tacker/src/branch/master/samples/tosca-templates/vnffgd diff --git a/doc/source/user/vnfm_usage_guide.rst b/doc/source/user/vnfm_usage_guide.rst deleted file mode 100644 index e8fd1e187..000000000 --- a/doc/source/user/vnfm_usage_guide.rst +++ /dev/null @@ -1,152 +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. - -====================== -VNF Manager User 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). - -Tacker VNF Manager (VNFM) component manages the life-cycle of a Virtual Network -Function (VNF). VNFM takes care of deployment, monitoring, updating, scaling -and removal of VNFs on a Virtual Infrastructure Manager (VIM). - - -Onboarding VNF -============== - -TOSCA VNFD templates can be onboarded to Tacker VNFD Catalog using following -command: - -.. code-block:: console - - openstack vnf descriptor create --vnfd-file - -.. note:: - - Users can find various sample TOSCA templates at https://github.com/openstack/tacker/tree/master/samples/tosca-templates/vnfd - -Deploying VNF -============= - -There are two ways to create a VNF in Tacker. - -#. Using Tacker Catalog -#. Direct VNF Instantiation - -Using Tacker Catalog --------------------- - -In this method, a TOSCA VNFD template is first onboarded into Tacker VNFD -catalog. This VNFD is then used to create VNF. This is most common way of -creating VNFs in Tacker. - - i). Onboard a TOSCA VNFD template. - -.. code-block:: console - - openstack vnf descriptor create --vnfd-file -.. - - ii). Create a VNF. - -.. code-block:: console - - openstack vnf create --vnfd-name - - -Example -~~~~~~~ - -.. code-block:: console - - openstack vnf descriptor create --vnfd-file sample-vnfd-hello-world.yaml hello-world-vnfd - openstack vnf create --vnfd-name hello-world-vnfd hw-vnf - -Direct VNF Instantiation ------------------------- - -In this method, VNF is created directly from the TOSCA template without -onboarding the template into Tacker VNFD Catalog. - -.. code-block:: console - - openstack vnf create --vnfd-template - -This method is recommended when NFV Catalog is maintained outside Tacker and -Tacker is primarily used as a NFV workflow engine. - -Example -~~~~~~~ - -.. code-block:: console - - openstack vnf create --vnfd-template sample-vnfd-hello-world.yaml hw-vnf - -.. note :: - - vnfd-list command will show only the onboarded VNFDs. To list the VNFDs - created internally for direct VNF instantiation, use - '--template-source inline' flag. To list both onboarded and inline VNFDs, - use '--template-source all' flag. The default flag for vnfd-list command - is '--template-source onboarded'. - - .. code-block:: console - - openstack vnf descriptor list --template-source inline - openstack vnf descriptor list --template-source all - -Finding VNFM Status -=================== - -Status of various VNFM resources can be checked by following commands. - -.. code-block:: console - - openstack vim list - openstack vnf descriptor list - openstack vnf list - openstack vnf show - openstack vnf descriptor show - -.. - -Updating VNF -============ - -VNFs can be updated as shown below. ---config, --config-file and --param-file can not be specified together. - -.. code-block:: console - - openstack vnf set --config - openstack vnf set --config-file - openstack vnf set --param-file -.. - -Deleting VNF and VNFD -===================== - -VNFs and VNFDs can be deleted as shown below. - -.. code-block:: console - - openstack vnf delete - openstack vnf descriptor delete -.. diff --git a/releasenotes/notes/alarm-based-monitoring-7d0f2338409d6d9f.yaml b/releasenotes/notes/alarm-based-monitoring-7d0f2338409d6d9f.yaml index 275326993..496d02e80 100644 --- a/releasenotes/notes/alarm-based-monitoring-7d0f2338409d6d9f.yaml +++ b/releasenotes/notes/alarm-based-monitoring-7d0f2338409d6d9f.yaml @@ -3,5 +3,3 @@ features: - An alarm-based monitoring driver using Ceilometer is added. Alarm-based monitoring driver in Tacker is designed to collect alarms/events triggered by the Ceilometer. - For details please refer - https://docs.openstack.org/tacker/latest/user/alarm_monitoring_usage_guide.html \ No newline at end of file diff --git a/releasenotes/notes/assign-floating-ip-to-vdu-50fe2a2d792db6c0.yaml b/releasenotes/notes/assign-floating-ip-to-vdu-50fe2a2d792db6c0.yaml index f258d88f5..da7cea4c9 100644 --- a/releasenotes/notes/assign-floating-ip-to-vdu-50fe2a2d792db6c0.yaml +++ b/releasenotes/notes/assign-floating-ip-to-vdu-50fe2a2d792db6c0.yaml @@ -2,6 +2,4 @@ features: - | Support to assign floating IP to VDU using TOSCA template. - We have to use the node type tosca.nodes.network.FloatingIP - For details please refer - https://docs.openstack.org/tacker/latest/contributor/vnfd_template_description.html#floating-ip + We have to use the node type tosca.nodes.network.FloatingIP. diff --git a/releasenotes/notes/nsd-support-3982f780fc575232.yaml b/releasenotes/notes/nsd-support-3982f780fc575232.yaml index 171c218a6..8beb8b631 100644 --- a/releasenotes/notes/nsd-support-3982f780fc575232.yaml +++ b/releasenotes/notes/nsd-support-3982f780fc575232.yaml @@ -2,5 +2,3 @@ features: - Network Service Descriptor support will allow Tacker to provide an end-to-end TOSCA based network service. - For details please refer - https://docs.openstack.org/tacker/latest/user/nsd_usage_guide.html diff --git a/roles/setup-default-vim/tasks/main.yaml b/roles/setup-default-vim/tasks/main.yaml index e567d4224..5d72160c6 100644 --- a/roles/setup-default-vim/tasks/main.yaml +++ b/roles/setup-default-vim/tasks/main.yaml @@ -2,7 +2,7 @@ - name: Copy tools/test-setup-default-vim.sh copy: remote_src=True - src={{ devstack_base_dir }}/tacker/tools/test-setup-default-vim.sh + src={{ devstack_base_dir }}/tacker/tacker/tests/functional/tools/test-setup-default-vim.sh dest={{ zuul_work_dir }}/tools/test-setup-default-vim.sh mode=0755 @@ -121,7 +121,7 @@ - name: Copy tools/test-setup-k8s-vim.sh copy: remote_src=True - src={{ devstack_base_dir }}/tacker/tools/test-setup-k8s-vim.sh + src={{ devstack_base_dir }}/tacker/tacker/tests/functional/tools/test-setup-k8s-vim.sh dest={{ zuul_work_dir }}/tools/test-setup-k8s-vim.sh mode=0755 @@ -289,7 +289,7 @@ - name: Copy tools/test-setup-mgmt.sh copy: remote_src=True - src={{ devstack_base_dir }}/tacker/tools/test-setup-mgmt.sh + src={{ devstack_base_dir }}/tacker/tacker/tests/functional/tools/test-setup-mgmt.sh dest={{ zuul_work_dir }}/tools/test-setup-mgmt.sh mode=0755 diff --git a/roles/setup-fake-prometheus-server/tasks/main.yaml b/roles/setup-fake-prometheus-server/tasks/main.yaml index e3c77a77b..22b16e937 100644 --- a/roles/setup-fake-prometheus-server/tasks/main.yaml +++ b/roles/setup-fake-prometheus-server/tasks/main.yaml @@ -2,7 +2,7 @@ - name: Copy tools/test-setup-fake-prometheus-server.sh copy: remote_src=True - src={{ devstack_base_dir }}/tacker/tools/test-setup-fake-prometheus-server.sh + src={{ devstack_base_dir }}/tacker/tacker/tests/functional/tools/test-setup-fake-prometheus-server.sh dest={{ zuul_work_dir }}/tools/test-setup-fake-prometheus-server.sh mode=0755 diff --git a/tacker/tests/contrib/README b/tacker/tests/contrib/README deleted file mode 100644 index cb9d5dc1d..000000000 --- a/tacker/tests/contrib/README +++ /dev/null @@ -1,3 +0,0 @@ -The files in this directory are intended for use by the -infra jobs that run the various functional test suite -in the gate for the tacker repo. diff --git a/tacker/tests/contrib/post_test_hook.sh b/tacker/tests/contrib/post_test_hook.sh deleted file mode 100644 index 9d835fd89..000000000 --- a/tacker/tests/contrib/post_test_hook.sh +++ /dev/null @@ -1,84 +0,0 @@ -#!/bin/bash -x -# -# 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. - -# This script is executed inside post_test_hook function in devstack gate. - -set -xe - -TACKER_DIR="$BASE/new/tacker" -DEVSTACK_DIR="$BASE/new/devstack" -SCRIPTS_DIR="/usr/os-testr-env/bin/" - -venv=${1:-"dsvm-functional"} - -function generate_test_logs { - local path="$1" - # Compress all $path/*.txt files and move the directories holding those - # files to /opt/stack/logs. Files with .log suffix have their - # suffix changed to .txt (so browsers will know to open the compressed - # files and not download them). - if [ -d "$path" ] - then - sudo find $path -iname "*.log" -type f -exec mv {} {}.txt \; -exec gzip -9 {}.txt \; - sudo mv $path/* /opt/stack/logs/ - fi -} - -function generate_testr_results { - # Give job user rights to access tox logs - sudo -H -u $owner chmod o+rw . - sudo -H -u $owner chmod o+rw -R .stestr - if [ -f ".stestr/0" ] ; then - .tox/$venv/bin/subunit-1to2 < .stestr/0 > ./stestr.subunit - $SCRIPTS_DIR/subunit2html ./stestr.subunit testr_results.html - gzip -9 ./stestr.subunit - gzip -9 ./testr_results.html - sudo mv ./*.gz /opt/stack/logs/ - fi - - if [[ "$venv" == dsvm-functional* ]] - then - generate_test_logs $log_dir - fi -} - -. ${TACKER_DIR}/tacker/tests/contrib/post_test_hook_lib.sh - -if [[ "$venv" == dsvm-functional* ]] -then - owner=stack - sudo_env= - log_dir="/tmp/${venv}-logs" - . $DEVSTACK_DIR/openrc admin admin - fixup_quota - add_key - add_secgrp -fi - -# Set owner permissions according to job's requirements. -cd $TACKER_DIR -sudo chown -R $owner:stack $TACKER_DIR - -# Run tests -echo "Running tacker $venv test suite" -set +e - -sudo -H -u $owner $sudo_env tox -e $venv -testr_exit_code=$? -set -e - -# Collect and parse results -generate_testr_results -exit $testr_exit_code - diff --git a/tacker/tests/contrib/post_test_hook_lib.sh b/tacker/tests/contrib/post_test_hook_lib.sh deleted file mode 100644 index 9b510908b..000000000 --- a/tacker/tests/contrib/post_test_hook_lib.sh +++ /dev/null @@ -1,73 +0,0 @@ -#!/bin/bash -x -# -# 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. - -PRIVATE_KEY_FILE=${PRIVATE_KEY_FILE:-"keypair.priv"} - -function fixup_quota { - echo "Disable nova compute instance & core quota" - openstack quota set --class --instances -1 --cores -1 --ram -1 default - projectId=$(openstack project list | awk '/\ nfv\ / {print $2}') - echo "Disable neutron port quota on project 'nfv' $projectId" - openstack quota set --ports -1 $projectId -} - -function add_key_if_not_exist { - echo "Adding nova key if not exist" - openstack keypair show userKey >/dev/null - if [[ "$?" != "0" ]]; then - add_key - else - echo "Keypair userKey already exists" - fi -} - -function add_key { - echo "Adding nova key" - userId=$(openstack user list | awk '/\ nfv_user\ / {print $2}') - # TODO: openstack cli does not support to add key to a specific user - nova keypair-add userKey --user $userId > ${PRIVATE_KEY_FILE} - echo "Keypair userKey is added" -} - -# Adding nova security groups (#1591372). -function _create_secgrps { - openstack security group create --project nfv --description "tacker functest security group" test_secgrp - openstack security group rule create --project nfv --ingress --protocol icmp test_secgrp - openstack security group rule create --project nfv --ingress --protocol tcp --dst-port 22 test_secgrp -} - -function _check_secgrps { - openstack security group show test_secgrp - if [[ "$?" != "0" ]]; then - echo "Warning: security group is not created correctly" - fi -} - -function add_secgrp_if_not_exist { - echo "Adding nova security group" - openstack security group show test_secgrp - if [[ "$?" != "0" ]]; then - add_secgrp - else - echo "Nova security group already exists" - fi -} - -# Adding nova security groups (#1591372). -function add_secgrp { - echo "Adding nova security group" - _create_secgrps - _check_secgrps - echo "nova security group is added" -} diff --git a/tacker/tests/functional/sol_https_v2/test_vnfpm_https_basic.py b/tacker/tests/functional/sol_https_v2/test_vnfpm_https_basic.py index d9be8763a..50803bad3 100644 --- a/tacker/tests/functional/sol_https_v2/test_vnfpm_https_basic.py +++ b/tacker/tests/functional/sol_https_v2/test_vnfpm_https_basic.py @@ -54,7 +54,7 @@ class VnfPmWithHttpsRequestTest(test_vnflcm_basic_common.CommonVnfLcmTest): def _get_controller_tacker_ip(cls): cur_dir = os.path.dirname(__file__) script_path = os.path.join( - cur_dir, "../../../../tools/test-setup-fake-prometheus-server.sh") + cur_dir, "../tools/test-setup-fake-prometheus-server.sh") with open(script_path, 'r') as f_obj: content = f_obj.read() ip = content.split('TEST_REMOTE_URI')[1].split( diff --git a/tacker/tests/functional/sol_kubernetes_v2/base_v2.py b/tacker/tests/functional/sol_kubernetes_v2/base_v2.py index 92609d6a9..290e637e1 100644 --- a/tacker/tests/functional/sol_kubernetes_v2/base_v2.py +++ b/tacker/tests/functional/sol_kubernetes_v2/base_v2.py @@ -88,7 +88,7 @@ class BaseVnfLcmKubernetesV2Test(base_v2.BaseTackerTestV2): def get_controller_tacker_ip(cls): cur_dir = os.path.dirname(__file__) script_path = os.path.join( - cur_dir, "../../../../tools/test-setup-fake-prometheus-server.sh") + cur_dir, "../tools/test-setup-fake-prometheus-server.sh") with open(script_path, 'r') as f_obj: content = f_obj.read() ip = content.split('TEST_REMOTE_URI')[1].split( diff --git a/tools/test-setup-default-vim.sh b/tacker/tests/functional/tools/test-setup-default-vim.sh similarity index 100% rename from tools/test-setup-default-vim.sh rename to tacker/tests/functional/tools/test-setup-default-vim.sh diff --git a/tools/test-setup-fake-prometheus-server.sh b/tacker/tests/functional/tools/test-setup-fake-prometheus-server.sh similarity index 100% rename from tools/test-setup-fake-prometheus-server.sh rename to tacker/tests/functional/tools/test-setup-fake-prometheus-server.sh diff --git a/tools/test-setup-k8s-vim.sh b/tacker/tests/functional/tools/test-setup-k8s-vim.sh similarity index 100% rename from tools/test-setup-k8s-vim.sh rename to tacker/tests/functional/tools/test-setup-k8s-vim.sh diff --git a/tools/test-setup-mgmt.sh b/tacker/tests/functional/tools/test-setup-mgmt.sh similarity index 100% rename from tools/test-setup-mgmt.sh rename to tacker/tests/functional/tools/test-setup-mgmt.sh diff --git a/tools/check_i18n.py b/tools/check_i18n.py deleted file mode 100644 index 9967613bd..000000000 --- a/tools/check_i18n.py +++ /dev/null @@ -1,152 +0,0 @@ -# Copyright 2012 OpenStack Foundation -# -# 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. - -import compiler -import os.path -import sys - -from oslo_utils import importutils - - -def is_localized(node): - """Check message wrapped by _()""" - if isinstance(node.parent, compiler.ast.CallFunc): - if isinstance(node.parent.node, compiler.ast.Name): - if node.parent.node.name == '_': - return True - return False - - -class ASTWalker(compiler.visitor.ASTVisitor): - - def default(self, node, *args): - for child in node.getChildNodes(): - child.parent = node - compiler.visitor.ASTVisitor.default(self, node, *args) - - -class Visitor(object): - - def __init__(self, filename, i18n_msg_predicates, - msg_format_checkers, debug): - self.filename = filename - self.debug = debug - self.error = 0 - self.i18n_msg_predicates = i18n_msg_predicates - self.msg_format_checkers = msg_format_checkers - with open(filename) as f: - self.lines = f.readlines() - - def visitConst(self, node): - if not isinstance(node.value, str): - return - - if is_localized(node): - for (checker, msg) in self.msg_format_checkers: - if checker(node): - print('%s:%d %s: %s Error: %s' % - (self.filename, node.lineno, - self.lines[node.lineno - 1][:-1], - checker.__name__, msg), - file=sys.stderr) - self.error = 1 - return - if debug: - print('%s:%d %s: %s' % - (self.filename, node.lineno, - self.lines[node.lineno - 1][:-1], - "Pass")) - else: - for (predicate, action, msg) in self.i18n_msg_predicates: - if predicate(node): - if action == 'skip': - if debug: - print('%s:%d %s: %s' % - (self.filename, node.lineno, - self.lines[node.lineno - 1][:-1], - "Pass")) - return - elif action == 'error': - print('%s:%d %s: %s Error: %s' % - (self.filename, node.lineno, - self.lines[node.lineno - 1][:-1], - predicate.__name__, msg), - file=sys.stderr) - self.error = 1 - return - elif action == 'warn': - print('%s:%d %s: %s' % - (self.filename, node.lineno, - self.lines[node.lineno - 1][:-1], - "Warn: %s" % msg)) - return - print('Predicate with wrong action!', file=sys.stderr) - - -def is_file_in_black_list(black_list, f): - for f in black_list: - if os.path.abspath(input_file).startswith( - os.path.abspath(f)): - return True - return False - - -def check_i18n(input_file, i18n_msg_predicates, msg_format_checkers, debug): - input_mod = compiler.parseFile(input_file) - v = compiler.visitor.walk(input_mod, - Visitor(input_file, - i18n_msg_predicates, - msg_format_checkers, - debug), - ASTWalker()) - return v.error - - -if __name__ == '__main__': - input_path = sys.argv[1] - try: - cfg_mod = importutils.import_module(tools.check_i18n) - except Exception: - print("Load cfg module failed", file=sys.stderr) - sys.exit(1) - - i18n_msg_predicates = cfg_mod.i18n_msg_predicates - msg_format_checkers = cfg_mod.msg_format_checkers - black_list = cfg_mod.file_black_list - - debug = False - if len(sys.argv) > 2: - if sys.argv[2] == '-d': - debug = True - - if os.path.isfile(input_path): - sys.exit(check_i18n(input_path, - i18n_msg_predicates, - msg_format_checkers, - debug)) - - error = 0 - for dirpath, dirs, files in os.walk(input_path): - for f in files: - if not f.endswith('.py'): - continue - input_file = os.path.join(dirpath, f) - if is_file_in_black_list(black_list, input_file): - continue - if check_i18n(input_file, - i18n_msg_predicates, - msg_format_checkers, - debug): - error = 1 - sys.exit(error) diff --git a/tools/check_i18n_test_case.txt b/tools/check_i18n_test_case.txt deleted file mode 100644 index 3d1391d94..000000000 --- a/tools/check_i18n_test_case.txt +++ /dev/null @@ -1,67 +0,0 @@ -# test-case for check_i18n.py -# python check_i18n.py check_i18n.txt -d - -# message format checking -# capital checking -msg = _("hello world, error") -msg = _("hello world_var, error") -msg = _('file_list xyz, pass') -msg = _("Hello world, pass") - -# format specifier checking -msg = _("Hello %s world %d, error") -msg = _("Hello %s world, pass") -msg = _("Hello %(var1)s world %(var2)s, pass") - -# message has been localized -# is_localized -msg = _("Hello world, pass") -msg = _("Hello world, pass") % var -LOG.debug(_('Hello world, pass')) -LOG.info(_('Hello world, pass')) -raise x.y.Exception(_('Hello world, pass')) -raise Exception(_('Hello world, pass')) - -# message need be localized -# is_log_callfunc -LOG.debug('hello world, error') -LOG.debug('hello world, error' % xyz) -sys.append('hello world, warn') - -# is_log_i18n_msg_with_mod -LOG.debug(_('Hello world, error') % xyz) - -# default warn -msg = 'hello world, warn' -msg = 'hello world, warn' % var - -# message needn't be localized -# skip only one word -msg = '' -msg = "hello,pass" - -# skip dict -msg = {'hello world, pass': 1} - -# skip list -msg = ["hello world, pass"] - -# skip subscript -msg['hello world, pass'] - -# skip xml marker -msg = ", pass" - -# skip sql statement -msg = "SELECT * FROM xyz WHERE hello=1, pass" -msg = "select * from xyz, pass" - -# skip add statement -msg = 'hello world' + e + 'world hello, pass' - -# skip doc string -""" -Hello world, pass -""" -class Msg: - pass diff --git a/tools/clean.sh b/tools/clean.sh deleted file mode 100755 index fe9b4c134..000000000 --- a/tools/clean.sh +++ /dev/null @@ -1,5 +0,0 @@ -#!/bin/bash -rm -rf ./*.deb ./*.tar.gz ./*.dsc ./*.changes -rm -rf */*.deb -rm -rf ./plugins/**/build/ ./plugins/**/dist -rm -rf ./plugins/**/lib/tacker_*_plugin.egg-info ./plugins/tacker-* diff --git a/tools/gen_vim_config.sh b/tools/gen_vim_config.sh index a2c11b9d2..580fea875 100755 --- a/tools/gen_vim_config.sh +++ b/tools/gen_vim_config.sh @@ -399,6 +399,7 @@ VIMC_PROJ=${VIMC_PROJ:-${VIMC_DEFAULT_PROJ}} VIMC_OS_CERT_VERIFY=${VIMC_OS_CERT_VERIFY:-true} VIMC_K8S_USE_CERT=${VIMC_K8S_USE_CERT:-false} +VIMC_K8S_USE_HELM=${VIMC_K8S_USE_HELM:-false} if [[ ${VIMC_TYPE} == "openstack" || ${VIMC_TYPE} == "os" ]]; then os_main diff --git a/tools/i18n_cfg.py b/tools/i18n_cfg.py deleted file mode 100644 index a3e45ce5c..000000000 --- a/tools/i18n_cfg.py +++ /dev/null @@ -1,109 +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. - -import compiler -import re - - -def is_log_callfunc(n): - """LOG.xxx('hello %s' % xyz) and LOG('hello')""" - if isinstance(n.parent, compiler.ast.Mod): - n = n.parent - if isinstance(n.parent, compiler.ast.CallFunc): - if isinstance(n.parent.node, compiler.ast.Getattr): - if isinstance(n.parent.node.getChildNodes()[0], - compiler.ast.Name): - if n.parent.node.getChildNodes()[0].name == 'LOG': - return True - return False - - -def is_log_i18n_msg_with_mod(n): - """LOG.xxx("Hello %s" % xyz) should be LOG.xxx("Hello %s", xyz)""" - if not isinstance(n.parent.parent, compiler.ast.Mod): - return False - n = n.parent.parent - if isinstance(n.parent, compiler.ast.CallFunc): - if isinstance(n.parent.node, compiler.ast.Getattr): - if isinstance(n.parent.node.getChildNodes()[0], - compiler.ast.Name): - if n.parent.node.getChildNodes()[0].name == 'LOG': - return True - return False - - -def is_wrong_i18n_format(n): - """Check _('hello %s' % xyz)""" - if isinstance(n.parent, compiler.ast.Mod): - n = n.parent - if isinstance(n.parent, compiler.ast.CallFunc): - if isinstance(n.parent.node, compiler.ast.Name): - if n.parent.node.name == '_': - return True - return False - - -""" -Used for check message need be localized or not. -(predicate_func, action, message) -""" -i18n_msg_predicates = [ - # Skip ['hello world', 1] - (lambda n: isinstance(n.parent, compiler.ast.List), 'skip', ''), - # Skip {'hellow world', 1} - (lambda n: isinstance(n.parent, compiler.ast.Dict), 'skip', ''), - # Skip msg['hello world'] - (lambda n: isinstance(n.parent, compiler.ast.Subscript), 'skip', ''), - # Skip doc string - (lambda n: isinstance(n.parent, compiler.ast.Discard), 'skip', ''), - # Skip msg = "hello", in normal, message should more than one word - (lambda n: len(n.value.strip().split(' ')) <= 1, 'skip', ''), - # Skip msg = 'hello world' + vars + 'world hello' - (lambda n: isinstance(n.parent, compiler.ast.Add), 'skip', ''), - # Skip xml markers msg = "" - (lambda n: len(re.compile("").findall(n.value)) > 0, 'skip', ''), - # Skip sql statement - (lambda n: len( - re.compile("^SELECT.*FROM", flags=re.I).findall(n.value)) > 0, - 'skip', ''), - # LOG.xxx() - (is_log_callfunc, 'error', 'Message must be localized'), - # _('hello %s' % xyz) should be _('hello %s') % xyz - (is_wrong_i18n_format, 'error', - ("Message format was wrong, _('hello %s' % xyz) " - "should be _('hello %s') % xyz")), - # default - (lambda n: True, 'warn', 'Message might need localized') -] - - -""" -Used for checking message format. (checker_func, message) -""" -msg_format_checkers = [ - # If message contain more than on format specifier, it should use - # mapping key - (lambda n: len(re.compile("%[bcdeEfFgGnosxX]").findall(n.value)) > 1, - "The message shouldn't contain more than one format specifier"), - # Check capital - (lambda n: n.value.split(' ')[0].count('_') == 0 and - n.value[0].isalpha() and - n.value[0].islower(), - "First letter must be capital"), - (is_log_i18n_msg_with_mod, - 'LOG.xxx("Hello %s" % xyz) should be LOG.xxx("Hello %s", xyz)') -] - - -file_black_list = ["./tacker/tests/unit", - "./tacker/openstack", - "./tacker/plugins/bigswitch/tests"] diff --git a/tools/install_venv.py b/tools/install_venv.py deleted file mode 100644 index 7127b2a01..000000000 --- a/tools/install_venv.py +++ /dev/null @@ -1,72 +0,0 @@ -#!/usr/bin/env python3 - -# Copyright 2010 United States Government as represented by the -# Administrator of the National Aeronautics and Space Administration. -# All Rights Reserved. -# -# Copyright 2010 OpenStack Foundation. -# Copyright 2013 IBM Corp. -# -# 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. - -""" -Installation script for Tacker's development virtualenv -""" - -import os -import sys - -import install_venv_common as install_venv - - -def print_help(): - help = """ - Tacker development environment setup is complete. - - Tacker development uses virtualenv to track and manage Python dependencies - while in development and testing. - - To activate the Tacker virtualenv for the extent of your current shell - session you can run: - - $ . .venv/bin/activate - - Or, if you prefer, you can run commands in the virtualenv on a case by case - basis by running: - - $ tools/with_venv.sh - - Also, make test will automatically use the virtualenv. - """ - print(help) - - -def main(argv): - root = os.path.dirname(os.path.dirname(os.path.realpath(__file__))) - venv = os.path.join(root, '.venv') - pip_requires = os.path.join(root, 'requirements.txt') - test_requires = os.path.join(root, 'test-requirements.txt') - py_version = "python%s.%s" % (sys.version_info[0], sys.version_info[1]) - project = 'Tacker' - install = install_venv.InstallVenv(root, venv, pip_requires, test_requires, - py_version, project) - options = install.parse_args(argv) - install.check_python_version() - install.check_dependencies() - install.create_virtualenv(no_site_packages=options.no_site_packages) - install.install_dependencies() - print_help() - - -if __name__ == '__main__': - main(sys.argv) diff --git a/tools/install_venv_common.py b/tools/install_venv_common.py deleted file mode 100644 index cf780bc38..000000000 --- a/tools/install_venv_common.py +++ /dev/null @@ -1,169 +0,0 @@ -# Copyright 2013 OpenStack Foundation -# Copyright 2013 IBM Corp. -# -# 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. - -"""Provides methods needed by installation script for OpenStack development -virtual environments. - -Since this script is used to bootstrap a virtualenv from the system's Python -environment, it should be kept strictly compatible with Python 3.6. - -""" - -import optparse -import os -import subprocess -import sys - - -class InstallVenv(object): - - def __init__(self, root, venv, requirements, - test_requirements, py_version, - project): - self.root = root - self.venv = venv - self.requirements = requirements - self.test_requirements = test_requirements - self.py_version = py_version - self.project = project - - def die(self, message, *args): - print(message % args, file=sys.stderr) - sys.exit(1) - - def check_python_version(self): - if sys.version_info < (3, 6): - self.die("Need Python Version >= 3.6") - - def run_command_with_code(self, cmd, redirect_output=True, - check_exit_code=True): - """Runs a command in an out-of-process shell. - - Returns the output of that command. Working directory is self.root. - """ - if redirect_output: - stdout = subprocess.PIPE - else: - stdout = None - - proc = subprocess.Popen(cmd, cwd=self.root, stdout=stdout) - output = proc.communicate()[0] - if check_exit_code and proc.returncode != 0: - self.die('Command "%s" failed.\n%s', ' '.join(cmd), output) - return (output, proc.returncode) - - def run_command(self, cmd, redirect_output=True, check_exit_code=True): - return self.run_command_with_code(cmd, redirect_output, - check_exit_code)[0] - - def get_distro(self): - if (os.path.exists('/etc/fedora-release') or - os.path.exists('/etc/redhat-release')): - return Fedora( - self.root, self.venv, self.requirements, - self.test_requirements, self.py_version, self.project) - else: - return Distro( - self.root, self.venv, self.requirements, - self.test_requirements, self.py_version, self.project) - - def check_dependencies(self): - self.get_distro().install_virtualenv() - - def create_virtualenv(self, no_site_packages=True): - """Creates the virtual environment and installs PIP. - - Creates the virtual environment and installs PIP only into the - virtual environment. - """ - if not os.path.isdir(self.venv): - print('Creating venv...', end=' ') - if no_site_packages: - self.run_command(['virtualenv', '-q', '--no-site-packages', - self.venv]) - else: - self.run_command(['virtualenv', '-q', self.venv]) - print('done.') - else: - print("venv already exists...") - pass - - def pip_install(self, *args): - self.run_command(['tools/with_venv.sh', - 'pip', 'install', '--upgrade'] + list(args), - redirect_output=False) - - def install_dependencies(self): - print('Installing dependencies with pip (this can take a while)...') - - # First things first, make sure our venv has the latest pip and - # setuptools. - self.pip_install('pip>=1.3') - self.pip_install('setuptools') - - self.pip_install('-r', self.requirements) - self.pip_install('-r', self.test_requirements) - - def parse_args(self, argv): - """Parses command-line arguments.""" - parser = optparse.OptionParser() - parser.add_option('-n', '--no-site-packages', - action='store_true', - help="Do not inherit packages from global Python " - "install") - return parser.parse_args(argv[1:])[0] - - -class Distro(InstallVenv): - - def check_cmd(self, cmd): - return bool(self.run_command(['which', cmd], - check_exit_code=False).strip()) - - def install_virtualenv(self): - if self.check_cmd('virtualenv'): - return - - if self.check_cmd('easy_install'): - print('Installing virtualenv via easy_install...', end=' ') - if self.run_command(['easy_install', 'virtualenv']): - print('Succeeded') - return - else: - print('Failed') - - self.die('ERROR: virtualenv not found.\n\n%s development' - ' requires virtualenv, please install it using your' - ' favorite package management tool' % self.project) - - -class Fedora(Distro): - """This covers all Fedora-based distributions. - - Includes: Fedora, RHEL, CentOS, Scientific Linux - """ - - def check_pkg(self, pkg): - return self.run_command_with_code(['rpm', '-q', pkg], - check_exit_code=False)[1] == 0 - - def install_virtualenv(self): - if self.check_cmd('virtualenv'): - return - - if not self.check_pkg('python-virtualenv'): - self.die("Please install 'python-virtualenv'.") - - super(Fedora, self).install_virtualenv() diff --git a/tools/prepare_functional_test.sh b/tools/prepare_functional_test.sh deleted file mode 100755 index c84b35f7f..000000000 --- a/tools/prepare_functional_test.sh +++ /dev/null @@ -1,20 +0,0 @@ -# This script is used to prepare functional test env after devstack -# installation of tacker - -DEVSTACK_DIR=${DEVSTACK_DIR:-~/devstack} -TACKER_DIR=$(dirname "$0")/.. -PRIVATE_KEY_FILE=${PRIVATE_KEY_FILE:-/dev/null} -NFV_USER=${NFV_USER:-"nfv_user"} - -# Test devstack dir setting -if [ ! -f ${DEVSTACK_DIR}/openrc ]; then - echo "Please set right DEVSTACK_DIR" - exit 1 -fi - -. $DEVSTACK_DIR/openrc admin admin -. ${TACKER_DIR}/tacker/tests/contrib/post_test_hook_lib.sh - -fixup_quota -add_key_if_not_exist -add_secgrp_if_not_exist diff --git a/tools/test-setup.sh b/tools/test-setup.sh deleted file mode 100755 index 68e56a0a7..000000000 --- a/tools/test-setup.sh +++ /dev/null @@ -1,111 +0,0 @@ -#!/bin/bash -xe - -# This script will be run by OpenStack CI before unit tests are run, -# it sets up the test system as needed. -# Developers should setup their test systems in a similar way. - -# This setup needs to be run as a user that can run sudo. - -function is_fedora { - if [[ -x $(command -v dnf 2>/dev/null) ]]; then - sudo dnf install -qy redhat-lsb-core - else - return - fi - - - - if [[ -x $(command -v lsb_release 2>/dev/null) ]]; then - os_VENDOR=$(lsb_release -i -s) - - if [ "$os_VENDOR" = "Fedora" ] || [ "$os_VENDOR" = "Red Hat" ] || \ - [ "$os_VENDOR" = "RedHatEnterpriseServer" ] || \ - [ "$os_VENDOR" = "RedHatEnterprise" ] || \ - [ "$os_VENDOR" = "CentOS" ] || [ "$os_VENDOR" = "OracleServer" ] || \ - [ "$os_VENDOR" = "Virtuozzo" ] ; then - return 0 - else - return - fi - fi -} - -# The root password for the MySQL database; pass it in via -# MYSQL_ROOT_PW. -DB_ROOT_PW=${MYSQL_ROOT_PW:-insecure_slave} - -# This user and its password are used by the tests, if you change it, -# your tests might fail. -DB_USER=openstack_citest -DB_PW=openstack_citest - -if is_fedora ; then - # services are not started by default - - # Enable and start MariaDB - sudo systemctl enable --now mariadb - - # Intialiaze, Enable and start PostgreSQL - pg_hba=/var/lib/pgsql/data/pg_hba.conf - pg_conf=/var/lib/pgsql/data/postgresql.conf - if ! sudo [ -e $pg_hba ]; then - sudo postgresql-setup initdb - fi - sudo systemctl enable --now postgresql - - if sudo [ -e $pg_conf ]; then - # Listen on all addresses - sudo sed -i "/listen_addresses/s/.*/listen_addresses = '*'/" $pg_conf - fi - - if sudo [ -e $pg_hba ];then - # Do password auth from all IPv4 clients - sudo sed -i "/^host/s/all\s\+127.0.0.1\/32\s\+ident/$DB_USER\t0.0.0.0\/0\tpassword/" $pg_hba - # Do password auth for all IPv6 clients - sudo sed -i "/^host/s/all\s\+::1\/128\s\+ident/$DB_USER\t::0\/0\tpassword/" $pg_hba - fi - - sudo systemctl stop postgresql - sudo systemctl start postgresql -fi - -sudo -H mysqladmin -u root password $DB_ROOT_PW - -# It's best practice to remove anonymous users from the database. If -# a anonymous user exists, then it matches first for connections and -# other connections from that host will not work. -sudo -H mysql -u root -p$DB_ROOT_PW -h localhost -e " - DELETE FROM mysql.user WHERE User=''; - FLUSH PRIVILEGES; - CREATE USER '$DB_USER'@'%' IDENTIFIED BY '$DB_PW'; - GRANT ALL PRIVILEGES ON *.* TO '$DB_USER'@'%' WITH GRANT OPTION;" - -# Now create our database. -mysql -u $DB_USER -p$DB_PW -h 127.0.0.1 -e " - SET default_storage_engine=MYISAM; - DROP DATABASE IF EXISTS openstack_citest; - CREATE DATABASE openstack_citest CHARACTER SET utf8;" - -# Same for PostgreSQL -# The root password for the PostgreSQL database; pass it in via -# POSTGRES_ROOT_PW. -DB_ROOT_PW=${POSTGRES_ROOT_PW:-insecure_slave} - -# Setup user -root_roles=$(sudo -u root sudo -u postgres -i psql -t -c " - SELECT 'HERE' from pg_roles where rolname='$DB_USER'") -if [[ ${root_roles} == *HERE ]];then - sudo -u root sudo -u postgres -i psql -c "ALTER ROLE $DB_USER WITH SUPERUSER LOGIN PASSWORD '$DB_PW'" -else - sudo -u root sudo -u postgres psql -c "CREATE ROLE $DB_USER WITH SUPERUSER LOGIN PASSWORD '$DB_PW'" -fi - -# Store password for tests -cat << EOF > $HOME/.pgpass -*:*:*:$DB_USER:$DB_PW -EOF -chmod 0600 $HOME/.pgpass - -# Now create our database -psql -h 127.0.0.1 -U $DB_USER -d template1 -c "DROP DATABASE IF EXISTS openstack_citest" -createdb -h 127.0.0.1 -U $DB_USER -l C -T template0 -E utf8 openstack_citest diff --git a/tools/vnfc/build_image.sh b/tools/vnfc/build_image.sh deleted file mode 100755 index d2f871935..000000000 --- a/tools/vnfc/build_image.sh +++ /dev/null @@ -1,26 +0,0 @@ -#!/bin/bash - -VNFC_IMAGE=/tmp/tacker_vnfc_images -rm -rf $VNFC_IMAGE -mkdir $VNFC_IMAGE - -pip install diskimage-builder -pip install dib-utils -CURRENT_DIR=`pwd` -cd $VNFC_IMAGE -git clone https://opendev.org/openstack/tripleo-image-elements.git -git clone https://opendev.org/openstack/heat-templates.git - -export ELEMENTS_PATH=tripleo-image-elements/elements:heat-templates/hot/software-config/elements -disk-image-create vm \ - fedora selinux-permissive \ - os-collect-config \ - os-refresh-config \ - os-apply-config \ - heat-config \ - heat-config-ansible \ - heat-config-cfn-init \ - heat-config-puppet \ - heat-config-salt \ - heat-config-script \ - -o fedora-software-config.qcow2 diff --git a/tools/with_venv.sh b/tools/with_venv.sh deleted file mode 100755 index 72f68f7b2..000000000 --- a/tools/with_venv.sh +++ /dev/null @@ -1,20 +0,0 @@ -#!/bin/bash - -# Copyright 2011 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. - -TOOLS=`dirname $0` -VENV=$TOOLS/../.venv -. $VENV/bin/activate && "$@" diff --git a/tox.ini b/tox.ini index c268709c4..f8479585c 100644 --- a/tox.ini +++ b/tox.ini @@ -189,9 +189,6 @@ commands = tacker-db-manage check_migration allowlist_externals = bash -[testenv:i18n] -commands = python ./tools/check_i18n.py ./tacker - [testenv:docs] allowlist_externals = sphinx-build