From b9a242332be6fb1c4dc9545d1a60624daa9b8aff Mon Sep 17 00:00:00 2001 From: edison Date: Thu, 28 Oct 2010 11:27:36 -0700 Subject: [PATCH] fix cloud-tool to list all the available apis --- cloud-cli/cloudapis/cloud.py | 2 ++ cloud-cli/cloudtool/__init__.py | 2 +- cloud-cli/cloudtool/utils.py | 15 +++++++-------- 3 files changed, 10 insertions(+), 9 deletions(-) diff --git a/cloud-cli/cloudapis/cloud.py b/cloud-cli/cloudapis/cloud.py index 69abf9ef17f..07276b4446e 100644 --- a/cloud-cli/cloudapis/cloud.py +++ b/cloud-cli/cloudapis/cloud.py @@ -111,3 +111,5 @@ for name,meth in load_dynamic_methods(): setattr(CloudAPI,name,meth) implementor = CloudAPI del name,meth,describe,load_dynamic_methods + + diff --git a/cloud-cli/cloudtool/__init__.py b/cloud-cli/cloudtool/__init__.py index e6d00be5fe1..a1062ff529c 100644 --- a/cloud-cli/cloudtool/__init__.py +++ b/cloud-cli/cloudtool/__init__.py @@ -20,7 +20,7 @@ def main(argv=None): api = __import__("cloudapis") apis = getattr(api, "implementor") if len(prelim_args) == 0: - parser.error("you need to specify an API as the first argument\n\nSupported APIs:\n" + "\n".join(utils.get_api_list())) + parser.error("you need to specify an API as the first argument\n\nSupported APIs:\n" + "\n".join(utils.get_api_list(apis))) elif len(prelim_args) == 1: commandlist = utils.get_command_list(apis) parser.error("you need to specify a command name as the second argument\n\nCommands supported by the %s API:\n"%prelim_args[0] + "\n".join(commandlist)) diff --git a/cloud-cli/cloudtool/utils.py b/cloud-cli/cloudtool/utils.py index 2bcef9569c3..6c7456feb42 100644 --- a/cloud-cli/cloudtool/utils.py +++ b/cloud-cli/cloudtool/utils.py @@ -165,14 +165,13 @@ def lookup_command_in_api(api,command_name): command = getattr(api,command_name.replace("-","_"),None) return command -def get_api_list(): - apilist = [] - for api in apis.get_all_apis(): - api_module = api - api_name = api.__name__.split(".")[-1] - if not api_name.startswith("_") and hasattr(api_module,'__doc__'): - apilist.append( " %20s %s"%(api_name.replace("_",'-'),api_module.__doc__) ) - return apilist +def get_api_list(api): + apilist = [] + for cmd_name in dir(api): + cmd = getattr(api,cmd_name) + if callable(cmd) and not cmd_name.startswith("_"): + apilist.append(cmd_name) + return apilist def get_command_list(api): cmds = []