-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Allows cobbler report to show output w/o headers.

AS
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.8 (Darwin)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org

iEYEARECAAYFAkj4Di4ACgkQECmX3C4JWKgiyQCgkbSn7VGlrO2KO4pbGbUeO8Sf
7PEAn1MnUMb/qADWohX8KQ8RB89CkCBA
=+Gjv
-----END PGP SIGNATURE-----
>From 3500f77b36d6b8cf0ba05b4b28bba3f6da1df14f Mon Sep 17 00:00:00 2001
From: Anderson Silva <[EMAIL PROTECTED]>
Date: Thu, 16 Oct 2008 16:04:35 -0400
Subject: [PATCH] add --noheaders to cobbler report

---
 cobbler/action_report.py      |   61 ++++++++++++++++++++++++++---------------
 cobbler/api.py                |    5 ++-
 cobbler/modules/cli_report.py |   15 ++++++----
 3 files changed, 51 insertions(+), 30 deletions(-)

diff --git a/cobbler/action_report.py b/cobbler/action_report.py
index e57946d..4f2e0d7 100644
--- a/cobbler/action_report.py
+++ b/cobbler/action_report.py
@@ -34,8 +34,9 @@ class Report:
         self.report_what = None
         self.report_name = None
         self.report_fields = None
+        self.report_noheaders = None
 
-    def reporting_csv(self, info, order):
+    def reporting_csv(self, info, order, noheaders):
         """
         Formats data on 'info' for csv output
         """
@@ -60,9 +61,13 @@ class Report:
             outputbody += '\n'
 
         outputheaders += '\n'
+
+        if noheaders:
+            outputheaders = '';
+
         return outputheaders + outputbody
  
-    def reporting_trac(self, info, order):
+    def reporting_trac(self, info, order, noheaders):
         """
         Formats data on 'info' for trac wiki table output
         """        
@@ -88,9 +93,13 @@ class Report:
             outputbody += '||\n'
 
         outputheaders += '||\n'
+        
+        if noheaders:
+            outputheaders = '';
+        
         return outputheaders + outputbody
 
-    def reporting_doku(self, info, order):
+    def reporting_doku(self, info, order, noheaders):
         """
         Formats data on 'info' for doku wiki table output
         """      
@@ -117,9 +126,13 @@ class Report:
             outputbody += sep2 + '\n'
 
         outputheaders += sep1 + '\n'
+        
+        if noheaders:
+            outputheaders = '';
+        
         return outputheaders + outputbody
 
-    def reporting_mediawiki(self, info, order):
+    def reporting_mediawiki(self, info, order, noheaders):
         """
         Formats data on 'info' for mediawiki table output
         """
@@ -154,20 +167,24 @@ class Report:
             outputbody += '\n' + sep3 + '\n'
 
         outputheaders += '\n' + sep3 + '\n'
+
+        if noheaders:
+            outputheaders = '';
+
         return opentable + outputheaders + outputbody + closetable
     
-    def print_formatted_data(self, data, order, report_type):
+    def print_formatted_data(self, data, order, report_type, noheaders):
         """
         Used for picking the correct format to output data as
         """
         if report_type == "csv":
-            print self.reporting_csv(data, order)
+            print self.reporting_csv(data, order, noheaders)
         if report_type == "mediawiki":
-            print self.reporting_mediawiki(data, order)
+            print self.reporting_mediawiki(data, order, noheaders)
         if report_type == "trac":
-            print self.reporting_trac(data, order)
+            print self.reporting_trac(data, order, noheaders)
         if report_type == "doku":
-            print self.reporting_doku(data, order)
+            print self.reporting_doku(data, order, noheaders)
 
         return True
 
@@ -196,7 +213,7 @@ class Report:
             print obj.printable()
         return True
     
-    def reporting_print_all_fields(self, collection, report_type):
+    def reporting_print_all_fields(self, collection, report_type, 
report_noheaders):
         """
         Prints all fields in a collection as a table given the report type
         """
@@ -229,11 +246,11 @@ class Report:
   
             data.append(item) 
 
-        self.print_formatted_data(data = data, order = out_order, report_type 
= report_type)
+        self.print_formatted_data(data = data, order = out_order, report_type 
= report_type, noheaders = report_noheaders)
         
         return True
     
-    def reporting_print_x_fields(self, collection, report_type, report_fields):
+    def reporting_print_x_fields(self, collection, report_type, report_fields, 
report_noheaders):
         """
         Prints specific fields in a collection as a table given the report type
         """
@@ -260,13 +277,13 @@ class Report:
 
             data.append(item)
          
-        self.print_formatted_data(data = data, order = fields_list, 
report_type = report_type)
+        self.print_formatted_data(data = data, order = fields_list, 
report_type = report_type, noheaders = report_noheaders)
                         
         return True
         
     # -------------------------------------------------------
 
-    def run(self, report_what = None, report_name = None, report_type = None, 
report_fields = None):
+    def run(self, report_what = None, report_name = None, report_type = None, 
report_fields = None, report_noheaders = None):
         """
         Get remote profiles and distros and sync them locally
         """
