Class: HybridPlatformsConductor::ReportsHandler
- Inherits:
-
Object
- Object
- HybridPlatformsConductor::ReportsHandler
- 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
-
#format ⇒ Object
Format in which the reports handler will provide reports Symbol.
-
#locale ⇒ Object
Locale in which the reports handler will provide reports Symbol.
Instance Method Summary collapse
-
#initialize(logger: Logger.new(STDOUT), logger_stderr: Logger.new(STDERR), config: Config.new, platforms_handler: PlatformsHandler.new, nodes_handler: NodesHandler.new) ⇒ ReportsHandler
constructor
Constructor.
-
#options_parse(options_parser) ⇒ Object
Complete an option parser with options meant to control this Reports handler.
-
#produce_report_for(nodes_selectors) ⇒ Object
Produce a report for a given list of nodes selectors.
-
#validate_params ⇒ Object
Validate that parsed parameters are valid.
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
#format ⇒ Object
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 |
#locale ⇒ Object
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 () .separator '' .separator 'Reports handler options:' .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 .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_params ⇒ Object
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 |