lita-pulp 0.1.2 → 0.1.3
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.
- checksums.yaml +4 -4
- data/.gitignore +1 -0
- data/.rspec +3 -0
- data/CHANGELOG.md +5 -0
- data/README.md +2 -0
- data/lib/lita/handlers/pulp.rb +140 -0
- data/lib/pulphelper/misc.rb +6 -0
- data/lib/pulphelper/repo.rb +105 -3
- data/lib/pulphelper/user.rb +56 -0
- data/lita-pulp.gemspec +2 -1
- data/locales/en.yml +6 -0
- data/spec/fixtures/docker-compose.yml +98 -0
- data/spec/lita/handlers/pulp_repo_spec.rb +51 -17
- data/spec/lita/handlers/pulp_unit_spec.rb +1 -1
- data/spec/spec_helper.rb +29 -4
- metadata +21 -36
- data/spec/fixtures/cassettes/Lita_Handlers_Pulp/_copy_puppet_between_repo/copy_puppet_module.yml +0 -86
- data/spec/fixtures/cassettes/Lita_Handlers_Pulp/_copy_puppet_between_repo/copy_puppet_module_delete_new_and_publish.yml +0 -217
- data/spec/fixtures/cassettes/Lita_Handlers_Pulp/_copy_rpm_between_repo/copy_rpm_package.yml +0 -86
- data/spec/fixtures/cassettes/Lita_Handlers_Pulp/_copy_rpm_between_repo/copy_rpm_package_delete_new_and_publish.yml +0 -264
- data/spec/fixtures/cassettes/Lita_Handlers_Pulp/_publish_repo/publish_a_repository.yml +0 -140
- data/spec/fixtures/cassettes/Lita_Handlers_Pulp/_puppet_repos/list_puppet_repos.yml +0 -88
- data/spec/fixtures/cassettes/Lita_Handlers_Pulp/_puppet_search/search_puppet_with_repo.yml +0 -134
- data/spec/fixtures/cassettes/Lita_Handlers_Pulp/_puppet_search/search_puppet_without_author_name.yml +0 -134
- data/spec/fixtures/cassettes/Lita_Handlers_Pulp/_puppet_search/search_puppet_without_repo.yml +0 -134
- data/spec/fixtures/cassettes/Lita_Handlers_Pulp/_rpm_repos/list_rpm_repos.yml +0 -593
- data/spec/fixtures/cassettes/Lita_Handlers_Pulp/_rpm_search/search_rpm_with_repo.yml +0 -152
- data/spec/fixtures/cassettes/Lita_Handlers_Pulp/_rpm_search/search_rpm_without_repo.yml +0 -152
- data/spec/fixtures/cassettes/Lita_Handlers_Pulp/_show_repo_detail/show_a_puppet_repo_detail.yml +0 -52
- data/spec/fixtures/cassettes/Lita_Handlers_Pulp/_show_repo_detail/show_a_rpm_repo_detail.yml +0 -57
- data/spec/fixtures/cassettes/Lita_Handlers_Pulp/_show_rpm_repo_detail/show_an_rpm_repo_detail.yml +0 -100
- data/spec/fixtures/cassettes/Lita_Handlers_Pulp/_sync_repo/sync_a_repository.yml +0 -44
- data/spec/fixtures/cassettes/Lita_Handlers_Pulp/_sync_repo/syncs_a_repository.yml +0 -44
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: d775ca939c7ede32f70b79ef4401a9cde3db7ec2
|
4
|
+
data.tar.gz: aab465a84478d3db40ca7939cc09b0036ed23634
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 5b2ada338e80d7be5399d35602170c24f7abfba8d67e5d0e205bdce6d003623e3e4cee58ae92c0ebb74fbd712dd272f6a493e91506ee749d326f5bfe8bbbff4e
|
7
|
+
data.tar.gz: b8ab71676d0c5fedf6e0c7ab99b23364fddd9acb0be37d428d9de31966fe733d304d04423beed0f72331ee3a939ba581a4949277f46da1bb8554220ee275b258
|
data/.gitignore
CHANGED
data/.rspec
ADDED
data/CHANGELOG.md
ADDED
data/README.md
CHANGED
data/lib/lita/handlers/pulp.rb
CHANGED
@@ -11,6 +11,7 @@ module Lita
|
|
11
11
|
config :url, required: true, type: String
|
12
12
|
config :api_path, required: true, type: String
|
13
13
|
config :verify_ssl, required:true, types: [TrueClass, FalseClass], default: false
|
14
|
+
config :pulp_version, required:true, types: String # like 2.7.1 2.7.2 2.8 used to work aroud isse #1394
|
14
15
|
|
15
16
|
include ::PulpHelper::Misc
|
16
17
|
include ::PulpHelper::Repo
|
@@ -199,6 +200,15 @@ module Lita
|
|
199
200
|
}
|
200
201
|
)
|
201
202
|
|
203
|
+
route(
|
204
|
+
/^pulp\s+delete\s+repo\s+(\S+)$/,
|
205
|
+
:cmd_delete_repository,
|
206
|
+
command: true,
|
207
|
+
help: {
|
208
|
+
t('help.cmd_delete_repository_key') => t('help.cmd_delete_repository_value')
|
209
|
+
}
|
210
|
+
)
|
211
|
+
|
202
212
|
route(
|
203
213
|
/^pulp\s+sync\s+(\S+)$/,
|
204
214
|
:repo_sync,
|
@@ -208,6 +218,87 @@ module Lita
|
|
208
218
|
}
|
209
219
|
)
|
210
220
|
|
221
|
+
route(
|
222
|
+
/^pulp\s+create\s+rpm\s+repo/i,
|
223
|
+
:cmd_create_rpm_repo,
|
224
|
+
command: true,
|
225
|
+
kwargs: {
|
226
|
+
repo_id: {
|
227
|
+
short: "r",
|
228
|
+
},
|
229
|
+
name: {
|
230
|
+
short: "n"
|
231
|
+
},
|
232
|
+
description: {
|
233
|
+
short: "d"
|
234
|
+
},
|
235
|
+
feed: {
|
236
|
+
short: "f"
|
237
|
+
},
|
238
|
+
relative_url: {
|
239
|
+
short: "u"
|
240
|
+
},
|
241
|
+
http: {
|
242
|
+
short: "h",
|
243
|
+
boolean: true
|
244
|
+
},
|
245
|
+
https: {
|
246
|
+
short: "s",
|
247
|
+
boolean: true
|
248
|
+
},
|
249
|
+
auto_publish: {
|
250
|
+
short: 'p',
|
251
|
+
boolean: true
|
252
|
+
}
|
253
|
+
},
|
254
|
+
help: {
|
255
|
+
t("help.cmd_create_rpm_repo_key") => t("help.cmd_create_rpm_repo_value")
|
256
|
+
}
|
257
|
+
)
|
258
|
+
|
259
|
+
route(
|
260
|
+
/^pulp\s+create\s+puppet\s+repo/i,
|
261
|
+
:cmd_create_puppet_repo,
|
262
|
+
command: true,
|
263
|
+
kwargs: {
|
264
|
+
repo_id: {
|
265
|
+
short: "r",
|
266
|
+
},
|
267
|
+
name: {
|
268
|
+
short: "n"
|
269
|
+
},
|
270
|
+
description: {
|
271
|
+
short: "d"
|
272
|
+
},
|
273
|
+
feed: {
|
274
|
+
short: "f"
|
275
|
+
},
|
276
|
+
remove_missing: {
|
277
|
+
short: 'm',
|
278
|
+
boolean: true
|
279
|
+
},
|
280
|
+
queries: {
|
281
|
+
short: 'q'
|
282
|
+
},
|
283
|
+
http: {
|
284
|
+
short: "h",
|
285
|
+
boolean: true
|
286
|
+
},
|
287
|
+
https: {
|
288
|
+
short: "s",
|
289
|
+
boolean: true
|
290
|
+
},
|
291
|
+
auto_publish: {
|
292
|
+
short: 'p',
|
293
|
+
boolean: true
|
294
|
+
}
|
295
|
+
},
|
296
|
+
help: {
|
297
|
+
t("help.cmd_create_puppet_repo_key") => t("help.cmd_create_puppet_repo_value")
|
298
|
+
}
|
299
|
+
)
|
300
|
+
|
301
|
+
|
211
302
|
# route(
|
212
303
|
# /^pulp\s+sync_status\s+(\S+)$/,
|
213
304
|
# :check_sync_status,
|
@@ -235,6 +326,7 @@ module Lita
|
|
235
326
|
begin
|
236
327
|
result=list_repo(REPO_TYPE_PUPPET)
|
237
328
|
#response.reply result.to_json
|
329
|
+
#puts result
|
238
330
|
s = StringIO.new
|
239
331
|
result.each do |r|
|
240
332
|
s << "["<< r[:id] << "] : " << r[:name] << ", " << r[:description] << "\n"
|
@@ -438,6 +530,54 @@ module Lita
|
|
438
530
|
end
|
439
531
|
end
|
440
532
|
|
533
|
+
def cmd_create_rpm_repo(response)
|
534
|
+
args = response.extensions[:kwargs]
|
535
|
+
#puts "args: #{args}"
|
536
|
+
repo_id = args[:repo_id]
|
537
|
+
name = args[:name] || repo_id
|
538
|
+
description = args[:description]
|
539
|
+
feed = args[:feed]
|
540
|
+
relative_url = args[:relative_url]
|
541
|
+
serve_http = args[:http].nil? ? true : args[:http]
|
542
|
+
serve_https = args[:https].nil? ? false : args[:https]
|
543
|
+
auto_publish = args[:auto_publish].nil? ? false : args[:auto_publish]
|
544
|
+
begin
|
545
|
+
success = create_rpm_repo(repo_id: repo_id, display_name: name , description: description, feed_url: feed, relative_url: relative_url, serve_http: serve_http, serve_https: serve_https, auto_publish: auto_publish )
|
546
|
+
response.reply "Repo created successfully."
|
547
|
+
rescue Exception => e
|
548
|
+
response.reply e.message
|
549
|
+
end
|
550
|
+
end
|
551
|
+
|
552
|
+
def cmd_create_puppet_repo(response)
|
553
|
+
args = response.extensions[:kwargs]
|
554
|
+
#puts "args: #{args}"
|
555
|
+
repo_id = args[:repo_id]
|
556
|
+
name = args[:name] || repo_id
|
557
|
+
description = args[:description]
|
558
|
+
feed = args[:feed]
|
559
|
+
queries = args[:queries]
|
560
|
+
remove_missing = args[:remove_missing].nil? ? false : args[:remove_missing] #default false
|
561
|
+
serve_http = args[:http].nil? ? true : args[:http] #default true
|
562
|
+
serve_https = args[:https].nil? ? false : args[:https]
|
563
|
+
auto_publish = args[:auto_publish].nil? ? false : args[:auto_publish]
|
564
|
+
begin
|
565
|
+
success = create_puppet_repo(repo_id: repo_id, display_name: name , description: description, feed_url: feed, queries: queries, remove_missing: remove_missing, serve_http: serve_http, serve_https: serve_https, auto_publish: auto_publish )
|
566
|
+
response.reply "Repo created successfully."
|
567
|
+
rescue Exception => e
|
568
|
+
response.reply e.message
|
569
|
+
end
|
570
|
+
end
|
571
|
+
|
572
|
+
def cmd_delete_repository(response)
|
573
|
+
repo_id = response.matches[0][0]
|
574
|
+
begin
|
575
|
+
success = delete_repository(repo_id)
|
576
|
+
response.reply "Repo deleted successfully."
|
577
|
+
rescue Exception => e
|
578
|
+
response.reply e.message
|
579
|
+
end
|
580
|
+
end
|
441
581
|
|
442
582
|
Lita.register_handler(self)
|
443
583
|
#Lita.register_hook(:trigger_route, Lita::Extensions::KeywordArguments)
|
data/lib/pulphelper/misc.rb
CHANGED
@@ -1,4 +1,5 @@
|
|
1
1
|
require 'runcible'
|
2
|
+
require 'json'
|
2
3
|
|
3
4
|
module PulpHelper
|
4
5
|
module Misc
|
@@ -12,5 +13,10 @@ module PulpHelper
|
|
12
13
|
:logger => "",
|
13
14
|
})
|
14
15
|
end
|
16
|
+
def get_version
|
17
|
+
response = client.resources.repository.call(:get, "/status/")
|
18
|
+
version = response['versions']['platform_version']
|
19
|
+
version
|
20
|
+
end
|
15
21
|
end
|
16
22
|
end
|
data/lib/pulphelper/repo.rb
CHANGED
@@ -6,18 +6,25 @@ module PulpHelper
|
|
6
6
|
REPO_TYPE_RPM="rpm-repo"
|
7
7
|
REPO_TYPE_PUPPET="puppet-repo"
|
8
8
|
|
9
|
+
YUM_IMPORTER_ID = "yum_importer"
|
10
|
+
PUPPET_IMPORTER_ID = 'puppet_importer'
|
11
|
+
|
12
|
+
YUM_DISTRIBUTOR_ID = "yum_distributor"
|
13
|
+
PUPPET_DISTRIBUTOR_ID = "puppet_distributor"
|
14
|
+
YUM_EXPORT_DISTRIBUTOR_ID="export_distributor"
|
15
|
+
|
9
16
|
def list_repo(type)
|
17
|
+
# use $in seems buggy
|
10
18
|
criteria = {
|
11
19
|
"filters" => {
|
12
|
-
"notes._repo-type" =>
|
13
|
-
"$in" => [type]
|
14
|
-
}
|
20
|
+
"notes._repo-type" => type
|
15
21
|
}
|
16
22
|
}
|
17
23
|
#puts "criteria:#{criteria}"
|
18
24
|
response=client.resources.repository.search(criteria)
|
19
25
|
code=response.code
|
20
26
|
body=response.body
|
27
|
+
#puts "list result: #{body}"
|
21
28
|
result=[]
|
22
29
|
case code
|
23
30
|
when 200
|
@@ -131,6 +138,83 @@ module PulpHelper
|
|
131
138
|
end
|
132
139
|
end#list_repo_details
|
133
140
|
|
141
|
+
def create_rpm_repo(repo_id:, display_name: nil , description: '', feed_url: nil, relative_url: nil, serve_http: true, serve_https: false, auto_publish: false)
|
142
|
+
|
143
|
+
if relative_url.nil? || relative_url.strip.length<1
|
144
|
+
raise "Invalid relative_url"
|
145
|
+
end
|
146
|
+
importer = Runcible::Models::YumImporter.new
|
147
|
+
importer.feed = feed_url if feed_url
|
148
|
+
yum_distributor = Runcible::Models::YumDistributor.new relative_url, serve_http, serve_https
|
149
|
+
yum_distributor.auto_publish = auto_publish
|
150
|
+
yum_distributor.id = 'yum_distributor'
|
151
|
+
|
152
|
+
export_distributor = Runcible::Models::ExportDistributor.new serve_http, serve_https, relative_url
|
153
|
+
export_distributor.auto_publish = auto_publish
|
154
|
+
export_distributor.id = 'export_distributor'
|
155
|
+
|
156
|
+
optional = {
|
157
|
+
:display_name => display_name,
|
158
|
+
:description => description,
|
159
|
+
}
|
160
|
+
|
161
|
+
begin
|
162
|
+
version = get_version #get server version
|
163
|
+
# pulp issue https://pulp.plan.io/issues/1520
|
164
|
+
if Gem::Version.new('2.8.0') > Gem::Version.new(version)
|
165
|
+
def export_distributor.config
|
166
|
+
to_ret = as_json
|
167
|
+
to_ret.delete('auto_publish')
|
168
|
+
to_ret.delete('id')
|
169
|
+
to_ret.delete('relative_url')
|
170
|
+
to_ret
|
171
|
+
end
|
172
|
+
end
|
173
|
+
response = client.extensions.repository.create_with_importer_and_distributors(repo_id, importer, [yum_distributor, export_distributor], optional)
|
174
|
+
code=response.code
|
175
|
+
body=response.body
|
176
|
+
puts "code #{code}"
|
177
|
+
case code
|
178
|
+
when 201
|
179
|
+
return true
|
180
|
+
default
|
181
|
+
raise "Operation failed, response code:#{code}, #{response}"
|
182
|
+
end
|
183
|
+
rescue Exception => e
|
184
|
+
raise "Failed to create repo, #{e.message}"
|
185
|
+
end
|
186
|
+
end
|
187
|
+
|
188
|
+
def create_puppet_repo(repo_id:, display_name: nil , description: '', feed_url: nil, queries: nil, remove_missing: false, serve_http: true, serve_https: false, auto_publish: false)
|
189
|
+
importer = Runcible::Models::PuppetImporter.new
|
190
|
+
importer.feed = feed_url if feed_url
|
191
|
+
importer.remove_missing = remove_missing
|
192
|
+
importer.queries = queries
|
193
|
+
puppet_distributor = Runcible::Models::PuppetDistributor.new nil, serve_http, serve_https
|
194
|
+
puppet_distributor.auto_publish = auto_publish
|
195
|
+
puppet_distributor.id = 'puppet_distributor'
|
196
|
+
|
197
|
+
optional = {
|
198
|
+
:display_name => display_name,
|
199
|
+
:description => description,
|
200
|
+
}
|
201
|
+
|
202
|
+
begin
|
203
|
+
response = client.extensions.repository.create_with_importer_and_distributors(repo_id, importer, [puppet_distributor], optional)
|
204
|
+
code=response.code
|
205
|
+
body=response.body
|
206
|
+
puts "code #{code}"
|
207
|
+
case code
|
208
|
+
when 201
|
209
|
+
return true
|
210
|
+
default
|
211
|
+
raise "Operation failed, response code:#{code}, #{response}"
|
212
|
+
end
|
213
|
+
rescue Exception => e
|
214
|
+
raise "Failed to create repo, #{e.message}"
|
215
|
+
end
|
216
|
+
end
|
217
|
+
|
134
218
|
def publish_repo!(forge_id)
|
135
219
|
message = "Publish #{forge_id} submitted successfully"
|
136
220
|
begin
|
@@ -290,7 +374,23 @@ module PulpHelper
|
|
290
374
|
end
|
291
375
|
end# copy puppet
|
292
376
|
|
377
|
+
def delete_repository(repo_id)
|
378
|
+
begin
|
379
|
+
response=client.resources.repository.delete(repo_id)
|
380
|
+
case response.code
|
381
|
+
when 202
|
382
|
+
true
|
383
|
+
when 404
|
384
|
+
rase "Repository does not exist."
|
385
|
+
default
|
386
|
+
raise "Failed to delete repository."
|
387
|
+
end
|
388
|
+
rescue StandardError => e
|
389
|
+
raise "Excpetion: Failed to delete, #{e.message}"
|
390
|
+
end
|
391
|
+
end
|
293
392
|
|
393
|
+
##### private functions #####
|
294
394
|
private
|
295
395
|
def get_rpm_search_params (name, version, release, arch)
|
296
396
|
search_optional= {
|
@@ -380,5 +480,7 @@ module PulpHelper
|
|
380
480
|
}
|
381
481
|
return criteria
|
382
482
|
end#function
|
483
|
+
|
484
|
+
|
383
485
|
end#module
|
384
486
|
end#module
|
@@ -0,0 +1,56 @@
|
|
1
|
+
require 'runcible'
|
2
|
+
|
3
|
+
module PulpHelper
|
4
|
+
module User
|
5
|
+
|
6
|
+
def create_user(username, password)
|
7
|
+
response = client.resources.user.create(username, :name => username, :password => password)
|
8
|
+
if response.code == 201
|
9
|
+
"User created."
|
10
|
+
else
|
11
|
+
raise "Failed to create user, response code: #{response.code}"
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
15
|
+
def get_user(username)
|
16
|
+
response = client.resources.retrive(username)
|
17
|
+
if response.code == 200
|
18
|
+
response.body
|
19
|
+
else
|
20
|
+
raise "Failed to retrieve user, response code #{response.code}"
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
def delete_user(username)
|
25
|
+
response = client.resources.delete(username)
|
26
|
+
if response.code == 200
|
27
|
+
response.body
|
28
|
+
else
|
29
|
+
raise "Failed to delete user, response code #{response.code}"
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
33
|
+
def change_password(password)
|
34
|
+
|
35
|
+
end
|
36
|
+
|
37
|
+
def assign_role(user, role)
|
38
|
+
response = client.resources.add(role, user)
|
39
|
+
if response.code == 200
|
40
|
+
response.body
|
41
|
+
else
|
42
|
+
raise "Failed to assign role to user, response code #{response.code}"
|
43
|
+
end
|
44
|
+
end
|
45
|
+
|
46
|
+
def unassign_role(user, role)
|
47
|
+
response = client.resources.remove(role, user)
|
48
|
+
if response.code == 200
|
49
|
+
response.body
|
50
|
+
else
|
51
|
+
raise "Failed to unassign role from user, response code #{response.code}"
|
52
|
+
end
|
53
|
+
end
|
54
|
+
|
55
|
+
end
|
56
|
+
end
|
data/lita-pulp.gemspec
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
|
2
2
|
Gem::Specification.new do |spec|
|
3
3
|
spec.name = "lita-pulp"
|
4
|
-
spec.version = "0.1.
|
4
|
+
spec.version = "0.1.3"
|
5
5
|
spec.authors = ["Wang, Dawei"]
|
6
6
|
spec.email = ["daweiwang.gatekeeper@gmail.com"]
|
7
7
|
spec.description = "Lita bot for pulp server"
|
@@ -26,4 +26,5 @@ Gem::Specification.new do |spec|
|
|
26
26
|
spec.add_development_dependency "rspec", ">= 3.0.0"
|
27
27
|
spec.add_development_dependency "webmock"
|
28
28
|
spec.add_development_dependency "vcr"
|
29
|
+
spec.add_development_dependency "docker-compose"
|
29
30
|
end
|
data/locales/en.yml
CHANGED
@@ -27,3 +27,9 @@ en:
|
|
27
27
|
sync_repo_value: "Sync repository REPO_ID"
|
28
28
|
sync_status_key: "pulp sync_status REPO_ID"
|
29
29
|
sync_status_value: "Check repository REPO_ID sync status"
|
30
|
+
cmd_create_rpm_repo_key: 'pulp create rpm repo --repo_id [--name REPONAME] [--description DESCRIPTION] [--feed FEED_URL] [--relative_url RELATIVEURL] [--http] [--https] [--auto_publish]'
|
31
|
+
cmd_create_rpm_repo_value: 'Create a rpm repository'
|
32
|
+
cmd_create_puppet_repo_key: 'pulp create puppet repo --repo_id [--name REPONAME] [--description DESCRIPTION] [--feed FEED_URL] [--queries "query1,query2"] [--remove_missing] [--http] [--https] [--auto_publish]'
|
33
|
+
cmd_create_puppet_repo_value: 'Create a puppet repository'
|
34
|
+
cmd_delete_repository_key: 'pulp delete repo REPO_ID'
|
35
|
+
cmd_delete_repository_value: 'Delete a repository'
|