Note: This bug is displayed in read-only format because the product is no longer active in Red Hat Bugzilla.
RHEL Engineering is moving the tracking of its product development work on RHEL 6 through RHEL 9 to Red Hat Jira (issues.redhat.com). If you're a Red Hat customer, please continue to file support cases via the Red Hat customer portal. If you're not, please head to the "RHEL project" in Red Hat Jira and file new tickets here. Individual Bugzilla bugs in the statuses "NEW", "ASSIGNED", and "POST" are being migrated throughout September 2023. Bugs of Red Hat partners with an assigned Engineering Partner Manager (EPM) are migrated in late September as per pre-agreed dates. Bugs against components "kernel", "kernel-rt", and "kpatch" are only migrated if still in "NEW" or "ASSIGNED". If you cannot log in to RH Jira, please consult article #7032570. That failing, please send an e-mail to the RH Jira admins at rh-issues@redhat.com to troubleshoot your issue as a user management inquiry. The email creates a ServiceNow ticket with Red Hat. Individual Bugzilla bugs that are migrated will be moved to status "CLOSED", resolution "MIGRATED", and set with "MigratedToJIRA" in "Keywords". The link to the successor Jira issue will be found under "Links", have a little "two-footprint" icon next to it, and direct you to the "RHEL project" in Red Hat Jira (issue links are of type "https://issues.redhat.com/browse/RHEL-XXXX", where "X" is a digit). This same link will be available in a blue banner at the top of the page informing you that that bug has been migrated.

Bug 1898552

Summary: subscription-manager facts use incorrect primary IP address
Product: Red Hat Enterprise Linux 8 Reporter: John Sefler <jsefler>
Component: subscription-managerAssignee: Pino Toscano <ptoscano>
Status: CLOSED ERRATA QA Contact: Red Hat subscription-manager QE Team <rhsm-qe>
Severity: medium Docs Contact:
Priority: medium    
Version: 8.3CC: candlepin-bugs, csnyder, jsefler, peter.vreman, redakkan, rhsm-qe, sbhamrah, wpoteat
Target Milestone: rcKeywords: Triaged
Target Release: 8.5Flags: 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
*** Bug 1899554 has been marked as a duplicate of this bug. ***

Comment 3 Peter Vreman 2021-03-16 17:05:15 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:~$
-----------

Comment 4 Peter Vreman 2021-03-16 17:05:48 UTC
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
-----------------

Comment 6 Pino Toscano 2021-04-19 10:11:50 UTC
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

Comment 7 Peter Vreman 2021-04-19 12:38:36 UTC
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

Comment 8 Pino Toscano 2021-04-19 13:00:42 UTC
(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.

Comment 9 Peter Vreman 2021-04-19 14:50:05 UTC
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

Comment 10 Pino Toscano 2021-04-19 14:56:21 UTC
(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.

Comment 11 Shwetha Kallesh 2021-05-07 09:05:49 UTC
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

Comment 12 Shwetha Kallesh 2021-05-07 09:10:23 UTC
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

Comment 15 Shwetha Kallesh 2021-05-17 06:15:51 UTC
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

Comment 18 errata-xmlrpc 2021-11-09 19:37:35 UTC
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