Class: HybridPlatformsConductor::JsonDumper
- Inherits:
-
Object
- Object
- HybridPlatformsConductor::JsonDumper
- Includes:
- LoggerHelpers
- Defined in:
- lib/hybrid_platforms_conductor/json_dumper.rb
Overview
Gives ways to dump nodes info into JSON files
Constant Summary
Constants included from LoggerHelpers
LoggerHelpers::LEVELS_MODIFIERS, LoggerHelpers::LEVELS_TO_STDERR
Instance Attribute Summary collapse
-
#dump_dir ⇒ Object
The output JSON directory String.
Instance Method Summary collapse
-
#dump_json_for(nodes_selectors) ⇒ Object
Dump JSON files containing description of the given nodes.
-
#initialize(logger: Logger.new(STDOUT), logger_stderr: Logger.new(STDERR), config: Config.new, nodes_handler: NodesHandler.new, deployer: Deployer.new) ⇒ JsonDumper
constructor
Constructor.
-
#options_parse(options_parser) ⇒ Object
Complete an option parser with ways to tune the way to dump nodes json.
Methods included from LoggerHelpers
#err, #init_loggers, #log_component=, #log_debug?, #log_level=, #out, #section, #set_loggers_format, #stderr_device, #stderr_device=, #stderr_displayed?, #stdout_device, #stdout_device=, #stdout_displayed?, #stdouts_to_s, #with_progress_bar
Constructor Details
#initialize(logger: Logger.new(STDOUT), logger_stderr: Logger.new(STDERR), config: Config.new, nodes_handler: NodesHandler.new, deployer: Deployer.new) ⇒ JsonDumper
Constructor
- Parameters
-
logger (Logger): Logger to be used [default = Logger.new(STDOUT)]
-
logger_stderr (Logger): Logger to be used for stderr [default = Logger.new(STDERR)]
-
config (Config): Config to be used. [default = Config.new]
-
nodes_handler (NodesHandler): Nodes handler to be used. [default = NodesHandler.new]
-
deployer (Deployer): Deployer to be used. [default = Deployer.new]
26 27 28 29 30 31 32 33 34 |
# File 'lib/hybrid_platforms_conductor/json_dumper.rb', line 26 def initialize(logger: Logger.new(STDOUT), logger_stderr: Logger.new(STDERR), config: Config.new, nodes_handler: NodesHandler.new, deployer: Deployer.new) init_loggers(logger, logger_stderr) @config = config @nodes_handler = nodes_handler @deployer = deployer # Default values @skip_run = false @dump_dir = 'nodes_json' end |
Instance Attribute Details
#dump_dir ⇒ Object
The output JSON directory
String
16 17 18 |
# File 'lib/hybrid_platforms_conductor/json_dumper.rb', line 16 def dump_dir @dump_dir end |
Instance Method Details
#dump_json_for(nodes_selectors) ⇒ Object
Dump JSON files containing description of the given nodes
- Parameters
-
nodes_selectors (Array<object>): List of nodes selectors to dump files for
55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 |
# File 'lib/hybrid_platforms_conductor/json_dumper.rb', line 55 def dump_json_for(nodes_selectors) nodes = @nodes_handler.select_nodes(nodes_selectors) unless @skip_run nodes.map { |node| @nodes_handler.platform_for(node) }.uniq.each.each do |platform_handler| platform_handler.prepare_why_run_deploy_for_json_dump if platform_handler.respond_to?(:prepare_why_run_deploy_for_json_dump) end @deployer.concurrent_execution = true @deployer.use_why_run = true @deployer.deploy_on(nodes) end # Parse the logs FileUtils.mkdir_p @dump_dir nodes.each do |node| stdout_file_name = "#{@config.hybrid_platforms_dir}/run_logs/#{node}.stdout" if File.exist?(stdout_file_name) stdout = File.read(stdout_file_name).split("\n") dump_begin_idx = stdout.index('===== Node JSON dump BEGIN =====') dump_end_idx = stdout.index('===== Node JSON dump END =====') if dump_begin_idx.nil? || dump_end_idx.nil? out "[ #{node} ] - Error while dumping JSON. Check #{stdout_file_name}" else json_file_name = "#{@dump_dir}/#{node}.json" File.write(json_file_name, stdout[dump_begin_idx+1..dump_end_idx-1].join("\n")) out "[ #{node} ] - OK. Check #{json_file_name}" end else out "[ #{node} ] - Error while dumping JSON. File #{stdout_file_name} does not exist." end end end |
#options_parse(options_parser) ⇒ Object
Complete an option parser with ways to tune the way to dump nodes json
- Parameters
-
options_parser (OptionParser): The option parser to complete
40 41 42 43 44 45 46 47 48 49 |
# File 'lib/hybrid_platforms_conductor/json_dumper.rb', line 40 def () .separator '' .separator 'JSON dump options:' .on('-k', '--skip-run', 'Skip the actual gathering of dumps in run_logs. If set, the current run_logs content will be used.') do @skip_run = true end .on('-j', '--json-dir DIRECTORY', "Specify the output directory in which JSON files are being written. Defaults to #{@dump_dir}.") do |dir| @dump_dir = dir end end |