diff --git a/lib/refrepo/gen/puppet/clusters.rb b/lib/refrepo/gen/puppet/clusters.rb index d75dfcf55f1732315c3580fbcdb591725eca6489..d00edd921e2ad62187fe077895151062f3ae0d3e 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}"