lita-pulp 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (28) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +18 -0
  3. data/Gemfile +3 -0
  4. data/README.md +35 -0
  5. data/Rakefile +8 -0
  6. data/lib/lita-pulp.rb +15 -0
  7. data/lib/lita/handlers/pulp.rb +369 -0
  8. data/lib/pulphelper/misc.rb +16 -0
  9. data/lib/pulphelper/repo.rb +356 -0
  10. data/lib/pulphelper/unit.rb +107 -0
  11. data/lita-pulp.gemspec +28 -0
  12. data/locales/en.yml +23 -0
  13. data/spec/fixtures/cassettes/Lita_Handlers_Pulp/_copy_puppet_between_repo/copy_puppet_module.yml +86 -0
  14. data/spec/fixtures/cassettes/Lita_Handlers_Pulp/_copy_puppet_between_repo/copy_puppet_module_delete_new_and_publish.yml +217 -0
  15. data/spec/fixtures/cassettes/Lita_Handlers_Pulp/_copy_rpm_between_repo/copy_rpm_package.yml +86 -0
  16. data/spec/fixtures/cassettes/Lita_Handlers_Pulp/_copy_rpm_between_repo/copy_rpm_package_delete_new_and_publish.yml +264 -0
  17. data/spec/fixtures/cassettes/Lita_Handlers_Pulp/_puppet_repos/list_puppet_repos.yml +88 -0
  18. data/spec/fixtures/cassettes/Lita_Handlers_Pulp/_puppet_search/search_puppet_with_repo.yml +134 -0
  19. data/spec/fixtures/cassettes/Lita_Handlers_Pulp/_puppet_search/search_puppet_without_author_name.yml +134 -0
  20. data/spec/fixtures/cassettes/Lita_Handlers_Pulp/_puppet_search/search_puppet_without_repo.yml +134 -0
  21. data/spec/fixtures/cassettes/Lita_Handlers_Pulp/_rpm_repos/list_rpm_repos.yml +593 -0
  22. data/spec/fixtures/cassettes/Lita_Handlers_Pulp/_rpm_search/search_rpm_with_repo.yml +152 -0
  23. data/spec/fixtures/cassettes/Lita_Handlers_Pulp/_rpm_search/search_rpm_without_repo.yml +152 -0
  24. data/spec/lita/handlers/pulp_repo_spec.rb +35 -0
  25. data/spec/lita/handlers/pulp_unit_spec.rb +79 -0
  26. data/spec/spec_helper.rb +28 -0
  27. data/templates/.gitkeep +0 -0
  28. metadata +226 -0
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: df5d209cbd637fa2e641a80918bce7306fcd3b59
4
+ data.tar.gz: 4699d7f5ef9e5fffd707e4e430e0b8ebd291cabd
5
+ SHA512:
6
+ metadata.gz: 437604596ddb5d70685dde9956fa9ecd8a9e4697b870963c8897655ac54e0ebd86798c9665ff09c917b589d76ad35fa4c5df5f6d7abfd2c4daf20fcd97efad8c
7
+ data.tar.gz: bce0fb5b4e7b3108fae5fe0e7ce98ee1d834373a08540ac605a2a9ba50f7c5d30945e1cf9c23c1f7f515289b9a4877a9adc43679bd0d5656850b6f6513b075c1
@@ -0,0 +1,18 @@
1
+ *.gem
2
+ *.rbc
3
+ .bundle
4
+ .config
5
+ .yardoc
6
+ Gemfile.lock
7
+ InstalledFiles
8
+ _yardoc
9
+ coverage
10
+ doc/
11
+ lib/bundler/man
12
+ pkg
13
+ rdoc
14
+ spec/reports
15
+ test/tmp
16
+ test/version_tmp
17
+ tmp
18
+ .vscode
data/Gemfile ADDED
@@ -0,0 +1,3 @@
1
+ source "https://rubygems.org"
2
+
3
+ gemspec
@@ -0,0 +1,35 @@
1
+ # lita-pulp
2
+
3
+ A lita handler plugin for pulp server operations.
4
+
5
+ ## Installation
6
+
7
+ Add lita-pulp to your Lita instance's Gemfile:
8
+
9
+ ``` ruby
10
+ gem "lita-pulp"
11
+ ```
12
+
13
+ ## Configuration
14
+
15
+ Configuration options
16
+
17
+ ```ruby
18
+ Lita.configure do |config|
19
+ config.handlers.pulp.url="https://pulp.co.epi.web"
20
+ config.handlers.pulp.api_path="/pulp/api/v2/"
21
+ config.handlers.pulp.username="admin"
22
+ config.handlers.pulp.password="admin"
23
+ config.handlers.pulp.verify_ssl=false #optional default to false
24
+ end
25
+ ```
26
+
27
+ ## Usage
28
+
29
+ It can do following:
30
+ - List all rpm repositories
31
+ - List all puppet repositories
32
+ - Search rpm package
33
+ - Search puppet module
34
+ - Copy rpm package from one repository to another
35
+ - Copy puppet module from one repository to another
@@ -0,0 +1,8 @@
1
+ require "bundler/gem_tasks"
2
+ require "rspec/core/rake_task"
3
+
4
+ RSpec::Core::RakeTask.new(:spec) do |t|
5
+ t.rspec_opts=['--color', '--format', 'documentation']
6
+ end
7
+
8
+ task default: :spec
@@ -0,0 +1,15 @@
1
+ require "lita"
2
+
3
+ Lita.load_locales Dir[File.expand_path(
4
+ File.join("..", "..", "locales", "*.yml"), __FILE__
5
+ )]
6
+
7
+ require 'pulphelper/misc'
8
+ require 'pulphelper/repo'
9
+ require 'pulphelper/unit'
10
+ require "lita/handlers/pulp"
11
+
12
+ Lita::Handlers::Pulp.template_root File.expand_path(
13
+ File.join("..", "..", "templates"),
14
+ __FILE__
15
+ )
@@ -0,0 +1,369 @@
1
+ require 'lita-keyword-arguments'
2
+ #require 'table_print'
3
+
4
+ module Lita
5
+ module Handlers
6
+ class Pulp < Handler
7
+ # insert handler code here
8
+ namespace 'Pulp'
9
+ config :username, required: true, type: String
10
+ config :password, required: true, type: String
11
+ config :url, required: true, type: String
12
+ config :api_path, required: true, type: String
13
+ config :verify_ssl, required:true, types: [TrueClass, FalseClass], default: false
14
+
15
+ include ::PulpHelper::Misc
16
+ include ::PulpHelper::Repo
17
+ include ::PulpHelper::Unit
18
+
19
+ route(
20
+ /^pulp\srpm\srepos$/,
21
+ :rpm_repos,
22
+ command: true,
23
+ help: {
24
+ t('help.rpm_repos_key') => t('help.rpm_repos_value')
25
+ }
26
+ )
27
+
28
+ route(
29
+ /^pulp\spuppet\srepos$/,
30
+ :puppet_repos,
31
+ command: true,
32
+ help: {
33
+ t('help.puppet_repos_key') => t('help.puppet_repos_value')
34
+ }
35
+ )
36
+
37
+ route(
38
+ /^pulp\spubish\s(\S+)$/,
39
+ :publish_repo,
40
+ command: true,
41
+ help: {
42
+ t('help.publish_key') => t('help.publish_value')
43
+ }
44
+ )
45
+
46
+ route(
47
+ /^pulp\srpm\ssearch\s(\S+)(?>\sin\s)?(\S+)?$/,
48
+ :rpm_search,
49
+ command: true,
50
+ help: {
51
+ t('help.rpm_search_key') => t('help.rpm_search_value')
52
+ }
53
+ )
54
+
55
+ route(
56
+ /^pulp\s+puppet\s+search\s+(?>[a_zA-Z0-9]+\/)?(\S+)(?>\s+in\s+)?(\S+)?$/,
57
+ :puppet_search,
58
+ command: true,
59
+ help: {
60
+ t('help.puppet_search_key') => t('help.puppet_search_value')
61
+ }
62
+ )
63
+
64
+ route(
65
+ /^pulp\s+rpm\s+copy/i,
66
+ :copy_rpm,
67
+ command: true,
68
+ kwargs: {
69
+ from: {
70
+ short: "s",
71
+ },
72
+ to: {
73
+ short: "t"
74
+ },
75
+ name: {
76
+ short: "n"
77
+ },
78
+ version: {
79
+ short: "v"
80
+ },
81
+ release: {
82
+ short: "r"
83
+ },
84
+ arch: {
85
+ short: "a"
86
+ },
87
+ delete_newer: {
88
+ short: "d",
89
+ boolean: true
90
+ },
91
+ publish: {
92
+ short: "p",
93
+ boolean: true
94
+ }
95
+ },
96
+ help: {
97
+ t("help.copy_rpm_key") => t("help.copy_rpm_value")
98
+ }
99
+ )
100
+
101
+
102
+ route(
103
+ /^pulp\s+puppet\s+copy/i,
104
+ :copy_puppet,
105
+ command: true,
106
+ kwargs: {
107
+ from: {
108
+ short: "s",
109
+ },
110
+ to: {
111
+ short: "t"
112
+ },
113
+ author: {
114
+ short: "a"
115
+ },
116
+ name: {
117
+ short: "n"
118
+ },
119
+ version: {
120
+ short: "v"
121
+ },
122
+ delete_newer: {
123
+ short: "d",
124
+ boolean: true
125
+ },
126
+ publish: {
127
+ short: "p",
128
+ boolean: true
129
+ }
130
+ },
131
+ help: {
132
+ t("help.copy_puppet_key") => t("help.copy_puppet_value")
133
+ }
134
+ )
135
+
136
+ route(
137
+ /^pulp\s+rpm\s+delete\s+newer/i,
138
+ :delete_newer_rpm,
139
+ command: true,
140
+ kwargs: {
141
+ from: {
142
+ short: "s",
143
+ },
144
+ name: {
145
+ short: "n"
146
+ },
147
+ version: {
148
+ short: "v"
149
+ },
150
+ release: {
151
+ short: "r"
152
+ },
153
+ arch: {
154
+ short: "a"
155
+ },
156
+ publish: {
157
+ short: "p",
158
+ boolean: true
159
+ }
160
+ },
161
+ help: {
162
+ t("help.delete_newer_rpm_key") => t("help.delete_newer_rpm_value")
163
+ }
164
+ )
165
+
166
+ route(
167
+ /^pulp\s+puppet\s+delete\s+newer/i,
168
+ :delete_newer_puppet,
169
+ command: true,
170
+ kwargs: {
171
+ from: {
172
+ short: "s",
173
+ },
174
+ author: {
175
+ short: "a"
176
+ },
177
+ name: {
178
+ short: "n"
179
+ },
180
+ version: {
181
+ short: "v"
182
+ },
183
+ publish: {
184
+ short: "p",
185
+ boolean: true
186
+ }
187
+ },
188
+ help: {
189
+ t("help.delete_newer_puppet_key") => t("help.delete_newer_puppet_value")
190
+ }
191
+ )
192
+
193
+ def rpm_repos(response)
194
+ begin
195
+ result=list_repo(REPO_TYPE_RPM)
196
+ #puts "********result"
197
+ s = StringIO.new
198
+ result.each do |r|
199
+ s << "["<< r[:id] << "] : " << r[:name] << "," << r[:description] << "\n"
200
+ end
201
+ response.reply s.string
202
+ rescue Exception => e
203
+ response.reply e.message
204
+ end
205
+ end
206
+
207
+ def puppet_repos(response)
208
+ begin
209
+ result=list_repo(REPO_TYPE_PUPPET)
210
+ #response.reply result.to_json
211
+ s = StringIO.new
212
+ result.each do |r|
213
+ s << "["<< r[:id] << "] : " << r[:name] << "," << r[:description] << "\n"
214
+ end
215
+ response.reply s.string
216
+ rescue Exception => e
217
+ response.reply e.message
218
+ end
219
+ end
220
+
221
+ def publish_repo(response)
222
+ repo_id = response.matchs[0][0]
223
+ if repo_id
224
+ begin
225
+ publish_repo(repo_id)
226
+ response.reply "Command executed successfully"
227
+ rescue Exception => e
228
+ response.reply e.message
229
+ end
230
+ else
231
+ response.reply "No repoistory id specified"
232
+ end
233
+ end
234
+
235
+ def rpm_search(response)
236
+ name = response.matches[0][0]
237
+ repo = response.matches[0][1]
238
+ puts "searching for rpm #{name} in repo #{repo}"
239
+ begin
240
+ # result array of
241
+ # result = {
242
+ # :name => unit["name"],
243
+ # :epoch => unit["epoch"],
244
+ # :version => unit["version"],
245
+ # :release => unit["release"],
246
+ # :checksum => unit["checksum"],
247
+ # :repos => unit["repository_memberships"]
248
+ # }
249
+ result=search_rpm(name, repo)
250
+ s = StringIO.new
251
+ result.each do |r|
252
+ s << "["<< r[:name] << "] : " << r[:version] << "," << r[:release] << "," << r[:repos] <<"\n"
253
+ end
254
+ response.reply s.string
255
+ rescue StandardError => e
256
+ response.reply e.message
257
+ end
258
+
259
+ end
260
+
261
+ def puppet_search(response)
262
+ full_name = response.matches[0][0]
263
+ repo = response.matches[0][1]
264
+ name_spec = full_name.split('/')
265
+ puts "name_spec:#{name_spec}"
266
+ if name_spec.length >1
267
+ author = name_spec[0]
268
+ name = name_spec[1]
269
+ else
270
+ name = full_name
271
+ author = nil
272
+ end
273
+ puts "searching for puppet module #{name} with author: #{author} in repo #{repo}, full_name = #{full_name}"
274
+ begin
275
+ result=search_puppet(author, name, repo)
276
+ s = StringIO.new
277
+ result.each do |r|
278
+ s << "["<< r[:author] << "/" << r[:name]<< "] :" <<r[:version] << "," << r[:repos] <<"\n"
279
+ end
280
+ response.reply s.string
281
+ rescue StandardError => e
282
+ response.reply e.message
283
+ end
284
+ end
285
+
286
+ def copy_rpm(response)
287
+ args = response.extensions[:kwargs]
288
+ from = args[:from]
289
+ to = args[:to]
290
+ release = args[:release]
291
+ name = args[:name]
292
+ version = args[:version]
293
+ arch = args[:arch]
294
+ delete_newer=args[:delete_newer]||false
295
+ publish=args[:publish]||false
296
+ begin
297
+ if from.nil? || to.nil? || release.nil? ||name.nil? || version.nil? || arch.nil?
298
+ raise "Exception: Missing required paramenter"
299
+ end
300
+ copy_rpm_between_repo!(from, to, name, version, release, arch, delete_newer, publish)
301
+ response.reply "Command executed successfully"
302
+ rescue StandardError => e
303
+ response.reply e.message
304
+ end
305
+ end
306
+
307
+ def copy_puppet(response)
308
+ args = response.extensions[:kwargs]
309
+ from = args[:from]
310
+ to = args[:to]
311
+ author = args[:author]
312
+ name = args[:name]
313
+ version = args[:version]
314
+ delete_newer=args[:delete_newer]||false
315
+ publish=args[:publish]||false
316
+ begin
317
+ if from.nil? || to.nil? || author.nil? || name.nil? || version.nil?
318
+ raise "Exception: missing required parameters"
319
+ end
320
+ copy_puppet_between_repo!(from, to, author, name, version, delete_newer, publish)
321
+ response.reply "Command executed successfully"
322
+ rescue StandardError => e
323
+ response.reply e.message
324
+ end
325
+ end
326
+
327
+ def delete_newer_rpm(response)
328
+ args = response.extensions[:kwargs]
329
+ from = args[:from]
330
+ release = args[:release]
331
+ name = args[:name]
332
+ version = args[:version]
333
+ arch = args[:arch]
334
+ publish=args[:publish]||false
335
+ begin
336
+ if from.nil? || author.nil? || name.nil? || version.nil?
337
+ raise "Exception: missing required parameters"
338
+ end
339
+ delete_rpm_newer!(from, name, version, relase, arch, publish)
340
+ response.reply "Command executed successfully"
341
+ rescue StandardError => e
342
+ response.reply e.message
343
+ end
344
+ end
345
+
346
+ def delete_newer_puppet(response)
347
+ args = response.extensions[:kwargs]
348
+ from = args[:from]
349
+ author = args[:author]
350
+ name = args[:name]
351
+ version = args[:version]
352
+ publish=args[:publish]||false
353
+ begin
354
+ if from.nil? || author.nil? || name.nil? || version.nil?
355
+ raise "Exception: missing required parameters"
356
+ end
357
+ delete_puppet_newer!(from, author, name, version, publish)
358
+ response.reply "Command executed successfully"
359
+ rescue StandardError => e
360
+ response.reply e.message
361
+ end
362
+ end
363
+
364
+
365
+ Lita.register_handler(self)
366
+ #Lita.register_hook(:trigger_route, Lita::Extensions::KeywordArguments)
367
+ end
368
+ end
369
+ end