Error when parsing lsb_release, landscape-package-reporter unable to report package list to server

Bug #2031036 reported by Steven LaCosse
8
This bug affects 1 person
Affects Status Importance Assigned to Milestone
Landscape Client
Fix Committed
Undecided
Unassigned
landscape-client (Ubuntu)
New
Undecided
Unassigned

Bug Description

[ Impact ]

 * The version of Landscape Client in the Ubuntu main repository for Focal and Jammy fails to report package information Landscape Server when the client machine has lsb modules installed (ex. lsb-core) as a `ValueError` is raised when attempting to parse the output.

[ Test Plan ]

 * `sudo apt update && sudo apt install -y landscape-client`

 * `lsb_release -a # Check no lsb modules`

 * `sudo apt-get install -y lsb-core # install lsb module`

 * `sudo landscape-config --silent --url="$LANDSCAPE_ROOT_URL/message-system" --ping-url="$LANDSCAPE_ROOT_URL/ping" --account-name $ACCOUNT_NAME --registration-key $REGISTRATION_KEY --computer-title $HOSTNAME`

 * Accept the machine's registration if needed and wait for package reporting to (try and) check the logs:

     * tail /var/log/landscape/package-reporter.log

 * You should see `ValueError: too many values to unpack`.

 * In a fresh instance, install an LSB module (ex. `lsb-core`) and the proposed version of Landscape Client.

 * Now register the client with Landscape Server, wait for package-reporter to run again and verify no errors are raised.

 * Additionally, make sure that package-reporter can report package information to the server properly.

[ Where problems could occur ]

 * Because the fix also changed the approach to read the os-release file instead of the lsb_release command output, this could introduce unforeseen behavior with code that was written with the original implementation in mind.

 * However, without these fixes, Landscape Client cannot report package data with lsb modules installed so it is hard to imagine how this would be worse.

[ Other Info ]

 * GH PR for the fix: https://github.com/canonical/landscape-client/pull/170

--------

Original bug report below:

--------

Package reporter from landscape client is failing to report to server because seemingly of a lsb parse issue.

/var/log/landscape/package-reporter.log

2023-08-10 13:42:00,414 ERROR [MainThread] None
Traceback (most recent call last):
  File "/usr/lib/python3/dist-packages/twisted/internet/defer.py", line 653, in _runCallbacks
    current.result = callback(current.result, *args, **kw)
  File "/usr/lib/python3/dist-packages/landscape/client/package/taskhandler.py", line 217, in got_server_uuid
    lsb_release_info = parse_lsb_release(self.lsb_release_filename)
  File "/usr/lib/python3/dist-packages/landscape/lib/lsb_release.py", line 31, in parse_lsb_release
    dist, desc, release, code_name, _ = lsb_info.decode().split("\n")
ValueError: too many values to unpack (expected 5)

Multiple LSB Packages are installed

/usr/bin/lsb_release
LSB Version: core-9.20170808ubuntu1-noarch:printing-9.20170808ubuntu1-noarch:security-9.20170808ubuntu1-noarch

lsb_release -a
LSB Version: core-9.20170808ubuntu1-noarch:printing-9.20170808ubuntu1-noarch:security-9.20170808ubuntu1-noarch
Distributor ID: Ubuntu
Description: Ubuntu 18.04.3 LTS
Release: 18.04
Codename: bionic

Related branches

description: updated
description: updated
description: updated
Revision history for this message
Steven LaCosse (motosteven) wrote :

I have a workaround to point back to /etc/lsb-release filename in /usr/lib/python3/dist-packages/landscape/lib/lsb_release.py

Looks like issue was introduced by

https://git.launchpad.net/~landscape/landscape-client/+git/master/commit/?id=78c8c9568913b02d7df997437aa3aa5d832f7fb1

Revision history for this message
Juanmi Taboada (juanmitaboada) wrote (last edit ):

I have:
- Added tests for no LSB modules and several modules
- Improved parse_lsb_release() function to recognize modules

The solution has been provided in:
https://github.com/canonical/landscape-client/pull/170

Changed in landscape-client:
status: New → In Progress
Revision history for this message
Mitch Burton (mitchburton) wrote :

May I suggest we move away from parsing lsb_release output (or file) and instead use /etc/os-release or /usr/lib/os-release? I think generally it's more standardized.

See example: https://github.com/Perfect5th/landscape-client/blob/c5f6a4b673eb5f86281a8183242ae26e8580ca6b/landscape/lib/lsb_release.py#L73-L87

Revision history for this message
Juanmi Taboada (juanmitaboada) wrote : Re: [Bug 2031036] Re: Error when parsing lsb_release, landscape-package-reporter unable to report package list to server

I agree with you. I will have a look on it.

On Fri, 11 Aug 2023, 23:55 Mitch Burton, <email address hidden> wrote:

> May I suggest we move away from parsing lsb_release output (or file) and
> instead use /etc/os-release or /usr/lib/os-release? I think generally
> it's more standardized.
>
> See example: https://github.com/Perfect5th/landscape-
>
> client/blob/c5f6a4b673eb5f86281a8183242ae26e8580ca6b/landscape/lib/lsb_release.py#L73-L87
>
> --
> You received this bug notification because you are subscribed to
> Landscape Project.
> Matching subscriptions: Landscape Project
> https://bugs.launchpad.net/bugs/2031036
>
> Title:
> Error when parsing lsb_release, landscape-package-reporter unable to
> report package list to server
>
> Status in Landscape Client:
> In Progress
>
> Bug description:
> Package reporter from landscape client is failing to report to server
> because seemingly of a lsb parse issue.
>
> /var/log/landscape/package-reporter.log
>
> 2023-08-10 13:42:00,414 ERROR [MainThread] None
> Traceback (most recent call last):
> File "/usr/lib/python3/dist-packages/twisted/internet/defer.py", line
> 653, in _runCallbacks
> current.result = callback(current.result, *args, **kw)
> File
> "/usr/lib/python3/dist-packages/landscape/client/package/taskhandler.py",
> line 217, in got_server_uuid
> lsb_release_info = parse_lsb_release(self.lsb_release_filename)
> File "/usr/lib/python3/dist-packages/landscape/lib/lsb_release.py",
> line 31, in parse_lsb_release
> dist, desc, release, code_name, _ = lsb_info.decode().split("\n")
> ValueError: too many values to unpack (expected 5)
>
> Multiple LSB Packages are installed
>
> /usr/bin/lsb_release
> LSB Version:
> core-9.20170808ubuntu1-noarch:printing-9.20170808ubuntu1-noarch:security-9.20170808ubuntu1-noarch
>
> lsb_release -a
> LSB Version:
> core-9.20170808ubuntu1-noarch:printing-9.20170808ubuntu1-noarch:security-9.20170808ubuntu1-noarch
> Distributor ID: Ubuntu
> Description: Ubuntu 18.04.3 LTS
> Release: 18.04
> Codename: bionic
>
> To manage notifications about this bug go to:
> https://bugs.launchpad.net/landscape-client/+bug/2031036/+subscriptions
>
>

Revision history for this message
Juanmi Taboada (juanmitaboada) wrote :

I just sent an update on the PR related to this issue.

Changed in landscape-client:
status: In Progress → Fix Committed
description: updated
description: updated
description: updated
description: updated
description: updated
description: updated
description: updated
description: updated
description: updated
description: updated
description: updated
description: updated
To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.