From a5d2f1b40df323d0d8e6513f4cdb31d8dc95e991 Mon Sep 17 00:00:00 2001
From: Thomas Bellman <bellman@lysator.liu.se>
Date: Mon, 30 Apr 2018 10:55:41 +0200
Subject: [PATCH] Allow users to override the guessed bootloader.

Add a parameter 'provider' to the kernel_option definition, allowing
users to specify which bootloader is in use.
---
 manifests/kernel_option.pp | 24 +++++++++++++++++-------
 1 file changed, 17 insertions(+), 7 deletions(-)

diff --git a/manifests/kernel_option.pp b/manifests/kernel_option.pp
index 6bb1464..f2ba642 100644
--- a/manifests/kernel_option.pp
+++ b/manifests/kernel_option.pp
@@ -1,12 +1,13 @@
-# Copyright © 2017   Thomas Bellman, Linköping, Sweden
+# Copyright © 2017-2018   Thomas Bellman, Linköping, Sweden
 # Licensed under the GNU LGPL v3+; see the README file for more information.
 
 
 /*
  * Set or remove a kernel commandline option.
  *
- * Which bootloader is in use will be guessed.  The heuristics for that
- * are not very good.
+ * Depending on the details of the bootloader, the option might be set/unset
+ * for all kernels, or just for all Linux kernels.  There is currently no
+ * way to control this.
  *
  * Parameters:
  *  - name	Kernel commandline option to set or remove.
@@ -20,12 +21,21 @@
  *		like "console=ttyS0".
  *		Since only ensure => absent is implemented, the value
  *		parameter is currently ignored.
+ *
+ *  - provider	The bootloader in use.  Supported values are 'grub0' and
+ *		'grub2'.  If not specified, the bootloader will be guessed
+ *		based on the operating system.
+ *		The grub2 provider currently only supports removing options.
  */
-define bootloader::kernel_option($ensure='present', $value=undef)
+define bootloader::kernel_option(
+	$ensure='present', $value=undef, $provider=undef)
 {
-    include bootloader::guess
-
-    $bootloader = $bootloader::guess::bootloader
+    if ($provider) {
+	$bootloader = $provider
+    } else {
+	include bootloader::guess
+	$bootloader = $bootloader::guess::bootloader
+    }
     case $bootloader
     {
 	'grub0': {
-- 
GitLab