runcible 1.2.0 → 1.3.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (43) hide show
  1. data/Gemfile +2 -1
  2. data/README.md +1 -1
  3. data/Rakefile +16 -10
  4. data/lib/runcible.rb +1 -1
  5. data/lib/runcible/base.rb +24 -29
  6. data/lib/runcible/extensions/consumer.rb +25 -26
  7. data/lib/runcible/extensions/consumer_group.rb +10 -13
  8. data/lib/runcible/extensions/distribution.rb +0 -2
  9. data/lib/runcible/extensions/docker_image.rb +0 -1
  10. data/lib/runcible/extensions/errata.rb +0 -3
  11. data/lib/runcible/extensions/package_category.rb +0 -3
  12. data/lib/runcible/extensions/package_group.rb +0 -2
  13. data/lib/runcible/extensions/puppet_module.rb +0 -3
  14. data/lib/runcible/extensions/repository.rb +88 -72
  15. data/lib/runcible/extensions/rpm.rb +3 -5
  16. data/lib/runcible/extensions/unit.rb +10 -13
  17. data/lib/runcible/extensions/yum_repo_metadata_file.rb +0 -3
  18. data/lib/runcible/instance.rb +22 -28
  19. data/lib/runcible/models/distributor.rb +4 -5
  20. data/lib/runcible/models/docker_distributor.rb +4 -4
  21. data/lib/runcible/models/docker_importer.rb +2 -2
  22. data/lib/runcible/models/export_distributor.rb +1 -1
  23. data/lib/runcible/models/importer.rb +3 -6
  24. data/lib/runcible/models/iso_distributor.rb +3 -3
  25. data/lib/runcible/models/iso_importer.rb +1 -1
  26. data/lib/runcible/models/nodes_http_distributor.rb +0 -1
  27. data/lib/runcible/models/puppet_distributor.rb +2 -2
  28. data/lib/runcible/models/yum_clone_distributor.rb +3 -4
  29. data/lib/runcible/models/yum_distributor.rb +7 -7
  30. data/lib/runcible/models/yum_importer.rb +17 -17
  31. data/lib/runcible/resources/consumer.rb +17 -20
  32. data/lib/runcible/resources/consumer_group.rb +13 -15
  33. data/lib/runcible/resources/content.rb +10 -10
  34. data/lib/runcible/resources/event_notifier.rb +5 -9
  35. data/lib/runcible/resources/repository.rb +23 -23
  36. data/lib/runcible/resources/repository_group.rb +5 -7
  37. data/lib/runcible/resources/repository_schedule.rb +5 -7
  38. data/lib/runcible/resources/role.rb +5 -8
  39. data/lib/runcible/resources/task.rb +10 -13
  40. data/lib/runcible/resources/unit.rb +3 -6
  41. data/lib/runcible/resources/user.rb +7 -10
  42. data/lib/runcible/version.rb +1 -1
  43. metadata +2 -2
data/Gemfile CHANGED
@@ -10,8 +10,9 @@ group :test do
10
10
  gem 'minitest', '~> 4.7'
11
11
  gem 'parseconfig'
12
12
  gem 'mocha', "~> 0.14.0"
13
+ gem 'rubocop', "0.24.1"
13
14
  end
14
15
 
15
16
  group :debug do
16
- gem 'debugger'
17
+ gem 'debugger' if RUBY_VERSION == "1.9.3"
17
18
  end
data/README.md CHANGED
@@ -4,7 +4,7 @@
4
4
 
5
5
  Exposing Pulp's juiciest parts. http://www.pulpproject.org/
6
6
 
7
- Latest Live Tested Version: **pulp-server-2.5.0-0.1.alpha.el6.noarch**
7
+ Latest Live Tested Version: **pulp-server-2.5.0-0.7.beta.el6.noarch**
8
8
 
9
9
  Current stable Runcible: https://github.com/Katello/runcible/tree/0.3
10
10
 
data/Rakefile CHANGED
@@ -1,6 +1,6 @@
1
1
  #!/usr/bin/env rake
2
- require "bundler/gem_tasks"
3
- require "rake/testtask"
2
+ require 'bundler/gem_tasks'
3
+ require 'rake/testtask'
4
4
 
5
5
  def clear_cassettes
6
6
  `rm -rf test/fixtures/vcr_cassettes/*.yml`
@@ -9,9 +9,8 @@ def clear_cassettes
9
9
  print "Cassettes cleared\n"
