class Cloudkeeper::One::CLI
Constants
- SIGINT
- SIGNALS
- SIGTERM
Public Instance Methods
sync()
click to toggle source
# File lib/cloudkeeper/one/cli.rb, line 96 def sync initialize_sync options grpc_server = GRPC::RpcServer.new grpc_server.add_http2_port Cloudkeeper::One::Settings[:'listen-address'], credentials grpc_server.handle Cloudkeeper::One::CoreConnector grpc_server.run_till_terminated rescue SignalException => ex raise ex unless SIGNALS.include? ex.signo grpc_server.stop rescue Cloudkeeper::One::Errors::InvalidConfigurationError => ex abort ex.message rescue StandardError => ex logger.error "Unexpected error: #{ex.message}" raise ex end
version()
click to toggle source
# File lib/cloudkeeper/one/cli.rb, line 114 def version $stdout.puts Cloudkeeper::One::VERSION end
Private Instance Methods
all_options_available(required_options)
click to toggle source
# File lib/cloudkeeper/one/cli.rb, line 141 def all_options_available(required_options) required_options.reduce(true) { |acc, elem| Cloudkeeper::One::Settings[elem] && acc } end
credentials()
click to toggle source
# File lib/cloudkeeper/one/cli.rb, line 145 def credentials return :this_port_is_insecure unless Cloudkeeper::One::Settings[:authentication] GRPC::Core::ServerCredentials.new( File.read(Cloudkeeper::One::Settings[:'core-certificate']), [ private_key: File.read(Cloudkeeper::One::Settings[:key]), cert_chain: File.read(Cloudkeeper::One::Settings[:certificate]) ], true ) end
initialize_configuration(options)
click to toggle source
# File lib/cloudkeeper/one/cli.rb, line 158 def initialize_configuration(options) Cloudkeeper::One::Settings.clear Cloudkeeper::One::Settings.merge! options.to_hash gem_dir = File.realdirpath(File.join(File.dirname(__FILE__), '..', '..', '..')) Cloudkeeper::One::Settings[:'appliances-template-dir'] = File.join(gem_dir, 'config', 'templates') \ unless Cloudkeeper::One::Settings[:'appliances-template-dir'] Cloudkeeper::One::Settings[:'opennebula-api-call-timeout'] = \ ChronicDuration.parse Cloudkeeper::One::Settings[:'opennebula-api-call-timeout'], keep_zero: true end
initialize_logger()
click to toggle source
# File lib/cloudkeeper/one/cli.rb, line 169 def initialize_logger Cloudkeeper::One::Settings[:'logging-level'] = 'DEBUG' if Cloudkeeper::One::Settings[:debug] logging_file = Cloudkeeper::One::Settings[:'logging-file'] logging_level = Cloudkeeper::One::Settings[:'logging-level'] Yell.new :stdout, name: Object, level: logging_level.downcase, format: Yell::DefaultFormat Object.send :include, Yell::Loggable setup_file_logger(logging_file) if logging_file logger.debug 'Running in debug mode...' end
initialize_sync(options)
click to toggle source
# File lib/cloudkeeper/one/cli.rb, line 122 def initialize_sync(options) initialize_configuration options validate_configuration! initialize_logger logger.debug "cloudkeeper-one 'sync' called with parameters: #{Cloudkeeper::One::Settings.to_hash.inspect}" end
setup_file_logger(logging_file)
click to toggle source
# File lib/cloudkeeper/one/cli.rb, line 183 def setup_file_logger(logging_file) unless (File.exist?(logging_file) && File.writable?(logging_file)) || File.writable?(File.dirname(logging_file)) logger.error "File #{logging_file} isn't writable" return end logger.adapter :file, logging_file end
validate_configuration!()
click to toggle source
# File lib/cloudkeeper/one/cli.rb, line 129 def validate_configuration! validate_configuration_group! :authentication, %i[certificate key core-certificate], 'Authentication configuration missing' end
validate_configuration_group!(flag, required_options, error_message)
click to toggle source
# File lib/cloudkeeper/one/cli.rb, line 135 def validate_configuration_group!(flag, required_options, error_message) return unless Cloudkeeper::One::Settings[flag] raise Cloudkeeper::One::Errors::InvalidConfigurationError, error_message unless all_options_available(required_options) end