Coverage for manila/db/migrations/alembic/versions/03da71c0e321_convert_cgs_to_share_groups.py: 100%
79 statements
« prev ^ index » next coverage.py v7.11.0, created at 2026-02-18 22:19 +0000
« prev ^ index » next coverage.py v7.11.0, created at 2026-02-18 22:19 +0000
1# Licensed under the Apache License, Version 2.0 (the "License"); you may
2# not use this file except in compliance with the License. You may obtain
3# a copy of the License at
4#
5# http://www.apache.org/licenses/LICENSE-2.0
6#
7# Unless required by applicable law or agreed to in writing, software
8# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
9# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
10# License for the specific language governing permissions and limitations
11# under the License.
13"""Convert consistency groups to share groups
15Revision ID: 03da71c0e321
16Revises: e9f79621d83f
17Create Date: 2016-05-19 10:25:17.899008
19"""
21# revision identifiers, used by Alembic.
22revision = "03da71c0e321"
23down_revision = "e9f79621d83f"
25from alembic import op
26from oslo_log import log
27import sqlalchemy as sa
28from sqlalchemy import Column, String
30from manila.db.migrations import utils
32LOG = log.getLogger(__name__)
35def upgrade():
36 LOG.info("Renaming consistency group tables")
38 # Rename tables
39 op.rename_table("consistency_groups", "share_groups")
40 op.rename_table("cgsnapshots", "share_group_snapshots")
41 op.rename_table("cgsnapshot_members", "share_group_snapshot_members")
42 op.rename_table(
43 "consistency_group_share_type_mappings",
44 "share_group_share_type_mappings")
46 # Update columns and foreign keys
47 op.drop_constraint(
48 "fk_shares_consistency_group_id", "shares", type_="foreignkey")
49 op.alter_column(
50 "shares", "consistency_group_id", existing_type=String(36),
51 existing_nullable=True, new_column_name="share_group_id")
52 op.alter_column(
53 "shares", "source_cgsnapshot_member_id", existing_type=String(36),
54 existing_nullable=True,
55 new_column_name="source_share_group_snapshot_member_id")
56 op.create_foreign_key(
57 "fk_shares_share_group_id", "shares", "share_groups",
58 ["share_group_id"], ["id"])
59 op.drop_constraint(
60 "fk_cg_share_network_id", "share_groups", type_="foreignkey")
61 op.drop_constraint(
62 "fk_cg_share_server_id", "share_groups", type_="foreignkey")
63 op.alter_column(
64 "share_groups", "source_cgsnapshot_id", existing_type=String(36),
65 new_column_name="source_share_group_snapshot_id")
66 op.create_foreign_key(
67 "fk_share_group_share_network_id", "share_groups", "share_networks",
68 ["share_network_id"], ["id"])
69 op.create_foreign_key(
70 "fk_share_group_share_server_id", "share_groups", "share_servers",
71 ["share_server_id"], ["id"])
72 op.drop_constraint(
73 "fk_cgsnapshots_consistency_group_id", "share_group_snapshots",
74 type_="foreignkey")
75 op.alter_column(
76 "share_group_snapshots", "consistency_group_id",
77 existing_type=String(36), new_column_name="share_group_id")
78 op.create_foreign_key(
79 "fk_share_group_snapshots_share_group_id", "share_group_snapshots",
80 "share_groups", ["share_group_id"], ["id"])
81 op.drop_constraint(
82 "fk_cgstm_cg_id", "share_group_share_type_mappings",
83 type_="foreignkey")
84 op.drop_constraint(
85 "fk_cgstm_share_type_id", "share_group_share_type_mappings",
86 type_="foreignkey")
87 op.alter_column(
88 "share_group_share_type_mappings", "consistency_group_id",
89 existing_type=String(36), new_column_name="share_group_id")
90 op.create_foreign_key(
91 "fk_sgstm_share_group_id", "share_group_share_type_mappings",
92 "share_groups", ["share_group_id"], ["id"])
93 op.create_foreign_key(
94 "fk_sgstm_share_type_id", "share_group_share_type_mappings",
95 "share_types", ["share_type_id"], ["id"])
96 op.drop_constraint(
97 "fk_cgsnapshot_members_cgsnapshot_id", "share_group_snapshot_members",
98 type_="foreignkey")
99 op.drop_constraint(
100 "fk_cgsnapshot_members_share_instance_id",
101 "share_group_snapshot_members", type_="foreignkey")
102 op.drop_constraint(
103 "fk_cgsnapshot_members_share_id", "share_group_snapshot_members",
104 type_="foreignkey")
105 op.drop_constraint(
106 "fk_cgsnapshot_members_share_type_id", "share_group_snapshot_members",
107 type_="foreignkey")
108 op.alter_column(
109 "share_group_snapshot_members", "cgsnapshot_id",
110 existing_type=String(36), new_column_name="share_group_snapshot_id")
111 op.create_foreign_key(
112 "fk_gsm_group_snapshot_id", "share_group_snapshot_members",
113 "share_group_snapshots", ["share_group_snapshot_id"], ["id"])
114 op.create_foreign_key(
115 "fk_gsm_share_instance_id", "share_group_snapshot_members",
116 "share_instances", ["share_instance_id"], ["id"])
117 op.create_foreign_key(
118 "fk_gsm_share_id", "share_group_snapshot_members", "shares",
119 ["share_id"], ["id"])
120 op.drop_column("share_group_snapshot_members", "share_type_id")
123def downgrade():
124 meta = sa.MetaData()
125 meta.bind = op.get_bind()
127 # Rename tables
128 op.rename_table("share_groups", "consistency_groups")
129 op.rename_table("share_group_snapshots", "cgsnapshots")
130 op.rename_table("share_group_snapshot_members", "cgsnapshot_members")
131 op.rename_table(
132 "share_group_share_type_mappings",
133 "consistency_group_share_type_mappings")
135 # Update columns and foreign keys
136 op.drop_constraint(
137 "fk_shares_share_group_id", "shares", type_="foreignkey")
138 op.alter_column(
139 "shares", "share_group_id", existing_type=String(36),
140 new_column_name="consistency_group_id")
141 op.alter_column(
142 "shares", "source_share_group_snapshot_member_id",
143 existing_type=String(36), existing_nullable=True,
144 new_column_name="source_cgsnapshot_member_id")
145 op.create_foreign_key(
146 "fk_shares_consistency_group_id", "shares", "consistency_groups",
147 ["consistency_group_id"], ["id"])
148 op.drop_constraint(
149 "fk_share_group_share_network_id", "consistency_groups",
150 type_="foreignkey")
151 op.drop_constraint(
152 "fk_share_group_share_server_id", "consistency_groups",
153 type_="foreignkey")
154 op.alter_column(
155 "consistency_groups", "source_share_group_snapshot_id",
156 existing_type=String(36), new_column_name="source_cgsnapshot_id")
157 op.create_foreign_key(
158 "fk_cg_share_network_id", "consistency_groups", "share_networks",
159 ["share_network_id"], ["id"])
160 op.create_foreign_key(
161 "fk_cg_share_server_id", "consistency_groups", "share_servers",
162 ["share_server_id"], ["id"])
163 op.drop_constraint(
164 "fk_share_group_snapshots_share_group_id", "cgsnapshots",
165 type_="foreignkey")
166 op.alter_column(
167 "cgsnapshots", "share_group_id", existing_type=String(36),
168 new_column_name="consistency_group_id")
169 op.create_foreign_key(
170 "fk_cgsnapshots_consistency_group_id", "cgsnapshots",
171 "consistency_groups", ["consistency_group_id"], ["id"])
172 op.drop_constraint(
173 "fk_sgstm_share_group_id", "consistency_group_share_type_mappings",
174 type_="foreignkey")
175 op.drop_constraint(
176 "fk_sgstm_share_type_id", "consistency_group_share_type_mappings",
177 type_="foreignkey")
178 op.alter_column(
179 "consistency_group_share_type_mappings", "share_group_id",
180 existing_type=String(36), new_column_name="consistency_group_id")
181 op.create_foreign_key(
182 "fk_cgstm_cg_id", "consistency_group_share_type_mappings",
183 "consistency_groups", ["consistency_group_id"], ["id"])
184 op.create_foreign_key(
185 "fk_cgstm_share_type_id", "consistency_group_share_type_mappings",
186 "share_types", ["share_type_id"], ["id"])
187 op.drop_constraint(
188 "fk_gsm_group_snapshot_id", "cgsnapshot_members", type_="foreignkey")
189 op.drop_constraint(
190 "fk_gsm_share_instance_id", "cgsnapshot_members", type_="foreignkey")
191 op.drop_constraint(
192 "fk_gsm_share_id", "cgsnapshot_members", type_="foreignkey")
193 op.alter_column(
194 "cgsnapshot_members", "share_group_snapshot_id",
195 existing_type=String(36), new_column_name="cgsnapshot_id")
196 op.create_foreign_key(
197 "fk_cgsnapshot_members_cgsnapshot_id", "cgsnapshot_members",
198 "cgsnapshots", ["cgsnapshot_id"], ["id"])
199 op.create_foreign_key(
200 "fk_cgsnapshot_members_share_instance_id",
201 "cgsnapshot_members", "share_instances", ["share_instance_id"], ["id"])
202 op.create_foreign_key(
203 "fk_cgsnapshot_members_share_id", "cgsnapshot_members", "shares",
204 ["share_id"], ["id"])
205 op.add_column(
206 "cgsnapshot_members",
207 Column('share_type_id', String(36), nullable=True))
209 connection = op.get_bind()
210 si_table = utils.load_table('share_instances', connection)
211 member_table = utils.load_table('cgsnapshot_members', connection)
212 for si_record in connection.execute(si_table.select()):
213 # pylint: disable=no-value-for-parameter
214 connection.execute(
215 member_table.update().where(
216 member_table.c.share_instance_id == si_record.id,
217 ).values({"share_type_id": si_record.share_type_id}))
219 op.alter_column(
220 "cgsnapshot_members",
221 Column('share_type_id', String(36), nullable=False))
222 op.create_foreign_key(
223 "fk_cgsnapshot_members_share_type_id", "cgsnapshot_members",
224 "share_types", ["share_type_id"], ["id"])