1 |
9c1fa5fb
|
Daniel Lobato
|
require 'fast_gettext'
|
2 |
|
|
require 'gettext_i18n_rails'
|
3 |
|
|
require 'fog'
|
4 |
|
|
require 'fog/fogdocker'
|
5 |
|
|
require 'wicked'
|
6 |
387babdd
|
Daniel Lobato
|
require 'docker'
|
7 |
d4e021f3
|
Amos Benari
|
|
8 |
|
|
module ForemanDocker
|
9 |
9c1fa5fb
|
Daniel Lobato
|
|
10 |
|
|
|
11 |
d4e021f3
|
Amos Benari
|
class Engine < ::Rails::Engine
|
12 |
916c5290
|
Dominic Cleal
|
engine_name 'foreman_docker'
|
13 |
|
|
|
14 |
e4e8739b
|
Daniel Lobato
|
config.autoload_paths += Dir["#{config.root}/app/controllers/concerns"]
|
15 |
5dc4f6d6
|
Daniel Lobato
|
config.autoload_paths += Dir["#{config.root}/app/models/concerns"]
|
16 |
|
|
|
17 |
9c1fa5fb
|
Daniel Lobato
|
initializer 'foreman_docker.load_app_instance_data' do |app|
|
18 |
fa9ff801
|
Daniel Lobato
|
app.config.paths['db/migrate'] += ForemanDocker::Engine.paths['db/migrate'].existent
|
19 |
|
|
end
|
20 |
d4e021f3
|
Amos Benari
|
|
21 |
751c6470
|
Daniel Lobato
|
initializer "foreman_docker.assets.precompile" do |app|
|
22 |
eb0c6d28
|
Daniel Lobato
|
app.config.assets.precompile += %w(foreman_docker/autocomplete.css
|
23 |
|
|
foreman_docker/terminal.css
|
24 |
|
|
foreman_docker/image_step.js)
|
25 |
751c6470
|
Daniel Lobato
|
end
|
26 |
|
|
|
27 |
|
|
initializer 'foreman_docker.configure_assets', :group => :assets do
|
28 |
916c5290
|
Dominic Cleal
|
SETTINGS[:foreman_docker] =
|
29 |
eb0c6d28
|
Daniel Lobato
|
{ :assets => { :precompile => ['foreman_docker/autocomplete.css',
|
30 |
|
|
'foreman_docker/terminal.css',
|
31 |
fe8bb25c
|
Dmitri Dolguikh
|
'foreman_docker/image_step.js'] } }
|
32 |
751c6470
|
Daniel Lobato
|
end
|
33 |
|
|
|
34 |
9c1fa5fb
|
Daniel Lobato
|
initializer 'foreman_docker.register_gettext', :after => :load_config_initializers do
|
35 |
|
|
locale_dir = File.join(File.expand_path('../../..', __FILE__), 'locale')
|
36 |
|
|
locale_domain = 'foreman_docker'
|
37 |
d4e021f3
|
Amos Benari
|
|
38 |
|
|
Foreman::Gettext::Support.add_text_domain locale_domain, locale_dir
|
39 |
|
|
end
|
40 |
|
|
|
41 |
9c1fa5fb
|
Daniel Lobato
|
initializer 'foreman_docker.register_plugin', :after => :finisher_hook do
|
42 |
d4e021f3
|
Amos Benari
|
Foreman::Plugin.register :foreman_docker do
|
43 |
9c1fa5fb
|
Daniel Lobato
|
requires_foreman '> 1.4'
|
44 |
29812b3a
|
Dominic Cleal
|
compute_resource ForemanDocker::Docker
|
45 |
fa9ff801
|
Daniel Lobato
|
|
46 |
dc3be9a0
|
David Davis
|
sub_menu :top_menu, :containers_menu, :caption => N_('Containers'),
|
47 |
|
|
:after => :monitor_menu do
|
48 |
9c1fa5fb
|
Daniel Lobato
|
menu :top_menu, :containers, :caption => N_('All containers'),
|
49 |
dc3be9a0
|
David Davis
|
:url_hash => { :controller => :containers,
|
50 |
|
|
:action => :index }
|
51 |
9c1fa5fb
|
Daniel Lobato
|
menu :top_menu, :new_container, :caption => N_('New container'),
|
52 |
dc3be9a0
|
David Davis
|
:url_hash => { :controller => :containers,
|
53 |
|
|
:action => :new }
|
54 |
ada932ab
|
Dmitri Dolguikh
|
menu :top_menu, :registries, :caption => N_('Registries'),
|
55 |
|
|
:url_hash => { :controller => :registries,
|
56 |
|
|
:action => :index }
|
57 |
fa9ff801
|
Daniel Lobato
|
end
|
58 |
221cfd7c
|
Daniel Lobato
|
|
59 |
|
|
security_block :containers do
|
60 |
5274f6bc
|
Daniel Lobato
|
permission :view_containers,
|
61 |
d0846a1a
|
Dmitri Dolguikh
|
{ :containers => [:index, :show],
|
62 |
|
|
:'api/v2/containers' => [:index, :show, :logs] },
|
63 |
|
|
:resource_type => 'Container'
|
64 |
|
|
permission :commit_containers, { :containers => [:commit] },
|
65 |
|
|
:resource_type => 'Container'
|
66 |
5274f6bc
|
Daniel Lobato
|
permission :create_containers,
|
67 |
d0846a1a
|
Dmitri Dolguikh
|
{ :'containers/steps' => [:show, :update],
|
68 |
|
|
:containers => [:new],
|
69 |
|
|
:'api/v2/containers' => [:create, :power] },
|
70 |
|
|
:resource_type => 'Container'
|
71 |
5274f6bc
|
Daniel Lobato
|
permission :destroy_containers,
|
72 |
d0846a1a
|
Dmitri Dolguikh
|
{ :containers => [:destroy],
|
73 |
|
|
:'api/v2/containers' => [:destroy] },
|
74 |
|
|
:resource_type => 'Container'
|
75 |
5274f6bc
|
Daniel Lobato
|
permission :power_compute_resources_vms,
|
76 |
d0846a1a
|
Dmitri Dolguikh
|
{ :containers => [:power],
|
77 |
|
|
:'api/v2/containers' => [:create, :power] },
|
78 |
|
|
:resource_type => 'ComputeResource'
|
79 |
221cfd7c
|
Daniel Lobato
|
end
|
80 |
ada932ab
|
Dmitri Dolguikh
|
|
81 |
|
|
security_block :registries do
|
82 |
d2e54db4
|
David Davis
|
permission :view_registries,
|
83 |
|
|
{ :registries => [:index, :show],
|
84 |
|
|
:'api/v2/registries' => [:index, :show] },
|
85 |
d0846a1a
|
Dmitri Dolguikh
|
:resource_type => 'DockerRegistry'
|
86 |
d2e54db4
|
David Davis
|
permission :create_registries,
|
87 |
|
|
{ :registries => [:new, :create, :update, :edit],
|
88 |
|
|
:'api/v2/registries' => [:create, :update] },
|
89 |
d0846a1a
|
Dmitri Dolguikh
|
:resource_type => 'DockerRegistry'
|
90 |
d2e54db4
|
David Davis
|
permission :destroy_registries,
|
91 |
|
|
{ :registries => [:destroy],
|
92 |
|
|
:'api/v2/registries' => [:destroy] },
|
93 |
d0846a1a
|
Dmitri Dolguikh
|
:resource_type => 'DockerRegistry'
|
94 |
ada932ab
|
Dmitri Dolguikh
|
end
|
95 |
6d101d7a
|
Dmitri Dolguikh
|
|
96 |
|
|
security_block :image_search do
|
97 |
|
|
permission :search_repository_image_search,
|
98 |
d0846a1a
|
Dmitri Dolguikh
|
{ :image_search => [:auto_complete_repository_name,
|
99 |
|
|
:auto_complete_image_tag,
|
100 |
|
|
:search_repository] },
|
101 |
|
|
:resource_type => 'Docker/ImageSearch'
|
102 |
6d101d7a
|
Dmitri Dolguikh
|
end
|
103 |
5274f6bc
|
Daniel Lobato
|
|
104 |
|
|
|
105 |
|
|
|
106 |
|
|
if SETTINGS[:version].to_s.include?('develop') ||
|
107 |
8a1d63a3
|
David Davis
|
Gem::Version.new(SETTINGS[:version].notag) >= Gem::Version.new('1.8')
|
108 |
5274f6bc
|
Daniel Lobato
|
apipie_documented_controllers [
|
109 |
|
|
"#{ForemanDocker::Engine.root}/app/controllers/api/v2/*.rb"]
|
110 |
|
|
end
|
111 |
|
|
end
|
112 |
|
|
end
|
113 |
|
|
|
114 |
|
|
initializer "foreman_docker.apipie" do
|
115 |
|
|
|
116 |
|
|
|
117 |
|
|
unless SETTINGS[:version].to_s.include?('develop') ||
|
118 |
8a1d63a3
|
David Davis
|
Gem::Version.new(SETTINGS[:version].notag) >= Gem::Version.new('1.8')
|
119 |
5274f6bc
|
Daniel Lobato
|
if Apipie.configuration.api_controllers_matcher.is_a?(Array)
|
120 |
|
|
Apipie.configuration.api_controllers_matcher <<
|
121 |
|
|
"#{ForemanDocker::Engine.root}/app/controllers/api/v2/*.rb"
|
122 |
|
|
end
|
123 |
d4e021f3
|
Amos Benari
|
end
|
124 |
|
|
end
|
125 |
466cd5ba
|
Daniel Lobato
|
|
126 |
|
|
rake_tasks do
|
127 |
|
|
load "#{ForemanDocker::Engine.root}/lib/foreman_docker/tasks/test.rake"
|
128 |
|
|
end
|
129 |
d4e021f3
|
Amos Benari
|
|
130 |
5d7016fd
|
Daniel Lobato
|
require 'fog/fogdocker/models/compute/server'
|
131 |
|
|
require 'fog/fogdocker/models/compute/image'
|
132 |
9f0918fc
|
Daniel Lobato
|
require 'fog/fogdocker/models/compute/images'
|
133 |
5d7016fd
|
Daniel Lobato
|
require File.expand_path('../../../app/models/concerns/fog_extensions/fogdocker/server',
|
134 |
|
|
__FILE__)
|
135 |
|
|
require File.expand_path('../../../app/models/concerns/fog_extensions/fogdocker/image',
|
136 |
|
|
__FILE__)
|
137 |
9f0918fc
|
Daniel Lobato
|
require File.expand_path('../../../app/models/concerns/fog_extensions/fogdocker/images',
|
138 |
|
|
__FILE__)
|
139 |
5d7016fd
|
Daniel Lobato
|
config.to_prepare do
|
140 |
|
|
Fog::Compute::Fogdocker::Server.send(:include, ::FogExtensions::Fogdocker::Server)
|
141 |
|
|
Fog::Compute::Fogdocker::Image.send(:include, ::FogExtensions::Fogdocker::Image)
|
142 |
9f0918fc
|
Daniel Lobato
|
|
143 |
|
|
Fog::Compute::Fogdocker::Images.send(:include, ::FogExtensions::Fogdocker::Images)
|
144 |
5d7016fd
|
Daniel Lobato
|
::Taxonomy.send(:include, ForemanDocker::TaxonomyExtensions)
|
145 |
|
|
end
|
146 |
|
|
end
|
147 |
29812b3a
|
Dominic Cleal
|
end |