10
10
  end
11
11
 
12
-
13
12
  namespace :test do
14
- "Runs the unit tests"
13
+ desc 'Runs the unit tests'
15
14
  Rake::TestTask.new :unit do |t|
16
15
  t.pattern = 'test/unit/test_*.rb'
17
16
  end
@@ -27,9 +26,9 @@ namespace :test do
27
26
  options[:logging] = ENV['logging']
28
27
 
29
28
  if !['new_episodes', 'all', 'none', 'once'].include?(options[:mode])
30
- puts "Invalid test mode"
29
+ puts 'Invalid test mode'
31
30
  else
32
- require "./test/test_runner"
31
+ require './test/test_runner'
33
32
 
34
33
  test_runner = PulpMiniTestRunner.new
35
34
 
@@ -41,13 +40,13 @@ namespace :test do
41
40
 
42
41
  clear_cassettes if options[:mode] == 'all' && options[:test_name].nil? && ENV['record'] != 'false'
43
42
  test_runner.run_tests(task_name, options)
44
- Rake::Task[:update_test_version].invoke if options[:mode] == "all" && ENV['record'] != 'false'
43
+ Rake::Task[:update_test_version].invoke if options[:mode] == 'all' && ENV['record'] != 'false'
45
44
  end
46
45
  end
47
46
  end
48
47
  end
49
48
 
50
- desc "Updats the version of Pulp tested against in README"
49
+ desc 'Updats the version of Pulp tested against in README'
51
50
  task :update_test_version do
52
51
  text = File.open('README.md').read
53
52
 
@@ -60,15 +59,22 @@ task :update_test_version do
60
59
  end
61
60
  end
62
61
 
63
- desc "Clears out all cassette files"
62
+ desc 'Clears out all cassette files'
64
63
  task :clear_cassettes do
65
64
  clear_cassettes
66
65
  end
67
66
 
68
- desc "Runs all tests"
67
+ desc 'Runs all tests'
69
68
  task :test do
70
69
  Rake::Task['test:unit'].invoke
71
70
  Rake::Task['test:models'].invoke
72
71
  Rake::Task['test:resources'].invoke
73
72
  Rake::Task['test:extensions'].invoke
74
73
  end
74
+
75
+ begin
76
+ require 'rubocop/rake_task'
77
+ RuboCop::RakeTask.new
78
+ rescue
79
+ puts "Rubocop not loaded"
80
+ end
@@ -36,4 +36,4 @@ resources += Dir[File.dirname(__FILE__) + '/runcible/models/importer.rb']
36
36
  resources += Dir[File.dirname(__FILE__) + '/runcible/models/distributor.rb']
37
37
  resources += Dir[File.dirname(__FILE__) + '/runcible/models/*.rb']
38
38
 
39
- resources.uniq.each{ |f| require f }
39
+ resources.uniq.each { |f| require f }
@@ -26,11 +26,9 @@ require 'oauth'
26
26
  require 'json'
27
27
  require 'thread'
28
28
 
29
-
30
29
  module Runcible
31
30
  class Base
32
-
33
- def initialize(config={})
31
+ def initialize(config = {})
34
32
  @mutex = Mutex.new
35
33
  @config = config
36
34
  end
@@ -42,7 +40,7 @@ module Runcible
42
40
  def config
43
41
  @mutex.synchronize do
44
42
  @config = @lazy_config.call if defined?(@lazy_config)
45
- raise Runcible::ConfigurationUndefinedError, Runcible::ConfigurationUndefinedError.message unless @config
43
+ fail Runcible::ConfigurationUndefinedError, Runcible::ConfigurationUndefinedError.message unless @config
46
44
  @config
47
45
  end
48
46
  end
@@ -51,16 +49,12 @@ module Runcible
51
49
  self.class.path(*args)
52
50
  end
53
51
 
54
- def call(method, path, options={})
52
+ def call(method, path, options = {})
55
53
  clone_config = self.config.clone
56
54
  #on occation path will already have prefix (sync cancel)
57
- path = clone_config[:api_path] + path if !path.start_with?(clone_config[:api_path])
55
+ path = clone_config[:api_path] + path unless path.start_with?(clone_config[:api_path])
58
56
 
59
57
  RestClient.log = []
