Files
snapd/logger
Ian Johnson 2e2b3aaf7f osutil: add KernelCommandLineKeyValue; boot: refactor ModeAnd...FromKernelCommandLine (#9659)
* boot/cmdline.go: add TODO about using strutil.KernelCommandLineSplit

Signed-off-by: Ian Johnson <ian.johnson@canonical.com>

* strutil/cmdline.go: add GetKernelCommandLineKeyValue

This complements KernelCommandLineSplit, but goes further, checking for a
specific key-value pair in the kernel command line parameters, and returning the
value if found. This will be useful across the codebase for places where we want
to check one specific kernel command line parameter key-value pair.

Signed-off-by: Ian Johnson <ian.johnson@canonical.com>

* logger/logger.go: use GetKernelCommandLineKeyValue directly

This is a bit more straight forward to read IMHO and potentially reduces some
looping over the parameters as we break as soon as we find snapd.debug in the
positive case where it is set.

Signed-off-by: Ian Johnson <ian.johnson@canonical.com>

* strutil,osutil: move kernel commandline helpers to osutil

* boot: tweak TODO now that we use osutil.KernelCommandLineSplit

* many: refactor ModeAnd...FromKernelCommandLine and KernelCommandLineKeyValue

Refactor GetKernelCommandLineKeyValue to KernelCommandLineKeyValue which
returns a map of the specified keys that were found on the kernel command line
that have values. It also no longer takes the command line string as an
argument and instead parses the command line itself.

The above necessitates moving the mocking function for where to find
/proc/cmdline to osutil as well and adjusting many tests for this.

Finally, with all of this in place we can refactor
boot.ModeAndRecoverySystemFromKernelCommandLine to use the osutil helpers
and not duplicate parsing logic in the boot package. This does result in
a slight change in behavior where now duplicated kernel command line
parameters are not a fatal condition, but instead the last definition is
used.

Also adjust some tests to mock an empty proc/cmdline to avoid using the
host's version when running tests.

Signed-off-by: Ian Johnson <ian.johnson@canonical.com>

* osutil, many: rename to KernelCommandLineKeyValues

Signed-off-by: Maciej Borzecki <maciej.zenon.borzecki@canonical.com>

* boot: disallow non empty system label without a mode

Signed-off-by: Maciej Borzecki <maciej.zenon.borzecki@canonical.com>

* osutil: tweak handling of cmdline keys

Signed-off-by: Maciej Borzecki <maciej.zenon.borzecki@canonical.com>

* osutil: mv cmdline to kcmdline

Signed-off-by: Maciej Borzecki <maciej.zenon.borzecki@canonical.com>

* osutil: comment tweak

Signed-off-by: Maciej Borzecki <maciej.zenon.borzecki@canonical.com>

* logger: further tweaks

Signed-off-by: Maciej Borzecki <maciej.zenon.borzecki@canonical.com>

Co-authored-by: Michael Vogt <mvo@ubuntu.com>
Co-authored-by: Maciej Borzecki <maciej.zenon.borzecki@canonical.com>
2020-11-19 15:35:31 +01:00
..