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