From d6e5ac6064b48384a4af8e9d0b7de95ae98febd6 Mon Sep 17 00:00:00 2001
From: Thomas Bellman <bellman@nsc.liu.se>
Date: Fri, 12 Jul 2019 10:24:53 +0200
Subject: [PATCH] Allow users to omit specific options from dsm.{opt,sys}.

This allows users of the tsmclient definition to specify a value of an
option (in the 'optoptions' and 'sysoptions' parameters) as `false'.
Doing so will cause that option to be omitted from dsm.opt/dsm.sys,
even if it has a value in tsmclient::config::default_{opt,sys}options.
---
 manifests/init.pp     | 6 ++++--
 templates/dsm.opt.erb | 6 ++++--
 templates/dsm.sys.erb | 6 ++++--
 3 files changed, 12 insertions(+), 6 deletions(-)

diff --git a/manifests/init.pp b/manifests/init.pp
index e6b71ea..5d9d046 100644
--- a/manifests/init.pp
+++ b/manifests/init.pp
@@ -32,12 +32,14 @@
  *  - optoptions
  *    Hash of options to set in dsm.opt.  Option names must be specified
  *    in lowercase.  This is merged with the default_optoptions parameter
- *    of the tsmclient::config class.
+ *    of the tsmclient::config class.  Setting an option to false will
+ *    cause it to be omitted from dsm.opt.
  *
  *  - sysoptions
  *    Hash of options to set in dsm.sys.  Option names must be specified
  *    in lowercase.  This is merged with the default_sysoptions parameter
- *    of the tsmclient::config class.
+ *    of the tsmclient::config class.  Setting an option to false will
+ *    cause it to be omitted from dsm.sys.
 
  *    Some options are forbidden to set this way, as this define expects
  *    them to have certain values.
diff --git a/templates/dsm.opt.erb b/templates/dsm.opt.erb
index 23d4a22..a003e43 100644
--- a/templates/dsm.opt.erb
+++ b/templates/dsm.opt.erb
@@ -29,6 +29,8 @@ options.merge!(mandatory)
 
 -%>
 SERVERNAME <%= @tsm_servername.upcase %>
-<% options.keys.sort.each do |optname| -%>
-    <%= sprintf("%-24s    %s", optname.to_s, options[optname]).strip %>
+<% options.sort.each do |optname,optvalue| -%>
+<%   if optvalue -%>
+    <%= sprintf("%-24s    %s", optname.to_s, optvalue).strip %>
+<%   end -%>
 <% end %>
diff --git a/templates/dsm.sys.erb b/templates/dsm.sys.erb
index 5d39d6f..183dd6e 100644
--- a/templates/dsm.sys.erb
+++ b/templates/dsm.sys.erb
@@ -35,6 +35,8 @@ options.merge!(mandatory)
 -%>
 SERVERNAME <%= @tsm_servername.upcase %>
     NODENAME <%= @tsm_nodename %>
-<% options.keys.sort.each do |optname| -%>
-    <%= sprintf("%-24s    %s", optname.to_s, options[optname]).strip %>
+<% options.sort.each do |optname,optvalue| -%>
+<%   if optvalue -%>
+    <%= sprintf("%-24s    %s", optname.to_s, optvalue).strip %>
+<%   end -%>
 <% end %>
-- 
GitLab