├── .gitignore ├── .gitreview ├── .zuul.yaml ├── LICENSE ├── README.rst ├── doc ├── requirements.txt └── source │ ├── conf.py │ ├── index.rst │ └── specs ├── setup.cfg ├── setup.py ├── specs ├── 2023.1 │ ├── add-sample-coordination.rst │ ├── add-sample-coordination │ │ ├── 01.diag │ │ └── 01.png │ ├── enhance-tacker-policy.rst │ ├── enhance-tacker-policy │ │ ├── 01.diag │ │ ├── 01.png │ │ ├── 02.diag │ │ └── 02.png │ ├── enhance_placement_process.rst │ ├── enhance_placement_process │ │ ├── 01.diag │ │ └── 01.png │ ├── improving-mgmt-driver-log.rst │ ├── index.rst │ ├── srbac-implement-project-personas.rst │ ├── support-multi-conductors-onboarding.rst │ ├── support-multi-conductors-onboarding │ │ ├── 01.diag │ │ ├── 01.png │ │ ├── 02.diag │ │ ├── 02.png │ │ ├── 03.diag │ │ ├── 03.png │ │ ├── 04.diag │ │ ├── 04.png │ │ ├── 05.diag │ │ └── 05.png │ ├── support-tacker-db-manage-postgresql.rst │ ├── support-tacker-db-manage-postgresql │ │ ├── 01.diag │ │ └── 01.png │ ├── support-threshold-pm-interface.rst │ ├── support-threshold-pm-interface │ │ ├── 01.diag │ │ └── 01.png │ ├── vnfm-autoheal-and-autoscale.rst │ └── vnfm-autoheal-and-autoscale │ │ ├── 01.diag │ │ ├── 01.png │ │ ├── 02.diag │ │ └── 02.png ├── 2023.2 │ ├── index.rst │ ├── support-external-keymanager.rst │ ├── support-external-keymanager │ │ ├── 01.diag │ │ ├── 01.png │ │ ├── 02.diag │ │ └── 02.png │ ├── support-k8s-cr │ │ ├── img │ │ │ ├── capi-op.pu │ │ │ ├── capi-op.svg │ │ │ ├── chgpkg-for-wc.pu │ │ │ ├── chgpkg-for-wc.svg │ │ │ ├── insta-for-capi.pu │ │ │ ├── insta-for-capi.svg │ │ │ ├── insta-for-wc.pu │ │ │ ├── insta-for-wc.svg │ │ │ ├── scale-for-wc.pu │ │ │ └── scale-for-wc.svg │ │ └── index.rst │ └── tf-infra-driver │ │ ├── img │ │ ├── insta-for-tf.pu │ │ ├── insta-for-tf.svg │ │ ├── op1-local-file.pu │ │ ├── op1-local-file.svg │ │ ├── tf-op.pu │ │ └── tf-op.svg │ │ └── index.rst ├── 2024.1 │ ├── index.rst │ ├── intro-cilium │ │ ├── img │ │ │ ├── cilium-multinodes.png │ │ │ ├── cilium-usage1.png │ │ │ ├── usecase1.svg │ │ │ ├── usecase2.svg │ │ │ └── usecase3.svg │ │ └── index.rst │ ├── otel-monitoring │ │ ├── img │ │ │ ├── mistral-plugin.svg │ │ │ ├── prometheus-plugin.svg │ │ │ └── tacker-otel-driver.svg │ │ └── index.rst │ └── v2-api-horizon │ │ ├── img │ │ ├── checkbox.png │ │ ├── current-th-1.png │ │ ├── current-th-2.png │ │ ├── data-table.png │ │ ├── detail-tab.png │ │ ├── file.png │ │ ├── keyvalue.png │ │ ├── modal.png │ │ ├── options.png │ │ └── required.png │ │ └── index.rst ├── 2024.2 │ ├── index.rst │ ├── perf-improve-list-apis │ │ └── index.rst │ └── placeholder.rst ├── 2025.1 │ ├── enhancement-ansible-driver.rst │ ├── index.rst │ ├── placeholder.rst │ └── reduce-fts │ │ └── index.rst ├── liberty │ ├── index.rst │ ├── monitor-framework.rst │ └── tacker-api-mano.rst ├── mitaka │ ├── automatic-resource-creation.rst │ ├── enhanced-placement.rst │ ├── index.rst │ ├── multi-site-feature.rst │ └── tosca-parser-integration.rst ├── newton │ ├── alarm-based-monitoring-driver.rst │ ├── event_logging.rst │ ├── index.rst │ ├── manual-and-auto-scaling.rst │ ├── tacker-networking-sfc.rst │ └── tacker-vnffg.rst ├── ocata │ ├── index.rst │ ├── nsd-support.rst │ ├── tacker-API-framework.rst │ ├── tacker-vnfc.rst │ └── vnf-inline-template.rst ├── pike │ ├── encryption-with-barbican.rst │ ├── index.rst │ ├── mistral_vim_monitor.rst │ ├── mistral_vim_monitor │ │ ├── 01.diag │ │ ├── 01.png │ │ ├── 02.diag │ │ ├── 02.png │ │ ├── 03.diag │ │ └── 03.png │ ├── mistral_vnf_monitor_policies.rst │ ├── mistral_vnf_monitor_policies │ │ ├── 01.diag │ │ ├── 01.png │ │ ├── 02.diag │ │ ├── 02.png │ │ ├── 03.diag │ │ ├── 03.png │ │ ├── 04.diag │ │ ├── 04.png │ │ ├── 05.diag │ │ └── 05.png │ ├── persistent-block-storage.rst │ ├── python-openstackclient.rst │ ├── vnf-cluster-management-by-senlin.rst │ ├── vnffg-autohealing.rst │ └── vnffg-scaling.rst ├── queens │ ├── Kubernetes-as-VIM.rst │ ├── index.rst │ ├── kubernetes-type-for-containerized-VNF.rst │ ├── update-vnffg.rst │ └── zabbix-plugin.rst ├── rocky │ ├── index.rst │ ├── shared_vim_for_policy_action.rst │ ├── vdu-affinity-policy.rst │ └── vnffg-ns.rst ├── stein │ ├── index.rst │ ├── reservation-vnfm.rst │ ├── support-force-delete.rst │ └── vdu-auto-healing.rst ├── template.rst ├── train │ ├── index.rst │ ├── multi-interface-container.rst │ ├── tacker-studio.rst │ ├── vnf-rolling-upgrade.rst │ ├── vnf_package_support.rst │ └── vnf_package_support │ │ ├── 01.diag │ │ └── 01.png ├── ussuri │ ├── enhance_vnf_package_support.rst │ ├── etsi-nfv-sol-rest-api-for-VNF-deployment.rst │ ├── etsi-nfv-sol-rest-api-for-VNF-deployment │ │ ├── 01.diag │ │ ├── 01.png │ │ ├── 02.diag │ │ ├── 02.png │ │ ├── 03.diag │ │ ├── 03.png │ │ ├── 04.diag │ │ ├── 04.png │ │ ├── 05.diag │ │ └── 05.png │ ├── index.rst │ ├── lcm-operation-with-lcm-operation-user-data.rst │ ├── lcm-operation-with-lcm-operation-user-data │ │ ├── 01.diag │ │ └── 01.png │ └── vnf_parameter_update.rst ├── victoria │ ├── action_driver.rst │ ├── add-artifacts.rst │ ├── add-event-alarm-policy.rst │ ├── container-network-function.rst │ ├── container-network-function │ │ ├── 01.diag │ │ ├── 01.png │ │ ├── 02.diag │ │ ├── 02.png │ │ ├── 03.diag │ │ └── 03.png │ ├── enhancement_enhance-vnf-lcm-api-support.rst │ ├── enhancement_enhance-vnf-lcm-api-support │ │ ├── 01.diag │ │ ├── 01.png │ │ ├── 02.diag │ │ ├── 02.png │ │ ├── 03.diag │ │ ├── 03.png │ │ ├── 04.diag │ │ └── 04.png │ ├── index.rst │ ├── support-etsi-nfv-based-errorhandling.rst │ ├── support-etsi-nfv-based-errorhandling │ │ ├── 01.diag │ │ ├── 01.png │ │ ├── 02.diag │ │ └── 02.png │ ├── support-notification-api-based-on-etsi-nfv-sol.rst │ ├── support-notification-api-based-on-etsi-nfv-sol │ │ ├── 01.diag │ │ ├── 01.png │ │ ├── 02.diag │ │ ├── 02.png │ │ ├── 03.diag │ │ ├── 03.png │ │ ├── 04.diag │ │ ├── 04.png │ │ ├── 05.diag │ │ ├── 05.png │ │ ├── 06.diag │ │ ├── 06.png │ │ ├── 07.diag │ │ ├── 07.png │ │ ├── 08.diag │ │ ├── 08.png │ │ ├── 09.diag │ │ ├── 09.png │ │ ├── 10.diag │ │ └── 10.png │ ├── support-scale-api-based-on-etsi-nfv-sol.rst │ ├── support-scale-api-based-on-etsi-nfv-sol │ │ ├── 01.diag │ │ ├── 01.png │ │ ├── 02.diag │ │ └── 02.png │ ├── support-sol003-vnfm-operations.rst │ ├── support-sol003-vnfm-operations │ │ ├── 01.diag │ │ ├── 01.png │ │ ├── 02.diag │ │ └── 02.png │ ├── support-vnf-update-api-based-on-etsi-nfv-sol.rst │ ├── support-vnf-update-api-based-on-etsi-nfv-sol │ │ ├── 01.diag │ │ ├── 01.png │ │ ├── 02.diag │ │ └── 02.png │ └── use_robot_api_tests.rst ├── wallaby │ ├── hardware-aware-pod-affinity.rst │ ├── hardware-aware-pod-affinity │ │ ├── 01.diag │ │ └── 01.png │ ├── index.rst │ ├── mgmt-driver-for-ha-k8s.rst │ ├── mgmt-driver-for-ha-k8s │ │ ├── 01.diag │ │ └── 01.png │ ├── mgmt-driver-for-k8s-cluster.rst │ ├── mgmt-driver-for-k8s-cluster │ │ ├── 01.diag │ │ ├── 01.png │ │ ├── 02.diag │ │ ├── 02.png │ │ ├── 03.diag │ │ └── 03.png │ ├── mgmt-driver-for-k8s-heal.rst │ ├── mgmt-driver-for-k8s-heal │ │ ├── 01.diag │ │ ├── 01.png │ │ ├── 02.diag │ │ ├── 02.png │ │ ├── 03.diag │ │ └── 03.png │ ├── mgmt-driver-for-k8s-scale.rst │ ├── mgmt-driver-for-k8s-scale │ │ ├── 01.diag │ │ ├── 01.png │ │ ├── 02.diag │ │ └── 02.png │ ├── support-change-external-VNF-connectivity-operation.rst │ ├── support-change-external-VNF-connectivity-operation │ │ ├── 01.diag │ │ └── 01.png │ ├── support-cnf-heal.rst │ ├── support-cnf-heal │ │ ├── 01.diag │ │ ├── 01.png │ │ ├── 02.diag │ │ └── 02.png │ ├── support-cnf-scale.rst │ ├── support-cnf-scale │ │ ├── 01.diag │ │ └── 01.png │ ├── support-error-handling-based-on-ETSI-NFV.rst │ ├── support-error-handling-based-on-ETSI-NFV │ │ ├── 01.diag │ │ ├── 01.png │ │ ├── 02.diag │ │ └── 02.png │ ├── support-fundamental-vnf-lcm-based-on-ETSI-NFV.rst │ └── support-fundamental-vnf-lcm-based-on-ETSI-NFV │ │ ├── 01.diag │ │ ├── 01.png │ │ ├── 02.diag │ │ ├── 02.png │ │ ├── 03.diag │ │ ├── 03.png │ │ ├── 04.diag │ │ ├── 04.png │ │ ├── 05.diag │ │ ├── 05.png │ │ ├── 06.diag │ │ └── 06.png ├── xena │ ├── cir-k8s-cluster.rst │ ├── cir-k8s-cluster │ │ ├── 01.diag │ │ ├── 01.png │ │ ├── 02.diag │ │ ├── 02.png │ │ ├── 03.diag │ │ ├── 03.png │ │ ├── 04.diag │ │ ├── 04.png │ │ ├── 05.diag │ │ ├── 05.png │ │ ├── 06.diag │ │ └── 06.png │ ├── helmchart-k8s-vim.rst │ ├── helmchart-k8s-vim │ │ ├── 01.diag │ │ ├── 01.png │ │ ├── 02.diag │ │ └── 02.png │ ├── index.rst │ ├── k8s-mgmtdriver-kubespray.rst │ ├── k8s-mgmtdriver-kubespray │ │ ├── 01.diag │ │ └── 01.png │ ├── multi-version-api.rst │ ├── multi-version-api │ │ ├── 01.diag │ │ └── 01.png │ ├── pv-k8s-cluster.rst │ ├── pv-k8s-cluster │ │ ├── 01.diag │ │ └── 01.png │ ├── support-hot-according-to-nfv-sol014.rst │ ├── support-nfv-solv3-get-information.rst │ ├── support-nfv-solv3-get-information │ │ ├── 01.diag │ │ ├── 01.png │ │ ├── 02.diag │ │ ├── 02.png │ │ ├── 03.diag │ │ ├── 03.png │ │ ├── 04.diag │ │ ├── 04.png │ │ ├── 05.diag │ │ ├── 05.png │ │ ├── 06.diag │ │ ├── 06.png │ │ ├── 07.diag │ │ ├── 07.png │ │ ├── 08.diag │ │ └── 08.png │ ├── support-nfv-solv3-start-and-terminate-vnf.rst │ ├── support-nfv-solv3-start-and-terminate-vnf │ │ ├── 01.diag │ │ ├── 01.png │ │ ├── 02.diag │ │ ├── 02.png │ │ ├── 03.diag │ │ ├── 03.png │ │ ├── 04.diag │ │ └── 04.png │ └── test_sol_with_robot_api_tests.rst ├── yoga │ ├── add-sample-ansible-mgmt-driver.rst │ ├── add-sample-ansible-mgmt-driver │ │ ├── 01.diag │ │ └── 01.png │ ├── add-vnf-package-sample-for-practical-use-cases.rst │ ├── container-update.rst │ ├── container-update │ │ ├── 01.diag │ │ └── 01.png │ ├── enhance-nfv-solv3-lcm-operation.rst │ ├── enhance-nfv-solv3-lcm-operation │ │ ├── 01.diag │ │ ├── 01.png │ │ ├── 02.diag │ │ ├── 02.png │ │ ├── 03.diag │ │ ├── 03.png │ │ ├── 04.diag │ │ └── 04.png │ ├── index.rst │ ├── k8s-namespace.rst │ ├── k8s-namespace │ │ ├── 01.diag │ │ └── 01.png │ ├── multi-tenant-policy.rst │ ├── multi-tenant-policy │ │ ├── 01.diag │ │ ├── 01.png │ │ ├── 02.diag │ │ ├── 02.png │ │ ├── 03.diag │ │ ├── 03.png │ │ ├── 04.diag │ │ ├── 04.png │ │ ├── 05.diag │ │ ├── 05.png │ │ ├── 06.diag │ │ ├── 06.png │ │ ├── 07.diag │ │ ├── 07.png │ │ ├── 08.diag │ │ ├── 08.png │ │ ├── 09.diag │ │ ├── 09.png │ │ ├── 10.diag │ │ ├── 10.png │ │ ├── 11.diag │ │ └── 11.png │ ├── paging-query-result.rst │ ├── prometheus-plugin-heal.rst │ ├── prometheus-plugin-heal │ │ ├── 01.diag │ │ ├── 01.png │ │ ├── 02.diag │ │ ├── 02.png │ │ ├── 03.diag │ │ └── 03.png │ ├── support-heal-scale-in-user_lcm.rst │ ├── support-heal-scale-in-user_lcm │ │ ├── 01.diag │ │ ├── 01.png │ │ ├── 02.diag │ │ └── 02.png │ ├── support-nfv-solv3-error-handling.rst │ ├── support-nfv-solv3-error-handling │ │ ├── 01.diag │ │ ├── 01.png │ │ ├── 02.diag │ │ ├── 02.png │ │ ├── 03.diag │ │ ├── 03.png │ │ ├── 04.diag │ │ ├── 04.png │ │ ├── 05.diag │ │ ├── 05.png │ │ ├── 06.diag │ │ └── 06.png │ ├── upgrade-vnf-package.rst │ ├── upgrade-vnf-package │ │ ├── 01.diag │ │ ├── 01.png │ │ ├── 02.diag │ │ ├── 02.png │ │ ├── 03.diag │ │ ├── 03.png │ │ ├── 04.diag │ │ └── 04.png │ └── vim-monitor-feature.rst └── zed │ ├── centos-stream-zuul.rst │ ├── code-refactoring.rst │ ├── code-refactoring │ ├── 01.diag │ ├── 01.png │ ├── 02.diag │ ├── 02.png │ ├── 03.diag │ ├── 03.png │ ├── 04.diag │ ├── 04.png │ ├── 05.diag │ ├── 05.png │ ├── 06.diag │ ├── 06.png │ ├── 07.diag │ ├── 07.png │ ├── 08.diag │ ├── 08.png │ ├── 09.diag │ ├── 09.png │ ├── 10.diag │ ├── 10.png │ ├── 11.diag │ ├── 11.png │ ├── 12.diag │ ├── 12.png │ ├── 13.diag │ └── 13.png │ ├── database-synchronization.rst │ ├── database-synchronization │ ├── 01.diag │ └── 01.png │ ├── db-migration-tool.rst │ ├── db-migration-tool │ ├── 01.diag │ ├── 01.png │ ├── 02.diag │ ├── 02.png │ ├── 03.diag │ ├── 03.png │ ├── 04.diag │ └── 04.png │ ├── enhance-cli-for-paging.rst │ ├── enhance-cli-for-paging │ ├── 01.diag │ └── 01.png │ ├── enhance-cnf-operations.rst │ ├── enhance-cnf-operations │ ├── 01.diag │ └── 01.png │ ├── enhance-multi-tenant-policy.rst │ ├── enhance_change_current_vnf_package_API.rst │ ├── enhancement-container-update.rst │ ├── enhancement-container-update │ ├── 01.diag │ └── 01.png │ ├── faultnotification-autoheal.rst │ ├── faultnotification-autoheal │ ├── 01.diag │ └── 01.png │ ├── index.rst │ ├── individual-vnfc-management.rst │ ├── individual-vnfc-management │ ├── 01.diag │ ├── 01.png │ ├── 02.diag │ └── 02.png │ ├── prometheus-plugin-autoheal-and-autoscale.rst │ ├── prometheus-plugin-autoheal-and-autoscale │ ├── 01.diag │ ├── 01.png │ ├── 02.diag │ ├── 02.png │ ├── 03.diag │ ├── 03.png │ ├── 04.diag │ └── 04.png │ ├── support-openid-k8s-vim.rst │ ├── support-openid-k8s-vim │ ├── 01.diag │ └── 01.png │ ├── support-v2-cnf-heal.rst │ ├── support-v2-cnf-heal │ ├── 01.diag │ └── 01.png │ ├── support-v2-cnf-rollback.rst │ ├── support-v2-cnf-rollback │ ├── 01.diag │ ├── 01.png │ ├── 02.diag │ └── 02.png │ ├── support-v2-cnf-scale.rst │ ├── support-v2-cnf-scale │ ├── 01.diag │ └── 01.png │ └── support_multi_artifact_of_ansible_driver.rst ├── test-requirements.txt └── tox.ini /.gitignore: -------------------------------------------------------------------------------- 1 | *.pyc 2 | 3 | # Packages 4 | *.egg* 5 | build 6 | 7 | # Unit test 8 | .stestr 9 | .tox 10 | .venv 11 | 12 | # pbr generates these 13 | AUTHORS 14 | ChangeLog 15 | 16 | # Editors 17 | *.swp 18 | *.swo 19 | -------------------------------------------------------------------------------- /.gitreview: -------------------------------------------------------------------------------- 1 | [gerrit] 2 | host=review.opendev.org 3 | port=29418 4 | project=openstack/tacker-specs.git 5 | -------------------------------------------------------------------------------- /.zuul.yaml: -------------------------------------------------------------------------------- 1 | - project: 2 | templates: 3 | - openstack-specs-jobs 4 | check: 5 | jobs: 6 | - openstack-tox-pep8 7 | gate: 8 | jobs: 9 | - openstack-tox-pep8 10 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | This work is licensed under a Creative Commons Attribution 3.0 Unported License. 2 | 3 | http://creativecommons.org/licenses/by/3.0/legalcode 4 | -------------------------------------------------------------------------------- /doc/requirements.txt: -------------------------------------------------------------------------------- 1 | # The order of packages is significant, because pip processes them in the order 2 | # of appearance. Changing the order has an impact on the overall integration 3 | # process, which may cause wedges in the gate later. 4 | sphinx>=2.0.0,!=2.1.0 # BSD 5 | openstackdocstheme>=2.2.1 # Apache-2.0 6 | pillow===11.0.0 7 | sphinxcontrib-actdiag # BSD 8 | sphinxcontrib-mermaid # BSD 9 | -------------------------------------------------------------------------------- /doc/source/index.rst: -------------------------------------------------------------------------------- 1 | .. tacker-specs documentation master file 2 | 3 | ============================= 4 | Tacker Project Specifications 5 | ============================= 6 | 7 | This page contains the approved Tacker specifications. 8 | 9 | The specification template can be found at: 10 | 11 | https://opendev.org/openstack/tacker-specs/src/branch/master/specs/template.rst 12 | 13 | If you want to contribute to Tacker, please find 14 | the information at: 15 | 16 | https://docs.openstack.org/tacker/ 17 | 18 | Specifications 19 | -------------- 20 | 21 | .. toctree:: 22 | :glob: 23 | :maxdepth: 2 24 | 25 | specs/2025.1/index 26 | specs/2024.2/index 27 | specs/2024.1/index 28 | specs/2023.2/index 29 | specs/2023.1/index 30 | specs/zed/index 31 | specs/yoga/index 32 | specs/xena/index 33 | specs/wallaby/index 34 | specs/victoria/index 35 | specs/ussuri/index 36 | specs/train/index 37 | specs/stein/index 38 | specs/rocky/index 39 | specs/queens/index 40 | specs/pike/index 41 | specs/ocata/index 42 | specs/newton/index 43 | specs/mitaka/index 44 | specs/liberty/index 45 | 46 | Indices and tables 47 | ------------------ 48 | 49 | * :ref:`search` 50 | -------------------------------------------------------------------------------- /doc/source/specs: -------------------------------------------------------------------------------- 1 | ../../specs -------------------------------------------------------------------------------- /setup.cfg: -------------------------------------------------------------------------------- 1 | [metadata] 2 | name = tacker-specs 3 | description = OpenStack Tacker Project Development Specs 4 | long_description = file: README.rst 5 | author = OpenStack 6 | author_email = openstack-discuss@lists.openstack.org 7 | url = https://specs.openstack.org/openstack/tacker-specs/ 8 | classifiers = 9 | Intended Audience :: Developers 10 | License :: OSI Approved :: Apache Software License 11 | Operating System :: POSIX :: Linux 12 | [files] 13 | packages = 14 | specs 15 | -------------------------------------------------------------------------------- /setup.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | # Copyright (c) 2013 Hewlett-Packard Development Company, L.P. 3 | # 4 | # Licensed under the Apache License, Version 2.0 (the "License"); 5 | # you may not use this file except in compliance with the License. 6 | # You may obtain a copy of the License at 7 | # 8 | # http://www.apache.org/licenses/LICENSE-2.0 9 | # 10 | # Unless required by applicable law or agreed to in writing, software 11 | # distributed under the License is distributed on an "AS IS" BASIS, 12 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or 13 | # implied. 14 | # See the License for the specific language governing permissions and 15 | # limitations under the License. 16 | 17 | # THIS FILE IS MANAGED BY THE GLOBAL REQUIREMENTS REPO - DO NOT EDIT 18 | import setuptools 19 | 20 | setuptools.setup( 21 | setup_requires=['pbr'], 22 | pbr=True) 23 | -------------------------------------------------------------------------------- /specs/2023.1/add-sample-coordination/01.diag: -------------------------------------------------------------------------------- 1 | 2 | seqdiag { 3 | node_width = 80; 4 | edge_length = 100; 5 | 6 | "Client" 7 | "Tacker-server" 8 | "Tacker-conductor" 9 | "VnfLcmDriver" 10 | "InfraDriver" 11 | "CoordinateVNF script" 12 | "VIM (OpenStack)" 13 | "VNF" 14 | "EM" 15 | 16 | "Client" -> "Tacker-server" 17 | [label = "1. POST /vnflcm/v2/vnf_instances/{vnfInstanceId}/change_vnfpkg"]; 18 | "Client" <-- "Tacker-server" 19 | [label = "Response 202 Accepted"]; 20 | "Tacker-server" ->> "Tacker-conductor" 21 | [label = "2. ChangeCurrentVNFPackage"]; 22 | "Tacker-conductor" -> "VnfLcmDriver" 23 | [label = "change_vnfpkg"]; 24 | "VnfLcmDriver" -> "InfraDriver" 25 | [label = "3. change_vnfpkg_process"]; 26 | "InfraDriver" -> "VIM (OpenStack)" 27 | [label = "4. Get stack resource to update"]; 28 | "InfraDriver" <-- "VIM (OpenStack)" 29 | [label = ""]; 30 | "InfraDriver" -> "VIM (OpenStack)" 31 | [label = "5. update_stack"]; 32 | "InfraDriver" <-- "VIM (OpenStack)" 33 | [label = ""]; 34 | "InfraDriver" -> "CoordinateVNF script" 35 | [label = "6. CoordinateVNF"]; 36 | "CoordinateVNF script" -> "VNF" 37 | [label = "7. Coordinate resource"]; 38 | "CoordinateVNF script" <-- "VNF" 39 | [label = ""]; 40 | "CoordinateVNF script" -> "EM" 41 | [label = "8. Coordination request"]; 42 | "CoordinateVNF script" <-- "EM" 43 | [label = "Coordination result"]; 44 | "InfraDriver" <-- "CoordinateVNF script" 45 | [label = ""]; 46 | "InfraDriver" -> "InfraDriver" 47 | [label = "9. Repeat steps 5 through 8 for each VNFC"]; 48 | "VnfLcmDriver" <-- "InfraDriver" 49 | [label = ""]; 50 | "Tacker-conductor" <-- "VnfLcmDriver" 51 | [label = ""]; 52 | } 53 | -------------------------------------------------------------------------------- /specs/2023.1/add-sample-coordination/01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstack/tacker-specs/869bac725210ac416da6fa830fbd5fb8a6192c3f/specs/2023.1/add-sample-coordination/01.png -------------------------------------------------------------------------------- /specs/2023.1/enhance-tacker-policy/01.diag: -------------------------------------------------------------------------------- 1 | 2 | seqdiag { 3 | Client -> Keystonemiddleware [label = "request"]; 4 | Keystonemiddleware -> "API Process" [label = "1. Request with user info"]; 5 | "API Process" -> TackerDB [label = "2. Get the accessed \nresources from the TackerDB"] 6 | "API Process" <-- TackerDB [label = "return the accessed\n resources"]; 7 | "API Process" -> "API Process" [label = "3. Get required \nresource \nattributes \nfrom accessed \nresources"]; 8 | "API Process" -> Context [label = "4. Invoke policy check function with accessed resource\n attributes"]; 9 | Context -> Context [label = "5. Convert special \nroles to user\n attributes"]; 10 | Context -> oslo.policy [label = "6. Invoke policy enforcer\n with resource attributes\n and user attributes"]; 11 | Context <-- oslo.policy; 12 | "API Process" <-- Context; 13 | === 7. Operate the accessed resource. === 14 | Keystonemiddleware <-- "API Process" [label = "response"]; 15 | Client <-- Keystonemiddleware [label = "response"]; 16 | } 17 | -------------------------------------------------------------------------------- /specs/2023.1/enhance-tacker-policy/01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstack/tacker-specs/869bac725210ac416da6fa830fbd5fb8a6192c3f/specs/2023.1/enhance-tacker-policy/01.png -------------------------------------------------------------------------------- /specs/2023.1/enhance-tacker-policy/02.diag: -------------------------------------------------------------------------------- 1 | 2 | seqdiag { 3 | Client -> Keystonemiddleware [label = "request"]; 4 | Keystonemiddleware -> "API Process" [label = "1. Request with user info"]; 5 | "API Process" -> Context [label = "2. Invoke policy check\n function without resource \nattributes"]; 6 | "API Process" <-- Context; 7 | "API Process" -> TackerDB [label = "3. Get the accessed resources from the database"]; 8 | "API Process" <-- TackerDB [label = "return accessed resources"]; 9 | "API Process" -> Context [label = "4. Get user attributes"]; 10 | Context -> Context [label = "5. Convert special \nroles to user\n attributes"]; 11 | "API Process" <-- Context [label = "return user attributes"]; 12 | "API Process" -> "API Process" [label = "6. Filter the list\n operation results \nbased on policy\n rules"]; 13 | Keystonemiddleware <-- "API Process" [label = "7. Return the filtered\n result to user"]; 14 | Client <-- Keystonemiddleware [label = "response"]; 15 | } 16 | -------------------------------------------------------------------------------- /specs/2023.1/enhance-tacker-policy/02.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstack/tacker-specs/869bac725210ac416da6fa830fbd5fb8a6192c3f/specs/2023.1/enhance-tacker-policy/02.png -------------------------------------------------------------------------------- /specs/2023.1/enhance_placement_process/01.diag: -------------------------------------------------------------------------------- 1 | 2 | blockdiag { 3 | orientation = portrait; 4 | edge_layout = flowchart; 5 | 6 | create [shape=flowchart.condition,label='stack create/update']; 7 | start [shape=beginpoint]; 8 | lin [shape=flowchart.loopin,label='stack create/update\nin other AZ']; 9 | recreate [shape=flowchart.condition,label='stack create/update']; 10 | lout [shape=flowchart.loopout,label='no more AZ\ncandidates']; 11 | failure [shape=endpoint,label='end']; 12 | success [shape=endpoint,label='end']; 13 | 14 | class none [shape=none]; 15 | n [class=none]; 16 | 17 | start -> create [label='NFVO AZ'] 18 | create -> lin [label=error] 19 | lin -> recreate [label='other AZ'] 20 | recreate -> lout [label='error'] 21 | lout -> failure [label='failure']; 22 | 23 | create -> success; 24 | 25 | recreate -> n [dir=none] 26 | n -> success [label='success']; 27 | } 28 | -------------------------------------------------------------------------------- /specs/2023.1/enhance_placement_process/01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstack/tacker-specs/869bac725210ac416da6fa830fbd5fb8a6192c3f/specs/2023.1/enhance_placement_process/01.png -------------------------------------------------------------------------------- /specs/2023.1/index.rst: -------------------------------------------------------------------------------- 1 | ============================ 2 | Tacker 2023.1 Specifications 3 | ============================ 4 | 5 | .. toctree:: 6 | :glob: 7 | :maxdepth: 1 8 | 9 | * 10 | -------------------------------------------------------------------------------- /specs/2023.1/support-multi-conductors-onboarding/01.diag: -------------------------------------------------------------------------------- 1 | 2 | seqdiag { 3 | node_width = 80; edge_length = 100; 4 | 5 | "Client" "DB" "Tacker-server" "Backend Storage" "Messaging Queue" "Tacker-conductor 1" "Tacker-conductor 2" "Tacker-conductor 3" 6 | 7 | Client -> "Tacker-server" 8 | [label = "1. PUT /vnfpkgm/v1/vnf_packages/{vnfPkgId}/package_content"]; 9 | 10 | "Tacker-server" -> "DB" 11 | [label = "2. Update onboardingState to UPLOADING"] 12 | 13 | "Tacker-server" <- "DB" 14 | [label = ""] 15 | 16 | "Tacker-server" -> "Backend Storage" 17 | [label = "3. Upload CSAR file"] 18 | 19 | "Tacker-server" <- "Backend Storage" 20 | [label = ""] 21 | 22 | "Tacker-server" -> "Messaging Queue" 23 | [label = "4. Send a rpc message of 'Upload VNF Package from content' with fanout=False"] 24 | 25 | Client <- "Tacker-server" 26 | [label = "response 202 Accepted"] 27 | 28 | "Messaging Queue" -> "Tacker-conductor 1" 29 | [label = ""] 30 | 31 | "Tacker-conductor 1" -> "Backend Storage" 32 | [label = "5. Send a request to download the CSAR file"] 33 | 34 | "Tacker-conductor 1" <- "Backend Storage" 35 | [label = "Download the CSAR file from Backend Storage to the local file system"] 36 | 37 | "Tacker-conductor 1" -> "DB" 38 | [label = "6. Update onboardingState to ONBOARDED"] 39 | 40 | "Tacker-conductor 1" <- "DB" 41 | [label = ""] 42 | 43 | "Messaging Queue" <- "Tacker-conductor 1" 44 | [label = ""] 45 | 46 | } 47 | -------------------------------------------------------------------------------- /specs/2023.1/support-multi-conductors-onboarding/01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstack/tacker-specs/869bac725210ac416da6fa830fbd5fb8a6192c3f/specs/2023.1/support-multi-conductors-onboarding/01.png -------------------------------------------------------------------------------- /specs/2023.1/support-multi-conductors-onboarding/02.diag: -------------------------------------------------------------------------------- 1 | 2 | seqdiag { 3 | node_width = 80; edge_length = 100; 4 | 5 | "Client" "DB" "Tacker-server" "Backend Storage" "Messaging Queue" "Tacker-conductor 1" "Tacker-conductor 2" "Tacker-conductor 3" 6 | 7 | Client -> "Tacker-server" 8 | [label = "1. POST /vnfpkgm/v1/vnf_packages/{vnf_package_id}/package_content/upload_from_uri"]; 9 | 10 | "Tacker-server" -> "DB" 11 | [label = "2. Update onboardingState to UPLOADING"] 12 | 13 | "Tacker-server" <- "DB" 14 | [label = ""] 15 | 16 | "Tacker-server" -> "Messaging Queue" 17 | [label = "3. Send a rpc message of 'Upload VNF Package from uri' with fanout=False"] 18 | 19 | Client <- "Tacker-server" 20 | [label = "response 202 Accepted"] 21 | 22 | "Messaging Queue" -> "Tacker-conductor 1" 23 | [label = ""] 24 | 25 | "Tacker-conductor 1" -> "Backend Storage" 26 | [label = "4. Upload CSAR file"] 27 | 28 | "Tacker-conductor 1" <- "Backend Storage" 29 | [label = ""] 30 | 31 | "Tacker-conductor 1" -> "Backend Storage" 32 | [label = "5. Send a request to download the CSAR file"] 33 | 34 | "Tacker-conductor 1" <- "Backend Storage" 35 | [label = "Download the CSAR file from Backend Storage to the local file system"] 36 | 37 | "Tacker-conductor 1" -> "DB" 38 | [label = "6. Update onboardingState to ONBOARDED"] 39 | 40 | "Tacker-conductor 1" <- "DB" 41 | [label = ""] 42 | 43 | "Messaging Queue" <- "Tacker-conductor 1" 44 | [label = ""] 45 | 46 | } 47 | -------------------------------------------------------------------------------- /specs/2023.1/support-multi-conductors-onboarding/02.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstack/tacker-specs/869bac725210ac416da6fa830fbd5fb8a6192c3f/specs/2023.1/support-multi-conductors-onboarding/02.png -------------------------------------------------------------------------------- /specs/2023.1/support-multi-conductors-onboarding/03.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstack/tacker-specs/869bac725210ac416da6fa830fbd5fb8a6192c3f/specs/2023.1/support-multi-conductors-onboarding/03.png -------------------------------------------------------------------------------- /specs/2023.1/support-multi-conductors-onboarding/04.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstack/tacker-specs/869bac725210ac416da6fa830fbd5fb8a6192c3f/specs/2023.1/support-multi-conductors-onboarding/04.png -------------------------------------------------------------------------------- /specs/2023.1/support-multi-conductors-onboarding/05.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstack/tacker-specs/869bac725210ac416da6fa830fbd5fb8a6192c3f/specs/2023.1/support-multi-conductors-onboarding/05.png -------------------------------------------------------------------------------- /specs/2023.1/support-tacker-db-manage-postgresql/01.diag: -------------------------------------------------------------------------------- 1 | 2 | seqdiag { 3 | node_width = 80; 4 | edge_length = 100; 5 | 6 | "Client" 7 | "Tacker" 8 | "tacker-db-manage" 9 | "PostgreSQL" 10 | 11 | "Client" -> "PostgreSQL" 12 | [label = "1. Creates Tacker DB and user"]; 13 | "Client" <-- "PostgreSQL" 14 | [label = "Created"]; 15 | "Client" -> "Tacker" 16 | [label = "2. Request to execute tacker-db-manage"]; 17 | "Tacker" -> "tacker-db-manage" 18 | [label = "3. Execute tacker-db-manage"]; 19 | "tacker-db-manage" -> "PostgreSQL" 20 | [label = "4. Update Tacker DB for PostgreSQL"]; 21 | "PostgreSQL" --> "tacker-db-manage" 22 | [label = "Updated"]; 23 | "tacker-db-manage" --> "Tacker" 24 | [label = ""]; 25 | "Tacker" --> "Client" 26 | [label = "Succeeded"]; 27 | } 28 | -------------------------------------------------------------------------------- /specs/2023.1/support-tacker-db-manage-postgresql/01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstack/tacker-specs/869bac725210ac416da6fa830fbd5fb8a6192c3f/specs/2023.1/support-tacker-db-manage-postgresql/01.png -------------------------------------------------------------------------------- /specs/2023.1/support-threshold-pm-interface/01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstack/tacker-specs/869bac725210ac416da6fa830fbd5fb8a6192c3f/specs/2023.1/support-threshold-pm-interface/01.png -------------------------------------------------------------------------------- /specs/2023.1/vnfm-autoheal-and-autoscale/01.diag: -------------------------------------------------------------------------------- 1 | 2 | seqdiag { 3 | node_width = 150; 4 | edge_length = 160; 5 | 6 | "External Monitoring Tool" 7 | "Prometheus Plugin" 8 | "Vnflcm Controller" 9 | "Vnflcm Driver" 10 | "Tacker DB" 11 | 12 | "External Monitoring Tool" -> "Prometheus Plugin" 13 | [label = "1. POST /alert/auto_healing"]; 14 | "Prometheus Plugin" -> "Prometheus Plugin" 15 | [label = "2. Check if this API is enabled in Prometheus Plugin"]; 16 | "Prometheus Plugin" -> "Prometheus Plugin" 17 | [label = "3. Check the status of the received alert"]; 18 | "Prometheus Plugin" -> "Prometheus Plugin" 19 | [label = "4. Check if this alert is for AutoHeal"]; 20 | "Prometheus Plugin" -> "Tacker DB" 21 | [label = "5. Find the corresponding resource from the DB"]; 22 | "Prometheus Plugin" <-- "Tacker DB" 23 | [label = "vnf_instance"]; 24 | "Prometheus Plugin" -> "Prometheus Plugin" 25 | [label = "6. Check whether the resource has AutoHeal enabled"]; 26 | "Prometheus Plugin" -> "Prometheus Plugin" 27 | [label = "7. Check vnfc_info_id in vnf_instance"]; 28 | "Prometheus Plugin" -> "Vnflcm Controller" 29 | [label = "8. Call the internal Heal function"]; 30 | "Vnflcm Controller" -> "Vnflcm Driver" 31 | [label = "9. Trigger asynchronous task", note = "The same with the default Heal operation"]; 32 | "Prometheus Plugin" <-- "Vnflcm Controller" 33 | [label = "Response 202 Accepted"]; 34 | "External Monitoring Tool" <-- "Prometheus Plugin" 35 | [label = "Response 204 No Content"]; 36 | } 37 | -------------------------------------------------------------------------------- /specs/2023.1/vnfm-autoheal-and-autoscale/01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstack/tacker-specs/869bac725210ac416da6fa830fbd5fb8a6192c3f/specs/2023.1/vnfm-autoheal-and-autoscale/01.png -------------------------------------------------------------------------------- /specs/2023.1/vnfm-autoheal-and-autoscale/02.diag: -------------------------------------------------------------------------------- 1 | 2 | seqdiag { 3 | node_width = 150; 4 | edge_length = 160; 5 | 6 | "External Monitoring Tool" 7 | "Prometheus Plugin" 8 | "Vnflcm Controller" 9 | "Vnflcm Driver" 10 | "Tacker DB" 11 | 12 | "External Monitoring Tool" -> "Prometheus Plugin" 13 | [label = "1. POST /alert/auto_scaling"]; 14 | "Prometheus Plugin" -> "Prometheus Plugin" 15 | [label = "2. Check if this API is enabled in Prometheus Plugin"]; 16 | "Prometheus Plugin" -> "Prometheus Plugin" 17 | [label = "3. Check the status of the received alert"]; 18 | "Prometheus Plugin" -> "Prometheus Plugin" 19 | [label = "4. Check if this alert is for AutoScale"]; 20 | "Prometheus Plugin" -> "Prometheus Plugin" 21 | [label = "5. Check that the received alert contains a valid type of Scale"]; 22 | "Prometheus Plugin" -> "Tacker DB" 23 | [label = "6. Find the corresponding resource from the DB"]; 24 | "Prometheus Plugin" <-- "Tacker DB" 25 | [label = "vnf_instance"]; 26 | "Prometheus Plugin" -> "Prometheus Plugin" 27 | [label = "7. Check whether the resource has AutoScale enabled"]; 28 | "Prometheus Plugin" -> "Prometheus Plugin" 29 | [label = "8. Check aspect_id in vnf_instance"]; 30 | "Prometheus Plugin" -> "Vnflcm Controller" 31 | [label = "9. Call the internal Scale function"]; 32 | "Vnflcm Controller" -> "Vnflcm Driver" 33 | [label = "10. Trigger asynchronous task", note = "The same with the default Scale operation"]; 34 | "Prometheus Plugin" <-- "Vnflcm Controller" 35 | [label = "Response 202 Accepted"]; 36 | "External Monitoring Tool" <-- "Prometheus Plugin" 37 | [label = "Response 204 No Content"]; 38 | } 39 | -------------------------------------------------------------------------------- /specs/2023.1/vnfm-autoheal-and-autoscale/02.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstack/tacker-specs/869bac725210ac416da6fa830fbd5fb8a6192c3f/specs/2023.1/vnfm-autoheal-and-autoscale/02.png -------------------------------------------------------------------------------- /specs/2023.2/index.rst: -------------------------------------------------------------------------------- 1 | ============================ 2 | Tacker 2023.2 Specifications 3 | ============================ 4 | 5 | .. toctree:: 6 | :glob: 7 | :maxdepth: 1 8 | 9 | support-k8s-cr/* 10 | tf-infra-driver/* 11 | * 12 | -------------------------------------------------------------------------------- /specs/2023.2/support-external-keymanager/01.diag: -------------------------------------------------------------------------------- 1 | 2 | seqdiag { 3 | Client; NFVO; tacker-server; tacker-conductor; VnfLcmDriver; TackerDB; Barbican; 4 | 5 | Client -> "tacker-server" 6 | [label = "POST /vnflcm/v2/vnf_instances/{vnfInstanceId}/instantiate"]; 7 | Client <-- "tacker-server" [label = "202 Accepted"]; 8 | "tacker-server" -> "tacker-conductor" 9 | [label = "trigger asynchronous task"]; 10 | NFVO <- "tacker-conductor" [label = "POST /grants"]; 11 | NFVO --> "tacker-conductor" [label = "201 Created"]; 12 | "tacker-conductor" -> "tacker-conductor" [label = "encrypt auth credentials"]; 13 | "tacker-conductor" -> "Barbican" [label = "register the encryption key"]; 14 | "tacker-conductor" <-- "Barbican" [label = "200 Successful Request"]; 15 | "tacker-conductor" -> "VnfLcmDriver" [label = "execute VnfLcmDriver"]; 16 | "tacker-conductor" <-- "VnfLcmDriver" [label = ""]; 17 | "tacker-conductor" -> "TackerDB" [label = "store encrypted auth credentials"]; 18 | "tacker-conductor" <-- "TackerDB" [label = ""]; 19 | 20 | } 21 | -------------------------------------------------------------------------------- /specs/2023.2/support-external-keymanager/01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstack/tacker-specs/869bac725210ac416da6fa830fbd5fb8a6192c3f/specs/2023.2/support-external-keymanager/01.png -------------------------------------------------------------------------------- /specs/2023.2/support-external-keymanager/02.diag: -------------------------------------------------------------------------------- 1 | 2 | seqdiag { 3 | Client; NFVO; tacker-server; tacker-conductor; VnfLcmDriver; TackerDB; Barbican; 4 | 5 | Client -> "tacker-server" 6 | [label = "POST /vnflcm/v2/vnf_instances/{vnfInstanceId}/terminate"]; 7 | Client <-- "tacker-server" [label = "Response 202 Accepted"]; 8 | "tacker-server" -> "tacker-conductor" 9 | [label = "trigger asynchronous task"]; 10 | NFVO <- "tacker-conductor" [label = "POST /grants"]; 11 | NFVO --> "tacker-conductor" [label = "201 Created"]; 12 | "tacker-conductor" -> "TackerDB" [label = "load encrypted auth credentials"]; 13 | "tacker-conductor" <-- "TackerDB" [label = ""]; 14 | "tacker-conductor" -> "Barbican" [label = "get the encryption key"]; 15 | "tacker-conductor" <-- "Barbican" [label = "200 Successful Request"]; 16 | "tacker-conductor" -> "tacker-conductor" [label = "decrypt the encrypted auth credentials"]; 17 | "tacker-conductor" -> "VnfLcmDriver" [label = "execute VnfLcmDriver"]; 18 | "tacker-conductor" <-- "VnfLcmDriver" [label = ""]; 19 | "tacker-conductor" -> "Barbican" [label = "delete the encryption key"]; 20 | "tacker-conductor" <-- "Barbican" [label = "204 No Content"]; 21 | 22 | } 23 | -------------------------------------------------------------------------------- /specs/2023.2/support-external-keymanager/02.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstack/tacker-specs/869bac725210ac416da6fa830fbd5fb8a6192c3f/specs/2023.2/support-external-keymanager/02.png -------------------------------------------------------------------------------- /specs/2023.2/support-k8s-cr/img/capi-op.pu: -------------------------------------------------------------------------------- 1 | @startuml 2 | 3 | actor User 4 | package manifest 5 | component ManagementCluster { 6 | component "ClusterAPI" as capi 7 | component "KubernetesAPI" as kapi1 8 | } 9 | component Infrastructure { 10 | component WorkloadCluster { 11 | component "KubernetesAPI" as kapi2 12 | } 13 | } 14 | 15 | User --> manifest: 2. create 16 | User -> kapi1: 3. apply manifest 17 | kapi1->capi 18 | capi -> WorkloadCluster: 4. create 19 | User -> ManagementCluster: 1. create 20 | 21 | @enduml -------------------------------------------------------------------------------- /specs/2023.2/support-k8s-cr/img/chgpkg-for-wc.pu: -------------------------------------------------------------------------------- 1 | @startuml 2 | 3 | frame "python-tackerclient" { 4 | component "tacker-client" as client { 5 | } 6 | } 7 | 8 | frame "tacker" { 9 | component "tacker-server" { 10 | component "Server" as serv 11 | } 12 | component "tacker-conductor" { 13 | component "Conductor" as cond 14 | component "Vnflcm driver" as vld 15 | component "Kubernetes\ninfra-driver" as infra 16 | } 17 | } 18 | 19 | frame "Management Cluster" as mgmt { 20 | node "Control Plane" as k8s_m_m { 21 | node "Cluster API" as capi 22 | } 23 | node "Worker" as k8s_m_w { 24 | node "Cluster" as cluster 25 | } 26 | } 27 | 28 | cloud "Hardware Resources" as hw_w { 29 | frame "Workload Cluster" as wkld { 30 | node "Control Plane" as k8s_w_m 31 | node "Worker" as k8s_w_w 32 | node "Worker" as k8s_w_w2 33 | } 34 | } 35 | 36 | '# Relationships 37 | client --> serv: 1. Request\n change current VNF package 38 | serv --> cond 39 | cond --> vld 40 | vld --> infra 41 | infra -right-> k8s_m_m: 2. Call Kubernetes\n API 42 | capi --> cluster: 3. Update the resources 43 | cluster --> wkld: 4. Change the resources of worker nodes 44 | k8s_w_m -[hidden]-> k8s_w_w 45 | k8s_w_m -[hidden]-> k8s_w_w2 46 | 47 | @enduml -------------------------------------------------------------------------------- /specs/2023.2/support-k8s-cr/img/insta-for-capi.pu: -------------------------------------------------------------------------------- 1 | @startuml 2 | 3 | frame "python-tackerclient" { 4 | component "tacker-client" as client { 5 | package "VNF Package" as vnfpkg { 6 | file "VNFD" as vnfd 7 | file "CNF (Cluster API)\nDefinition" as cnfd 8 | } 9 | file "Instantiate\nparameters" as inst_param 10 | } 11 | } 12 | 13 | frame "tacker" { 14 | component "tacker-server" { 15 | component "Server" as serv 16 | } 17 | component "tacker-conductor" { 18 | component "Conductor" as cond 19 | component "Vnflcm driver" as vld 20 | component "Kubernetes\ninfra-driver" as infra 21 | } 22 | } 23 | 24 | frame "Kubernetes Cluster" as k8s { 25 | node "Control Plane" as k8s_m { 26 | node "Cluster API" as capi 27 | } 28 | node "Worker" as k8s_w 29 | } 30 | 31 | '# Relationships 32 | vnfpkg --> serv: 1. Request\n create VNF 33 | inst_param --> serv: 2. Request\n instantiate VNF 34 | serv --> cond 35 | cond --> vld 36 | vld --> infra 37 | infra -right-> k8s_m: 3. Call Kubernetes\n API 38 | k8s_m -> capi: 4. Create a CRs\n for Cluster API 39 | 40 | capi -[hidden]-> k8s_w 41 | 42 | @enduml -------------------------------------------------------------------------------- /specs/2023.2/support-k8s-cr/img/insta-for-wc.pu: -------------------------------------------------------------------------------- 1 | @startuml 2 | 3 | component "Web Server" as w 4 | 5 | frame "python-tackerclient" { 6 | component "tacker-client" as client { 7 | package "VNF Package" as vnfpkg { 8 | file "VNFD" as vnfd 9 | file "CNF (k8s Cluster)\nDefinition" as cnfd 10 | file "Scripts for\n Management Driver\n(Credentials Sender)" as mgmtd 11 | } 12 | file "Instantiate\nparameters" as inst_param 13 | } 14 | } 15 | 16 | vnfd -[hidden]> cnfd 17 | cnfd -[hidden]> mgmtd 18 | 19 | frame "tacker" { 20 | component "tacker-server" { 21 | component "Server" as serv 22 | } 23 | component "tacker-conductor" { 24 | component "Conductor" as cond 25 | component "Vnflcm driver" as vld 26 | component "Kubernetes\ninfra-driver" as infra 27 | } 28 | } 29 | 30 | frame "Management Cluster" as mgmt { 31 | node "Control Plane" as k8s_m_m { 32 | node "Cluster API" as capi 33 | } 34 | node "Worker" as k8s_m_w { 35 | node "Cluster" as cluster 36 | } 37 | } 38 | 39 | component "Management Driver\n(Credentials Sender)" as mgmtdi 40 | 41 | cloud "Hardware Resources" as hw_w { 42 | frame "Workload Cluster" as wkld { 43 | node "Control Plane" as k8s_w_m 44 | node "Worker" as k8s_w_w { 45 | } 46 | } 47 | } 48 | 49 | '# Relationships 50 | vnfpkg --> serv: 1. Request\n create VNF 51 | inst_param --> serv: 2. Request\n instantiate VNF 52 | serv --> cond 53 | cond --> vld 54 | vld --> infra 55 | infra -right-> k8s_m_m: 3. Call Kubernetes\n API 56 | capi --> cluster: 4. Create a Cluster Resource 57 | cluster --> wkld: 5. Create a Workload Cluster 58 | k8s_w_m -[hidden]-> k8s_w_w 59 | vld -right-> mgmtdi: 6. Execute management driver 60 | mgmtdi <--- mgmt: 7. Get credentials for Workload Cluster 61 | mgmtdi -> w: 8. Send credentials 62 | 63 | @enduml -------------------------------------------------------------------------------- /specs/2023.2/support-k8s-cr/img/scale-for-wc.pu: -------------------------------------------------------------------------------- 1 | @startuml 2 | 3 | frame "python-tackerclient" { 4 | component "tacker-client" as client { 5 | } 6 | } 7 | 8 | frame "tacker" { 9 | component "tacker-server" { 10 | component "Server" as serv 11 | } 12 | component "tacker-conductor" { 13 | component "Conductor" as cond 14 | component "Vnflcm driver" as vld 15 | component "Kubernetes\ninfra-driver" as infra 16 | } 17 | } 18 | 19 | frame "Management Cluster" as mgmt { 20 | node "Control Plane" as k8s_m_m { 21 | node "Cluster API" as capi 22 | } 23 | node "Worker" as k8s_m_w { 24 | node "Cluster" as cluster 25 | } 26 | } 27 | 28 | cloud "Hardware Resources" as hw_w { 29 | frame "Workload Cluster" as wkld { 30 | node "Control Plane" as k8s_w_m 31 | node "Worker" as k8s_w_w 32 | node "Worker" as k8s_w_w2 33 | } 34 | } 35 | 36 | '# Relationships 37 | client --> serv: 1. Request\n scale VNF 38 | serv --> cond 39 | cond --> vld 40 | vld --> infra 41 | infra -right-> k8s_m_m: 2. Call Kubernetes\n API 42 | capi --> cluster: 3. Change a parameter\n for the number of worker nodes 43 | cluster --> wkld: 4. Change the number of worker nodes 44 | k8s_w_m -[hidden]-> k8s_w_w 45 | k8s_w_m -[hidden]-> k8s_w_w2 46 | 47 | @enduml -------------------------------------------------------------------------------- /specs/2023.2/tf-infra-driver/img/insta-for-tf.pu: -------------------------------------------------------------------------------- 1 | @startuml 2 | 3 | frame "python-tackerclient" { 4 | component "tacker-client" as client { 5 | package "VNF Package" as vnfpkg { 6 | file "VNFD" as vnfd 7 | file "Terraform\nconfiguration" as tffile 8 | file "Terraform\nvariables\nfile" as tfvar 9 | } 10 | file "Instantiate\nparameters" as inst_param 11 | } 12 | } 13 | 14 | vnfd -[hidden]> tffile 15 | tffile-[hidden]> tfvar 16 | 17 | frame "tacker" { 18 | component "tacker-server" { 19 | component "server" as serv 20 | } 21 | component "tacker-conductor" { 22 | component "conductor" as cond 23 | component "Terraform\ninfra-driver" as infra 24 | } 25 | } 26 | 27 | node "Terraform" 28 | 29 | node "Target Service" as ts 30 | cloud "Hardware Resources" as hw { 31 | node "VM" as ins1 32 | } 33 | 34 | '# Relationships 35 | vnfpkg --> serv: 1. Request\n create VNF 36 | inst_param --> serv: 2. Request\n instantiate VNF 37 | serv --> cond 38 | cond --> infra 39 | infra --> Terraform: 3. Execute Terraform command 40 | Terraform -right-> ts: 4. Call target\n service API 41 | ts --> ins1: 5. Create VM(s) 42 | 43 | @enduml -------------------------------------------------------------------------------- /specs/2023.2/tf-infra-driver/img/op1-local-file.pu: -------------------------------------------------------------------------------- 1 | @startuml 2 | 3 | left to right direction 4 | 5 | component "Terraform infra-driver" as tfid 6 | folder "VNF Package A" as pkga 7 | folder "VNF Package B" as pkgb 8 | folder "Directory for VNF Instance A" as da { 9 | file "Configuration" as ca 10 | file "Variables" as va 11 | file "State file A" as statea 12 | file "State lock file A" as statelocka 13 | } 14 | folder "Directory for VNF Instance B" as db { 15 | file "Configuration" as cb 16 | file "Variables" as vb 17 | file "State lock file B" as statelockb 18 | file "State file B" as stateb 19 | } 20 | folder "Directory for VNF Instance C" as dc { 21 | file "Configuration" as cc 22 | file "Variables" as vc 23 | file "State lock file C" as statelockc 24 | file "State file C" as statec 25 | } 26 | dc -[hidden]> db 27 | db -[hidden]> da 28 | component "Terraform" as tf 29 | 30 | '# Relationships 31 | tfid -> tf: Execute 32 | tfid <-up- pkga: Download 33 | tfid <-up- pkgb: Download 34 | tfid ---> da: Copy VNF Package A 35 | tfid ---> db: Copy VNF Package A 36 | tfid ---> dc: Copy VNF Package B 37 | tf --> statea: Create 38 | tf --> statelocka: Create 39 | tf --> stateb: Create 40 | tf --> statelockb: Create 41 | tf --> statec: Create 42 | tf --> statelockc: Create 43 | 44 | @enduml -------------------------------------------------------------------------------- /specs/2023.2/tf-infra-driver/img/tf-op.pu: -------------------------------------------------------------------------------- 1 | @startuml 2 | 3 | actor "User" as user 4 | component "Terraform CLI" as cli 5 | component "Terraform" as tf 6 | component "Configuration file" as config 7 | component "Variables file" as vars 8 | component "Target Service" as svc 9 | file "State file" as state 10 | file "State lock file" as statelock 11 | 12 | '# Relationships 13 | user --> config: 1. Create Configuration file 14 | user --> vars: 1. Create Variables file 15 | user -> cli 16 | cli -> tf: 2. Init Terraform\n with configuration file\n and variables file 17 | tf --> statelock: 3. Create state lock file 18 | cli -> tf: 4. Apply Configuration file 19 | tf -> svc: 5. Call APIs 20 | tf --> state: 6. Create state file 21 | 22 | @enduml -------------------------------------------------------------------------------- /specs/2024.1/index.rst: -------------------------------------------------------------------------------- 1 | ============================ 2 | Tacker 2024.1 Specifications 3 | ============================ 4 | 5 | .. toctree:: 6 | :glob: 7 | :maxdepth: 1 8 | 9 | v2-api-horizon/* 10 | intro-cilium/* 11 | otel-monitoring/* 12 | -------------------------------------------------------------------------------- /specs/2024.1/intro-cilium/img/cilium-multinodes.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstack/tacker-specs/869bac725210ac416da6fa830fbd5fb8a6192c3f/specs/2024.1/intro-cilium/img/cilium-multinodes.png -------------------------------------------------------------------------------- /specs/2024.1/intro-cilium/img/cilium-usage1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstack/tacker-specs/869bac725210ac416da6fa830fbd5fb8a6192c3f/specs/2024.1/intro-cilium/img/cilium-usage1.png -------------------------------------------------------------------------------- /specs/2024.1/v2-api-horizon/img/checkbox.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstack/tacker-specs/869bac725210ac416da6fa830fbd5fb8a6192c3f/specs/2024.1/v2-api-horizon/img/checkbox.png -------------------------------------------------------------------------------- /specs/2024.1/v2-api-horizon/img/current-th-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstack/tacker-specs/869bac725210ac416da6fa830fbd5fb8a6192c3f/specs/2024.1/v2-api-horizon/img/current-th-1.png -------------------------------------------------------------------------------- /specs/2024.1/v2-api-horizon/img/current-th-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstack/tacker-specs/869bac725210ac416da6fa830fbd5fb8a6192c3f/specs/2024.1/v2-api-horizon/img/current-th-2.png -------------------------------------------------------------------------------- /specs/2024.1/v2-api-horizon/img/data-table.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstack/tacker-specs/869bac725210ac416da6fa830fbd5fb8a6192c3f/specs/2024.1/v2-api-horizon/img/data-table.png -------------------------------------------------------------------------------- /specs/2024.1/v2-api-horizon/img/detail-tab.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstack/tacker-specs/869bac725210ac416da6fa830fbd5fb8a6192c3f/specs/2024.1/v2-api-horizon/img/detail-tab.png -------------------------------------------------------------------------------- /specs/2024.1/v2-api-horizon/img/file.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstack/tacker-specs/869bac725210ac416da6fa830fbd5fb8a6192c3f/specs/2024.1/v2-api-horizon/img/file.png -------------------------------------------------------------------------------- /specs/2024.1/v2-api-horizon/img/keyvalue.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstack/tacker-specs/869bac725210ac416da6fa830fbd5fb8a6192c3f/specs/2024.1/v2-api-horizon/img/keyvalue.png -------------------------------------------------------------------------------- /specs/2024.1/v2-api-horizon/img/modal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstack/tacker-specs/869bac725210ac416da6fa830fbd5fb8a6192c3f/specs/2024.1/v2-api-horizon/img/modal.png -------------------------------------------------------------------------------- /specs/2024.1/v2-api-horizon/img/options.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstack/tacker-specs/869bac725210ac416da6fa830fbd5fb8a6192c3f/specs/2024.1/v2-api-horizon/img/options.png -------------------------------------------------------------------------------- /specs/2024.1/v2-api-horizon/img/required.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstack/tacker-specs/869bac725210ac416da6fa830fbd5fb8a6192c3f/specs/2024.1/v2-api-horizon/img/required.png -------------------------------------------------------------------------------- /specs/2024.2/index.rst: -------------------------------------------------------------------------------- 1 | ============================ 2 | Tacker 2024.2 Specifications 3 | ============================ 4 | 5 | .. toctree:: 6 | :glob: 7 | :maxdepth: 1 8 | 9 | perf-improve-list-apis/* 10 | * 11 | -------------------------------------------------------------------------------- /specs/2024.2/placeholder.rst: -------------------------------------------------------------------------------- 1 | .. 2 | This work is licensed under a Creative Commons Attribution 3.0 Unported 3 | License. 4 | 5 | http://creativecommons.org/licenses/by/3.0/legalcode 6 | 7 | ================== 8 | (Placeholder Spec) 9 | ================== 10 | 11 | This file is just a placeholder for the specs directory. 12 | It will be removed soon after some spec is merged. 13 | 14 | The latest spec template is found at ``specs/template.rst`` 15 | in the ``tacker-specs`` repository. 16 | 17 | Problem description 18 | =================== 19 | 20 | Sphinx toctree complains if no file exists in a directory 21 | specified in toctree glob. 22 | 23 | Use Cases 24 | --------- 25 | 26 | None 27 | 28 | Proposed change 29 | =============== 30 | 31 | Add this file. Please remove later when the another spec is approved. 32 | 33 | Alternatives 34 | ------------ 35 | 36 | None 37 | 38 | Data model impact 39 | ----------------- 40 | 41 | None 42 | 43 | REST API impact 44 | --------------- 45 | 46 | None 47 | 48 | Security impact 49 | --------------- 50 | 51 | None 52 | 53 | Notifications impact 54 | -------------------- 55 | 56 | None 57 | 58 | Other end user impact 59 | --------------------- 60 | 61 | None 62 | 63 | Performance Impact 64 | ------------------ 65 | 66 | None 67 | 68 | Other deployer impact 69 | --------------------- 70 | 71 | None 72 | 73 | Developer impact 74 | ---------------- 75 | 76 | None 77 | 78 | Upgrade impact 79 | -------------- 80 | 81 | None 82 | 83 | 84 | Implementation 85 | ============== 86 | 87 | Assignee(s) 88 | ----------- 89 | 90 | None 91 | 92 | Work Items 93 | ---------- 94 | 95 | None 96 | 97 | 98 | Dependencies 99 | ============ 100 | 101 | None 102 | 103 | 104 | Testing 105 | ======= 106 | 107 | None 108 | 109 | 110 | Documentation Impact 111 | ==================== 112 | 113 | None 114 | 115 | References 116 | ========== 117 | 118 | None 119 | 120 | 121 | History 122 | ======= 123 | 124 | None 125 | -------------------------------------------------------------------------------- /specs/2025.1/index.rst: -------------------------------------------------------------------------------- 1 | ============================ 2 | Tacker 2025.1 Specifications 3 | ============================ 4 | 5 | .. toctree:: 6 | :glob: 7 | :maxdepth: 1 8 | 9 | reduce-fts/* 10 | * 11 | -------------------------------------------------------------------------------- /specs/2025.1/placeholder.rst: -------------------------------------------------------------------------------- 1 | .. 2 | This work is licensed under a Creative Commons Attribution 3.0 Unported 3 | License. 4 | 5 | http://creativecommons.org/licenses/by/3.0/legalcode 6 | 7 | ================== 8 | (Placeholder Spec) 9 | ================== 10 | 11 | This file is just a placeholder for the specs directory. 12 | It will be removed soon after some spec is merged. 13 | 14 | The latest spec template is found at ``specs/template.rst`` 15 | in the ``tacker-specs`` repository. 16 | 17 | Problem description 18 | =================== 19 | 20 | Sphinx toctree complains if no file exists in a directory 21 | specified in toctree glob. 22 | 23 | Use Cases 24 | --------- 25 | 26 | None 27 | 28 | Proposed change 29 | =============== 30 | 31 | Add this file. Please remove later when the another spec is approved. 32 | 33 | Alternatives 34 | ------------ 35 | 36 | None 37 | 38 | Data model impact 39 | ----------------- 40 | 41 | None 42 | 43 | REST API impact 44 | --------------- 45 | 46 | None 47 | 48 | Security impact 49 | --------------- 50 | 51 | None 52 | 53 | Notifications impact 54 | -------------------- 55 | 56 | None 57 | 58 | Other end user impact 59 | --------------------- 60 | 61 | None 62 | 63 | Performance Impact 64 | ------------------ 65 | 66 | None 67 | 68 | Other deployer impact 69 | --------------------- 70 | 71 | None 72 | 73 | Developer impact 74 | ---------------- 75 | 76 | None 77 | 78 | Upgrade impact 79 | -------------- 80 | 81 | None 82 | 83 | 84 | Implementation 85 | ============== 86 | 87 | Assignee(s) 88 | ----------- 89 | 90 | None 91 | 92 | Work Items 93 | ---------- 94 | 95 | None 96 | 97 | 98 | Dependencies 99 | ============ 100 | 101 | None 102 | 103 | 104 | Testing 105 | ======= 106 | 107 | None 108 | 109 | 110 | Documentation Impact 111 | ==================== 112 | 113 | None 114 | 115 | References 116 | ========== 117 | 118 | None 119 | 120 | 121 | History 122 | ======= 123 | 124 | None 125 | -------------------------------------------------------------------------------- /specs/liberty/index.rst: -------------------------------------------------------------------------------- 1 | ============================= 2 | Tacker Liberty Specifications 3 | ============================= 4 | 5 | .. toctree:: 6 | :glob: 7 | :maxdepth: 1 8 | 9 | * 10 | -------------------------------------------------------------------------------- /specs/mitaka/index.rst: -------------------------------------------------------------------------------- 1 | ============================ 2 | Tacker Mitaka Specifications 3 | ============================ 4 | 5 | .. toctree:: 6 | :glob: 7 | :maxdepth: 1 8 | 9 | * 10 | -------------------------------------------------------------------------------- /specs/newton/index.rst: -------------------------------------------------------------------------------- 1 | ============================ 2 | Tacker Newton Specifications 3 | ============================ 4 | 5 | .. toctree:: 6 | :glob: 7 | :maxdepth: 1 8 | 9 | * 10 | -------------------------------------------------------------------------------- /specs/ocata/index.rst: -------------------------------------------------------------------------------- 1 | =========================== 2 | Tacker Ocata Specifications 3 | =========================== 4 | 5 | .. toctree:: 6 | :glob: 7 | :maxdepth: 1 8 | 9 | * 10 | -------------------------------------------------------------------------------- /specs/pike/index.rst: -------------------------------------------------------------------------------- 1 | ========================== 2 | Tacker Pike Specifications 3 | ========================== 4 | 5 | .. toctree:: 6 | :glob: 7 | :maxdepth: 1 8 | 9 | * 10 | -------------------------------------------------------------------------------- /specs/pike/mistral_vim_monitor/01.diag: -------------------------------------------------------------------------------- 1 | 2 | seqdiag { 3 | user -> nfvoplugin [label = "register_vim"]; 4 | nfvoplugin -> nfvoplugin [label = "generate workflow with auto generated action id"]; 5 | nfvoplugin -> nfvoplugin [label = "update vim with monitor action id"]; 6 | nfvoplugin -> mistral [label = "run the workflow"]; 7 | mistral_vim_monitor_action -> conductor [label = "update_vim"] 8 | } 9 | -------------------------------------------------------------------------------- /specs/pike/mistral_vim_monitor/01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstack/tacker-specs/869bac725210ac416da6fa830fbd5fb8a6192c3f/specs/pike/mistral_vim_monitor/01.png -------------------------------------------------------------------------------- /specs/pike/mistral_vim_monitor/02.diag: -------------------------------------------------------------------------------- 1 | 2 | seqdiag { 3 | user -> nfvoplugin [label = "de_register_vim"]; 4 | nfvoplugin -> nfvoplugin [label = "remove monitor workflow"]; 5 | nfvoplugin -> nfvoplugin [label = "remove vim from db"]; 6 | mistral_vim_monitor_action -> conductor [label = "update_vim"]; 7 | mistral_vim_monitor_action <-- conductor [label = "replies with bad_action"]; 8 | mistral_vim_monitor_action -> mistral_vim_monitor_action [label = "exit"]; 9 | } 10 | -------------------------------------------------------------------------------- /specs/pike/mistral_vim_monitor/02.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstack/tacker-specs/869bac725210ac416da6fa830fbd5fb8a6192c3f/specs/pike/mistral_vim_monitor/02.png -------------------------------------------------------------------------------- /specs/pike/mistral_vim_monitor/03.diag: -------------------------------------------------------------------------------- 1 | 2 | seqdiag { 3 | user -> nfvoplugin [label = "update_vim"]; 4 | nfvoplugin -> nfvoplugin [label = "remove old monitor workflow"]; 5 | nfvoplugin -> nfvoplugin [label = "generate workflow with auto generated action uuid"]; 6 | nfvoplugin -> nfvoplugin [label = "update vim with monitor action uuid"]; 7 | nfvoplugin -> mistral [label = "run the workflow"]; 8 | new_mistral_vim_monitor_action -> conductor [label = "update_vim"] 9 | new_mistral_vim_monitor_action <-- conductor 10 | old_mistral_vim_monitor_action -> conductor [label = "update_vim"] 11 | old_mistral_vim_monitor_action <-- conductor [label = "replies with bad_action"]; 12 | old_mistral_vim_monitor_action -> old_mistral_vim_monitor_action [label = "exit"]; 13 | } 14 | -------------------------------------------------------------------------------- /specs/pike/mistral_vim_monitor/03.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstack/tacker-specs/869bac725210ac416da6fa830fbd5fb8a6192c3f/specs/pike/mistral_vim_monitor/03.png -------------------------------------------------------------------------------- /specs/pike/mistral_vnf_monitor_policies/01.diag: -------------------------------------------------------------------------------- 1 | 2 | seqdiag { 3 | user -> vnfmplugin [label = "create_vnf with monitor_policies property"]; 4 | vnfmplugin -> vnfmplugin [label = "generate workflow with auto generated action id"]; 5 | vnfmplugin -> vnfmplugin [label = "update vnf with monitor action id"]; 6 | vnfmplugin -> mistral [label = "run the workflow to start vnf_policy_monitor"]; 7 | } 8 | -------------------------------------------------------------------------------- /specs/pike/mistral_vnf_monitor_policies/01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstack/tacker-specs/869bac725210ac416da6fa830fbd5fb8a6192c3f/specs/pike/mistral_vnf_monitor_policies/01.png -------------------------------------------------------------------------------- /specs/pike/mistral_vnf_monitor_policies/02.diag: -------------------------------------------------------------------------------- 1 | 2 | seqdiag { 3 | === loop according to monitor policy === 4 | vnf_policy_monitor -> conductor [label = "execute_policy_action"] 5 | conductor -> policy_action [label = "execute_action" ] 6 | } 7 | -------------------------------------------------------------------------------- /specs/pike/mistral_vnf_monitor_policies/02.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstack/tacker-specs/869bac725210ac416da6fa830fbd5fb8a6192c3f/specs/pike/mistral_vnf_monitor_policies/02.png -------------------------------------------------------------------------------- /specs/pike/mistral_vnf_monitor_policies/03.diag: -------------------------------------------------------------------------------- 1 | 2 | seqdiag { 3 | conductor -> vnf_policy_monitor [label = "update action job via RPC"] 4 | } 5 | -------------------------------------------------------------------------------- /specs/pike/mistral_vnf_monitor_policies/03.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstack/tacker-specs/869bac725210ac416da6fa830fbd5fb8a6192c3f/specs/pike/mistral_vnf_monitor_policies/03.png -------------------------------------------------------------------------------- /specs/pike/mistral_vnf_monitor_policies/04.diag: -------------------------------------------------------------------------------- 1 | 2 | seqdiag { 3 | user -> vnfmplugin [label = "delete_vnf with monitor_policies property"]; 4 | vnfmplugin -> vnfmplugin [label = "get workflow with action id for the VNF"]; 5 | vnfmplugin -> mistral [label = "delete workflow and its execution"]; 6 | vnfmplugin -> vnf_policy_monitor [label = "kill action job via RPC"] 7 | } 8 | -------------------------------------------------------------------------------- /specs/pike/mistral_vnf_monitor_policies/04.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstack/tacker-specs/869bac725210ac416da6fa830fbd5fb8a6192c3f/specs/pike/mistral_vnf_monitor_policies/04.png -------------------------------------------------------------------------------- /specs/pike/mistral_vnf_monitor_policies/05.diag: -------------------------------------------------------------------------------- 1 | 2 | seqdiag { 3 | user -> vnfmplugin [label = "scale_vnf with monitor_policies property"]; 4 | vnfmplugin -> vnfmplugin [label = "get workflow with action id for the VNF"]; 5 | vnfmplugin -> vnf_policy_monitor [label = "update action job via RPC"] 6 | } 7 | -------------------------------------------------------------------------------- /specs/pike/mistral_vnf_monitor_policies/05.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstack/tacker-specs/869bac725210ac416da6fa830fbd5fb8a6192c3f/specs/pike/mistral_vnf_monitor_policies/05.png -------------------------------------------------------------------------------- /specs/queens/index.rst: -------------------------------------------------------------------------------- 1 | ============================ 2 | Tacker Queens Specifications 3 | ============================ 4 | 5 | .. toctree:: 6 | :glob: 7 | :maxdepth: 1 8 | 9 | * 10 | -------------------------------------------------------------------------------- /specs/rocky/index.rst: -------------------------------------------------------------------------------- 1 | =========================== 2 | Tacker Rocky Specifications 3 | =========================== 4 | 5 | .. toctree:: 6 | :glob: 7 | :maxdepth: 1 8 | 9 | * 10 | -------------------------------------------------------------------------------- /specs/stein/index.rst: -------------------------------------------------------------------------------- 1 | =========================== 2 | Tacker Stein Specifications 3 | =========================== 4 | 5 | .. toctree:: 6 | :glob: 7 | :maxdepth: 1 8 | 9 | * 10 | -------------------------------------------------------------------------------- /specs/train/index.rst: -------------------------------------------------------------------------------- 1 | =========================== 2 | Tacker Train Specifications 3 | =========================== 4 | 5 | .. toctree:: 6 | :glob: 7 | :maxdepth: 1 8 | 9 | * 10 | -------------------------------------------------------------------------------- /specs/train/vnf_package_support/01.diag: -------------------------------------------------------------------------------- 1 | 2 | seqdiag { 3 | Consumer -> NFVO [label = "1. PUT .../vnf_packages/{vnfPkgId} package_content (VNF Package file)"]; 4 | NFVO -> tosca-parser [label = "Parse the CSAR zip file"] 5 | NFVO <- tosca-parser [label = "Parsed CSAR successfully"] 6 | Consumer <- NFVO [label = "2. 202 Accepted"]; 7 | NFVO -> NFVO [label = "NFVO continues processing VNF package"] 8 | NFVO -> NFVO [label = "Set VNF package 9 | onboardingState=ONBOARDED, 10 | operationalState=ENABLED and 11 | usageState=NOT_IN_USE"] 12 | } 13 | -------------------------------------------------------------------------------- /specs/train/vnf_package_support/01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstack/tacker-specs/869bac725210ac416da6fa830fbd5fb8a6192c3f/specs/train/vnf_package_support/01.png -------------------------------------------------------------------------------- /specs/ussuri/etsi-nfv-sol-rest-api-for-VNF-deployment/01.diag: -------------------------------------------------------------------------------- 1 | 2 | seqdiag { 3 | Consumer -> VNFM [label = "1. POST .../vnf_instances"]; 4 | VNFM -->> VNFM [label = "2. Create VNF instance resource"]; 5 | Consumer <- VNFM [label = "3. 201 Created"]; 6 | } 7 | -------------------------------------------------------------------------------- /specs/ussuri/etsi-nfv-sol-rest-api-for-VNF-deployment/01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstack/tacker-specs/869bac725210ac416da6fa830fbd5fb8a6192c3f/specs/ussuri/etsi-nfv-sol-rest-api-for-VNF-deployment/01.png -------------------------------------------------------------------------------- /specs/ussuri/etsi-nfv-sol-rest-api-for-VNF-deployment/02.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstack/tacker-specs/869bac725210ac416da6fa830fbd5fb8a6192c3f/specs/ussuri/etsi-nfv-sol-rest-api-for-VNF-deployment/02.png -------------------------------------------------------------------------------- /specs/ussuri/etsi-nfv-sol-rest-api-for-VNF-deployment/03.diag: -------------------------------------------------------------------------------- 1 | 2 | seqdiag { 3 | Client -> WSGIMiddleware [label = "1. HEAL VNF"]; 4 | WSGIMiddleware -->> WSGIMiddleware [label = "request validation"]; 5 | Client <-- WSGIMiddleware [label = "202 Accepted"]; 6 | WSGIMiddleware -> TackerConductor [label = "Trigger asynchronous task"]; 7 | TackerConductor --> VnfLcmDriver [label = "heal_vnf(vnf_instance, heal_vnf_request)"]; 8 | VnfLcmDriver --> OpenstackDriver [label = "heal_vnf(vnf_instance, vim_connection_info,heal_vnf_request)"]; 9 | OpenstackDriver --> Heat [label = "2. Mark resource unhealthy"]; 10 | OpenstackDriver <-- Heat; 11 | OpenstackDriver --> Heat [label = "3. update stack"]; 12 | OpenstackDriver <-- Heat [label = "stack updated"]; 13 | VnfLcmDriver <-- OpenstackDriver; 14 | VnfLcmDriver --> OpenstackDriver [label = "post_heal_vnf(vnf_instance, vim_connection_info,heal_vnf_request)"]; 15 | OpenstackDriver --> Heat [label = "4. get updated resource data"]; 16 | OpenstackDriver <-- Heat [label = "resources"]; 17 | VnfLcmDriver <-- OpenstackDriver; 18 | VnfLcmDriver -->> VnfLcmDriver [label = "5. update DB"]; 19 | TackerConductor <-- VnfLcmDriver [label = "request successfully completed"]; 20 | 21 | } 22 | -------------------------------------------------------------------------------- /specs/ussuri/etsi-nfv-sol-rest-api-for-VNF-deployment/03.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstack/tacker-specs/869bac725210ac416da6fa830fbd5fb8a6192c3f/specs/ussuri/etsi-nfv-sol-rest-api-for-VNF-deployment/03.png -------------------------------------------------------------------------------- /specs/ussuri/etsi-nfv-sol-rest-api-for-VNF-deployment/04.diag: -------------------------------------------------------------------------------- 1 | 2 | seqdiag { 3 | Client -> WSGIMiddleware [label = "Terminate VNF"]; 4 | WSGIMiddleware -->> WSGIMiddleware [label = "request validation"]; 5 | Client <-- WSGIMiddleware [label = "202 Accepted"]; 6 | WSGIMiddleware -> TackerConductor [label = "Trigger asynchronous task"]; 7 | TackerConductor --> VnfLcmDriver [label = "terminate_vnf(vnf_instance, terminate_vnf_request)"]; 8 | VnfLcmDriver --> OpenstackDriver [label = "terminate_vnf(vnf_instance, terminate_vnf_request, resource_list)"]; 9 | OpenstackDriver --> Heat [label = "1. delete stack"]; 10 | OpenstackDriver <-- Heat [label = "stack deleted"]; 11 | OpenstackDriver --> Glance [label = "2. delete images"] 12 | OpenstackDriver <-- Glance [label = "images deleted"] 13 | VnfLcmDriver <-- OpenstackDriver [label = "resources removed"]; 14 | TackerConductor <-- VnfLcmDriver [label = "request successfully completed"]; 15 | TackerConductor -->> TackerConductor [label = "update DB"]; 16 | } 17 | -------------------------------------------------------------------------------- /specs/ussuri/etsi-nfv-sol-rest-api-for-VNF-deployment/04.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstack/tacker-specs/869bac725210ac416da6fa830fbd5fb8a6192c3f/specs/ussuri/etsi-nfv-sol-rest-api-for-VNF-deployment/04.png -------------------------------------------------------------------------------- /specs/ussuri/etsi-nfv-sol-rest-api-for-VNF-deployment/05.diag: -------------------------------------------------------------------------------- 1 | 2 | seqdiag { 3 | Consumer -> VNFM [label = "1.DELETE .../vnf_instances/{vnfInstanceId}"]; 4 | VNFM -->> VNFM [label = "2. Delete VNF instance resource"]; 5 | Consumer <- VNFM [label = "3. 204 No content"]; 6 | } 7 | -------------------------------------------------------------------------------- /specs/ussuri/etsi-nfv-sol-rest-api-for-VNF-deployment/05.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstack/tacker-specs/869bac725210ac416da6fa830fbd5fb8a6192c3f/specs/ussuri/etsi-nfv-sol-rest-api-for-VNF-deployment/05.png -------------------------------------------------------------------------------- /specs/ussuri/index.rst: -------------------------------------------------------------------------------- 1 | ============================ 2 | Tacker Ussuri Specifications 3 | ============================ 4 | 5 | .. toctree:: 6 | :glob: 7 | :maxdepth: 1 8 | 9 | * 10 | -------------------------------------------------------------------------------- /specs/ussuri/lcm-operation-with-lcm-operation-user-data/01.diag: -------------------------------------------------------------------------------- 1 | 2 | seqdiag { 3 | Client -> VNFMplugin [label = "Request InstantiateVNF"]; 4 | VNFMplugin -> VNFMplugin [label = "Decide instantiation method"]; 5 | VNFMplugin -> NFVOplugin [label = "Get VNF package"]; 6 | VNFMplugin <<- NFVOplugin [label = "VNFD, baseHOT, 7 | LCM operation user data"]; 8 | VNFMplugin -> Glance [label = "Create image"]; 9 | VNFMplugin <<- Glance [label = "ImageId"]; 10 | VNFMplugin -> LCMOperationUserData [label = "Call LCM operation user data"]; 11 | VNFMplugin <<- LCMOperationUserData [label = "key-value parameters"]; 12 | VNFMplugin -> Heat [label = "Create stack with key-value 13 | parameters and baseHOT"]; 14 | VNFMplugin <<- Heat; 15 | Client <<- VNFMplugin; 16 | } 17 | -------------------------------------------------------------------------------- /specs/ussuri/lcm-operation-with-lcm-operation-user-data/01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstack/tacker-specs/869bac725210ac416da6fa830fbd5fb8a6192c3f/specs/ussuri/lcm-operation-with-lcm-operation-user-data/01.png -------------------------------------------------------------------------------- /specs/victoria/container-network-function/01.diag: -------------------------------------------------------------------------------- 1 | 2 | seqdiag { 3 | node_width = 100; 4 | edge_length = 115; 5 | 6 | Client -> WSGIMiddleware [label = 7 | "POST /vnflcm/v1/vnf_instances"]; 8 | Client <-- WSGIMiddleware [label = "200 Success"]; 9 | Client -> WSGIMiddleware [label = 10 | "POST /vnflcm/v1/vnf_instances/{id}/instantiate"]; 11 | WSGIMiddleware -->> WSGIMiddleware [label = "request validation"]; 12 | Client <-- WSGIMiddleware [label = "202 Accepted"]; 13 | 14 | NFVOPlugin; 15 | WSGIMiddleware -> VnfLcmDriver [label = "Trigger asynchronous task "]; 16 | VnfLcmDriver --> NFVOPlugin [label = "get VNF Package"]; 17 | VnfLcmDriver <-- NFVOPlugin; 18 | VnfLcmDriver -->> VnfLcmDriver [label = "create VIM connection object"]; 19 | 20 | VnfLcmDriver -> KubernetesDriver [label = "pre_instantiation_vnf()"]; 21 | KubernetesDriver -->> KubernetesDriver [label = "No Action"]; 22 | VnfLcmDriver <-- KubernetesDriver; 23 | 24 | VnfLcmDriver --> KubernetesDriver [label = 25 | "instantiate_vnf()"]; 26 | KubernetesDriver --> KubernetesDriver [label = "1 create()"] 27 | VnfLcmDriver <-- KubernetesDriver [label = "instance_id"]; 28 | VnfLcmDriver --> KubernetesDriver [label ="create_wait()"]; 29 | KubernetesDriver -> KubernetesPythonClient [label = 30 | "check deployment status"]; 31 | KubernetesPythonClient -> Kubernetes [label = "get deployment status"]; 32 | KubernetesPythonClient <-- Kubernetes [label = "status"]; 33 | KubernetesDriver <-- KubernetesPythonClient; 34 | VnfLcmDriver <-- KubernetesDriver; 35 | 36 | VnfLcmDriver -> KubernetesDriver [label = "post_vnf_instantiation()"]; 37 | KubernetesDriver -->> KubernetesDriver[label = 38 | "2. Update DB for VNFC resources[TBD]"]; 39 | VnfLcmDriver <-- KubernetesDriver; 40 | } 41 | -------------------------------------------------------------------------------- /specs/victoria/container-network-function/01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstack/tacker-specs/869bac725210ac416da6fa830fbd5fb8a6192c3f/specs/victoria/container-network-function/01.png -------------------------------------------------------------------------------- /specs/victoria/container-network-function/02.diag: -------------------------------------------------------------------------------- 1 | 2 | seqdiag { 3 | node_width = 100; 4 | edge_length = 115; 5 | 6 | KubernetesDriver --> KubernetesUtil [label = 7 | "1. cnf_to_kube_objects(\ncnf_def_dict)"]; 8 | KubernetesDriver <-- KubernetesUtil [label = 9 | "Kubernetes model\nobjects"]; 10 | KubernetesDriver --> KubernetesPythonClient [label = 11 | "2. call client APIs for each\nmodel object"]; 12 | KubernetesPythonClient --> Kubernetes [label = 13 | "deploy kubernetes\nobjects"]; 14 | KubernetesPythonClient <-- Kubernetes [label = "deployed objects info"]; 15 | KubernetesDriver <-- KubernetesPythonClient [label = 16 | "3. deployed objects info"]; 17 | KubernetesDriver -->> KubernetesDriver [label = "prepare\ninstance id"]; 18 | } 19 | -------------------------------------------------------------------------------- /specs/victoria/container-network-function/02.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstack/tacker-specs/869bac725210ac416da6fa830fbd5fb8a6192c3f/specs/victoria/container-network-function/02.png -------------------------------------------------------------------------------- /specs/victoria/container-network-function/03.diag: -------------------------------------------------------------------------------- 1 | 2 | seqdiag { 3 | node_width = 100; 4 | edge_length = 115; 5 | 6 | Client -> WSGIMiddleware [label = "Terminate VNF"]; 7 | WSGIMiddleware -->> WSGIMiddleware [label = "request validation"]; 8 | Client <-- WSGIMiddleware [label = "202 Accepted"]; 9 | WSGIMiddleware -> TackerConductor [label = "Trigger asynchronous task"]; 10 | TackerConductor --> VnfLcmDriver 11 | [label = "terminate_vnf(vnf_instance, terminate_vnf_request)"]; 12 | VnfLcmDriver --> KubernetesDriver 13 | [label = "delete(context, instance_id, access_info)"]; 14 | KubernetesDriver -->> KubernetesDriver 15 | [label = "get deployment infromation"]; 16 | KubernetesDriver --> KubernetesPythonClient [label = "delete deployment"]; 17 | KubernetesPythonClient --> Kubernetes [label = "delete deployment"]; 18 | KubernetesPythonClient <-- Kubernetes [label = "deployment deleted"]; 19 | KubernetesDriver <-- KubernetesPythonClient; 20 | VnfLcmDriver <-- KubernetesDriver; 21 | VnfLcmDriver --> KubernetesDriver 22 | [label = "delete_wait(context, instance_id, access_info)"]; 23 | KubernetesDriver --> KubernetesPythonClient 24 | [label = "get deployment status"]; 25 | KubernetesPythonClient --> Kubernetes [label = "get deployment status"]; 26 | KubernetesPythonClient <-- Kubernetes [label = "deployment status"]; 27 | KubernetesDriver <-- KubernetesPythonClient 28 | [label = "deployment status(deleted)"]; 29 | VnfLcmDriver <-- KubernetesDriver [label = "resources removed"]; 30 | TackerConductor <-- VnfLcmDriver 31 | [label = "request successfully completed"]; 32 | TackerConductor -->> TackerConductor [label = "update DB"]; 33 | } 34 | -------------------------------------------------------------------------------- /specs/victoria/container-network-function/03.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstack/tacker-specs/869bac725210ac416da6fa830fbd5fb8a6192c3f/specs/victoria/container-network-function/03.png -------------------------------------------------------------------------------- /specs/victoria/enhancement_enhance-vnf-lcm-api-support/01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstack/tacker-specs/869bac725210ac416da6fa830fbd5fb8a6192c3f/specs/victoria/enhancement_enhance-vnf-lcm-api-support/01.png -------------------------------------------------------------------------------- /specs/victoria/enhancement_enhance-vnf-lcm-api-support/02.diag: -------------------------------------------------------------------------------- 1 | 2 | seqdiag { 3 | Client -> "tacker-server" [label = " GET /vnf_instantces/{vnfInstanceId}"]; 4 | Client <-- "tacker-server" [label = " Resonse 200 OK (vnfPkgId)"]; 5 | } 6 | -------------------------------------------------------------------------------- /specs/victoria/enhancement_enhance-vnf-lcm-api-support/02.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstack/tacker-specs/869bac725210ac416da6fa830fbd5fb8a6192c3f/specs/victoria/enhancement_enhance-vnf-lcm-api-support/02.png -------------------------------------------------------------------------------- /specs/victoria/enhancement_enhance-vnf-lcm-api-support/03.diag: -------------------------------------------------------------------------------- 1 | 2 | seqdiag { 3 | Client -> "tacker-server" [label = " GET /vnf_instantces"]; 4 | Client <-- "tacker-server" [label = " Resonse 200 OK (vnfPkgId)"]; 5 | } 6 | -------------------------------------------------------------------------------- /specs/victoria/enhancement_enhance-vnf-lcm-api-support/03.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstack/tacker-specs/869bac725210ac416da6fa830fbd5fb8a6192c3f/specs/victoria/enhancement_enhance-vnf-lcm-api-support/03.png -------------------------------------------------------------------------------- /specs/victoria/enhancement_enhance-vnf-lcm-api-support/04.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstack/tacker-specs/869bac725210ac416da6fa830fbd5fb8a6192c3f/specs/victoria/enhancement_enhance-vnf-lcm-api-support/04.png -------------------------------------------------------------------------------- /specs/victoria/index.rst: -------------------------------------------------------------------------------- 1 | ============================== 2 | Tacker Victoria Specifications 3 | ============================== 4 | 5 | .. toctree:: 6 | :glob: 7 | :maxdepth: 1 8 | 9 | * 10 | -------------------------------------------------------------------------------- /specs/victoria/support-etsi-nfv-based-errorhandling/01.diag: -------------------------------------------------------------------------------- 1 | 2 | seqdiag { 3 | node_width = 105; 4 | edge_length = 130; 5 | 6 | Client -> "tacker-server" 7 | [label = "POST /vnf_lcm_op_occs/{vnfLcmOpOccId}/rollback"]; 8 | Client <-- "tacker-server" [label = "Response 202 Accepted"]; 9 | "tacker-server" -> "tacker-conductor" 10 | [label = "trriger asynchronous task"]; 11 | "tacker-conductor" ->> "tacker-conductor" 12 | [label = "execute notification process"]; 13 | Client <- "tacker-conductor" 14 | [label = "POST {callback URI} (ROLLING_BACK)"]; 15 | Client --> "tacker-conductor" [label = "Response: 204 No Content"]; 16 | "tacker-conductor" -> "VnfLcmDriver" [label = "execute VnfLcmDriver"]; 17 | "VnfLcmDriver" -> "openstackDriver" [label = "execute openstackDriver"]; 18 | "openstackDriver" -> "heat" [label = "delete stack"]; 19 | "openstackDriver" <-- "heat" [label = ""]; 20 | "VnfLcmDriver" <-- "openstackDriver" [label = ""]; 21 | "tacker-conductor" <-- "VnfLcmDriver" [label = ""]; 22 | "tacker-conductor" ->> "tacker-conductor" 23 | [label = "execute notification process"]; 24 | Client <- "tacker-conductor" 25 | [label = "POST {callback URI} (ROLLED_BACK)"]; 26 | Client --> "tacker-conductor" [label = "Response: 204 No Content"]; 27 | } 28 | -------------------------------------------------------------------------------- /specs/victoria/support-etsi-nfv-based-errorhandling/01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstack/tacker-specs/869bac725210ac416da6fa830fbd5fb8a6192c3f/specs/victoria/support-etsi-nfv-based-errorhandling/01.png -------------------------------------------------------------------------------- /specs/victoria/support-etsi-nfv-based-errorhandling/02.diag: -------------------------------------------------------------------------------- 1 | 2 | seqdiag { 3 | node_width = 72; 4 | edge_length = 100; 5 | 6 | Client -> "tacker-server" 7 | [label = "POST /vnf_lcm_op_occs/{vnfLcmOpOccId}/rollback"]; 8 | Client <-- "tacker-server" [label = "Response 202 Accepted"]; 9 | "tacker-server" -> "tacker-conductor" 10 | [label = "trriger asynchronous task"]; 11 | "tacker-conductor" ->> "tacker-conductor" 12 | [label = "execute notification process"]; 13 | Client <- "tacker-conductor" 14 | [label = "POST {callback URI} (ROLLING_BACK)"]; 15 | Client --> "tacker-conductor" [label = "Response: 204 No Content"]; 16 | "tacker-conductor" -> "MgmtDriver" [label = "execute MgmtDriver"]; 17 | "MgmtDriver" -> vnf [label = "VNF Configuration"]; 18 | "MgmtDriver" <-- vnf [label = ""]; 19 | "tacker-conductor" <-- "MgmtDriver" [label = ""]; 20 | "tacker-conductor" -> "VnfLcmDriver" [label = "execute VnfLcmDriver"]; 21 | "VnfLcmDriver" -> "openstackDriver" [label = "execute openstackDriver"]; 22 | "openstackDriver" -> "heat" [label = "resourse signal"]; 23 | "openstackDriver" -> "heat" [label = "update stack"]; 24 | "openstackDriver" <-- "heat" [label = ""]; 25 | "VnfLcmDriver" <-- "openstackDriver" [label = ""]; 26 | "tacker-conductor" <-- "VnfLcmDriver" [label = ""]; 27 | "tacker-conductor" ->> "tacker-conductor" 28 | [label = "execute notification process"]; 29 | Client <- "tacker-conductor" 30 | [label = "POST {callback URI} (ROLLED_BACK)"]; 31 | Client --> "tacker-conductor" [label = "Response: 204 No Content"]; 32 | } 33 | -------------------------------------------------------------------------------- /specs/victoria/support-etsi-nfv-based-errorhandling/02.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstack/tacker-specs/869bac725210ac416da6fa830fbd5fb8a6192c3f/specs/victoria/support-etsi-nfv-based-errorhandling/02.png -------------------------------------------------------------------------------- /specs/victoria/support-notification-api-based-on-etsi-nfv-sol/01.diag: -------------------------------------------------------------------------------- 1 | 2 | seqdiag { 3 | Client -> "tacker-server" [label = " POST /subscriptions"]; 4 | "tacker-server" -> "tacker-server" 5 | [label = " generate subscription_id (uuid)"]; 6 | Client <-- "tacker-server" [label = " Resonse 201 Created"]; 7 | } 8 | -------------------------------------------------------------------------------- /specs/victoria/support-notification-api-based-on-etsi-nfv-sol/01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstack/tacker-specs/869bac725210ac416da6fa830fbd5fb8a6192c3f/specs/victoria/support-notification-api-based-on-etsi-nfv-sol/01.png -------------------------------------------------------------------------------- /specs/victoria/support-notification-api-based-on-etsi-nfv-sol/02.diag: -------------------------------------------------------------------------------- 1 | 2 | seqdiag { 3 | Client -> "tacker-server" 4 | [label = " DELETE /subscriptions/{subscriptionId}"]; 5 | Client <-- "tacker-server" [label = " Resonse 204 No Content"]; 6 | } 7 | -------------------------------------------------------------------------------- /specs/victoria/support-notification-api-based-on-etsi-nfv-sol/02.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstack/tacker-specs/869bac725210ac416da6fa830fbd5fb8a6192c3f/specs/victoria/support-notification-api-based-on-etsi-nfv-sol/02.png -------------------------------------------------------------------------------- /specs/victoria/support-notification-api-based-on-etsi-nfv-sol/03.diag: -------------------------------------------------------------------------------- 1 | 2 | seqdiag { 3 | Client -> "tacker-server" [label = " GET /subscriptions/{subscriptionId}"]; 4 | Client <-- "tacker-server" [label = " Resonse 200 OK"]; 5 | } 6 | -------------------------------------------------------------------------------- /specs/victoria/support-notification-api-based-on-etsi-nfv-sol/03.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstack/tacker-specs/869bac725210ac416da6fa830fbd5fb8a6192c3f/specs/victoria/support-notification-api-based-on-etsi-nfv-sol/03.png -------------------------------------------------------------------------------- /specs/victoria/support-notification-api-based-on-etsi-nfv-sol/04.diag: -------------------------------------------------------------------------------- 1 | 2 | seqdiag { 3 | Client -> "tacker-server" [label = " GET /subscriptions"]; 4 | "tacker-server" -> "tacker-server" [label = "request validation"]; 5 | Client <-- "tacker-server" [label = " Resonse 200 OK"]; 6 | } 7 | -------------------------------------------------------------------------------- /specs/victoria/support-notification-api-based-on-etsi-nfv-sol/04.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstack/tacker-specs/869bac725210ac416da6fa830fbd5fb8a6192c3f/specs/victoria/support-notification-api-based-on-etsi-nfv-sol/04.png -------------------------------------------------------------------------------- /specs/victoria/support-notification-api-based-on-etsi-nfv-sol/05.diag: -------------------------------------------------------------------------------- 1 | 2 | seqdiag { 3 | Client -> "tacker-server" [label = "LCM Operation Request"]; 4 | Client <-- "tacker-server" [label = "Response 202 Accepted"]; 5 | "tacker-server" ->> "tacker-conductor" 6 | [label = "execute notification process"]; 7 | Client <- "tacker-conductor" [label = "POST {callback URI} (STARTING)"]; 8 | Client --> "tacker-conductor" [label = "Response: 204 No Content"]; 9 | "tacker-server" -> "tacker-conductor" 10 | [label = "trriger asynchronous task"]; 11 | NFVO <- "tacker-conductor" [label = "POST /grants"]; 12 | NFVO --> "tacker-conductor" [label = "201 Created"]; 13 | "tacker-conductor" ->> "tacker-conductor" 14 | [label = "execute notification process"]; 15 | Client <- "tacker-conductor" [label = "POST {callback URI} (PROCESSING)"]; 16 | Client --> "tacker-conductor" [label = "Response: 204 No Content"]; 17 | "tacker-conductor" -> "VnfLcmDriver" [label = "execute MgmtDriver"]; 18 | "tacker-conductor" <-- "VnfLcmDriver" [label = ""]; 19 | "tacker-conductor" -> "VnfLcmDriver" [label = "execute VnfLcmDriver"]; 20 | "tacker-conductor" <-- "VnfLcmDriver" [label = ""]; 21 | "tacker-conductor" ->> "tacker-conductor" 22 | [label = "execute notification process"]; 23 | Client <- "tacker-conductor" [label = "POST {callback URI} (COMPLETED)"]; 24 | Client --> "tacker-conductor" [label = "Response: 204 No Content"]; 25 | } 26 | -------------------------------------------------------------------------------- /specs/victoria/support-notification-api-based-on-etsi-nfv-sol/05.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstack/tacker-specs/869bac725210ac416da6fa830fbd5fb8a6192c3f/specs/victoria/support-notification-api-based-on-etsi-nfv-sol/05.png -------------------------------------------------------------------------------- /specs/victoria/support-notification-api-based-on-etsi-nfv-sol/06.diag: -------------------------------------------------------------------------------- 1 | 2 | seqdiag { 3 | Client -> "tacker-server" [label = "LCM Operation Request"]; 4 | Client <-- "tacker-server" [label = "Response 202 Accepted"]; 5 | "tacker-server" -> "tacker-conductor" 6 | [label = "trriger asynchronous task"]; 7 | "tacker-conductor" ->> "tacker-conductor" 8 | [label = "execute notification process"]; 9 | Client <- "tacker-conductor" 10 | [label = "POST {callback URI} (PROCESSING)"]; 11 | Client --> "tacker-conductor" [label = "Response: 204 No Content"]; 12 | "tacker-conductor" -> "VnfLcmDriver" [label = "execute MgmtDriver"]; 13 | "tacker-conductor" <-- "VnfLcmDriver" [label = ""]; 14 | "tacker-conductor" -> "VnfLcmDriver" [label = "execute VnfLcmDriver"]; 15 | "tacker-conductor" <-- "VnfLcmDriver" [label = ""]; 16 | "tacker-conductor" ->> "tacker-conductor" 17 | [label = "execute notification process"]; 18 | Client <- "tacker-conductor" 19 | [label = "POST {callback URI} (COMPLETED)"]; 20 | Client --> "tacker-conductor" [label = "Response: 204 No Content"]; 21 | } 22 | -------------------------------------------------------------------------------- /specs/victoria/support-notification-api-based-on-etsi-nfv-sol/06.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstack/tacker-specs/869bac725210ac416da6fa830fbd5fb8a6192c3f/specs/victoria/support-notification-api-based-on-etsi-nfv-sol/06.png -------------------------------------------------------------------------------- /specs/victoria/support-notification-api-based-on-etsi-nfv-sol/07.diag: -------------------------------------------------------------------------------- 1 | 2 | seqdiag { 3 | node_width = 100; 4 | edge_length = 160; 5 | 6 | Client -> "tacker-server" 7 | [label = "POST /vnf_lcm_op_occs/{vnfLcmOpOccId}/rollback"]; 8 | Client <-- "tacker-server" [label = "Response 202 Accepted"]; 9 | "tacker-server" -> "tacker-conductor" 10 | [label = "trriger asynchronous task"]; 11 | "tacker-conductor" ->> "tacker-conductor" 12 | [label = "execute notification process"]; 13 | Client <- "tacker-conductor" 14 | [label = "POST {callback URI} (ROLLING_BACK)"]; 15 | Client --> "tacker-conductor" 16 | [label = "Response: 204 No Content"]; 17 | "tacker-conductor" -> "MgmtDriver" [label = "execute MgmtDriver"]; 18 | "tacker-conductor" <-- "MgmtDriver" [label = ""]; 19 | "tacker-conductor" -> "VnfLcmDriver" [label = "execute VnfLcmDriver"]; 20 | "tacker-conductor" <-- "VnfLcmDriver" [label = ""]; 21 | "tacker-conductor" ->> "tacker-conductor" 22 | [label = "execute notification process"]; 23 | Client <- "tacker-conductor" 24 | [label = "POST {callback URI} (ROLLED_BACK)"]; 25 | Client --> "tacker-conductor" 26 | [label = "Response: 204 No Content"]; 27 | } 28 | -------------------------------------------------------------------------------- /specs/victoria/support-notification-api-based-on-etsi-nfv-sol/07.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstack/tacker-specs/869bac725210ac416da6fa830fbd5fb8a6192c3f/specs/victoria/support-notification-api-based-on-etsi-nfv-sol/07.png -------------------------------------------------------------------------------- /specs/victoria/support-notification-api-based-on-etsi-nfv-sol/08.diag: -------------------------------------------------------------------------------- 1 | 2 | seqdiag { 3 | Client -> "tacker-server" [label = "POST /vnf_instances/"]; 4 | "tacker-server" ->> "tacker-server" 5 | [label = "Create VNF instance resource"]; 6 | "tacker-server" -> "tacker-conductor" 7 | [label = "execute vnf_package list process{filter}"]; 8 | NFVO <- "tacker-conductor" 9 | [label = "GET /vnf_packages/ with attribute filter(vnfdId)"]; 10 | NFVO --> "tacker-conductor" 11 | [label = "Response 200 OK with VnfPkgInfo"]; 12 | "tacker-server" <<- "tacker-conductor" [label = "(VnfPkgInfo)"]; 13 | "tacker-server" ->> "tacker-server" 14 | [label = "Update VNF instance resource(VnfPkgInfo)"]; 15 | "tacker-server" -> "tacker-conductor" 16 | [label = "execute vnf_package content process{vnfPkgId}"]; 17 | NFVO <- "tacker-conductor" 18 | [label = "GET /vnf_packages/{vnfPkgId}/package_content "]; 19 | NFVO --> "tacker-conductor" 20 | [label = "Response 200 OK with VNF package file"]; 21 | "tacker-server" <<- "tacker-conductor" 22 | [label = "(VNF package content file)"]; 23 | "tacker-server" ->> "tacker-server" 24 | [label = "Store received package file"]; 25 | Client <-- "tacker-server" [label = " Resonse 201 Created"]; 26 | "tacker-server" ->> "tacker-conductor" 27 | [label = "execute notification process"]; 28 | Client <- "tacker-conductor" [label = "POST {callback URI}"]; 29 | Client --> "tacker-conductor" [label = "Responce 204 No Content"]; 30 | } 31 | -------------------------------------------------------------------------------- /specs/victoria/support-notification-api-based-on-etsi-nfv-sol/08.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstack/tacker-specs/869bac725210ac416da6fa830fbd5fb8a6192c3f/specs/victoria/support-notification-api-based-on-etsi-nfv-sol/08.png -------------------------------------------------------------------------------- /specs/victoria/support-notification-api-based-on-etsi-nfv-sol/09.diag: -------------------------------------------------------------------------------- 1 | 2 | seqdiag { 3 | Client -> "tacker-server" [label = "DELETE /vnf_instances/{vnfInstanceId} "]; 4 | "tacker-server" ->> "tacker-server" 5 | [label = "Delete VNF instance resource"]; 6 | Client <-- "tacker-server" [label = " Resonse 204 No Content"]; 7 | "tacker-server" ->> "tacker-conductor" 8 | [label = "execute notification process"]; 9 | Client <- "tacker-conductor" [label = "POST {callback URI}"]; 10 | Client --> "tacker-conductor" [label = "Responce 204 No Content"]; 11 | } 12 | -------------------------------------------------------------------------------- /specs/victoria/support-notification-api-based-on-etsi-nfv-sol/09.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstack/tacker-specs/869bac725210ac416da6fa830fbd5fb8a6192c3f/specs/victoria/support-notification-api-based-on-etsi-nfv-sol/09.png -------------------------------------------------------------------------------- /specs/victoria/support-notification-api-based-on-etsi-nfv-sol/10.diag: -------------------------------------------------------------------------------- 1 | 2 | seqdiag { 3 | Client -> "tacker-server" [label = " GET /vnf_lcm_op_occs/{vnfLcmOpOccId}"]; 4 | Client <-- "tacker-server" [label = " Resonse 200 OK"]; 5 | } 6 | -------------------------------------------------------------------------------- /specs/victoria/support-notification-api-based-on-etsi-nfv-sol/10.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstack/tacker-specs/869bac725210ac416da6fa830fbd5fb8a6192c3f/specs/victoria/support-notification-api-based-on-etsi-nfv-sol/10.png -------------------------------------------------------------------------------- /specs/victoria/support-scale-api-based-on-etsi-nfv-sol/01.diag: -------------------------------------------------------------------------------- 1 | 2 | seqdiag { 3 | node_width = 80; 4 | edge_length = 100; 5 | 6 | Client -> "tacker-server" 7 | [label = "POST /vnf_instances/{vnfInstanceId}/scale"]; 8 | Client <-- "tacker-server" [label = "Response 202 Accepted"]; 9 | "tacker-server" ->> "tacker-conductor" 10 | [label = "execute notification process"]; 11 | Client <- "tacker-conductor" [label = "POST {callback URI} (STARTING)"]; 12 | Client --> "tacker-conductor" [label = "Response: 204 No Content"]; 13 | "tacker-server" -> "tacker-conductor" 14 | [label = "trriger asynchronous task"]; 15 | Client <- "tacker-conductor" [label = "POST /grants"]; 16 | Client --> "tacker-conductor" [label = "201 Created"]; 17 | "tacker-conductor" ->> "tacker-conductor" 18 | [label = "execute notification process"]; 19 | Client <- "tacker-conductor" [label = "POST {callback URI} (PROCESSING)"]; 20 | Client --> "tacker-conductor" [label = "Response: 204 No Content"]; 21 | "tacker-conductor" -> "VnfLcmDriver" [label = "execute VnfLcmDriver"]; 22 | "VnfLcmDriver" -> "openstackDriver" [label = "execute openstackDriver"]; 23 | "openstackDriver" -> "heat" [label = "resourse signal"]; 24 | "openstackDriver" -> "heat" [label = "update stack"]; 25 | "openstackDriver" <-- "heat" [label = ""]; 26 | "VnfLcmDriver" <-- "openstackDriver" [label = ""]; 27 | "tacker-conductor" <-- "VnfLcmDriver" [label = ""]; 28 | "tacker-conductor" -> "MgmtDriver" [label = "execute MgmtDriver"]; 29 | "MgmtDriver" -> "VNF" [label = "VNF Configuration"]; 30 | "MgmtDriver" <-- "VNF" [label = ""]; 31 | "tacker-conductor" <-- "MgmtDriver" [label = ""]; 32 | "tacker-conductor" ->> "tacker-conductor" 33 | [label = "execute notification process"]; 34 | Client <- "tacker-conductor" [label = "POST {callback URI} (COMPLETED)"]; 35 | Client --> "tacker-conductor" [label = "Response: 204 No Content"]; 36 | } 37 | -------------------------------------------------------------------------------- /specs/victoria/support-scale-api-based-on-etsi-nfv-sol/01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstack/tacker-specs/869bac725210ac416da6fa830fbd5fb8a6192c3f/specs/victoria/support-scale-api-based-on-etsi-nfv-sol/01.png -------------------------------------------------------------------------------- /specs/victoria/support-scale-api-based-on-etsi-nfv-sol/02.diag: -------------------------------------------------------------------------------- 1 | 2 | seqdiag { 3 | node_width = 80; 4 | edge_length = 100; 5 | 6 | Client -> "tacker-server" 7 | [label = "POST /vnf_instances/{vnfInstanceId}/scale"]; 8 | Client <-- "tacker-server" [label = "Response 202 Accepted"]; 9 | "tacker-server" ->> "tacker-conductor" 10 | [label = "execute notification process"]; 11 | Client <- "tacker-conductor" [label = "POST {callback URI} (STARTING)"]; 12 | Client --> "tacker-conductor" [label = "Response: 204 No Content"]; 13 | "tacker-server" -> "tacker-conductor" 14 | [label = "trriger asynchronous task"]; 15 | Client <- "tacker-conductor" [label = "POST /grants"]; 16 | Client --> "tacker-conductor" [label = "201 Created"]; 17 | "tacker-conductor" ->> "tacker-conductor" 18 | [label = "execute notification process"]; 19 | Client <- "tacker-conductor" [label = "POST {callback URI} (PROCESSING)"]; 20 | Client --> "tacker-conductor" [label = "Response: 204 No Content"]; 21 | "tacker-conductor" -> "MgmtDriver" [label = "execute MgmtDriver"]; 22 | "MgmtDriver" -> "VNF" [label = "VNF Configuration"]; 23 | "MgmtDriver" <-- "VNF" [label = ""]; 24 | "tacker-conductor" <-- "MgmtDriver" [label = ""]; 25 | "tacker-conductor" -> "VnfLcmDriver" [label = "execute VnfLcmDriver"]; 26 | "VnfLcmDriver" -> "openstackDriver" [label = "execute openstackDriver"]; 27 | "openstackDriver" -> "heat" [label = "resourse signal"]; 28 | "openstackDriver" -> "heat" [label = "update stack"]; 29 | "openstackDriver" <-- "heat" [label = ""]; 30 | "VnfLcmDriver" <-- "openstackDriver" [label = ""]; 31 | "tacker-conductor" <-- "VnfLcmDriver" [label = ""]; 32 | "tacker-conductor" ->> "tacker-conductor" 33 | [label = "execute notification process"]; 34 | Client <- "tacker-conductor" [label = "POST {callback URI} (COMPLETED)"]; 35 | Client --> "tacker-conductor" [label = "Response: 204 No Content"]; 36 | } 37 | -------------------------------------------------------------------------------- /specs/victoria/support-scale-api-based-on-etsi-nfv-sol/02.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstack/tacker-specs/869bac725210ac416da6fa830fbd5fb8a6192c3f/specs/victoria/support-scale-api-based-on-etsi-nfv-sol/02.png -------------------------------------------------------------------------------- /specs/victoria/support-sol003-vnfm-operations/01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstack/tacker-specs/869bac725210ac416da6fa830fbd5fb8a6192c3f/specs/victoria/support-sol003-vnfm-operations/01.png -------------------------------------------------------------------------------- /specs/victoria/support-sol003-vnfm-operations/02.diag: -------------------------------------------------------------------------------- 1 | 2 | seqdiag { 3 | Client; NFVO; tacker-server; tacker-conductor; 4 | 5 | Client -> "tacker-server" [label = "LCM Operation Request"]; 6 | Client <-- "tacker-server" [label = "Response 202 Accepted"]; 7 | "tacker-server" ->> "tacker-conductor" 8 | [label = "execute notification process"]; 9 | Client <- "tacker-conductor" [label = "POST {callback URI} (STARTING)"]; 10 | Client --> "tacker-conductor" [label = "Response: 204 No Content"]; 11 | "tacker-server" -> "tacker-conductor" 12 | [label = "trriger asynchronous task"]; 13 | NFVO <- "tacker-conductor" [label = "POST /grants"]; 14 | NFVO --> "tacker-conductor" [label = "201 Created"]; 15 | "tacker-conductor" ->> "tacker-conductor" 16 | [label = "execute notification process"]; 17 | Client <- "tacker-conductor" [label = "POST {callback URI} (PROCESSING)"]; 18 | Client --> "tacker-conductor" [label = "Response: 204 No Content"]; 19 | "tacker-conductor" -> "VnfLcmDriver" [label = "execute MgmtDriver"]; 20 | "tacker-conductor" <-- "VnfLcmDriver" [label = ""]; 21 | "tacker-conductor" -> "VnfLcmDriver" [label = "execute VnfLcmDriver"]; 22 | "tacker-conductor" <-- "VnfLcmDriver" [label = ""]; 23 | "tacker-conductor" ->> "tacker-conductor" 24 | [label = "execute notification process"]; 25 | Client <- "tacker-conductor" [label = "POST {callback URI} (COMPLETED)"]; 26 | Client --> "tacker-conductor" [label = "Response: 204 No Content"]; 27 | } 28 | -------------------------------------------------------------------------------- /specs/victoria/support-sol003-vnfm-operations/02.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstack/tacker-specs/869bac725210ac416da6fa830fbd5fb8a6192c3f/specs/victoria/support-sol003-vnfm-operations/02.png -------------------------------------------------------------------------------- /specs/victoria/support-vnf-update-api-based-on-etsi-nfv-sol/01.diag: -------------------------------------------------------------------------------- 1 | 2 | seqdiag { 3 | Client; NFVO; tacker-server; tacker-conductor; 4 | 5 | Client -> "tacker-server" [label = "PATCH /vnf_instances/{vnfInstanceId}"]; 6 | "tacker-server" -> "tacker-conductor" [label = "execute vnf_package list process{filter}"]; 7 | NFVO <- "tacker-conductor" [label = "GET /vnf_packages/ with attribute filter(vnfdId)"]; 8 | NFVO --> "tacker-conductor" [label = "Response 200 OK with VnfPkgInfo"]; 9 | "tacker-server" <<- "tacker-conductor" [label = "(VnfPkgInfo)"]; 10 | "tacker-server" ->> "tacker-server" [label = "Update VNF instance resource(VnfPkgInfo)"]; 11 | "tacker-server" -> "tacker-conductor" [label = "execute vnf_package content process{vnfPkgId}"]; 12 | NFVO <- "tacker-conductor" [label = "GET /vnf_packages/{vnfPkgId}/package_content "]; 13 | NFVO --> "tacker-conductor" [label = "Response 200 OK with VNF package file"]; 14 | "tacker-server" <<- "tacker-conductor" [label = "(VNF package content file)"]; 15 | Client <-- "tacker-server" [label = "Response 202 Accepted"]; 16 | "tacker-server" -> "tacker-conductor" [label = "trriger asynchronous task"]; 17 | "tacker-conductor" ->> "tacker-conductor" [label = "execute notification process"]; 18 | Client <- "tacker-conductor" [label = "POST {callback URI} (PROCESSING)"]; 19 | Client --> "tacker-conductor" [label = "Response: 204 No Content"]; 20 | "tacker-conductor" ->> "tacker-conductor" [label = "VNF Modification"]; 21 | "tacker-conductor" ->> "tacker-conductor" [label = "execute notification process"]; 22 | Client <- "tacker-conductor" [label = "POST {callback URI} (COMPLETED)"]; 23 | Client --> "tacker-conductor" [label = "Response: 204 No Content"]; 24 | } 25 | -------------------------------------------------------------------------------- /specs/victoria/support-vnf-update-api-based-on-etsi-nfv-sol/01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstack/tacker-specs/869bac725210ac416da6fa830fbd5fb8a6192c3f/specs/victoria/support-vnf-update-api-based-on-etsi-nfv-sol/01.png -------------------------------------------------------------------------------- /specs/victoria/support-vnf-update-api-based-on-etsi-nfv-sol/02.diag: -------------------------------------------------------------------------------- 1 | 2 | seqdiag { 3 | Client -> "tacker-server" [label = "PATCH /vnf_instances/{vnfInstanceId}"]; 4 | Client <-- "tacker-server" [label = "Response 202 Accepted"]; 5 | "tacker-server" -> "tacker-conductor" [label = "trriger asynchronous task"]; 6 | "tacker-conductor" ->> "tacker-conductor" [label = "execute notification process"]; 7 | Client <- "tacker-conductor" [label = "POST {callback URI} (PROCESSING)"]; 8 | Client --> "tacker-conductor" [label = "Response: 204 No Content"]; 9 | "tacker-conductor" ->> "tacker-conductor" [label = "VNF Modification"]; 10 | "tacker-conductor" ->> "tacker-conductor" [label = "execute notification process"]; 11 | Client <- "tacker-conductor" [label = "POST {callback URI} (COMPLETED)"]; 12 | Client --> "tacker-conductor" [label = "Response: 204 No Content"]; 13 | } 14 | -------------------------------------------------------------------------------- /specs/victoria/support-vnf-update-api-based-on-etsi-nfv-sol/02.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstack/tacker-specs/869bac725210ac416da6fa830fbd5fb8a6192c3f/specs/victoria/support-vnf-update-api-based-on-etsi-nfv-sol/02.png -------------------------------------------------------------------------------- /specs/wallaby/hardware-aware-pod-affinity/01.diag: -------------------------------------------------------------------------------- 1 | 2 | seqdiag { 3 | node_width = 80; 4 | edge_length = 100; 5 | 6 | "Client" 7 | "Tacker-server" 8 | "Tacker-conductor" 9 | "VnfLcmDriver" 10 | "OpenstackDriver" 11 | "Heat" 12 | "MgmtDriver" 13 | "VnfInstance(Tacker DB)" 14 | "RemoteCommandExecutor" 15 | 16 | Client -> "Tacker-server" 17 | [label = "POST /vnf_instances/{vnfInstanceId}/instantiate"]; 18 | Client <-- "Tacker-server" 19 | [label = "Response 202 Accepted"]; 20 | "Tacker-server" -> "Tacker-conductor" 21 | [label = "trigger asynchronous task"]; 22 | 23 | "Tacker-conductor" -> "VnfLcmDriver" 24 | [label = "execute VnfLcmDriver"]; 25 | "VnfLcmDriver" -> "OpenstackDriver" 26 | [label = "execute OpenstackDriver"]; 27 | "OpenstackDriver" -> "Heat" 28 | [label = "create stack"]; 29 | "OpenstackDriver" <-- "Heat" 30 | [label = "return stack id"]; 31 | "VnfLcmDriver" <-- "OpenstackDriver" 32 | [label = "return instance_id"]; 33 | 34 | "VnfLcmDriver" -> "MgmtDriver" 35 | [label = "instantiate_end"]; 36 | "MgmtDriver" -> "VnfInstance(Tacker DB)" 37 | [label = "get stack id"]; 38 | "MgmtDriver" <-- "VnfInstance(Tacker DB)" 39 | [label = ""]; 40 | "MgmtDriver" -> "Heat" 41 | [label = "get ssh ipaddress and Kubernetes address using stack id"]; 42 | "MgmtDriver" <-- "Heat" 43 | [label = ""]; 44 | "MgmtDriver" -> "RemoteCommandExecutor" 45 | [label = "install Kubernetes on the new Worker-node"]; 46 | "MgmtDriver" <-- "RemoteCommandExecutor" 47 | [label = ""]; 48 | "MgmtDriver" -> "RemoteCommandExecutor" 49 | [label = "sets label of compute server"]; 50 | "MgmtDriver" <-- "RemoteCommandExecutor" 51 | [label = ""]; 52 | "VnfLcmDriver" <-- "MgmtDriver" 53 | [label = ""]; 54 | "Tacker-conductor" <-- "VnfLcmDriver" 55 | [label = ""]; 56 | 57 | } 58 | -------------------------------------------------------------------------------- /specs/wallaby/hardware-aware-pod-affinity/01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstack/tacker-specs/869bac725210ac416da6fa830fbd5fb8a6192c3f/specs/wallaby/hardware-aware-pod-affinity/01.png -------------------------------------------------------------------------------- /specs/wallaby/index.rst: -------------------------------------------------------------------------------- 1 | ============================== 2 | Tacker Wallaby Specifications 3 | ============================== 4 | 5 | .. toctree:: 6 | :glob: 7 | :maxdepth: 1 8 | 9 | * 10 | -------------------------------------------------------------------------------- /specs/wallaby/mgmt-driver-for-ha-k8s/01.diag: -------------------------------------------------------------------------------- 1 | 2 | seqdiag { 3 | node_width = 80; 4 | edge_length = 100; 5 | 6 | "Client" 7 | "Tacker-server" 8 | "Tacker-conductor" 9 | "VnfLcmDriver" 10 | "OpenstackDriver" 11 | "Heat" 12 | "MgmtDriver" 13 | "RemoteCommandExecutor" 14 | 15 | Client -> "Tacker-server" 16 | [label = "instantiate VNF"]; 17 | Client <-- "Tacker-server" 18 | [label = "Response 202 Accepted"]; 19 | 20 | "Tacker-server" -> "Tacker-conductor" 21 | [label = "trigger asynchronous task"]; 22 | 23 | "Tacker-conductor" -> "VnfLcmDriver" 24 | [label = "instantiate VNF"]; 25 | 26 | "VnfLcmDriver" -> "OpenstackDriver" 27 | [label = "pre instantiate VNF"]; 28 | "VnfLcmDriver" <-- "OpenstackDriver" 29 | [label = ""]; 30 | 31 | "VnfLcmDriver" -> "OpenstackDriver" 32 | [label = "instantiate VNF"]; 33 | 34 | "OpenstackDriver" -> "Heat" 35 | [label = "create stack"]; 36 | "OpenstackDriver" <-- "Heat" 37 | [label = ""]; 38 | 39 | "VnfLcmDriver" <-- "OpenstackDriver" 40 | [label = "return stack id"]; 41 | 42 | "VnfLcmDriver" -> "VnfLcmDriver" 43 | [label = "update DB"]; 44 | 45 | "VnfLcmDriver" -> "MgmtDriver" 46 | [label = "instantiate_end"]; 47 | 48 | "MgmtDriver" -> "Heat" 49 | [label = "get the new vm info created."]; 50 | "MgmtDriver" <-- "Heat" 51 | [label = ""]; 52 | "MgmtDriver" -> "RemoteCommandExecutor" 53 | [label = "Changes HAProxy configuration"]; 54 | "MgmtDriver" <-- "RemoteCommandExecutor" 55 | [label = ""]; 56 | "MgmtDriver" -> "RemoteCommandExecutor" 57 | [label = "Install Kubernetes on the new Master-node"]; 58 | "MgmtDriver" <-- "RemoteCommandExecutor" 59 | [label = ""]; 60 | "MgmtDriver" -> "RemoteCommandExecutor" 61 | [label = "Install Kubernetes on the new Worker-node"]; 62 | "MgmtDriver" <-- "RemoteCommandExecutor" 63 | [label = ""]; 64 | 65 | "VnfLcmDriver" <-- "MgmtDriver" 66 | [label = ""]; 67 | "Tacker-conductor" <-- "VnfLcmDriver" 68 | [label = ""]; 69 | } 70 | -------------------------------------------------------------------------------- /specs/wallaby/mgmt-driver-for-ha-k8s/01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstack/tacker-specs/869bac725210ac416da6fa830fbd5fb8a6192c3f/specs/wallaby/mgmt-driver-for-ha-k8s/01.png -------------------------------------------------------------------------------- /specs/wallaby/mgmt-driver-for-k8s-cluster/01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstack/tacker-specs/869bac725210ac416da6fa830fbd5fb8a6192c3f/specs/wallaby/mgmt-driver-for-k8s-cluster/01.png -------------------------------------------------------------------------------- /specs/wallaby/mgmt-driver-for-k8s-cluster/02.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstack/tacker-specs/869bac725210ac416da6fa830fbd5fb8a6192c3f/specs/wallaby/mgmt-driver-for-k8s-cluster/02.png -------------------------------------------------------------------------------- /specs/wallaby/mgmt-driver-for-k8s-cluster/03.diag: -------------------------------------------------------------------------------- 1 | 2 | seqdiag { 3 | node_width = 80; 4 | edge_length = 100; 5 | 6 | "Client" 7 | "Tacker-server" 8 | "Tacker-conductor" 9 | "VnfLcmDriver" 10 | "OpenstackDriver" 11 | "Heat" 12 | "MgmtDriver" 13 | "VnfInstance(Tacker DB)" 14 | "NfvoPlugin" 15 | 16 | Client -> "Tacker-server" 17 | [label = "POST /vnf_instances/{vnfInstanceId}/terminate"]; 18 | Client <-- "Tacker-server" 19 | [label = "Response 202 Accepted"]; 20 | "Tacker-server" -> "Tacker-conductor" 21 | [label = "trigger asynchronous task"]; 22 | 23 | "Tacker-conductor" -> "VnfLcmDriver" 24 | [label = "execute VnfLcmDriver"]; 25 | "VnfLcmDriver" -> "OpenstackDriver" 26 | [label = "execute OpenstackDriver"]; 27 | "OpenstackDriver" -> "Heat" 28 | [label = "delete stack"]; 29 | "OpenstackDriver" <-- "Heat" 30 | [label = "stack deleted"]; 31 | "VnfLcmDriver" <-- "OpenstackDriver" 32 | [label = "resources removed"]; 33 | 34 | "VnfLcmDriver" -> "MgmtDriver" 35 | [label = "terminate_end"]; 36 | "MgmtDriver" -> "NfvoPlugin" 37 | [label = "delete the VIM information"]; 38 | "MgmtDriver" <-- "NfvoPlugin" 39 | [label = ""]; 40 | "MgmtDriver" -> "VnfInstance(Tacker DB)" 41 | [label = "Clear the Kubernetes cluster information stored in the 42 | vim_connection_info of the VNF Instance"]; 43 | "MgmtDriver" <-- "VnfInstance(Tacker DB)" 44 | [label = ""]; 45 | "VnfLcmDriver" <-- "MgmtDriver" 46 | [label = ""]; 47 | "Tacker-conductor" <-- "VnfLcmDriver" 48 | [label = ""]; 49 | 50 | 51 | } 52 | -------------------------------------------------------------------------------- /specs/wallaby/mgmt-driver-for-k8s-cluster/03.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstack/tacker-specs/869bac725210ac416da6fa830fbd5fb8a6192c3f/specs/wallaby/mgmt-driver-for-k8s-cluster/03.png -------------------------------------------------------------------------------- /specs/wallaby/mgmt-driver-for-k8s-heal/01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstack/tacker-specs/869bac725210ac416da6fa830fbd5fb8a6192c3f/specs/wallaby/mgmt-driver-for-k8s-heal/01.png -------------------------------------------------------------------------------- /specs/wallaby/mgmt-driver-for-k8s-heal/02.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstack/tacker-specs/869bac725210ac416da6fa830fbd5fb8a6192c3f/specs/wallaby/mgmt-driver-for-k8s-heal/02.png -------------------------------------------------------------------------------- /specs/wallaby/mgmt-driver-for-k8s-heal/03.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstack/tacker-specs/869bac725210ac416da6fa830fbd5fb8a6192c3f/specs/wallaby/mgmt-driver-for-k8s-heal/03.png -------------------------------------------------------------------------------- /specs/wallaby/mgmt-driver-for-k8s-scale/01.diag: -------------------------------------------------------------------------------- 1 | 2 | seqdiag { 3 | node_width = 80; 4 | edge_length = 100; 5 | 6 | "Client" 7 | "Tacker-server" 8 | "Tacker-conductor" 9 | "VnfLcmDriver" 10 | "OpenstackDriver" 11 | "Heat" 12 | "MgmtDriver" 13 | "VnfInstance(Tacker DB)" 14 | "RemoteCommandExecutor" 15 | 16 | Client -> "Tacker-server" 17 | [label = "POST /vnf_instances/{vnfInstanceId}/scale"]; 18 | Client <-- "Tacker-server" 19 | [label = "Response 202 Accepted"]; 20 | "Tacker-server" -> "Tacker-conductor" 21 | [label = "trigger asynchronous task"]; 22 | "Tacker-conductor" -> "VnfLcmDriver" 23 | [label = "execute VnfLcmDriver"]; 24 | "VnfLcmDriver" -> "OpenstackDriver" 25 | [label = "execute OpenstackDriver"]; 26 | "OpenstackDriver" -> "Heat" 27 | [label = "resource signal"]; 28 | "OpenstackDriver" -> "Heat" 29 | [label = "update stack"]; 30 | "OpenstackDriver" <-- "Heat" 31 | [label = ""]; 32 | "VnfLcmDriver" <-- "OpenstackDriver" 33 | [label = ""]; 34 | "Tacker-conductor" <-- "VnfLcmDriver" 35 | [label = ""]; 36 | "Tacker-conductor" -> "MgmtDriver" 37 | [label = "scale_end"]; 38 | 39 | "MgmtDriver" -> "VnfInstance(Tacker DB)" 40 | [label = "get the vim connection info"]; 41 | "MgmtDriver" <-- "VnfInstance(Tacker DB)" 42 | [label = ""]; 43 | "MgmtDriver" -> "Heat" 44 | [label = "get the new vm info created by scale out operation."]; 45 | "MgmtDriver" <-- "Heat" 46 | [label = ""]; 47 | "MgmtDriver" -> "RemoteCommandExecutor" 48 | [label = "Install Kubernetes on the new Worker-node"]; 49 | "MgmtDriver" <-- "RemoteCommandExecutor" 50 | [label = ""]; 51 | 52 | "Tacker-conductor" <-- "MgmtDriver" 53 | [label = ""]; 54 | } 55 | -------------------------------------------------------------------------------- /specs/wallaby/mgmt-driver-for-k8s-scale/01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstack/tacker-specs/869bac725210ac416da6fa830fbd5fb8a6192c3f/specs/wallaby/mgmt-driver-for-k8s-scale/01.png -------------------------------------------------------------------------------- /specs/wallaby/mgmt-driver-for-k8s-scale/02.diag: -------------------------------------------------------------------------------- 1 | 2 | seqdiag { 3 | node_width = 80; 4 | edge_length = 100; 5 | 6 | "Client" 7 | "Tacker-server" 8 | "Tacker-conductor" 9 | "VnfLcmDriver" 10 | "OpenstackDriver" 11 | "Heat" 12 | "MgmtDriver" 13 | "VnfInstance(Tacker DB)" 14 | "RemoteCommandExecutor" 15 | 16 | Client -> "Tacker-server" 17 | [label = "POST /vnf_instances/{vnfInstanceId}/scale"]; 18 | Client <-- "Tacker-server" 19 | [label = "Response 202 Accepted"]; 20 | "Tacker-server" -> "Tacker-conductor" 21 | [label = "trigger asynchronous task"]; 22 | 23 | "Tacker-conductor" -> "MgmtDriver" 24 | [label = "scale_start"]; 25 | "MgmtDriver" -> "VnfInstance(Tacker DB)" 26 | [label = "get the vim connection info"]; 27 | "MgmtDriver" <-- "VnfInstance(Tacker DB)" 28 | [label = ""]; 29 | "MgmtDriver" -> "Heat" 30 | [label = "get the vm info to be removed by scale in operation."]; 31 | "MgmtDriver" <-- "Heat" 32 | [label = ""]; 33 | "MgmtDriver" -> "RemoteCommandExecutor" 34 | [label = "pre-processing for leaving from Kubernetes cluster"]; 35 | "MgmtDriver" <-- "RemoteCommandExecutor" 36 | [label = ""]; 37 | 38 | "Tacker-conductor" <-- "MgmtDriver" 39 | [label = ""]; 40 | "Tacker-conductor" -> "VnfLcmDriver" 41 | [label = "execute VnfLcmDriver"]; 42 | "VnfLcmDriver" -> "OpenstackDriver" 43 | [label = "execute OpenstackDriver"]; 44 | "OpenstackDriver" -> "Heat" 45 | [label = "resource signal"]; 46 | "OpenstackDriver" -> "Heat" 47 | [label = "update stack"]; 48 | "OpenstackDriver" <-- "Heat" 49 | [label = ""]; 50 | "VnfLcmDriver" <-- "OpenstackDriver" 51 | [label = ""]; 52 | "Tacker-conductor" <-- "VnfLcmDriver" 53 | [label = ""]; 54 | } 55 | -------------------------------------------------------------------------------- /specs/wallaby/mgmt-driver-for-k8s-scale/02.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstack/tacker-specs/869bac725210ac416da6fa830fbd5fb8a6192c3f/specs/wallaby/mgmt-driver-for-k8s-scale/02.png -------------------------------------------------------------------------------- /specs/wallaby/support-change-external-VNF-connectivity-operation/01.diag: -------------------------------------------------------------------------------- 1 | 2 | seqdiag { 3 | Client; NFVO; tacker-server; tacker-conductor; 4 | 5 | Client -> "tacker-server" [label = "Change external VNF connectivity"]; 6 | Client <-- "tacker-server" [label = "Response 202 Accepted"]; 7 | "tacker-server" ->> "tacker-conductor" [label = "execute notification process"]; 8 | Client <- "tacker-conductor" [label = "POST {callback URI} (STARTING)"]; 9 | Client --> "tacker-conductor" [label = "Response: 204 No Content"]; 10 | "tacker-server" -> "tacker-conductor" [label = "trigger asynchronous task"]; 11 | NFVO <- "tacker-conductor" [label = "POST /grants"]; 12 | NFVO --> "tacker-conductor" [label = "201 Created"]; 13 | "tacker-conductor" ->> "tacker-conductor" [label = "execute notification process"]; 14 | Client <- "tacker-conductor" [label = "POST {callback URI} (PROCESSING)"]; 15 | Client --> "tacker-conductor" [label = "Response: 204 No Content"]; 16 | "tacker-conductor" -> "VnfLcmDriver" [label = "execute MgmtDriver"]; 17 | "tacker-conductor" <-- "VnfLcmDriver" [label = ""]; 18 | "tacker-conductor" -> "VnfLcmDriver" [label = "execute VnfLcmDriver"]; 19 | "tacker-conductor" <-- "VnfLcmDriver" [label = ""]; 20 | "tacker-conductor" ->> "tacker-conductor" [label = "execute notification process"]; 21 | Client <- "tacker-conductor" [label = "POST {callback URI} (COMPLETED)"]; 22 | Client --> "tacker-conductor" [label = "Response: 204 No Content"]; 23 | } 24 | -------------------------------------------------------------------------------- /specs/wallaby/support-change-external-VNF-connectivity-operation/01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstack/tacker-specs/869bac725210ac416da6fa830fbd5fb8a6192c3f/specs/wallaby/support-change-external-VNF-connectivity-operation/01.png -------------------------------------------------------------------------------- /specs/wallaby/support-cnf-heal/01.diag: -------------------------------------------------------------------------------- 1 | 2 | seqdiag { 3 | node_width = 100; 4 | edge_length = 115; 5 | 6 | Client -> WSGIMiddleware [label = 7 | "POST /vnflcm/v1/vnf_instances/{id}/instantiate"]; 8 | WSGIMiddleware -->> WSGIMiddleware [label = "Request validation"]; 9 | Client <-- WSGIMiddleware [label = "202 Accepted"]; 10 | 11 | NFVOPlugin; 12 | WSGIMiddleware -> VnfLcmDriver [label = "Trigger asynchronous task "]; 13 | VnfLcmDriver --> NFVOPlugin [label = "Get VNF Package"]; 14 | VnfLcmDriver <-- NFVOPlugin; 15 | VnfLcmDriver -->> VnfLcmDriver [label = "Create VIM connection object"]; 16 | 17 | VnfLcmDriver -> KubernetesDriver [label = "pre_instantiation_vnf()"]; 18 | KubernetesDriver -->> KubernetesDriver [label = "No change needed"]; 19 | VnfLcmDriver <-- KubernetesDriver; 20 | 21 | VnfLcmDriver --> KubernetesDriver 22 | [label = "instantiate_vnf()"]; 23 | KubernetesDriver --> KubernetesDriver [label = "create()"] 24 | KubernetesDriver -> KubernetesDriver [label = "No change needed"]; 25 | VnfLcmDriver <-- KubernetesDriver [label = "instance_id"]; 26 | 27 | VnfLcmDriver --> KubernetesDriver [label ="create_wait()"]; 28 | KubernetesDriver -> KubernetesDriver [label = "No change needed"]; 29 | VnfLcmDriver <-- KubernetesDriver; 30 | 31 | VnfLcmDriver -> KubernetesDriver [label = "post_vnf_instantiation()"]; 32 | KubernetesDriver -> KubernetesPythonClient 33 | [label = "Read Kubernetes resources data"]; 34 | KubernetesPythonClient -> Kubernetes 35 | [label = "Execute read API"]; 36 | KubernetesPythonClient <-- Kubernetes [label = ""]; 37 | KubernetesDriver <-- KubernetesPythonClient; 38 | KubernetesDriver -->> KubernetesDriver 39 | [label = "Update DB for VNFC resources"]; 40 | VnfLcmDriver <-- KubernetesDriver; 41 | } 42 | -------------------------------------------------------------------------------- /specs/wallaby/support-cnf-heal/01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstack/tacker-specs/869bac725210ac416da6fa830fbd5fb8a6192c3f/specs/wallaby/support-cnf-heal/01.png -------------------------------------------------------------------------------- /specs/wallaby/support-cnf-heal/02.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstack/tacker-specs/869bac725210ac416da6fa830fbd5fb8a6192c3f/specs/wallaby/support-cnf-heal/02.png -------------------------------------------------------------------------------- /specs/wallaby/support-cnf-scale/01.diag: -------------------------------------------------------------------------------- 1 | 2 | seqdiag { 3 | node_width = 100; 4 | edge_length = 115; 5 | 6 | "Client" -> "Tacker-server" 7 | [label = "POST /vnf_instances/{vnfInstanceId}/scale"]; 8 | "Client" <-- "Tacker-server" [label = "Response 202 Accepted"]; 9 | "Tacker-server" --> "Tacker-conductor" [label = "Trigger asynchronous task"] 10 | "Tacker-conductor" -> "VnfLcmDriver" [label = "Call VnfLcmDriver"]; 11 | "VnfLcmDriver" -> "KubernetesDriver" [label = "scale()"]; 12 | "KubernetesDriver" -> "KubernetesPythonClient" 13 | [label = "Execute read API to get current replicas"]; 14 | "KubernetesPythonClient" -> "Kubernetes" [label = "Call read API"]; 15 | "KubernetesPythonClient" <-- "Kubernetes" [label = ""]; 16 | "KubernetesDriver" <-- "KubernetesPythonClient" [label = ""]; 17 | "KubernetesDriver" -> "KubernetesPythonClient" 18 | [label = "Execute patch API to change replicas"]; 19 | "KubernetesPythonClient" -> "Kubernetes" [label = "Call patch API"]; 20 | "KubernetesPythonClient" <-- "Kubernetes" [label = ""]; 21 | "KubernetesDriver" <-- "KubernetesPythonClient" [label = ""]; 22 | "VnfLcmDriver" <-- "KubernetesDriver" [label = ""]; 23 | "VnfLcmDriver" -> "KubernetesDriver" [label = "scale_wait()"]; 24 | "KubernetesDriver" -> "KubernetesPythonClient" 25 | [label = "Execute read API for check scale result"]; 26 | "KubernetesPythonClient" -> "Kubernetes" [label = "Call read API"]; 27 | "KubernetesPythonClient" <-- "Kubernetes" [label = ""]; 28 | "KubernetesDriver" <-- "KubernetesPythonClient" [label = ""]; 29 | "VnfLcmDriver" <-- "KubernetesDriver" [label = ""]; 30 | "VnfLcmDriver" -->> "VnfLcmDriver" [label = "Save current scaleLevel"]; 31 | "Tacker-conductor" <-- "VnfLcmDriver" [label = ""]; 32 | 33 | } 34 | -------------------------------------------------------------------------------- /specs/wallaby/support-cnf-scale/01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstack/tacker-specs/869bac725210ac416da6fa830fbd5fb8a6192c3f/specs/wallaby/support-cnf-scale/01.png -------------------------------------------------------------------------------- /specs/wallaby/support-error-handling-based-on-ETSI-NFV/01.diag: -------------------------------------------------------------------------------- 1 | 2 | seqdiag { 3 | Client -> "tacker-server" 4 | [label = "POST /vnf_lcm_op_occs/{vnfLcmOpOccId}/retry"]; 5 | Client <-- "tacker-server" [label = "Response 202 Accepted"]; 6 | "tacker-server" -> "tacker-conductor" 7 | [label = "trigger asynchronous task"]; 8 | "tacker-conductor" ->> "tacker-conductor" [label = "start retry procedure"]; 9 | "tacker-conductor" ->> "tacker-conductor" [label = "execute notification process"]; 10 | Client <- "tacker-conductor" [label = "POST {callback URI} (PROCESSING)"]; 11 | Client --> "tacker-conductor" [label = "Response: 204 No Content"]; 12 | "tacker-conductor" ->> "tacker-conductor" [label = "end retry procedure"]; 13 | "tacker-conductor" ->> "tacker-conductor" [label = "execute notification process"]; 14 | Client <- "tacker-conductor" [label = "POST {callback URI} (COMPLETED or FAILED_TEMP)"]; 15 | Client --> "tacker-conductor" [label = "Response: 204 No Content"]; 16 | } 17 | -------------------------------------------------------------------------------- /specs/wallaby/support-error-handling-based-on-ETSI-NFV/01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstack/tacker-specs/869bac725210ac416da6fa830fbd5fb8a6192c3f/specs/wallaby/support-error-handling-based-on-ETSI-NFV/01.png -------------------------------------------------------------------------------- /specs/wallaby/support-error-handling-based-on-ETSI-NFV/02.diag: -------------------------------------------------------------------------------- 1 | 2 | seqdiag { 3 | Client -> "tacker-server" 4 | [label = "POST /vnf_lcm_op_occs/{vnfLcmOpOccId}/fail"]; 5 | "tacker-server" -> "tacker-conductor" 6 | [label = "trigger asynchronous task"]; 7 | "tacker-conductor" ->> "tacker-conductor" [label = "mark operation as failed"]; 8 | "tacker-conductor" ->> "tacker-conductor" [label = "execute notification process"]; 9 | Client <- "tacker-conductor" [label = "POST {callback URI} (FAILED)"]; 10 | Client --> "tacker-conductor" [label = "Response: 204 No Content"]; 11 | Client <-- "tacker-server" [label = "Response 200 OK"]; 12 | } 13 | -------------------------------------------------------------------------------- /specs/wallaby/support-error-handling-based-on-ETSI-NFV/02.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstack/tacker-specs/869bac725210ac416da6fa830fbd5fb8a6192c3f/specs/wallaby/support-error-handling-based-on-ETSI-NFV/02.png -------------------------------------------------------------------------------- /specs/wallaby/support-fundamental-vnf-lcm-based-on-ETSI-NFV/01.diag: -------------------------------------------------------------------------------- 1 | 2 | seqdiag { 3 | Client -> "tacker-server" [label = " POST /subscriptions"]; 4 | "tacker-server" -> Client [label = " GET {callback URI}"]; 5 | "tacker-server" <-- Client [label = " Response 204 No Content"]; 6 | "tacker-server" -> "tacker-server" 7 | [label = " generate subscription_id (uuid)"]; 8 | Client <-- "tacker-server" [label = " Response 201 Created"]; 9 | } 10 | -------------------------------------------------------------------------------- /specs/wallaby/support-fundamental-vnf-lcm-based-on-ETSI-NFV/01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstack/tacker-specs/869bac725210ac416da6fa830fbd5fb8a6192c3f/specs/wallaby/support-fundamental-vnf-lcm-based-on-ETSI-NFV/01.png -------------------------------------------------------------------------------- /specs/wallaby/support-fundamental-vnf-lcm-based-on-ETSI-NFV/02.diag: -------------------------------------------------------------------------------- 1 | 2 | seqdiag { 3 | Client -> "tacker-server" [label = " GET /vnf_lcm_op_occs"]; 4 | "tacker-server" -> "tacker-server" [label = "request validation"]; 5 | Client <-- "tacker-server" [label = " Response 200 OK"]; 6 | } 7 | -------------------------------------------------------------------------------- /specs/wallaby/support-fundamental-vnf-lcm-based-on-ETSI-NFV/02.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstack/tacker-specs/869bac725210ac416da6fa830fbd5fb8a6192c3f/specs/wallaby/support-fundamental-vnf-lcm-based-on-ETSI-NFV/02.png -------------------------------------------------------------------------------- /specs/wallaby/support-fundamental-vnf-lcm-based-on-ETSI-NFV/03.diag: -------------------------------------------------------------------------------- 1 | 2 | seqdiag { 3 | Client -> "tacker-server" [label = " GET /vnf_lcm_op_occs/{vnfLcmOpOccId}"]; 4 | Client <-- "tacker-server" [label = " Response 200 OK"]; 5 | } 6 | -------------------------------------------------------------------------------- /specs/wallaby/support-fundamental-vnf-lcm-based-on-ETSI-NFV/03.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstack/tacker-specs/869bac725210ac416da6fa830fbd5fb8a6192c3f/specs/wallaby/support-fundamental-vnf-lcm-based-on-ETSI-NFV/03.png -------------------------------------------------------------------------------- /specs/wallaby/support-fundamental-vnf-lcm-based-on-ETSI-NFV/04.diag: -------------------------------------------------------------------------------- 1 | 2 | seqdiag { 3 | Client -> "tacker-server" [label = " POST /subscriptions"]; 4 | "tacker-server" -> Client [label = " GET {callback URI}"]; 5 | "tacker-server" <-- Client [label = " Response 204 No Content"]; 6 | "tacker-server" -> "tacker-server" 7 | [label = " generate subscription_id (uuid)"]; 8 | Client <-- "tacker-server" [label = " Response 201 Created"]; 9 | } 10 | -------------------------------------------------------------------------------- /specs/wallaby/support-fundamental-vnf-lcm-based-on-ETSI-NFV/04.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstack/tacker-specs/869bac725210ac416da6fa830fbd5fb8a6192c3f/specs/wallaby/support-fundamental-vnf-lcm-based-on-ETSI-NFV/04.png -------------------------------------------------------------------------------- /specs/wallaby/support-fundamental-vnf-lcm-based-on-ETSI-NFV/05.diag: -------------------------------------------------------------------------------- 1 | 2 | seqdiag { 3 | Client -> "tacker-server" [label = " GET /subscriptions"]; 4 | "tacker-server" -> "tacker-server" [label = "request validation"]; 5 | Client <-- "tacker-server" [label = " Response 200 OK"]; 6 | } 7 | -------------------------------------------------------------------------------- /specs/wallaby/support-fundamental-vnf-lcm-based-on-ETSI-NFV/05.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstack/tacker-specs/869bac725210ac416da6fa830fbd5fb8a6192c3f/specs/wallaby/support-fundamental-vnf-lcm-based-on-ETSI-NFV/05.png -------------------------------------------------------------------------------- /specs/wallaby/support-fundamental-vnf-lcm-based-on-ETSI-NFV/06.diag: -------------------------------------------------------------------------------- 1 | 2 | seqdiag { 3 | Client -> "tacker-server" [label = " GET /subscriptions/{subscriptionId}"]; 4 | Client <-- "tacker-server" [label = " Response 200 OK"]; 5 | } 6 | -------------------------------------------------------------------------------- /specs/wallaby/support-fundamental-vnf-lcm-based-on-ETSI-NFV/06.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstack/tacker-specs/869bac725210ac416da6fa830fbd5fb8a6192c3f/specs/wallaby/support-fundamental-vnf-lcm-based-on-ETSI-NFV/06.png -------------------------------------------------------------------------------- /specs/xena/cir-k8s-cluster/01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstack/tacker-specs/869bac725210ac416da6fa830fbd5fb8a6192c3f/specs/xena/cir-k8s-cluster/01.png -------------------------------------------------------------------------------- /specs/xena/cir-k8s-cluster/02.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstack/tacker-specs/869bac725210ac416da6fa830fbd5fb8a6192c3f/specs/xena/cir-k8s-cluster/02.png -------------------------------------------------------------------------------- /specs/xena/cir-k8s-cluster/03.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstack/tacker-specs/869bac725210ac416da6fa830fbd5fb8a6192c3f/specs/xena/cir-k8s-cluster/03.png -------------------------------------------------------------------------------- /specs/xena/cir-k8s-cluster/04.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstack/tacker-specs/869bac725210ac416da6fa830fbd5fb8a6192c3f/specs/xena/cir-k8s-cluster/04.png -------------------------------------------------------------------------------- /specs/xena/cir-k8s-cluster/05.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstack/tacker-specs/869bac725210ac416da6fa830fbd5fb8a6192c3f/specs/xena/cir-k8s-cluster/05.png -------------------------------------------------------------------------------- /specs/xena/cir-k8s-cluster/06.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstack/tacker-specs/869bac725210ac416da6fa830fbd5fb8a6192c3f/specs/xena/cir-k8s-cluster/06.png -------------------------------------------------------------------------------- /specs/xena/helmchart-k8s-vim/01.diag: -------------------------------------------------------------------------------- 1 | 2 | seqdiag { 3 | node_width = 80; 4 | edge_length = 100; 5 | 6 | "Client" 7 | "Tacker-server" 8 | "Tacker-conductor" 9 | "VnfLcmDriver" 10 | "MgmtDriver" 11 | "OpenStackInfraDriver" 12 | "MasterNode" 13 | "TackerDB" 14 | 15 | Client -> "Tacker-server" 16 | [label = "POST /vnf_instances/{vnfInstanceId}/instantiate"]; 17 | "Tacker-server" -> "Tacker-conductor" 18 | [label = "Trigger asynchronous task"]; 19 | Client <-- "Tacker-server" 20 | [label = "Response 202 Accepted"]; 21 | "Tacker-conductor" -> "VnfLcmDriver" 22 | [label = "Execute VnfLcmDriver"]; 23 | "VnfLcmDriver" -> "OpenStackInfraDriver" 24 | [label = "instantiate_vnf()"]; 25 | "OpenStackInfraDriver" -> "Heat" 26 | [label = "Create stack"]; 27 | "OpenStackInfraDriver" <-- "Heat" 28 | [label = "Return stack id"]; 29 | "VnfLcmDriver" <-- "OpenStackInfraDriver" 30 | [label = "return instance_id"]; 31 | "VnfLcmDriver" -> "MgmtDriver" 32 | [label = "instantiate_end()"]; 33 | "MgmtDriver" -> "Heat" 34 | [label = "Get ssh ip address and Kubernetes address using stack id"]; 35 | "MgmtDriver" <-- "Heat" 36 | [label = ""]; 37 | "MgmtDriver" -> "MasterNode" 38 | [label = "Install Kubernetes by script"]; 39 | "MgmtDriver" <-- "MasterNode" 40 | [label = ""]; 41 | "MgmtDriver" -> "MasterNode" 42 | [label = "Install Helm by script"]; 43 | "MgmtDriver" <-- "MasterNode" 44 | [label = ""]; 45 | "MgmtDriver"-> "TackerDB" 46 | [label = "Add MasterNode access information to vim_connection_info table"] 47 | "MgmtDriver" <-- "TackerDB" 48 | [label = ""]; 49 | "VnfLcmDriver" <-- "MgmtDriver" 50 | [label = ""]; 51 | "Tacker-conductor" <-- "VnfLcmDriver" 52 | [label = ""]; 53 | 54 | } 55 | -------------------------------------------------------------------------------- /specs/xena/helmchart-k8s-vim/01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstack/tacker-specs/869bac725210ac416da6fa830fbd5fb8a6192c3f/specs/xena/helmchart-k8s-vim/01.png -------------------------------------------------------------------------------- /specs/xena/helmchart-k8s-vim/02.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstack/tacker-specs/869bac725210ac416da6fa830fbd5fb8a6192c3f/specs/xena/helmchart-k8s-vim/02.png -------------------------------------------------------------------------------- /specs/xena/index.rst: -------------------------------------------------------------------------------- 1 | ============================== 2 | Tacker Xena Specifications 3 | ============================== 4 | 5 | .. toctree:: 6 | :glob: 7 | :maxdepth: 1 8 | 9 | * 10 | -------------------------------------------------------------------------------- /specs/xena/k8s-mgmtdriver-kubespray/01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstack/tacker-specs/869bac725210ac416da6fa830fbd5fb8a6192c3f/specs/xena/k8s-mgmtdriver-kubespray/01.png -------------------------------------------------------------------------------- /specs/xena/multi-version-api/01.diag: -------------------------------------------------------------------------------- 1 | 2 | seqdiag { 3 | node_width = 100; 4 | edge_length = 115; 5 | 6 | "Client" 7 | "Controller" 8 | "Conductor" 9 | "VnflcmDriver" 10 | "InfraDriver" 11 | "CommonUtils" 12 | "Database" 13 | 14 | Client -> Controller 15 | [label = "HTTP request (e.g. VNF Lifecycle Management)"]; 16 | Controller -> CommonUtils 17 | [label = "Process common logic"]; 18 | Controller <-- CommonUtils 19 | [label = ""]; 20 | Controller -> Database 21 | [label = "Validate request with appropriate API version"]; 22 | Controller <-- Database 23 | [label = ""]; 24 | Controller -> Database 25 | [label = "Create VnfLcmOpOcc(STARTING)"]; 26 | Controller <-- Database 27 | [label = ""]; 28 | Controller -> Conductor 29 | [label = "Send RPC"]; 30 | Client <-- Controller 31 | [label = "202 Accepted"] 32 | Conductor -> VnflcmDriver 33 | [label = "Invoke VnflcmDriver with appropriate API version"]; 34 | VnflcmDriver -> CommonUtils 35 | [label = "Process common logic"]; 36 | VnflcmDriver <-- CommonUtils 37 | [label = ""]; 38 | VnflcmDriver -> Database 39 | [label = "Update VnfLcmOpOcc(PROCESSING)"]; 40 | VnflcmDriver <-- Database 41 | [label = ""]; 42 | VnflcmDriver -> InfraDriver 43 | [label = "Invoke InfraDriver with appropriate API version"]; 44 | VnflcmDriver <-- InfraDriver 45 | [label = ""]; 46 | VnflcmDriver -> CommonUtils 47 | [label = "Process common logic"]; 48 | VnflcmDriver <-- CommonUtils 49 | [label = ""]; 50 | VnflcmDriver -> Database 51 | [label = "Update VnfLcmOpOcc(COMPLETED)"]; 52 | VnflcmDriver <-- Database 53 | [label = ""]; 54 | Conductor <-- VnflcmDriver 55 | [label = ""]; 56 | } 57 | -------------------------------------------------------------------------------- /specs/xena/multi-version-api/01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstack/tacker-specs/869bac725210ac416da6fa830fbd5fb8a6192c3f/specs/xena/multi-version-api/01.png -------------------------------------------------------------------------------- /specs/xena/pv-k8s-cluster/01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstack/tacker-specs/869bac725210ac416da6fa830fbd5fb8a6192c3f/specs/xena/pv-k8s-cluster/01.png -------------------------------------------------------------------------------- /specs/xena/support-nfv-solv3-get-information/01.diag: -------------------------------------------------------------------------------- 1 | 2 | seqdiag { 3 | Client -> "tacker-server" [label = "GET /vnflcm/v2/vnf_instances"]; 4 | Client <-- "tacker-server" [label = "Response 200 OK (VnfInstance[])"]; 5 | } 6 | -------------------------------------------------------------------------------- /specs/xena/support-nfv-solv3-get-information/01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstack/tacker-specs/869bac725210ac416da6fa830fbd5fb8a6192c3f/specs/xena/support-nfv-solv3-get-information/01.png -------------------------------------------------------------------------------- /specs/xena/support-nfv-solv3-get-information/02.diag: -------------------------------------------------------------------------------- 1 | 2 | seqdiag { 3 | Client -> "tacker-server" [label = "GET /vnflcm/v2/vnf_instances/vnf_instanceId"]; 4 | Client <-- "tacker-server" [label = "Response 200 OK (VnfInstance)"]; 5 | } 6 | -------------------------------------------------------------------------------- /specs/xena/support-nfv-solv3-get-information/02.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstack/tacker-specs/869bac725210ac416da6fa830fbd5fb8a6192c3f/specs/xena/support-nfv-solv3-get-information/02.png -------------------------------------------------------------------------------- /specs/xena/support-nfv-solv3-get-information/03.diag: -------------------------------------------------------------------------------- 1 | 2 | seqdiag { 3 | Client -> "tacker-server" [label = " GET /vnflcm/v2/vnf_lcm_op_occs"]; 4 | "tacker-server" -> "tacker-server" [label = "request validation"]; 5 | Client <-- "tacker-server" [label = " Response 200 OK"]; 6 | } 7 | -------------------------------------------------------------------------------- /specs/xena/support-nfv-solv3-get-information/03.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstack/tacker-specs/869bac725210ac416da6fa830fbd5fb8a6192c3f/specs/xena/support-nfv-solv3-get-information/03.png -------------------------------------------------------------------------------- /specs/xena/support-nfv-solv3-get-information/04.diag: -------------------------------------------------------------------------------- 1 | 2 | seqdiag { 3 | Client -> "tacker-server" [label = " GET /vnflcm/v2/vnf_lcm_op_occs/{vnfLcmOpOccId}"]; 4 | Client <-- "tacker-server" [label = " Response 200 OK"]; 5 | } 6 | -------------------------------------------------------------------------------- /specs/xena/support-nfv-solv3-get-information/04.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstack/tacker-specs/869bac725210ac416da6fa830fbd5fb8a6192c3f/specs/xena/support-nfv-solv3-get-information/04.png -------------------------------------------------------------------------------- /specs/xena/support-nfv-solv3-get-information/05.diag: -------------------------------------------------------------------------------- 1 | 2 | seqdiag { 3 | Client -> "tacker-server" [label = " POST /vnflcm/v2/subscriptions"]; 4 | "tacker-server" -> Client [label = " GET {callback URI}"]; 5 | "tacker-server" <-- Client [label = " Response 204 No Content"]; 6 | "tacker-server" -> "tacker-server" 7 | [label = " generate subscription_id (uuid)"]; 8 | Client <-- "tacker-server" [label = " Response 201 Created"]; 9 | } 10 | -------------------------------------------------------------------------------- /specs/xena/support-nfv-solv3-get-information/05.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstack/tacker-specs/869bac725210ac416da6fa830fbd5fb8a6192c3f/specs/xena/support-nfv-solv3-get-information/05.png -------------------------------------------------------------------------------- /specs/xena/support-nfv-solv3-get-information/06.diag: -------------------------------------------------------------------------------- 1 | 2 | seqdiag { 3 | Client -> "tacker-server" [label = " GET /vnflcm/v2/subscriptions"]; 4 | "tacker-server" -> "tacker-server" [label = "request validation"]; 5 | Client <-- "tacker-server" [label = " Response 200 OK"]; 6 | } 7 | -------------------------------------------------------------------------------- /specs/xena/support-nfv-solv3-get-information/06.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstack/tacker-specs/869bac725210ac416da6fa830fbd5fb8a6192c3f/specs/xena/support-nfv-solv3-get-information/06.png -------------------------------------------------------------------------------- /specs/xena/support-nfv-solv3-get-information/07.diag: -------------------------------------------------------------------------------- 1 | 2 | seqdiag { 3 | Client -> "tacker-server" [label = " GET /vnflcm/v2/subscriptions/{subscriptionId}"]; 4 | Client <-- "tacker-server" [label = " Response 200 OK"]; 5 | } 6 | -------------------------------------------------------------------------------- /specs/xena/support-nfv-solv3-get-information/07.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstack/tacker-specs/869bac725210ac416da6fa830fbd5fb8a6192c3f/specs/xena/support-nfv-solv3-get-information/07.png -------------------------------------------------------------------------------- /specs/xena/support-nfv-solv3-get-information/08.diag: -------------------------------------------------------------------------------- 1 | 2 | seqdiag { 3 | Client -> "tacker-server" 4 | [label = " DELETE /vnflcm/v2/subscriptions/{subscriptionId}"]; 5 | Client <-- "tacker-server" [label = " Response 204 No Content"]; 6 | } 7 | -------------------------------------------------------------------------------- /specs/xena/support-nfv-solv3-get-information/08.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstack/tacker-specs/869bac725210ac416da6fa830fbd5fb8a6192c3f/specs/xena/support-nfv-solv3-get-information/08.png -------------------------------------------------------------------------------- /specs/xena/support-nfv-solv3-start-and-terminate-vnf/01.diag: -------------------------------------------------------------------------------- 1 | 2 | seqdiag { 3 | Client -> "tacker-server" [label = "POST /vnflcm/v2/vnf_instances"]; 4 | "tacker-server" ->> "tacker-server" 5 | [label = "Create VNF instance resource"]; 6 | Client <-- "tacker-server" [label = "Response 201 Created"]; 7 | } 8 | -------------------------------------------------------------------------------- /specs/xena/support-nfv-solv3-start-and-terminate-vnf/01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstack/tacker-specs/869bac725210ac416da6fa830fbd5fb8a6192c3f/specs/xena/support-nfv-solv3-start-and-terminate-vnf/01.png -------------------------------------------------------------------------------- /specs/xena/support-nfv-solv3-start-and-terminate-vnf/02.diag: -------------------------------------------------------------------------------- 1 | 2 | seqdiag { 3 | Client; NFVO; tacker-server; tacker-conductor; MgmtDriver; VnfLcmDriver; 4 | 5 | Client -> "tacker-server" 6 | [label = "POST /vnflcm/v2/vnf_instances/{vnfInstanceId}/instantiate"]; 7 | Client <-- "tacker-server" [label = "Response 202 Accepted"]; 8 | "tacker-server" -> "tacker-conductor" 9 | [label = "trriger asynchronous task"]; 10 | NFVO <- "tacker-conductor" [label = "POST /grants"]; 11 | NFVO --> "tacker-conductor" [label = "201 Created"]; 12 | "tacker-conductor" -> "VnfLcmDriver" [label = "execute VnfLcmDriver"]; 13 | "tacker-conductor" <-- "VnfLcmDriver" [label = ""]; 14 | "tacker-conductor" -> "MgmtDriver" [label = "execute MgmtDriver"]; 15 | "tacker-conductor" <-- "MgmtDriver" [label = ""]; 16 | } 17 | -------------------------------------------------------------------------------- /specs/xena/support-nfv-solv3-start-and-terminate-vnf/02.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstack/tacker-specs/869bac725210ac416da6fa830fbd5fb8a6192c3f/specs/xena/support-nfv-solv3-start-and-terminate-vnf/02.png -------------------------------------------------------------------------------- /specs/xena/support-nfv-solv3-start-and-terminate-vnf/03.diag: -------------------------------------------------------------------------------- 1 | 2 | seqdiag { 3 | Client; NFVO; tacker-server; tacker-conductor; MgmtDriver; VnfLcmDriver; 4 | 5 | Client -> "tacker-server" 6 | [label = "POST /vnflcm/v2/vnf_instances/{vnfInstanceId}/terminate"]; 7 | Client <-- "tacker-server" [label = "Response 202 Accepted"]; 8 | "tacker-server" -> "tacker-conductor" 9 | [label = "trriger asynchronous task"]; 10 | NFVO <- "tacker-conductor" [label = "POST /grants"]; 11 | NFVO --> "tacker-conductor" [label = "201 Created"]; 12 | "tacker-conductor" -> "MgmtDriver" [label = "execute MgmtDriver"]; 13 | "tacker-conductor" <-- "MgmtDriver" [label = ""]; 14 | "tacker-conductor" -> "VnfLcmDriver" [label = "execute VnfLcmDriver"]; 15 | "tacker-conductor" <-- "VnfLcmDriver" [label = ""]; 16 | } 17 | -------------------------------------------------------------------------------- /specs/xena/support-nfv-solv3-start-and-terminate-vnf/03.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstack/tacker-specs/869bac725210ac416da6fa830fbd5fb8a6192c3f/specs/xena/support-nfv-solv3-start-and-terminate-vnf/03.png -------------------------------------------------------------------------------- /specs/xena/support-nfv-solv3-start-and-terminate-vnf/04.diag: -------------------------------------------------------------------------------- 1 | 2 | seqdiag { 3 | Client -> "tacker-server" 4 | [label = "DELETE /vnflcm/v2/vnf_instances/{vnfInstanceId}"]; 5 | "tacker-server" ->> "tacker-server" 6 | [label = "Delete VNF instance resource"]; 7 | Client <-- "tacker-server" [label = "Response 204 No Content"]; 8 | } 9 | -------------------------------------------------------------------------------- /specs/xena/support-nfv-solv3-start-and-terminate-vnf/04.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstack/tacker-specs/869bac725210ac416da6fa830fbd5fb8a6192c3f/specs/xena/support-nfv-solv3-start-and-terminate-vnf/04.png -------------------------------------------------------------------------------- /specs/yoga/add-sample-ansible-mgmt-driver/01.diag: -------------------------------------------------------------------------------- 1 | 2 | seqdiag { 3 | node_width = 80; 4 | edge_length = 100; 5 | 6 | "Tacker-conductor" 7 | "AnsibleMgmtDriver" 8 | "ScriptANSIBLE" 9 | "Ansible" 10 | "VnfInstance" 11 | 12 | "Tacker-conductor" -> "AnsibleMgmtDriver" 13 | [label = "Execute LCM Configuration"]; 14 | "AnsibleMgmtDriver" -> "ScriptANSIBLE" 15 | [label = "Get configuration setting and select ansible playbook"]; 16 | "AnsibleMgmtDriver" <- "ScriptANSIBLE" 17 | [label = "return ansible playbook path at Scripts and configuration"]; 18 | "AnsibleMgmtDriver" -> "Ansible" 19 | [label = "Execute ansible-playbook command using playbook in Scripts"]; 20 | "Ansible" -> "VnfInstance" 21 | [label = "Configuration instance"]; 22 | 23 | } 24 | -------------------------------------------------------------------------------- /specs/yoga/add-sample-ansible-mgmt-driver/01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstack/tacker-specs/869bac725210ac416da6fa830fbd5fb8a6192c3f/specs/yoga/add-sample-ansible-mgmt-driver/01.png -------------------------------------------------------------------------------- /specs/yoga/container-update/01.diag: -------------------------------------------------------------------------------- 1 | 2 | seqdiag { 3 | node_width = 80; 4 | edge_length = 100; 5 | 6 | "Client" 7 | "Tacker-server" 8 | "Tacker-conductor" 9 | "VnfLcmDriver" 10 | "MgmtDriver" 11 | "TackerDB" 12 | "VIM(Kubernetes)" 13 | 14 | Client -> "Tacker-server" 15 | [label = "1. PATCH /vnflcm/v1/vnf_instances/{vnfInstanceId}"]; 16 | Client <-- "Tacker-server" 17 | [label = "Response 202 Accepted"]; 18 | "Tacker-server" -> "Tacker-conductor" 19 | [label = ""]; 20 | "Tacker-conductor" -> "VnfLcmDriver" 21 | [label = "2. modify_vnf"]; 22 | "VnfLcmDriver" -> "MgmtDriver" 23 | [label = "3. modify_start"]; 24 | "VnfLcmDriver" <-- "MgmtDriver" 25 | [label = ""]; 26 | "VnfLcmDriver" -> "TackerDB" 27 | [label = "4. Update vnfdid"]; 28 | "VnfLcmDriver" <-- "TackerDB" 29 | [label = ""]; 30 | "VnfLcmDriver" -> "MgmtDriver" 31 | [label = "5. modify_end"]; 32 | "MgmtDriver" -> "VIM(Kubernetes)" 33 | [label = "5-1. replace config"]; 34 | "MgmtDriver" <-- "VIM(Kubernetes)" 35 | [label = ""]; 36 | "MgmtDriver" -> "VIM(Kubernetes)" 37 | [label = "5-2. recreate Pod"]; 38 | "MgmtDriver" <-- "VIM(Kubernetes)" 39 | [label = ""]; 40 | "VnfLcmDriver" <-- "MgmtDriver" 41 | [label = ""]; 42 | "VnfLcmDriver" -> "TackerDB" 43 | [label = "6. Update resourceid"]; 44 | "VnfLcmDriver" <-- "TackerDB" 45 | [label = ""]; 46 | "Tacker-conductor" <-- "VnfLcmDriver" 47 | [label = ""]; 48 | } 49 | -------------------------------------------------------------------------------- /specs/yoga/container-update/01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstack/tacker-specs/869bac725210ac416da6fa830fbd5fb8a6192c3f/specs/yoga/container-update/01.png -------------------------------------------------------------------------------- /specs/yoga/enhance-nfv-solv3-lcm-operation/01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstack/tacker-specs/869bac725210ac416da6fa830fbd5fb8a6192c3f/specs/yoga/enhance-nfv-solv3-lcm-operation/01.png -------------------------------------------------------------------------------- /specs/yoga/enhance-nfv-solv3-lcm-operation/02.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstack/tacker-specs/869bac725210ac416da6fa830fbd5fb8a6192c3f/specs/yoga/enhance-nfv-solv3-lcm-operation/02.png -------------------------------------------------------------------------------- /specs/yoga/enhance-nfv-solv3-lcm-operation/03.diag: -------------------------------------------------------------------------------- 1 | 2 | seqdiag { 3 | node_width = 140; 4 | edge_length = 340; 5 | 6 | Client; tacker-server; tacker-conductor; 7 | 8 | Client -> "tacker-server" [label = "PATCH vnflcm/v2/vnf_instances/{vnfInstanceId}"]; 9 | Client <-- "tacker-server" [label = "Response 202 Accepted"]; 10 | "tacker-server" -> "tacker-conductor" [label = "trigger asynchronous task"]; 11 | "tacker-conductor" ->> "tacker-conductor" [label = "execute notification process"]; 12 | Client <- "tacker-conductor" [label = "POST {callback URI} (PROCESSING)"]; 13 | Client --> "tacker-conductor" [label = "Response: 204 No Content"]; 14 | "tacker-conductor" ->> "tacker-conductor" [label = "VNF Modification"]; 15 | "tacker-conductor" ->> "tacker-conductor" [label = "execute notification process"]; 16 | Client <- "tacker-conductor" [label = "POST {callback URI} (COMPLETED or FAILED_TEMP)"]; 17 | Client --> "tacker-conductor" [label = "Response: 204 No Content"]; 18 | } 19 | -------------------------------------------------------------------------------- /specs/yoga/enhance-nfv-solv3-lcm-operation/03.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstack/tacker-specs/869bac725210ac416da6fa830fbd5fb8a6192c3f/specs/yoga/enhance-nfv-solv3-lcm-operation/03.png -------------------------------------------------------------------------------- /specs/yoga/enhance-nfv-solv3-lcm-operation/04.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstack/tacker-specs/869bac725210ac416da6fa830fbd5fb8a6192c3f/specs/yoga/enhance-nfv-solv3-lcm-operation/04.png -------------------------------------------------------------------------------- /specs/yoga/index.rst: -------------------------------------------------------------------------------- 1 | ========================== 2 | Tacker Yoga Specifications 3 | ========================== 4 | 5 | .. toctree:: 6 | :glob: 7 | :maxdepth: 1 8 | 9 | * 10 | -------------------------------------------------------------------------------- /specs/yoga/k8s-namespace/01.diag: -------------------------------------------------------------------------------- 1 | 2 | seqdiag { 3 | node_width = 80; 4 | edge_length = 100; 5 | 6 | "Client" 7 | "Tacker-server" 8 | "Tacker-conductor" 9 | "VnfLcmDriver" 10 | "KubernetesInfraDriver" 11 | "Heat" 12 | "TackerDB" 13 | "k8s client" 14 | 15 | Client -> "Tacker-server" 16 | [label = "POST /vnf_instances/{vnfInstanceId}/instantiate"]; 17 | "Tacker-server" -> "Tacker-conductor" 18 | [label = "trigger asynchronous task"]; 19 | Client <-- "Tacker-server" 20 | [label = "Response 202 Accepted"]; 21 | "Tacker-conductor" -> "VnfLcmDriver" 22 | [label = "execute VnfLcmDriver"]; 23 | "VnfLcmDriver" -> "KubernetesInfraDriver" 24 | [label = "execute KubernetesInfraDriver"]; 25 | "KubernetesInfraDriver" -> "TackerDB" 26 | [label = "get package info"]; 27 | "KubernetesInfraDriver" <-- "TackerDB" 28 | [label = "return package info"]; 29 | "KubernetesInfraDriver" -> "TackerDB" 30 | [label = "Save the namespace to the vnf_resources table"] 31 | "KubernetesInfraDriver" <-- "TackerDB" 32 | [label = ""] 33 | "KubernetesInfraDriver" -> "k8s client" 34 | [label = "create Kubernetes resource"] 35 | "KubernetesInfraDriver" <-- "k8s client" 36 | [label = ""] 37 | "KubernetesInfraDriver" -> "TackerDB" 38 | [label = "save pod information"] 39 | "KubernetesInfraDriver" <-- "TackerDB" 40 | [label = ""] 41 | "VnfLcmDriver" <-- "KubernetesInfraDriver" 42 | [label = ""]; 43 | "Tacker-conductor" <-- "VnfLcmDriver" 44 | [label = ""]; 45 | } 46 | -------------------------------------------------------------------------------- /specs/yoga/k8s-namespace/01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstack/tacker-specs/869bac725210ac416da6fa830fbd5fb8a6192c3f/specs/yoga/k8s-namespace/01.png -------------------------------------------------------------------------------- /specs/yoga/multi-tenant-policy/01.diag: -------------------------------------------------------------------------------- 1 | 2 | seqdiag { 3 | node_width = 80; 4 | edge_length = 100; 5 | 6 | "Client belong to tenant-B" 7 | "Tacker-server" 8 | "Tacker-condunctor" 9 | "Notify Receiver of tenant-A" 10 | "Notify Receiver of tenant-B" 11 | 12 | "Client belong to tenant-B" -> "Tacker-server" 13 | [label = "Request LCM Operation"]; 14 | "Tacker-server" -> "Tacker-condunctor" 15 | [label = "Execute LCM Operation"]; 16 | "Tacker-condunctor" -> "Tacker-condunctor" 17 | [label = "Checking tenant of operation and vnf instance"]; 18 | "Tacker-condunctor" -> "Notify Receiver of tenant-B" 19 | [label = "Send LCM Operation Notification"]; 20 | "Tacker-condunctor" <-- "Notify Receiver of tenant-B" 21 | "Tacker-condunctor" -> "Tacker-condunctor" 22 | [label = "Execute LCM Process"]; 23 | 24 | } 25 | -------------------------------------------------------------------------------- /specs/yoga/multi-tenant-policy/01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstack/tacker-specs/869bac725210ac416da6fa830fbd5fb8a6192c3f/specs/yoga/multi-tenant-policy/01.png -------------------------------------------------------------------------------- /specs/yoga/multi-tenant-policy/02.diag: -------------------------------------------------------------------------------- 1 | 2 | seqdiag { 3 | node_width = 80; 4 | edge_length = 100; 5 | 6 | "client" 7 | "tacker-server" 8 | "tacker-condunctor" 9 | "vnflcm_driver" 10 | "infra_driver" 11 | 12 | "client" -> "tacker-server" 13 | [label = "Request Instantiate VNF"]; 14 | "client" <- "tacker-server" 15 | "tacker-server" --> "tacker-condunctor" 16 | [label = "Execute instantiate"]; 17 | "tacker-condunctor" -> "vnflcm_driver" 18 | [label = "Execute instantiate_vnf"]; 19 | "vnflcm_driver" -> "vnflcm_driver" 20 | [label = "Verify VIM and VNF belong to the same Tenant"]; 21 | === if same tenant === 22 | "vnflcm_driver" -> "infra_driver" 23 | [label = "create VNF resrouces"]; 24 | === if not same tenant === 25 | "tacker-condunctor" <- "vnflcm_driver" 26 | [label = "return TenantMatchFailure"]; 27 | 28 | } 29 | -------------------------------------------------------------------------------- /specs/yoga/multi-tenant-policy/02.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstack/tacker-specs/869bac725210ac416da6fa830fbd5fb8a6192c3f/specs/yoga/multi-tenant-policy/02.png -------------------------------------------------------------------------------- /specs/yoga/multi-tenant-policy/03.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstack/tacker-specs/869bac725210ac416da6fa830fbd5fb8a6192c3f/specs/yoga/multi-tenant-policy/03.png -------------------------------------------------------------------------------- /specs/yoga/multi-tenant-policy/04.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstack/tacker-specs/869bac725210ac416da6fa830fbd5fb8a6192c3f/specs/yoga/multi-tenant-policy/04.png -------------------------------------------------------------------------------- /specs/yoga/multi-tenant-policy/05.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstack/tacker-specs/869bac725210ac416da6fa830fbd5fb8a6192c3f/specs/yoga/multi-tenant-policy/05.png -------------------------------------------------------------------------------- /specs/yoga/multi-tenant-policy/06.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstack/tacker-specs/869bac725210ac416da6fa830fbd5fb8a6192c3f/specs/yoga/multi-tenant-policy/06.png -------------------------------------------------------------------------------- /specs/yoga/multi-tenant-policy/07.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstack/tacker-specs/869bac725210ac416da6fa830fbd5fb8a6192c3f/specs/yoga/multi-tenant-policy/07.png -------------------------------------------------------------------------------- /specs/yoga/multi-tenant-policy/08.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstack/tacker-specs/869bac725210ac416da6fa830fbd5fb8a6192c3f/specs/yoga/multi-tenant-policy/08.png -------------------------------------------------------------------------------- /specs/yoga/multi-tenant-policy/09.diag: -------------------------------------------------------------------------------- 1 | 2 | seqdiag { 3 | node_width = 80; 4 | edge_length = 100; 5 | 6 | "Test Class" 7 | "User A" 8 | "User B" 9 | "Tacker" 10 | "VNF Package A" 11 | "VNF Package B" 12 | 13 | "Test Class" -> "User A" [label = "Set User"]; 14 | "Test Class" <- "User A"; 15 | 16 | "Test Class" -> "User B" [label = "Set User"]; 17 | "Test Class" <- "User B"; 18 | 19 | "User A" -> "Tacker" [label = "Delete VNF Package B"]; 20 | "User A" <-- "Tacker" [label = "Failed to delete VNF Package B"]; 21 | 22 | "User B" -> "Tacker" [label = "Delete VNF Package A"]; 23 | "User B" <-- "Tacker" [label = "Failed to delete VNF Package A"]; 24 | 25 | "User A" -> "Tacker" [label = "Delete VNF Package A"]; 26 | "Tacker" -> "VNF Package A" [label = "Delete VNF Package A"]; 27 | "Tacker" <- "VNF Package A"; 28 | "User A" <-- "Tacker" [label = "Deleted VNF Package A"]; 29 | 30 | "User B" -> "Tacker" [label = "Delete VNF Package B"]; 31 | "Tacker" -> "VNF Package B" [label = "Delete VNF Package B"]; 32 | "Tacker" <- "VNF Package B"; 33 | "User B" <-- "Tacker" [label = "Deleted VNF Package B"]; 34 | 35 | } 36 | -------------------------------------------------------------------------------- /specs/yoga/multi-tenant-policy/09.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstack/tacker-specs/869bac725210ac416da6fa830fbd5fb8a6192c3f/specs/yoga/multi-tenant-policy/09.png -------------------------------------------------------------------------------- /specs/yoga/multi-tenant-policy/10.diag: -------------------------------------------------------------------------------- 1 | 2 | seqdiag { 3 | node_width = 80; 4 | edge_length = 100; 5 | 6 | "Test Class" 7 | "User A" 8 | "User B" 9 | "Tacker" 10 | "Subscription A" 11 | "Subscription B" 12 | 13 | "Test Class" -> "User A" [label = "Set User"]; 14 | "Test Class" <- "User A"; 15 | 16 | "Test Class" -> "User B" [label = "Set User"]; 17 | "Test Class" <- "User B"; 18 | 19 | "User A" -> "Tacker" [label = "Delete Subscription B"]; 20 | "User A" <-- "Tacker" [label = "Failed to delete Subscription B"]; 21 | 22 | "User B" -> "Tacker" [label = "Delete Subscription A"]; 23 | "User B" <-- "Tacker" [label = "Failed to delete Subscription A"]; 24 | 25 | 26 | "User A" -> "Tacker" [label = "Delete Subscription A"]; 27 | "Tacker" -> "Subscription A" [label = "Delete Subscription A"]; 28 | "Tacker" <- "Subscription A"; 29 | "User A" <-- "Tacker" [label = "Deleted Subscription A"]; 30 | 31 | "User B" -> "Tacker" [label = "Delete Subscription B"]; 32 | "Tacker" -> "Subscription B" [label = "Delete Subscription B"]; 33 | "Tacker" <- "Subscription B"; 34 | "User B" <-- "Tacker" [label = "Deleted Subscription B"]; 35 | 36 | } 37 | -------------------------------------------------------------------------------- /specs/yoga/multi-tenant-policy/10.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstack/tacker-specs/869bac725210ac416da6fa830fbd5fb8a6192c3f/specs/yoga/multi-tenant-policy/10.png -------------------------------------------------------------------------------- /specs/yoga/multi-tenant-policy/11.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstack/tacker-specs/869bac725210ac416da6fa830fbd5fb8a6192c3f/specs/yoga/multi-tenant-policy/11.png -------------------------------------------------------------------------------- /specs/yoga/prometheus-plugin-heal/01.diag: -------------------------------------------------------------------------------- 1 | 2 | seqdiag { 3 | node_width = 100; 4 | edge_length = 150; 5 | 6 | "Alertmanager" 7 | "Prometheus-Plugin" 8 | "VnfFmDriver" 9 | "Tacker DB" 10 | 11 | "Alertmanager" -> "Prometheus-Plugin" 12 | [label = "1. Send alert to the specified URL"]; 13 | "Prometheus-Plugin" -> "Prometheus-Plugin" 14 | [label = "2. Check items of prometheus_plugin from cfg.CONF.tacker", note = "If prometheus_plugin is False, asynchronous task is over"]; 15 | "Prometheus-Plugin" -> "Prometheus-Plugin" 16 | [label = "3. Determine whether the alert is AutoHeal or AutoScale", note = "If it is scale, refer to the processing flow of AutoScale"]; 17 | "Prometheus-Plugin" -> "Tacker DB" 18 | [label = "4. Find the corresponding ComputeResource from the DB"]; 19 | "Prometheus-Plugin" <-- "Tacker DB" 20 | [label = "InstantiatedVnfInfo.vnfcResourceInfo.computeResource"]; 21 | "Prometheus-Plugin" -> "Prometheus-Plugin" 22 | [label = "5. Convert received alert to alarm"]; 23 | "Prometheus-Plugin" -> "VnfFmDriver" 24 | [label = "6. Execute VnfFmDriver"]; 25 | "VnfFmDriver" -> "Tacker DB" 26 | [label = "7. Save alarm to DB"]; 27 | "VnfFmDriver" <-- "Tacker DB" 28 | "Prometheus-Plugin" <-- "VnfFmDriver" 29 | } 30 | -------------------------------------------------------------------------------- /specs/yoga/prometheus-plugin-heal/01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstack/tacker-specs/869bac725210ac416da6fa830fbd5fb8a6192c3f/specs/yoga/prometheus-plugin-heal/01.png -------------------------------------------------------------------------------- /specs/yoga/prometheus-plugin-heal/02.diag: -------------------------------------------------------------------------------- 1 | 2 | seqdiag { 3 | node_width = 100; 4 | edge_length = 150; 5 | 6 | "Client" 7 | "Tacker-server" 8 | "Tacker-conductor" 9 | "VnfFmDriver" 10 | "Tacker DB" 11 | 12 | "Client" -> "Tacker-server" 13 | [label = "8. Query alarms"]; 14 | "Tacker-server" -> "Tacker-conductor" 15 | [label = "9. Trigger synchronization task"]; 16 | "Tacker-conductor" -> "VnfFmDriver" 17 | [label = "10. Query alarms"]; 18 | "VnfFmDriver" -> "Tacker DB" 19 | [label = "11. Get alarms from DB according to conditions"]; 20 | "VnfFmDriver" <-- "Tacker DB" 21 | [label = "Alarms"]; 22 | "Tacker-conductor" <-- "VnfFmDriver" 23 | [label = "Alarms"]; 24 | "Tacker-server" <-- "Tacker-conductor" 25 | [label = "Alarms"]; 26 | "Client" <-- "Tacker-server" 27 | [label = "Alarms"]; 28 | "Client" -> "Client" 29 | [label = "12. Get VNFC information from alarm", note = "If no alarm is returned, the processing is over"]; 30 | "Client" -> "Tacker-server" 31 | [label = "13. Heal specified vnfc"]; 32 | "Tacker-server" -> "Tacker-conductor" 33 | [label = "14. Trigger asynchronous task", note = "The same with the default heal operation"]; 34 | "Client" <-- "Tacker-server" 35 | [label = "Response 202 Accepted"]; 36 | } 37 | -------------------------------------------------------------------------------- /specs/yoga/prometheus-plugin-heal/02.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstack/tacker-specs/869bac725210ac416da6fa830fbd5fb8a6192c3f/specs/yoga/prometheus-plugin-heal/02.png -------------------------------------------------------------------------------- /specs/yoga/prometheus-plugin-heal/03.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstack/tacker-specs/869bac725210ac416da6fa830fbd5fb8a6192c3f/specs/yoga/prometheus-plugin-heal/03.png -------------------------------------------------------------------------------- /specs/yoga/support-heal-scale-in-user_lcm/01.diag: -------------------------------------------------------------------------------- 1 | 2 | seqdiag { 3 | Client -> WSGIMiddleware [label = "1. HEAL VNF"]; 4 | WSGIMiddleware -->> WSGIMiddleware [label = "request validation"]; 5 | Client <-- WSGIMiddleware [label = "202 Accepted"]; 6 | WSGIMiddleware -> TackerConductor [label = "Trigger asynchronous task"]; 7 | TackerConductor --> VnfLcmDriver [label = "heal_vnf(vnf_instance, heal_vnf_request)"]; 8 | VnfLcmDriver --> OpenstackDriver [note = "Determine the following:\n 1. If UserData Class is specified in Instantiate.\n 2. heal exists in the specified class.\n 3. If heal does not exist in the UserData Class, do existing process."]; 9 | OpenstackDriver --> OpenstackDriver [note = "Execute heal of UserData Class based on the HOT info,\n VNFD info, Stack parameter info and VNF info, \n and create Parameter"] 10 | OpenstackDriver --> Heat [label = "2. Mark resource unhealthy"]; 11 | OpenstackDriver <-- Heat; 12 | OpenstackDriver --> Heat [label = "3. update stack"]; 13 | OpenstackDriver <-- Heat [label = "stack updated"]; 14 | VnfLcmDriver <-- OpenstackDriver; 15 | VnfLcmDriver --> OpenstackDriver [label = "post_heal_vnf(vnf_instance, vim_connection_info,heal_vnf_request)"]; 16 | OpenstackDriver --> Heat [label = "4. get updated resource data"]; 17 | OpenstackDriver <-- Heat [label = "resources"]; 18 | VnfLcmDriver <-- OpenstackDriver; 19 | VnfLcmDriver -->> VnfLcmDriver [label = "5. update DB"]; 20 | TackerConductor <-- VnfLcmDriver [label = "request successfully completed"]; 21 | 22 | } 23 | -------------------------------------------------------------------------------- /specs/yoga/support-heal-scale-in-user_lcm/01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstack/tacker-specs/869bac725210ac416da6fa830fbd5fb8a6192c3f/specs/yoga/support-heal-scale-in-user_lcm/01.png -------------------------------------------------------------------------------- /specs/yoga/support-heal-scale-in-user_lcm/02.diag: -------------------------------------------------------------------------------- 1 | 2 | seqdiag { 3 | Client -> WSGIMiddleware [label = "1. Scale VNF"]; 4 | WSGIMiddleware -->> WSGIMiddleware [label = "request validation"]; 5 | Client <-- WSGIMiddleware [label = "202 Accepted"]; 6 | WSGIMiddleware -> TackerConductor [label = "Trigger asynchronous task"]; 7 | TackerConductor --> VnfLcmDriver [label = "scale_vnf(vnf_instance, scale_vnf_request)"]; 8 | VnfLcmDriver --> OpenstackDriver [note = "Determine the following:\n 1. If UserData Class is specified in Instantiate.\n 2. Scale exists in the specified class.\n 3. If Scale does not exist in the UserData Class, do existing process."]; 9 | OpenstackDriver --> OpenstackDriver [note = "Execute heal of UserData Class based on the HOT info,\n VNFD info, Stack parameter info and VNF info, \n and create Parameter"] 10 | OpenstackDriver --> Heat [label = "2. update stack"]; 11 | OpenstackDriver <-- Heat [label = "stack updated"]; 12 | VnfLcmDriver <-- OpenstackDriver; 13 | VnfLcmDriver --> OpenstackDriver [label = "post_scale_vnf(vnf_instance, vim_connection_info,scale_vnf_request)"]; 14 | OpenstackDriver --> Heat [label = "3. get updated resource data"]; 15 | OpenstackDriver <-- Heat [label = "resources"]; 16 | VnfLcmDriver <-- OpenstackDriver; 17 | VnfLcmDriver -->> VnfLcmDriver [label = "5. update DB"]; 18 | TackerConductor <-- VnfLcmDriver [label = "request successfully completed"]; 19 | 20 | } 21 | -------------------------------------------------------------------------------- /specs/yoga/support-heal-scale-in-user_lcm/02.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstack/tacker-specs/869bac725210ac416da6fa830fbd5fb8a6192c3f/specs/yoga/support-heal-scale-in-user_lcm/02.png -------------------------------------------------------------------------------- /specs/yoga/support-nfv-solv3-error-handling/01.diag: -------------------------------------------------------------------------------- 1 | 2 | seqdiag { 3 | Client -> "tacker-server" 4 | [label = "POST /vnflcm/v2/vnf_lcm_op_occs/{vnfLcmOpOccId}/retry"]; 5 | Client <-- "tacker-server" [label = "Response 202 Accepted"]; 6 | "tacker-server" ->> "tacker-conductor" 7 | [label = "trigger asynchronous task"]; 8 | "tacker-conductor" ->> "tacker-conductor" [label = "start retry procedure"]; 9 | "tacker-conductor" ->> "tacker-conductor" [label = "execute notification process"]; 10 | Client <- "tacker-conductor" [label = "POST {callback URI} (PROCESSING)"]; 11 | Client --> "tacker-conductor" [label = "Response: 204 No Content"]; 12 | "tacker-conductor" ->> "tacker-conductor" [label = "end retry procedure"]; 13 | "tacker-conductor" ->> "tacker-conductor" [label = "execute notification process"]; 14 | Client <- "tacker-conductor" [label = "POST {callback URI} (COMPLETED or FAILED_TEMP)"]; 15 | Client --> "tacker-conductor" [label = "Response: 204 No Content"]; 16 | } 17 | -------------------------------------------------------------------------------- /specs/yoga/support-nfv-solv3-error-handling/01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstack/tacker-specs/869bac725210ac416da6fa830fbd5fb8a6192c3f/specs/yoga/support-nfv-solv3-error-handling/01.png -------------------------------------------------------------------------------- /specs/yoga/support-nfv-solv3-error-handling/02.diag: -------------------------------------------------------------------------------- 1 | 2 | seqdiag { 3 | Client; tacker-server; tacker-conductor; tacker-database; 4 | Client -> "tacker-server" 5 | [label = "POST /vnflcm/v2/vnf_lcm_op_occs/{vnfLcmOpOccId}/fail"]; 6 | "tacker-server" -> "tacker-database" 7 | [label = "mark operation as failed"]; 8 | "tacker-server" <-- "tacker-database" 9 | "tacker-server" ->> "tacker-conductor" 10 | [label = "trigger asynchronous task"]; 11 | "tacker-conductor" ->> "tacker-conductor" [label = "execute notification process"]; 12 | Client <- "tacker-conductor" [label = "POST {callback URI} (FAILED)"]; 13 | Client --> "tacker-conductor" [label = "Response: 204 No Content"]; 14 | Client <-- "tacker-server" [label = "Response 200 OK"]; 15 | } 16 | -------------------------------------------------------------------------------- /specs/yoga/support-nfv-solv3-error-handling/02.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstack/tacker-specs/869bac725210ac416da6fa830fbd5fb8a6192c3f/specs/yoga/support-nfv-solv3-error-handling/02.png -------------------------------------------------------------------------------- /specs/yoga/support-nfv-solv3-error-handling/03.diag: -------------------------------------------------------------------------------- 1 | 2 | seqdiag { 3 | node_width = 90; 4 | edge_length = 130; 5 | 6 | Client -> "tacker-server" 7 | [label = "POST /vnflcm/v2/vnf_lcm_op_occs/{vnfLcmOpOccId}/rollback"]; 8 | Client <-- "tacker-server" [label = "Response 202 Accepted"]; 9 | "tacker-server" ->> "tacker-conductor" 10 | [label = "trigger asynchronous task"]; 11 | "tacker-conductor" -> "tacker-database" 12 | [label = "mark operation as ROLLING_BACK"]; 13 | "tacker-conductor" <-- "tacker-database" 14 | "tacker-conductor" ->> "tacker-conductor" 15 | [label = "execute notification process"]; 16 | Client <- "tacker-conductor" 17 | [label = "POST {callback URI} (ROLLING_BACK)"]; 18 | Client --> "tacker-conductor" [label = "Response: 204 No Content"]; 19 | "tacker-conductor" -> "VnfLcmDriver" [label = "execute VnfLcmDriver"]; 20 | "VnfLcmDriver" -> "openstackDriver" [label = "execute openstackDriver"]; 21 | "openstackDriver" -> "heat" [label = "delete stack if exists"]; 22 | "openstackDriver" <-- "heat" [label = ""]; 23 | "VnfLcmDriver" <-- "openstackDriver" [label = ""]; 24 | "tacker-conductor" <-- "VnfLcmDriver" [label = ""]; 25 | "tacker-conductor" -> "tacker-database" 26 | [label = "mark operation as ROLLED_BACK"]; 27 | "tacker-conductor" <-- "tacker-database" 28 | "tacker-conductor" ->> "tacker-conductor" 29 | [label = "execute notification process"]; 30 | Client <- "tacker-conductor" 31 | [label = "POST {callback URI} (ROLLED_BACK or FAILED_TEMP)"]; 32 | Client --> "tacker-conductor" [label = "Response: 204 No Content"]; 33 | } 34 | -------------------------------------------------------------------------------- /specs/yoga/support-nfv-solv3-error-handling/03.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstack/tacker-specs/869bac725210ac416da6fa830fbd5fb8a6192c3f/specs/yoga/support-nfv-solv3-error-handling/03.png -------------------------------------------------------------------------------- /specs/yoga/support-nfv-solv3-error-handling/04.diag: -------------------------------------------------------------------------------- 1 | 2 | seqdiag { 3 | node_width = 75; 4 | edge_length = 100; 5 | 6 | Client -> "tacker-server" 7 | [label = "POST /vnflcm/v2/vnf_lcm_op_occs/{vnfLcmOpOccId}/rollback"]; 8 | Client <-- "tacker-server" [label = "Response 202 Accepted"]; 9 | "tacker-server" ->> "tacker-conductor" 10 | [label = "trigger asynchronous task"]; 11 | "tacker-conductor" -> "tacker-database" 12 | [label = "mark operation as ROLLING_BACK"]; 13 | "tacker-conductor" <-- "tacker-database" 14 | "tacker-conductor" ->> "tacker-conductor" 15 | [label = "execute notification process"]; 16 | Client <- "tacker-conductor" 17 | [label = "POST {callback URI} (ROLLING_BACK)"]; 18 | Client --> "tacker-conductor" [label = "Response: 204 No Content"]; 19 | "tacker-conductor" -> "VnfLcmDriver" [label = "execute LCM operation"]; 20 | "VnfLcmDriver" -> "openstackDriver" [label = "execute openstackDriver"]; 21 | "openstackDriver" -> "heat" [label = "mark stack unhealthy (PATCH /v1/{tenant_id}/stacks/{stack_name}/{stack_id}/resources/{resource_name_or_physical_id})"]; 22 | "openstackDriver" <-- "heat" [label = ""]; 23 | "openstackDriver" -> "heat" [label = "update stack (PATCH /v1/{tenant_id}/stacks/{stack_name}/{stack_id})"]; 24 | "openstackDriver" <-- "heat" [label = ""]; 25 | "VnfLcmDriver" <-- "openstackDriver" [label = ""]; 26 | "tacker-conductor" <-- "VnfLcmDriver" [label = ""]; 27 | "tacker-conductor" -> "tacker-database" 28 | [label = "mark operation as ROLLED_BACK"]; 29 | "tacker-conductor" <-- "tacker-database" 30 | "tacker-conductor" ->> "tacker-conductor" 31 | [label = "execute notification process"]; 32 | Client <- "tacker-conductor" 33 | [label = "POST {callback URI} (ROLLED_BACK or FAILED_TEMP)"]; 34 | Client --> "tacker-conductor" [label = "Response: 204 No Content"]; 35 | } 36 | -------------------------------------------------------------------------------- /specs/yoga/support-nfv-solv3-error-handling/04.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstack/tacker-specs/869bac725210ac416da6fa830fbd5fb8a6192c3f/specs/yoga/support-nfv-solv3-error-handling/04.png -------------------------------------------------------------------------------- /specs/yoga/support-nfv-solv3-error-handling/05.diag: -------------------------------------------------------------------------------- 1 | 2 | seqdiag { 3 | node_width = 90; 4 | edge_length = 130; 5 | 6 | Client -> "tacker-server" 7 | [label = "POST /vnflcm/v2/vnf_lcm_op_occs/{vnfLcmOpOccId}/rollback"]; 8 | Client <-- "tacker-server" [label = "Response 202 Accepted"]; 9 | "tacker-server" ->> "tacker-conductor" 10 | [label = "trigger asynchronous task"]; 11 | "tacker-conductor" -> "tacker-database" 12 | [label = "mark operation as ROLLING_BACK"]; 13 | "tacker-conductor" <-- "tacker-database" 14 | "tacker-conductor" ->> "tacker-conductor" 15 | [label = "execute notification process"]; 16 | Client <- "tacker-conductor" 17 | [label = "POST {callback URI} (ROLLING_BACK)"]; 18 | Client --> "tacker-conductor" [label = "Response: 204 No Content"]; 19 | "tacker-conductor" -> "tacker-database" 20 | [label = "mark operation as ROLLED_BACK"]; 21 | "tacker-conductor" <-- "tacker-database" 22 | "tacker-conductor" ->> "tacker-conductor" 23 | [label = "execute notification process"]; 24 | Client <- "tacker-conductor" 25 | [label = "POST {callback URI} (ROLLED_BACK or FAILED_TEMP)"]; 26 | Client --> "tacker-conductor" [label = "Response: 204 No Content"]; 27 | } 28 | -------------------------------------------------------------------------------- /specs/yoga/support-nfv-solv3-error-handling/05.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstack/tacker-specs/869bac725210ac416da6fa830fbd5fb8a6192c3f/specs/yoga/support-nfv-solv3-error-handling/05.png -------------------------------------------------------------------------------- /specs/yoga/support-nfv-solv3-error-handling/06.diag: -------------------------------------------------------------------------------- 1 | 2 | seqdiag { 3 | node_width = 90; 4 | edge_length = 130; 5 | 6 | Client -> "tacker-server" 7 | [label = "POST /vnflcm/v2/vnf_lcm_op_occs/{vnfLcmOpOccId}/rollback"]; 8 | Client <-- "tacker-server" [label = "Response 202 Accepted"]; 9 | "tacker-server" ->> "tacker-conductor" 10 | [label = "trigger asynchronous task"]; 11 | "tacker-conductor" -> "tacker-database" 12 | [label = "mark operation as ROLLING_BACK"]; 13 | "tacker-conductor" <-- "tacker-database" 14 | "tacker-conductor" ->> "tacker-conductor" 15 | [label = "execute notification process"]; 16 | Client <- "tacker-conductor" 17 | [label = "POST {callback URI} (ROLLING_BACK)"]; 18 | Client --> "tacker-conductor" [label = "Response: 204 No Content"]; 19 | "tacker-conductor" -> "VnfLcmDriver" [label = "execute LCM operation"]; 20 | "VnfLcmDriver" ->> "VnfLcmDriver" [label = "recreated stack parameters using instantiatedVnfInfo"]; 21 | "VnfLcmDriver" -> "openstackDriver" [label = "execute openstackDriver"]; 22 | "openstackDriver" -> "heat" [label = "update stack (PATCH /v1/{tenant_id}/stacks/{stack_name}/{stack_id})"]; 23 | "openstackDriver" <-- "heat" [label = ""]; 24 | "VnfLcmDriver" <-- "openstackDriver" [label = ""]; 25 | "tacker-conductor" <-- "VnfLcmDriver" [label = ""]; 26 | "tacker-conductor" -> "tacker-database" 27 | [label = "mark operation as ROLLED_BACK"]; 28 | "tacker-conductor" <-- "tacker-database" 29 | "tacker-conductor" ->> "tacker-conductor" 30 | [label = "execute notification process"]; 31 | Client <- "tacker-conductor" 32 | [label = "POST {callback URI} (ROLLED_BACK or FAILED_TEMP)"]; 33 | Client --> "tacker-conductor" [label = "Response: 204 No Content"]; 34 | } 35 | -------------------------------------------------------------------------------- /specs/yoga/support-nfv-solv3-error-handling/06.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstack/tacker-specs/869bac725210ac416da6fa830fbd5fb8a6192c3f/specs/yoga/support-nfv-solv3-error-handling/06.png -------------------------------------------------------------------------------- /specs/yoga/upgrade-vnf-package/01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstack/tacker-specs/869bac725210ac416da6fa830fbd5fb8a6192c3f/specs/yoga/upgrade-vnf-package/01.png -------------------------------------------------------------------------------- /specs/yoga/upgrade-vnf-package/02.diag: -------------------------------------------------------------------------------- 1 | 2 | seqdiag { 3 | node_width = 80; 4 | edge_length = 100; 5 | 6 | "Client" 7 | "Tacker-server" 8 | "Tacker-conductor" 9 | "VnfLcmDriver" 10 | "InfraDriver" 11 | "CoordinateVNF script" 12 | "TackerDB" 13 | "VIM (OpenStack)" 14 | "VNF" 15 | 16 | Client -> "Tacker-server" 17 | [label = "1. POST /vnflcm/v2/vnf_instances/{vnfInstanceId}/change_vnfpkg"]; 18 | Client <-- "Tacker-server" 19 | [label = "Response 202 Accepted"]; 20 | "Tacker-server" ->> "Tacker-conductor" 21 | [label = "2. ChangeCurrentVNFPackage"]; 22 | "Tacker-conductor" -> "VnfLcmDriver" 23 | [label = "change_vnfpkg"]; 24 | "VnfLcmDriver" -> "InfraDriver" 25 | [label = "3. change_vnfpkg_process"]; 26 | "InfraDriver" -> "VIM (OpenStack)" 27 | [label = "4. Get stack resource to update"]; 28 | "InfraDriver" <-- "VIM (OpenStack)" 29 | [label = ""]; 30 | "InfraDriver" -> "VIM (OpenStack)" 31 | [label = "5. update_stack"]; 32 | "InfraDriver" <-- "VIM (OpenStack)" 33 | [label = ""]; 34 | "InfraDriver" -> "CoordinateVNF script" 35 | [label = "6. CoordinateVNF"]; 36 | "CoordinateVNF script" -> "VNF" 37 | [label = "7. Coordinate resource"]; 38 | "CoordinateVNF script" <-- "VNF" 39 | [label = ""]; 40 | "InfraDriver" <-- "CoordinateVNF script" 41 | [label = ""]; 42 | "InfraDriver" -> "InfraDriver" 43 | [label = "8. Repeat steps 5 through 7 for each VNFC"]; 44 | "VnfLcmDriver" <-- "InfraDriver" 45 | [label = ""]; 46 | "VnfLcmDriver" -> "TackerDB" 47 | [label = "9. Update_DB"]; 48 | "VnfLcmDriver" <-- "TackerDB" 49 | [label = ""]; 50 | "Tacker-conductor" <-- "VnfLcmDriver" 51 | [label = ""]; 52 | } 53 | -------------------------------------------------------------------------------- /specs/yoga/upgrade-vnf-package/02.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstack/tacker-specs/869bac725210ac416da6fa830fbd5fb8a6192c3f/specs/yoga/upgrade-vnf-package/02.png -------------------------------------------------------------------------------- /specs/yoga/upgrade-vnf-package/03.diag: -------------------------------------------------------------------------------- 1 | 2 | seqdiag { 3 | node_width = 80; 4 | edge_length = 100; 5 | 6 | "Client" 7 | "Tacker-server" 8 | "Tacker-conductor" 9 | "VnfLcmDriver" 10 | "InfraDriver" 11 | "CoordinateVNF script" 12 | "TackerDB" 13 | "VIM (Kubernetes)" 14 | 15 | Client -> "Tacker-server" 16 | [label = "1. POST /vnflcm/v2/vnf_instances/{vnfInstanceId}/change_vnfpkg"]; 17 | Client <-- "Tacker-server" 18 | [label = "Response 202 Accepted"]; 19 | "Tacker-server" ->> "Tacker-conductor" 20 | [label = "2. ChangeCurrentVNFPackage"]; 21 | "Tacker-conductor" -> "VnfLcmDriver" 22 | [label = "change_vnfpkg"]; 23 | "VnfLcmDriver" -> "InfraDriver" 24 | [label = "3. apply_newDeployment"]; 25 | "InfraDriver" -> "VIM (Kubernetes)" 26 | [label = "4. apply_newDeployment"]; 27 | "InfraDriver" <-- "VIM (Kubernetes)" 28 | [label = ""]; 29 | "VnfLcmDriver" <-- "InfraDriver" 30 | [label = ""]; 31 | "VnfLcmDriver" -> "CoordinateVNF script" 32 | [label = "5. coordinate VNF"]; 33 | "CoordinateVNF script" -> "VIM (Kubernetes)" 34 | [label = "6. update_label"]; 35 | "CoordinateVNF script" <-- "VIM (Kubernetes)" 36 | [label = ""]; 37 | "VnfLcmDriver" <-- "CoordinateVNF script" 38 | [label = ""]; 39 | "VnfLcmDriver" -> "InfraDriver" 40 | [label = "7. terminate oldDeployment"]; 41 | "InfraDriver" -> "VIM (Kubernetes)" 42 | [label = "8. terminate Old Deployment"]; 43 | "InfraDriver" <-- "VIM (Kubernetes)" 44 | [label = ""]; 45 | "VnfLcmDriver" <-- "InfraDriver" 46 | [label = ""]; 47 | "VnfLcmDriver" -> "TackerDB" 48 | [label = "9. Update_DB"]; 49 | "VnfLcmDriver" <-- "TackerDB" 50 | [label = ""]; 51 | "Tacker-conductor" <-- "VnfLcmDriver" 52 | [label = ""]; 53 | } 54 | -------------------------------------------------------------------------------- /specs/yoga/upgrade-vnf-package/03.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstack/tacker-specs/869bac725210ac416da6fa830fbd5fb8a6192c3f/specs/yoga/upgrade-vnf-package/03.png -------------------------------------------------------------------------------- /specs/yoga/upgrade-vnf-package/04.diag: -------------------------------------------------------------------------------- 1 | 2 | seqdiag { 3 | node_width = 80; 4 | edge_length = 100; 5 | 6 | "Client" 7 | "Tacker-server" 8 | "Tacker-conductor" 9 | "VnfLcmDriver" 10 | "InfraDriver" 11 | "CoordinateVNF script" 12 | "TackerDB" 13 | "VIM (Kubernetes)" 14 | 15 | Client -> "Tacker-server" 16 | [label = "1. POST /vnflcm/v2/vnf_instances/{vnfInstanceId}/change_vnfpkg"]; 17 | Client <-- "Tacker-server" 18 | [label = "Response 202 Accepted"]; 19 | "Tacker-server" ->> "Tacker-conductor" 20 | [label = "2. ChangeCurrentVNFPackage"]; 21 | "Tacker-conductor" -> "VnfLcmDriver" 22 | [label = "change_vnfpkg"]; 23 | "VnfLcmDriver" -> "InfraDriver" 24 | [label = "3. apply_newDeployment"]; 25 | "InfraDriver" -> "VIM (Kubernetes)" 26 | [label = "4. apply_newDeployment"]; 27 | "InfraDriver" <-- "VIM (Kubernetes)" 28 | [label = ""]; 29 | "VnfLcmDriver" <-- "InfraDriver" 30 | [label = ""]; 31 | "VnfLcmDriver" -> "CoordinateVNF script" 32 | [label = "5. coordinate_VNF"]; 33 | "VnfLcmDriver" <-- "CoordinateVNF script" 34 | [label = ""]; 35 | "VnfLcmDriver" -> "TackerDB" 36 | [label = "6. Update_DB"]; 37 | "VnfLcmDriver" <-- "TackerDB" 38 | [label = ""]; 39 | "Tacker-conductor" <-- "VnfLcmDriver" 40 | [label = ""]; 41 | } 42 | -------------------------------------------------------------------------------- /specs/yoga/upgrade-vnf-package/04.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstack/tacker-specs/869bac725210ac416da6fa830fbd5fb8a6192c3f/specs/yoga/upgrade-vnf-package/04.png -------------------------------------------------------------------------------- /specs/zed/code-refactoring/01.diag: -------------------------------------------------------------------------------- 1 | 2 | seqdiag { 3 | node_width = 100; 4 | edge_length = 150; 5 | 6 | "Client" 7 | "Tacker-server" 8 | "Tacker-conductor" 9 | "Heat" 10 | 11 | "Client" -> "Tacker-server" 12 | [label = "POST /vnf_instances/{vnfInstanceId}/instantiate"]; 13 | "Tacker-server" -> "Tacker-conductor" 14 | [label = "instantiate"]; 15 | 16 | ... ------------- Omitted from description ------------- ... 17 | 18 | "Tacker-conductor" -> "Heat" 19 | [label = "POST stacks"]; 20 | "Tacker-conductor" <-- "Heat" 21 | [label = "201 Created"]; 22 | 23 | === start of the checking of the resource status === 24 | 25 | === loop start (Repeat until 'CREATE_COMPLETE')=== 26 | 27 | "Tacker-conductor" -> "Heat" 28 | [label = "GET stacks/{stack_name}"]; 29 | "Tacker-conductor" <-- "Heat" 30 | [label = "302 Found"]; 31 | 32 | "Tacker-conductor" -> "Heat" 33 | [label = "(Redirection) GET stacks/{stack_name}/{stack_id}"]; 34 | "Tacker-conductor" <-- "Heat" 35 | [label = "200 OK"]; 36 | 37 | === loop end === 38 | 39 | === end of the checking of the resource status === 40 | 41 | } 42 | -------------------------------------------------------------------------------- /specs/zed/code-refactoring/01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstack/tacker-specs/869bac725210ac416da6fa830fbd5fb8a6192c3f/specs/zed/code-refactoring/01.png -------------------------------------------------------------------------------- /specs/zed/code-refactoring/02.diag: -------------------------------------------------------------------------------- 1 | 2 | seqdiag { 3 | node_width = 100; 4 | edge_length = 150; 5 | 6 | "Client" 7 | "Tacker-server" 8 | "Tacker-conductor" 9 | "Heat" 10 | 11 | "Client" -> "Tacker-server" 12 | [label = "POST /vnf_instances/{vnfInstanceId}/instantiate"]; 13 | "Tacker-server" -> "Tacker-conductor" 14 | [label = "instantiate"]; 15 | 16 | ... ------------- Omitted from description ------------- ... 17 | 18 | "Tacker-conductor" -> "Heat" 19 | [label = "POST stacks"]; 20 | "Tacker-conductor" <-- "Heat" 21 | [label = "201 Created"]; 22 | 23 | "Tacker-conductor" -> "Tacker-conductor" 24 | [note = "Get 'stack_id' parameter from Response and \nsave it to a local variable"]; 25 | 26 | === start of the checking of the resource status === 27 | 28 | === loop start (Repeat until 'CREATE_COMPLETE')=== 29 | 30 | "Tacker-conductor" -> "Heat" 31 | [label = "GET stacks/{stack_name}/{stack_id}", leftnote="Can be sent with the Heat API without redirection"]; 32 | "Tacker-conductor" <-- "Heat" 33 | [label = "200 OK"]; 34 | 35 | === loop end === 36 | 37 | === end of the checking of the resource status === 38 | 39 | } 40 | -------------------------------------------------------------------------------- /specs/zed/code-refactoring/02.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstack/tacker-specs/869bac725210ac416da6fa830fbd5fb8a6192c3f/specs/zed/code-refactoring/02.png -------------------------------------------------------------------------------- /specs/zed/code-refactoring/03.diag: -------------------------------------------------------------------------------- 1 | 2 | seqdiag { 3 | node_width = 100; 4 | edge_length = 150; 5 | 6 | "Client" 7 | "Tacker-server" 8 | "Tacker-conductor" 9 | "Heat" 10 | 11 | "Client" -> "Tacker-server" 12 | [label = "POST /vnf_instances/{vnfInstanceId}/terminate"]; 13 | "Tacker-server" -> "Tacker-conductor" 14 | [label = "terminate"]; 15 | 16 | ... ------------- Omitted from description ------------- ... 17 | 18 | "Tacker-conductor" -> "Heat" 19 | [label = "DELETE stacks/{stack_name}"]; 20 | "Tacker-conductor" <-- "Heat" 21 | [label = "302 Found"]; 22 | "Tacker-conductor" -> "Heat" 23 | [label = "(Redirection) DELETE stacks/{stack_name}/{stack_id}"]; 24 | "Tacker-conductor" <-- "Heat" 25 | [label = "204 No Content"]; 26 | 27 | === start of the checking of the resource status === 28 | 29 | === loop start (Repeat until 'DELETE_COMPLETE')=== 30 | 31 | "Tacker-conductor" -> "Heat" 32 | [label = "GET stacks/{stack_name}"]; 33 | "Tacker-conductor" <-- "Heat" 34 | [label = "302 Found"]; 35 | 36 | "Tacker-conductor" -> "Heat" 37 | [label = "(Redirection) GET stacks/{stack_name}/{stack_id}"]; 38 | "Tacker-conductor" <-- "Heat" 39 | [label = "200 OK"]; 40 | 41 | === loop end === 42 | 43 | === end of the checking of the resource status === 44 | 45 | } 46 | -------------------------------------------------------------------------------- /specs/zed/code-refactoring/03.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstack/tacker-specs/869bac725210ac416da6fa830fbd5fb8a6192c3f/specs/zed/code-refactoring/03.png -------------------------------------------------------------------------------- /specs/zed/code-refactoring/04.diag: -------------------------------------------------------------------------------- 1 | 2 | seqdiag { 3 | node_width = 100; 4 | edge_length = 150; 5 | 6 | "Client" 7 | "Tacker-server" 8 | "Tacker-conductor" 9 | "Heat" 10 | 11 | "Client" -> "Tacker-server" 12 | [label = "POST /vnf_instances/{vnfInstanceId}/terminate"]; 13 | "Tacker-server" -> "Tacker-conductor" 14 | [label = "terminate"]; 15 | 16 | ... ------------- Omitted from description ------------- ... 17 | 18 | "Tacker-conductor" -> "Heat" 19 | [label = "DELETE stacks/{stack_name}"]; 20 | "Tacker-conductor" <-- "Heat" 21 | [label = "302 Found"]; 22 | "Tacker-conductor" -> "Heat" 23 | [label = "(Redirection) DELETE stacks/{stack_name}/{stack_id}"]; 24 | "Tacker-conductor" <-- "Heat" 25 | [label = "204 No Content"]; 26 | 27 | === start of the checking of the resource status === 28 | 29 | "Tacker-conductor" -> "Heat" 30 | [label = "GET stacks/{stack_name}", leftnote = "First check of the resource status"]; 31 | "Tacker-conductor" <-- "Heat" 32 | [label = "302 Found"]; 33 | 34 | "Tacker-conductor" -> "Heat" 35 | [label = "(Redirection) GET stacks/{stack_name}/{stack_id}"]; 36 | "Tacker-conductor" <-- "Heat" 37 | [label = "200 OK"]; 38 | 39 | "Tacker-conductor" -> "Tacker-conductor" 40 | [note = "Get 'stack_id' parameter from Response and \nsave it to a local variable"]; 41 | 42 | === loop start (Repeat until 'DELETE_COMPLETE')=== 43 | 44 | "Tacker-conductor" -> "Heat" 45 | [label = "GET stacks/{stack_name}/{stack_id}", leftnote = "Second and subsequent check of resource state. \nCan be sent with the Heat API without redirection."]; 46 | "Tacker-conductor" <-- "Heat" 47 | [label = "200 OK"]; 48 | 49 | === loop end === 50 | 51 | === end of the checking of the resource status === 52 | 53 | } 54 | -------------------------------------------------------------------------------- /specs/zed/code-refactoring/04.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstack/tacker-specs/869bac725210ac416da6fa830fbd5fb8a6192c3f/specs/zed/code-refactoring/04.png -------------------------------------------------------------------------------- /specs/zed/code-refactoring/05.diag: -------------------------------------------------------------------------------- 1 | 2 | seqdiag { 3 | node_width = 100; 4 | edge_length = 150; 5 | 6 | "Client" 7 | "Tacker-server" 8 | "Tacker-conductor" 9 | "Heat" 10 | 11 | "Client" -> "Tacker-server" 12 | [label = "POST /vnf_instances/{vnfInstanceId}/scale"]; 13 | "Tacker-server" -> "Tacker-conductor" 14 | [label = "scale"]; 15 | 16 | ... ------------- Omitted from description ------------- ... 17 | 18 | "Tacker-conductor" -> "Heat" 19 | [label = "PATCH stacks/{stack_name}"]; 20 | "Tacker-conductor" <-- "Heat" 21 | [label = "302 Found"]; 22 | "Tacker-conductor" -> "Heat" 23 | [label = "(Redirection) PATCH stacks/{stack_name}/{stack_id}"]; 24 | "Tacker-conductor" <-- "Heat" 25 | [label = "202 Accepted"]; 26 | 27 | === start of the checking of the resource status === 28 | 29 | === loop start (Repeat until 'UPDATE_COMPLETE')=== 30 | 31 | "Tacker-conductor" -> "Heat" 32 | [label = "GET stacks/{stack_name}"]; 33 | "Tacker-conductor" <-- "Heat" 34 | [label = "302 Found"]; 35 | 36 | "Tacker-conductor" -> "Heat" 37 | [label = "(Redirection) GET stacks/{stack_name}/{stack_id}"]; 38 | "Tacker-conductor" <-- "Heat" 39 | [label = "200 OK"]; 40 | 41 | === loop end === 42 | 43 | === end of the checking of the resource status === 44 | 45 | } 46 | -------------------------------------------------------------------------------- /specs/zed/code-refactoring/05.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstack/tacker-specs/869bac725210ac416da6fa830fbd5fb8a6192c3f/specs/zed/code-refactoring/05.png -------------------------------------------------------------------------------- /specs/zed/code-refactoring/06.diag: -------------------------------------------------------------------------------- 1 | 2 | seqdiag { 3 | node_width = 100; 4 | edge_length = 150; 5 | 6 | "Client" 7 | "Tacker-server" 8 | "Tacker-conductor" 9 | "Heat" 10 | 11 | "Client" -> "Tacker-server" 12 | [label = "POST /vnf_instances/{vnfInstanceId}/scale"]; 13 | "Tacker-server" -> "Tacker-conductor" 14 | [label = "scale"]; 15 | 16 | ... ------------- Omitted from description ------------- ... 17 | 18 | "Tacker-conductor" -> "Heat" 19 | [label = "PATCH stacks/{stack_name}"]; 20 | "Tacker-conductor" <-- "Heat" 21 | [label = "302 Found"]; 22 | "Tacker-conductor" -> "Heat" 23 | [label = "(Redirection) PATCH stacks/{stack_name}/{stack_id}"]; 24 | "Tacker-conductor" <-- "Heat" 25 | [label = "202 Accepted"]; 26 | 27 | === start of the checking of the resource status === 28 | 29 | "Tacker-conductor" -> "Heat" 30 | [label = "GET stacks/{stack_name}", leftnote = "First check of the resource status"]; 31 | "Tacker-conductor" <-- "Heat" 32 | [label = "302 Found"]; 33 | 34 | "Tacker-conductor" -> "Heat" 35 | [label = "(Redirection) GET stacks/{stack_name}/{stack_id}"]; 36 | "Tacker-conductor" <-- "Heat" 37 | [label = "200 OK"]; 38 | 39 | "Tacker-conductor" -> "Tacker-conductor" 40 | [note = "Get 'stack_id' parameter from Response and \nsave it to a local variable"]; 41 | 42 | === loop start (Repeat until 'UPDATE_COMPLETE')=== 43 | 44 | "Tacker-conductor" -> "Heat" 45 | [label = "GET stacks/{stack_name}/{stack_id}", leftnote = "Second and subsequent check of resource state. \nCan be sent with the Heat API without redirection."]; 46 | "Tacker-conductor" <-- "Heat" 47 | [label = "200 OK"]; 48 | 49 | === loop end === 50 | 51 | === end of the checking of the resource status === 52 | 53 | } 54 | -------------------------------------------------------------------------------- /specs/zed/code-refactoring/06.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstack/tacker-specs/869bac725210ac416da6fa830fbd5fb8a6192c3f/specs/zed/code-refactoring/06.png -------------------------------------------------------------------------------- /specs/zed/code-refactoring/07.diag: -------------------------------------------------------------------------------- 1 | 2 | seqdiag { 3 | node_width = 100; 4 | edge_length = 150; 5 | 6 | "Client" 7 | "Tacker-server" 8 | "Tacker-conductor" 9 | "Heat" 10 | 11 | "Client" -> "Tacker-server" 12 | [label = "POST /vnf_instances/{vnfInstanceId}/heal"]; 13 | "Tacker-server" -> "Tacker-conductor" 14 | [label = "heal"]; 15 | 16 | ... ------------- Omitted from description ------------- ... 17 | 18 | "Tacker-conductor" -> "Heat" 19 | [label = "PATCH stacks/{stack_name}"]; 20 | "Tacker-conductor" <-- "Heat" 21 | [label = "302 Found"]; 22 | "Tacker-conductor" -> "Heat" 23 | [label = "(Redirection) PATCH stacks/{stack_name}/{stack_id}"]; 24 | "Tacker-conductor" <-- "Heat" 25 | [label = "202 Accepted"]; 26 | 27 | === start of the checking of the resource status === 28 | 29 | === loop start (Repeat until 'UPDATE_COMPLETE')=== 30 | 31 | "Tacker-conductor" -> "Heat" 32 | [label = "GET stacks/{stack_name}"]; 33 | "Tacker-conductor" <-- "Heat" 34 | [label = "302 Found"]; 35 | 36 | "Tacker-conductor" -> "Heat" 37 | [label = "(Redirection) GET stacks/{stack_name}/{stack_id}"]; 38 | "Tacker-conductor" <-- "Heat" 39 | [label = "200 OK"]; 40 | 41 | === loop end === 42 | 43 | === end of the checking of the resource status === 44 | 45 | } 46 | -------------------------------------------------------------------------------- /specs/zed/code-refactoring/07.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstack/tacker-specs/869bac725210ac416da6fa830fbd5fb8a6192c3f/specs/zed/code-refactoring/07.png -------------------------------------------------------------------------------- /specs/zed/code-refactoring/08.diag: -------------------------------------------------------------------------------- 1 | 2 | seqdiag { 3 | node_width = 100; 4 | edge_length = 150; 5 | 6 | "Client" 7 | "Tacker-server" 8 | "Tacker-conductor" 9 | "Heat" 10 | 11 | "Client" -> "Tacker-server" 12 | [label = "POST /vnf_instances/{vnfInstanceId}/heal"]; 13 | "Tacker-server" -> "Tacker-conductor" 14 | [label = "heal"]; 15 | 16 | ... ------------- Omitted from description ------------- ... 17 | 18 | "Tacker-conductor" -> "Heat" 19 | [label = "PATCH stacks/{stack_name}"]; 20 | "Tacker-conductor" <-- "Heat" 21 | [label = "302 Found"]; 22 | "Tacker-conductor" -> "Heat" 23 | [label = "(Redirection) PATCH stacks/{stack_name}/{stack_id}"]; 24 | "Tacker-conductor" <-- "Heat" 25 | [label = "202 Accepted"]; 26 | 27 | === start of the checking of the resource status === 28 | 29 | "Tacker-conductor" -> "Heat" 30 | [label = "GET stacks/{stack_name}", leftnote = "First check of the resource status"]; 31 | "Tacker-conductor" <-- "Heat" 32 | [label = "302 Found"]; 33 | 34 | "Tacker-conductor" -> "Heat" 35 | [label = "(Redirection) GET stacks/{stack_name}/{stack_id}"]; 36 | "Tacker-conductor" <-- "Heat" 37 | [label = "200 OK"]; 38 | 39 | "Tacker-conductor" -> "Tacker-conductor" 40 | [note = "Get 'stack_id' parameter from Response and \nsave it to a local variable"]; 41 | 42 | === loop start (Repeat until 'UPDATE_COMPLETE')=== 43 | 44 | "Tacker-conductor" -> "Heat" 45 | [label = "GET stacks/{stack_name}/{stack_id}", leftnote = "Second and subsequent check of resource state. \nCan be sent with the Heat API without redirection."]; 46 | "Tacker-conductor" <-- "Heat" 47 | [label = "200 OK"]; 48 | 49 | === loop end === 50 | 51 | === end of the checking of the resource status === 52 | 53 | } 54 | -------------------------------------------------------------------------------- /specs/zed/code-refactoring/08.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstack/tacker-specs/869bac725210ac416da6fa830fbd5fb8a6192c3f/specs/zed/code-refactoring/08.png -------------------------------------------------------------------------------- /specs/zed/code-refactoring/09.diag: -------------------------------------------------------------------------------- 1 | 2 | seqdiag { 3 | node_width = 100; 4 | edge_length = 150; 5 | 6 | "Client" 7 | "Tacker-server" 8 | "Tacker-conductor" 9 | "TackerDB" 10 | "Heat" 11 | 12 | "Client" -> "Tacker-server" 13 | [label = "POST /vnf_instances/{vnfInstanceId}/instantiate"]; 14 | "Tacker-server" -> "Tacker-conductor" 15 | [label = "instantiate"]; 16 | 17 | ... ------------- Omitted from description ------------- ... 18 | 19 | "Tacker-conductor" -> "Heat" 20 | [label = "POST stacks"]; 21 | "Tacker-conductor" <-- "Heat" 22 | [label = "201 Created"]; 23 | 24 | "Tacker-conductor" -> "Tacker-conductor" 25 | [note = "Get 'stack_id' parameter from Response"]; 26 | 27 | "Tacker-conductor" -> "TackerDB" 28 | [label = "Save 'stack_id' in TackerDB"]; 29 | "Tacker-conductor" <-- "TackerDB" 30 | 31 | === start of the checking of the resource status === 32 | 33 | === loop start (Repeat until 'CREATE_COMPLETE')=== 34 | 35 | "Tacker-conductor" -> "Heat" 36 | [label = "GET stacks/{stack_name}/{stack_id}", leftnote = "Can be sent with the Heat API without redirection"]; 37 | "Tacker-conductor" <-- "Heat" 38 | [label = "200 OK"]; 39 | 40 | === loop end === 41 | 42 | === end of the checking of the resource status === 43 | 44 | } 45 | -------------------------------------------------------------------------------- /specs/zed/code-refactoring/09.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstack/tacker-specs/869bac725210ac416da6fa830fbd5fb8a6192c3f/specs/zed/code-refactoring/09.png -------------------------------------------------------------------------------- /specs/zed/code-refactoring/10.diag: -------------------------------------------------------------------------------- 1 | 2 | seqdiag { 3 | node_width = 100; 4 | edge_length = 150; 5 | 6 | "Client" 7 | "Tacker-server" 8 | "Tacker-conductor" 9 | "TackerDB" 10 | "Heat" 11 | 12 | "Client" -> "Tacker-server" 13 | [label = "POST /vnf_instances/{vnfInstanceId}/terminate"]; 14 | "Tacker-server" -> "Tacker-conductor" 15 | [label = "terminate"]; 16 | 17 | ... ------------- Omitted from description ------------- ... 18 | 19 | "Tacker-conductor" -> "TackerDB" 20 | [label = "Get 'stack_id' in TackerDB", note = "Get 'stack_id' \n from the VnfInstanceV2.instantiatedVnfInfo.metadata field"]; 21 | "Tacker-conductor" <-- "TackerDB" 22 | 23 | "Tacker-conductor" -> "Heat" 24 | [label = "DELETE stacks/{stack_name}/{stack_id}", leftnote = "Can be sent with the Heat API without redirection"]; 25 | "Tacker-conductor" <-- "Heat" 26 | [label = "204 No Content"]; 27 | 28 | === start of the checking of the resource status === 29 | 30 | === loop start (Repeat until 'DELETE_COMPLETE')=== 31 | 32 | "Tacker-conductor" -> "Heat" 33 | [label = "GET stacks/{stack_name}/{stack_id}", leftnote = "Can be sent with the Heat API without redirection"]; 34 | "Tacker-conductor" <-- "Heat" 35 | [label = "200 OK"]; 36 | 37 | === loop end === 38 | 39 | === end of the checking of the resource status === 40 | 41 | } 42 | -------------------------------------------------------------------------------- /specs/zed/code-refactoring/10.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstack/tacker-specs/869bac725210ac416da6fa830fbd5fb8a6192c3f/specs/zed/code-refactoring/10.png -------------------------------------------------------------------------------- /specs/zed/code-refactoring/11.diag: -------------------------------------------------------------------------------- 1 | 2 | seqdiag { 3 | node_width = 100; 4 | edge_length = 150; 5 | 6 | "Client" 7 | "Tacker-server" 8 | "Tacker-conductor" 9 | "TackerDB" 10 | "Heat" 11 | 12 | "Client" -> "Tacker-server" 13 | [label = "POST /vnf_instances/{vnfInstanceId}/scale"]; 14 | "Tacker-server" -> "Tacker-conductor" 15 | [label = "scale"]; 16 | 17 | ... ------------- Omitted from description ------------- ... 18 | 19 | "Tacker-conductor" -> "TackerDB" 20 | [label = "Get 'stack_id' in TackerDB", note = "Get 'stack_id' \n from the VnfInstanceV2.instantiatedVnfInfo.metadata field"]; 21 | "Tacker-conductor" <-- "TackerDB" 22 | 23 | "Tacker-conductor" -> "Heat" 24 | [label = "PATCH stacks/{stack_name}/{stack_id}", leftnote = "Can be sent with the Heat API without redirection"]; 25 | "Tacker-conductor" <-- "Heat" 26 | [label = "202 Accepted"]; 27 | 28 | === start of the checking of the resource status === 29 | 30 | === loop start (Repeat until 'UPDATE_COMPLETE')=== 31 | 32 | "Tacker-conductor" -> "Heat" 33 | [label = "GET stacks/{stack_name}/{stack_id}", leftnote = "Can be sent with the Heat API without redirection"]; 34 | "Tacker-conductor" <-- "Heat" 35 | [label = "200 OK"]; 36 | 37 | === loop end === 38 | 39 | === end of the checking of the resource status === 40 | 41 | } 42 | -------------------------------------------------------------------------------- /specs/zed/code-refactoring/11.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstack/tacker-specs/869bac725210ac416da6fa830fbd5fb8a6192c3f/specs/zed/code-refactoring/11.png -------------------------------------------------------------------------------- /specs/zed/code-refactoring/12.diag: -------------------------------------------------------------------------------- 1 | 2 | seqdiag { 3 | node_width = 100; 4 | edge_length = 150; 5 | 6 | "Client" 7 | "Tacker-server" 8 | "Tacker-conductor" 9 | "TackerDB" 10 | "Heat" 11 | 12 | "Client" -> "Tacker-server" 13 | [label = "POST /vnf_instances/{vnfInstanceId}/heal"]; 14 | "Tacker-server" -> "Tacker-conductor" 15 | [label = "heal"]; 16 | 17 | ... ------------- Omitted from description ------------- ... 18 | 19 | "Tacker-conductor" -> "TackerDB" 20 | [label = "Get 'stack_id' in TackerDB", note = "Get 'stack_id' \n from the VnfInstanceV2.instantiatedVnfInfo.metadata field"]; 21 | "Tacker-conductor" <-- "TackerDB" 22 | 23 | "Tacker-conductor" -> "Heat" 24 | [label = "PATCH stacks/{stack_name}/{stack_id}", leftnote = "Can be sent with the Heat API without redirection"]; 25 | "Tacker-conductor" <-- "Heat" 26 | [label = "202 Accepted"]; 27 | 28 | === start of the checking of the resource status === 29 | 30 | === loop start (Repeat until 'UPDATE_COMPLETE')=== 31 | 32 | "Tacker-conductor" -> "Heat" 33 | [label = "GET stacks/{stack_name}/{stack_id}", leftnote = "Can be sent with the Heat API without redirection"]; 34 | "Tacker-conductor" <-- "Heat" 35 | [label = "200 OK"]; 36 | 37 | === loop end === 38 | 39 | === end of the checking of the resource status === 40 | 41 | } 42 | -------------------------------------------------------------------------------- /specs/zed/code-refactoring/12.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstack/tacker-specs/869bac725210ac416da6fa830fbd5fb8a6192c3f/specs/zed/code-refactoring/12.png -------------------------------------------------------------------------------- /specs/zed/code-refactoring/13.diag: -------------------------------------------------------------------------------- 1 | 2 | seqdiag { 3 | node_width = 100; 4 | edge_length = 150; 5 | 6 | "Client" 7 | "Tacker-server" 8 | "Tacker-conductor" 9 | "TackerDB" 10 | 11 | "Client" -> "Tacker-server" 12 | [label = "Trigger operation sending notification"]; 13 | "Tacker-server" -> "Tacker-conductor" 14 | [label = "send_notification"]; 15 | "Tacker-conductor" -> "TackerDB" 16 | [label = "Get specific vnf instance id"]; 17 | "Tacker-conductor" <-- "TackerDB" 18 | [label = "vnf instance id"]; 19 | "Tacker-conductor" -> "Tacker-conductor" 20 | [label = "Filters the subscriptions by a specific vnfdid"]; 21 | "Client" <- "Tacker-conductor" 22 | [label = "Sends Notify filtered on a specific vnfdid."]; 23 | "Client" --> "Tacker-conductor" 24 | [label = "response"]; 25 | "Tacker-server" <-- "Tacker-conductor" 26 | [label = "return"]; 27 | } 28 | -------------------------------------------------------------------------------- /specs/zed/code-refactoring/13.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstack/tacker-specs/869bac725210ac416da6fa830fbd5fb8a6192c3f/specs/zed/code-refactoring/13.png -------------------------------------------------------------------------------- /specs/zed/database-synchronization/01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstack/tacker-specs/869bac725210ac416da6fa830fbd5fb8a6192c3f/specs/zed/database-synchronization/01.png -------------------------------------------------------------------------------- /specs/zed/db-migration-tool/01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstack/tacker-specs/869bac725210ac416da6fa830fbd5fb8a6192c3f/specs/zed/db-migration-tool/01.png -------------------------------------------------------------------------------- /specs/zed/db-migration-tool/02.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstack/tacker-specs/869bac725210ac416da6fa830fbd5fb8a6192c3f/specs/zed/db-migration-tool/02.png -------------------------------------------------------------------------------- /specs/zed/db-migration-tool/03.diag: -------------------------------------------------------------------------------- 1 | 2 | seqdiag { 3 | User -> Tacker-db-manage [label = "tacker-db-manage migrate-to-v2 --mark-delete --api-ver v1 --vnf-id "]; 4 | === Repeat related v1 tables === 5 | Tacker-db-manage -> SQL_Alchemy [label = "Search for related objects with the specified VNFID as a primary key or foreign key"]; 6 | Tacker-db-manage <- SQL_Alchemy [label = "Get object"]; 7 | Tacker-db-manage -> SQL_Alchemy [label = "Update the deleted field of gotten object to 1"]; 8 | Tacker-db-manage <-- SQL_Alchemy 9 | Tacker-db-manage -> SQL_Alchemy [label = "Save gotten object"]; 10 | SQL_Alchemy -> Tacker_DB [label = "Update record"]; 11 | SQL_Alchemy <-- Tacker_DB; 12 | Tacker-db-manage <-- SQL_Alchemy; 13 | === End line of "Repeat related v1 tables" === 14 | User <-- Tacker-db-manage; 15 | } 16 | -------------------------------------------------------------------------------- /specs/zed/db-migration-tool/03.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstack/tacker-specs/869bac725210ac416da6fa830fbd5fb8a6192c3f/specs/zed/db-migration-tool/03.png -------------------------------------------------------------------------------- /specs/zed/db-migration-tool/04.diag: -------------------------------------------------------------------------------- 1 | 2 | seqdiag { 3 | User -> Tacker-db-manage [label = "tacker-db-manage migrate-to-v2 --mark-delete --api-ver v2 --vnf-id "]; 4 | === Repeat related v2 tables === 5 | Tacker-db-manage -> SQL_Alchemy [label = "Search for related objects with the specified VNFID as a primary key or foreign key"]; 6 | Tacker-db-manage <- SQL_Alchemy [label = "Get object"]; 7 | Tacker-db-manage -> SQL_Alchemy [label = "Update the deleted field of gotten object to 1"]; 8 | Tacker-db-manage <-- SQL_Alchemy 9 | Tacker-db-manage -> SQL_Alchemy [label = "Save gotten object"]; 10 | SQL_Alchemy -> Tacker_DB [label = "Update record"]; 11 | SQL_Alchemy <-- Tacker_DB; 12 | Tacker-db-manage <-- SQL_Alchemy; 13 | === End line of "Repeat related v2 tables" === 14 | User <-- Tacker-db-manage; 15 | } 16 | -------------------------------------------------------------------------------- /specs/zed/db-migration-tool/04.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstack/tacker-specs/869bac725210ac416da6fa830fbd5fb8a6192c3f/specs/zed/db-migration-tool/04.png -------------------------------------------------------------------------------- /specs/zed/enhance-cli-for-paging/01.diag: -------------------------------------------------------------------------------- 1 | 2 | seqdiag { 3 | user -> tacker-client [label = "execute list command"] 4 | tacker-client -> tacker-server [label = "execute HTTP GET method" ] 5 | tacker-client <-- tacker-server [label = "return the first page" ] 6 | tacker-client -> tacker-server [label = "execute HTTP GET method" ] 7 | tacker-client <-- tacker-server [label = "return next page" ] 8 | === loop while there is next page existing === 9 | tacker-client -> tacker-server [label = "execute HTTP GET method" ] 10 | tacker-client <-- tacker-server [label = "return the last page" ] 11 | user <-- tacker-client [label = "show all records" ] 12 | } 13 | -------------------------------------------------------------------------------- /specs/zed/enhance-cli-for-paging/01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstack/tacker-specs/869bac725210ac416da6fa830fbd5fb8a6192c3f/specs/zed/enhance-cli-for-paging/01.png -------------------------------------------------------------------------------- /specs/zed/enhance-cnf-operations/01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstack/tacker-specs/869bac725210ac416da6fa830fbd5fb8a6192c3f/specs/zed/enhance-cnf-operations/01.png -------------------------------------------------------------------------------- /specs/zed/enhancement-container-update/01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstack/tacker-specs/869bac725210ac416da6fa830fbd5fb8a6192c3f/specs/zed/enhancement-container-update/01.png -------------------------------------------------------------------------------- /specs/zed/faultnotification-autoheal/01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstack/tacker-specs/869bac725210ac416da6fa830fbd5fb8a6192c3f/specs/zed/faultnotification-autoheal/01.png -------------------------------------------------------------------------------- /specs/zed/index.rst: -------------------------------------------------------------------------------- 1 | ========================= 2 | Tacker Zed Specifications 3 | ========================= 4 | 5 | .. toctree:: 6 | :glob: 7 | :maxdepth: 1 8 | 9 | * 10 | -------------------------------------------------------------------------------- /specs/zed/individual-vnfc-management/01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstack/tacker-specs/869bac725210ac416da6fa830fbd5fb8a6192c3f/specs/zed/individual-vnfc-management/01.png -------------------------------------------------------------------------------- /specs/zed/individual-vnfc-management/02.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstack/tacker-specs/869bac725210ac416da6fa830fbd5fb8a6192c3f/specs/zed/individual-vnfc-management/02.png -------------------------------------------------------------------------------- /specs/zed/prometheus-plugin-autoheal-and-autoscale/01.diag: -------------------------------------------------------------------------------- 1 | 2 | seqdiag { 3 | node_width = 100; 4 | edge_length = 150; 5 | 6 | "External Monitoring Tool" 7 | "Prometheus-Plugin" 8 | "VnfFmDriver" 9 | "Tacker DB" 10 | 11 | "External Monitoring Tool" -> "Prometheus-Plugin" 12 | [label = "1. Send alert to the specified URI"]; 13 | "Prometheus-Plugin" -> "Prometheus-Plugin" 14 | [label = "2. Check items of prometheus_plugin from cfg.CONF.tacker", note = "If prometheus_plugin is False, asynchronous task is over"]; 15 | "Prometheus-Plugin" -> "Prometheus-Plugin" 16 | [label = "3. Determine whether the alert is AutoHeal or AutoScale", note = "If it is scale, refer to the processing flow of AutoScale"]; 17 | "Prometheus-Plugin" -> "Tacker DB" 18 | [label = "4. Find the corresponding ComputeResource from the DB"]; 19 | "Prometheus-Plugin" <-- "Tacker DB" 20 | [label = "InstantiatedVnfInfo.vnfcResourceInfo.computeResource"]; 21 | "Prometheus-Plugin" -> "Prometheus-Plugin" 22 | [label = "5. Convert received alert to alarm"]; 23 | "Prometheus-Plugin" -> "VnfFmDriver" 24 | [label = "6. Execute VnfFmDriver"]; 25 | "VnfFmDriver" -> "Tacker DB" 26 | [label = "7. Save alarm to DB"]; 27 | "VnfFmDriver" <-- "Tacker DB" 28 | "Prometheus-Plugin" <-- "VnfFmDriver" 29 | } 30 | -------------------------------------------------------------------------------- /specs/zed/prometheus-plugin-autoheal-and-autoscale/01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstack/tacker-specs/869bac725210ac416da6fa830fbd5fb8a6192c3f/specs/zed/prometheus-plugin-autoheal-and-autoscale/01.png -------------------------------------------------------------------------------- /specs/zed/prometheus-plugin-autoheal-and-autoscale/02.diag: -------------------------------------------------------------------------------- 1 | 2 | seqdiag { 3 | node_width = 100; 4 | edge_length = 150; 5 | 6 | "Client" 7 | "Tacker-server" 8 | "Tacker-conductor" 9 | "VnfFmDriver" 10 | "Tacker DB" 11 | 12 | "Client" -> "Tacker-server" 13 | [label = "8. Get alarms"]; 14 | "Tacker-server" -> "Tacker-conductor" 15 | [label = "9. Trigger synchronization task"]; 16 | "Tacker-conductor" -> "VnfFmDriver" 17 | [label = "10. Get alarms"]; 18 | "VnfFmDriver" -> "Tacker DB" 19 | [label = "11. Get alarms from DB according to conditions"]; 20 | "VnfFmDriver" <-- "Tacker DB" 21 | [label = "Alarms"]; 22 | "Tacker-conductor" <-- "VnfFmDriver" 23 | [label = "Alarms"]; 24 | "Tacker-server" <-- "Tacker-conductor" 25 | [label = "Alarms"]; 26 | "Client" <-- "Tacker-server" 27 | [label = "Alarms"]; 28 | "Client" -> "Client" 29 | [label = "12. Get VNFC information from alarm", note = "If no alarm is returned, the processing is over"]; 30 | "Client" -> "Tacker-server" 31 | [label = "13. Heal specified vnfc"]; 32 | "Tacker-server" -> "Tacker-conductor" 33 | [label = "14. Trigger asynchronous task", note = "The same with the default heal operation"]; 34 | "Client" <-- "Tacker-server" 35 | [label = "Response 202 Accepted"]; 36 | } 37 | -------------------------------------------------------------------------------- /specs/zed/prometheus-plugin-autoheal-and-autoscale/02.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstack/tacker-specs/869bac725210ac416da6fa830fbd5fb8a6192c3f/specs/zed/prometheus-plugin-autoheal-and-autoscale/02.png -------------------------------------------------------------------------------- /specs/zed/prometheus-plugin-autoheal-and-autoscale/03.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstack/tacker-specs/869bac725210ac416da6fa830fbd5fb8a6192c3f/specs/zed/prometheus-plugin-autoheal-and-autoscale/03.png -------------------------------------------------------------------------------- /specs/zed/prometheus-plugin-autoheal-and-autoscale/04.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstack/tacker-specs/869bac725210ac416da6fa830fbd5fb8a6192c3f/specs/zed/prometheus-plugin-autoheal-and-autoscale/04.png -------------------------------------------------------------------------------- /specs/zed/support-openid-k8s-vim/01.diag: -------------------------------------------------------------------------------- 1 | 2 | seqdiag { 3 | node_width = 90; 4 | edge_length = 130; 5 | 6 | "Client" 7 | "Tacker-server" 8 | "Tacker-conductor" 9 | "VnfLcmDriver" 10 | "InfraDriver(Kubernetes)" 11 | "IdP" 12 | "VIM(Kubernetes)" 13 | 14 | "Client" -> "Tacker-server" 15 | [label = "1. instantiate vnf"]; 16 | "Client" <-- "Tacker-server" 17 | [label = "response"]; 18 | "Tacker-server" ->> "Tacker-conductor" 19 | [label = "2. instantiate"]; 20 | "Tacker-conductor" -> "VnfLcmDriver" 21 | [label = "3. instantiate_vnf"]; 22 | "VnfLcmDriver" -> "InfraDriver(Kubernetes)" 23 | [label = "4. instantiate_vnf"]; 24 | "InfraDriver(Kubernetes)" -> "IdP" 25 | [label = "5. get token"]; 26 | "InfraDriver(Kubernetes)" <-- "IdP"; 27 | "InfraDriver(Kubernetes)" -> "VIM(Kubernetes)" 28 | [label = "6. call Kubernetes APIs"]; 29 | "InfraDriver(Kubernetes)" <-- "VIM(Kubernetes)" 30 | [label = "response"]; 31 | "VnfLcmDriver" <-- "InfraDriver(Kubernetes)"; 32 | "Tacker-conductor" <-- "VnfLcmDriver"; 33 | } 34 | -------------------------------------------------------------------------------- /specs/zed/support-openid-k8s-vim/01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstack/tacker-specs/869bac725210ac416da6fa830fbd5fb8a6192c3f/specs/zed/support-openid-k8s-vim/01.png -------------------------------------------------------------------------------- /specs/zed/support-v2-cnf-heal/01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstack/tacker-specs/869bac725210ac416da6fa830fbd5fb8a6192c3f/specs/zed/support-v2-cnf-heal/01.png -------------------------------------------------------------------------------- /specs/zed/support-v2-cnf-rollback/01.diag: -------------------------------------------------------------------------------- 1 | 2 | seqdiag { 3 | node_width = 100; 4 | edge_length = 120; 5 | 6 | Client -> "tacker-server" 7 | [label = "POST /vnf_lcm_op_occs/{vnfLcmOpOccId}/rollback"]; 8 | Client <-- "tacker-server" [label = "Response 202 Accepted"]; 9 | "tacker-server" ->> "tacker-conductor" 10 | [label = "trigger asynchronous task"]; 11 | "tacker-conductor" -> "tacker-database" 12 | [label = "mark operation as ROLLING_BACK"]; 13 | "tacker-conductor" <-- "tacker-database" 14 | "tacker-conductor" ->> "tacker-conductor" 15 | [label = "execute notification process"]; 16 | Client <- "tacker-conductor" 17 | [label = "POST {callback URI} (ROLLING_BACK)"]; 18 | Client --> "tacker-conductor" [label = "Response: 204 No Content"]; 19 | "tacker-conductor" -> "VnfLcmDriver" [label = "execute VnfLcmDriver"]; 20 | "VnfLcmDriver" -> "KubernetesDriver" [label = "execute KubernetesDriver"]; 21 | "KubernetesDriver" -> "Kubernetes" 22 | [label = "call Read API to check the existence of resources"]; 23 | "KubernetesDriver" <-- "Kubernetes" [label = "resource information if it exists"]; 24 | "KubernetesDriver" -> "Kubernetes" 25 | [label = "call Delete API if resources exist"]; 26 | "KubernetesDriver" <-- "Kubernetes" [label = ""]; 27 | "KubernetesDriver" -> "Kubernetes" 28 | [label = "call Read API to check the status of resources"]; 29 | "KubernetesDriver" <-- "Kubernetes" [label = "resource information"]; 30 | "VnfLcmDriver" <-- "KubernetesDriver" [label = ""]; 31 | "tacker-conductor" <-- "VnfLcmDriver" [label = ""]; 32 | "tacker-conductor" -> "tacker-database" 33 | [label = "mark operation as ROLLED_BACK"]; 34 | "tacker-conductor" <-- "tacker-database" 35 | "tacker-conductor" ->> "tacker-conductor" 36 | [label = "execute notification process"]; 37 | Client <- "tacker-conductor" 38 | [label = "POST {callback URI} (ROLLED_BACK or FAILED_TEMP)"]; 39 | Client --> "tacker-conductor" [label = "Response: 204 No Content"]; 40 | } 41 | -------------------------------------------------------------------------------- /specs/zed/support-v2-cnf-rollback/01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstack/tacker-specs/869bac725210ac416da6fa830fbd5fb8a6192c3f/specs/zed/support-v2-cnf-rollback/01.png -------------------------------------------------------------------------------- /specs/zed/support-v2-cnf-rollback/02.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstack/tacker-specs/869bac725210ac416da6fa830fbd5fb8a6192c3f/specs/zed/support-v2-cnf-rollback/02.png -------------------------------------------------------------------------------- /specs/zed/support-v2-cnf-scale/01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstack/tacker-specs/869bac725210ac416da6fa830fbd5fb8a6192c3f/specs/zed/support-v2-cnf-scale/01.png -------------------------------------------------------------------------------- /test-requirements.txt: -------------------------------------------------------------------------------- 1 | # The order of packages is significant, because pip processes them in the order 2 | # of appearance. Changing the order has an impact on the overall integration 3 | # process, which may cause wedges in the gate later. 4 | flake8 5 | doc8>=0.6.0 # Apache-2.0 6 | -------------------------------------------------------------------------------- /tox.ini: -------------------------------------------------------------------------------- 1 | [tox] 2 | minversion = 3.18.0 3 | envlist = pep8,docs 4 | skipsdist = True 5 | 6 | [testenv] 7 | basepython = python3 8 | usedevelop = True 9 | setenv = VIRTUAL_ENV={envdir} 10 | deps = 11 | -r{toxinidir}/test-requirements.txt 12 | -r{toxinidir}/doc/requirements.txt 13 | 14 | [testenv:venv] 15 | commands = {posargs} 16 | 17 | [testenv:docs] 18 | deps = -r{toxinidir}/doc/requirements.txt 19 | allowlist_externals = rm 20 | commands = 21 | rm -fr doc/build 22 | sphinx-build -W -b html doc/source doc/build/html 23 | 24 | [testenv:pep8] 25 | commands = 26 | flake8 27 | doc8 --ignore D001 specs/ doc/source README.rst 28 | 29 | [flake8] 30 | # E123, E125 skipped as they are invalid PEP-8. 31 | show-source = True 32 | ignore = E123,E125 33 | exclude=.venv,.git,.tox,dist,doc,*lib/python*,*egg,build 34 | --------------------------------------------------------------------------------