Bug 1898552
| Summary: | subscription-manager facts use incorrect primary IP address | ||
|---|---|---|---|
| Product: | Red Hat Enterprise Linux 8 | Reporter: | John Sefler <jsefler> |
| Component: | subscription-manager | Assignee: | Pino Toscano <ptoscano> |
| Status: | CLOSED ERRATA | QA Contact: | Red Hat subscription-manager QE Team <rhsm-qe> |
| Severity: | medium | Docs Contact: | |
| Priority: | medium | ||
| Version: | 8.3 | CC: | candlepin-bugs, csnyder, jsefler, peter.vreman, redakkan, rhsm-qe, sbhamrah, wpoteat |
| Target Milestone: | rc | Keywords: | Triaged |
| Target Release: | 8.5 | Flags: | pm-rhel:
mirror+
|
| Hardware: | All | ||
| OS: | All | ||
| Whiteboard: | |||
| Fixed In Version: | subscription-manager-1.28.16-1.el8 | Doc Type: | If docs needed, set a value |
| Doc Text: | Story Points: | --- | |
| Clone Of: | 1739135 | Environment: | |
| Last Closed: | 2021-11-09 19:37:35 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: | |||
| Bug Depends On: | 1739135, 1899554 | ||
| Bug Blocks: | 1122832 | ||
|
Comment 2
Rehana
2020-11-20 11:43:50 UTC
On RHEL8.3 bug is still present:
-----
[crash/LI] hoiroot@li-lc-2435:~$ rpm -q subscription-manager
subscription-manager-1.27.18-1.el8_3.x86_64
[crash/LI] hoiroot@li-lc-2435:~$ sudo ip addr add 1.1.1.1/32 dev ens192
[crash/LI] hoiroot@li-lc-2435:~$ sudo ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: ens192: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 9000 qdisc mq state UP group default qlen 1000
link/ether 00:50:56:97:ae:98 brd ff:ff:ff:ff:ff:ff
inet 10.92.14.229/24 brd 10.92.14.255 scope global noprefixroute ens192
valid_lft forever preferred_lft forever
inet 1.1.1.1/32 scope global ens192
valid_lft forever preferred_lft forever
3: ens224: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 9000 qdisc mq state UP group default qlen 1000
link/ether 00:50:56:97:bb:22 brd ff:ff:ff:ff:ff:ff
inet 10.92.65.213/24 brd 10.92.65.255 scope global noprefixroute ens224
valid_lft forever preferred_lft forever
4: ens256: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
link/ether 00:50:56:97:94:5b brd ff:ff:ff:ff:ff:ff
[crash/LI] hoiroot@li-lc-2435:~$ sudo subscription-manager facts | grep net.interface | grep ens192
net.interface.ens192.ipv4_address: 1.1.1.1
net.interface.ens192.ipv4_address_list: 10.92.14.229, 1.1.1.1
net.interface.ens192.ipv4_broadcast: Unknown
net.interface.ens192.ipv4_broadcast_list: 10.92.14.255, Unknown
net.interface.ens192.ipv4_netmask: 32
net.interface.ens192.ipv4_netmask_list: 24, 32
net.interface.ens192.mac_address: 00:50:56:97:ae:98
[crash/LI] hoiroot@li-lc-2435:~$
-----------
Patch:
----------
--- /usr/lib64/python3.6/site-packages/rhsmlib/facts/hwprobe.py.210316-1 2021-02-03 15:43:49.000000000 +0000
+++ /usr/lib64/python3.6/site-packages/rhsmlib/facts/hwprobe.py 2021-03-16 17:02:12.774401504 +0000
@@ -756,7 +756,8 @@
key = '.'.join(['net.interface', info.device, 'ipv4_%s' % (mkey)])
list_key = "%s_list" % key
attr = getattr(addr, mkey) or 'Unknown'
- netinfdict[key] = attr
+ if key not in netinfdict:
+ netinfdict[key] = attr
if not netinfdict.get(list_key, None):
netinfdict[list_key] = str(attr)
else:
--------------
Output with the fix:
--------------
[crash/LI] hoiroot@li-lc-2435:~$ sudo subscription-manager facts | grep net.interface | grep ens192
net.interface.ens192.ipv4_address: 10.92.14.229
net.interface.ens192.ipv4_address_list: 10.92.14.229, 1.1.1.1
net.interface.ens192.ipv4_broadcast: 10.92.14.255
net.interface.ens192.ipv4_broadcast_list: 10.92.14.255, Unknown
net.interface.ens192.ipv4_netmask: 24
net.interface.ens192.ipv4_netmask_list: 24, 32
net.interface.ens192.mac_address: 00:50:56:97:ae:98
-----------------
Hi Peter, (In reply to Peter Vreman from comment #4) > --- /usr/lib64/python3.6/site-packages/rhsmlib/facts/hwprobe.py.210316-1 > 2021-02-03 15:43:49.000000000 +0000 > +++ /usr/lib64/python3.6/site-packages/rhsmlib/facts/hwprobe.py 2021-03-16 > 17:02:12.774401504 +0000 > @@ -756,7 +756,8 @@ > key = '.'.join(['net.interface', info.device, > 'ipv4_%s' % (mkey)]) > list_key = "%s_list" % key > attr = getattr(addr, mkey) or 'Unknown' > - netinfdict[key] = attr > + if key not in netinfdict: > + netinfdict[key] = attr > if not netinfdict.get(list_key, None): > netinfdict[list_key] = str(attr) > else: While this patch works, it is a bit of "papering over" the current behaviour that keeps iterating and adding facts directly, without any knowledge of what was collected already. Also, this patch fixes the problem only for IP v4 addresses (although a similar patch can be applied to v6 ones too). I tried a slightly different (and IMHO cleaner) approach: https://github.com/candlepin/subscription-manager/pull/2592 Pino, I try to create my patches with the most minimal (and easy to understand) changes for the use case(s) that i can test. It does not mean it is the most efficient solution nor that it fixes all issues. You are ofcourse free to implement it in a cleaner and more efficient way. Peter (In reply to Peter Vreman from comment #7) > I try to create my patches with the most minimal (and easy to understand) > changes for the use case(s) that i can test. It does not mean it is the most > efficient solution nor that it fixes all issues. > You are ofcourse free to implement it in a cleaner and more efficient way. Sorry if I gave the impression of "attacking" you or your patch, definitely not the case! I was mostly thinking loud that, IMHO, that piece of code was doing suboptimal work and thus needed a slightly better approach. Pino, It was no offense. I wanted to explain the thinking of how i create and provide patches in BZ. The patch are only as reference for the engineering teams how the issue can be solved. Thanks for fixing the issue in a clean an maintainable way for both ipv4/ipv6. I still have to wait a bit before i can use it, i guess it will be not be in 8.4.z, that means for me as EUS user earliest in 8.6 Peter (In reply to Peter Vreman from comment #9) > I still have to wait a bit before i can use it, i guess it will be not be in > 8.4.z, that means for me as EUS user earliest in 8.6 Once it is reviewed and fixed upstream in the development version, we'll check about making it available also in existing RHEL branches/versions. Reproducer:
[root@ibm-x3650m4-01-vm-14 ~]# subscription-manager version
server type: Red Hat Subscription Management
subscription management server: 3.2.16-1
subscription management rules: 5.41
subscription-manager: 1.28.13-2.el8
[root@ibm-x3650m4-01-vm-14 ~]# ip a add 10.50.100.5/27 dev ens3
[root@ibm-x3650m4-01-vm-14 ~]# ip a show dev ens3
2: ens3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
link/ether 52:54:01:3c:e1:36 brd ff:ff:ff:ff:ff:ff
inet 10.16.214.16/23 brd 10.16.215.255 scope global dynamic noprefixroute ens3
valid_lft 84391sec preferred_lft 84391sec
inet 10.50.100.5/27 scope global ens3
valid_lft forever preferred_lft forever
inet6 2620:52:0:10d6:5054:1ff:fe3c:e136/64 scope global dynamic noprefixroute
valid_lft 2591998sec preferred_lft 604798sec
inet6 fe80::5054:1ff:fe3c:e136/64 scope link noprefixroute
valid_lft forever preferred_lft forever
[root@ibm-x3650m4-01-vm-14 ~]# subscription-manager facts --list | grep ipv4
net.interface.ens3.ipv4_address: 10.50.100.5 ---------------> primary ip address is no longer used, its replaced by secondary ip address added above
net.interface.ens3.ipv4_address_list: 10.16.214.16, 10.50.100.5
net.interface.ens3.ipv4_broadcast: Unknown
net.interface.ens3.ipv4_broadcast_list: 10.16.215.255, Unknown
net.interface.ens3.ipv4_netmask: 27
net.interface.ens3.ipv4_netmask_list: 23, 27
net.interface.lo.ipv4_address: 127.0.0.1
net.interface.lo.ipv4_address_list: 127.0.0.1
net.interface.lo.ipv4_broadcast: Unknown
net.interface.lo.ipv4_broadcast_list: Unknown
net.interface.lo.ipv4_netmask: 8
net.interface.lo.ipv4_netmask_list: 8
network.ipv4_address: 10.16.214.16
[root@ibm-x3650m4-01-vm-14 ~]# subscription-manager register --serverurl subscription.rhsm.stage.redhat.com
Registering to: subscription.rhsm.stage.redhat.com:443/subscription
Username: stage_auto_testuser
Password:
The system has been registered with ID: d29a5953-022f-42a5-9e5b-be93a064836b
The registered system name is: ibm-x3650m4-01-vm-14.ibm2.lab.eng.bos.redhat.com
[root@ibm-x3650m4-01-vm-14 ~]# subscription-manager facts --list | grep ipv4
net.interface.ens3.ipv4_address: 10.50.100.5 ---------------> primary ip address is no longer used, its replaced by secondary ip address added above
net.interface.ens3.ipv4_address_list: 10.16.214.16, 10.50.100.5
net.interface.ens3.ipv4_broadcast: Unknown
net.interface.ens3.ipv4_broadcast_list: 10.16.215.255, Unknown
net.interface.ens3.ipv4_netmask: 27
net.interface.ens3.ipv4_netmask_list: 23, 27
net.interface.lo.ipv4_address: 127.0.0.1
net.interface.lo.ipv4_address_list: 127.0.0.1
net.interface.lo.ipv4_broadcast: Unknown
net.interface.lo.ipv4_broadcast_list: Unknown
net.interface.lo.ipv4_netmask: 8
net.interface.lo.ipv4_netmask_list: 8
network.ipv4_address: 10.16.214.16
Pre-verification comments:
[root@kvm-07-guest32 ~]# subscription-manager version
server type: Red Hat Subscription Management
subscription management server: 3.2.16-1
subscription management rules: 5.41
subscription-manager: 1.28.16-1.el8
[root@kvm-07-guest32 ~]# ip a add 10.50.100.5/27 dev ens3
[root@kvm-07-guest32 ~]# ip a show dev ens3
2: ens3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
link/ether 52:54:00:88:b7:b9 brd ff:ff:ff:ff:ff:ff
inet 10.16.56.217/22 brd 10.16.59.255 scope global dynamic noprefixroute ens3
valid_lft 85300sec preferred_lft 85300sec
inet 10.50.100.5/27 scope global ens3
valid_lft forever preferred_lft forever
inet6 2620:52:0:1038:5054:ff:fe88:b7b9/64 scope global dynamic noprefixroute
valid_lft 2591751sec preferred_lft 604551sec
inet6 fe80::5054:ff:fe88:b7b9/64 scope link noprefixroute
valid_lft forever preferred_lft forever
[root@kvm-07-guest32 ~]# subscription-manager facts | grep net.interface | grep ipv4
net.interface.ens3.ipv4_address: 10.16.56.217 --------------------> Primary ip adress(10.16.56.217) is used
net.interface.ens3.ipv4_address_list: 10.16.56.217, 10.50.100.5
net.interface.ens3.ipv4_broadcast: 10.16.59.255
net.interface.ens3.ipv4_broadcast_list: 10.16.59.255, Unknown
net.interface.ens3.ipv4_netmask: 22
net.interface.ens3.ipv4_netmask_list: 22, 27
net.interface.lo.ipv4_address: 127.0.0.1
net.interface.lo.ipv4_address_list: 127.0.0.1
net.interface.lo.ipv4_broadcast: Unknown
net.interface.lo.ipv4_broadcast_list: Unknown
net.interface.lo.ipv4_netmask: 8
net.interface.lo.ipv4_netmask_list: 8
[root@kvm-07-guest32 ~]# subscription-manager register --serverurl subscription.rhsm.stage.redhat.com
Registering to: subscription.rhsm.stage.redhat.com:443/subscription
Username: stage_auto_testuser
Password:
The system has been registered with ID: 37188cc8-f99a-4b44-8021-e40a9d7a89d7
The registered system name is: kvm-07-guest32.hv2.lab.eng.bos.redhat.com
[root@kvm-07-guest32 ~]# subscription-manager facts | grep net.interface | grep ipv4
net.interface.ens3.ipv4_address: 10.16.56.217 --------------------> Primary ip adress(10.16.56.217) is used
net.interface.ens3.ipv4_address_list: 10.16.56.217, 10.50.100.5
net.interface.ens3.ipv4_broadcast: 10.16.59.255
net.interface.ens3.ipv4_broadcast_list: 10.16.59.255, Unknown
net.interface.ens3.ipv4_netmask: 22
net.interface.ens3.ipv4_netmask_list: 22, 27
net.interface.lo.ipv4_address: 127.0.0.1
net.interface.lo.ipv4_address_list: 127.0.0.1
net.interface.lo.ipv4_broadcast: Unknown
net.interface.lo.ipv4_broadcast_list: Unknown
net.interface.lo.ipv4_netmask: 8
net.interface.lo.ipv4_netmask_list: 8
Verification:
[root@kvm-03-guest08 ~]# subscription-manager version
server type: Red Hat Subscription Management
subscription management server: 3.2.18-1
subscription management rules: 5.41
subscription-manager: 1.28.16-1.el8
[root@kvm-03-guest08 ~]# ip a add 10.50.100.5/27 dev ens3
[root@kvm-03-guest08 ~]# ip a show dev ens3
2: ens3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
link/ether 00:16:3e:52:ab:7c brd ff:ff:ff:ff:ff:ff
inet 10.8.1.79/19 brd 10.8.31.255 scope global dynamic noprefixroute ens3
valid_lft 45164sec preferred_lft 45164sec
inet 10.50.100.5/27 scope global ens3
valid_lft forever preferred_lft forever
inet6 2620:52:0:800:216:3eff:fe52:ab7c/64 scope global dynamic noprefixroute
valid_lft 2591896sec preferred_lft 604696sec
inet6 fe80::216:3eff:fe52:ab7c/64 scope link noprefixroute
valid_lft forever preferred_lft forever
[root@kvm-03-guest08 ~]# subscription-manager facts | grep net.interface | grep ipv4
net.interface.ens3.ipv4_address: 10.8.1.79 --------------------> Primary ip adress(10.8.1.79) is used
net.interface.ens3.ipv4_address_list: 10.8.1.79, 10.50.100.5 --------------------> Primary ip ad(10.8.1.79) along with secondary ip(10.50.100.5) is displayed in
the address_list fact
net.interface.ens3.ipv4_broadcast: 10.8.31.255
net.interface.ens3.ipv4_broadcast_list: 10.8.31.255, Unknown
net.interface.ens3.ipv4_netmask: 19
net.interface.ens3.ipv4_netmask_list: 19, 27
net.interface.lo.ipv4_address: 127.0.0.1
net.interface.lo.ipv4_address_list: 127.0.0.1
net.interface.lo.ipv4_broadcast: Unknown
net.interface.lo.ipv4_broadcast_list: Unknown
net.interface.lo.ipv4_netmask: 8
net.interface.lo.ipv4_netmask_list: 8
[root@kvm-03-guest08 ~]# subscription-manager register --serverurl subscription.rhsm.stage.redhat.com
Registering to: subscription.rhsm.stage.redhat.com:443/subscription
Username: stage_auto_testuser
Password:
The system has been registered with ID: ab9afcfa-de81-4c14-bac7-115505d8525c
The registered system name is: kvm-03-guest08.lab.eng.rdu2.redhat.com
[root@kvm-03-guest08 ~]# subscription-manager facts | grep net.interface | grep ipv4
net.interface.ens3.ipv4_address: 10.8.1.79 --------------------> Primary ip adress(10.8.1.79) is used
net.interface.ens3.ipv4_address_list: 10.8.1.79, 10.50.100.5 --------------------> Primary ip ad(10.8.1.79) along with secondary ip(10.50.100.5) is displayed in
the address_list fact
net.interface.ens3.ipv4_broadcast: 10.8.31.255
net.interface.ens3.ipv4_broadcast_list: 10.8.31.255, Unknown
net.interface.ens3.ipv4_netmask: 19
net.interface.ens3.ipv4_netmask_list: 19, 27
net.interface.lo.ipv4_address: 127.0.0.1
net.interface.lo.ipv4_address_list: 127.0.0.1
net.interface.lo.ipv4_broadcast: Unknown
net.interface.lo.ipv4_broadcast_list: Unknown
net.interface.lo.ipv4_netmask: 8
Since the problem described in this bug report should be resolved in a recent advisory, it has been closed with a resolution of ERRATA. For information on the advisory (subscription-manager bug fix and enhancement update), and where to find the updated files, follow the link below. If the solution does not work for you, open a new bug report. https://access.redhat.com/errata/RHBA-2021:4390 |