Altering the order of merging.
This commit is contained in:
parent
a4ce87bedd
commit
10474ac05a
@ -39,7 +39,6 @@ class CloudConfigPartHandler(handlers.Handler):
|
||||
self.cloud_buf = None
|
||||
self.cloud_fn = paths.get_ipath("cloud_config")
|
||||
self.file_names = []
|
||||
self.mergers = [DEF_MERGERS]
|
||||
|
||||
def list_types(self):
|
||||
return [
|
||||
@ -89,13 +88,9 @@ class CloudConfigPartHandler(handlers.Handler):
|
||||
return all_mergers
|
||||
|
||||
def _merge_part(self, payload, headers):
|
||||
next_mergers = self._extract_mergers(payload, headers)
|
||||
# Use the merger list from the last call, since it is the one
|
||||
# that will be defining how to merge with the next payload.
|
||||
curr_mergers = list(self.mergers[-1])
|
||||
LOG.debug("Merging by applying %s", curr_mergers)
|
||||
self.mergers.append(next_mergers)
|
||||
merger = mergers.construct(curr_mergers)
|
||||
my_mergers = self._extract_mergers(payload, headers)
|
||||
LOG.debug("Merging by applying %s", my_mergers)
|
||||
merger = mergers.construct(my_mergers)
|
||||
if self.cloud_buf is None:
|
||||
# First time through, merge with an empty dict...
|
||||
self.cloud_buf = {}
|
||||
@ -105,7 +100,6 @@ class CloudConfigPartHandler(handlers.Handler):
|
||||
def _reset(self):
|
||||
self.file_names = []
|
||||
self.cloud_buf = None
|
||||
self.mergers = [DEF_MERGERS]
|
||||
|
||||
def handle_part(self, _data, ctype, filename, # pylint: disable=W0221
|
||||
payload, _frequency, headers): # pylint: disable=W0613
|
||||
|
@ -543,21 +543,16 @@ def make_url(scheme, host, port=None,
|
||||
def mergemanydict(srcs, reverse=False):
|
||||
if reverse:
|
||||
srcs = reversed(srcs)
|
||||
m_cfg = {}
|
||||
merge_how = [mergers.default_mergers()]
|
||||
for a_cfg in srcs:
|
||||
if a_cfg:
|
||||
# Take the last merger as the one that
|
||||
# will define how to merge next...
|
||||
mergers_to_apply = list(merge_how[-1])
|
||||
merged_cfg = {}
|
||||
for cfg in srcs:
|
||||
if cfg:
|
||||
# Figure out which mergers to apply...
|
||||
mergers_to_apply = mergers.dict_extract_mergers(cfg)
|
||||
if not mergers_to_apply:
|
||||
mergers_to_apply = mergers.default_mergers()
|
||||
merger = mergers.construct(mergers_to_apply)
|
||||
m_cfg = merger.merge(m_cfg, a_cfg)
|
||||
# If the config has now has new merger set,
|
||||
# extract them to be used next time...
|
||||
new_mergers = mergers.dict_extract_mergers(m_cfg)
|
||||
if new_mergers:
|
||||
merge_how.append(new_mergers)
|
||||
return m_cfg
|
||||
merged_cfg = merger.merge(merged_cfg, cfg)
|
||||
return merged_cfg
|
||||
|
||||
|
||||
@contextlib.contextmanager
|
||||
|
Loading…
x
Reference in New Issue
Block a user