From f34b5a7d961f84636c77c025feac726417b4762c Mon Sep 17 00:00:00 2001
From: Alexandre MERLIN <alexandre.merlin@inria.fr>
Date: Thu, 20 Mar 2025 14:21:50 +0100
Subject: [PATCH] [rake mass:create] fail if same mac or ip are defined
 multiple times

---
 lib/refrepo/csv_importer.rb | 13 +++++++++++++
 1 file changed, 13 insertions(+)

diff --git a/lib/refrepo/csv_importer.rb b/lib/refrepo/csv_importer.rb
index 8396e4c7db9..6adb86e9115 100644
--- a/lib/refrepo/csv_importer.rb
+++ b/lib/refrepo/csv_importer.rb
@@ -9,6 +9,19 @@ def csv_create_input_files(options)
   FileUtils.mkdir_p("#{tmpdir}/generators/kadeploy/")
   kadeploy = File::new("#{tmpdir}/generators/kadeploy/kadeploy.yaml", "w")
 
+  doublon = []
+  ['mac_prod','mac_bmc','ip_admin','ip_prod'].each do |label|
+    grouped = csv.group_by { |hash| hash[label] }
+    filtered = grouped.select { |_, hashes| hashes.size > 1 }.to_h
+    filtered.each do |k,v|
+      next if k.nil?
+      doublon << "#{k} as #{label} is used #{v.count} times (#{v.map{|x| x['cluster']}.uniq.join(',')})"
+    end
+  end
+  unless doublon.empty?
+    STDERR.puts doublon.join("\n")
+    raise "Some values are used multiple times"
+  end
 
   csv.group_by { |e| [e['site'], e['cluster']] }.each_pair do |site_cluster, rows|
     site, cluster = site_cluster
-- 
GitLab