From d6db02ba19525911671d35d1357e6e9f258ff573 Mon Sep 17 00:00:00 2001 From: Richard Ipsum Date: Fri, 22 May 2015 10:26:02 +0100 Subject: Add --json flag to list command It's useful for morph (and potentially other programs) to be able to easily obtain the current list of systems without having to either duplicate the code in system-version-manager or parse its output. Change-Id: I2bf563920f6bd0372c82900257c4ba221caa7833 --- system-version-manager/system-version-manager | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/system-version-manager/system-version-manager b/system-version-manager/system-version-manager index 554e459..1cb53f8 100755 --- a/system-version-manager/system-version-manager +++ b/system-version-manager/system-version-manager @@ -52,6 +52,10 @@ class SystemVersionManager(object): parser_list = subparsers.add_parser('list', help='list show you a list of systems') parser_list.set_defaults(action='list') + parser_list.add_argument( + '--json', action='store_true', + help=('output list of systems in json in the form: ' + '{"factory": {"running": true, "default": true}}')) # create the parser for the "deploy" command parser_deploy= subparsers.add_parser('deploy', @@ -196,8 +200,15 @@ class SystemVersionManager(object): if os.path.islink(default_path): self._atomic_symlink_update(default, default_path) - def cmd_list(self): - default_system = self._get_default() + def cmd_list(self, output_json): + default_system = self._get_default() + if output_json: + json.dump({system: {'default': system == self.default_system, + 'running': system == self.current_system} + for system in self._get_systems()}, + sys.stdout) + return + for system in self._get_systems(): output = system if system == self.current_system: @@ -394,7 +405,7 @@ class SystemVersionManager(object): try: if action == "list": - self.cmd_list() + self.cmd_list(output_json=args.json) elif action == "deploy": self.cmd_deploy(args.location) elif action == "remove": -- cgit v1.2.1