diff --git a/Rakefile b/Rakefile index cce9a28f09cd7b02b22ab80129b33d682daf2069..9d7ea037d3409bc43edf270a748d0287b427164a 100644 --- a/Rakefile +++ b/Rakefile @@ -39,22 +39,25 @@ namespace :valid do task "homogeneity" do require 'refrepo/valid/homogeneity' options = {} - if ENV['SITE'] - options[:sites] = ENV['SITE'].split(',') - else - options[:sites] = G5K_SITES - end - if ENV['CLUSTER'] - options[:clusters] = ENV['CLUSTER'].split(',') - else - options[:clusters] = [] - end + options[:sites] = ( ENV['SITE'] ? ENV['SITE'].split(',') : G5K_SITES ) + options[:clusters] = ( ENV['CLUSTER'] ? ENV['CLUSTER'].split(',') : [] ) options[:verbose] = ENV['VERBOSE'].to_i if ENV['VERBOSE'] ret = check_cluster_homogeneity(options) exit(ret) end + desc "Check for duplicates fields in input -- parameters: SITE={grenoble..} CLUSTER={yeti,...} VERBOSE=1" + task "duplicates" do + require 'refrepo/valid/input/duplicates' + options = {} + options[:sites] = ( ENV['SITE'] ? ENV['SITE'].split(',') : G5K_SITES ) + options[:clusters] = ( ENV['CLUSTER'] ? ENV['CLUSTER'].split(',') : [] ) + options[:verbose] = ENV['VERBOSE'].to_i if ENV['VERBOSE'] + ret = yaml_input_find_duplicates(options) + exit(ret) + end + desc "Check input data schema validity" task "schema" do invoke_script "#{VALIDATORS_DIR}/yaml-input-schema-validator.rb" @@ -64,17 +67,9 @@ namespace :valid do task "oar-properties" do require 'refrepo/valid/oar-properties' options = {} + options[:sites] = ( ENV['SITE'] ? ENV['SITE'].split(',') : G5K_SITES ) + options[:clusters] = ( ENV['CLUSTER'] ? ENV['CLUSTER'].split(',') : [] ) options[:verbose] = true if ENV['VERBOSE'] - if ENV['SITE'] - options[:sites] = ENV['SITE'].split(',') - else - options[:sites] = G5K_SITES - end - if ENV['CLUSTER'] - options[:clusters] = ENV['CLUSTER'].split(',') - else - options[:clusters] = [] - end ret = RefRepo::Valid::OarProperties::check(options) exit(ret) end @@ -86,11 +81,7 @@ namespace :gen do task "wiki" do require 'refrepo/gen/wiki' options = {} - if ENV['SITE'] - options[:sites] = ENV['SITE'].split(',') - else - options[:sites] = ['global'] + G5K_SITES - end + options[:sites] = ( ENV['SITE'] ? ENV['SITE'].split(',') : G5K_SITES ) if ENV['NAME'] options[:generators] = ENV['NAME'].split(',') else @@ -118,11 +109,7 @@ namespace :gen do task "oar-properties" do require 'refrepo/gen/oar-properties' options = {} - if ENV['SITE'] - options[:sites] = ENV['SITE'].split(',') - else - options[:sites] = G5K_SITES - end + options[:sites] = ( ENV['SITE'] ? ENV['SITE'].split(',') : G5K_SITES ) if ENV['CLUSTER'] options[:clusters] = ENV['CLUSTER'].split(',') end diff --git a/lib/refrepo/valid/input/yaml-input-find-duplicates.rb b/lib/refrepo/valid/input/duplicates.rb similarity index 59% rename from lib/refrepo/valid/input/yaml-input-find-duplicates.rb rename to lib/refrepo/valid/input/duplicates.rb index 825439923ca95ebc7adfc11ef87fcfd5604a040e..dc56a01443a690d1506a9f83b80fc06363d74450 100644 --- a/lib/refrepo/valid/input/yaml-input-find-duplicates.rb +++ b/lib/refrepo/valid/input/duplicates.rb @@ -1,12 +1,7 @@ #!/usr/bin/ruby -if RUBY_VERSION < "2.1" - puts "This script requires ruby >= 2.1" - exit -end - require 'pp' -require '../lib/input_loader' +require 'refrepo/input_loader' # replace default deep_merge before calling load_yaml_file_hierarchy class ::Hash @@ -38,7 +33,8 @@ class ::Hash end end -def yaml_input_find_duplicates(refapi_hash, options) +def yaml_input_find_duplicates(options) + refapi_hash = load_yaml_file_hierarchy refapi_hash["sites"].sort.each do |site_uid, site| if options.key?(:sites) && !options[:sites].include?(site_uid) @@ -69,57 +65,9 @@ def yaml_input_find_duplicates(refapi_hash, options) if refapi_hash.empty? puts "OK: no duplicate entries." - exit(0) + return true else puts refapi_hash.to_yaml - exit(1) + return false end - -end - -if __FILE__ == $0 - require 'optparse' - - options = {} - options[:sites] = %w{grenoble lille luxembourg lyon nancy nantes rennes sophia} - options[:api] = {} - - OptionParser.new do |opts| - opts.banner = "Usage: yaml-input-find-duplicates.rb [options]" - - opts.separator "" - opts.separator "Example: ruby yaml-input-find-duplicates.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("../../input/grid5000/") - yaml_input_find_duplicates(refapi_hash, options) end