From a763297685ded1056c3f782882ba0f42f7e6b75b Mon Sep 17 00:00:00 2001 From: Josh Durgin Date: Thu, 17 Nov 2011 13:06:36 -0800 Subject: [PATCH] misc: move deep_merge out of the MergeConfig class - it's generic --- teuthology/misc.py | 19 +++++++++++++++++++ teuthology/run.py | 22 ++-------------------- 2 files changed, 21 insertions(+), 20 deletions(-) diff --git a/teuthology/misc.py b/teuthology/misc.py index 9cf4e05090fe2..0e6b7676c17e2 100644 --- a/teuthology/misc.py +++ b/teuthology/misc.py @@ -422,3 +422,22 @@ def replace_all_with_clients(cluster, config): for client in all_roles_of_type(cluster, 'client'): norm_config['client.{id}'.format(id=client)] = config['all'] return norm_config + +def deep_merge(a, b): + if a is None: + return b + if b is None: + return a + if isinstance(a, list): + assert isinstance(b, list) + a.extend(b) + return a + if isinstance(a, dict): + assert isinstance(b, dict) + for (k, v) in b.iteritems(): + if k in a: + a[k] = deep_merge(a[k], v) + else: + a[k] = v + return a + return b diff --git a/teuthology/run.py b/teuthology/run.py index a2c3e00274446..e31f7e53d7a0c 100644 --- a/teuthology/run.py +++ b/teuthology/run.py @@ -14,29 +14,11 @@ def config_file(string): return config class MergeConfig(argparse.Action): - def deep_merge(self, a, b): - if a is None: - return b - if b is None: - return a - if isinstance(a, list): - assert isinstance(b, list) - a.extend(b) - return a - if isinstance(a, dict): - assert isinstance(b, dict) - for (k, v) in b.iteritems(): - if k in a: - a[k] = self.deep_merge(a[k], v) - else: - a[k] = v - return a - return b - def __call__(self, parser, namespace, values, option_string=None): config = getattr(namespace, self.dest) + from teuthology.misc import deep_merge for new in values: - self.deep_merge(config, new) + deep_merge(config, new) def parse_args(): parser = argparse.ArgumentParser(description='Run ceph integration tests') -- 2.39.5