From 7b5f43ab728c83ca3b27378f95dee0cff14efd23 Mon Sep 17 00:00:00 2001
From: Massimiliano Adamo <maxadamo@gmail.com>
Date: Wed, 18 Jan 2023 16:34:52 +0100
Subject: [PATCH] emit warning if publi key is empty

---
 functions/fw_builder_public_ips.pp | 25 +++++++++++++++----------
 1 file changed, 15 insertions(+), 10 deletions(-)

diff --git a/functions/fw_builder_public_ips.pp b/functions/fw_builder_public_ips.pp
index 0bec000..4dc000d 100644
--- a/functions/fw_builder_public_ips.pp
+++ b/functions/fw_builder_public_ips.pp
@@ -32,20 +32,25 @@ function fw_builder::fw_builder_public_ips(
     $public_ipsets = []
   } else {
     # if public is present and contains some value
-    if 'public' in $facts_fw_conf and $facts_fw_conf['public'] !~ Undef {
+    if 'public' in $facts_fw_conf {
 
-      $facts_fw_conf_public = $facts_fw_conf['public']
+      if $facts_fw_conf['public'] =~ Undef {
+        warning('fw_builder public key exists but it\'s empty')
+        $public_ipsets = []
+      } else {
+        $facts_fw_conf_public = $facts_fw_conf['public']
 
-      # create a list of lists with all the ipsets in public
-      $unflattened_public_ipsets = $facts_fw_conf_public.map |$app_key, $app_value| {
-        if 'ipset' in keys($facts_fw_conf_public[$app_key]) {
-          $facts_fw_conf_public[$app_key]['ipset']
+        # create a list of lists with all the ipsets in public
+        $unflattened_public_ipsets = $facts_fw_conf_public.map |$app_key, $app_value| {
+          if 'ipset' in keys($facts_fw_conf_public[$app_key]) {
+            $facts_fw_conf_public[$app_key]['ipset']
+          }
         }
-      }
 
-      # flatten the list of list into a list with unique elements, and remove any Undef
-      $public_ipsets_with_undef = unique(flatten($unflattened_public_ipsets))
-      $public_ipsets = $public_ipsets_with_undef.filter |$item| { $item !~ Undef }
+        # flatten the list of list into a list with unique elements, and remove any Undef
+        $public_ipsets_with_undef = unique(flatten($unflattened_public_ipsets))
+        $public_ipsets = $public_ipsets_with_undef.filter |$item| { $item !~ Undef }
+      }
     } else {
       $public_ipsets = []
     }
-- 
GitLab