class ChefClass
Wrapper class to interact with chef
Public Class Methods
new(name, vm: nil, task: nil)
click to toggle source
rubocop:disable Naming/AccessorMethodName
# File lib/miq_utilities/chef.rb, line 16 def initialize(name, vm: nil, task: nil) @logger = LoggingClass.new(name) @vm = vm unless vm.nil? @task = task unless task.nil? end
Public Instance Methods
call_chef(cmd, timeout = 20, pre_cmd = nil)
click to toggle source
# File lib/miq_utilities/chef.rb, line 22 def call_chef(cmd, timeout = 20, pre_cmd = nil) # unset the variables for knife pre_cmd ||= 'unset GEM_HOME GEM_PATH IRBRC MY_RUBY_HOME' require 'linux_admin' require 'timeout' begin Timeout.timeout(timeout) do @logger.log(level: 'info', message: "Executing [#{cmd}] with timeout of #{timeout} seconds") result = LinuxAdmin::Common.run("#{pre_cmd};#{cmd}") @logger.log(level: 'info', message: "success?: #{result.success?}") @logger.log(level: 'info', message: "exit_status: #{result.exit_status}") unless result.exit_status.blank? @logger.log(level: 'info', message: "output: #{result.output}") @logger.log(level: 'info', message: "error: #{result.error}") unless result.error.blank? return result end rescue => timeout @logger.log(level: 'error', message: "Error executing chef: #{timeout.class} #{timeout} #{timeout.backtrace.join("\n")}") return false rescue => err raise("\n Class:<#{self.class}>\n Method:<#{__method__}>\n Error:<#{err} - #{err.backtrace.join("\n")}>") end end
get_chef_environment_name(ws_values = {})
click to toggle source
# File lib/miq_utilities/chef.rb, line 47 def get_chef_environment_name(ws_values = {}) chef_environment = $evm.object['chef_environment'] chef_environment ||= $evm.root['dialog_chef_environment'] if @task env = @task.get_tags[:environment] region = @task.get_option(:cmdb)[:ProvisionCMDBDetails]['CountryCode'].downcase chef_environment = @task.get_tags[:chef_environment] || ws_values[:chef_environment] || @task.get_option(:chef_environment) chef_environment ||= case env when 'production' "#{region}_prod" when 'quality_excellence' "#{region}_qe" when 'development' "#{region}_dev" else '_default' end end chef_environment ||= '_default' @logger.log(level: 'info', message: "chef_environment: #{chef_environment}") chef_environment end
get_chef_node_name()
click to toggle source
# File lib/miq_utilities/chef.rb, line 78 def get_chef_node_name chef_node_name = begin @vm.hostnames.first rescue nil end domain_suffix = get_domain_suffix chef_node_name ||= @task.get_option(:vm_target_hostname) if @task chef_node_name ||= @vm.name.to_s unless @vm.nil? chef_node_name = "#{chef_node_name}.#{domain_suffix}" unless domain_suffix.nil? || chef_node_name.include?(domain_suffix) @logger.log(level: 'info', message: "chef_node_name: #{chef_node_name}") chef_node_name.downcase end
get_chef_role(ws_values = {})
click to toggle source
# File lib/miq_utilities/chef.rb, line 93 def get_chef_role(ws_values = {}) chef_role = $evm.object['chef_role'] chef_role ||= $evm.root['dialog_chef_role'] if @task chef_role = @task.get_tags[:chef_role] || ws_values[:chef_role] || @task.get_option(:chef_role) end chef_role ||= '' @logger.log(level: 'info', message: "chef_role: #{chef_role}") chef_role end
get_chef_type()
click to toggle source
# File lib/miq_utilities/chef.rb, line 70 def get_chef_type chef_type = $evm.object['chef_type'] chef_type ||= $evm.root['dialog_chef_type'] chef_type ||= 'role' @logger.log(level: 'info', message: "chef_type: #{chef_type}") chef_type end
get_chef_version(chef_version = nil)
click to toggle source
# File lib/miq_utilities/chef.rb, line 114 def get_chef_version(chef_version = nil) chef_version ||= $evm.object['chef_version'] @logger.log(level: 'info', message: "chef_version: #{chef_version}") chef_version end
get_domain_suffix()
click to toggle source
# File lib/miq_utilities/chef.rb, line 105 def get_domain_suffix domain_suffix = nil domain_suffix ||= $evm.object['domain_suffix'] domain_suffix ||= $evm.root['dialog_domain_suffix'] domain_suffix ||= @task.get_tags[:domain_suffix] if @task @logger.log(level: 'info', message: "domain_suffix: #{domain_suffix}") domain_suffix end