theforeman/foreman_azure

View on GitHub
lib/foreman_azure/engine.rb

Summary

Maintainability
A
0 mins
Test Coverage
require 'deface'

module ForemanAzure
  class Engine < ::Rails::Engine
    engine_name 'foreman_azure'

    initializer 'foreman_azure.register_plugin', :before => :finisher_hook do
      Foreman::Plugin.register :foreman_azure do
        requires_foreman '>= 1.11'
        compute_resource(Azure)
        foreman_version = ::Foreman::Version.new
        if foreman_version.major.to_i == 1 && foreman_version.minor.to_i >= 13
          parameter_filter(ComputeResource, :subscription_id, :certificate_path)
        end
      end
    end

    initializer 'foreman_azure.register_gettext', after: :load_config_initializers do
      locale_dir = File.join(File.expand_path('../../..', __FILE__), 'locale')
      locale_domain = 'foreman_azure'
      Foreman::Gettext::Support.add_text_domain locale_domain, locale_dir
    end

    initializer 'foreman_azure.assets.precompile' do |app|
      app.config.assets.precompile += %w(foreman_azure/host_os_azure_selected.js)
    end

    initializer 'foreman_azure.configure_assets', :group => :assets do
      SETTINGS[:foreman_azure] =
        { :assets => { :precompile => ['foreman_azure/host_os_azure_selected.js'] } }
    end

    initializer 'foreman_azure.load_app_instance_data' do |app|
      ForemanAzure::Engine.paths['db/migrate'].existent.each do |path|
        app.config.paths['db/migrate'] << path
      end
    end

    config.to_prepare do
      require 'fog/azure'
      require 'fog/azure/models/compute/servers'
      require File.expand_path(
        '../../../app/models/concerns/fog_extensions/azure/servers', __FILE__)
      Fog::Compute::Azure::Servers.send(:include, FogExtensions::Azure::Servers)
      require 'fog/azure/models/compute/image'
      require File.expand_path(
        '../../../app/models/concerns/fog_extensions/azure/image', __FILE__)
      Fog::Compute::Azure::Image.send(:include, FogExtensions::Azure::Image)
      require 'fog/azure/models/compute/server'
      require File.expand_path(
        '../../../app/models/concerns/fog_extensions/azure/server', __FILE__)
      Fog::Compute::Azure::Server.send(:include, FogExtensions::Azure::Server)
      require 'fog/azure/compute'
      require File.expand_path(
        '../../../app/models/concerns/fog_extensions/azure/compute', __FILE__)
      Fog::Compute::Azure::Real.send(:include, FogExtensions::Azure::Compute)

      ::HostsController.send :include,
        ForemanAzure::Concerns::HostsControllerExtensions
      ::Host::Managed.send :include,
        ForemanAzure::Concerns::SSHProvisionExtensions
    end
  end
end