[sos-devel] [RESEND PATCH v2] sosreport: Accept commas, period and alphas in the case id

Aruna Balakrishnaiah aruna at linux.vnet.ibm.com
Mon Sep 15 12:48:57 UTC 2014


sosreport does not accept commas, period and alphas in the case
id, the patch fixes the same.

Change the ticket number field to case id as it now accepts
alpha numerals as well.

Signed-off-by: Aruna Balakrishnaiah <aruna at linux.vnet.ibm.com>
---
	Changes from v2:
		Rebase the patch

	Changes from v1:
                Update documentation


 man/en/sosreport.1       |    6 +++---
 sos/policies/__init__.py |   21 ++++++++++-----------
 sos/sosreport.py         |   20 ++++++++++----------
 3 files changed, 23 insertions(+), 24 deletions(-)

diff --git a/man/en/sosreport.1 b/man/en/sosreport.1
index 8471dfb..3714da0 100644
--- a/man/en/sosreport.1
+++ b/man/en/sosreport.1
@@ -9,7 +9,7 @@ sosreport \- Collect and package diagnostic and support data
           [-o|--only-plugins plugin-names]\fR
           [-a|--alloptions] [-v|--verbose]\fR
           [--report] [--config-file conf] [--batch]\fR
-          [--build] [--name name] [--ticket-number number]
+          [--build] [--name name] [--case-id id]
           [--debug] [--tmp-dir directory]\fR
           [-z|--compression-type method]\fR
           [--help]\fR
@@ -78,8 +78,8 @@ Generate archive without prompting for interactive input.
 .B \--name NAME
 Specify a name to be used for the archive.
 .TP
-.B \--ticket-number NUMBER
-Specify a ticket number to be used for archive
+.B \--case-id NUMBER
+Specify a case id to be used for archive
 .TP
 .B \--build
 Do not archive copied data. Causes sosreport to leave an uncompressed
diff --git a/sos/policies/__init__.py b/sos/policies/__init__.py
index 89bc676..0722ee9 100644
--- a/sos/policies/__init__.py
+++ b/sos/policies/__init__.py
@@ -152,7 +152,7 @@ No changes will be made to system configuration.
         modifying PATH in their own initializer."""
         self._parse_uname()
         self.report_name = self.hostname
-        self.ticket_number = None
+        self.case_id = None
         self.package_manager = PackageManager()
         self._valid_subclasses = []
         self.set_exec_path()
@@ -198,8 +198,8 @@ No changes will be made to system configuration.
         This function should return the filename of the archive without the
         extension.
         """
-        if self.ticket_number:
-            self.report_name += "." + self.ticket_number
+        if self.case_id:
+            self.report_name += "." + self.case_id
         return "sosreport-%s-%s" % (self.report_name,
                                     time.strftime("%Y%m%d%H%M%S"))
 
@@ -395,8 +395,8 @@ class LinuxPolicy(Policy):
     def sanitize_report_name(self, report_name):
         return re.sub(r"[^-a-zA-Z.0-9]", "", report_name)
 
-    def sanitize_ticket_number(self, ticket_number):
-        return re.sub(r"[^0-9]", "", ticket_number)
+    def sanitize_case_id(self, case_id):
+        return re.sub(r"[^-a-z,A-Z.0-9]", "", case_id)
 
     def pre_work(self):
         # this method will be called before the gathering begins
@@ -409,7 +409,7 @@ class LinuxPolicy(Policy):
                 self.report_name = input(_("Please enter your first initial "
                                          "and last name [%s]: ") % localname)
 
-                self.ticket_number = input(_("Please enter the case number "
+                self.case_id = input(_("Please enter the case id "
                                              "that you are generating this "
                                              "report for: "))
                 self._print()
@@ -423,13 +423,12 @@ class LinuxPolicy(Policy):
         if self.commons['cmdlineopts'].customer_name:
             self.report_name = self.commons['cmdlineopts'].customer_name
 
-        if self.commons['cmdlineopts'].ticket_number:
-            self.ticket_number = self.commons['cmdlineopts'].ticket_number
+        if self.commons['cmdlineopts'].case_id:
+            self.case_id = self.commons['cmdlineopts'].case_id
 
         self.report_name = self.sanitize_report_name(self.report_name)
-        if self.ticket_number:
-            self.ticket_number = self.sanitize_ticket_number(
-                self.ticket_number)
+        if self.case_id:
+            self.case_id = self.sanitize_case_id(self.case_id)
 
         if (self.report_name == ""):
             self.report_name = "default"
diff --git a/sos/sosreport.py b/sos/sosreport.py
index 95da037..84b5e54 100644
--- a/sos/sosreport.py
+++ b/sos/sosreport.py
@@ -217,7 +217,7 @@ class SoSOptions(object):
     _verify = False
     _quiet = False
     _debug = False
-    _ticket_number = ""
+    _case_id = ""
     _customer_name = ""
     _config_file = ""
     _tmp_dir = ""
@@ -415,15 +415,15 @@ class SoSOptions(object):
         self._debug = value
 
     @property
-    def ticket_number(self):
+    def case_id(self):
         if self._options is not None:
-            return self._options.ticket_number
-        return self._ticket_number
+            return self._options.case_id
+        return self._case_id
 
-    @ticket_number.setter
-    def ticket_number(self, value):
+    @case_id.setter
+    def case_id(self, value):
         self._check_options_initialized()
-        self._ticket_number = value
+        self._case_id = value
 
     @property
     def customer_name(self):
@@ -532,9 +532,9 @@ class SoSOptions(object):
                           dest="debug",
                           help="enable interactive debugging using the python "
                                "debugger")
-        parser.add_option("--ticket-number", action="store",
-                          dest="ticket_number",
-                          help="specify ticket number")
+        parser.add_option("--case-id", action="store",
+                          dest="case_id",
+                          help="specify case id")
         parser.add_option("--name", action="store",
                           dest="customer_name",
                           help="specify report name")




More information about the sos-devel mailing list