Browse Source

Copy/edit record only if there are subnet rules without the support

pull/993/head
Viranch Mehta 3 years ago
parent
commit
a19dc6c12e
No known key found for this signature in database GPG Key ID: D83D1392AE9F93B4
1 changed files with 24 additions and 23 deletions
  1. +24
    -23
      octodns/provider/base.py

+ 24
- 23
octodns/provider/base.py View File

@ -99,30 +99,31 @@ class BaseProvider(BaseSource):
subnet_rules.append(i)
record = record.copy()
if subnet_rules:
record = record.copy()
rules = record.dynamic.rules
# drop subnet rules in reverse order so indices don't shift during rule deletion
for i in sorted(subnet_rules, reverse=True):
rule = rules[i].data
if rule.get('geos'):
del rule['subnets']
else:
del rules[i]
# drop any pools rendered unused
pools = record.dynamic.pools
pools_seen = set()
for rule in record.dynamic.rules:
pool = rule.data['pool']
while pool:
pools_seen.add(pool)
pool = pools[pool].data.get('fallback')
pools_unseen = set(pools.keys()) - pools_seen
for pool in pools_unseen:
del pools[pool]
# drop subnet rules in reverse order so indices don't shift during rule deletion
rules = record.dynamic.rules
for i in subnet_rules[::-1]:
rule = rules[i].data
if rule.get('geos'):
del rule['subnets']
else:
del rules[i]
# drop any pools rendered unused
pools = record.dynamic.pools
pools_seen = set()
for rule in record.dynamic.rules:
pool = rule.data['pool']
while pool:
pools_seen.add(pool)
pool = pools[pool].data.get('fallback')
pools_unseen = set(pools.keys()) - pools_seen
for pool in pools_unseen:
del pools[pool]
desired.add_record(record, replace=True)
desired.add_record(record, replace=True)
else:
msg = f'dynamic records not supported for {record.fqdn}'
fallback = 'falling back to simple record'


Loading…
Cancel
Save