vmpooler 0.10.3 → 0.11.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.
@@ -1,27 +1,28 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'pathname'
2
4
 
3
5
  module Vmpooler
4
6
  class Providers
5
-
6
7
  # @param names [Array] - an array of names or string name of a provider
7
8
  # @return [Array] - list of provider files loaded
8
9
  # ie. ["lib/vmpooler/providers/base.rb", "lib/vmpooler/providers/dummy.rb", "lib/vmpooler/providers/vsphere.rb"]
9
10
  def self.load_by_name(names)
10
11
  names = Array(names)
11
- instance = self.new
12
- names.map {|name| instance.load_from_gems(name)}.flatten
12
+ instance = new
13
+ names.map { |name| instance.load_from_gems(name) }.flatten
13
14
  end
14
15
 
15
16
  # @return [Array] - array of provider files
16
17
  # ie. ["lib/vmpooler/providers/base.rb", "lib/vmpooler/providers/dummy.rb", "lib/vmpooler/providers/vsphere.rb"]
17
18
  # although these files can come from any gem
18
19
  def self.load_all_providers
19
- self.new.load_from_gems
20
+ new.load_from_gems
20
21
  end
21
22
 
22
23
  # @return [Array] - returns an array of gem names that contain a provider
23
24
  def self.installed_providers
24
- self.new.vmpooler_provider_gem_list.map(&:name)
25
+ new.vmpooler_provider_gem_list.map(&:name)
25
26
  end
26
27
 
27
28
  # @return [Array] returns a list of vmpooler providers gem plugin specs
@@ -38,7 +39,7 @@ module Vmpooler
38
39
  # we don't exactly know if the provider name matches the main file name that should be loaded
39
40
  # so we use globs to get everything like the name
40
41
  # this could mean that vsphere5 and vsphere6 are loaded when only vsphere5 is used
41
- Dir.glob(File.join(gem_path, "*#{name}*.rb")).each do |file|
42
+ Dir.glob(File.join(gem_path, "*#{name}*.rb")).sort.each do |file|
42
43
  require file
43
44
  end
44
45
  end
@@ -50,7 +51,7 @@ module Vmpooler
50
51
  # @return [String] - the relative path to the vmpooler provider dir
51
52
  # this is used when searching gems for this path
52
53
  def provider_path
53
- File.join('lib','vmpooler','providers')
54
+ File.join('lib', 'vmpooler', 'providers')
54
55
  end
55
56
 
56
57
  # Add constants to array to skip over classes, ie. Vmpooler::PoolManager::Provider::Dummy
@@ -81,26 +82,24 @@ module Vmpooler
81
82
  @plugin_map ||= Hash[plugin_classes.map { |gem| [gem.send(:name), gem] }]
82
83
  end
83
84
 
84
-
85
-
86
85
  # Internal: Retrieve a list of available gem paths from RubyGems.
87
86
  #
88
87
  # Returns an Array of Pathname objects.
89
88
  def gem_directories
90
89
  dirs = []
91
- if has_rubygems?
90
+ if rubygems?
92
91
  dirs = gemspecs.map do |spec|
93
- lib_path = File.expand_path(File.join(spec.full_gem_path,provider_path))
94
- lib_path if File.exists? lib_path
92
+ lib_path = File.expand_path(File.join(spec.full_gem_path, provider_path))
93
+ lib_path if File.exist? lib_path
95
94
  end + included_lib_dirs
96
95
  end
97
- dirs.reject { |dir| dir.nil? }.uniq
96
+ dirs.reject(&:nil?).uniq
98
97
  end
99
98
 
100
99
  # Internal: Check if RubyGems is loaded and available.
101
100
  #
102
101
  # Returns true if RubyGems is available, false if not.
103
- def has_rubygems?
102
+ def rubygems?
104
103
  defined? ::Gem
105
104
  end
106
105
 
@@ -114,6 +113,5 @@ module Vmpooler
114
113
  Gem.searcher.init_gemspecs
