foreman_docker 1.2.3 → 1.2.4
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/app/controllers/api/v2/containers_controller.rb +29 -16
- data/app/models/container.rb +2 -0
- data/app/models/docker_container_wizard_state.rb +0 -1
- data/db/migrate/20150303175646_remove_katello_flag_from_containers.rb +9 -0
- data/lib/foreman_docker/version.rb +1 -1
- data/test/functionals/api/v2/containers_controller_test.rb +57 -2
- metadata +16 -16
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 535366638d0c74fc0d0902bf69a124ef157d4baf
|
4
|
+
data.tar.gz: f4f6b1a8d0d816e58b2123ab7c93a44867b6172a
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 2d3ff95541102881f8a73b04d185a2715caf0f28e30d8e5cb2bfa592fa6916abfecb8b58184d70a286ca70d663713bafeb5c4737415d5acab79745bf507bfb29
|
7
|
+
data.tar.gz: d3f63fa79b9b614a44f6f44f45910b6a3ece99aa47524265984991f135b10075162fb2dec22c58ca47270d80ccd3cc397dbc39b4f487eeb9eb92f4525b7dd246
|
@@ -14,14 +14,16 @@ module Api
|
|
14
14
|
api :GET, '/compute_resources/:compute_resource_id/containers/',
|
15
15
|
N_('List all containers in a compute resource')
|
16
16
|
param :compute_resource_id, :identifier
|
17
|
-
param_group :
|
17
|
+
param_group :search_and_pagination, ::Api::V2::BaseController
|
18
18
|
|
19
19
|
def index
|
20
20
|
if params[:compute_resource_id].present?
|
21
|
-
|
21
|
+
scoped = Container.where(:compute_resource_id => params[:compute_resource_id])
|
22
22
|
else
|
23
|
-
|
23
|
+
scoped = Container.scoped
|
24
24
|
end
|
25
|
+
@containers = scoped.search_for(params[:search], :order => params[:order])
|
26
|
+
.paginate(:page => params[:page])
|
25
27
|
end
|
26
28
|
|
27
29
|
api :GET, '/containers/:id/', N_('Show a container')
|
@@ -38,13 +40,16 @@ module Api
|
|
38
40
|
param :name, String, :required => true
|
39
41
|
param_group :taxonomies, ::Api::V2::BaseController
|
40
42
|
param :compute_resource_id, :identifier, :required => true
|
41
|
-
param :registry_id, :identifier, :desc => N_('Registry this container will have to
|
42
|
-
to get the image')
|
43
|
-
param :
|
44
|
-
|
43
|
+
param :registry_id, :identifier, :desc => N_('Registry this container will have to
|
44
|
+
use to get the image')
|
45
|
+
param :repository_name, String, :required => true,
|
46
|
+
:desc => N_('Name of the repository to use
|
47
|
+
to create the container. e.g: centos')
|
48
|
+
param :tag, String, :required => true,
|
49
|
+
:desc => N_('Tag to use to create the container. e.g: latest')
|
45
50
|
param :tty, :bool
|
46
51
|
param :entrypoint, String
|
47
|
-
param :
|
52
|
+
param :command, String, :required => true
|
48
53
|
param :memory, String
|
49
54
|
param :cpu_shares, :number
|
50
55
|
param :cpu_sets, String
|
@@ -52,7 +57,9 @@ module Api
|
|
52
57
|
param :attach_stdout, :bool
|
53
58
|
param :attach_stdin, :bool
|
54
59
|
param :attach_stderr, :bool
|
55
|
-
param :
|
60
|
+
param :capsule_id, :identifier, :desc => N_('The capsule this container will have to use
|
61
|
+
to get the image. Relevant for images
|
62
|
+
retrieved from katello registry.')
|
56
63
|
end
|
57
64
|
end
|
58
65
|
|
@@ -123,14 +130,20 @@ module Api
|
|
123
130
|
|
124
131
|
private
|
125
132
|
|
126
|
-
def
|
127
|
-
|
128
|
-
|
129
|
-
|
130
|
-
|
131
|
-
|
132
|
-
|
133
|
+
def wizard_properties
|
134
|
+
wizard_props = { :preliminary => [:compute_resource_id],
|
135
|
+
:image => [:registry_id, :repository_name, :tag],
|
136
|
+
:configuration => [:name, :command, :entrypoint, :cpu_set,
|
137
|
+
:cpu_shares, :memory],
|
138
|
+
:environment => [:tty, :attach_stdin, :attach_stdout,
|
139
|
+
:attach_stderr] }
|
140
|
+
if DockerContainerWizardStates::Image.attribute_names.include?("capsule_id")
|
141
|
+
wizard_props[:image] << :capsule_id
|
142
|
+
end
|
143
|
+
wizard_props
|
144
|
+
end
|
133
145
|
|
146
|
+
def set_wizard_state
|
134
147
|
wizard_state = DockerContainerWizardState.create
|
135
148
|
wizard_properties.each do |step, properties|
|
136
149
|
property_values = properties.each_with_object({}) do |property, values|
|
data/app/models/container.rb
CHANGED
@@ -11,6 +11,8 @@ class Container < ActiveRecord::Base
|
|
11
11
|
accepts_nested_attributes_for :environment_variables, :allow_destroy => true
|
12
12
|
include ForemanDocker::ParameterValidators
|
13
13
|
|
14
|
+
scoped_search :on => :name
|
15
|
+
|
14
16
|
attr_accessible :command, :repository_name, :name, :compute_resource_id, :entrypoint,
|
15
17
|
:cpu_set, :cpu_shares, :memory, :tty, :attach_stdin, :registry_id,
|
16
18
|
:attach_stdout, :attach_stderr, :tag, :uuid, :environment_variables_attributes,
|
@@ -15,7 +15,6 @@ class DockerContainerWizardState < ActiveRecord::Base
|
|
15
15
|
{ :repository_name => image.repository_name,
|
16
16
|
:tag => image.tag,
|
17
17
|
:registry_id => image.registry_id,
|
18
|
-
:katello => image.katello?,
|
19
18
|
:name => configuration.name,
|
20
19
|
:compute_resource_id => preliminary.compute_resource_id,
|
21
20
|
:tty => environment.tty,
|
@@ -9,9 +9,20 @@ module Api
|
|
9
9
|
assert_template 'index'
|
10
10
|
end
|
11
11
|
|
12
|
+
test 'index can be filtered by name' do
|
13
|
+
%w(thomas clayton wolfe).each do |name|
|
14
|
+
FactoryGirl.create(:container, :name => name)
|
15
|
+
end
|
16
|
+
get :index, { :search => 'name = thomas' }, set_session_user
|
17
|
+
assert_response :success
|
18
|
+
assert_equal 1, assigns(:containers).length
|
19
|
+
end
|
20
|
+
|
12
21
|
context 'container operations' do
|
13
22
|
setup do
|
14
23
|
@container = FactoryGirl.create(:container, :name => 'foo')
|
24
|
+
@registry = FactoryGirl.create(:docker_registry)
|
25
|
+
@compute_resource = FactoryGirl.create(:docker_cr)
|
15
26
|
end
|
16
27
|
|
17
28
|
test 'logs returns latest lines of container log' do
|
@@ -59,9 +70,53 @@ module Api
|
|
59
70
|
end
|
60
71
|
|
61
72
|
test 'creates a container with correct params' do
|
73
|
+
repository_name = "centos"
|
74
|
+
tag = "7"
|
75
|
+
name = "foo"
|
76
|
+
registry_uri = URI.parse(@registry.url)
|
62
77
|
Service::Containers.any_instance.expects(:pull_image).returns(true)
|
63
|
-
Service::Containers.any_instance
|
64
|
-
|
78
|
+
Service::Containers.any_instance
|
79
|
+
.expects(:start_container).returns(true).with do |container|
|
80
|
+
container.must_be_kind_of(Container)
|
81
|
+
container.repository_name.must_equal(repository_name)
|
82
|
+
container.tag.must_equal(tag)
|
83
|
+
container.compute_resource_id.must_equal(@compute_resource.id)
|
84
|
+
container.name.must_equal(name)
|
85
|
+
container.repository_pull_url.must_include(registry_uri.host)
|
86
|
+
container.repository_pull_url.must_include("#{repository_name}:#{tag}")
|
87
|
+
end
|
88
|
+
post :create, :container => { :compute_resource_id => @compute_resource.id,
|
89
|
+
:name => name,
|
90
|
+
:registry_id => @registry.id,
|
91
|
+
:repository_name => repository_name,
|
92
|
+
:tag => tag }
|
93
|
+
assert_response :created
|
94
|
+
end
|
95
|
+
|
96
|
+
test 'creates a katello container with correct params' do
|
97
|
+
DockerContainerWizardStates::Image.class_eval do
|
98
|
+
attr_accessor :capsule_id
|
99
|
+
end
|
100
|
+
DockerContainerWizardStates::Image.attribute_names.stubs(:include?).returns(true)
|
101
|
+
repository_name = "katello_centos"
|
102
|
+
tag = "7"
|
103
|
+
name = "foo"
|
104
|
+
capsule_id = "10000"
|
105
|
+
Service::Containers.any_instance.expects(:start_container!)
|
106
|
+
.returns(@container).with do |wizard_state|
|
107
|
+
wizard_state.must_be_kind_of(DockerContainerWizardState)
|
108
|
+
container_attributes = wizard_state.container_attributes
|
109
|
+
container_attributes[:repository_name].must_equal(repository_name)
|
110
|
+
container_attributes[:tag].must_equal(tag)
|
111
|
+
container_attributes[:compute_resource_id].must_equal(@compute_resource.id)
|
112
|
+
container_attributes[:name].must_equal(name)
|
113
|
+
wizard_state.image.capsule_id.must_equal(capsule_id)
|
114
|
+
end
|
115
|
+
post :create, :container => { :compute_resource_id => @compute_resource.id,
|
116
|
+
:name => name,
|
117
|
+
:capsule_id => capsule_id,
|
118
|
+
:repository_name => repository_name,
|
119
|
+
:tag => tag }
|
65
120
|
assert_response :created
|
66
121
|
end
|
67
122
|
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: 1.2.
|
4
|
+
version: 1.2.4
|
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: 2015-03-
|
11
|
+
date: 2015-03-24 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: docker-api
|
@@ -28,14 +28,14 @@ dependencies:
|
|
28
28
|
name: wicked
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
|
-
- - ~>
|
31
|
+
- - "~>"
|
32
32
|
- !ruby/object:Gem::Version
|
33
33
|
version: '1.1'
|
34
34
|
type: :runtime
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
|
-
- - ~>
|
38
|
+
- - "~>"
|
39
39
|
- !ruby/object:Gem::Version
|
40
40
|
version: '1.1'
|
41
41
|
description: Provision and manage Docker containers and images from Foreman.
|
@@ -120,6 +120,7 @@ files:
|
|
120
120
|
- db/migrate/20141222113313_create_wizard_states.rb
|
121
121
|
- db/migrate/20150122011747_add_katello_flag_to_docker_wizard_image.rb
|
122
122
|
- db/migrate/20150129054944_add_katello_flag_to_containers.rb
|
123
|
+
- db/migrate/20150303175646_remove_katello_flag_from_containers.rb
|
123
124
|
- lib/foreman_docker.rb
|
124
125
|
- lib/foreman_docker/engine.rb
|
125
126
|
- lib/foreman_docker/tasks/test.rake
|
@@ -149,33 +150,32 @@ require_paths:
|
|
149
150
|
- lib
|
150
151
|
required_ruby_version: !ruby/object:Gem::Requirement
|
151
152
|
requirements:
|
152
|
-
- -
|
153
|
+
- - ">="
|
153
154
|
- !ruby/object:Gem::Version
|
154
155
|
version: '0'
|
155
156
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
156
157
|
requirements:
|
157
|
-
- -
|
158
|
+
- - ">="
|
158
159
|
- !ruby/object:Gem::Version
|
159
160
|
version: '0'
|
160
161
|
requirements: []
|
161
162
|
rubyforge_project:
|
162
|
-
rubygems_version: 2.4.
|
163
|
+
rubygems_version: 2.4.5
|
163
164
|
signing_key:
|
164
165
|
specification_version: 4
|
165
166
|
summary: Provision and manage Docker containers and images from Foreman
|
166
167
|
test_files:
|
167
|
-
- test/factories/compute_resources.rb
|
168
|
-
- test/factories/containers.rb
|
169
|
-
- test/factories/docker_registry.rb
|
170
|
-
- test/test_plugin_helper.rb
|
171
168
|
- test/functionals/api/v2/containers_controller_test.rb
|
172
|
-
- test/functionals/containers_controller_test.rb
|
173
169
|
- test/functionals/containers_steps_controller_test.rb
|
174
170
|
- test/functionals/image_search_controller_test.rb
|
175
|
-
- test/
|
176
|
-
- test/
|
171
|
+
- test/functionals/containers_controller_test.rb
|
172
|
+
- test/factories/docker_registry.rb
|
173
|
+
- test/factories/compute_resources.rb
|
174
|
+
- test/factories/containers.rb
|
177
175
|
- test/units/container_test.rb
|
178
|
-
- test/units/containers_service_test.rb
|
179
176
|
- test/units/docker_registry_test.rb
|
180
177
|
- test/units/registry_api_test.rb
|
181
|
-
|
178
|
+
- test/units/containers_service_test.rb
|
179
|
+
- test/test_plugin_helper.rb
|
180
|
+
- test/integration/container_steps_test.rb
|
181
|
+
- test/integration/container_test.rb
|