SQLAlchemy 2.0: octavia-db-manage fails because of sqlalchemy.exc.ArgumentError

Bug #2061348 reported by Takashi Kajinami
6
This bug affects 1 person
Affects Status Importance Assigned to Milestone
octavia
Fix Released
Undecided
Unassigned

Bug Description

octavia-db-manage command fails with the following traceback when sqlalchemy 2.0 is used.

This is currently a blocker after we fix https://bugs.launchpad.net/octavia/+bug/2061303

```
2024-04-15 01:40:44.740502 | controller | CRITICAL octavia-db-manage Unhandled error: sqlalchemy.exc.ArgumentError: Column expression, FROM clause, or other columns clause element expected, got [<sqlalchemy.sql.elements.ColumnClause at 0x7fb7b98dd1e0; load_balancer_id>, <sqlalchemy.sql.elements.ColumnClause at 0x7fb7b9754d30; default_pool_id>]. Did you mean to say select(<sqlalchemy.sql.elements.ColumnClause at 0x7fb7b98dd1e0; load_balancer_id>, <sqlalchemy.sql.elements.ColumnClause at 0x7fb7b9754d30; default_pool_id>)?
2024-04-15 01:40:44.740567 | controller | ERROR octavia-db-manage Traceback (most recent call last):
2024-04-15 01:40:44.740581 | controller | ERROR octavia-db-manage File "/opt/stack/data/venv/bin/octavia-db-manage", line 10, in <module>
2024-04-15 01:40:44.740591 | controller | ERROR octavia-db-manage sys.exit(main())
2024-04-15 01:40:44.740600 | controller | ERROR octavia-db-manage File "/opt/stack/octavia/octavia/db/migration/cli.py", line 156, in main
2024-04-15 01:40:44.740608 | controller | ERROR octavia-db-manage CONF.command.func(config, CONF.command.name)
2024-04-15 01:40:44.740616 | controller | ERROR octavia-db-manage File "/opt/stack/octavia/octavia/db/migration/cli.py", line 73, in do_upgrade
2024-04-15 01:40:44.740624 | controller | ERROR octavia-db-manage do_alembic_command(config, cmd, revision, sql=CONF.command.sql)
2024-04-15 01:40:44.740634 | controller | ERROR octavia-db-manage File "/opt/stack/octavia/octavia/db/migration/cli.py", line 41, in do_alembic_command
2024-04-15 01:40:44.740643 | controller | ERROR octavia-db-manage getattr(alembic_cmd, cmd)(config, *args, **kwargs)
2024-04-15 01:40:44.740651 | controller | ERROR octavia-db-manage File "/opt/stack/data/venv/lib/python3.10/site-packages/alembic/command.py", line 403, in upgrade
2024-04-15 01:40:44.740659 | controller | ERROR octavia-db-manage script.run_env()
2024-04-15 01:40:44.740669 | controller | ERROR octavia-db-manage File "/opt/stack/data/venv/lib/python3.10/site-packages/alembic/script/base.py", line 583, in run_env
2024-04-15 01:40:44.740677 | controller | ERROR octavia-db-manage util.load_python_file(self.dir, "env.py")
2024-04-15 01:40:44.740685 | controller | ERROR octavia-db-manage File "/opt/stack/data/venv/lib/python3.10/site-packages/alembic/util/pyfiles.py", line 95, in load_python_file
2024-04-15 01:40:44.740696 | controller | ERROR octavia-db-manage module = load_module_py(module_id, path)
2024-04-15 01:40:44.740704 | controller | ERROR octavia-db-manage File "/opt/stack/data/venv/lib/python3.10/site-packages/alembic/util/pyfiles.py", line 113, in load_module_py
2024-04-15 01:40:44.740714 | controller | ERROR octavia-db-manage spec.loader.exec_module(module) # type: ignore
2024-04-15 01:40:44.740736 | controller | ERROR octavia-db-manage File "<frozen importlib._bootstrap_external>", line 883, in exec_module
2024-04-15 01:40:44.740749 | controller | ERROR octavia-db-manage File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed
2024-04-15 01:40:44.740757 | controller | ERROR octavia-db-manage File "/opt/stack/octavia/octavia/db/migration/alembic_migrations/env.py", line 87, in <module>
2024-04-15 01:40:44.740768 | controller | ERROR octavia-db-manage run_migrations_online()
2024-04-15 01:40:44.740790 | controller | ERROR octavia-db-manage File "/opt/stack/octavia/octavia/db/migration/alembic_migrations/env.py", line 79, in run_migrations_online
2024-04-15 01:40:44.740804 | controller | ERROR octavia-db-manage context.run_migrations()
2024-04-15 01:40:44.740812 | controller | ERROR octavia-db-manage File "<string>", line 8, in run_migrations
2024-04-15 01:40:44.740822 | controller | ERROR octavia-db-manage File "/opt/stack/data/venv/lib/python3.10/site-packages/alembic/runtime/environment.py", line 948, in run_migrations
2024-04-15 01:40:44.740846 | controller | ERROR octavia-db-manage self.get_context().run_migrations(**kw)
2024-04-15 01:40:44.740859 | controller | ERROR octavia-db-manage File "/opt/stack/data/venv/lib/python3.10/site-packages/alembic/runtime/migration.py", line 627, in run_migrations
2024-04-15 01:40:44.740868 | controller | ERROR octavia-db-manage step.migration_fn(**kw)
2024-04-15 01:40:44.740878 | controller | ERROR octavia-db-manage File "/opt/stack/octavia/octavia/db/migration/alembic_migrations/versions/29ff921a6eb_shared_pools.py", line 57, in upgrade
2024-04-15 01:40:44.740886 | controller | ERROR octavia-db-manage select_obj = sa.select([listener.c.load_balancer_id,
2024-04-15 01:40:44.740896 | controller | ERROR octavia-db-manage File "/opt/stack/data/venv/lib/python3.10/site-packages/sqlalchemy/sql/_selectable_constructors.py", line 482, in select
2024-04-15 01:40:44.740913 | controller | ERROR octavia-db-manage return Select(*entities)
2024-04-15 01:40:44.740921 | controller | ERROR octavia-db-manage File "/opt/stack/data/venv/lib/python3.10/site-packages/sqlalchemy/sql/selectable.py", line 5131, in __init__
2024-04-15 01:40:44.740932 | controller | ERROR octavia-db-manage self._raw_columns = [
2024-04-15 01:40:44.740942 | controller | ERROR octavia-db-manage File "/opt/stack/data/venv/lib/python3.10/site-packages/sqlalchemy/sql/selectable.py", line 5132, in <listcomp>
2024-04-15 01:40:44.740952 | controller | ERROR octavia-db-manage coercions.expect(
2024-04-15 01:40:44.740961 | controller | ERROR octavia-db-manage File "/opt/stack/data/venv/lib/python3.10/site-packages/sqlalchemy/sql/coercions.py", line 396, in expect
2024-04-15 01:40:44.740972 | controller | ERROR octavia-db-manage resolved = impl._literal_coercion(
2024-04-15 01:40:44.740991 | controller | ERROR octavia-db-manage File "/opt/stack/data/venv/lib/python3.10/site-packages/sqlalchemy/sql/coercions.py", line 634, in _literal_coercion
2024-04-15 01:40:44.741003 | controller | ERROR octavia-db-manage self._raise_for_expected(element, argname)
2024-04-15 01:40:44.741014 | controller | ERROR octavia-db-manage File "/opt/stack/data/venv/lib/python3.10/site-packages/sqlalchemy/sql/coercions.py", line 1122, in _raise_for_expected
2024-04-15 01:40:44.741038 | controller | ERROR octavia-db-manage return super()._raise_for_expected(
2024-04-15 01:40:44.741051 | controller | ERROR octavia-db-manage File "/opt/stack/data/venv/lib/python3.10/site-packages/sqlalchemy/sql/coercions.py", line 693, in _raise_for_expected
2024-04-15 01:40:44.741061 | controller | ERROR octavia-db-manage super()._raise_for_expected(
2024-04-15 01:40:44.741092 | controller | ERROR octavia-db-manage File "/opt/stack/data/venv/lib/python3.10/site-packages/sqlalchemy/sql/coercions.py", line 518, in _raise_for_expected
2024-04-15 01:40:44.741104 | controller | ERROR octavia-db-manage raise exc.ArgumentError(msg, code=code) from err
2024-04-15 01:40:44.741146 | controller | ERROR octavia-db-manage sqlalchemy.exc.ArgumentError: Column expression, FROM clause, or other columns clause element expected, got [<sqlalchemy.sql.elements.ColumnClause at 0x7fb7b98dd1e0; load_balancer_id>, <sqlalchemy.sql.elements.ColumnClause at 0x7fb7b9754d30; default_pool_id>]. Did you mean to say select(<sqlalchemy.sql.elements.ColumnClause at 0x7fb7b98dd1e0; load_balancer_id>, <sqlalchemy.sql.elements.ColumnClause at 0x7fb7b9754d30; default_pool_id>)?
```