115
114
  end
116
115
  end
117
-
118
116
  end
119
117
  end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'rubygems' unless defined?(Gem)
2
4
  require 'statsd'
3
5
 
@@ -6,9 +8,7 @@ module Vmpooler
6
8
  attr_reader :server, :port, :prefix
7
9
 
8
10
  def initialize(params = {})
9
- if params['server'].nil? || params['server'].empty?
10
- raise ArgumentError, "Statsd server is required. Config: #{params.inspect}"
11
- end
11
+ raise ArgumentError, "Statsd server is required. Config: #{params.inspect}" if params['server'].nil? || params['server'].empty?
12
12
 
13
13
  host = params['server']
14
14
  @port = params['port'] || 8125
@@ -18,20 +18,20 @@ module Vmpooler
18
18
 
19
19
  def increment(label)
20
20
  server.increment(prefix + '.' + label)
21
- rescue => err
22
- $stderr.puts "Failure incrementing #{prefix}.#{label} on statsd server [#{server}:#{port}]: #{err}"
21
+ rescue StandardError => e
22
+ warn "Failure incrementing #{prefix}.#{label} on statsd server [#{server}:#{port}]: #{e}"
23
23
  end
24
24
 
25
25
  def gauge(label, value)
26
26
  server.gauge(prefix + '.' + label, value)
27
- rescue => err
28
- $stderr.puts "Failure updating gauge #{prefix}.#{label} on statsd server [#{server}:#{port}]: #{err}"
27
+ rescue StandardError => e
28
+ warn "Failure updating gauge #{prefix}.#{label} on statsd server [#{server}:#{port}]: #{e}"
29
29
  end
30
30
 
31
31
  def timing(label, duration)
32
32
  server.timing(prefix + '.' + label, duration)
33
- rescue => err
34
- $stderr.puts "Failure updating timing #{prefix}.#{label} on statsd server [#{server}:#{port}]: #{err}"
33
+ rescue StandardError => e
34
+ warn "Failure updating timing #{prefix}.#{label} on statsd server [#{server}:#{port}]: #{e}"
35
35
  end
36
36
  end
37
37
  end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Vmpooler
2
- VERSION = '0.10.3'.freeze
4
+ VERSION = '0.11.0'
3
5
  end
data/lib/vmpooler.rb CHANGED
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Vmpooler
2
4
  require 'date'
3
5
  require 'json'
@@ -27,13 +29,21 @@ module Vmpooler
27
29
  # Take the name of the config file either from an ENV variable or from the filepath argument
28
30
  config_file = ENV['VMPOOLER_CONFIG_FILE'] || filepath
29
31
  parsed_config = YAML.load_file(config_file) if File.exist? config_file
32
+ parsed_config[:config]['extra_config'] = ENV['EXTRA_CONFIG'] if ENV['EXTRA_CONFIG']
33
+ if parsed_config[:config]['extra_config']
34
+ extra_configs = parsed_config[:config]['extra_config'].split(',')
35
+ extra_configs.each do |config|
36
+ extra_config = YAML.load_file(config)
37
+ parsed_config.merge!(extra_config)
38
+ end
39
+ end
30
40
  end
31
41
 
32
42
  parsed_config ||= { config: {} }
33
43
 
34
44
  # Bail out if someone attempts to start vmpooler with dummy authentication
35
45
  # without enbaling debug mode.
36
- if parsed_config.has_key? :auth
46
+ if parsed_config.key? :auth
37
47
  if parsed_config[:auth]['provider'] == 'dummy'
38
48
  unless ENV['VMPOOLER_DEBUG']
