Bug 1670369

Summary: redhat-support-lib-python: Traceback on make_report from utils.reporthelper
Product: Red Hat Enterprise Linux 8 Reporter: Miroslav Hradílek <mhradile>
Component: redhat-support-lib-pythonAssignee: Pranita Ghole <pghole>
Status: CLOSED CURRENTRELEASE QA Contact: Miroslav Hradílek <mhradile>
Severity: high Docs Contact:
Priority: high    
Version: 8.0CC: cww, salmy, vrathee, wchadwic
Target Milestone: rcFlags: rule-engine: mirror+
Target Release: 8.0   
Hardware: Unspecified   
OS: Unspecified   
Whiteboard:
Fixed In Version: Doc Type: If docs needed, set a value
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2019-06-14 01:07:00 UTC Type: Bug
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:

Description Miroslav Hradílek 2019-01-29 12:15:50 UTC
Description of problem:
Function make_report from redhat_support_lib.utils.reporthelper module does not work on rhel8 it outputs Traceback instead. The same worked on RHEL7.

Version-Release number of selected component (if applicable):
redhat-support-lib-python-0.10.1-0.el8.noarch

How reproducible:
100%

Steps to Reproduce:
# rpm -q redhat-support-lib-python
redhat-support-lib-python-0.10.1-0.el8.noarch
# cat reporthelper.py
#!/bin/env python3

import os
import sys
import redhat_support_lib.utils.reporthelper as reporthelper

if len(sys.argv) == 2:
    file_name = reporthelper.make_report(path=sys.argv[1], report_dir=os.getcwd())
    print('File is %s' % (file_name))
else:
    print("Usage: %s /path/to/file-or-dir" % (sys.argv[0]))

# echo "Hello world." >  hello.txt
# ./reporthelper.py hello.txt
Traceback (most recent call last):
  File "/usr/lib/python3.6/site-packages/redhat_support_lib/utils/reporthelper.py", line 327, in make_report
    name='description')
  File "/usr/lib/python3.6/site-packages/redhat_support_lib/utils/reporthelper.py", line 131, in _process_file
    contains_invalid_xml_chars(fileName):
  File "/usr/lib/python3.6/site-packages/redhat_support_lib/utils/reporthelper.py", line 109, in contains_invalid_xml_chars
    if re.search(illegal_xml_chars, content):
  File "/usr/lib64/python3.6/re.py", line 182, in search
    return _compile(pattern, flags).search(string)
TypeError: cannot use a string pattern on a bytes-like object

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "./reporthelper.py", line 8, in <module>
    file_name = reporthelper.make_report(path=sys.argv[1], report_dir=os.getcwd())
  File "/usr/lib/python3.6/site-packages/redhat_support_lib/utils/reporthelper.py", line 341, in make_report
    raise Exception('Unable to generate report file.')
Exception: Unable to generate report file.
# ls -d tmp*
tmp04ieyjl1

Expected results:

RHEL-7 (for comparison):
# rpm -q redhat-support-lib-python
redhat-support-lib-python-0.9.7-6.el7.noarch
# cat reporthelper.py 
#!/bin/env python

import os
import sys
import redhat_support_lib.utils.reporthelper as reporthelper

if len(sys.argv) == 2:
    file_name = reporthelper.make_report(path=sys.argv[1], report_dir=os.getcwd())
    print('File is %s' % (file_name))
else:
    print("Usage: %s /path/to/file-or-dir" % (sys.argv[0]))

# echo "Hello world." >  hello.txt
# ./reporthelper.py hello.txt
File is /root/tmpvn5Q_6/report-20190129103535.xml
# cat /root/tmpvn5Q_6/report-20190129103535.xml
<?xml version="1.0" ?>
<report xmlns="http://www.redhat.com/gss/strata">
    <binding type="text/plain; charset=us-ascii" name="description" fileName="hello.txt">Hello world.
</binding>
    <binding name="kernel">3.10.0-957.1.3.el7.x86_64</binding>
    <binding name="package"/>
    <binding name="hostname">my-test-machine.redhat.com</binding>
    <binding name="architecture">x86_64</binding>
    <binding name="os_release">redhat 7.6 Maipo</binding>
</report>

Additional info:
Not sure if it is used anywhere in RST but it sure is included in the library.