runcible 1.2.0 → 1.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/Gemfile +2 -1
- data/README.md +1 -1
- data/Rakefile +16 -10
- data/lib/runcible.rb +1 -1
- data/lib/runcible/base.rb +24 -29
- data/lib/runcible/extensions/consumer.rb +25 -26
- data/lib/runcible/extensions/consumer_group.rb +10 -13
- data/lib/runcible/extensions/distribution.rb +0 -2
- data/lib/runcible/extensions/docker_image.rb +0 -1
- data/lib/runcible/extensions/errata.rb +0 -3
- data/lib/runcible/extensions/package_category.rb +0 -3
- data/lib/runcible/extensions/package_group.rb +0 -2
- data/lib/runcible/extensions/puppet_module.rb +0 -3
- data/lib/runcible/extensions/repository.rb +88 -72
- data/lib/runcible/extensions/rpm.rb +3 -5
- data/lib/runcible/extensions/unit.rb +10 -13
- data/lib/runcible/extensions/yum_repo_metadata_file.rb +0 -3
- data/lib/runcible/instance.rb +22 -28
- data/lib/runcible/models/distributor.rb +4 -5
- data/lib/runcible/models/docker_distributor.rb +4 -4
- data/lib/runcible/models/docker_importer.rb +2 -2
- data/lib/runcible/models/export_distributor.rb +1 -1
- data/lib/runcible/models/importer.rb +3 -6
- data/lib/runcible/models/iso_distributor.rb +3 -3
- data/lib/runcible/models/iso_importer.rb +1 -1
- data/lib/runcible/models/nodes_http_distributor.rb +0 -1
- data/lib/runcible/models/puppet_distributor.rb +2 -2
- data/lib/runcible/models/yum_clone_distributor.rb +3 -4
- data/lib/runcible/models/yum_distributor.rb +7 -7
- data/lib/runcible/models/yum_importer.rb +17 -17
- data/lib/runcible/resources/consumer.rb +17 -20
- data/lib/runcible/resources/consumer_group.rb +13 -15
- data/lib/runcible/resources/content.rb +10 -10
- data/lib/runcible/resources/event_notifier.rb +5 -9
- data/lib/runcible/resources/repository.rb +23 -23
- data/lib/runcible/resources/repository_group.rb +5 -7
- data/lib/runcible/resources/repository_schedule.rb +5 -7
- data/lib/runcible/resources/role.rb +5 -8
- data/lib/runcible/resources/task.rb +10 -13
- data/lib/runcible/resources/unit.rb +3 -6
- data/lib/runcible/resources/user.rb +7 -10
- data/lib/runcible/version.rb +1 -1
- metadata +2 -2
@@ -21,15 +21,12 @@
|
|
21
21
|
# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
22
22
|
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
23
23
|
|
24
|
-
|
25
24
|
module Runcible
|
26
25
|
module Extensions
|
27
26
|
class Errata < Runcible::Extensions::Unit
|
28
|
-
|
29
27
|
def self.content_type
|
30
28
|
'erratum'
|
31
29
|
end
|
32
|
-
|
33
30
|
end
|
34
31
|
end
|
35
32
|
end
|
@@ -21,15 +21,12 @@
|
|
21
21
|
# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
22
22
|
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
23
23
|
|
24
|
-
|
25
24
|
module Runcible
|
26
25
|
module Extensions
|
27
26
|
class PackageCategory < Runcible::Extensions::Unit
|
28
|
-
|
29
27
|
def self.content_type
|
30
28
|
'package_category'
|
31
29
|
end
|
32
|
-
|
33
30
|
end
|
34
31
|
end
|
35
32
|
end
|
@@ -21,11 +21,9 @@
|
|
21
21
|
# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
22
22
|
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
23
23
|
|
24
|
-
|
25
24
|
module Runcible
|
26
25
|
module Extensions
|
27
26
|
class PackageGroup < Runcible::Extensions::Unit
|
28
|
-
|
29
27
|
def self.content_type
|
30
28
|
'package_group'
|
31
29
|
end
|
@@ -21,15 +21,12 @@
|
|
21
21
|
# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
22
22
|
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
23
23
|
|
24
|
-
|
25
24
|
module Runcible
|
26
25
|
module Extensions
|
27
26
|
class PuppetModule < Runcible::Extensions::Unit
|
28
|
-
|
29
27
|
def self.content_type
|
30
28
|
'puppet_module'
|
31
29
|
end
|
32
|
-
|
33
30
|
end
|
34
31
|
end
|
35
32
|
end
|
@@ -21,15 +21,14 @@
|
|
21
21
|
# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
22
22
|
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
23
23
|
|
24
|
-
|
25
24
|
module Runcible
|
26
25
|
module Extensions
|
27
26
|
class Repository < Runcible::Resources::Repository
|
28
|
-
|
29
27
|
# Utility function that allows an importer to be added at repository creation time
|
30
28
|
#
|
31
29
|
# @param [String] id the id of the repository being created
|
32
|
-
# @param [Hash, Runcible::Extensions::Importer] importer either a hash representing an importer or
|
30
|
+
# @param [Hash, Runcible::Extensions::Importer] importer either a hash representing an importer or
|
31
|
+
# an Importer object
|
33
32
|
# @return [RestClient::Response] the created repository
|
34
33
|
def create_with_importer(id, importer)
|
35
34
|
create_with_importer_and_distributors(id, importer)
|
@@ -38,7 +37,8 @@ module Runcible
|
|
38
37
|
# Utility function that allows distributors to be added at repository creation time
|
39
38
|
#
|
40
39
|
# @param [String] id the id of the repository being created
|
41
|
-
# @param [Array] distributors an array of hashes representing distributors or
|
40
|
+
# @param [Array] distributors an array of hashes representing distributors or
|
41
|
+
# an array of Distributor objects
|
42
42
|
# @return [RestClient::Response] the created repository
|
43
43
|
def create_with_distributors(id, distributors)
|
44
44
|
create_with_importer_and_distributors(id, nil, distributors)
|
@@ -47,11 +47,13 @@ module Runcible
|
|
47
47
|
# Utility function that allows an importer and distributors to be added at repository creation time
|
48
48
|
#
|
49
49
|
# @param [String] id the id of the repository being created
|
50
|
-
# @param [Hash, Runcible::Extensions::Importer] importer either a hash representing an importer or
|
51
|
-
#
|
50
|
+
# @param [Hash, Runcible::Extensions::Importer] importer either a hash representing an importer or
|
51
|
+
# an Importer object
|
52
|
+
# @param [Array] distributors an array of hashes representing distributors or
|
53
|
+
# an array of Distributor objects
|
52
54
|
# @param [Hash] optional container for all optional parameters
|
53
55
|
# @return [RestClient::Response] the created repository
|
54
|
-
def create_with_importer_and_distributors(id, importer, distributors=[], optional={})
|
56
|
+
def create_with_importer_and_distributors(id, importer, distributors = [], optional = {})
|
55
57
|
if importer.is_a?(Runcible::Models::Importer)
|
56
58
|
optional[:importer_type_id] = importer.id
|
57
59
|
optional[:importer_config] = importer.config
|
@@ -62,32 +64,32 @@ module Runcible
|
|
62
64
|
|
63
65
|
repo_type = if importer.methods.include?(:repo_type)
|
64
66
|
importer.repo_type
|
65
|
-
elsif importer.is_a?(Hash) && importer.
|
67
|
+
elsif importer.is_a?(Hash) && importer.key?(:repo_type)
|
66
68
|
importer[:repo_type]
|
67
69
|
else
|
68
70
|
nil
|
69
71
|
end
|
70
72
|
|
71
|
-
if optional.
|
73
|
+
if optional.key?(:importer_type_id) && repo_type
|
72
74
|
# pulp needs _repo-type in order to determine the type of repo to create.
|
73
75
|
optional[:notes] = { '_repo-type' => importer.repo_type }
|
74
76
|
end
|
75
77
|
|
76
|
-
optional[:distributors] = distributors.
|
78
|
+
optional[:distributors] = distributors.map do |d|
|
77
79
|
if d.is_a?(Runcible::Models::Distributor)
|
78
80
|
{'distributor_type_id' => d.type_id,
|
79
|
-
|
80
|
-
|
81
|
-
|
81
|
+
'distributor_config' => d.config,
|
82
|
+
'auto_publish' => d.auto_publish,
|
83
|
+
'distributor_id' => d.id
|
82
84
|
}
|
83
85
|
else
|
84
86
|
{'distributor_type_id' => d['type_id'],
|
85
|
-
|
86
|
-
|
87
|
-
|
87
|
+
'distributor_config' => d['config'],
|
88
|
+
'auto_publish' => d['auto_publish'],
|
89
|
+
'distributor_id' => d['id']
|
88
90
|
}
|
89
91
|
end
|
90
|
-
end
|
92
|
+
end unless distributors.empty?
|
91
93
|
optional[:id] = id
|
92
94
|
create(id, optional)
|
93
95
|
end
|
@@ -97,7 +99,7 @@ module Runcible
|
|
97
99
|
# @param [String] repo_id the repository ID
|
98
100
|
# @return [RestClient::Response] a task representing the sync status
|
99
101
|
def sync_status(repo_id)
|
100
|
-
Runcible::Resources::Task.new(self.config).list(["pulp:repository:#{repo_id}",
|
102
|
+
Runcible::Resources::Task.new(self.config).list(["pulp:repository:#{repo_id}", 'pulp:action:sync'])
|
101
103
|
end
|
102
104
|
|
103
105
|
# Retrieves the publish status for a repository
|
@@ -105,7 +107,7 @@ module Runcible
|
|
105
107
|
# @param [String] repo_id the repository ID
|
106
108
|
# @return [RestClient::Response] a task representing the sync status
|
107
109
|
def publish_status(repo_id)
|
108
|
-
Runcible::Resources::Task.new(self.config).list(["pulp:repository:#{repo_id}",
|
110
|
+
Runcible::Resources::Task.new(self.config).list(["pulp:repository:#{repo_id}", 'pulp:action:publish'])
|
109
111
|
end
|
110
112
|
|
111
113
|
# Retrieves a set of repositories by their IDs
|
@@ -114,34 +116,39 @@ module Runcible
|
|
114
116
|
# @return [RestClient::Response] the set of repositories requested
|
115
117
|
def search_by_repository_ids(repository_ids)
|
116
118
|
criteria = {:filters =>
|
117
|
-
{
|
119
|
+
{ 'id' => {'$in' => repository_ids}}
|
118
120
|
}
|
119
121
|
search(criteria)
|
120
122
|
end
|
121
123
|
|
122
|
-
|
123
124
|
# Retrieves the RPM IDs for a single repository
|
124
125
|
#
|
125
126
|
# @param [String] id the ID of the repository
|
126
127
|
# @return [Array<String>] the array of repository RPM IDs
|
127
128
|
|
128
129
|
def rpm_ids(id)
|
129
|
-
criteria = {:type_ids=>[Runcible::Extensions::Rpm.content_type],
|
130
|
-
|
131
|
-
self.unit_search(id, criteria).
|
130
|
+
criteria = {:type_ids => [Runcible::Extensions::Rpm.content_type],
|
131
|
+
:fields => {:unit => [], :association => ['unit_id']}}
|
132
|
+
self.unit_search(id, criteria).map { |i| i['unit_id'] }
|
132
133
|
rescue RestClient::RequestTimeout
|
133
|
-
self.logger.warn(
|
134
|
+
self.logger.warn('Call to rpm_ids timed out')
|
134
135
|
# lazy evaluated iterator from zero to infinite
|
135
|
-
pages = Enumerator.new
|
136
|
+
pages = Enumerator.new do |y|
|
137
|
+
page = 0
|
138
|
+
loop do
|
139
|
+
y << page
|
140
|
+
page += 1
|
141
|
+
end
|
142
|
+
end
|
136
143
|
|
137
|
-
# TODO this is hotfix, pagination support should be added to Runcible
|
138
|
-
pages.
|
144
|
+
# TODO: this is hotfix, pagination support should be added to Runcible
|
145
|
+
pages.reduce([]) do |rpm_ids, page|
|
139
146
|
page_size = 500
|
140
147
|
criteria = { :type_ids => [Runcible::Extensions::Rpm.content_type],
|
141
148
|
:fields => { :unit => [], :association => ['unit_id'] },
|
142
149
|
:limit => page_size,
|
143
|
-
:skip => 0 + page*page_size }
|
144
|
-
result = unit_search(id, criteria).
|
150
|
+
:skip => 0 + page * page_size }
|
151
|
+
result = unit_search(id, criteria).map { |i| i['unit_id'] }
|
145
152
|
rpm_ids.concat(result)
|
146
153
|
if result.empty? || result.size < 500
|
147
154
|
break rpm_ids
|
@@ -156,8 +163,8 @@ module Runcible
|
|
156
163
|
# @param [String] id the ID of the repository
|
157
164
|
# @return [RestClient::Response] the set of repository RPMs
|
158
165
|
def rpms(id)
|
159
|
-
criteria = {:type_ids=>[Runcible::Extensions::Rpm.content_type]}
|
160
|
-
unit_search(id, criteria).
|
166
|
+
criteria = {:type_ids => [Runcible::Extensions::Rpm.content_type]}
|
167
|
+
unit_search(id, criteria).map { |i| i['metadata'].with_indifferent_access }
|
161
168
|
end
|
162
169
|
|
163
170
|
# Retrieves the RPMs by NVRE for a single repository
|
@@ -168,23 +175,23 @@ module Runcible
|
|
168
175
|
# @param [String] release the release of the RPMs
|
169
176
|
# @param [String] epoch the epoch of the RPMs
|
170
177
|
# @return [RestClient::Response] the set of repository RPMs
|
171
|
-
def rpms_by_nvre(id, name, version=nil, release=nil, epoch=nil)
|
178
|
+
def rpms_by_nvre(id, name, version = nil, release = nil, epoch = nil)
|
172
179
|
and_condition = []
|
173
|
-
and_condition << {:name=>name} if name
|
174
|
-
and_condition << {:version=>version} if version
|
175
|
-
and_condition << {:release=>release} if release
|
176
|
-
and_condition << {:epoch=>epoch} if epoch
|
177
|
-
|
178
|
-
criteria = {:type_ids=>[Runcible::Extensions::Rpm.content_type],
|
179
|
-
|
180
|
-
|
181
|
-
|
182
|
-
|
183
|
-
|
184
|
-
|
185
|
-
|
186
|
-
|
187
|
-
unit_search(id, criteria).
|
180
|
+
and_condition << {:name => name} if name
|
181
|
+
and_condition << {:version => version} if version
|
182
|
+
and_condition << {:release => release} if release
|
183
|
+
and_condition << {:epoch => epoch} if epoch
|
184
|
+
|
185
|
+
criteria = {:type_ids => [Runcible::Extensions::Rpm.content_type],
|
186
|
+
:filters => {
|
187
|
+
:unit => {
|
188
|
+
'$and' => and_condition
|
189
|
+
}
|
190
|
+
},
|
191
|
+
:sort => {
|
192
|
+
:unit => [['name', 'ascending'], ['version', 'descending']]
|
193
|
+
}}
|
194
|
+
unit_search(id, criteria).map { |p| p['metadata'].with_indifferent_access }
|
188
195
|
end
|
189
196
|
|
190
197
|
# Retrieves the errata IDs for a single repository
|
@@ -192,10 +199,10 @@ module Runcible
|
|
192
199
|
# @param [String] id the ID of the repository
|
193
200
|
# @return [RestClient::Response] the set of repository errata IDs
|
194
201
|
def errata_ids(id)
|
195
|
-
|
196
|
-
|
202
|
+
criteria = {:type_ids => [Runcible::Extensions::Errata.content_type],
|
203
|
+
:fields => {:unit => [], :association => ['unit_id']}}
|
197
204
|
|
198
|
-
|
205
|
+
unit_search(id, criteria).map { |i| i['unit_id'] }
|
199
206
|
end
|
200
207
|
|
201
208
|
# Retrieves the errata for a single repository
|
@@ -203,8 +210,8 @@ module Runcible
|
|
203
210
|
# @param [String] id the ID of the repository
|
204
211
|
# @return [RestClient::Response] the set of repository errata
|
205
212
|
def errata(id)
|
206
|
-
|
207
|
-
|
213
|
+
criteria = {:type_ids => [Runcible::Extensions::Errata.content_type]}
|
214
|
+
unit_search(id, criteria).map { |i| i['metadata'].with_indifferent_access }
|
208
215
|
end
|
209
216
|
|
210
217
|
# Retrieves the distributions for a single repository
|
@@ -212,9 +219,9 @@ module Runcible
|
|
212
219
|
# @param [String] id the ID of the repository
|
213
220
|
# @return [RestClient::Response] the set of repository distributions
|
214
221
|
def distributions(id)
|
215
|
-
criteria = {:type_ids=>[Runcible::Extensions::Distribution.content_type]}
|
222
|
+
criteria = {:type_ids => [Runcible::Extensions::Distribution.content_type]}
|
216
223
|
|
217
|
-
unit_search(id, criteria).
|
224
|
+
unit_search(id, criteria).map { |i| i['metadata'].with_indifferent_access }
|
218
225
|
end
|
219
226
|
|
220
227
|
# Retrieves the package groups for a single repository
|
@@ -222,9 +229,9 @@ module Runcible
|
|
222
229
|
# @param [String] id the ID of the repository
|
223
230
|
# @return [RestClient::Response] the set of repository package groups
|
224
231
|
def package_groups(id)
|
225
|
-
criteria = {:type_ids=>[Runcible::Extensions::PackageGroup.content_type]}
|
232
|
+
criteria = {:type_ids => [Runcible::Extensions::PackageGroup.content_type]}
|
226
233
|
|
227
|
-
unit_search(id, criteria).
|
234
|
+
unit_search(id, criteria).map { |i| i['metadata'].with_indifferent_access }
|
228
235
|
end
|
229
236
|
|
230
237
|
# Retrieves the package group categoriess for a single repository
|
@@ -232,8 +239,8 @@ module Runcible
|
|
232
239
|
# @param [String] id the ID of the repository
|
233
240
|
# @return [RestClient::Response] the set of repository package group categories
|
234
241
|
def package_categories(id)
|
235
|
-
criteria = {:type_ids=>[Runcible::Extensions::PackageCategory.content_type]}
|
236
|
-
unit_search(id, criteria).
|
242
|
+
criteria = {:type_ids => [Runcible::Extensions::PackageCategory.content_type]}
|
243
|
+
unit_search(id, criteria).map { |i| i['metadata'].with_indifferent_access }
|
237
244
|
end
|
238
245
|
|
239
246
|
# Retrieves the puppet module IDs for a single repository
|
@@ -241,10 +248,10 @@ module Runcible
|
|
241
248
|
# @param [String] id the ID of the repository
|
242
249
|
# @return [RestClient::Response] the set of repository puppet module IDs
|
243
250
|
def puppet_module_ids(id)
|
244
|
-
criteria = {:type_ids=>[Runcible::Extensions::PuppetModule.content_type],
|
245
|
-
:fields=>{:unit=>[], :association=>['unit_id']}}
|
251
|
+
criteria = {:type_ids => [Runcible::Extensions::PuppetModule.content_type],
|
252
|
+
:fields => {:unit => [], :association => ['unit_id']}}
|
246
253
|
|
247
|
-
unit_search(id, criteria).
|
254
|
+
unit_search(id, criteria).map { |i| i['unit_id'] }
|
248
255
|
end
|
249
256
|
|
250
257
|
# Retrieves the puppet modules for a single repository
|
@@ -252,8 +259,8 @@ module Runcible
|
|
252
259
|
# @param [String] id the ID of the repository
|
253
260
|
# @return [RestClient::Response] the set of repository puppet modules
|
254
261
|
def puppet_modules(id)
|
255
|
-
criteria = {:type_ids=>[Runcible::Extensions::PuppetModule.content_type]}
|
256
|
-
unit_search(id, criteria).
|
262
|
+
criteria = {:type_ids => [Runcible::Extensions::PuppetModule.content_type]}
|
263
|
+
unit_search(id, criteria).map { |i| i['metadata'].with_indifferent_access }
|
257
264
|
end
|
258
265
|
|
259
266
|
# Retrieves the docker image IDs for a single repository
|
@@ -261,10 +268,10 @@ module Runcible
|
|
261
268
|
# @param [String] id the ID of the repository
|
262
269
|
# @return [RestClient::Response] the set of repository docker image IDs
|
263
270
|
def docker_image_ids(id)
|
264
|
-
criteria = {:type_ids=>[Runcible::Extensions::DockerImage.content_type],
|
265
|
-
:fields=>{:unit=>[], :association=>['unit_id']}}
|
271
|
+
criteria = {:type_ids => [Runcible::Extensions::DockerImage.content_type],
|
272
|
+
:fields => {:unit => [], :association => ['unit_id']}}
|
266
273
|
|
267
|
-
unit_search(id, criteria).
|
274
|
+
unit_search(id, criteria).map { |i| i['unit_id'] }
|
268
275
|
end
|
269
276
|
|
270
277
|
# Retrieves the docker images for a single repository
|
@@ -272,8 +279,17 @@ module Runcible
|
|
272
279
|
# @param [String] id the ID of the repository
|
273
280
|
# @return [RestClient::Response] the set of repository docker images
|
274
281
|
def docker_images(id)
|
275
|
-
criteria = {:type_ids=>[Runcible::Extensions::DockerImage.content_type]}
|
276
|
-
unit_search(id, criteria).
|
282
|
+
criteria = {:type_ids => [Runcible::Extensions::DockerImage.content_type]}
|
283
|
+
unit_search(id, criteria).map { |i| i['metadata'].with_indifferent_access }
|
284
|
+
end
|
285
|
+
|
286
|
+
# Updates the docker tags in a repo
|
287
|
+
# @param [String] id the ID of the repository
|
288
|
+
# @param [Hash] tags for an image in the following format
|
289
|
+
# the [{:image_id => <image hash>, :tag =>"value"}]
|
290
|
+
# @return [RestClient::Response]
|
291
|
+
def update_docker_tags(id, tags)
|
292
|
+
update(id, :scratchpad => {:tags => tags})
|
277
293
|
end
|
278
294
|
|
279
295
|
# Creates or updates a sync schedule for a repository
|
@@ -287,7 +303,8 @@ module Runcible
|
|
287
303
|
if schedules.empty?
|
288
304
|
Runcible::Resources::RepositorySchedule.new(self.config).create(repo_id, type, schedule)
|
289
305
|
else
|
290
|
-
Runcible::Resources::RepositorySchedule.new(self.config).update(repo_id, type,
|
306
|
+
Runcible::Resources::RepositorySchedule.new(self.config).update(repo_id, type,
|
307
|
+
schedules[0]['_id'], :schedule => schedule)
|
291
308
|
end
|
292
309
|
end
|
293
310
|
|
@@ -320,7 +337,7 @@ module Runcible
|
|
320
337
|
# @param [String] repo_id the ID of the repository
|
321
338
|
# @return [RestClient::Response] the repository with full details
|
322
339
|
def retrieve_with_details(repo_id)
|
323
|
-
retrieve(repo_id,
|
340
|
+
retrieve(repo_id, :details => true)
|
324
341
|
end
|
325
342
|
|
326
343
|
# Regenerate the applicability for consumers bound to a given set of repositories
|
@@ -333,7 +350,6 @@ module Runcible
|
|
333
350
|
}
|
334
351
|
regenerate_applicability(criteria)
|
335
352
|
end
|
336
|
-
|
337
353
|
end
|
338
354
|
end
|
339
355
|
end
|
@@ -21,28 +21,26 @@
|
|
21
21
|
# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
22
22
|
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
23
23
|
|
24
|
-
|
25
24
|
module Runcible
|
26
25
|
module Extensions
|
27
26
|
class Rpm < Runcible::Extensions::Unit
|
28
|
-
|
29
27
|
def self.content_type
|
30
28
|
'rpm'
|
31
29
|
end
|
32
30
|
|
33
31
|
# This function is not implemented for RPMs since they do not have content IDs
|
34
32
|
def find
|
35
|
-
|
33
|
+
fail NotImplementedError
|
36
34
|
end
|
37
35
|
|
38
36
|
# This function is not implemented for RPMs since they do not have content IDs
|
39
37
|
def find_all
|
40
|
-
|
38
|
+
fail NotImplementedError
|
41
39
|
end
|
42
40
|
|
43
41
|
# This function is not implemented for RPMs since they do not have content IDs
|
44
42
|
def unassociate_ids_from_repo(repo_id, ids)
|
45
|
-
|
43
|
+
fail NotImplementedError
|
46
44
|
end
|
47
45
|
end
|
48
46
|
end
|
@@ -21,14 +21,12 @@
|
|
21
21
|
# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
22
22
|
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
23
23
|
|
24
|
-
|
25
24
|
module Runcible
|
26
25
|
module Extensions
|
27
26
|
class Unit < Runcible::Resources::Unit
|
28
|
-
|
29
27
|
# The content type (e.g. rpm, errata)
|
30
28
|
def self.content_type
|
31
|
-
|
29
|
+
fail 'Content type not defined'
|
32
30
|
end
|
33
31
|
|
34
32
|
def content_type
|
@@ -46,7 +44,7 @@ module Runcible
|
|
46
44
|
#
|
47
45
|
# @param [Array] id the content ID of the content to retrieve
|
48
46
|
# @return [RestClient::Response] the requested content
|
49
|
-
def find(id, optional={})
|
47
|
+
def find(id, optional = {})
|
50
48
|
optional[:include_repos] ||= true
|
51
49
|
find_all([id], optional).first
|
52
50
|
end
|
@@ -55,16 +53,16 @@ module Runcible
|
|
55
53
|
#
|
56
54
|
# @param [Array] ids list of content IDs to retrieve
|
57
55
|
# @return [RestClient::Response] list of content
|
58
|
-
def find_all(ids, optional={})
|
56
|
+
def find_all(ids, optional = {})
|
59
57
|
optional[:include_repos] ||= true
|
60
|
-
search(content_type, { :filters => {'id'=> {'$in'=> ids}} }, optional)
|
58
|
+
search(content_type, { :filters => {'id' => {'$in' => ids}} }, optional)
|
61
59
|
end
|
62
60
|
|
63
61
|
# Retrieves a single content by it's unit ID
|
64
62
|
#
|
65
63
|
# @param [Array] id the unit ID of the content to retrieve
|
66
64
|
# @return [RestClient::Response] the requested content
|
67
|
-
def find_by_unit_id(id, optional={})
|
65
|
+
def find_by_unit_id(id, optional = {})
|
68
66
|
optional[:include_repos] ||= true
|
69
67
|
find_all_by_unit_ids([id], [], optional).first
|
70
68
|
end
|
@@ -74,9 +72,9 @@ module Runcible
|
|
74
72
|
# @param [Array] ids list of content unit IDs to retrieve
|
75
73
|
# @param [Array] fields optional list of to retrieve
|
76
74
|
# @return [RestClient::Response] list of content
|
77
|
-
def find_all_by_unit_ids(ids, fields=[], optional={})
|
75
|
+
def find_all_by_unit_ids(ids, fields = [], optional = {})
|
78
76
|
optional[:include_repos] ||= true
|
79
|
-
criteria = { :filters => { :_id => { '$in'=> ids } } }
|
77
|
+
criteria = { :filters => { :_id => { '$in' => ids } } }
|
80
78
|
criteria[:fields] = fields unless fields.empty?
|
81
79
|
search(content_type, criteria, optional)
|
82
80
|
end
|
@@ -108,7 +106,7 @@ module Runcible
|
|
108
106
|
#
|
109
107
|
# @param [String] repo_id the repository ID to remove units from
|
110
108
|
# @param [Array] ids list of the unique hash ids of the content unit
|
111
|
-
# with respect to this repo. unit_id,
|
109
|
+
# with respect to this repo. unit_id, id are other names for this.
|
112
110
|
# for example: "efdd2d63-b275-4728-a298-f68cf4c174e7"
|
113
111
|
#
|
114
112
|
# @return [RestClient::Response] a task representing the unit unassociate operation
|
@@ -122,14 +120,14 @@ module Runcible
|
|
122
120
|
# @param [String] destination_repo_id the destination repository ID
|
123
121
|
# @param [Hash] optional container for all optional parameters
|
124
122
|
# @return [RestClient::Response] a task representing the unit copy operation
|
125
|
-
def copy(source_repo_id, destination_repo_id, optional={})
|
123
|
+
def copy(source_repo_id, destination_repo_id, optional = {})
|
126
124
|
criteria = {:type_ids => [content_type], :filters => {}}
|
127
125
|
criteria[:filters]['association'] = {'unit_id' => {'$in' => optional[:ids]}} if optional[:ids]
|
128
126
|
criteria[:filters] = optional[:filters] if optional[:filters]
|
129
127
|
criteria[:fields] = {:unit => optional[:fields]} if optional[:fields]
|
130
128
|
|
131
129
|
payload = {:criteria => criteria}
|
132
|
-
payload[:override_config] = optional[:override_config] if optional.
|
130
|
+
payload[:override_config] = optional[:override_config] if optional.key?(:override_config)
|
133
131
|
|
134
132
|
if optional[:copy_children]
|
135
133
|
payload[:override_config] ||= {}
|
@@ -138,7 +136,6 @@ module Runcible
|
|
138
136
|
|
139
137
|
Runcible::Extensions::Repository.new(self.config).unit_copy(destination_repo_id, source_repo_id, payload)
|
140
138
|
end
|
141
|
-
|
142
139
|
end
|
143
140
|
end
|
144
141
|
end
|