diff --git a/lib/refrepo/gen/puppet/webfish.rb b/lib/refrepo/gen/puppet/webfish.rb index 0bc25996cd41a4907194682011b3b6f4d14cce91..b1ebd90020ec0f99f34958c29ce32d648c0815f5 100644 --- a/lib/refrepo/gen/puppet/webfish.rb +++ b/lib/refrepo/gen/puppet/webfish.rb @@ -8,13 +8,13 @@ def generate_puppet_webfish(options) if not options[:conf_dir] options[:conf_dir] = "#{options[:output_dir]}/platforms/production/generators/redfish/" end - allBmc = check_redfish_availability(20) + allBmc = gen_redfish_configuration() credentials = YAML::load_file(options[:conf_dir] + 'console-password.yaml') add_credentials(credentials, allBmc) gen_json_files(allBmc, options) end -def check_redfish_availability(timeout) +def gen_redfish_configuration() data = load_data_hierarchy allBmc = {} # allBmc --> hash de hash de tableau de hash @@ -34,7 +34,11 @@ def check_redfish_availability(timeout) next end url = 'https://'+d_node['network_adapters'].select{ |na| na['device'] == 'bmc' }.first['network_address'] - check_url(url, n_uid, allBmc, 'node', s_uid, timeout) + allBmc[s_uid][n_uid] = { + 'url' => url, + 'node' => true, + 'redfish' => true, + 'error' => nil} end end d_site['servers'].peach do |srv_uid, d_server| @@ -45,8 +49,12 @@ def check_redfish_availability(timeout) if !d_server['network_adapters'].nil? if !d_server['network_adapters']['bmc'].nil? if !d_server['network_adapters']['bmc']['ip'].nil? - url = 'https://'+d_server['network_adapters']['bmc']['ip'] - check_url(url, srv_uid, allBmc, 'infra', s_uid, timeout) + url = 'https://' + srv_uid + '-bmc.' + s_uid + '.grid5000.fr' + allBmc[s_uid][srv_uid] = { + 'url' => url, + 'node' => false, + 'redfish' => true, + 'error' => nil} end end end @@ -57,32 +65,6 @@ def check_redfish_availability(timeout) return allBmc end -def check_url(url, uid, allBmc, type, site, timeout) - uri = URI(url+'/redfish/v1/') - begin - req = Net::HTTP::Get.new(uri.path) - res = Net::HTTP.start( - uri.host, uri.port, - :use_ssl => uri.scheme == 'https', - :verify_mode => OpenSSL::SSL::VERIFY_NONE, - :open_timeout => timeout, - :read_timeout => timeout) do |https| - https.request(req) - end - allBmc[site][uid] = { - 'url' => url, - 'node' => type == 'node', - 'redfish' => res.code.to_i() == 200 ? true : false, - 'error' => nil} - rescue => error - allBmc[site][uid] = { - 'url' => url, - 'node' => type == 'node', - 'redfish' => false, - 'error' => error.class} - end -end - def add_credentials(credentials, allBmc) allBmc.peach do |s_site, d_site| d_site.peach do |uid, n| @@ -111,7 +93,8 @@ def gen_json_files(allBmc, options) Dir.mkdir(dir) end actualFile = dir + "/webfish.json" - allBmc.each do |s_site, _d_array| + + allBmc.sort_by{ |s_site, _d_site| s_site}.each do |s_site, _d_array| pretty_dict[s_site] = allBmc[s_site].sort_by{|k, _| [k[/(\D+)/, 1], k[/(\d+)/, 1].to_i, k[/-(\d+)/, 1].to_i]}.to_h end File.open(actualFile, "w") do |f|