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