Mentions légales du service

Skip to content
Snippets Groups Projects
Commit 54c23c59 authored by Samir Noir's avatar Samir Noir :cheese:
Browse files

[gen/wiki] add oarsub_simplifier_aliases generator

parent b0ef560a
No related branches found
No related tags found
No related merge requests found
Pipeline #400291 passed
Showing
with 89 additions and 22 deletions
...@@ -100,10 +100,12 @@ namespace :valid do ...@@ -100,10 +100,12 @@ namespace :valid do
end end
namespace :gen do namespace :gen do
desc "Run wiki generator -- parameters: NAME={hardware,site_hardware,oar_properties,...} SITE={global,grenoble,...} DO={diff,print,update}" desc "Run wiki generator -- parameters: NAME={hardware,site_hardware,oar_properties,...} SITE={global,grenoble,...} DO={diff,print,update} [CONFDIR=...]"
task "wiki" do task "wiki" do
require 'refrepo/gen/wiki' require 'refrepo/gen/wiki'
options = {} options = {}
options[:conf_dir] = ENV['CONFDIR'] if ENV['CONFDIR']
options[:output_dir] = PUPPET_ODIR
options[:sites] = ( ENV['SITE'] ? ENV['SITE'].split(',') : ['global'] + G5K_SITES ) options[:sites] = ( ENV['SITE'] ? ENV['SITE'].split(',') : ['global'] + G5K_SITES )
if ENV['NAME'] if ENV['NAME']
options[:generators] = ENV['NAME'].split(',') options[:generators] = ENV['NAME'].split(',')
...@@ -201,7 +203,7 @@ namespace :gen do ...@@ -201,7 +203,7 @@ namespace :gen do
namespace :puppet do namespace :puppet do
all_puppet_tasks = [:bindg5k, :conmang5k, :dhcpg5k, :kadeployg5k, :lanpowerg5k, :kavlang5k, :kwollectg5k, :network_monitoring, :'refapi-subset', :oxidizedg5k, :'sub-simplifier-aliases'] all_puppet_tasks = [:bindg5k, :conmang5k, :dhcpg5k, :kadeployg5k, :lanpowerg5k, :kavlang5k, :kwollectg5k, :network_monitoring, :'refapi-subset', :oxidizedg5k, :'oarsub-simplifier-aliases']
all_puppet_tasks.each { |t| all_puppet_tasks.each { |t|
generated_desc = (t == :'refapi-subset') ? 'description' : 'configuration' generated_desc = (t == :'refapi-subset') ? 'description' : 'configuration'
......
...@@ -11,37 +11,60 @@ def get_sub_simplifier_default_aliases(options) ...@@ -11,37 +11,60 @@ def get_sub_simplifier_default_aliases(options)
raise("Error: file #{options[:conf_dir]}/aliases.yaml does not exist. The given configuration path is incorrect") unless Pathname("#{options[:conf_dir]}/aliases.yaml").exist? raise("Error: file #{options[:conf_dir]}/aliases.yaml does not exist. The given configuration path is incorrect") unless Pathname("#{options[:conf_dir]}/aliases.yaml").exist?
default_aliases = YAML.load(File.read("#{options[:conf_dir]}/aliases.yaml")) default_aliases = YAML.load(File.read("#{options[:conf_dir]}/aliases.yaml"))
default_aliases.merge!(GPURef.get_all_aliases.transform_values { |value| "gpu_model='#{value}'" })
gpu_aliases = GPURef.get_all_aliases.map do |al, model|
[al, {'value' => "gpu_model='#{model}'",
'desc' => "Select node(s) with #{model} GPU",
'category' => 'GPUs'}]
end.to_h
default_aliases.merge!(gpu_aliases)
mem_aliases = {}
mem_multipliers = [24, 32] mem_multipliers = [24, 32]
mem_multipliers.each do |i| mem_multipliers.each do |i|
while i <= 1024 do while i <= 1024 do
default_aliases["#{i}GB"] = "memnode>=#{i*1024}" mem_aliases["#{i}GB"] = {}
mem_aliases["#{i}GB"]['value'] = "memnode>=#{i*1024}"
mem_aliases["#{i}GB"]['category'] = 'Memory'
mem_aliases["#{i}GB"]['desc'] = "Select node(s) with #{i}GB RAM or more"
i *= 2 i *= 2
end end
end end
mem_aliases = mem_aliases.sort_by { |key, _| key.scan(/\d+/).first.to_i }.to_h
default_aliases.merge!(mem_aliases)
default_aliases default_aliases
end end
def generate_puppet_oarsub_simplifier_aliases(options) def generate_puppet_oarsub_simplifier_aliases(options)
default_aliases = get_sub_simplifier_default_aliases(options) default_aliases = get_sub_simplifier_default_aliases(options)
sites_aliases = generate_all_sites_aliases
options[:sites].each do |site| options[:sites].each do |site|
output_file = "#{options[:output_dir]}/platforms/production/modules/generated/files/grid5000/oar-sub-simplifier/#{site}-aliases.yaml" output_file = "#{options[:output_dir]}/platforms/production/modules/generated/files/grid5000/oar-sub-simplifier/#{site}-aliases.yaml"
gen_aliases_yaml(site, output_file, default_aliases) generate_site_aliases_yaml(output_file, default_aliases, sites_aliases[site])
end end
end end
def gen_aliases_yaml(site, output_path, default_aliases) def generate_all_sites_aliases
aliases = {} aliases = {}
aliases.merge!(default_aliases)
site_data_hierarchy = load_data_hierarchy site_data_hierarchy = load_data_hierarchy
site_data_hierarchy['sites'][site]['clusters'].each_key do |cluster| site_data_hierarchy['sites'].each_key do |site|
aliases[cluster] = "cluster='#{cluster}'" aliases[site] = {}
aliases["#{cluster}-%d"] = "host='#{cluster}-%d.#{site}.grid5000.fr'" site_data_hierarchy['sites'][site]['clusters'].each_key do |cluster|
aliases[site][cluster] = "cluster='#{cluster}'"
aliases[site]["#{cluster}-%d"] = "host='#{cluster}-%d.#{site}.grid5000.fr'"
end
end end
aliases
end
def generate_site_aliases_yaml(output_path, default_aliases, site_aliases)
aliases = {}
aliases.merge!(default_aliases.map { |al, tr| [al, tr['value']] }.to_h)
aliases.merge!(site_aliases)
output_file = File.new(output_path, 'w') output_file = File.new(output_path, 'w')
output_file.write(YAML.dump(aliases)) output_file.write(YAML.dump(aliases))
end end
...@@ -9,6 +9,7 @@ require 'refrepo/gen/wiki/generators/site_network' ...@@ -9,6 +9,7 @@ require 'refrepo/gen/wiki/generators/site_network'
require 'refrepo/gen/wiki/generators/status' require 'refrepo/gen/wiki/generators/status'
require 'refrepo/gen/wiki/generators/group_storage' require 'refrepo/gen/wiki/generators/group_storage'
require 'refrepo/gen/wiki/generators/kwollect_metrics' require 'refrepo/gen/wiki/generators/kwollect_metrics'
require 'refrepo/gen/wiki/generators/oarsub_simplifier_aliases'
module RefRepo::Gen::Wiki module RefRepo::Gen::Wiki
...@@ -40,6 +41,10 @@ module RefRepo::Gen::Wiki ...@@ -40,6 +41,10 @@ module RefRepo::Gen::Wiki
'kwollect_metrics' => { 'kwollect_metrics' => {
:gen => KwollectMetricsGenerator, :gen => KwollectMetricsGenerator,
:page => 'Generated/KwollectMetrics' :page => 'Generated/KwollectMetrics'
},
'oarsub_simplifier_aliases' => {
:gen => OarsubSimplifierAliasesGenerator,
:page => 'Generated/OarsubSimplifierAliases'
} }
} }
SITE_GENERATORS = { SITE_GENERATORS = {
......
...@@ -5,7 +5,7 @@ class CPUParametersGenerator < WikiGenerator ...@@ -5,7 +5,7 @@ class CPUParametersGenerator < WikiGenerator
super(page_name) super(page_name)
end end
def generate_content def generate_content(_options)
table_columns = ["Installation date", "Site", "Cluster", "CPU Family", "CPU Version", "Microarchitecture", "Frequency", "Server type", "HT enabled", "Turboboost enabled", "P-State driver", "C-State driver"] table_columns = ["Installation date", "Site", "Cluster", "CPU Family", "CPU Version", "Microarchitecture", "Frequency", "Server type", "HT enabled", "Turboboost enabled", "P-State driver", "C-State driver"]
table_data = [] table_data = []
......
...@@ -6,7 +6,7 @@ class DiskReservationGenerator < WikiGenerator ...@@ -6,7 +6,7 @@ class DiskReservationGenerator < WikiGenerator
super(page_name) super(page_name)
end end
def generate_content def generate_content(_options)
table_columns = ["Site", "Cluster", "Number of nodes", "Number of reservable disks per node"] table_columns = ["Site", "Cluster", "Number of nodes", "Number of reservable disks per node"]
table_data = [] table_data = []
global_hash = get_global_hash global_hash = get_global_hash
......
...@@ -6,7 +6,7 @@ class GroupStorageGenerator < WikiGenerator ...@@ -6,7 +6,7 @@ class GroupStorageGenerator < WikiGenerator
super(page_name) super(page_name)
end end
def generate_content def generate_content(_options)
table_columns = ["Site", "Server Name", "Size", "Link Speed", "Notes"] table_columns = ["Site", "Server Name", "Size", "Link Speed", "Notes"]
table_data = [] table_data = []
global_hash = get_global_hash global_hash = get_global_hash
......
...@@ -7,7 +7,7 @@ class G5KHardwareGenerator < WikiGenerator ...@@ -7,7 +7,7 @@ class G5KHardwareGenerator < WikiGenerator
super(page_name) super(page_name)
end end
def generate_content def generate_content(_options)
@global_hash = get_global_hash @global_hash = get_global_hash
@site_uids = G5K::SITES @site_uids = G5K::SITES
......
...@@ -6,7 +6,7 @@ class KwollectMetricsGenerator < WikiGenerator ...@@ -6,7 +6,7 @@ class KwollectMetricsGenerator < WikiGenerator
super(page_name) super(page_name)
end end
def generate_content def generate_content(_options)
@generated_content = "__NOEDITSECTION__\n" @generated_content = "__NOEDITSECTION__\n"
@generated_content = "\nMetrics marked with * must be activated on demand, and metrics marked with ** are activated on non-deploy jobs by default.\n\n" @generated_content = "\nMetrics marked with * must be activated on demand, and metrics marked with ** are activated on non-deploy jobs by default.\n\n"
@generated_content += "{|class=\"wikitable\"\n" @generated_content += "{|class=\"wikitable\"\n"
......
...@@ -264,7 +264,7 @@ class OarPropertiesGenerator < WikiGenerator ...@@ -264,7 +264,7 @@ class OarPropertiesGenerator < WikiGenerator
"String" "String"
end end
def generate_content def generate_content(_options)
refapi = load_data_hierarchy refapi = load_data_hierarchy
#Properties generated from oar-properties generator #Properties generated from oar-properties generator
props = {} props = {}
......
# coding: utf-8
require 'refrepo/gen/puppet/oarsub-simplifier-aliases'
class OarsubSimplifierAliasesGenerator < WikiGenerator
def initialize(page_name)
super(page_name)
end
def generate_content(options)
default_aliases = get_sub_simplifier_default_aliases(options)
default_aliases_by_category = {}
default_aliases.each do |al, data|
default_aliases_by_category[data['category']] ||= {}
default_aliases_by_category[data['category']][al] = data
end
@generated_content = "__NOEDITSECTION__\n"
default_aliases_by_category.sort.each do |cat, data|
@generated_content += "=== #{cat} ===\n"
@generated_content += "{|class=\"wikitable\"\n"
@generated_content += "! style=\"width: 15%\" | Alias\n"
@generated_content += "! style=\"width: 30%\" | Description\n"
@generated_content += "! style=\"width: 30%\" | Translate to\n"
data.each do |al, c|
@generated_content += "|-\n"
@generated_content += "|#{al}\n"
@generated_content += "|#{c['desc']}\n"
@generated_content += "|<code>#{c['value']}</code>\n"
end
@generated_content += "|}\n"
@generated_content += "\n"
end
end
end
...@@ -9,7 +9,7 @@ class SiteHardwareGenerator < WikiGenerator ...@@ -9,7 +9,7 @@ class SiteHardwareGenerator < WikiGenerator
@site = site @site = site
end end
def generate_content def generate_content(_options)
has_reservable_disks = false has_reservable_disks = false
G5K::get_global_hash['sites'][@site]['clusters'].each do |_,c| G5K::get_global_hash['sites'][@site]['clusters'].each do |_,c|
c['nodes'].each do |_,n| c['nodes'].each do |_,n|
......
...@@ -26,7 +26,7 @@ class SiteNetworkGenerator < WikiGenerator ...@@ -26,7 +26,7 @@ class SiteNetworkGenerator < WikiGenerator
return h['network_equipments'].to_a.map { |e| "* #{e[0]}: #{e[1]['model']}" }.sort.join("\n") return h['network_equipments'].to_a.map { |e| "* #{e[0]}: #{e[1]['model']}" }.sort.join("\n")
end end
def generate_content def generate_content(_options)
@generated_content = "__NOTOC__\n__NOEDITSECTION__\n" @generated_content = "__NOTOC__\n__NOEDITSECTION__\n"
@generated_content += "= Network devices models =\n" @generated_content += "= Network devices models =\n"
@generated_content += generate_equipments + "\n" @generated_content += generate_equipments + "\n"
......
...@@ -6,7 +6,7 @@ class StatusGenerator < WikiGenerator ...@@ -6,7 +6,7 @@ class StatusGenerator < WikiGenerator
super(page_name) super(page_name)
end end
def generate_content def generate_content(_options)
@global_hash = get_global_hash @global_hash = get_global_hash
@site_uids = G5K::SITES @site_uids = G5K::SITES
......
...@@ -29,7 +29,7 @@ class WikiGenerator ...@@ -29,7 +29,7 @@ class WikiGenerator
end end
end end
def generate_content def generate_content(_options)
raise "To be implemented in actual generators" raise "To be implemented in actual generators"
end end
...@@ -114,7 +114,7 @@ class WikiGenerator ...@@ -114,7 +114,7 @@ class WikiGenerator
#Execute actions on generator based on given options #Execute actions on generator based on given options
def exec(options) def exec(options)
generate_content() generate_content(options)
ret = true ret = true
#Login only if we need to #Login only if we need to
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment