class OneacctOpts
Class for parsing command line arguments
Constants
- BLOCKING_DEFAULT
- COMPATIBILITY_DEFAULT
- TIMEOUT_DEFAULT
Public Class Methods
check_options_restrictions(options)
click to toggle source
Make sure command line parameters are sane
# File lib/oneacct_opts.rb, line 122 def self.check_options_restrictions(options) # make sure only one time option is used if (options.records_from || options.records_to) && options.records_for fail ArgumentError, 'Cannot use both time period and time range options.' end # make sure date range make sense if options.records_from && options.records_to && options.records_from >= options.records_to fail ArgumentError, 'Wrong time range for records retrieval.' end # make sure only one group restriction is used if options.include_groups && options.exclude_groups fail ArgumentError, 'Mixing of group options is not possible.' end # make sure group file option is not used without specifying group restriction type unless options.include_groups || options.exclude_groups if options.groups_file fail ArgumentError, 'Cannot use group file without specifying group restriction type.' end end # make sure that timeout option is not used without blocking option if options.timeout && !options.blocking fail ArgumentError, 'Cannot set timeout without a blocking mode.' end end
check_output_type_specific_settings()
click to toggle source
# File lib/oneacct_opts.rb, line 173 def self.check_output_type_specific_settings if APEL_OT.include?(Settings.output['output_type']) unless Settings.output['apel'] && Settings.output.apel['site_name'] && Settings.output.apel['cloud_type'] && Settings.output.apel['endpoint'] fail ArgumentError, 'Missing some mandatory parameters for APEL output type. Check your configuration file.' end end if PBS_OT.include?(Settings.output['output_type']) && Settings.output['pbs'] Settings.output.pbs['realm'] ||= 'META' Settings.output.pbs['queue'] ||= 'cloud' Settings.output.pbs['scratch_type'] ||= 'local' Settings.output.pbs['host_identifier'] ||= 'on_localhost' end if LOGSTASH_OT.include?(Settings.output['output_type']) unless Settings.output['logstash'] && Settings.output.logstash['host'] && Settings.output.logstash['port'] fail ArgumentError, 'Missing some mandatory parameters for logstash output type. Check your configuration file.' end end end
check_restrictions(options)
click to toggle source
# File lib/oneacct_opts.rb, line 116 def self.check_restrictions(options) check_options_restrictions(options) check_settings_restrictions end
check_settings_restrictions()
click to toggle source
Make sure configuration is sane
# File lib/oneacct_opts.rb, line 152 def self.check_settings_restrictions # make sure all mandatory parameters are set unless Settings['output'] && Settings.output['output_dir'] && Settings.output['output_type'] fail ArgumentError, 'Missing some mandatory parameters. Check your configuration file.' end # make sure log file is specified while loggin to file if Settings['logging'] && Settings.logging['log_type'] == 'file' && !Settings.logging['log_file'] fail ArgumentError, 'Missing file for logging. Check your configuration file.' end check_output_type_specific_settings # make sure specified template really exists template_filename = OneWriter.template_filename(Settings.output['output_type']) unless File.exist?(template_filename) fail ArgumentError, "Non-existing template #{Settings.output['output_type']}." end end
parse(args)
click to toggle source
# File lib/oneacct_opts.rb, line 15 def self.parse(args) options = OpenStruct.new opt_parser = OptionParser.new do |opts| opts.banner = 'Usage oneacct-export [options]' opts.separator '' opts.on('--records-from TIME', Time, 'Retrieves only records newer than TIME') do |time| options.records_from = time end opts.on('--records-to TIME', Time, 'Retrieves only records older than TIME') do |time| options.records_to = time end opts.on('--records-for PERIOD', 'Retrieves only records within the time PERIOD') do |period| options.records_for = period end opts.on('--include-groups [GROUP1,GROUP2,...]', Array, 'Retrieves only records of virtual machines which '\ 'belong to the specified groups') do |groups| groups = [] unless groups options.include_groups = groups end opts.on('--exclude-groups [GROUP1,GROUP2,...]', Array, 'Retrieves only records of virtual machines which '\ "don't belong to the specified groups") do |groups| groups = [] unless groups options.exclude_groups = groups end opts.on('--group-file FILE', 'If --include-groups or --exclude-groups specified, '\ 'loads groups from file FILE') do |file| options.groups_file = file end opts.on('-b', '--[no-]blocking', 'Run in a blocking mode - '\ 'wait until all submitted jobs are processed') do |blocking| options.blocking = blocking end opts.on('-t', '--timeout N', Integer, 'Timeout for blocking mode in seconds. '\ 'Default is 1 hour.') do |timeout| options.timeout = timeout end opts.on('-c', '--[no-]compatibility-mode', 'Run in compatibility mode - '\ 'supports OpenNebula 4.4.x') do |compatibility| options.compatibility = compatibility end opts.on('--harden-ssl-security', 'Sets basic SSL options for better security.') do OpenSSL::SSL::SSLContext::DEFAULT_PARAMS[:options] |= OpenSSL::SSL::OP_NO_SSLv2 OpenSSL::SSL::SSLContext::DEFAULT_PARAMS[:options] |= OpenSSL::SSL::OP_NO_SSLv3 OpenSSL::SSL::SSLContext::DEFAULT_PARAMS[:options] |= OpenSSL::SSL::OP_NO_COMPRESSION end opts.on('--ssl-cipher-suite CIPHER_SUITE', 'Sets SSL cipher suite.') do |suite| OpenSSL::SSL::SSLContext::DEFAULT_PARAMS[:ciphers] = suite end opts.on('--ssl-version VERSION', 'Sets SSL version') do |version| OpenSSL::SSL::SSLContext::DEFAULT_PARAMS[:ssl_version] = version end opts.on("--skip-ca-check", "Skip server certificate verification [NOT recommended]") do silence_warnings { OpenSSL::SSL.const_set(:VERIFY_PEER, OpenSSL::SSL::VERIFY_NONE) } end opts.on_tail('-h', '--help', 'Shows this message') do puts opts exit end opts.on_tail('-v', '--version', 'Shows version') do puts OneacctExporter::VERSION exit end end opt_parser.parse!(args) set_defaults(options) check_restrictions(options) options end
set_defaults(options)
click to toggle source
Set default values for not specified options
# File lib/oneacct_opts.rb, line 110 def self.set_defaults(options) options.blocking = BLOCKING_DEFAULT unless options.blocking options.timeout = TIMEOUT_DEFAULT if options.blocking unless options.timeout options.compatibility = COMPATIBILITY_DEFAULT unless options.compatibility end
silence_warnings() { || ... }
click to toggle source
# File lib/oneacct_opts.rb, line 195 def self.silence_warnings old_verbose, $VERBOSE = $VERBOSE, nil yield ensure $VERBOSE = old_verbose end