vmpooler 0.10.3 → 0.11.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -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