diff --git a/generators/input-validators/check-cluster-homogeneity.rb b/generators/input-validators/check-cluster-homogeneity.rb index 2908d71844cc9844e0310b0769bab1027164cf17..82da73be7dd3d9b2771d2c52e6a1d1b5d9c1d37b 100644 --- a/generators/input-validators/check-cluster-homogeneity.rb +++ b/generators/input-validators/check-cluster-homogeneity.rb @@ -112,7 +112,9 @@ def cluster_ignore_keys(filename) return file_hash end -def cluster_homogeneity(refapi_hash, verbose=false) +def cluster_homogeneity(refapi_hash, options = {:verbose => false}) + verbose = options[:verbose] + if verbose puts "The change set is represented using the following syntax:" puts ' [["+", "path.to.key1", value], # new key' @@ -128,9 +130,13 @@ def cluster_homogeneity(refapi_hash, verbose=false) count = {} refapi_hash["sites"].sort.each do |site_uid, site| + next if options.key?(:sites) && !options[:sites].include?(site_uid) + count[site_uid] = {} site["clusters"].sort.each do |cluster_uid, cluster| + next if options.key?(:clusters) && !options[:clusters].include?(cluster_uid) + count[site_uid][cluster_uid] = 0 refnode_uid = cluster['nodes'].keys.sort.first @@ -189,10 +195,11 @@ def cluster_homogeneity(refapi_hash, verbose=false) return count end -def check_cluster_homogeneity(refapi_hash, verbose=false) +def check_cluster_homogeneity(refapi_hash, options = {:verbose => false}) + verbose = options[:verbose] puts "Differences found between successive nodes, per cluster:\n\n" - count = cluster_homogeneity(refapi_hash, verbose) + count = cluster_homogeneity(refapi_hash, options) puts "\n" if verbose puts count.to_yaml unless verbose @@ -206,26 +213,44 @@ if __FILE__ == $0 require 'optparse' options = {} + options[:sites] = %w{grenoble lille luxembourg lyon nancy nantes reims rennes sophia} OptionParser.new do |opts| opts.banner = "Usage: check-cluster-homogeneity.rb [options]" - + opts.separator "" opts.separator "Example: ruby check-cluster-homogeneity.rb -v" + + ### + opts.separator "" + opts.separator "Filters:" + + opts.on('-s', '--sites a,b,c', Array, 'Select site(s)', + "Default: "+options[:sites].join(", ")) do |s| + raise "Wrong argument for -s option." unless (s - options[:sites]).empty? + options[:sites] = s + end + + opts.on('-c', '--clusters a,b,c', Array, 'Select clusters(s). Default: all') do |s| + options[:clusters] = s + end + + opts.separator "" + opts.separator "Common options:" opts.on("-v", "--[no-]verbose", "Run verbosely") do |v| options[:verbose] ||= 0 options[:verbose] = options[:verbose] + 1 end - + # Print an options summary. opts.on_tail("-h", "--help", "Show this message") do puts opts exit end end.parse! - + refapi_hash = load_yaml_file_hierarchy("#{dir}/../../input/grid5000/") - check_cluster_homogeneity(refapi_hash, options.key?(:verbose)) + check_cluster_homogeneity(refapi_hash, options) end