Project

General

Profile

Download (3.25 KB) Statistics
| Branch: | Tag: | Revision:

foreman-docker / lib / foreman_docker / engine.rb @ 387babdd

1
require 'fast_gettext'
2
require 'gettext_i18n_rails'
3
require 'fog'
4
require 'fog/fogdocker'
5
require 'wicked'
6
require 'docker'
7

    
8
module ForemanDocker
9
  # Inherit from the Rails module of the parent app (Foreman), not the plugin.
10
  # Thus, inherits from ::Rails::Engine and not from Rails::Engine
11
  class Engine < ::Rails::Engine
12
    initializer 'foreman_docker.load_app_instance_data' do |app|
13
      app.config.paths['db/migrate'] += ForemanDocker::Engine.paths['db/migrate'].existent
14
    end
15

    
16
    initializer "foreman_docker.assets.precompile" do |app|
17
      app.config.assets.precompile += %w(foreman_docker/terminal.css foreman_docker/image_step.js)
18
    end
19

    
20
    initializer 'foreman_docker.configure_assets', :group => :assets do
21
      SETTINGS[:foreman_docker_engine] =
22
        { :assets => { :precompile => ['foreman_docker/terminal.css',
23
                                       'foreman_docker/image_step.js'] } }
24
    end
25

    
26
    initializer 'foreman_docker.register_gettext', :after => :load_config_initializers do
27
      locale_dir = File.join(File.expand_path('../../..', __FILE__), 'locale')
28
      locale_domain = 'foreman_docker'
29

    
30
      Foreman::Gettext::Support.add_text_domain locale_domain, locale_dir
31
    end
32

    
33
    initializer 'foreman_docker.register_plugin', :after => :finisher_hook do
34
      Foreman::Plugin.register :foreman_docker do
35
        requires_foreman '> 1.4'
36
        compute_resource ForemanDocker::Docker
37

    
38
        sub_menu :top_menu, :containers_menu, :caption => N_('Containers'),
39
                                              :after => :monitor_menu do
40
          menu :top_menu, :containers,    :caption => N_('All containers'),
41
                                          :url_hash => { :controller => :containers,
42
                                                         :action => :index }
43
          menu :top_menu, :new_container, :caption => N_('New container'),
44
                                          :url_hash => { :controller => :containers,
45
                                                         :action => :new }
46
        end
47

    
48
        security_block :containers do
49
          permission :view_containers,    :containers         => [:index, :show,
50
                                                                  :auto_complete_image,
51
                                                                  :auto_complete_image_tags]
52
          permission :commit_containers,  :containers         => [:commit]
53
          permission :create_containers,  :'containers/steps' => [:show, :update],
54
                                          :containers         => [:new]
55
          permission :destroy_containers, :containers         => [:destroy]
56
        end
57
      end
58

    
59
    end
60

    
61
    rake_tasks do
62
      load "#{ForemanDocker::Engine.root}/lib/foreman_docker/tasks/test.rake"
63
    end
64
  end
65

    
66
  # extend fog docker server and image models.
67
  require 'fog/fogdocker/models/compute/server'
68
  require 'fog/fogdocker/models/compute/image'
69
  require File.expand_path('../../../app/models/concerns/fog_extensions/fogdocker/server', __FILE__)
70
  require File.expand_path('../../../app/models/concerns/fog_extensions/fogdocker/image', __FILE__)
71
  Fog::Compute::Fogdocker::Server.send(:include, ::FogExtensions::Fogdocker::Server)
72
  Fog::Compute::Fogdocker::Image.send(:include, ::FogExtensions::Fogdocker::Image)
73
end