What will definitely not work is having separate parsing classes for each individual input (Puppet, Ansible, Katello sync, RHSM). We need a central place, perhaps a directory with separate class per operating system (this cannot be in our Operatingsystem model class because that does not differentiate several Redhat variants). Having those detection rules on a single place would ensure that no matter what tool it matches, the result (OS name, major, minor, description) is the same. One huge hash/array is also an option, although that could be unreadable pretty soon.
Let me do a summary of what we have today and then we can talk about what to improve. This page is a wiki, please contribute. When unsure, use ?
character. Looks like it’s a mess and I only compare Foreman/Puppet/Katello (Ansible and others only make this worse):
Current status
Real name | Foreman name | Foreman description | Katello description |
---|---|---|---|
CentOS 7.9 | RedHat | Red Hat 7.9.2009 | CentOS-7 |
CentOS 8.4 | RedHat | Red Hat 8.4.2105 | CentOS_Linux-8 |
RHEL 7.9 | RedHat | Red Hat 7.9 | RedHat-7.9 |
RHEL 8.0 | RedHat | Red Hat 8.0 | RedHat-8.0.0 |
RHEL 8.4 | RedHat | Red Hat 78.4 | RedHat-8.4 |
CentOS Stream 8 | RedHat | Red Hat 8.0 | CentOS_Stream-8 |
Remarks
- Foreman OS name must not contain spaces (as it is used in filenames etc)
- Foreman description, however, is an independent text field that can contain anything
- Katello description shows how Katello plugin sets the description field (it also sets Name, Minor and Minor version)
- I think
RedHat-8.0.0
looks like a bug