class BrpmAuto

Attributes

all_params[R]
brpm_version[R]
config[R]
framework_root_path[R]
global_params[R]
integration_settings[R]
logger[R]
params[R]
request_params[R]
version[R]

Public Class Methods

brpm_installed?() click to toggle source
# File lib/brpm_auto.rb, line 151
def brpm_installed?
  ENV["BRPM_HOME"] and ! ENV["BRPM_HOME"].empty?
end
get_global_params() click to toggle source
# File lib/brpm_auto.rb, line 82
def get_global_params
  server_config_file_path = "#{self.params.config_dir}/server.yml"
  if File.exists?(server_config_file_path)
    YAML.load_file(server_config_file_path) || {}
  else
    {}
  end
end
get_request_params_for_request(automation_results_dir, application, request_id) click to toggle source
# File lib/brpm_auto.rb, line 143
def get_request_params_for_request(automation_results_dir, application, request_id)
  RequestParams.new_for_request(automation_results_dir, application, request_id)
end
init() click to toggle source
# File lib/brpm_auto.rb, line 32
def init
  @framework_root_path = File.expand_path("#{File.dirname(__FILE__)}/..")

  self.extend Utilities

  @config = get_config
  @version = @config["version"]

  @brpm_version = get_brpm_version if self.brpm_installed?
end
initialize_integration_settings(dns, username, password, details) click to toggle source
# File lib/brpm_auto.rb, line 147
def initialize_integration_settings(dns, username, password, details)
  @integration_settings = IntegrationSettings.new(dns, username, password, details)
end
initialize_logger(log_file, also_log_to_console = false) click to toggle source
# File lib/brpm_auto.rb, line 104
def initialize_logger(log_file, also_log_to_console = false)
  @logger = SimpleLogger.new(log_file, also_log_to_console)
end
initialize_request_params(path) click to toggle source
# File lib/brpm_auto.rb, line 139
def initialize_request_params(path)
  @request_params = RequestParams.new(path)
end
load_customer_include_file() click to toggle source
# File lib/brpm_auto.rb, line 91
def load_customer_include_file
  customer_include_file_path = "#{self.params.config_dir}/customer_include.rb"
  params = {}
  if File.exists?(customer_include_file_path)
    load customer_include_file_path # use load instead of require to avoid having to restart BRPM after modifying the customer include file in a resource automation scenario
    if defined?(get_customer_include_params)
      params = get_customer_include_params || {}
    end
  end

  params
end
log(message) click to toggle source
# File lib/brpm_auto.rb, line 112
def log(message)
  @logger.log(message)
end
log_error(message) click to toggle source
# File lib/brpm_auto.rb, line 116
def log_error(message)
  @logger.log_error(message)
end
message_box(message, m_type = "sep") click to toggle source
# File lib/brpm_auto.rb, line 120
def message_box(message, m_type = "sep")
  @logger.message_box(message, m_type)
end
pack_response(argument_name, response) click to toggle source
# File lib/brpm_auto.rb, line 124
def pack_response(argument_name, response)
  flag = "#------ Block to Set Pack Response ---------------#\n"
  unless argument_name.nil?
    if response.is_a?(Hash)
      # Used for out-table output parameter
      flag += "$$SS_Pack_Response{#{argument_name}@@#{response.to_json}}$$"
    else
      flag += "$$SS_Pack_Response{#{argument_name}=>#{response}}$$"
    end
  end
  flag += "\n#------- End Set Pack Response Block ---------------#\n"
  @logger.log(flag, false)
  flag
