foreman_docker 4.0.0 → 4.1.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: e552869e1ab0cfde41332e6ab9717d5f13415d70
4
- data.tar.gz: e00b20498e799f4b647ada00f7778b45b25bc230
3
+ metadata.gz: 742be737268d18e9406b2e44b41fe3f8a76add83
4
+ data.tar.gz: 020370eb15873e7527a2efd2d3577d48b84ad00d
5
5
  SHA512:
6
- metadata.gz: 6162d8977618e99eed69ff55308f00d1f1983288d5cadd801c6a3aeebb2f10aae1e48d1225568ea34d38bc4463dc0ab5efb58b35bf584a51a21b658cbd74bd99
7
- data.tar.gz: 6121f40a5b10d66b9aafee7a498ed16966c9db755a695eeb0b71eb4b97a63801d4e276944dea02b49bfe7fa93bcc3a06a9f8b1189a7960ff74ad6384315597ae
6
+ metadata.gz: 3ebeae9695d4cf06e6e22485c14252864a57416bfc8f4db3ffbb79f15359c1648a51fe7332a74f87e50a77e12a3092637562b693972ef84e786a7156ca17e9d3
7
+ data.tar.gz: 02b9638cbe1075186286781625210fd3112c41b593be3886843f895efbe93409dcfb7a029f66fae03a70d5bdbe3cb8b1775fd8780d6033b74c2f732eacbeeb64
data/README.md CHANGED
@@ -30,7 +30,7 @@
30
30
  ![](http://i.imgur.com/DPcaHkZ.png)
31
31
 
32
32
  ### Planned
33
- * [Kubernetes](https://github.com/GoogleCloudPlatform/kubernetes/) integration
33
+ * [Kubernetes](https://github.com/kubernetes/kubernetes/) integration
34
34
  * Events stream ([#8037](http://projects.theforeman.org/issues/8037))
35
35
  * Tight integration between Docker hosts [Atomic](http://www.projectatomic.io/) and [CoreOS](http://coreos.com/) and containers ([#7653](http://projects.theforeman.org/issues/7653), [#7652](http://projects.theforeman.org/issues/7652))
36
36
  * Quickstart images - pre-supplied images and configuration ([#7869](http://projects.theforeman.org/issues/7869))
@@ -29,7 +29,7 @@ class ContainersController < ::ApplicationController
29
29
  if @container.present?
30
30
  process_error(:redirect => containers_path)
31
31
  else
32
- redirect_to :back
32
+ redirect_back(:fallback_location => containers_path)
33
33
  end
34
34
  end
35
35
  rescue ActiveRecord::RecordNotFound
@@ -67,12 +67,12 @@ class ContainersController < ::ApplicationController
67
67
  redirect_to containers_path(:id => @container.id)
68
68
  else
69
69
  error _("failed to %{action} %{vm}") % { :action => _(action), :vm => @docker_container }
70
- redirect_to :back
70
+ redirect_back(:fallback_location => containers_path)
71
71
  end
72
72
  # This should only rescue Fog::Errors, but Fog returns all kinds of errors...
73
73
  rescue => e
74
74
  error _("Error - %{message}") % { :message => _(e.message) }
75
- redirect_to :back
75
+ redirect_back(:fallback_location => containers_path)
76
76
  end
77
77
 
78
78
  private
@@ -16,13 +16,13 @@ module ForemanDocker
16
16
  errors = duplicate_key?(keys, param)
17
17
  end
18
18
 
19
- self.errors[param_symbol] = _('Please ensure the following parameters are unique') if errors
19
+ self.errors.add(param_symbol, _('Please ensure the following parameters are unique')) if errors
20
20
  end
21
21
  end
22
22
 
23
23
  def duplicate_key?(keys, param)
24
24
  if keys.include?(param.key)
25
- param.errors[:key] = _('has already been taken')
25
+ param.errors.add(:key, _('has already been taken'))
26
26
  return true
27
27
  else
28
28
  keys << param.key
@@ -3,7 +3,7 @@ class Container < ApplicationRecord
3
3
  include Taxonomix
4
4
 
5
5
  belongs_to :compute_resource
6
- belongs_to :registry, :class_name => "DockerRegistry", :foreign_key => :registry_id
6
+ belongs_to :registry, :class_name => 'DockerRegistry', :foreign_key => :registry_id
7
7
  has_many :environment_variables, :dependent => :destroy, :foreign_key => :reference_id,
8
8
  :inverse_of => :container,
9
9
  :class_name => 'EnvironmentVariable'
@@ -1,11 +1,11 @@
1
1
  class DockerContainerWizardState < ApplicationRecord
2
- has_one :preliminary, :class_name => DockerContainerWizardStates::Preliminary,
2
+ has_one :preliminary, :class_name => 'DockerContainerWizardStates::Preliminary',
3
3
  :dependent => :destroy, :validate => true, :autosave => true
4
- has_one :image, :class_name => DockerContainerWizardStates::Image,
4
+ has_one :image, :class_name => 'DockerContainerWizardStates::Image',
5
5
  :dependent => :destroy, :validate => true, :autosave => true
6
- has_one :configuration, :class_name => DockerContainerWizardStates::Configuration,
6
+ has_one :configuration, :class_name => 'DockerContainerWizardStates::Configuration',
7
7
  :dependent => :destroy, :validate => true, :autosave => true
8
- has_one :environment, :class_name => DockerContainerWizardStates::Environment,
8
+ has_one :environment, :class_name => 'DockerContainerWizardStates::Environment',
9
9
  :dependent => :destroy, :validate => true, :autosave => true
10
10
 
11
11
  delegate :compute_resource_id, :to => :preliminary
@@ -1,7 +1,7 @@
1
1
  module DockerContainerWizardStates
2
2
  class Configuration < ApplicationRecord
3
3
  self.table_name_prefix = 'docker_container_wizard_states_'
4
- belongs_to :wizard_state, :class_name => DockerContainerWizardState,
4
+ belongs_to :wizard_state, :class_name => 'DockerContainerWizardState',
5
5
  :foreign_key => :docker_container_wizard_state_id
6
6
  end
7
7
  end
@@ -1,7 +1,7 @@
1
1
  module DockerContainerWizardStates
2
2
  class Environment < ApplicationRecord
3
3
  self.table_name_prefix = 'docker_container_wizard_states_'
4
- belongs_to :wizard_state, :class_name => DockerContainerWizardState
4
+ belongs_to :wizard_state, :class_name => 'DockerContainerWizardState'
5
5
 
6
6
  has_many :environment_variables, :dependent => :destroy, :foreign_key => :reference_id,
7
7
  :inverse_of => :environment,
@@ -1,7 +1,7 @@
1
1
  module DockerContainerWizardStates
2
2
  class Image < ApplicationRecord
3
3
  self.table_name_prefix = 'docker_container_wizard_states_'
4
- belongs_to :wizard_state, :class_name => DockerContainerWizardState,
4
+ belongs_to :wizard_state, :class_name => 'DockerContainerWizardState',
5
5
  :foreign_key => :docker_container_wizard_state_id
6
6
  delegate :compute_resource_id, :to => :wizard_state
7
7
  delegate :compute_resource, :to => :wizard_state
@@ -3,7 +3,7 @@ module DockerContainerWizardStates
3
3
  include Taxonomix
4
4
 
5
5
  self.table_name_prefix = 'docker_container_wizard_states_'
6
- belongs_to :wizard_state, :class_name => DockerContainerWizardState,
6
+ belongs_to :wizard_state, :class_name => 'DockerContainerWizardState',
7
7
  :foreign_key => :docker_container_wizard_state_id
8
8
 
9
9
  belongs_to :compute_resource, :required => true
@@ -74,7 +74,7 @@ module Service
74
74
 
75
75
  def destroy_wizard_state(wizard_state)
76
76
  wizard_state.destroy
77
- DockerContainerWizardState.destroy_all(["updated_at < ?", (Time.now.utc - 24.hours)])
77
+ DockerContainerWizardState.where(["updated_at < ?", (Time.now.utc - 24.hours)]).destroy_all
78
78
  end
79
79
 
80
80
  def load_environment_variables(state, r)
@@ -0,0 +1,13 @@
1
+ class RemoveDockerSearchPermission < ActiveRecord::Migration[4.2]
2
+ def up
3
+ Permission.where(
4
+ :name => "search_repository_image_search",
5
+ :resource_type => 'Docker/ImageSearch').destroy_all
6
+ end
7
+
8
+ def down
9
+ Permission.where(
10
+ :name => "search_repository_image_search",
11
+ :resource_type => 'DockerRegistry').destroy_all
12
+ end
13
+ end
@@ -102,7 +102,7 @@ module ForemanDocker
102
102
  { :image_search => [:auto_complete_repository_name,
103
103
  :auto_complete_image_tag,
104
104
  :search_repository] },
105
- :resource_type => 'Docker/ImageSearch'
105
+ :resource_type => 'DockerRegistry'
106
106
  end
107
107
 
108
108
  add_all_permissions_to_default_roles
@@ -1,3 +1,3 @@
1
1
  module ForemanDocker
2
- VERSION = '4.0.0'
2
+ VERSION = '4.1.0'
3
3
  end
@@ -40,10 +40,10 @@ class ContainersControllerTest < ActionController::TestCase
40
40
  test 'failed deletion of unmanaged container in Docker' do
41
41
  ComputeResource.any_instance.stubs(:destroy_vm).
42
42
  raises(::Foreman::Exception.new('Could not destroy Docker container'))
43
- @request.env['HTTP_REFERER'] = "http://test.host/#{containers_path}"
43
+ @request.env['HTTP_REFERER'] = "http://test.host#{containers_path}"
44
44
  delete :destroy, params: { :compute_resource_id => @container_resource, :id => @container.id }, session: set_session_user
45
45
  assert @container.present?
46
- assert_redirected_to :back
46
+ assert_redirected_to containers_path
47
47
  assert_equal 'Your container could not be deleted in Docker',
48
48
  flash[:error]
49
49
  end
@@ -12,12 +12,13 @@ class ImageSearchControllerTest < ActionController::TestCase
12
12
 
13
13
  setup do
14
14
  Service::RegistryApi.stubs(:docker_hub).returns(docker_hub)
15
- ComputeResource::ActiveRecord_Relation.any_instance
15
+ ComputeResource.const_get(:ActiveRecord_Relation).any_instance
16
16
  .stubs(:find).returns(compute_resource)
17
- DockerRegistry::ActiveRecord_Relation.any_instance
17
+ DockerRegistry.const_get(:ActiveRecord_Relation).any_instance
18
18
  .stubs(:find).returns(registry)
19
19
  end
20
20
 
21
+ # rubocop:disable Metrics/BlockLength
21
22
  describe '#search_repository' do
22
23
  let(:search_types) { ['hub', 'registry'] }
23
24
 
@@ -30,17 +31,22 @@ class ImageSearchControllerTest < ActionController::TestCase
30
31
  tags_enabled = ['true', 'false'].sample
31
32
  image_search_service.expects(:search).with({ term: term, tags: tags_enabled })
32
33
  .returns([])
33
- xhr :get, :search_repository,
34
- { registry: search_types.sample, search: term, tags: tags_enabled,
35
- id: compute_resource }, set_session_user
34
+ get :search_repository,
35
+ params: { registry: search_types.sample, search: term, tags: tags_enabled,
36
+ id: compute_resource },
37
+ session: set_session_user,
38
+ xhr: true
36
39
  end
37
40
 
38
41
  test 'returns an array of { label:, value: } hashes' do
39
42
  image_search_service.expects(:search).with({ term: term, tags: 'true' })
40
43
  .returns(tags)
41
- xhr :get, :search_repository,
42
- { registry: search_types.sample, search: term, tags: 'true',
43
- id: compute_resource }, set_session_user
44
+ get :search_repository,
45
+ params: { registry: search_types.sample, search: term, tags: 'true',
46
+ id: compute_resource },
47
+ session: set_session_user,
48
+ xhr: true
49
+
44
50
  assert_equal tags.first, JSON.parse(response.body).first['value']
45
51
  end
46
52
 
@@ -48,9 +54,11 @@ class ImageSearchControllerTest < ActionController::TestCase
48
54
  image_search_service.expects(:search)
49
55
  .with({ term: term, tags: 'false' })
50
56
  .returns([{ 'name' => term }])
51
- xhr :get, :search_repository,
57
+ get :search_repository, params:
52
58
  { registry: search_types.sample, search: term,
53
- id: compute_resource, format: :html}, set_session_user
59
+ id: compute_resource, format: :html },
60
+ session: set_session_user, xhr: true
61
+
54
62
  assert response.body.include?(term)
55
63
  end
56
64
 
@@ -58,8 +66,9 @@ class ImageSearchControllerTest < ActionController::TestCase
58
66
  test "search_repository catch exceptions on network errors like #{error}" do
59
67
  image_search_service.expects(:search)
60
68
  .raises(error)
61
- xhr :get, :search_repository,
62
- { registry: search_types.sample, search: term, id: compute_resource }, set_session_user
69
+ get :search_repository,
70
+ params: { registry: search_types.sample, search: term, id: compute_resource },
71
+ session: set_session_user, xhr: true
63
72
 
64
73
  assert_response :error
65
74
  assert response.body.include?('An error occured during repository search:')
@@ -76,8 +85,11 @@ class ImageSearchControllerTest < ActionController::TestCase
76
85
  "star_count" => 0
77
86
  }]
78
87
  image_search_service.expects(:search).returns(expected)
79
- xhr :get, :search_repository,
80
- { registry: search_types.sample, search: 'centos', id: compute_resource, format: :html }, set_session_user
88
+ get :search_repository,
89
+ params: { registry: search_types.sample, search: 'centos', id: compute_resource, format: :html },
90
+ session: set_session_user,
91
+ xhr: true
92
+
81
93
  assert_response :success
82
94
  refute response.body.include?(repo_full_name)
83
95
  assert response.body.include?(repository)
@@ -94,8 +106,11 @@ class ImageSearchControllerTest < ActionController::TestCase
94
106
  "star_count" => 0
95
107
  }]
96
108
  image_search_service.expects(:search).returns(expected)
97
- xhr :get, :search_repository,
98
- { registry: search_types.sample, search: term, id: compute_resource, format: :html }, set_session_user
109
+ get :search_repository,
110
+ params: { registry: search_types.sample, search: term, id: compute_resource, format: :html },
111
+ session: set_session_user,
112
+ xhr: true
113
+
99
114
  assert_response :success
100
115
  assert response.body.include?(repo_full_name)
101
116
  assert response.body.include?(repository)
@@ -111,9 +126,11 @@ class ImageSearchControllerTest < ActionController::TestCase
111
126
  .returns([OpenStruct.new(info: { 'RepoTags' => [term] })])
112
127
  docker_hub.expects(:search).returns({})
113
128
 
114
- xhr :get, :search_repository,
115
- { registry: search_type, search: term,
116
- id: compute_resource }, set_session_user
129
+ get :search_repository,
130
+ params: { registry: search_type, search: term,
131
+ id: compute_resource },
132
+ session: set_session_user,
133
+ xhr: true
117
134
  end
118
135
  end
119
136
 
@@ -126,9 +143,11 @@ class ImageSearchControllerTest < ActionController::TestCase
126
143
  registry.api.expects(:search).with(docker_image)
127
144
  .returns({})
128
145
 
129
- xhr :get, :search_repository,
130
- { registry: search_type, registry_id: registry,
131
- search: term, id: compute_resource }, set_session_user
146
+ get :search_repository,
147
+ params: { registry: search_type, registry_id: registry,
148
+ search: term, id: compute_resource },
149
+ session: set_session_user,
150
+ xhr: true
132
151
  end
133
152
  end
134
153
  end
@@ -147,9 +166,11 @@ class ImageSearchControllerTest < ActionController::TestCase
147
166
  .returns(tags)
148
167
  docker_hub.expects(:tags).returns([])
149
168
 
150
- xhr :get, :search_repository,
151
- { registry: search_type, search: term, tags: 'true',
152
- id: compute_resource }, set_session_user
169
+ get :search_repository,
170
+ params: { registry: search_type, search: term,
171
+ tags: 'true', id: compute_resource },
172
+ session: set_session_user,
173
+ xhr: true
153
174
  end
154
175
  end
155
176
 
@@ -162,9 +183,11 @@ class ImageSearchControllerTest < ActionController::TestCase
162
183
  registry.api.expects(:tags).with(docker_image, tag_fragment)
163
184
  .returns([])
164
185
 
165
- xhr :get, :search_repository,
166
- { registry: search_type, registry_id: registry, tags: 'true',
167
- search: term, id: compute_resource }, set_session_user
186
+ get :search_repository,
187
+ params: { registry: search_type, registry_id: registry, tags: 'true',
188
+ search: term, id: compute_resource },
189
+ session: set_session_user,
190
+ xhr: true
168
191
  end
169
192
  end
170
193
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: foreman_docker
3
3
  version: !ruby/object:Gem::Version
4
- version: 4.0.0
4
+ version: 4.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Daniel Lobato, Amos Benari
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-12-21 00:00:00.000000000 Z
11
+ date: 2018-04-16 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: docker-api
@@ -191,6 +191,7 @@ files:
191
191
  - db/migrate/20160605133025_create_docker_parameters.rb
192
192
  - db/migrate/20160605134652_move_parameters_to_docker_parameters.rb
193
193
  - db/migrate/20170508130316_add_verify_ssl_option_to_docker_registries.rb
194
+ - db/migrate/20180105090316_remove_docker_search_permission.rb
194
195
  - lib/foreman_docker.rb
195
196
  - lib/foreman_docker/engine.rb
196
197
  - lib/foreman_docker/version.rb
@@ -270,9 +271,9 @@ test_files:
270
271
  - test/factories/docker_registry.rb
271
272
  - test/functionals/api/v2/containers_controller_test.rb
272
273
  - test/functionals/api/v2/registries_controller_test.rb
273
- - test/functionals/image_search_controller_test.rb
274
- - test/functionals/containers_controller_test.rb
275
274
  - test/functionals/containers_steps_controller_test.rb
275
+ - test/functionals/containers_controller_test.rb
276
+ - test/functionals/image_search_controller_test.rb
276
277
  - test/integration/container_test.rb
277
278
  - test/integration/container_steps_test.rb
278
279
  - test/integration/registry_creation_test.rb