60
- logger = clone_config[:logging][:logger]
61
- debug_logging = clone_config[:logging][:debug]
62
- exception_logging = clone_config[:logging][:exception]
63
-
64
58
  headers = clone_config[:headers].clone
65
59
 
66
60
  get_params = options[:params] if options[:params]
@@ -69,10 +63,11 @@ module Runcible
69
63
  client_options = {}
70
64
  client_options[:timeout] = clone_config[:timeout] if clone_config[:timeout]
71
65
  client_options[:open_timeout] = clone_config[:open_timeout] if clone_config[:open_timeout]
66
+ client_options[:verify_ssl] = clone_config[:verify_ssl] unless clone_config[:verify_ssl].nil?
72
67
 
73
68
  if clone_config[:oauth]
74
69
  headers = add_oauth_header(method, path, headers) if clone_config[:oauth]
75
- headers["pulp-user"] = clone_config[:user]
70
+ headers['pulp-user'] = clone_config[:user]
76
71
  client = RestClient::Resource.new(clone_config[:url], client_options)
77
72
  else
78
73
  client_options[:user] = clone_config[:user]
@@ -93,7 +88,7 @@ module Runcible
93
88
  end
94
89
 
95
90
  def get_response(client, path, *args)
96
- client[path].send(*args) do |response, request, result, &block|
91
+ client[path].send(*args) do |response, request, result, &_block|
97
92
  resp = response.return!(request, result)
98
93
  log_debug
99
94
  return resp
@@ -101,13 +96,14 @@ module Runcible
101
96
  end
102
97
 
103
98
  def combine_get_params(path, params)
104
- query_string = params.collect do |k, v|
99
+ query_string = params.map do |k, v|
105
100
  if v.is_a? Array
106
- v.collect{|y| "#{k.to_s}=#{y.to_s}" }.join('&')
101
+ v.map { |y| "#{k}=#{y}" }.join('&')
107
102
  else
108
- "#{k.to_s}=#{v.to_s}"
103
+ "#{k}=#{v}"
109
104
  end
110
- end.flatten().join('&')
105
+ end
106
+ query_string = query_string.flatten.join('&')
111
107
  path + "?#{query_string}"
112
108
  end
113
109
 
@@ -145,19 +141,20 @@ module Runcible
145
141
  if body.respond_to? :with_indifferent_access
146
142
  body = body.with_indifferent_access
147
143
  elsif body.is_a? Array
148
- body = body.collect do |i|
144
+ body = body.map do |i|
149
145
  i.respond_to?(:with_indifferent_access) ? i.with_indifferent_access : i
150
146
  end
151
147
  end
152
148
  response = RestClient::Response.create(body, response.net_http_res, response.args)
153
149
  rescue JSON::ParserError
150
+ log_exception
154
151
  end
155
152
 
156
153
  return response
157
154
  end
158
155
 
159
- def required_params(local_names, binding, keys_to_remove=[])
160
- local_names = local_names.reduce({}) do |acc, v|
156
+ def required_params(local_names, binding, keys_to_remove = [])
157
+ local_names = local_names.each_with_object({}) do |v, acc|
161
158
  value = binding.eval(v.to_s) unless v == :_
162
159
  acc[v] = value unless value.nil?
163
160
  acc
@@ -166,8 +163,8 @@ module Runcible
166
163
  #The double delete is to support 1.8.7 and 1.9.3
167
164
  local_names.delete(:payload)
168
165
  local_names.delete(:optional)
169
- local_names.delete("payload")
170
- local_names.delete("optional")
166
+ local_names.delete('payload')
167
+ local_names.delete('optional')
171
168
  keys_to_remove.each do |key|
172
169
  local_names.delete(key)
173
170
  local_names.delete(key.to_sym)
@@ -183,9 +180,9 @@ module Runcible
183
180
  def add_oauth_header(method, path, headers)
184
181
  default_options = { :site => config[:url],
185
182
  :http_method => method,
186
- :request_token_path => "",
187
- :authorize_path => "",
188
- :access_token_path => "" }
183
+ :request_token_path => '',
184
+ :authorize_path => '',
185
+ :access_token_path => '' }
189
186
 
190
187
  default_options[:ca_file] = config[:ca_cert_file] unless config[:ca_cert_file].nil?
191
188
  consumer = OAuth::Consumer.new(config[:oauth][:oauth_key], config[:oauth][:oauth_secret], default_options)
@@ -204,7 +201,7 @@ module Runcible
204
201
 
