|
@@ -202,7 +202,7 @@ class ZonemgrRefresh:
|
|
|
zone_soa = sqlite3_ds.get_zone_soa(str(zone_name_class[0]), self._db_file)
|
|
|
if not zone_soa:
|
|
|
logger.error(ZONEMGR_NO_SOA, zone_name_class[0], zone_name_class[1])
|
|
|
- raise ZonemgrException("[b10-zonemgr] zone (%s, %s) doesn't have soa." % zone_name_class)
|
|
|
+ return
|
|
|
zone_info["zone_soa_rdata"] = zone_soa[7]
|
|
|
zone_info["zone_state"] = ZONE_OK
|
|
|
zone_info["last_refresh_time"] = self._get_current_time()
|
|
@@ -420,12 +420,6 @@ class ZonemgrRefresh:
|
|
|
|
|
|
def update_config_data(self, new_config):
|
|
|
""" update ZonemgrRefresh config """
|
|
|
- # TODO: we probably want to store all this info in a nice
|
|
|
- # class, so that we don't have to backup and restore every
|
|
|
- # single value.
|
|
|
- # TODO2: We also don't use get_default_value yet
|
|
|
- backup = self._zonemgr_refresh_info.copy()
|
|
|
-
|
|
|
# Get a new value, but only if it is defined (commonly used below)
|
|
|
# We don't use "value or default", because if value would be
|
|
|
# 0, we would take default
|
|
@@ -435,58 +429,45 @@ class ZonemgrRefresh:
|
|
|
else:
|
|
|
return default
|
|
|
|
|
|
- # store the values so we can restore them if there is a problem
|
|
|
- lowerbound_refresh_backup = self._lowerbound_refresh
|
|
|
self._lowerbound_refresh = val_or_default(
|
|
|
new_config.get('lowerbound_refresh'), self._lowerbound_refresh)
|
|
|
|
|
|
- lowerbound_retry_backup = self._lowerbound_retry
|
|
|
self._lowerbound_retry = val_or_default(
|
|
|
new_config.get('lowerbound_retry'), self._lowerbound_retry)
|
|
|
|
|
|
- max_transfer_timeout_backup = self._max_transfer_timeout
|
|
|
self._max_transfer_timeout = val_or_default(
|
|
|
new_config.get('max_transfer_timeout'), self._max_transfer_timeout)
|
|
|
|
|
|
- refresh_jitter_backup = self._refresh_jitter
|
|
|
self._refresh_jitter = val_or_default(
|
|
|
new_config.get('refresh_jitter'), self._refresh_jitter)
|
|
|
|
|
|
- reload_jitter_backup = self._reload_jitter
|
|
|
self._reload_jitter = val_or_default(
|
|
|
new_config.get('reload_jitter'), self._reload_jitter)
|
|
|
- try:
|
|
|
- required = {}
|
|
|
- secondary_zones = new_config.get('secondary_zones')
|
|
|
- if secondary_zones is not None:
|
|
|
- # Add new zones
|
|
|
- for secondary_zone in new_config.get('secondary_zones'):
|
|
|
- name = secondary_zone['name']
|
|
|
- # Be tolerant to sclerotic users who forget the final dot
|
|
|
- if name[-1] != '.':
|
|
|
- name = name + '.'
|
|
|
- name_class = (name, secondary_zone['class'])
|
|
|
- required[name_class] = True
|
|
|
- # Add it only if it isn't there already
|
|
|
- if not name_class in self._zonemgr_refresh_info:
|
|
|
- self.zonemgr_add_zone(name_class)
|
|
|
- # Drop the zones that are no longer there
|
|
|
- # Do it in two phases, python doesn't like deleting while iterating
|
|
|
- to_drop = []
|
|
|
- for old_zone in self._zonemgr_refresh_info:
|
|
|
- if not old_zone in required:
|
|
|
- to_drop.append(old_zone)
|
|
|
- for drop in to_drop:
|
|
|
- del self._zonemgr_refresh_info[drop]
|
|
|
- # If we are not able to find it in database, restore the original
|
|
|
- except:
|
|
|
- self._zonemgr_refresh_info = backup
|
|
|
- self._lowerbound_refresh = lowerbound_refresh_backup
|
|
|
- self._lowerbound_retry = lowerbound_retry_backup
|
|
|
- self._max_transfer_timeout = max_transfer_timeout_backup
|
|
|
- self._refresh_jitter = refresh_jitter_backup
|
|
|
- self._reload_jitter = reload_jitter_backup
|
|
|
- raise
|
|
|
+
|
|
|
+ required = {}
|
|
|
+ secondary_zones = new_config.get('secondary_zones')
|
|
|
+ if secondary_zones is not None:
|
|
|
+ # Add new zones
|
|
|
+ for secondary_zone in new_config.get('secondary_zones'):
|
|
|
+ name = secondary_zone['name']
|
|
|
+ # Be tolerant to sclerotic users who forget the final dot
|
|
|
+ if name[-1] != '.':
|
|
|
+ name = name + '.'
|
|
|
+ name_class = (name, secondary_zone['class'])
|
|
|
+ required[name_class] = True
|
|
|
+ # Add it only if it isn't there already
|
|
|
+ if not name_class in self._zonemgr_refresh_info:
|
|
|
+ # If we are not able to find it in database, simply skip
|
|
|
+ # it and log an error
|
|
|
+ self.zonemgr_add_zone(name_class)
|
|
|
+ # Drop the zones that are no longer there
|
|
|
+ # Do it in two phases, python doesn't like deleting while iterating
|
|
|
+ to_drop = []
|
|
|
+ for old_zone in self._zonemgr_refresh_info:
|
|
|
+ if not old_zone in required:
|
|
|
+ to_drop.append(old_zone)
|
|
|
+ for drop in to_drop:
|
|
|
+ del self._zonemgr_refresh_info[drop]
|
|
|
|
|
|
class Zonemgr:
|
|
|
"""Zone manager class."""
|