From b2677b2cf5d14535bab45d32c60b9ddf2d682d91 Mon Sep 17 00:00:00 2001 From: Adrian Likins Date: Tue, 9 Oct 2007 17:35:47 -0400 Subject: add support to func cli for: func show hardware (big dump of hardware info) func show hardware --platform func show hardware --memory --- func/overlord/cmd_modules/show.py | 65 +++++++++++++++++++++++++++++++++------ 1 file changed, 55 insertions(+), 10 deletions(-) (limited to 'func/overlord/cmd_modules') diff --git a/func/overlord/cmd_modules/show.py b/func/overlord/cmd_modules/show.py index 10f44b3..cfe2aa8 100644 --- a/func/overlord/cmd_modules/show.py +++ b/func/overlord/cmd_modules/show.py @@ -19,24 +19,68 @@ class ShowHardware(client.command.Command): def addOptions(self): self.parser.add_option("-v", "--verbose", dest="verbose", action="store_true") - self.parser.add_option("-p", "--port", dest="port", - default=DEFAULT_PORT) + self.parser.add_option("-p", "--port", dest="port") + self.parser.add_option("", "--platform", dest="platform", + action="store_true") + self.parser.add_option("", "--memory", dest="memory", + action="store_true") + def handleOptions(self, options): + self.port = DEFAULT_PORT + if self.options.port: + self.port = self.options.port + def parse(self, argv): - self.argc = argv - return command.Command.parse(self.argv) + self.argv = argv + return command.Command.parse(self,argv) def do(self,args): - client_obj = client.Client(self.server_spec,port=self.port,interactive=True, - verbose=self.verbose, config=self.config) + + self.server_spec = self.parentCommand.parentCommand.server_spec + + client_obj = client.Client(self.server_spec, + port=self.port, + interactive=False, + verbose=self.options.verbose, + config=self.config) + + results = client_obj.run("hardware", "info", []) + + # if the user + top_options = ["port","verbose"] + + # figure out of the user set any options we care about + options_set = False + + #ugh, cant find a better way to do this. Look for args + # that specify a "mode", if we set them, then don't + # do the big dump + + # also, optparse is annoying -akl + opt_list = ["--platform", "--memory"] + for opt in opt_list: + if self.parser.has_option(opt): + options_set = True + for minion in results: + print "%s:" % minion + minion_data = results[minion] + if not options_set: + pprint.pprint(minion_data) + continue + + if self.options.platform: + print minion_data['platform'] + + if self.options.memory: + print minion_data["systemMemory"] class Show(client.command.Command): name = "show" useage = "various simple report stuff" - subCommands = [ShowHardware] + subCommandClasses = [ShowHardware] def addOptions(self): self.parser.add_option("-v", "--verbose", dest="verbose", action="store_true") @@ -57,11 +101,12 @@ class Show(client.command.Command): def do(self, args): - print "do args", args - return "bar" + pass + +# self.server_spec = self.parentCommand.server_spec # client_obj = client.Client(self.server_spec,port=self.port,interactive=True, # verbose=self.verbose, config=self.config) -# results = client_obj.run(self.module, self.method, self.method_args) +# results = client_obj.run("hardware", "info", []) # TO DO: add multiplexer support # probably as a higher level module. -- cgit