diff options
| author | Aravinda VK <avishwan@redhat.com> | 2018-01-23 15:56:45 +0530 | 
|---|---|---|
| committer | Kotresh HR <khiremat@redhat.com> | 2018-01-26 16:08:27 +0000 | 
| commit | 5d3c90d14839fc134580a4ff944d68f3ff3c605a (patch) | |
| tree | b921d60d61d4566832a81a19654db0819ebfafa5 /geo-replication/syncdaemon | |
| parent | c3647b747af88e40334e927dafdbf88154b308f0 (diff) | |
geo-rep: Detailed JSON output for config
JSON output of `config-get` command now returns in the following
format
    {
        "name": CONFIG_NAME,
        "value": CONFIG_VALUE,
        "default_value": DEFAULT_VALUE,  # Only if modified == true
        "configurable": true|false,
        "modified": true|false
    }
Change-Id: I6193de48cd33655df7ecef5a0d83d7cb147089cf
Fixes: #361
Signed-off-by: Aravinda VK <avishwan@redhat.com>
Diffstat (limited to 'geo-replication/syncdaemon')
| -rw-r--r-- | geo-replication/syncdaemon/gsyncdconfig.py | 33 | ||||
| -rw-r--r-- | geo-replication/syncdaemon/subcmds.py | 18 | 
2 files changed, 42 insertions, 9 deletions
diff --git a/geo-replication/syncdaemon/gsyncdconfig.py b/geo-replication/syncdaemon/gsyncdconfig.py index ad313022b4e..9fb2b9e5323 100644 --- a/geo-replication/syncdaemon/gsyncdconfig.py +++ b/geo-replication/syncdaemon/gsyncdconfig.py @@ -36,6 +36,8 @@ class Gconf(object):          self.args = args          self.extra_tmpl_args = extra_tmpl_args          self.override_from_args = override_from_args +        # Store default values only if overwriten, Only for JSON/CLI output +        self.default_values = {}          self._load()      def _tmpl_substitute(self): @@ -63,6 +65,8 @@ class Gconf(object):                  "to_" + self.gconf_typecast.get(k, "string"), None)              if cast_func is not None:                  self.gconf[k] = cast_func(v) +                if self.default_values.get(k, None) is not None: +                    self.default_values[k] = cast_func(v)      def reset(self, name):          # If custom conf file is not set then it is only read only configs @@ -150,6 +154,7 @@ class Gconf(object):          self.gconf_typecast = {}          self.non_configurable_configs = []          self.session_conf_items = [] +        self.default_values = {}          conf = ConfigParser()          # Default Template config file @@ -196,6 +201,7 @@ class Gconf(object):          if conf.has_section("vars"):              for k, v in conf.items("vars"):                  self.session_conf_items.append(k) +                self.default_values[k] = self.gconf.get(k, "")                  self.gconf[k] = v.strip()          # Overwrite the Slave configurations which are sent as @@ -221,17 +227,36 @@ class Gconf(object):          if not show_defaults:              for k in self.session_conf_items:                  if k not in self.non_configurable_configs: -                    cnf[k] = self.get(k) - +                    dv = self.default_values.get(k, "") +                    cnf[k] = { +                        "value": self.get(k), +                        "default": dv, +                        "configurable": True, +                        "modified": False if dv == "" else True +                    }              return cnf          # Show all configs including defaults          for k, v in self.gconf.items(): +            configurable = False if k in self.non_configurable_configs \ +                           else True +            dv = self.default_values.get(k, "") +            modified = False if dv == "" else True              if show_non_configurable: -                cnf[k] = v +                cnf[k] = { +                    "value": v, +                    "default": dv, +                    "configurable": configurable, +                    "modified": modified +                }              else:                  if k not in self.non_configurable_configs: -                    cnf[k] = v +                    cnf[k] = { +                        "value": v, +                        "default": dv, +                        "configurable": configurable, +                        "modified": modified +                    }          return cnf diff --git a/geo-replication/syncdaemon/subcmds.py b/geo-replication/syncdaemon/subcmds.py index 258dbb0b658..1b306ad5b62 100644 --- a/geo-replication/syncdaemon/subcmds.py +++ b/geo-replication/syncdaemon/subcmds.py @@ -243,21 +243,29 @@ def subcmd_config_get(args):              sys.stderr.write("Invalid config name \"%s\"\n" % args.name)              sys.exit(ERROR_CONFIG_INVALID) -        print_config(args.name, val, only_value=args.only_value, +        print_config(args.name, val["value"], only_value=args.only_value,                       use_underscore=args.use_underscore)          return      if args.json: -        out = {} +        out = []          # Convert all values as string -        for k, v in all_config.items(): -            out[k] = str(v) +        for k in sorted(all_config): +            v = all_config[k] +            out.append({ +                "name": k, +                "value": str(v["value"]), +                "default": str(v["default"]), +                "configurable": v["configurable"], +                "modified": v["modified"] +            })          print(json.dumps(out))          return      for k in sorted(all_config): -        print_config(k, all_config[k], use_underscore=args.use_underscore) +        print_config(k, all_config[k]["value"], +                     use_underscore=args.use_underscore)  def subcmd_config_check(args):  | 
