From acc02212a0a313bcfbcec2a413b854605cf31819 Mon Sep 17 00:00:00 2001
From: Laurent Pouilloux <laurent.pouilloux@inria.fr>
Date: Mon, 13 Jan 2025 11:23:07 +0100
Subject: [PATCH] =?UTF-8?q?[puppet][clusters]=C2=A0add=20fw=5Fupdate=5Freq?=
 =?UTF-8?q?uired=20field?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 lib/refrepo/gen/puppet/clusters.rb | 16 +++++++++++++++-
 1 file changed, 15 insertions(+), 1 deletion(-)

diff --git a/lib/refrepo/gen/puppet/clusters.rb b/lib/refrepo/gen/puppet/clusters.rb
index d75dfcf55f1..d00edd921e2 100644
--- a/lib/refrepo/gen/puppet/clusters.rb
+++ b/lib/refrepo/gen/puppet/clusters.rb
@@ -32,10 +32,24 @@ def generate_puppet_clusters(options)
             else
                 warrantied = f_node['chassis'].key?('warranty_end') ? DateTime.parse(f_node['chassis']['warranty_end']) > DateTime.now : false
             end
+            # A cluster has to be updated if is under warranty and that the BIOS is older than one year
+            fw_update_required = false
+            if warrantied
+                raw_date = f_node['bios']['release_date']
+                begin
+                    last_update = DateTime.parse(raw_date)
+                rescue
+                    # Some BIOS release have MM/DD/YYYY format
+                    last_update = DateTime.strptime(raw_date, "%m/%d/%Y")
+                end
+                fw_update_required = last_update < (DateTime.now << 12)
+            end
             c_data = {"queue" => queue, 
                 "disk_reservation" => disk_reservation,
                 "gpu" => gpu,
-                "warrantied" => warrantied}
+                "warrantied" => warrantied,
+                "fw_update_required" => fw_update_required
+            }
             if hiera[s_uid][c_uid] != c_data
                 diff = hiera[s_uid][c_uid].dup.delete_if { |k, v| c_data[k] == v }.merge!(c_data.dup.delete_if { |k, _v| hiera[s_uid][c_uid].has_key?(k) })
                 puts "#{s_uid}-#{c_uid}  Changes detected #{diff}"
-- 
GitLab