Class: HybridPlatformsConductor::ReportsHandler

Inherits:
Object
  • Object
show all
Includes:
LoggerHelpers
Defined in:
lib/hybrid_platforms_conductor/reports_handler.rb

Overview

Gives ways to produce reports

Constant Summary

Constants included from LoggerHelpers

LoggerHelpers::LEVELS_MODIFIERS, LoggerHelpers::LEVELS_TO_STDERR

Instance Attribute Summary collapse

Instance Method Summary collapse

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, platforms_handler: PlatformsHandler.new, nodes_handler: NodesHandler.new) ⇒ ReportsHandler

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]

  • platforms_handler (PlatformsHandler): Platforms handler to be used. [default = PlatformsHandler.new]

  • nodes_handler (NodesHandler): Nodes handler to be used. [default = NodesHandler.new]



28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
# File 'lib/hybrid_platforms_conductor/reports_handler.rb', line 28

def initialize(
  logger: Logger.new(STDOUT),
  logger_stderr: Logger.new(STDERR),
  config: Config.new,
  platforms_handler: PlatformsHandler.new,
  nodes_handler: NodesHandler.new
)
  init_loggers(logger, logger_stderr)
  @config = config
  @platforms_handler = platforms_handler
  @nodes_handler = nodes_handler
  @platforms_handler.inject_dependencies(nodes_handler: @nodes_handler, actions_executor: nil)
  # The list of reports plugins, with their associated class
  # Hash< Symbol, Class >
  @reports_plugins = Plugins.new(:report, logger: @logger, logger_stderr: @logger_stderr)
  @format = :stdout
  @locale = @reports_plugins[@format].supported_locales.first
end

Instance Attribute Details

#formatObject

Format in which the reports handler will provide reports Symbol



14
15
16
# File 'lib/hybrid_platforms_conductor/reports_handler.rb', line 14

def format
  @format
end

#localeObject

Locale in which the reports handler will provide reports Symbol



18
19
20
# File 'lib/hybrid_platforms_conductor/reports_handler.rb', line 18

def locale
  @locale
end

Instance Method Details

#options_parse(options_parser) ⇒ Object

Complete an option parser with options meant to control this Reports handler

Parameters
  • options_parser (OptionParser): The option parser to complete



51
52
53
54
55
56
57
58
59
60
# File 'lib/hybrid_platforms_conductor/reports_handler.rb', line 51

def options_parse(options_parser)
  options_parser.separator ''
  options_parser.separator 'Reports handler options:'
  options_parser.on('-c', '--locale LOCALE_CODE', "Generate the report in the given format. Possible codes are formats specific. #{@reports_plugins.map { |format, klass| "[#{format}: #{klass.supported_locales.join(', ')}]" }.join(', ')}") do |str_locale|
    @locale = str_locale.to_sym
  end
  options_parser.on('-f', '--format FORMAT', "Generate the report in the given format. Possible formats are #{@reports_plugins.keys.sort.join(', ')}. Default: #{@format}.") do |str_format|
    @format = str_format.to_sym
  end
end

#produce_report_for(nodes_selectors) ⇒ Object

Produce a report for a given list of nodes selectors

Parameters
  • nodes_selectors (Array<Object>): List of nodes selectors to produce report for



71
72
73
74
75
76
77
78
79
80
# File 'lib/hybrid_platforms_conductor/reports_handler.rb', line 71

def produce_report_for(nodes_selectors)
  raise "Unknown locale for format #{@format}: #{@locale}" unless @reports_plugins[@format].supported_locales.include? @locale
  @reports_plugins[@format].new(
    logger: @logger,
    logger_stderr: @logger_stderr,
    config: @config,
    platforms_handler: @platforms_handler,
    nodes_handler: @nodes_handler
  ).report_for(@nodes_handler.select_nodes(nodes_selectors), @locale)
end

#validate_paramsObject

Validate that parsed parameters are valid



63
64
65
# File 'lib/hybrid_platforms_conductor/reports_handler.rb', line 63

def validate_params
  raise "Unknown format: #{@format}" unless @reports_plugins.keys.include? @format
end