aboutsummaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
* [sosreport] Fix finished running plugins reportJake Hunsaker2018-06-201-1/+1
| | | | | | | | | | | Adds the condition that no more plugins are supposed to run when there are no plugins running to report that sosreport has finished running plugins. Resolves: #1354 Signed-off-by: Jake Hunsaker <jhunsake@redhat.com> Signed-off-by: Bryn M. Reeves <bmr@redhat.com>
* [sosreport] use private plugin list for ThreadPoolExecutorBryn M. Reeves2018-06-191-1/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | In some cases the concurrent plugins patch will produce output like the following (with a starting set of plugins of [activemq, apache, dbus, dhcp, manageiq, openshift, openstack_swift, puppet]: Starting 1/8 activemq [Running: activemq] Starting 2/8 apache [Running: apache] Starting 4/8 dhcp [Running: apache dhcp] Starting 5/8 manageiq [Running: apache dhcp manageiq] Starting 6/8 openshift [Running: apache openshift] Starting 7/8 openstack_swift [Running: apache openshift openstack_swift] Starting 8/8 puppet [Running: apache openshift puppet] Plugin #3 on the list (dbus) has vanished from the plugin run list. The ThreadPoolExecutor class uses itertools.izip() to walk the passed iterable of arguments. Since this references the same SoSReport.pluglist list that is being concurrently modified by the collect_plugin() methods it is possible for the pool iterator to "lose" an entry (another entry is removed by during the call to its collect_plugin() method, causing the list indices to shift, and making the index used in the next iteration of the pool's map() submission loop point one past the correct next entry. Avoid this problem by initialising a fresh copy of the pluglist to pass into the pool. Signed-off-by: Bryn M. Reeves <bmr@redhat.com>
* [puppet] add package checksBryan Quigley2018-06-181-0/+2
| | | | | | | | | | | | | Previously this had no checks and would run for every sosreport, many of which don't have puppet installed. There have been several name changes so I included a lot of package names to try to cover all of the possible versions/distros. Resolves: #1345 Signed-off-by: Bryan Quigley <bryan.quigley@canonical.com> Signed-off-by: Bryn M. Reeves <bmr@redhat.com>
* [skydive] add pluginMasco Kaliyamoorthy2018-06-181-0/+61
| | | | | | | | | | skydive is an open source real-time network topology and protocols analyzer for more info: http://skydive.network/ Resolves: #1351 Signed-off-by: Masco Kaliyamoorthy <mkaliyam@redhat.com> Signed-off-by: Bryn M. Reeves <bmr@redhat.com>
* [sosreport] call traceback.print_exc without argumentsPavel Moravec2018-06-181-2/+1
| | | | | | | | | | to prevent uncaught exception on py3 also dont import already imported traceback class Resolves: #1349 Signed-off-by: Pavel Moravec <pmoravec@redhat.com>
* [plugins] Check read access before trying to list a dirBryan Quigley2018-06-181-1/+1
| | | | | | | | | | | I found a permission error when trying to copy /sys/fs/pstore when running on LXD containers. Adding a permission check first allows it to skip folders it can't list. Resolves: #1348 Signed-off-by: Bryan Quigley <bryan.quigley@canonical.com> Signed-off-by: Bryn M. Reeves <bmr@redhat.com>
* [ipa] collect more logs and httpd alias configsPavel Moravec2018-06-181-1/+14
| | | | | | Resolves: #1346 Signed-off-by: Pavel Moravec <pmoravec@redhat.com>
* [ovirt_provider_ovn] fix typo in provider file/config variable namePavel Moravec2018-06-181-1/+1
| | | | | | Resolves: #1343 Signed-off-by: Pavel Moravec <pmoravec@redhat.com>
* [infiniband] test if dir exists before listing itPavel Moravec2018-06-181-1/+1
| | | | | | Resolves: #1342 Signed-off-by: Pavel Moravec <pmoravec@redhat.com>
* [fibrechannel] test if dir exists before listing itPavel Moravec2018-06-181-1/+2
| | | | | | Resolves: #1341 Signed-off-by: Pavel Moravec <pmoravec@redhat.com>
* [sosreport] --batch option does not display resultsPavel Moravec2018-06-181-2/+1
| | | | | | | | Fixing a regression caused by 8e69d36 . Resolves: #1337 Signed-off-by: Pavel Moravec <pmoravec@redhat.com>
* [archive] use threads for xz compressionPavel Moravec2018-06-184-9/+32
| | | | | | | | | | Moving also building of the command from Archive to Plugin class. Closes: #1196 Resolves: #1338 Signed-off-by: Pavel Moravec <pmoravec@redhat.com> Signed-off-by: Bryn M. Reeves <bmr@redhat.com>
* [policies] add auxiliary function _get_pkg_name_for_binaryPavel Moravec2018-06-182-0/+12
| | | | | | | | | | In some cases, we need to determine what package provides given binary. This auxiliary function implements it - so far it works for and will be used by archive methods. Related to: #1196 Signed-off-by: Pavel Moravec <pmoravec@redhat.com>
* [sosreport] Fix threads execution with no options and output formattingJake Hunsaker2018-06-181-9/+13
| | | | | | | | | | | | | | | | | | | Fixes an issue where sosreport would not run due to an unset number of threads if 'sosreport' was run bare, with no options. Any option (threads or otherwise) would mask this problem due to how the default threads value was set by the parser. Now sosreport can be run without any options and run normally, with the concurrency provided by the threads. Additionally, changes the status line printed during plugin execution to be of a fixed length, so that output lines are not mangled when the status line is updated, rather than a new line being printed (such as what happens when using --batch). Resolves: #1336 Signed-off-by: Jake Hunsaker <jhunsake@redhat.com> Signed-off-by: Bryn M. Reeves <bmr@redhat.com>
* [elastic] Add Elasticsearch service pluginAmit Ghadge2018-06-181-0/+60
| | | | | | | | Closes: #1334 Resolves: #1335 Signed-off-by: Amit Ghadge <amitg.b14@gmail.com> Signed-off-by: Bryn M. Reeves <bmr@redhat.com>
* [mssql] Add new pluginTakayoshi Tanaka2018-06-181-0/+92
| | | | | | | | | | | | | Adds a new plugin for Microsoft SQL Server on Linux. Collect log files. Collect journal logs. Collect keytab file info if AD auth is configured. Resolves: #1326 Signed-off-by: Takayoshi Tanaka <tatanaka@redhat.com> Signed-off-by: Bryn M. Reeves <bmr@redhat.com>
* [origin] Collect {resolv,node-dnsmasq}.conf under /etc/origin/nodeKenjiro Nakayama2018-06-181-0/+2
| | | | | | | | | | | | | | | Since OCP 3.6+, there are some DNS config under /etc/origin/node/ such as `node-dnsmasq.conf` and `resolv.conf`. Although current sosreport does not gather them, these are important for troubleshooting of DNS issues. This patch updates origin.py to collect {resolv,node-dnsmasq}.conf under /etc/origin/node/. Resolves: #1311 Signed-off-by: Kenjiro Nakayama <nakayamakenjiro@gmail.com> Signed-off-by: Bryn M. Reeves <bmr@redhat.com>
* [openstack_instack] add support for containerized undercloudEmilien Macchi2018-06-181-3/+13
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 1) Do the copy in one call with variables, so it's more efficient. 2) Collect the config tarball It'll be very useful to collect the config tarball which containers TripleO Heat Templates used to deploy the undercloud and the Ansible playbooks generated by config-download as well. Both of them are archived and compressed in /home/stack/undercloud-install-*.tar.bzip2 files everytime install/upgrade commands are run. 3) Collect ephemeral Heat logs /var/log/heat-launcher is a new directory that contains the heat-installer sqlite, logs and configuration. The content is small because it's only used once and it's ephemeral (purged everytime an operator install or upgrade an undercloud). However, collecting these files will be useful to help customers. 4) Collect new logfile When containerizing the undercloud, we're moving install-undercloud.log into $HOME which makes it more accessible for the users, while we're removing instack(-undercloud) bits over time. This patch add $HOME/install-undercloud.log file and document why we're doing this. Note that we still collect old file for previous releases. Resolves: #1279 Signed-off-by: Emilien Macchi <emilien@redhat.com> Signed-off-by: Bryn M. Reeves <bmr@redhat.com>
* [archive] make FileCacheArchive methods re-entrantBryn M. Reeves2018-06-182-74/+177
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Since plugins are now run concurrently the Archive class must be re-entrant: different plugins may attempt to create the same paths in the archive, and since they are executing in parallel and with no locking, there exists a TOCTOU race between the use of os.path.{exists,isdir, etc.}() and the subsequent creation of a new path. Address this by implementing a simple monitor-style locking scheme for the FileCacheArchive class. A `_path_lock` member is added to the class and this must be held across any operation that modifies the namespace of the archive (including file, directory, symlink, and special node creation). Additionally, the `_check_path()` Archive method (which checks for the existence of path components up to the basename of the file, creating directories as required) is extended to also carry out a test for the existence of the path, and if the path does exist, that the object is of the expected type. A mismatch in the object type generates a ValueError with an appropriate string description of the problem. Benchmarking shows a consistent small improvement with the patch: this is a result of reduced redundant copy operations that the previous archive structure allowed (since duplicate operations are now aborted as soon as the _path_lock is acquired). Resolves: #1340 Signed-off-by: Bryn M. Reeves <bmr@redhat.com>
* netplan conf files can exist in 3 locationsEric Desrochers2018-06-071-0/+2
| | | | | | | | | | | | | | | | | Configuration files can exist in three different locations with the precedence from most important to least as follows: /run/netplan/*.yaml /etc/netplan/*.yaml /lib/netplan/*.yaml Alphabetically later files, no matter what directory in, will amend keys if the key does not already exist and override previous keys if they do. Resolves: #1318 Signed-off-by: Eric Desrochers <eric.desrochers@canonical.com> Signed-off-by: Bryn M. Reeves <bmr@redhat.com>
* [Ubuntu] Add ubuntu-advantage status, u-s-s to better default and hweBryan Quigley2018-06-071-12/+5
| | | | | | | | | | | | | | | | | Add ubuntu-advantage status which is installed by default on Ubuntu and shows when various UA items are enabled - esm, fips, and livepatch. Switch ubuntu-support-status to always --show-all. It takes exactly the same amount of time to run (in both cases it's relatively slow at 3 seconds), and only adds 30k uncompressed/12k compressed. Add hwe-support-status to give more details about Ubuntu Hardware enablement if present. Resolves: #1330 Signed-off-by: Bryan Quigley <bryan.quigley@canonical.com> Signed-off-by: Bryn M. Reeves <bmr@redhat.com>
* [omnipath_*] Add two pluginsPavel Moravec2018-06-072-0/+109
| | | | | | | | | | | plugins added: - omnipath_manager for OPA fabric subnet manager - omnipath_client for management/head node of the cluster Resolves: #1291 Signed-off-by: Pavel Moravec <pmoravec@redhat.com> Signed-off-by: Bryn M. Reeves <bmr@redhat.com>
* [archive] switch compression preset from -1 to -2Bryan Quigley2018-06-071-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | I've noted an uptick of users recompressing sosreports to get a better compression rate for uploading over slow links. My tests indicate that -2 is a better default and should remove any benefit of compressing again. In tested cases -2 does not cause any significant CPU increase and always has shown an improvment - sometimes substancial. The worst was 3seconds more for a 15MB savings. I would generally expect to see similar percentage savings as sosreports get bigger. -3 and higher were evaluated but had diminshing returns that didn't seem worth it. Tests results: NVMe drive xz -a --batch -1 5.9M 30.766s -2 5.7M 30.673s -3 5.6M 30.101s -4 5.5M 35.882s bz2 bz2 -a --batch -1 11M 36.675s -2 8.3M 38.792s xz -a --all-logs --batch -1 87M 1m8.994s -2 72M 1m11.926s -3 69M 1m18.210s -4 70M 2m33.930s Old hard drive -a --batch -1 5.3M 14.935s -2 5.2M 15.611s -a --batch --all-logs -1 35M 38.881s -2 26M 38.337s Resolves: #1307 Signed-off-by: Bryan Quigley <bryan.quigley@canonical.com> Signed-off-by: Bryn M. Reeves <bmr@redhat.com>
* [filesys] Add permission and selinux check for /tmpJake Hunsaker2018-06-071-1/+8
| | | | | | | | | | | | | | | | Adds a check for the /tmp directory for permissions and selinux context. If either of these are incorrect, the system in question can exhibit strange behavior and otherwise be difficult for support teams to detect. On systems where SELinux is disabled, the permission check is still relevant and the command still produces useful output with the -Z option. Resolves: #1327 Signed-off-by: Jake Hunsaker <jhunsake@redhat.com> Signed-off-by: Bryn M. Reeves <bmr@redhat.com>
* [docker] Collect events and storage informationJake Hunsaker2018-06-071-1/+4
| | | | | | | | | | | Adds collection of the previous day's worth of events handled by the daemon, a summarized output of storage needs, and a listing of volumes known to the daemon. Resolves: #1328 Signed-off-by: Jake Hunsaker <jhunsake@redhat.com> Signed-off-by: Bryn M. Reeves <bmr@redhat.com>
* [docker] Simplify command buildingJake Hunsaker2018-06-071-29/+11
| | | | | | | | | | An early change to the docker plugin corrected the Debian/Ubuntu docker command to be "docker" instead of "docker.io". This means that the docker commands run by the plugin are not going to be different across distributions. As such, the way the commands are built by the plugin have been simplified to ease readability. Signed-off-by: Jake Hunsaker <jhunsake@redhat.com>
* [sosreport] Handle cases when creating archive failsPavel Moravec2018-06-071-30/+37
| | | | | | | | Don't compute archive's checksum and print a message to stdout rather. Resolves: #1329 Signed-off-by: Pavel Moravec <pmoravec@redhat.com>
* [sosreport] more logging when creating archive failedPavel Moravec2018-06-071-3/+4
| | | | | | (Also) in case of not fatal FS error, print some valuable message Signed-off-by: Pavel Moravec <pmoravec@redhat.com>
* [sosreport] remove tmpdir only if it existsPavel Moravec2018-06-071-1/+1
| | | | | | Prevents raising exception when the dir has been removed. Signed-off-by: Pavel Moravec <pmoravec@redhat.com>
* [lxd] Add check for the presence of lxd packageEric Desrochers2018-06-071-0/+1
| | | | | | | | Closes: #1306 Resolves: #1313 Signed-off-by: Eric Desrochers <eric.desrochers@canonical.com> Signed-off-by: Bryn M. Reeves <bmr@redhat.com>
* [multiple plugins] Fix package list tuplesJake Hunsaker2018-06-073-3/+3
| | | | | | | | | | | Fixes the nis, nfsganesha, and os_net_config plugins package lists to use a 1-tuple instead of a string that would break package verification for those plugins. Resolves: #1315 Signed-off-by: Jake Hunsaker <jhunsake@redhat.com> Signed-off-by: Bryn M. Reeves <bmr@redhat.com>
* [block] Use add_udev_info for block devicesJake Hunsaker2018-06-071-1/+2
| | | | | | | | | | Updates the block plugin to use the new add_udev_info() method, once with an attribute walk and once without. Resolves: #1319 Signed-off-by: Jake Hunsaker <jhunsake@redhat.com> Signed-off-by: Bryn M. Reeves <bmr@redhat.com>
* [watchdog] Add watchdog pluginReid Wahl2018-06-071-0/+94
| | | | | | | | | | | | | | | This new plugin collects information related to the watchdog service, including configuration, custom executables for test-binary and repair-binary, and stdout/stderr log files. This will be helpful to support teams seeking to understand why an unexpected reboot occurred or, conversely, why a reboot did not occur as expected. Resolves: #1305 Signed-off-by: Reid Wahl <nwahl@redhat.com> Signed-off-by: Bryn M. Reeves <bmr@redhat.com>
* [systemd] Add configuration files of systemd-modules-load.serviceAkhil John2018-06-071-1/+2
| | | | | | | | | | | | It is possible to load kernel modules during boot in a static list as mentioned under /etc/modules-load.d/*.conf. These files are used by systemd-modules-load.service. Collect this information using systemd plugin. Resolves: #1303 Signed-off-by: Akhil John <ajohn@redhat.com> Signed-off-by: Bryn M. Reeves <bmr@redhat.com>
* [powerpc] Capture the opal-prd log fileAnanth N Mavinakayanahalli2018-06-071-1/+2
| | | | | | | | | | | Opal-prd is the Processor Runtime Diagnostics daemon on Power systems running OPAL firmware. Capture this log file with sosreport. Resolves: #1295 Signed-off-by: Ananth N Mavinakayanahalli <ananth@linux.vnet.ibm.com> Signed-off-by: Vasant Hegde <hegdevasant@linux.vnet.ibm.com> Signed-off-by: Bryn M. Reeves <bmr@redhat.com>
* [Plugin] Do not run verify on empty package listJake Hunsaker2018-06-071-1/+5
| | | | | | | | | | | | | | | In some instances, the regex match in all_pkgs_by_name_regex() was returning an empty list when no match was made. This in turn caused sos to run an empty verify command, e.g. 'rpm -V '. By filtering the list of packages to verify, we can remove these empty lists and avoid the empty verify command. Closes: #1304 Resolves: #1314 Signed-off-by: Jake Hunsaker <jhunsake@redhat.com> Signed-off-by: Bryn M. Reeves <bmr@redhat.com>
* [kernel] Avoid capturing blanket 'find -ls'Jake Hunsaker2018-06-061-2/+4
| | | | | | | | | | | | | | | | | | | | | | Previously, if sos was run in an environment where '/lib/modules/*' did not exist, the kernel plugin would pass an empty extra_mod_paths list to 'find -ls', which would in turn cause sos to execute 'find -ls' on the entire filesystem. While this situation may seem rare, this is a possiblity whenever sos is run in a container that does not have the proper environment variable set that indicates to the active policy that sos is in fact in a container. On top of generating a sosreport with little to useful information in this case, the generated sosreport could potentially be very large due to the collection of a blanket 'find -ls'. This prevents this from occuring, by not running 'find -ls' if the extra_mod_paths list is empty. Resolves: #1288 Signed-off-by: Jake Hunsaker <jhunsake@redhat.com> Signed-off-by: Bryn M. Reeves <bmr@redhat.com>
* [systemd] collect additional useful informationRenaud Métrich2018-06-061-1/+10
| | | | | | | | | | | | | | | - Added "systemd-analyze dump" which is the complete systemd picture, containing dependencies, start/stop timestamps, aliases, etc. - Added "systemd-analyze plot" which provides a convenient visual way to understand dependencies and startup times. - Added collect of "/run/systemd/*" which contains many useful data, such as generated units, current sessions on system (useful to debug session leaks) and transient units. Resolves: #1285 Signed-off-by: Renaud Métrich <rmetrich@redhat.com> Signed-off-by: Bryn M. Reeves <bmr@redhat.com>
* [s390] gather info about HW cryptoDan Horák2018-06-061-1/+4
| | | | | | | | Fixes: #1283 Resolves: #1284 Signed-off-by: Dan Horák <dan@danny.cz> Signed-off-by: Bryn M. Reeves <bmr@redhat.com>
* [libraries] collect standard library pathsRenaud Métrich2018-06-061-1/+18
| | | | | | | | | | | Collects the paths to the libraries cached by "ldconfig". This is useful when a customer replaced a standard library by its own or when he added his own libraries to the standard paths or through symbolic links. Resolves: #1282 Signed-off-by: Renaud Métrich <rmetrich@redhat.com> Signed-off-by: Bryn M. Reeves <bmr@redhat.com>
* [ipa] collect klist on http.keytabPavel Moravec2018-06-061-1/+2
| | | | | | Resolves: #1280 Signed-off-by: Pavel Moravec <pmoravec@redhat.com>
* [nfs] Add nfs.confPierguido Lambri2018-06-061-0/+1
| | | | | | | | | | | Many NFS (and other related programs) options can now be set through the config file /etc/nfs.conf. Collect this from the 'nfs' plugin. Resolves: #1278 Signed-off-by: Pierguido Lambri <plambri@redhat.com> Signed-off-by: Bryn M. Reeves <bmr@redhat.com>
* [docs] Fixed errors while generating docs.Sachin Patil2018-06-061-23/+31
| | | | | | | | | | | | | | | | | | | | | | | I see below errors when generating docs using `make`. Decided to cleanup a bit. The docstring look better than previous and no more errors when generating docs. ``` /home/psachin/github/sos/sos/plugins/__init__.py:docstring of sos.plugins.Plugin.add_journal:5: ERROR: Unexpected indentation. /home/psachin/github/sos/sos/plugins/__init__.py:docstring of sos.plugins.Plugin.add_journal:6: WARNING: Block quote ends without a blank line; unexpected unindent. /home/psachin/github/sos/sos/plugins/__init__.py:docstring of sos.plugins.Plugin.add_journal:13: WARNING: Definition list ends without a blank line; unexpected unindent. /home/psachin/github/sos/sos/plugins/__init__.py:docstring of sos.plugins.Plugin.add_journal:15: ERROR: Unexpected indentation. /home/psachin/github/sos/sos/plugins/__init__.py:docstring of sos.plugins.Plugin.add_journal:16: WARNING: Block quote ends without a blank line; unexpected unindent. /home/psachin/github/sos/sos/plugins/__init__.py:docstring of sos.plugins.Plugin.add_journal:18: WARNING: Definition list ends without a blank line; unexpected unindent. ``` I tried to keep the changes in Sphinx format. Not all functions are changed in this patch but the one generating errors. Let me know if anything else needs cleanup in `sos/sos/plugins/__init__.py` Signed-off-by: Sachin Patil <psachin@redhat.com> Signed-off-by: Bryn M. Reeves <bmr@redhat.com>
* [sosreport] make Ctrl-C exit messages consistentBryn M. Reeves2018-06-061-2/+3
| | | | Signed-off-by: Bryn M. Reeves <bmr@redhat.com>
* [build] make futures dep conditional on python versionBryn M. Reeves2018-06-061-1/+1
| | | | Signed-off-by: Bryn M. Reeves <bmr@redhat.com>
* [sosreport] Concurrently run pluginsJake Hunsaker2018-06-066-27/+100
| | | | | | | | | | | | | | | | | | | | | Changes sos to run plugins concurrently. By default sos will now use four (4) threads to run plugins, allowing for faster overall execution of sosreport. The number of threads can be changed using the --threads commandline option. Plugins now also have a timeout applied to them as a whole to avoid situations where sosreport appears to be hung. If a plugin exceeds the timeout threshold, the plugin will be terminated immediately. - this allows sos to not only continue running normally, but should still allow for collection of commands run by the plugin up until it was terminated. The timeout is plugin controlled, and defaults to 300 seconds if not set. Note that for python2 environments, this adds a dependency on python-futures. The futures module is present in the standard library for python3 environments. Signed-off-by: Jake Hunsaker <jhunsake@redhat.com>
* [utilities] Allow size limits for command outputJake Hunsaker2018-05-292-17/+83
| | | | | | | | | | | | | | | | | | | | | | | Previously, any command output generated from plugins from add_cmd_output and add_journal would be collected in full in memory. For example, if a journal was 4GB in size, then 4GB would be read into memory and subsequently written to the final sos archive. This lead to not only potentially large archives, but in some cases failure to collect data or produce an archive due to memory constraints on the system. This patch adds the ability to use a sizelimit option in both add_cmd_output and add_journal. This will limit the collected output from commands or journals to the given limit, both what is read into memory and what is written to the final archive. If not given, sizelimit will default to --log-size. For journal collection, if no sizelimit is given then the larger of either --log-size or 100mb is used. Resolves: #1120 Signed-off-by: Jake Hunsaker <jhunsake@redhat.com> Signed-off-by: Bryn M. Reeves <bmr@redhat.com>
* [kernel] fix except syntaxBryn M. Reeves2018-05-291-2/+2
| | | | Signed-off-by: Bryn M. Reeves <bmr@redhat.com>
* [sosreport] add separator argument to _format_list()Bryn M. Reeves2018-05-291-5/+5
| | | | | | | | | | | | | | The _format_list() function handles formatting lists as comma- separated strings, including line wrapping and indentation to match an outer indentation level. Add a new 'sep' parameter to allow the list to be separated by an arbitrary character sequence. This allows space-separated command line option lists to be printed by --list-presets. Signed-off-by: Bryn M. Reeves <bmr@redhat.com>
* [policies/redhat] use os-release instead of redhat|fedora-releaseBryn M. Reeves2018-05-291-5/+26
| | | | | | | | Rather than testing for the presence of /etc/redhat-release and the absence of /etc/fedora-release, open /etc/os-release and check for the presence of the RHEL release string in the NAME field. Signed-off-by: Bryn M. Reeves <bmr@redhat.com>