vmpooler 0.8.1 → 0.8.2

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 584fd57d5c5eb3f4ac1be3ee2684c306d2f2d5c3
4
- data.tar.gz: d3acf9c90d9957e26916bf6eb8145ca312f5bda5
3
+ metadata.gz: 9ca5e041d051fc1f66b4de635492388443b35ec4
4
+ data.tar.gz: 0389293f134e875f3a7f74da8cfcb6f72bd94601
5
5
  SHA512:
6
- metadata.gz: 2d78a80241c539b5fb78ad40135eb9c1a20f6d76f204c28380b5618d62ce63d3a86cfab7adb1dc1e916e7b9c36ad35e258417dc0f5f32573b5b741ec97eb0a2c
7
- data.tar.gz: 56f8969dc41f1c2ca038efc1bc38b07aadb641acd9ff5390a5ac9eafa8623c787e3a66a074f7eabe23fa394bd575d2cdeaa9cf9cfef5e1744b2727404b8b293d
6
+ metadata.gz: 3cadcac1a60a44662720f498ce83af5506e8c13ab39c9029fa53c030936d22d942529a41873d7ae7489d64487388f195d99f944f831e51cbb172e96c111a0052
7
+ data.tar.gz: f1ff4a6f52c8a8981f4ce126add76eee6d1ae863ba078053d48fa537e78ebc249989192abbe728482385de65208e7180a6e77c9c7c6849de35eafaec39fb194d
@@ -140,7 +140,7 @@ module Vmpooler
140
140
  end
141
141
 
142
142
  def hostname_shorten(hostname, domain=nil)
143
- if domain && hostname =~ /^\w+\.#{domain}$/
143
+ if domain && hostname =~ /^[\w-]+\.#{domain}$/
144
144
  hostname = hostname[/[^\.]+/]
145
145
  end
146
146
 
@@ -267,10 +267,34 @@ module Vmpooler
267
267
  end
268
268
  end
269
269
 
270
- def _clone_vm(pool_name, provider)
270
+ def generate_and_check_hostname(pool_name)
271
271
  # Generate a randomized hostname
272
272
  random_name = [@name_generator.adjective(max: 7), @name_generator.noun(max: 7)].join('-')
273
- new_vmname = $config[:config]['prefix'] + random_name
273
+ hostname = $config[:config]['prefix'] + random_name
274
+ available = $redis.hlen('vmpooler__vm__' + hostname) == 0
275
+
276
+ return hostname, available
277
+ end
278
+
279
+ def find_unique_hostname(pool_name)
280
+ hostname_retries = 0
281
+ max_hostname_retries = 3
282
+ while hostname_retries < max_hostname_retries
283
+ hostname, available = generate_and_check_hostname(pool_name)
284
+ break if available
285
+
286
+ hostname_retries += 1
287
+ $metrics.increment("errors.duplicatehostname.#{pool_name}")
288
+ $logger.log('s', "[!] [#{pool_name}] Generated hostname #{hostname} was not unique (attempt \##{hostname_retries} of #{max_hostname_retries})")
289
+ end
290
+
291
+ raise "Unable to generate a unique hostname after #{hostname_retries} attempts. The last hostname checked was #{hostname}" unless available
292
+
293
+ hostname
294
+ end
295
+
296
+ def _clone_vm(pool_name, provider)
297
+ new_vmname = find_unique_hostname(pool_name)
274
298
 
275
299
  # Add VM to Redis inventory ('pending' pool)
276
300
  $redis.sadd('vmpooler__pending__' + pool_name, new_vmname)
@@ -1,3 +1,3 @@
1
1
  module Vmpooler
2
- VERSION = '0.8.1'.freeze
2
+ VERSION = '0.8.2'.freeze
3
3
  end
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.8.1
4
+ version: 0.8.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Puppet
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2019-10-25 00:00:00.000000000 Z
11
+ date: 2019-11-06 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: pickup