
This patch fixes a database migration for SQLAlchemy 1.4. In tacker repository following issues are encounter: 1. Replace deprecated SQLAlchemy "with_lockmode" method. The method was deprecated in SQLAlchemy 0.9 [1][2] and finally removed in version 1.4. This patch replaces "with_lockmode" with new method "with_for_update", which has no end-user impact. 2. The clause column IN, in the new version it requires parameters passed to operator either be a list of literal value or a tuple, or an empty list [3]. 3. Observe an argument error in 'update' query. Error: sqlalchemy.exc.ArgumentError: subject table for an INSERT, UPDATE or DELETE expected, got Column('id', Uuid(length=36), table=<vnf_software_images>, primary_key=True, nullable=False, default=ColumnDefault(<function generate_uuid at 0x7fb5be371d30>)) 4. The INSERT statement requires values to add in table as a list, tuple or dictionary [4]. Error: sqlalchemy.exc.ArgumentError: mapping or sequence expected for parameters This patch creates a dictionary of fields to be insert in VnfLcmOpOccs table. 5. Query fails on applying filters. When applying query to list vnf package or vnf instance using apply_filters() method exported from sqlalchemy_filters, it failed. AttributeError: 'Query' object has no attribute '_join_entities' In SQLAlchemy 1.4 unification of "query" and "select" construct took place [5][6]. The issue observe in tacker is an open bug of SQLAlchemy [7]. This patch drops "sqlalchemy_filters" and add customize method to apply filters in query. Note: This patch address sqlalchemy errors, SAWarnings will be resolve in future patches. [1] https://docs.sqlalchemy.org/en/13/changelog/migration_09.html?highlight=with_lockmode#new-for-update-support-on-select-query [2] https://docs.sqlalchemy.org/en/13/orm/query.html#sqlalchemy.orm.query.Query.with_lockmode [3] https://docs.sqlalchemy.org/en/14/core/sqlelement.html#sqlalchemy.sql.expression.ColumnElement.in_ [4] https://docs.sqlalchemy.org/en/14/core/dml.html#dml-class-documentation-constructors [5] https://github.com/sqlalchemy/sqlalchemy/issues/5159 [6] https://gerrit.sqlalchemy.org/c/sqlalchemy/sqlalchemy/+/1599/ [7] https://github.com/juliotrigo/sqlalchemy-filters/issues/61 Co-Authored-By: Ayumu Ueha <ueha.ayumu@fujitsu.com> Change-Id: Ifd1ae2753c639f22fc1afa020222416fe79469ef
Tacker
Welcome!
Tacker is an OpenStack based NFV Orchestrator service with built-in general purpose VNF Manager to deploy and operate Virtual Network Functions (VNFs) on an OpenStack based NFV Platform. It is based on ETSI MANO Architectural Framework and provides a fully functional stack to orchestrate VNFs end-to-end.
Installation:
Installation instructions and user guides can be found at: https://docs.openstack.org/tacker/
Tacker code base supports OpenStack master and other releases. Please follow the instructions in the above address for a successful installation of corresponding release.
Code:
Tacker code is available in following repositories:
- Tacker server: https://opendev.org/openstack/tacker
- Tacker Python client: https://opendev.org/openstack/python-tackerclient
- Tacker Horizon UI: https://opendev.org/openstack/tacker-horizon
Bugs:
Please report bugs at: https://bugs.launchpad.net/tacker
External Resources:
- Tacker Wiki: https://wiki.openstack.org/wiki/Tacker
- Tacker Blueprints: https://blueprints.launchpad.net/tacker
- For help on usage and hacking of Tacker, please send an email to OpenStack-dev Mailing List <mailto:openstack-discuss@lists.openstack.org> with [openstack-dev] [Tacker] tag.
- To get release notes: Tacker Release Notes
Description
Tacker: ETSI MANO NFV Orchestrator / VNF Manager. See https://wiki.openstack.org/wiki/Tacker
Languages
Python
99.3%
Shell
0.5%
Jinja
0.1%