From 77a3bd91591862dedaae675527a2ff59f0339e29 Mon Sep 17 00:00:00 2001 From: Dmitry Tantsur Date: Fri, 23 Oct 2020 15:02:28 +0200 Subject: [PATCH] Fix database migrations and disable the non-standalone job The pattern of adding a column and then reading a table with it no longer works in SQLAlchemy 1.3.20. This has been reported upstream [1] and apparently we're doing the wrong thing by reusing a column object twice. We need to disable the non-standalone job since it's really broken now, and this fix is blocking bifrost. [1] https://github.com/sqlalchemy/sqlalchemy/issues/5669 Change-Id: I2fb07413e8f421f39b24acf1272771ee2097b195 (cherry picked from commit 5678f219cd55345633c1478c3cad22460bef4429) --- .../882b2d84cb1b_attribute_constraints_relaxing.py | 3 ++- .../d00d6e3f38c4_change_created_finished_at_type.py | 11 ++++++++--- .../notes/migrations-1.3.20-0d337d000bd0a7e0.yaml | 4 ++++ zuul.d/project.yaml | 4 ++-- 4 files changed, 16 insertions(+), 6 deletions(-) create mode 100644 releasenotes/notes/migrations-1.3.20-0d337d000bd0a7e0.yaml diff --git a/ironic_inspector/migrations/versions/882b2d84cb1b_attribute_constraints_relaxing.py b/ironic_inspector/migrations/versions/882b2d84cb1b_attribute_constraints_relaxing.py index da83e4390..02b867bdb 100644 --- a/ironic_inspector/migrations/versions/882b2d84cb1b_attribute_constraints_relaxing.py +++ b/ironic_inspector/migrations/versions/882b2d84cb1b_attribute_constraints_relaxing.py @@ -63,7 +63,8 @@ def upgrade(): node_uuid_column = sa.Column(NODE_UUID, sa.String(36)) op.add_column(ATTRIBUTES, node_uuid_column) - attributes = sa.table(ATTRIBUTES, node_uuid_column, + attributes = sa.table(ATTRIBUTES, + sa.Column(NODE_UUID, sa.String(36)), sa.Column(UUID, sa.String(36))) with op.batch_alter_table(ATTRIBUTES, diff --git a/ironic_inspector/migrations/versions/d00d6e3f38c4_change_created_finished_at_type.py b/ironic_inspector/migrations/versions/d00d6e3f38c4_change_created_finished_at_type.py index 68227ae83..501412749 100644 --- a/ironic_inspector/migrations/versions/d00d6e3f38c4_change_created_finished_at_type.py +++ b/ironic_inspector/migrations/versions/d00d6e3f38c4_change_created_finished_at_type.py @@ -32,17 +32,22 @@ depends_on = None def upgrade(): - started_at = sa.Column('started_at', sa.types.Float, nullable=True) - finished_at = sa.Column('finished_at', sa.types.Float, nullable=True) temp_started_at = sa.Column("temp_started_at", sa.types.DateTime, nullable=True) temp_finished_at = sa.Column("temp_finished_at", sa.types.DateTime, nullable=True) - uuid = sa.Column("uuid", sa.String(36), primary_key=True) op.add_column("nodes", temp_started_at) op.add_column("nodes", temp_finished_at) + uuid = sa.Column("uuid", sa.String(36), primary_key=True) + started_at = sa.Column('started_at', sa.types.Float, nullable=True) + finished_at = sa.Column('finished_at', sa.types.Float, nullable=True) + # NOTE(dtantsur): do not reuse the column objects from add_column + temp_started_at = sa.Column("temp_started_at", sa.types.DateTime, + nullable=True) + temp_finished_at = sa.Column("temp_finished_at", sa.types.DateTime, + nullable=True) t = sa.table('nodes', started_at, finished_at, temp_started_at, temp_finished_at, uuid) diff --git a/releasenotes/notes/migrations-1.3.20-0d337d000bd0a7e0.yaml b/releasenotes/notes/migrations-1.3.20-0d337d000bd0a7e0.yaml new file mode 100644 index 000000000..8079f3b78 --- /dev/null +++ b/releasenotes/notes/migrations-1.3.20-0d337d000bd0a7e0.yaml @@ -0,0 +1,4 @@ +--- +fixes: + - | + Fixes database migrations with SQLAlchemy 1.3.20. diff --git a/zuul.d/project.yaml b/zuul.d/project.yaml index 239212874..057c7f675 100644 --- a/zuul.d/project.yaml +++ b/zuul.d/project.yaml @@ -13,7 +13,8 @@ - ironic-inspector-tempest - ironic-inspector-tempest-discovery - ironic-inspector-tempest-python3 - - ironic-inspector-non-standalone-tempest-python3 + - ironic-inspector-non-standalone-tempest-python3: + voting: false - openstack-tox-functional - openstack-tox-functional-py36 - bifrost-integration-tinyipa-ubuntu-xenial @@ -26,7 +27,6 @@ - ironic-inspector-tempest - ironic-inspector-tempest-discovery - ironic-inspector-tempest-python3 - - ironic-inspector-non-standalone-tempest-python3 - openstack-tox-functional - openstack-tox-functional-py36 - bifrost-integration-tinyipa-ubuntu-xenial