Carving away at func some more to just get down to cert items, still lots
[certmaster.git] / certmaster / overlord / cmd_modules / show.py
diff --git a/certmaster/overlord/cmd_modules/show.py b/certmaster/overlord/cmd_modules/show.py
new file mode 100644 (file)
index 0000000..e1df554
--- /dev/null
@@ -0,0 +1,99 @@
+"""
+show introspection commandline
+
+Copyright 2007, Red Hat, Inc
+see AUTHORS
+
+This software may be freely redistributed under the terms of the GNU
+general public license.
+
+You should have received a copy of the GNU General Public License
+along with this program; if not, write to the Free Software
+Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+"""
+
+
+import optparse
+import pprint
+import xmlrpclib
+
+from func.overlord import command
+from func.overlord import client
+
+DEFAULT_PORT = 51234
+
+
+class ShowHardware(client.command.Command):
+    name = "hardware"
+    usage = "show hardware details"
+
+    # FIXME: we might as well make verbose be in the subclass
+    #      and probably an inc variable while we are at it
+    def addOptions(self):
+        self.parser.add_option("-v", "--verbose", dest="verbose",
+                               action="store_true")
+        self.parser.add_option("-p", "--port", dest="port")
+
+
+    def handleOptions(self, options):
+        self.port = DEFAULT_PORT
+        if self.options.port:
+            self.port = self.options.port
+
+    def parse(self, argv):
+        self.argv = argv
+        return command.Command.parse(self,argv)
+
+    def do(self,args):
+
+        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"]
+        
+        for minion in results:
+            print "%s:" % minion
+            minion_data = results[minion]
+            # if user set no args
+            if not args:
+                pprint.pprint(minion_data)
+                continue
+            
+            for arg in args:
+                if arg in minion_data:
+                    print minion_data[arg]
+
+
+class Show(client.command.Command):
+    name = "show"
+    usage = "various simple report stuff"
+    subCommandClasses = [ShowHardware]
+    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)
+
+    def handleOptions(self, options):
+        self.options = options
+
+        self.verbose = options.verbose
+        self.port = options.port
+
+
+    def parse(self, argv):
+        self.argv = argv
+
+        return command.Command.parse(self, argv)
+        
+
+    def do(self, args):
+        pass