39
49
  warning = [
@@ -50,7 +60,7 @@ module Vmpooler
50
60
  parsed_config[:config]['task_limit'] = string_to_int(ENV['TASK_LIMIT']) || parsed_config[:config]['task_limit'] || 10
51
61
  parsed_config[:config]['migration_limit'] = string_to_int(ENV['MIGRATION_LIMIT']) if ENV['MIGRATION_LIMIT']
52
62
  parsed_config[:config]['vm_checktime'] = string_to_int(ENV['VM_CHECKTIME']) || parsed_config[:config]['vm_checktime'] || 1
53
- parsed_config[:config]['vm_lifetime'] = string_to_int(ENV['VM_LIFETIME']) || parsed_config[:config]['vm_lifetime'] || 24
63
+ parsed_config[:config]['vm_lifetime'] = string_to_int(ENV['VM_LIFETIME']) || parsed_config[:config]['vm_lifetime'] || 24
54
64
  parsed_config[:config]['prefix'] = ENV['PREFIX'] || parsed_config[:config]['prefix'] || ''
55
65
 
56
66
  parsed_config[:config]['logfile'] = ENV['LOGFILE'] if ENV['LOGFILE']
@@ -86,7 +96,7 @@ module Vmpooler
86
96
  parsed_config[:graphite]['port'] = string_to_int(ENV['GRAPHITE_PORT']) if ENV['GRAPHITE_PORT']
87
97
 
88
98
  parsed_config[:auth] = parsed_config[:auth] || {} if ENV['AUTH_PROVIDER']
89
- if parsed_config.has_key? :auth
99
+ if parsed_config.key? :auth
90
100
  parsed_config[:auth]['provider'] = ENV['AUTH_PROVIDER'] if ENV['AUTH_PROVIDER']
91
101
  parsed_config[:auth][:ldap] = parsed_config[:auth][:ldap] || {} if parsed_config[:auth]['provider'] == 'ldap'
92
102
  parsed_config[:auth][:ldap]['host'] = ENV['LDAP_HOST'] if ENV['LDAP_HOST']
@@ -122,10 +132,8 @@ module Vmpooler
122
132
  end
123
133
  end
124
134
 
125
- if parsed_config[:tagfilter]
126
- parsed_config[:tagfilter].keys.each do |tag|
127
- parsed_config[:tagfilter][tag] = Regexp.new(parsed_config[:tagfilter][tag])
128
- end
135
+ parsed_config[:tagfilter]&.keys&.each do |tag|
136
+ parsed_config[:tagfilter][tag] = Regexp.new(parsed_config[:tagfilter][tag])
129
137
  end
130
138
 
131
139
  parsed_config[:uptime] = Time.now
@@ -171,7 +179,7 @@ module Vmpooler
171
179
  def self.pool_index(pools)
172
180
  pools_hash = {}
173
181
  index = 0
174
- for pool in pools
182
+ pools.each do |pool|
175
183
  pools_hash[pool['name']] = index
176
184
  index += 1
177
185
  end
@@ -182,14 +190,15 @@ module Vmpooler
182
190
  # Returns a integer if input is a string
183
191
  return if s.nil?
184
192
  return unless s =~ /\d/
185
- return Integer(s)
193
+
194
+ Integer(s)
186
195
  end
187
196
 
188
197
  def self.true?(obj)
189
- obj.to_s.downcase == "true"
198
+ obj.to_s.downcase == 'true'
190
199
  end
191
200
 
192
- def self.set_linked_clone(parsed_config)
201
+ def self.set_linked_clone(parsed_config) # rubocop:disable Naming/AccessorMethodName
193
202
  parsed_config[:config]['create_linked_clones'] = parsed_config[:config]['create_linked_clones'] || true
194
203
  parsed_config[:config]['create_linked_clones'] = ENV['CREATE_LINKED_CLONES'] if ENV['CREATE_LINKED_CLONES'] =~ /true|false/
195
204
  parsed_config[:config]['create_linked_clones'] = true?(parsed_config[:config]['create_linked_clones']) if parsed_config[:config]['create_linked_clones']
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: vmpooler
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.10.3
4
+ version: 0.11.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Puppet
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-03-04 00:00:00.000000000 Z
11
+ date: 2020-03-11 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: pickup