@@ -310,27 +327,27 @@ class Report:
         elif report_type != 'text' and report_fields == 'all':
             
             if report_what in [ "all", "distros", "distro" ]:
-                self.reporting_print_all_fields(self.api.distros(), 
report_type)
+                self.reporting_print_all_fields(self.api.distros(), 
report_type, report_noheaders)
 
             if report_what in [ "all", "profiles", "profile" ]:
-                self.reporting_print_all_fields(self.api.profiles(), 
report_type)
+                self.reporting_print_all_fields(self.api.profiles(), 
report_type, report_noheaders)
 
             if report_what in [ "all", "systems", "system" ]:
-                self.reporting_print_all_fields(self.api.systems(), 
report_type)
+                self.reporting_print_all_fields(self.api.systems(), 
report_type, report_noheaders)
 
             if report_what in [ "all", "repos", "repo" ]:
-                self.reporting_print_all_fields(self.api.repos(), report_type) 
+                self.reporting_print_all_fields(self.api.repos(), report_type, 
report_noheaders) 
         
         else:
             
             if report_what in [ "all", "distros", "distro" ]:
-                self.reporting_print_x_fields(self.api.distros(), report_type, 
report_fields)
+                self.reporting_print_x_fields(self.api.distros(), report_type, 
report_fields, report_noheaders)
 
             if report_what in [ "all", "profiles", "profile" ]:
-                self.reporting_print_x_fields(self.api.profiles(), 
report_type, report_fields)
+                self.reporting_print_x_fields(self.api.profiles(), 
report_type, report_fields, report_noheaders)
 
             if report_what in [ "all", "systems", "system" ]:
-                self.reporting_print_x_fields(self.api.systems(), report_type, 
report_fields)
+                self.reporting_print_x_fields(self.api.systems(), report_type, 
report_fields, report_noheaders)
 
             if report_what in [ "all", "repos", "repo" ]:
-                self.reporting_print_x_fields(self.api.repos(), report_type, 
report_fields)
+                self.reporting_print_x_fields(self.api.repos(), report_type, 
report_fields, report_noheaders)
diff --git a/cobbler/api.py b/cobbler/api.py
index cb9ddc7..a50b969 100644
--- a/cobbler/api.py
+++ b/cobbler/api.py
@@ -538,13 +538,14 @@ class BootAPI:
               include_systems = systems
         )
 
-    def report(self, report_what = None, report_name = None, report_type = 
None, report_fields = None):
+    def report(self, report_what = None, report_name = None, report_type = 
None, report_fields = None, report_noheaders = None):
         """
         Report functionality for cobbler
         """
         reporter = action_report.Report(self._config)
         return reporter.run(report_what = report_what, report_name = 
report_name,\
-                            report_type = report_type, report_fields = 
report_fields)
+                            report_type = report_type, report_fields = 
report_fields,\
+                            report_noheaders = report_noheaders)
 
     def get_kickstart_templates(self):
         return utils.get_kickstar_templates(self)
diff --git a/cobbler/modules/cli_report.py b/cobbler/modules/cli_report.py
index 328337a..9c94e25 100644
--- a/cobbler/modules/cli_report.py
+++ b/cobbler/modules/cli_report.py
@@ -34,10 +34,11 @@ class ReportFunction(commands.CobblerFunction):
         return "report"
 
     def add_options(self, p, args):
-        p.add_option("--what",              dest="what",   default="all",  
help="distros/profiles/systems/repos")
-        p.add_option("--name",              dest="name",                   
help="report on just this object")
-        p.add_option("--format",            dest="type",   default="text", 
help="text/csv/trac/doku/mediawiki")
-        p.add_option("--fields",            dest="fields", default="all" , 
help="what fields to display")
+        p.add_option("--what",              dest="what",      default="all",   
help="distros/profiles/systems/repos")
+        p.add_option("--name",              dest="name",                       
help="report on just this object")
+        p.add_option("--format",            dest="type",      default="text",  
help="text/csv/trac/doku/mediawiki")
+        p.add_option("--fields",            dest="fields",    default="all" ,  
help="what fields to display")
+        p.add_option("--noheaders",         dest="noheaders", help="don't 
output headers", action='store_true', default=False)
 
 
     def run(self):
@@ -45,9 +46,11 @@ class ReportFunction(commands.CobblerFunction):
             raise CX(_("Invalid value for --what"))
         if self.options.type not in ["text", "csv", "trac", "doku", 
"mediawiki" ]:
             raise CX(_("Invalid vavlue for --type"))
- 
+
+
         return self.api.report(report_what = self.options.what, report_name = 
self.options.name, \
-                               report_type = self.options.type, report_fields 
= self.options.fields)
+                               report_type = self.options.type, report_fields 
= self.options.fields, \
+                               report_noheaders = self.options.noheaders)
     
 ########################################################
 # MODULE HOOKS
-- 
1.5.4.1

_______________________________________________
cobbler mailing list
[email protected]
https://fedorahosted.org/mailman/listinfo/cobbler

Reply via email to