Revision history for this message
OpenStack Infra (hudson-openstack) wrote : Fix proposed to octavia (master)

Fix proposed to branch: master
Review: https://review.opendev.org/c/openstack/octavia/+/915831

Changed in octavia:
status: New → In Progress
Revision history for this message
OpenStack Infra (hudson-openstack) wrote : Fix merged to octavia (master)

Reviewed: https://review.opendev.org/c/openstack/octavia/+/915831
Committed: https://opendev.org/openstack/octavia/commit/4e6121d9bc5880d7fac3df579b5783a994cb4e4c
Submitter: "Zuul (22348)"
Branch: master

commit 4e6121d9bc5880d7fac3df579b5783a994cb4e4c
Author: Gregory Thiemonge <email address hidden>
Date: Mon Apr 15 03:30:33 2024 -0400

    Fix migration scripts with SQLAlchemy 2.0

    select no longer accepts list/tuple as first argument but it takes
    multiple arguments [0]

    [0] https://docs.sqlalchemy.org/en/14/changelog/migration_20.html#select-no-longer-accepts-varied-constructor-arguments-columns-are-passed-positionally

    Closes-Bug: #2061348
    Change-Id: I271986146f485b2cd4ae3391d1a27f4a57f97560

Changed in octavia:
status: In Progress → Fix Released
To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.