Class: HybridPlatformsConductor::HpcPlugins::SecretsReader::Cli
- Inherits:
-
SecretsReader
- Object
- Plugin
- SecretsReader
- HybridPlatformsConductor::HpcPlugins::SecretsReader::Cli
- Defined in:
- lib/hybrid_platforms_conductor/hpc_plugins/secrets_reader/cli.rb
Overview
Get secrets from the command-line
Constant Summary
Constants included from LoggerHelpers
LoggerHelpers::LEVELS_MODIFIERS, LoggerHelpers::LEVELS_TO_STDERR
Instance Method Summary collapse
-
#initialize(logger: Logger.new($stdout), logger_stderr: Logger.new($stderr), config: Config.new, cmd_runner: CmdRunner.new, nodes_handler: NodesHandler.new) ⇒ Cli
constructor
Constructor.
-
#options_parse(options_parser) ⇒ Object
Complete an option parser with options meant to control this secrets reader [API] - This method is optional.
-
#secrets_for(_node, _service) ⇒ Object
Return secrets for a given service to be deployed on a node.
Methods inherited from Plugin
extend_config_dsl_with, 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, cmd_runner: CmdRunner.new, nodes_handler: NodesHandler.new) ⇒ Cli
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]
-
cmd_runner (CmdRunner): CmdRunner to be used. [default: CmdRunner.new]
-
nodes_handler (NodesHandler): Nodes handler to be used. [default: NodesHandler.new]
20 21 22 23 24 25 26 27 28 29 |
# File 'lib/hybrid_platforms_conductor/hpc_plugins/secrets_reader/cli.rb', line 20 def initialize( logger: Logger.new($stdout), logger_stderr: Logger.new($stderr), config: Config.new, cmd_runner: CmdRunner.new, nodes_handler: NodesHandler.new ) super @secrets_files = [] end |
Instance Method Details
#options_parse(options_parser) ⇒ Object
Complete an option parser with options meant to control this secrets reader
- API
-
This method is optional
-
- Parameters
-
options_parser (OptionParser): The option parser to complete
36 37 38 39 40 |
# File 'lib/hybrid_platforms_conductor/hpc_plugins/secrets_reader/cli.rb', line 36 def () .on('-e', '--secrets JSON_FILE', 'Specify a secrets location from a local JSON file. Can be specified several times.') do |file| @secrets_files << file end end |
#secrets_for(_node, _service) ⇒ Object
Return secrets for a given service to be deployed on a node.
- API
-
This method is mandatory
-
- API
-
The following API components are accessible:
-
-
*@config* (Config): Main configuration API.
-
*@cmd_runner* (CmdRunner): Command Runner API.
-
*@nodes_handler* (NodesHandler): Nodes handler API.
- Parameters
-
node (String): Node to be deployed
-
service (String): Service to be deployed
- Result
-
Hash: The secrets
54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 |
# File 'lib/hybrid_platforms_conductor/hpc_plugins/secrets_reader/cli.rb', line 54 def secrets_for(_node, _service) # As we are dealing with global secrets, cache the reading for performance between nodes and services. unless defined?(@secrets) @secrets = {} @secrets_files.each do |secrets_file| raise "Missing secrets file: #{secrets_file}" unless File.exist?(secrets_file) @secrets.merge!(JSON.parse(File.read(secrets_file))) do |key, value_1, value_2| raise "Secret #{key} has conflicting values between different secret JSON files." if value_1 != value_2 value_1 end end end @secrets end |