205
202
  def log_debug
206
203
  if self.config[:logging][:debug]
207
- log_message = generate_log_message
204
+ log_message = generate_log_message
208
205
  self.config[:logging][:logger].debug(log_message)
209
206
  end
210
207
  end
@@ -223,14 +220,12 @@ module Runcible
223
220
  def logger
224
221
  self.config[:logging][:logger]
225
222
  end
226
-
227
- end
223
+ end
228
224
 
229
225
  class ConfigurationUndefinedError < StandardError
230
-
231
226
  def self.message
232
227
  # override me to change the error message
233
- "Configuration not set. Runcible::Base.config= must be called before Runcible::Base.config."
228
+ 'Configuration not set. Runcible::Base.config= must be called before Runcible::Base.config.'
234
229
  end
235
230
  end
236
231
  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 Consumer < Runcible::Resources::Consumer
28
-
29
27
  # Bind a consumer to all repositories with a given ID
30
28
  #
31
29
  # @param [String] id the consumer ID
@@ -35,10 +33,11 @@ module Runcible
35
33
  # @option options [Boolean] :notify_agent sends consumer a notification
36
34
  # @option options [Hash] :binding_config sends consumer a notification
37
35
  # @return [RestClient::Response] set of tasks representing each bind operation
38
- def bind_all(id, repo_id, type_id, options={})
39
- repository_extension.retrieve_with_details(repo_id)['distributors'].collect do |d|
36
+ def bind_all(id, repo_id, type_id, options = {})
37
+ details = repository_extension.retrieve_with_details(repo_id)['distributors'].map do |d|
40
38
  bind(id, repo_id, d['id'], options) if d['distributor_type_id'] == type_id
41
- end.reject{|f| f.nil?}.flatten
39
+ end
40
+ details.compact.flatten
42
41
  end
43
42
 
44
43
  # Unbind a consumer to all repositories with a given ID
@@ -48,9 +47,10 @@ module Runcible
48
47
  # @param [String] type_id the distributor type_id to unbind from
49
48
  # @return [RestClient::Response] set of tasks representing each unbind operation
50
49
  def unbind_all(id, repo_id, type_id)
51
- repository_extension.retrieve_with_details(repo_id)['distributors'].collect do |d|
50
+ details = repository_extension.retrieve_with_details(repo_id)['distributors'].map do |d|
52
51
  unbind(id, repo_id, d['id']) if d['distributor_type_id'] == type_id
53
- end.reject{|f| f.nil?}.flatten
52
+ end
53
+ details.compact.flatten
54
54
  end
55
55
 
56
56
  # Activate a consumer as a pulp node
@@ -58,9 +58,9 @@ module Runcible
58
58
  # @param [String] id the consumer ID
59
59
  # @param [String] update_strategy update_strategy for the node (defaults to additive)
60
60
  # @return [RestClient::Response] response from update call
61
- def activate_node(id, update_strategy="additive")
62
- delta = {:notes=>{'_child-node' => true,
63
- '_node-update-strategy' => update_strategy}}
61
+ def activate_node(id, update_strategy = 'additive')
62
+ delta = {:notes => {'_child-node' => true,
63
+ '_node-update-strategy' => update_strategy}}
64
64
  self.update(id, delta)
65
65
  end
66
66
 
@@ -69,9 +69,9 @@ module Runcible
69
69
  # @param [String] id the consumer ID
70
70
  # @return [RestClient::Response] response from update call
71
71
  def deactivate_node(id)
72
- delta = {:notes=>{'child-node' => nil,
73
- 'update_strategy' => nil}}
74
- self.update(id, :delta=>delta)
72
+ delta = {:notes => {'child-node' => nil,
73
+ 'update_strategy' => nil}}
74
+ self.update(id, :delta => delta)
75
75
  end
76
76
 
77
77
  # Install content to a consumer
@@ -81,7 +81,7 @@ module Runcible
81
81
  # @param [Array] units array of units to install
82
82
  # @param [Hash] options to pass to content install
83
83
  # @return [RestClient::Response] task representing the install operation
84
- def install_content(id, type_id, units, options={})
84
+ def install_content(id, type_id, units, options = {})
85
85
  install_units(id, generate_content(type_id, units), options)
86
86
  end
87
87
 
@@ -92,7 +92,7 @@ module Runcible
92
92
  # @param [Array] units array of units to update
93
93
  # @param [Hash] options to pass to content update
