summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJenkins <jenkins@review.openstack.org>2014-09-18 19:33:30 +0000
committerGerrit Code Review <review@openstack.org>2014-09-18 19:33:30 +0000
commitac2a261182ef9e362dedd07976c38843ef28b9b4 (patch)
treef146f8f511de9fd43414891cab35d78121e6fca6
parent69f8b3e1b58d1c89229509306ae96a06ca47dd51 (diff)
parent43a58031f8239bfdda9986706106e67209a1d3da (diff)
downloaddesignate-ac2a261182ef9e362dedd07976c38843ef28b9b4.tar.gz
Merge " Downgrade in 039 does not delete NS recordsets"
-rw-r--r--designate/storage/impl_sqlalchemy/migrate_repo/versions/039_support_soa_records.py30
1 files changed, 30 insertions, 0 deletions
diff --git a/designate/storage/impl_sqlalchemy/migrate_repo/versions/039_support_soa_records.py b/designate/storage/impl_sqlalchemy/migrate_repo/versions/039_support_soa_records.py
index d7c47bbe..bce82306 100644
--- a/designate/storage/impl_sqlalchemy/migrate_repo/versions/039_support_soa_records.py
+++ b/designate/storage/impl_sqlalchemy/migrate_repo/versions/039_support_soa_records.py
@@ -157,6 +157,8 @@ def upgrade(migrate_engine):
def downgrade(migrate_engine):
meta.bind = migrate_engine
dialect = migrate_engine.url.get_dialect().name
+ zones_table = Table('domains', meta, autoload=True)
+ records_table = Table('records', meta, autoload=True)
RECORD_TYPES = ['A', 'AAAA', 'CNAME', 'MX', 'SRV', 'TXT', 'SPF', 'NS',
'PTR', 'SSHFP']
@@ -170,6 +172,34 @@ def downgrade(migrate_engine):
recordsets_table.c.type.alter(type=Enum(name='recordset_types',
*RECORD_TYPES))
+ # Remove non-delegated NS records
+ # Get all the zones
+ zones = select(
+ columns=[
+ zones_table.c.id,
+ zones_table.c.created_at,
+ zones_table.c.tenant_id,
+ zones_table.c.name,
+ zones_table.c.email,
+ zones_table.c.serial,
+ zones_table.c.refresh,
+ zones_table.c.retry,
+ zones_table.c.expire,
+ zones_table.c.minimum
+ ]
+ ).execute().fetchall()
+
+ for zone in zones:
+ # for each zone, get all non-delegated NS recordsets
+ results = recordsets_table.select().\
+ where(recordsets_table.c.type == 'NS').\
+ where(recordsets_table.c.name == zone.name).execute()
+ for r in results:
+ records_table.delete().\
+ where(records_table.c.recordset_id == r.id).\
+ where(records_table.c.managed == 1).execute()
+ # NOTE: The value 1 is used instead of True because flake8 complains
+
# Re-add the constraint for sqlite
if dialect.startswith('sqlite'):
constraint = UniqueConstraint('domain_id', 'name', 'type',