We enthusiastically announce the release of: tacker 8.0.0: OpenStack NFV Orchestration This release is part of the zed release series. The source is available from: https://opendev.org/openstack/tacker Download the package from: https://tarballs.openstack.org/tacker/ Please report issues through: https://bugs.launchpad.net/tacker/+bugs For more details, please see below. 8.0.0 ^^^^^ New Features * This patch adds the ability to periodically synchronize resources in K8s VIM and Tacker DB. There is no interface on the K8s to notify Tacker when the auto-scale or auto-heal of a pod is running and the pod information is updated. This can lead to inconsistencies between the Pod information in Tacker database and the Pod information running on the actual K8s. This function periodically checks the pod information in the Tacker database and the pod information in the K8s, and updates the information in the Tacker database according to the K8s side if there is any inconsistency. * Adding the VNF version upgrading function to the tacker-db-manage command, which enables users to upgrade VNFs from v1 to v2 without re-instantiating it. * The Ansible driver can only run specific script files. Due to multi artifact support of mgmt driver, it will be extended to specify script files to be executed in each life cycle. This will be achieved by implementing primary and dependencies keys defined by TOSCA, primary can define the primary script, dependencies can define a secondary script that will be referenced by the primary script. Changes in tacker 7.0.0.0rc1..8.0.0 ----------------------------------- aa51977e Fix Prometheus Plugin syntax error 1c23cb29 Fix k8s resource name handling in CNF v2 API 85324256 A DB migration tool for API version update f31b3773 Support multi artifact of ansible driver 276f74e5 Support multi artifact of interfaces 3b81663a Database sync between TackerDB and Kubernetes dfc856ba Update TOX_CONSTRAINTS_FILE for stable/zed 6763b700 Update .gitreview for stable/zed 20afc2cc Add support faultnotification auto heal 85b57883 Add docs for cnf auto heal and scale 090dad0c Adding release notes of merged bugs b1fe0f5d Reduce the time for UT d1a23a3c Add support cnf auto heal and scale fefe731e Add str_to_bool util 64590808 Add docs of database sync 120b0322 Fix not trigger FT on api-ref update b313eb44 Stabilize Zuul jobs b80d2788 Update docs of User guide and API reference bb7b3cfc Helm chart support for CNF v2 API 0c69e122 Refactor for Performance Improvement f41cee0c Remove deprecated keystoneclient 831c1f8d Update API doc for vnf packages list with paging 4e1f1323 Fix link, doc conventions in VNFD template guide 49be1faa Update releasenotes from Zed cycle 7b9b1284 Add releasenote for paging of vnf packages API dd7569eb Add docs for performance improvement 00aff015 Add docs of registering vim 12e8fc13 Add releasenote for remove cnf restriction 4a162a3f Support change_vnfpkg v2 API to change external CP 9922d94c Add prelude section for Zed releasenote 57902730 Add OpenID Connect Token Auth for k8s 03956dad Support vimConnectionInfo.extra when CNF deploy 8c7e2867 Enable retries when sending notifications 2fceb352 Add negative FT for subscription in multi tenancy 1d932149 Improve Unit Test for V2 API fec4f537 Fix compatibility with oslo.db 12.1.0 72e361bb Add docs for faultnotification auto heal d5a97c5f Restrict changing subscription of different tenant 736b457d CNF v2 API enhance and refactor 8c00bf51 Enhance Container Update Function 0403aa58 Support individual VNFc management using HOT 3bdb71c8 Handled exception in exception of instantiation d35a24af Release notes for enhance multi-tenant feature 6597bc24 Revert python-tackerclient installation c5d4b335 Support handling large queries for vnf packages 80ab9018 Fix misuse of assertTrue 9d5a84c2 Fixed some bugs for Mgmt Driver c995228d Update API doc and CLI doc d4ff8e02 Error log generated after instantiation fails d18bf0dd Add negative FT for VNF package in multi tenancy 98d3f4bf Fix SSL certificate setting error 5014b519 Imported Translations from Zanata acb231d7 Refactor change_vnfpkg v2 API b8c1f9da Fixed 'storageResourceIds' after SCALE-OUT 1b3facbb make getting vnf package tenant aware 18662b13 Fix external link port id of instantiatedVnfInfo 40e89565 Fix IPv4 check failure in UT 3a7fa3d9 Imported Translations from Zanata 6b350773 Fix Desired Capacity for heat is not updated fc730978 Update config in tacker installer d8f16acd Implemented number format in additional params e1a4666f Imported Translations from Zanata 6441914c Fix k8s init error when file contains special key 0e3793b1 Improve API Documentation for v2 API f957dd68 Add doc of Using OAuth2.0 for Tacker a89d5b28 Enable multiple VNFs creation from one package b4fc03f8 Imported Translations from Zanata 0984f29f affectedVirtualStorages should not be set 9b0b7d3b Add doc of container update f7e241ec Add doc of Change Current VNF Package baeb3bcd Improve VNF Package for v2 API FT 39925d11 Remove deprecated attributes from context 8b5969e4 Update API doc for paging large query results e8dfc6b0 Fix usage of deprecated .best_match() be72fd1a Add Separated NFVO FT for V2 API 048ba8fc Suppress Warnings for SQL Alchemy IN operator 0e68a316 Change to not convert additionalParams of V1 API 223badc3 'ipAddresses' field missing in example file e0e7b538 Support handling of large query results 5a90bf24 Implemented check on range end to fetch artifact 87ff1bdd Use getpass.getuser() in test_privsep 59dba1d8 Drop lower-constraints.txt and its testing 00d8f69f Refactor wsgi of v2 API 6873da0b Use full URL to call external NFVO d81429ed Fix incorrect attribute names in v2 API 5aec1089 Use more reasonable default domain name e2db1c7a Fix validate error when k8s resource init 045c5d3e Update doc for deploying CNF dbbe0834 “change_ext_conn” wrongly mentioned in document 883cd6be Fix failure of testing privsep e71fd766 Apply Robot Framework for testing df0f8fc6 Support Basic Lifecycle Operations of CNF v2 API 78dbba65 Support ChangeCurrentVNFPackage for VNF of v2 API 147f8c43 Add a Sample VNF Package for Ansible Driver 611b8b10 Add a Sample Ansible Driver 3dcc1279 Add missed parameters in auto-generated config 9f720296 Imported Translations from Zanata 4bbc32d4 Test to create VNF instance with 'VNF' name b4ee7d64 Setup multi tenants for multi-tenant job only 2ee46543 Add a VNF package sample for practical use cases 2ae07e66 Update doc of Helm chart for Kubernetes VIM 1f0f6692 Add Python3 zed unit tests 0833d04f Update master for stable/yoga 226281e8 FT of multi tenants for CNF cabb4749 Add documents for enhance operations in V2 86fd9ede Move Sample Kubernetes Driver Directory c0e8aed8 Revert gawk installation Diffstat (except docs and test files) ------------------------------------- .gitreview | 1 + .zuul.yaml | 130 +- api-ref/source/index.rst | 4 + api-ref/source/v1/status.yaml | 5 + api-ref/source/v1/vnf_packages.inc | 7 + api-ref/source/v1/vnflcm.inc | 21 + api-ref/source/v2/fault_notification.inc | 53 + api-ref/source/v2/fault_notification.rst | 9 + .../source/v2/parameters_fault_notification.yaml | 50 + .../source/v2/parameters_prometheus_plugin.yaml | 150 ++ api-ref/source/v2/parameters_vnffm.yaml | 335 +++ api-ref/source/v2/parameters_vnflcm.yaml | 335 ++- api-ref/source/v2/parameters_vnfpm.yaml | 292 +++ api-ref/source/v2/prometheus_plugin.inc | 151 ++ api-ref/source/v2/prometheus_plugin.rst | 9 + .../v2/samples/fault_notification/notify.json | 11 + .../prometheus_plugin/alert_auto_scale.json | 17 + .../v2/samples/prometheus_plugin/alert_fm.json | 21 + .../v2/samples/prometheus_plugin/alert_pm.json | 19 + .../vnffm/create-vnffm-subscription-request.json | 57 + .../vnffm/create-vnffm-subscription-response.json | 54 + .../samples/vnffm/list-vnffm-alarm-response.json | 41 + .../vnffm/list-vnffm-subscription-response.json | 56 + .../samples/vnffm/modify-vnffm-alarm-request.json | 3 + .../samples/vnffm/modify-vnffm-alarm-response.json | 3 + .../samples/vnffm/show-vnffm-alarm-response.json | 39 + .../vnffm/show-vnffm-subscription-response.json | 54 + .../v2/samples/vnflcm/change-ext-conn-request.json | 195 ++ .../v2/samples/vnflcm/change-vnfpkg-request.json | 224 ++ .../vnflcm/create-subscription-response.json | 2 +- .../vnflcm/create-vnf-instance-response.json | 4 +- .../fail-vnflcm-operation-occurrence-response.json | 10 +- .../samples/vnflcm/heal-vnf-instance-request.json | 7 + .../samples/vnflcm/list-subscription-response.json | 2 +- .../samples/vnflcm/list-vnf-instance-response.json | 30 +- .../list-vnflcm-operation-occurrence-response.json | 20 +- .../samples/vnflcm/scale-vnf-instance-request.json | 8 + .../samples/vnflcm/show-subscription-response.json | 2 +- .../samples/vnflcm/show-vnf-instance-response.json | 30 +- .../show-vnflcm-operation-occurrence-response.json | 10 +- .../vnflcm/update-vnf-instance-request.json | 48 + .../v2/samples/vnfpm/create-pm-job-request.json | 49 + .../v2/samples/vnfpm/create-pm-job-response.json | 20 + .../v2/samples/vnfpm/list-pm-job-response.json | 22 + .../samples/vnfpm/show-pm-job-report-response.json | 12 + .../v2/samples/vnfpm/show-pm-job-response.json | 20 + .../v2/samples/vnfpm/update-pm-job-request.json | 3 + .../v2/samples/vnfpm/update-pm-job-response.json | 3 + api-ref/source/v2/status.yaml | 18 +- api-ref/source/v2/vnffm.inc | 474 ++++ api-ref/source/v2/vnffm.rst | 9 + api-ref/source/v2/vnflcm.inc | 455 +++- api-ref/source/v2/vnfpm.inc | 382 ++++ api-ref/source/v2/vnfpm.rst | 9 + devstack/lib/tacker | 4 - devstack/settings | 8 - .../etsi_cnf_change_current_vnf_package.png | Bin 0 -> 49265 bytes .../_images/etsi_cnf_change_current_vnf_package.pu | 35 + .../etsi_vnf_change_current_vnf_package.png | Bin 0 -> 35166 bytes .../_images/etsi_vnf_change_current_vnf_package.pu | 33 + .../_images/mgmt_driver_for_container_update.png | Bin 0 -> 61404 bytes .../_images/mgmt_driver_for_container_update.pu | 40 + .../contributor/vnfd_template_description.rst | 636 +++--- .../kubernetes_openid_token_auth_usage_guide.rst | 322 +++ .../user/etsi_cnf_change_current_vnf_package.rst | 545 +++++ .../user/etsi_containerized_vnf_usage_guide.rst | 147 +- .../user/etsi_vnf_change_current_vnf_package.rst | 947 ++++++++ .../etsi_vnf_change_external_vnf_connectivity.rst | 2 +- .../etsi_vnf_deployment_as_vm_with_user_data.rst | 13 +- .../user/fault_notification_use_case_guide.rst | 168 ++ .../mgmt_driver_deploy_k8s_and_cnf_with_helm.rst | 164 +- .../mgmt_driver_deploy_k8s_cir_usage_guide.rst | 4 +- ...gmt_driver_deploy_k8s_kubespary_usage_guide.rst | 8 +- .../user/mgmt_driver_deploy_k8s_usage_guide.rst | 48 +- .../mgmt_driver_for_ansible_driver_usage_guide.rst | 640 ++++++ .../user/mgmt_driver_for_container_update.rst | 787 +++++++ .../user/practical_sample_package_usage_guide.rst | 1205 ++++++++++ .../user/prometheus_plugin_use_case_guide.rst | 336 +++ etc/config-generator.conf | 44 +- etc/tacker/api-paste.ini | 34 + lower-constraints.txt | 157 -- playbooks/devstack/pre.yaml | 7 +- ...add-sample-ansible-driver-f204be6350c8a546.yaml | 13 + ...ling-by-faultnotification-ae639a6dc0b02602.yaml | 9 + .../add-v2-change-vnfpkg-api-7f993cf283a53aab.yaml | 8 + .../notes/add-v2-cnf-api-a938c17b5c57fb67.yaml | 12 + ...bot-framework-for-testing-d04256887fd9bee7.yaml | 21 + ...-range-end-fetch-artifact-3c8ac96c3f2a89cf.yaml | 8 + ...esourceIds-scaled-out-VDU-f689291a48606021.yaml | 9 + ...ext-conn-name-in-document-d5936dfcb507bb50.yaml | 9 + ...sses-missing-example-file-9fba2ba98ba2e1bd.yaml | 10 + ...lStorages-in-notification-9c9c2343a339bde2.yaml | 8 + ...g-1976440-fix-mgmt-driver-e539cc940aa7a2f8.yaml | 7 + ...ug-1978071-k8s-init-error-7e0a8b2464019f81.yaml | 8 + ...rmat-in-additional-params-1048932e426cdf7b.yaml | 9 + ...-1979413-ssl-cert-setting-2cf3f29c12a1c64c.yaml | 7 + ...after-instantiation-fails-13f3ec6937757e45.yaml | 8 + ...cm-exception-in-exception-66a3d50cb80f2782.yaml | 10 + ...ion-change-of-diff-tenant-06a03559bfca3431.yaml | 8 + ...database_synchronaization-ed47b552227892cf.yaml | 13 + ...ommand-for-version-update-01ca32f1187fe0cf.yaml | 7 + ...hance-multi-tenant-policy-80ff4f8ecb11d8d3.yaml | 6 + ...tion-for-container-update-0da4499cc0e55dcf.yaml | 9 + ...f-from-one-package-cnf-v1-7ae8976ae9322733.yaml | 11 + ...r-performance-improvement-fc176d9abfec6c76.yaml | 9 + .../remove-cnf-restriction-7f1310274b086bb0.yaml | 8 + ...pkg-to-change-external-cp-336e349c6ac0d7a9.yaml | 6 + ...uto-heal-scale-with-tools-96ff8266ae9d31af.yaml | 17 + ...le-rollback-in-v2-lcm-api-25051324608e2dd3.yaml | 11 + ...erations-using-helm-chart-c540f96720e7269f.yaml | 9 + ...ndividual-vnfc-management-7a942395ad7ca7de.yaml | 7 + ...rtifact-of-ansible-driver-cdb731436b5bc573.yaml | 10 + .../support-openid-k8s-vim-8767a454e6b0a72d.yaml | 7 + ...t-paging-for-vnf-packages-b91fb0c37c9fa63a.yaml | 7 + .../notes/zed-prelude-a2c2a086b025bdb1.yaml | 19 + releasenotes/source/index.rst | 1 + .../locale/en_GB/LC_MESSAGES/releasenotes.po | 524 ++++- releasenotes/source/yoga.rst | 6 + requirements.txt | 12 +- roles/setup-default-vim/tasks/main.yaml | 90 + roles/setup-fake-prometheus-server/tasks/main.yaml | 39 + roles/setup-helm/tasks/main.yaml | 21 + roles/setup-k8s-oidc/defaults/main.yaml | 1 + .../setup-k8s-oidc/files/cluster_role_binding.yaml | 11 + roles/setup-k8s-oidc/files/create_keycloak.sh | 10 + roles/setup-k8s-oidc/files/generate_ssl_cert.sh | 27 + roles/setup-k8s-oidc/files/import_oidc_realm.sh | 19 + roles/setup-k8s-oidc/files/oidc_realm.json | 1843 ++++++++++++++++ roles/setup-k8s-oidc/files/ssl_csr.conf | 12 + roles/setup-k8s-oidc/tasks/main.yaml | 109 + roles/setup-multi-tenant-vim/defaults/main.yaml | 6 + roles/setup-multi-tenant-vim/tasks/main.yaml | 87 + .../Scripts/free5gc_mgmt_cnf.py | 10 + .../Scripts/kubernetes_mgmt_free5gc.py | 8 + .../Scripts/free5gc_mgmt_cnf.py | 10 + .../Scripts/free5gc_mgmt.py | 10 + .../Scripts/free5gc_mgmt.py | 10 + .../Scripts/free5gc_mgmt.py | 10 + .../vnf/change_ext_conn/Scripts/free5gc_mgmt.py | 10 + .../Scripts/free5gc_mgmt.py | 10 + .../UserData => ansible}/__init__.py | 0 samples/mgmt_driver/ansible/ansible.py | 144 ++ .../mgmt_driver/ansible/ansible_config_parser.py | 468 ++++ .../ansible/ansible_config_parser_cfg.py | 40 + samples/mgmt_driver/ansible/ansible_driver.py | 318 +++ .../BaseHOT/default/VNF-hot.yaml | 50 + .../BaseHOT/default/nested/VDU1.yaml | 45 + .../Definitions/etsi_nfv_sol001_common_types.yaml | 202 ++ .../Definitions/etsi_nfv_sol001_vnfd_types.yaml | 1465 ++++++++++++ .../Definitions/helloworld3_df_default.yaml | 225 ++ .../Definitions/helloworld3_top.vnfd.yaml | 28 + .../Definitions/helloworld3_types.yaml | 47 + .../ansible_vnf_package/ScriptANSIBLE/config.yaml | 39 + .../Scripts/Media/sample_start.yaml | 13 + .../ansible_vnf_package/TOSCA-Metadata/TOSCA.meta | 7 + .../ansible_vnf_package}/UserData/__init__.py | 0 .../ansible_vnf_package/UserData/lcm_user_data.py | 35 + .../mgmt_driver/ansible/config_actions/__init__.py | 0 .../ansible/config_actions/abstract_config.py | 4 + .../config_actions/vm_app_config/__init__.py | 0 .../vm_app_config/ansible_playbook_exec.py | 160 ++ .../config_actions/vm_app_config/config_walker.py | 45 + .../config_actions/vm_app_config/executor.py | 361 +++ .../config_actions/vm_app_config/vm_app_config.py | 143 ++ samples/mgmt_driver/ansible/config_validator.py | 60 + .../mgmt_driver/ansible/config_validator_schema.py | 135 ++ samples/mgmt_driver/ansible/event_handler.py | 25 + samples/mgmt_driver/ansible/exceptions.py | 144 ++ samples/mgmt_driver/ansible/heat_client.py | 56 + samples/mgmt_driver/ansible/utils.py | 47 + .../container_update/container_update_mgmt.py | 85 +- .../{ => kubernetes}/create_admin_token.yaml | 0 .../mgmt_driver/{ => kubernetes}/install_helm.sh | 0 .../{ => kubernetes}/install_k8s_cluster.sh | 0 .../{ => kubernetes}/kubernetes_mgmt.py | 14 +- .../BaseHOT/complex/complex_hot_top.yaml | 0 .../complex/nested/complex_nested_master.yaml | 0 .../complex/nested/complex_nested_worker.yaml | 0 .../nested/podaffinity_nested_master.yaml | 0 .../nested/podaffinity_nested_worker.yaml | 0 .../BaseHOT/podaffinity/podaffinity_hot_top.yaml | 0 .../simple/nested/simple_nested_master.yaml | 0 .../simple/nested/simple_nested_worker.yaml | 0 .../BaseHOT/simple/simple_hot_top.yaml | 0 .../Definitions/sample_kubernetes_df_complex.yaml | 0 .../sample_kubernetes_df_podaffinity.yaml | 0 .../Definitions/sample_kubernetes_df_simple.yaml | 0 .../Definitions/sample_kubernetes_top.vnfd.yaml | 0 .../Definitions/sample_kubernetes_types.yaml | 0 .../TOSCA-Metadata/TOSCA.meta | 0 .../kubernetes_vnf_package/UserData/__init__.py | 0 .../UserData/k8s_cluster_user_data.py | 0 .../cnf_nodeport_setting/cnf_nodeport_mgmt.py | 10 + .../Definitions/helloworld3_df_simple.yaml | 0 .../Definitions/helloworld3_top.vnfd.yaml | 0 .../Definitions/helloworld3_types.yaml | 0 .../Files/kubernetes/deployment.yaml | 0 .../Files/kubernetes/service_with_nodeport.yaml | 0 .../Files/kubernetes/service_without_nodeport.yaml | 0 .../TOSCA-Metadata/TOSCA.meta | 0 .../kubespray/cnf_nodeport_setting/configure_lb.sh | 7 +- .../kubespray/install_external_lb.sh | 0 .../{ => kubernetes}/kubespray/kubespray_mgmt.py | 3 +- .../BaseHOT/simple/base_hot_top.yaml | 0 .../simple/nested/base_hot_nested_master.yaml | 0 .../simple/nested/base_hot_nested_worker.yaml | 0 .../Definitions/sample_kubernetes_df_simple.yaml | 0 .../Definitions/sample_kubernetes_top.vnfd.yaml | 0 .../Definitions/sample_kubernetes_types.yaml | 0 .../TOSCA-Metadata/TOSCA.meta | 0 .../kubespray_vnf_package/UserData/__init__.py | 0 .../UserData/lcm_user_data.py | 0 .../{ => kubernetes}/private_registry_mgmt.py | 0 .../Definitions/etsi_nfv_sol001_common_types.yaml | 0 .../Definitions/etsi_nfv_sol001_vnfd_types.yaml | 0 .../Definitions/sample_vnfd_df_simple.yaml | 0 .../Definitions/sample_vnfd_top.yaml | 0 .../Definitions/sample_vnfd_types.yaml | 0 .../TOSCA-Metadata/TOSCA.meta | 0 .../practical_vnf_package/BaseHOT/ha/ha_hot.yaml | 139 ++ .../BaseHOT/scalable/nested/VDU_0.yaml | 77 + .../BaseHOT/scalable/nested/VDU_1.yaml | 77 + .../BaseHOT/scalable/nested/VDU_2.yaml | 77 + .../BaseHOT/scalable/scalable_hot.yaml | 129 ++ .../practical_vnf_package/Definitions/Common.yaml | 72 + .../practical_vnf_package/Definitions/Node.yaml | 31 + .../practical_vnf_package/Definitions/df_ha.yaml | 232 ++ .../Definitions/df_scalable.yaml | 391 ++++ .../Definitions/etsi_nfv_sol001_common_types.yaml | 203 ++ .../Definitions/etsi_nfv_sol001_vnfd_types.yaml | 1466 ++++++++++++ .../TOSCA-Metadata/TOSCA.meta | 4 + samples/practical_vnf_package/UserData/__init__.py | 0 .../UserData/lcm_user_data.py | 409 ++++ setup.cfg | 30 +- tacker/alarm_receiver.py | 4 +- tacker/api/api_common.py | 5 +- tacker/api/extensions.py | 7 +- tacker/api/v1/base.py | 9 +- tacker/api/v1/resource.py | 4 +- tacker/api/validation/parameter_types.py | 24 +- tacker/api/vnflcm/v1/controller.py | 16 +- tacker/api/vnfpkgm/v1/controller.py | 69 +- tacker/auth.py | 21 +- tacker/common/clients.py | 4 +- tacker/common/cmd_executer.py | 3 +- tacker/common/config.py | 2 +- tacker/common/container/kubernetes_utils.py | 36 +- tacker/common/csar_utils.py | 2 +- tacker/common/driver_manager.py | 4 +- tacker/common/oidc_utils.py | 57 + tacker/common/utils.py | 28 +- tacker/conductor/conductor_server.py | 257 ++- tacker/conf/conductor.py | 4 + tacker/conf/vnf_package.py | 6 + tacker/context.py | 3 +- tacker/db/api.py | 3 + tacker/db/db_base.py | 4 +- .../db/migration/alembic_migrations/versions/HEAD | 2 +- .../versions/de8d835ae776_add_pm_and_fm_table.py | 92 + tacker/db/migration/cli.py | 46 +- tacker/db/migration/migrate_to_v2.py | 1057 +++++++++ tacker/db/nfvo/nfvo_db.py | 5 +- tacker/db/nfvo/nfvo_db_plugin.py | 17 +- tacker/db/vnfm/vnfm_db.py | 9 +- tacker/extensions/nfvo.py | 8 + tacker/extensions/vnfm.py | 5 + tacker/glance_store/store.py | 12 +- tacker/mistral/mistral_client.py | 2 +- tacker/nfvo/drivers/vim/kubernetes_driver.py | 20 +- tacker/nfvo/drivers/vim/openstack_driver.py | 67 +- tacker/nfvo/drivers/vnffg/sfc_drivers/noop.py | 4 +- tacker/nfvo/nfvo_plugin.py | 48 +- tacker/objects/fields.py | 4 +- tacker/objects/vim_connection.py | 3 +- tacker/objects/vnf_lcm_subscriptions.py | 29 +- tacker/objects/vnf_package.py | 25 +- tacker/objects/vnfd.py | 8 +- tacker/objects/vnfd_attribute.py | 6 +- tacker/policies/__init__.py | 4 + tacker/policies/base.py | 2 +- tacker/policy.py | 6 +- tacker/privileged/__init__.py | 2 +- tacker/sol_refactored/api/api_version.py | 40 +- tacker/sol_refactored/api/policies/vnffm_v1.py | 110 + tacker/sol_refactored/api/policies/vnflcm_v2.py | 30 +- tacker/sol_refactored/api/policies/vnfpm_v2.py | 132 ++ .../sol_refactored/api/prometheus_plugin_router.py | 43 + .../api/prometheus_plugin_validator.py | 46 + .../sol_refactored/api/prometheus_plugin_wsgi.py | 68 + tacker/sol_refactored/api/router.py | 29 + tacker/sol_refactored/api/schemas/common_types.py | 41 +- .../api/schemas/prometheus_plugin_schemas.py | 87 + .../api/schemas/server_notification_schemas.py | 44 + tacker/sol_refactored/api/schemas/vnffm_v1.py | 173 ++ tacker/sol_refactored/api/schemas/vnflcm_v2.py | 28 + tacker/sol_refactored/api/schemas/vnfpm_v2.py | 86 + .../api/server_notification_router.py | 28 + .../api/server_notification_validator.py | 51 + .../sol_refactored/api/server_notification_wsgi.py | 82 + tacker/sol_refactored/api/wsgi.py | 163 +- tacker/sol_refactored/common/cinder_utils.py | 45 + .../sol_refactored/common/common_script_utils.py | 237 ++ tacker/sol_refactored/common/config.py | 104 +- tacker/sol_refactored/common/coordinate.py | 35 +- tacker/sol_refactored/common/exceptions.py | 199 ++ tacker/sol_refactored/common/fm_alarm_utils.py | 86 + .../sol_refactored/common/fm_subscription_utils.py | 174 ++ tacker/sol_refactored/common/http_client.py | 6 +- tacker/sol_refactored/common/lcm_op_occ_utils.py | 56 +- .../common/monitoring_plugin_base.py | 73 + tacker/sol_refactored/common/oidc_utils.py | 57 + tacker/sol_refactored/common/pm_job_utils.py | 175 ++ tacker/sol_refactored/common/prometheus_plugin.py | 871 ++++++++ .../sol_refactored/common/server_notification.py | 106 + tacker/sol_refactored/common/subscription_utils.py | 30 +- tacker/sol_refactored/common/vim_utils.py | 50 +- tacker/sol_refactored/common/vnf_instance_utils.py | 5 +- tacker/sol_refactored/common/vnfd_utils.py | 53 +- .../sol_refactored/conductor/conductor_rpc_v2.py | 47 + tacker/sol_refactored/conductor/conductor_v2.py | 113 +- .../conductor/prometheus_plugin_driver.py | 63 + .../conductor/server_notification_driver.py | 127 ++ tacker/sol_refactored/conductor/v2_hook.py | 3 + tacker/sol_refactored/conductor/vnffm_driver_v1.py | 50 + .../sol_refactored/conductor/vnflcm_driver_v2.py | 206 +- tacker/sol_refactored/conductor/vnfpm_driver_v2.py | 58 + .../controller/prometheus_plugin_controller.py | 57 + .../controller/server_notification.py | 32 + tacker/sol_refactored/controller/vnffm_v1.py | 200 ++ tacker/sol_refactored/controller/vnffm_view.py | 65 + tacker/sol_refactored/controller/vnflcm_v2.py | 167 +- .../sol_refactored/controller/vnflcm_versions.py | 4 + tacker/sol_refactored/controller/vnflcm_view.py | 85 +- tacker/sol_refactored/controller/vnfpm_v2.py | 297 +++ tacker/sol_refactored/controller/vnfpm_view.py | 54 + tacker/sol_refactored/db/sqlalchemy/models.py | 85 + .../infra_drivers/kubernetes/helm.py | 352 +++ .../infra_drivers/kubernetes/helm_utils.py | 100 + .../infra_drivers/kubernetes/kubernetes.py | 316 +++ .../infra_drivers/kubernetes/kubernetes_common.py | 382 ++++ .../kubernetes/kubernetes_resource.py | 586 +++++ .../infra_drivers/kubernetes/kubernetes_utils.py | 189 ++ .../infra_drivers/openstack/heat_utils.py | 67 +- .../infra_drivers/openstack/openstack.py | 435 +++- .../infra_drivers/openstack/userdata_default.py | 231 +- .../infra_drivers/openstack/userdata_main.py | 5 +- .../infra_drivers/openstack/userdata_standard.py | 564 +++++ .../infra_drivers/openstack/userdata_utils.py | 238 +- .../mgmt_drivers/server_notification.py | 249 +++ tacker/sol_refactored/nfvo/local_nfvo.py | 139 +- tacker/sol_refactored/nfvo/nfvo_client.py | 39 +- tacker/sol_refactored/objects/__init__.py | 12 + tacker/sol_refactored/objects/base.py | 10 +- tacker/sol_refactored/objects/v1/alarm.py | 84 + .../objects/v1/alarm_cleared_notification.py | 50 + .../objects/v1/alarm_notification.py | 47 + tacker/sol_refactored/objects/v1/fields.py | 57 + .../objects/v1/fm_notifications_filter.py | 47 + .../sol_refactored/objects/v1/fm_subscription.py | 52 + .../objects/v1/fm_subscription_request.py | 34 + tacker/sol_refactored/objects/v1/grant.py | 2 +- .../objects/v1/resource_definition.py | 2 +- .../objects/v2/change_current_vnf_pkg_request.py | 6 + .../objects/v2/create_pm_job_request.py | 36 + ...rformance_information_available_notification.py | 62 + tacker/sol_refactored/objects/v2/pm_job.py | 75 + .../sol_refactored/objects/v2/pm_job_criteria.py | 34 + .../objects/v2/pm_job_modification.py | 32 + tacker/sol_refactored/objects/v2/pm_report.py | 65 + tacker/sol_refactored/objects/v2/vnf_instance.py | 3 + tacker/sol_refactored/test-tools/cli.py | 14 +- .../Definitions/helloworld3_df_simple.yaml | 271 +++ .../Drivers/vnflcm_noop.py | 68 + .../ScriptANSIBLE/config_complex_end.yaml | 19 + .../Scripts/complex/instantiation_end.yaml | 10 + .../Definitions/helloworld3_df_simple.yaml | 271 +++ .../ScriptANSIBLE/config_complex_end.yaml | 19 + .../Scripts/complex/instantiation_end.yaml | 10 + .../BaseHOT/default/VNF-hot.yaml | 50 + .../BaseHOT/default/nested/VDU1.yaml | 45 + .../Definitions/helloworld3_df_default.yaml | 212 ++ .../Definitions/helloworld3_top.vnfd.yaml | 28 + .../Definitions/helloworld3_types.yaml | 47 + .../TOSCA-Metadata/TOSCA.meta | 7 + .../sample_compliance_test/UserData/__init__.py | 0 .../UserData/lcm_user_data.py | 35 + .../Definitions/helloworld3_df_vdumap.yaml | 105 + .../test_cnf/Definitions/helloworld3_top.vnfd.yaml | 1 + .../Files/kubernetes/deployment_vdumap1.yaml | 29 + .../Files/kubernetes/deployment_vdumap2.yaml | 29 + .../etsi/nfv/test_cnf/TOSCA-Metadata/TOSCA.meta | 10 + .../Definitions/sample_df_simple.yaml | 41 +- .../Files/kubernetes/configmap_3.yaml | 9 + .../Files/kubernetes/daemonset.yaml | 38 + .../Files/kubernetes/deployment.yaml | 2 +- .../Files/kubernetes/deployment_2.yaml | 39 + .../Files/kubernetes/pod_env_2.yaml | 26 + .../Files/kubernetes/pod_volume.yaml | 20 + .../Files/kubernetes/pod_volume_2.yaml | 28 + .../Files/kubernetes/replicaset.yaml | 2 +- .../Files/kubernetes/secret_3.yaml | 9 + .../TOSCA-Metadata/TOSCA.meta | 38 +- .../Definitions/sample_df_simple.yaml | 41 +- .../Files/kubernetes/configmap_3.yaml | 9 + .../Files/kubernetes/daemonset.yaml | 38 + .../Files/kubernetes/deployment.yaml | 2 +- .../Files/kubernetes/deployment_2.yaml | 39 + .../Files/kubernetes/pod_env_2.yaml | 26 + .../Files/kubernetes/pod_volume_2.yaml | 28 + .../Files/kubernetes/replicaset.yaml | 2 +- .../Files/kubernetes/secret_3.yaml | 9 + .../TOSCA-Metadata/TOSCA.meta | 36 +- .../Definitions/sample_vnfd_df_helmchart.yaml | 6 +- .../Definitions/helloworld3_df_scalingsteps.yaml | 2 +- .../Definitions/helloworld3_df_simple.yaml | 2 +- .../Files/kubernetes/deployment_scale.yaml | 2 +- .../Files/kubernetes/replicaset_scale.yaml | 2 +- .../Files/kubernetes/statefulset_scale.yaml | 2 +- .../nfv/test_cnf_scale/TOSCA-Metadata/TOSCA.meta | 6 +- .../BaseHOT/simple/helloworld3.yaml | 110 + .../BaseHOT/simple/nested/VDU1.yaml | 64 + .../BaseHOT/simple/nested/VDU2.yaml | 68 + .../Definitions/helloworld3_df_simple.yaml | 396 ++++ .../Definitions/helloworld3_top.vnfd.yaml | 31 + .../Definitions/helloworld3_types.yaml | 55 + .../TOSCA-Metadata/TOSCA.meta | 4 + .../UserData/__init__.py | 0 .../UserData/lcm_user_data.py | 35 + .../functional/sol/vnflcm/test_vnf_instance.py | 5 +- .../sol/vnflcm/test_vnf_instance_with_user_data.py | 274 +++ .../functional/sol/vnfpkgm/test_vnf_package.py | 44 +- .../sol_kubernetes/vnflcm/test_kubernetes.py | 81 + .../vnflcm/test_kubernetes_container_update.py | 18 +- .../sol_kubernetes/vnflcm/test_kubernetes_helm.py | 99 +- .../vnflcm/test_kubernetes_multi_ns.py | 28 +- .../sol_kubernetes/vnflcm/test_kubernetes_scale.py | 30 +- .../sol_kubernetes_multi_tenant/__init__.py | 0 .../sol_kubernetes_multi_tenant/vnflcm/__init__.py | 0 .../sol_kubernetes_multi_tenant/vnflcm/base.py | 230 ++ .../vnflcm/fake_vnflcm.py | 108 + .../vnflcm/test_kubernetes_multi_tenant.py | 375 ++++ .../sol_kubernetes_oidc_auth/__init__.py | 0 .../sol_kubernetes_oidc_auth/test_vim.py | 147 ++ .../sol_kubernetes_oidc_auth/vnflcm_v1/__init__.py | 0 .../vnflcm_v1/test_kubernetes_oidc_auth.py | 52 + .../sol_kubernetes_oidc_auth/vnflcm_v2/__init__.py | 0 .../sol_kubernetes_oidc_auth/vnflcm_v2/base_v2.py | 93 + .../vnflcm_v2/test_kubernetes_oidc_auth.py | 255 +++ .../Definitions/etsi_nfv_sol001_common_types.yaml | 0 .../Definitions/etsi_nfv_sol001_vnfd_types.yaml | 0 .../samples/tacker-monitoring-test.zip | Bin 0 -> 4873 bytes .../contents/Definitions/sample_cnf_df_simple.yaml | 250 +++ .../contents/Definitions/sample_cnf_top.vnfd.yaml | 31 + .../contents/Definitions/sample_cnf_types.yaml | 53 + .../contents/Files/kubernetes/deployment.yaml | 24 + .../contents/Files/kubernetes/namespace.yaml | 4 + .../Files/new_kubernetes/error_deployment.yaml | 24 + .../Files/new_kubernetes/new_deployment.yaml | 24 + .../contents/Scripts/sample_script.py | 68 + .../contents/TOSCA-Metadata/TOSCA.meta | 25 + .../test_change_vnf_pkg_with_deployment/pkggen.py | 52 + .../contents/Definitions/sample_cnf_df_simple.yaml | 178 ++ .../contents/Definitions/sample_cnf_top.vnfd.yaml | 31 + .../contents/Definitions/sample_cnf_types.yaml | 53 + .../contents/Files/kubernetes/test-chart-0.1.1.tgz | Bin 0 -> 3814 bytes .../Files/kubernetes/test-chart/.helmignore | 23 + .../Files/kubernetes/test-chart/Chart.yaml | 6 + .../kubernetes/test-chart/templates/NOTES.txt | 22 + .../kubernetes/test-chart/templates/_helpers.tpl | 62 + .../test-chart/templates/deployment_vdu1.yaml | 53 + .../test-chart/templates/deployment_vdu2.yaml | 53 + .../Files/kubernetes/test-chart/templates/hpa.yaml | 28 + .../kubernetes/test-chart/templates/ingress.yaml | 61 + .../kubernetes/test-chart/templates/service.yaml | 15 + .../test-chart/templates/serviceaccount.yaml | 12 + .../Files/kubernetes/test-chart/values.yaml | 83 + .../contents/Scripts/sample_script.py | 68 + .../contents/TOSCA-Metadata/TOSCA.meta | 9 + .../samples/test_helm_change_vnf_pkg/pkggen.py | 47 + .../contents/Definitions/sample_cnf_df_simple.yaml | 177 ++ .../contents/Definitions/sample_cnf_top.vnfd.yaml | 31 + .../contents/Definitions/sample_cnf_types.yaml | 53 + .../contents/Files/kubernetes/test-chart-0.1.0.tgz | Bin 0 -> 3809 bytes .../Files/kubernetes/test-chart/.helmignore | 23 + .../Files/kubernetes/test-chart/Chart.yaml | 6 + .../kubernetes/test-chart/templates/NOTES.txt | 22 + .../kubernetes/test-chart/templates/_helpers.tpl | 62 + .../test-chart/templates/deployment_vdu1.yaml | 53 + .../test-chart/templates/deployment_vdu2.yaml | 53 + .../Files/kubernetes/test-chart/templates/hpa.yaml | 28 + .../kubernetes/test-chart/templates/ingress.yaml | 61 + .../kubernetes/test-chart/templates/service.yaml | 15 + .../test-chart/templates/serviceaccount.yaml | 12 + .../Files/kubernetes/test-chart/values.yaml | 83 + .../contents/Scripts/sample_script.py | 68 + .../contents/TOSCA-Metadata/TOSCA.meta | 9 + .../samples/test_helm_instantiate/pkggen.py | 68 + .../contents/Definitions/sample_cnf_df_simple.yaml | 250 +++ .../contents/Definitions/sample_cnf_top.vnfd.yaml | 31 + .../contents/Definitions/sample_cnf_types.yaml | 53 + .../contents/Files/kubernetes/bindings.yaml | 10 + .../clusterrole_clusterrolebinding_SA.yaml | 29 + .../contents/Files/kubernetes/config-map.yaml | 8 + .../Files/kubernetes/controller-revision.yaml | 8 + .../contents/Files/kubernetes/daemon-set.yaml | 24 + .../contents/Files/kubernetes/deployment.yaml | 29 + .../Files/kubernetes/deployment_fail_test.yaml | 29 + .../kubernetes/horizontal-pod-autoscaler.yaml | 13 + .../contents/Files/kubernetes/job.yaml | 30 + .../contents/Files/kubernetes/limit-range.yaml | 10 + .../kubernetes/local-subject-access-review.yaml | 11 + .../Files/kubernetes/multiple_yaml_lease.yaml | 8 + .../kubernetes/multiple_yaml_network-policy.yaml | 17 + .../kubernetes/multiple_yaml_priority-class.yaml | 7 + .../contents/Files/kubernetes/namespace.yaml | 4 + .../Files/kubernetes/persistent-volume-0.yaml | 14 + .../Files/kubernetes/persistent-volume-1.yaml | 14 + .../contents/Files/kubernetes/pod-template.yaml | 43 + .../contents/Files/kubernetes/pod.yaml | 17 + .../kubernetes/replicaset_service_secret.yaml | 56 + .../contents/Files/kubernetes/resource-quota.yaml | 11 + .../Files/kubernetes/role_rolebinding_SA.yaml | 31 + ...access-review_and_self-subject-rule-review.yaml | 14 + .../contents/Files/kubernetes/statefulset.yaml | 41 + .../contents/Files/kubernetes/storage-class.yaml | 6 + .../Files/kubernetes/storage-class_pv_pvc.yaml | 37 + .../Files/kubernetes/subject-access-review.yaml | 9 + .../contents/Files/kubernetes/token-review.yaml | 9 + .../contents/Scripts/sample_script.py | 68 + .../contents/TOSCA-Metadata/TOSCA.meta | 144 ++ .../test_instantiate_cnf_resources/pkggen.py | 100 + .../sol_kubernetes_v2/test_change_vnfpkg.py | 310 +++ .../functional/sol_kubernetes_v2/test_helm.py | 545 +++++ .../test_prometheus_auto_scaling.py | 115 + .../sol_kubernetes_v2/test_vnffm_basic.py | 440 ++++ .../sol_kubernetes_v2/test_vnflcm_basic.py | 494 +++++ .../sol_kubernetes_v2/test_vnfpm_basic.py | 345 +++ .../sol_multi_tenant/vnflcm/fake_vnflcm.py | 1 - .../vnflcm/test_vnf_lcm_with_multi_tenant.py | 74 +- .../sol_separated_nfvo/vnflcm/fake_grant_server.py | 159 -- .../functional/sol_separated_nfvo_v2/__init__.py | 0 .../sol_separated_nfvo_v2/fake_grant_v2.py | 434 ++++ .../sol_separated_nfvo_v2/fake_vnfpkgm_v2.py | 34 + .../sol_separated_nfvo_v2/test_nfvo_separate_v2.py | 34 + .../functional/sol_v2/test_individual_vnfc_mgmt.py | 453 ++++ .../functional/sol_v2/test_server_notification.py | 442 ++++ .../sol_v2/test_vnflcm_error_handling.py | 469 +--- .../{sol_v2 => sol_v2_common}/base_v2.py | 163 +- .../{sol_v2 => sol_v2_common}/paramgen.py | 359 +++ .../contents/BaseHOT/simple/nested/VDU1.yaml | 15 +- .../contents/BaseHOT/simple/sample1.yaml | 13 +- .../contents/Definitions/v2_sample1_df_simple.yaml | 0 .../contents/Definitions/v2_sample1_top.vnfd.yaml | 0 .../contents/Definitions/v2_sample1_types.yaml | 0 .../contents/Scripts/sample_script.py | 0 .../contents/TOSCA-Metadata/TOSCA.meta | 0 .../basic_lcms_max/contents/UserData/userdata.py | 19 +- .../samples/basic_lcms_max/pkggen.py | 4 +- .../samples/basic_lcms_max/post.py | 2 +- .../samples/basic_lcms_max/pre.py | 2 +- .../contents/BaseHOT/simple/nested/VDU1.yaml | 4 +- .../contents/BaseHOT/simple/sample2.yaml | 5 +- .../contents/Definitions/v2_sample2_df_simple.yaml | 0 .../contents/Definitions/v2_sample2_top.vnfd.yaml | 0 .../contents/Definitions/v2_sample2_types.yaml | 0 .../contents/Scripts/sample_script.py | 0 .../contents/TOSCA-Metadata/TOSCA.meta | 0 .../samples/basic_lcms_min/pkggen.py | 13 +- .../Definitions/etsi_nfv_sol001_common_types.yaml | 202 ++ .../Definitions/etsi_nfv_sol001_vnfd_types.yaml | 1463 ++++++++++++ .../contents/BaseHOT/simple/nested/VDU1.yaml | 4 +- .../contents/BaseHOT/simple/sample2.yaml | 5 +- .../contents/Definitions/v2_sample2_df_simple.yaml | 0 .../contents/Definitions/v2_sample2_top.vnfd.yaml | 0 .../contents/Definitions/v2_sample2_types.yaml | 0 .../contents/Scripts/sample_script.py | 0 .../contents/TOSCA-Metadata/TOSCA.meta | 0 .../samples/error_network/pkggen.py | 4 +- .../contents/BaseHOT/simple/nested/VDU1.yaml | 12 +- .../scale_ng}/contents/BaseHOT/simple/sample1.yaml | 9 +- .../contents/Definitions/v2_sample1_df_simple.yaml | 0 .../contents/Definitions/v2_sample1_top.vnfd.yaml | 0 .../contents/Definitions/v2_sample1_types.yaml | 0 .../scale_ng/contents/Scripts/sample_script.py | 0 .../scale_ng/contents/TOSCA-Metadata/TOSCA.meta | 0 .../samples/scale_ng/contents/UserData/userdata.py | 21 +- .../samples/scale_ng/pkggen.py | 4 +- .../samples/scale_ng/post.py | 2 +- .../samples/scale_ng/pre.py | 2 +- .../contents/BaseHOT/simple/nested/VDU1.yaml | 4 +- .../contents/BaseHOT/simple/sample2.yaml | 5 +- .../contents/Definitions/v2_sample2_df_simple.yaml | 270 +++ .../contents/Definitions/v2_sample2_top.vnfd.yaml | 0 .../contents/Definitions/v2_sample2_types.yaml | 0 .../contents/Scripts/sample_script.py | 249 +++ .../contents/TOSCA-Metadata/TOSCA.meta | 0 .../samples/server_notification/pkggen.py | 72 + .../contents/BaseHOT/simple/base_hot_top.yaml | 39 + .../simple/nested/base_hot_nested_VDU1.yaml | 27 + .../contents/BaseHOT/volume/base_hot_top.yaml | 45 + .../volume/nested/base_hot_nested_VDU1.yaml | 35 + .../change_vnf_pkg_new_image_df_simple.yaml | 219 ++ .../change_vnf_pkg_new_image_df_volume.yaml | 224 ++ .../Definitions/change_vnf_pkg_top.vnfd.yaml | 31 + .../contents/Definitions/change_vnf_pkg_types.yaml | 53 + .../contents/Scripts/coordinate_new_vnf.py | 115 + .../contents/TOSCA-Metadata/TOSCA.meta | 4 + .../test_change_vnf_pkg_with_new_image/pkggen.py | 52 + .../contents/BaseHOT/simple/base_hot_top.yaml | 50 + .../simple/nested/base_hot_nested_VDU1.yaml | 27 + .../contents/BaseHOT/volume/base_hot_top.yaml | 57 + .../volume/nested/base_hot_nested_VDU1.yaml | 35 + .../change_vnf_pkg_new_volume_df_simple.yaml | 224 ++ .../change_vnf_pkg_new_volume_df_volume.yaml | 237 ++ .../Definitions/change_vnf_pkg_top.vnfd.yaml | 31 + .../contents/Definitions/change_vnf_pkg_types.yaml | 53 + .../contents/Scripts/coordinate_new_vnf.py | 115 + .../contents/Scripts/error_coordinate_new_vnf.py | 54 + .../contents/TOSCA-Metadata/TOSCA.meta | 4 + .../test_change_vnf_pkg_with_new_volume/pkggen.py | 60 + .../contents/BaseHOT/simple/base_hot_top.yaml | 38 + .../simple/nested/base_hot_nested_VDU1.yaml | 26 + .../change_vnf_pkg_error_image_df_simple.yaml | 219 ++ .../Definitions/change_vnf_pkg_top.vnfd.yaml | 31 + .../contents/Definitions/change_vnf_pkg_types.yaml | 53 + .../contents/Scripts/coordinate_new_vnf.py | 115 + .../contents/TOSCA-Metadata/TOSCA.meta | 4 + .../pkggen.py | 46 + .../contents/BaseHOT/simple/base_hot_top.yaml | 38 + .../simple/nested/base_hot_nested_VDU1.yaml | 27 + .../contents/BaseHOT/volume/base_hot_top.yaml | 57 + .../volume/nested/base_hot_nested_VDU1.yaml | 35 + .../change_vnf_pkg_old_image_df_simple.yaml | 211 ++ .../change_vnf_pkg_old_volume_df_simple.yaml | 229 ++ .../Definitions/change_vnf_pkg_top.vnfd.yaml | 32 + .../contents/Definitions/change_vnf_pkg_types.yaml | 53 + .../contents/Scripts/coordinate_old_vnf.py | 115 + .../contents/TOSCA-Metadata/TOSCA.meta | 4 + .../pkggen.py | 71 + .../contents/BaseHOT/simple/nested/VDU1.yaml | 30 + .../contents/BaseHOT/simple/sample2.yaml | 58 + .../contents/Definitions/v2_sample2_df_simple.yaml | 0 .../contents/Definitions/v2_sample2_top.vnfd.yaml | 31 + .../contents/Definitions/v2_sample2_types.yaml | 55 + .../update_vnf/contents/Scripts/sample_script.py | 0 .../update_vnf/contents/TOSCA-Metadata/TOSCA.meta | 4 + .../samples/update_vnf/pkggen.py | 4 +- .../contents/BaseHOT/simple/nested/VDU1.yaml | 53 + .../contents/BaseHOT/simple/nested/VDU2.yaml | 69 + .../contents/BaseHOT/simple/sample3.yaml | 57 + .../contents/Definitions/v2_sample3_df_simple.yaml | 357 +++ .../contents/Definitions/v2_sample3_top.vnfd.yaml | 31 + .../contents/Definitions/v2_sample3_types.yaml | 55 + .../contents/Scripts/coordinate_vnf.py | 46 + .../contents/Scripts/sample_script.py | 68 + .../contents/TOSCA-Metadata/TOSCA.meta | 4 + .../samples/userdata_standard/pkggen.py | 83 + .../contents/BaseHOT/simple/nested/VDU1.yaml | 53 + .../contents/BaseHOT/simple/nested/VDU2.yaml | 69 + .../contents/BaseHOT/simple/sample4.yaml | 57 + .../contents/Definitions/v2_sample4_df_simple.yaml | 357 +++ .../contents/Definitions/v2_sample4_top.vnfd.yaml | 31 + .../contents/Definitions/v2_sample4_types.yaml | 55 + .../contents/Scripts/coordinate_vnf.py | 46 + .../contents/Scripts/sample_script.py | 68 + .../contents/TOSCA-Metadata/TOSCA.meta | 4 + .../userdata_standard_change_vnfpkg/pkggen.py | 56 + .../sol_v2_common/test_vnflcm_basic_common.py | 2327 ++++++++++++++++++++ .../functional/{sol_v2 => sol_v2_common}/utils.py | 9 +- .../unit/common/container/test_kubernetes_utils.py | 89 +- .../nfvo/drivers/vim/test_kubernetes_driver.py | 4 +- .../unit/nfvo/drivers/vim/test_openstack_driver.py | 26 +- .../unit/objects/test_vnf_lcm_subscriptions.py | 23 + .../unit/sol_refactored/api/test_api_version.py | 55 +- .../sol_refactored/api/test_prometheus_plugin.py | 88 + .../sol_refactored/api/test_server_notification.py | 87 + .../unit/sol_refactored/api/test_validator.py | 15 +- .../test_common_script_utils.py} | 236 +- .../sol_refactored/common/test_fm_alarm_utils.py | 102 + .../common/test_fm_subscription_utils.py | 266 +++ .../sol_refactored/common/test_lcm_op_occ_utils.py | 464 +++- .../unit/sol_refactored/common/test_oidc_utils.py | 123 ++ .../sol_refactored/common/test_pm_job_utils.py | 318 +++ .../common/test_prometheus_plugin.py | 774 +++++++ .../common/test_server_notification.py | 168 ++ .../common/test_subscription_utils.py | 391 ++++ .../unit/sol_refactored/common/test_vim_utils.py | 130 ++ .../common/test_vnf_instance_utils.py | 33 +- .../unit/sol_refactored/common/test_vnfd_utils.py | 131 +- .../sol_refactored/conductor/test_conductor_v2.py | 263 ++- .../conductor/test_prometheus_plugin.py | 162 ++ .../conductor/test_server_notification.py | 130 ++ .../conductor/test_vnffm_driver_v1.py | 69 + .../conductor/test_vnflcm_driver_v2.py | 1728 ++++++++++++++- .../conductor/test_vnfpm_driver_v2.py | 113 + .../controller/test_prometheus_plugin.py | 380 ++++ .../controller/test_server_notification.py | 170 ++ .../sol_refactored/controller/test_vnffm_v1.py | 205 ++ .../sol_refactored/controller/test_vnflcm_v2.py | 664 +++++- .../sol_refactored/controller/test_vnflcm_view.py | 42 + .../sol_refactored/controller/test_vnfpm_v2.py | 433 ++++ .../sol_refactored/controller/test_vnfpm_view.py | 73 + .../infra_drivers/kubernetes/__init__.py | 0 .../infra_drivers/kubernetes/fakes.py | 665 ++++++ .../infra_drivers/kubernetes/test_helm.py | 74 + .../infra_drivers/kubernetes/test_kubernetes.py | 276 +++ .../infra_drivers/openstack/test_openstack.py | 1385 +++++++++++- .../openstack/test_userdata_default.py | 763 +++++++ .../unit/sol_refactored/nfvo/test_local_nfvo.py | 749 +++++++ .../unit/sol_refactored/nfvo/test_nfvo_client.py | 441 ++++ .../Definitions/sample_cnf_df_simple.yaml | 131 ++ .../Files/kubernetes/deployment.yaml | 24 + .../Files/new_kubernetes/new_deployment.yaml | 24 + .../Scripts/coordinate_new_vnf.py | 67 + .../change_vnfpkg_sample/TOSCA-Metadata/TOSCA.meta | 14 + .../unit/sol_refactored/samples/fakes_for_fm.py | 112 + .../samples/sample1/BaseHOT/error/ut_sample1.yaml | 122 + .../samples/sample1/BaseHOT/simple/ut_sample1.yaml | 6 +- .../Definitions/ut_sample1_df_simple_error.yaml | 310 +++ .../samples/sample1/TOSCA-Metadata/TOSCA.meta | 1 + .../samples/sample1/UserData/userdata_default.py | 25 +- .../sol_refactored/samples/sample1/manifest.mf | 7 + .../sample2/Definitions/sample_cnf_df_simple.yaml | 131 ++ .../sample2/Files/kubernetes/api-service.yaml | 11 + .../samples/sample2/Files/kubernetes/bindings.yaml | 10 + .../clusterrole_clusterrolebinding_SA.yaml | 29 + .../sample2/Files/kubernetes/config-map.yaml | 8 + .../Files/kubernetes/controller-revision.yaml | 8 + .../sample2/Files/kubernetes/daemon-set.yaml | 19 + .../sample2/Files/kubernetes/deployment.yaml | 24 + .../kubernetes/horizontal-pod-autoscaler.yaml | 13 + .../samples/sample2/Files/kubernetes/job.yaml | 25 + .../sample2/Files/kubernetes/limit-range.yaml | 10 + .../kubernetes/local-subject-access-review.yaml | 11 + .../Files/kubernetes/multiple_yaml_lease.yaml | 8 + .../kubernetes/multiple_yaml_network-policy.yaml | 17 + .../kubernetes/multiple_yaml_priority-class.yaml | 7 + .../sample2/Files/kubernetes/namespace.yaml | 4 + .../samples/sample2/Files/kubernetes/node.yaml | 41 + .../Files/kubernetes/persistent-volume-0.yaml | 14 + .../Files/kubernetes/persistent-volume-1.yaml | 14 + .../sample2/Files/kubernetes/pod-template.yaml | 43 + .../samples/sample2/Files/kubernetes/pod.yaml | 12 + .../kubernetes/replicaset_service_secret.yaml | 51 + .../sample2/Files/kubernetes/resource-quota.yaml | 11 + .../Files/kubernetes/role_rolebinding_SA.yaml | 31 + ...access-review_and_self-subject-rule-review.yaml | 14 + .../sample2/Files/kubernetes/statefulset.yaml | 36 + .../sample2/Files/kubernetes/storage-class.yaml | 6 + .../Files/kubernetes/storage-class_pv_pvc.yaml | 37 + .../Files/kubernetes/subject-access-review.yaml | 9 + .../sample2/Files/kubernetes/token-review.yaml | 9 + .../Files/kubernetes/volume-attachment.yaml | 12 + .../samples/sample2/Scripts/coordinate_old_vnf.py | 64 + .../samples/sample2/TOSCA-Metadata/TOSCA.meta | 154 ++ .../unit/vnfm/infra_drivers/kubernetes/fakes.py | 42 +- .../kubernetes/test_kubernetes_driver.py | 702 +++++- .../kubernetes/test_kubernetes_driver_helm.py | 63 +- .../kubernetes/test_translate_outputs.py | 1 - .../vnfm/infra_drivers/openstack/test_openstack.py | 4 +- .../openstack/test_openstack_driver.py | 18 +- .../mgmt_drivers/test_container_update_mgmt.py | 138 +- tacker/tosca/utils.py | 6 +- tacker/vnflcm/utils.py | 3 +- tacker/vnflcm/vnflcm_driver.py | 184 +- .../infra_drivers/kubernetes/helm/helm_client.py | 3 +- .../kubernetes/k8s/translate_inputs.py | 4 +- .../kubernetes/k8s/translate_outputs.py | 221 +- .../infra_drivers/kubernetes/kubernetes_driver.py | 703 +++++- .../infra_drivers/kubernetes/translate_template.py | 4 +- tacker/vnfm/infra_drivers/noop.py | 2 +- .../vnfm/infra_drivers/openstack/glance_client.py | 4 +- tacker/vnfm/infra_drivers/openstack/openstack.py | 54 +- .../infra_drivers/openstack/translate_template.py | 18 +- tacker/vnfm/keystone.py | 34 +- tacker/vnfm/lcm_user_data/utils.py | 22 +- tacker/vnfm/mgmt_drivers/constants.py | 2 +- tacker/vnfm/monitor_drivers/http_ping/http_ping.py | 2 +- tacker/vnfm/monitor_drivers/ping/ping.py | 2 +- tacker/vnfm/nfvo_client.py | 11 +- tacker/vnfm/plugin.py | 10 +- tacker/vnfm/vim_client.py | 13 +- tacker/wsgi.py | 10 +- test-requirements.txt | 1 + tools/test-setup-fake-prometheus-server.sh | 14 + tools/test-setup-k8s-vim.sh | 33 +- tox.ini | 48 +- vagrant/devstack/README.md | 24 +- vagrant/devstack/group_vars/all.yml | 4 +- vagrant/devstack/hosts | 8 +- vagrant/devstack/lib/machine.rb | 2 +- vagrant/devstack/samples/machines-2nodes.yml | 18 +- vagrant/devstack/samples/machines.yml | 8 +- 870 files changed, 81667 insertions(+), 4806 deletions(-) Requirements updates -------------------- diff --git a/requirements.txt b/requirements.txt index 80daa4d2..b3abc896 100644 --- a/requirements.txt +++ b/requirements.txt @@ -0,0 +1,3 @@ +# Requirements lower bounds listed here are our best effort to keep them up to +# date but we do not test them so no guarantee of having them all correct. If +# you find any incorrect lower bounds, let us know or propose a fix. @@ -18,2 +20,0 @@ WebOb>=1.7.1 # MIT -python-heatclient>=1.10.0 # Apache-2.0 -python-keystoneclient>=3.8.0 # Apache-2.0 @@ -38,0 +40,4 @@ openstacksdk>=0.44.0 # Apache-2.0 +python-barbicanclient>=4.5.2 # Apache-2.0 +python-heatclient>=1.10.0 # Apache-2.0 +python-keystoneclient>=3.8.0 # Apache-2.0 +python-mistralclient>=4.2.0 # Apache-2.0 @@ -40,0 +46 @@ python-novaclient>=9.1.0 # Apache-2.0 +python-tackerclient>=1.11.0 # Apache-2.0 @@ -45,2 +50,0 @@ pyroute2>=0.4.21;sys_platform!='win32' # Apache-2.0 (+ dual licensed GPL2) -python-mistralclient>=4.2.0 # Apache-2.0 -python-barbicanclient>=4.5.2 # Apache-2.0 diff --git a/test-requirements.txt b/test-requirements.txt index 6ae7245b..8cbdd883 100644 --- a/test-requirements.txt +++ b/test-requirements.txt @@ -23,0 +24 @@ PyMySQL>=0.10.1 # MIT +freezegun>=1.2.2 # Apache-2.0
participants (1)
-
no-reply@openstack.org