94
94
  # @return [RestClient::Response] task representing the update operation
95
- def update_content(id, type_id, units, options={})
95
+ def update_content(id, type_id, units, options = {})
96
96
  update_units(id, generate_content(type_id, units, options), options)
97
97
  end
98
98
 
@@ -112,18 +112,18 @@ module Runcible
112
112
  # @param [Array] units array of units
113
113
  # @param [Hash] options contains options which may impact the format of the content (e.g :all => true)
114
114
  # @return [Array] array of formatted content units
115
- def generate_content(type_id, units, options={})
115
+ def generate_content(type_id, units, options = {})
116
116
  content = []
117
117
 
118
118
  case type_id
119
- when 'rpm', 'package_group'
120
- unit_key = :name
121
- when 'erratum'
122
- unit_key = :id
123
- when 'repository'
124
- unit_key = :repo_id
125
- else
126
- unit_key = :id
119
+ when 'rpm', 'package_group'
120
+ unit_key = :name
121
+ when 'erratum'
122
+ unit_key = :id
123
+ when 'repository'
124
+ unit_key = :repo_id
125
+ else
126
+ unit_key = :id
127
127
  end
128
128
 
129
129
  if options[:all]
@@ -132,7 +132,7 @@ module Runcible
132
132
  content_unit[:unit_key] = {}
133
133
  content.push(content_unit)
134
134
  elsif units.nil?
135
- content = [{:unit_key=> nil, :type_id=>type_id}]
135
+ content = [{:unit_key => nil, :type_id => type_id}]
136
136
  else
137
137
  units.each do |unit|
138
138
  content_unit = {}
@@ -184,7 +184,6 @@ module Runcible
184
184
  def repository_extension
185
185
  Runcible::Extensions::Repository.new(self.config)
186
186
  end
187
-
188
187
  end
189
188
  end
190
189
  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 ConsumerGroup < Runcible::Resources::ConsumerGroup
28
-
29
27
  # Add consumers by ID to a consumer group
30
28
  #
31
29
  # @param [String] id the consumer group ID
@@ -51,7 +49,7 @@ module Runcible
51
49
  def make_consumer_criteria(consumer_ids)
52
50
  {:criteria =>
53
51
  {:filters =>
54
- {:id =>{"$in" =>consumer_ids}}
52
+ {:id => {'$in' => consumer_ids}}
55
53
  }
56
54
  }
57
55
  end
@@ -63,7 +61,7 @@ module Runcible
63
61
  # @param [Array] units array of units to install
64
62
  # @param [Hash] options to pass to content install
65
63
  # @return [RestClient::Response] task representing the install operation
66
- def install_content(id, type_id, units, options={})
64
+ def install_content(id, type_id, units, options = {})
67
65
  install_units(id, generate_content(type_id, units), options)
68
66
  end
69
67
 
@@ -74,7 +72,7 @@ module Runcible
74
72
  # @param [Array] units array of units to update
75
73
  # @param [Hash] options to pass to content update
76
74
  # @return [RestClient::Response] task representing the update operation
77
- def update_content(id, type_id, units, options={})
75
+ def update_content(id, type_id, units, options = {})
78
76
  update_units(id, generate_content(type_id, units, options), options)
79
77
  end
80
78
 
@@ -94,16 +92,16 @@ module Runcible
94
92
  # @param [Array] units array of units
95
93
  # @param [Hash] options contains options which may impact the format of the content (e.g :all => true)
96
94
  # @return [Array] array of formatted content units
97
- def generate_content(type_id, units, options={})
95
+ def generate_content(type_id, units, options = {})
98
96
  content = []
99
97
 
100
98
  case type_id
101
- when 'rpm', 'package_group'
102
- unit_key = :name
103
- when 'erratum'
104
- unit_key = :id
105
- else
106
- unit_key = :id
99
+ when 'rpm', 'package_group'
100
+ unit_key = :name
101
+ when 'erratum'
102
+ unit_key = :id
103
+ else
104
+ unit_key = :id
107
105
  end
108
106
 
109
107
  if options[:all]
@@ -121,7 +119,6 @@ module Runcible
121
119
  end
122
120
  content
123
121
  end
124
-
125
122
  end
126
123
  end
127
124
  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 Distribution < Runcible::Extensions::Unit
28
-
29
27
  def self.content_type
30
28
  'distribution'
31
29
  end