module Chef::Knife::IonoscloudBase
Public Class Methods
included(includer)
click to toggle source
# File lib/chef/knife/ionoscloud_base.rb, line 6 def self.included(includer) includer.class_eval do deps do require 'ionoscloud' end option :ionoscloud_username, short: '-u USERNAME', long: '--username USERNAME', description: 'Your Ionoscloud username' option :ionoscloud_password, short: '-p PASSWORD', long: '--password PASSWORD', description: 'Your Ionoscloud password' option :extra_config_file, short: '-e EXTRA_CONFIG_FILE_PATH', long: '--extra-config EXTRA_CONFIG_FILE_PATH', description: 'Path to the additional config file' end end
Public Instance Methods
api_client()
click to toggle source
# File lib/chef/knife/ionoscloud_base.rb, line 63 def api_client api_config = Ionoscloud::Configuration.new() api_config.username = config[:ionoscloud_username] api_config.password = config[:ionoscloud_password] api_config.debugging = config[:ionoscloud_debug] || false @api_client ||= Ionoscloud::ApiClient.new(api_config) end
get_request_id(headers)
click to toggle source
# File lib/chef/knife/ionoscloud_base.rb, line 74 def get_request_id(headers) begin headers['Location'].scan(%r{/requests/(\b[0-9a-f]{8}\b-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-\b[0-9a-f]{12}\b)}).last.first rescue NoMethodError nil end end
handle_extra_config()
click to toggle source
# File lib/chef/knife/ionoscloud_base.rb, line 45 def handle_extra_config return if config[:extra_config_file].nil? available_options = options.map { |key, _| key } ionoscloud_options = available_options[available_options.find_index(:ionoscloud_username)..] ignored_options = [] JSON[File.read(config[:extra_config_file])].transform_keys(&:to_sym).each do |key, value| if config.key?(key) || !ionoscloud_options.include?(key) ignored_options << key else config[key] = value end end ui.warn "The following options #{ignored_options} from the specified JSON file will be ignored." unless ignored_options.empty? end
is_done?(request_id)
click to toggle source
# File lib/chef/knife/ionoscloud_base.rb, line 82 def is_done?(request_id) response = Ionoscloud::RequestApi.new(api_client).requests_status_get(request_id) if response.metadata.status == 'FAILED' puts "\nRequest #{request_id} failed\n#{response.metadata.message.to_s}" exit(1) end response.metadata.status == 'DONE' end
msg_pair(label, value, color = :cyan)
click to toggle source
# File lib/chef/knife/ionoscloud_base.rb, line 29 def msg_pair(label, value, color = :cyan) if !value.nil? && !value.to_s.empty? puts "#{ui.color(label, color)}: #{value}" end end
validate_required_params(required_params, params)
click to toggle source
# File lib/chef/knife/ionoscloud_base.rb, line 35 def validate_required_params(required_params, params) missing_params = required_params.select do |param| params[param].nil? end if missing_params.any? puts "Missing required parameters #{missing_params}" exit(1) end end