crowbar/crowbar-core

View on GitHub
crowbar_framework/lib/crowbar/upgrade_timeouts.rb

Summary

Maintainability
A
1 hr
Test Coverage
require "yaml"

module Crowbar
  class UpgradeTimeouts
    def values
      @timeouts_config = begin
        YAML.load_file("/etc/crowbar/upgrade_timeouts.yml")
      rescue
        Rails.logger.debug(
          "No user provided upgrade timeouts, proceeding with the default ones."
        )
        {}
      end

      # clean up yaml config in case of there being strings
      @timeouts_config.each do |k, v|
        next if v.is_a? Integer
        Rails.logger.error(
          "Removing user configured upgrade timeout #{k} as the value provided is not an integer."
        )
        @timeouts_config.delete(k)
      end

      {
        prepare_repositories: @timeouts_config[:prepare_repositories] || 120,
        pre_upgrade: @timeouts_config[:pre_upgrade] || 300,
        upgrade_os: @timeouts_config[:upgrade_os] || 1500,
        post_upgrade: @timeouts_config[:post_upgrade] || 600,
        shutdown_services: @timeouts_config[:shutdown_services] || 600,
        shutdown_remaining_services: @timeouts_config[:shutdown_remaining_services] || 600,
        evacuate_host: @timeouts_config[:evacuate_host] || 300,
        chef_upgraded: @timeouts_config[:chef_upgraded] || 1200,
        dhcp_migration: @timeouts_config[:dhcp_migration] || 1200,
        router_migration: @timeouts_config[:router_migration] || 600,
        lbaas_evacuation: @timeouts_config[:lbaas_evacuation] || 600,
        set_network_agents_state: @timeouts_config[:set_network_agents_state] || 300,
        delete_pacemaker_resources: @timeouts_config[:delete_pacemaker_resources] || 600,
        delete_cinder_services: @timeouts_config[:delete_cinder_services] || 300,
        delete_nova_services: @timeouts_config[:delete_nova_services] || 300,
        wait_until_compute_started: @timeouts_config[:wait_until_compute_started] || 60,
        reload_nova_services: @timeouts_config[:reload_nova_services] || 120,
        stop_nova_services: @timeouts_config[:stop_nova_services] || 120,
        online_migrations: @timeouts_config[:online_migrations] || 1800
      }
    end
  end
end