end
require_module(module_name) click to toggle source
# File lib/brpm_auto.rb, line 155
def require_module(module_name)
  module_spec = Gem::Specification.find_by_name(module_name) # will raise an error when the module is not installed
  module_path = module_spec.gem_dir

  module_config_file_path = "#{module_path}/config.yml"

  if File.exist?(module_config_file_path)
    module_config = YAML.load_file(module_config_file_path)

    if module_config["dependencies"]
      BrpmAuto.log "Loading the dependent modules..."
      module_config["dependencies"].each do |dependency|
        if dependency.is_a?(Hash)
          dep_module_name = dependency.keys[0]
        else
          dep_module_name = dependency
        end

        BrpmAuto.log "Loading module #{dep_module_name}..."
        require_module(dep_module_name)
      end
    end
  else
    BrpmAuto.log "No config file found."
  end

  BrpmAuto.log "Loading the libraries of module #{module_name}..."
  require_libs(module_path)

  module_path
end
run_from_brpm() click to toggle source
# File lib/brpm_auto.rb, line 108
def run_from_brpm
  @params.run_from_brpm
end
setup(params = {}) click to toggle source
# File lib/brpm_auto.rb, line 43
def setup(params = {})
  @params = Params.new(params)

  @global_params = get_global_params
  @global_params.merge!(load_customer_include_file)

  if @params.run_from_brpm
    @logger = BrpmLogger.new
    @request_params = RequestParams.new_for_request(@params.automation_results_dir, @params.application, @params.request_id)
  else
    initialize_logger(@params.log_file, @params.also_log_to_console)
    initialize_request_params(@params.output_dir)
  end

  @all_params = AllParams.new(@params, @request_params)

  if @params["SS_integration_dns"]
    @integration_settings = IntegrationSettings.new(
        @params["SS_integration_dns"],
        @params["SS_integration_username"],
        @params["SS_integration_password"],
        @params["SS_integration_details"],
        @params["SS_project_server"],
        @params["SS_project_server_id"]
    )
  elsif defined?(SS_integration_dns)
    @integration_settings = IntegrationSettings.new(
        SS_integration_dns,
        SS_integration_username,
        SS_integration_password,
        SS_integration_details,
        SS_project_server,
        SS_project_server_id
    )
  end

  @params
end

Private Class Methods

get_brpm_version() click to toggle source
# File lib/brpm_auto.rb, line 228
def get_brpm_version
  unless self.brpm_installed?
    raise "BRPM is not installed."
  end

  knob_file = "#{ENV["BRPM_HOME"]}/server/jboss/standalone/deployments/RPM-knob.yml"
  unless File.exists?(knob_file)
    raise "Could not find the knob file at the expected location (#{knob_file})"
  end

  knob = YAML.load_file(knob_file)
  version_content = File.read("#{knob["application"]["root"]}/VERSION")
  version_content.scan(/VERSION=([0-9\.]*)/)[0][0]
end
get_config() click to toggle source
# File lib/brpm_auto.rb, line 224
def get_config
  YAML.load_file("#{@framework_root_path}/config.yml")
end
require_files(files, log = true) click to toggle source
# File lib/brpm_auto.rb, line 202
def require_files(files, log = true)
  failed_files = []
  error_messages = []
  files.each do |file|
    if File.file?(file)
      begin
        require file
      rescue NameError => ne # when we require a set of files with inter-dependencies, the order is important, therefore we will retry the failed files later
        failed_files << file
        error_messages << ne
      end
    end
  end
  if failed_files.count > 0
    if failed_files.count == files.count
      raise NameError, "Following files failed loading: #{failed_files.join(", ")}\nError messages: #{error_messages.join(", ")}"
    else
      require_files(failed_files, log)
    end
  end
end
require_libs(module_path, log = true) click to toggle source
# File lib/brpm_auto.rb, line 193
def require_libs(module_path, log = true)
  lib_path = "#{module_path}/lib/**/*.rb"

  log_message = "Loading all files from #{lib_path}..."
  log ? (BrpmAuto.log log_message) : (print "#{Time.now.strftime("%Y-%m-%d %H:%M:%S")}|#{log_message}\n")

  require_files(Dir[lib_path], log)
end
require_libs_no_file_logging(module_path) click to toggle source
# File lib/brpm_auto.rb, line 189
def require_libs_no_file_logging(module_path)
  require_libs(module_path, false)
end