diff options
author | Jenkins <jenkins@review.openstack.org> | 2014-09-18 19:33:30 +0000 |
---|---|---|
committer | Gerrit Code Review <review@openstack.org> | 2014-09-18 19:33:30 +0000 |
commit | ac2a261182ef9e362dedd07976c38843ef28b9b4 (patch) | |
tree | f146f8f511de9fd43414891cab35d78121e6fca6 | |
parent | 69f8b3e1b58d1c89229509306ae96a06ca47dd51 (diff) | |
parent | 43a58031f8239bfdda9986706106e67209a1d3da (diff) | |
download | designate-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.py | 30 |
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', |