From: Josh Durgin Date: Thu, 17 Nov 2011 21:06:36 +0000 (-0800) Subject: misc: move deep_merge out of the MergeConfig class - it's generic X-Git-Tag: 1.1.0~2727 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=a763297685ded1056c3f782882ba0f42f7e6b75b;p=teuthology.git misc: move deep_merge out of the MergeConfig class - it's generic --- diff --git a/teuthology/misc.py b/teuthology/misc.py index 9cf4e0509..0e6b7676c 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 a2c3e0027..e31f7e53d 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')