vmpooler-provider-vsphere 2.0.0 → 3.0.0

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
  SHA256:
3
- metadata.gz: 46013f5e68edeec42ae08f63021c3957812f3ac5e9bd78cd3d78851c626d9a18
4
- data.tar.gz: 9d0423df8536e4e0caf6eb47079dab148cff44376194ce5e1ea6fac29492170c
3
+ metadata.gz: d2eb4a595094d7c121a9308d3014fb03c08a5d9de9a3e56eacca6bdd98f0664f
4
+ data.tar.gz: b020dbb9c7f1391f72998af060d7e65ba069d147c27414d8bf324d50c64f0cb2
5
5
  SHA512:
6
- metadata.gz: f15ef899ceb62b54392d524475e4b503fd2286611618f2a2921ed41a16e52d523de12b267efbc6c2c2a8ff6170189b1ca5ae4607f12b618f37c8a90a6fe38a7b
7
- data.tar.gz: 7d3c816d9e0925fdcb818c3074fd0de4e6841e677879b076a25225934abb8e1c5fa69bee566ed51203d509ceabadff1e114ec99e13c6592fe7289ba08d8a5bec
6
+ metadata.gz: 1e295730311c7133b17726fc1c3c3f123b7ec8533781dbdc62f7d5e61597a337fd9ad8d985efd6be74308921ad5fed09a0a0d2557b7ef725e48c8d61aa7f8023
7
+ data.tar.gz: cdca88b8aa4e50a0823d8e23656ffa4ef04c56432de57ddb2134c89e5998c7b59c45aeb0b840b4a857d48fe9051400c36d67647149cde423660fba5c9a001d0b
@@ -51,6 +51,11 @@ module Vmpooler
51
51
  'vsphere'
52
52
  end
53
53
 
54
+ def domain(pool_name)
55
+ dns_plugin_name = pool_config(pool_name)['dns_plugin']
56
+ dns_config(dns_plugin_name)
57
+ end
58
+
54
59
  def folder_configured?(folder_title, base_folder, configured_folders, allowlist)
55
60
  return true if allowlist&.include?(folder_title)
56
61
  return false unless configured_folders.keys.include?(folder_title)
@@ -387,6 +392,16 @@ module Vmpooler
387
392
  vm_hash
388
393
  end
389
394
 
395
+ # The inner method requires vmware tools running in the guest os
396
+ def get_vm_ip_address(vm_name, pool_name)
397
+ @connection_pool.with_metrics do |pool_object|
398
+ connection = ensured_vsphere_connection(pool_object)
399
+ vm_object = find_vm(pool_name, vm_name, connection)
400
+ vm_hash = generate_vm_hash(vm_object, pool_name)
401
+ return vm_hash['ip']
402
+ end
403
+ end
404
+
390
405
  def create_config_spec(vm_name, template_name, extra_config)
391
406
  RbVmomi::VIM.VirtualMachineConfigSpec(
392
407
  annotation: JSON.pretty_generate(
@@ -540,9 +555,10 @@ module Vmpooler
540
555
  true
541
556
  end
542
557
 
543
- def vm_ready?(_pool_name, vm_name)
558
+ def vm_ready?(pool_name, vm_name)
544
559
  begin
545
- open_socket(vm_name, global_config[:config]['domain'])
560
+ domain = domain(pool_name)
561
+ open_socket(vm_name, domain)
546
562
  rescue StandardError => _e
547
563
  return false
548
564
  end
@@ -582,13 +598,28 @@ module Vmpooler
582
598
  boottime = vm_object.runtime.bootTime if vm_object.runtime&.bootTime
583
599
  powerstate = vm_object.runtime.powerState if vm_object.runtime&.powerState
584
600
 
601
+ ip_maxloop = 60
602
+ ip_loop_delay = 1
603
+ ip_loop_count = 1
604
+ ip = nil
605
+ while ip.nil?
606
+ sleep(ip_loop_delay)
607
+ ip = vm_object.guest_ip
608
+ unless ip_maxloop == 0
609
+ break if ip_loop_count >= ip_maxloop
610
+
611
+ ip_loop_count += 1
612
+ end
613
+ end
614
+
585
615
  {
586
616
  'name' => vm_object.name,
587
617
  'hostname' => hostname,
588
618
  'template' => pool_configuration['template'],
589
619
  'poolname' => pool_name,
590
620
  'boottime' => boottime,
591
- 'powerstate' => powerstate
621
+ 'powerstate' => powerstate,
622
+ 'ip' => ip
592
623
  }
593
624
  end
594
625
 
@@ -632,15 +663,13 @@ module Vmpooler
632
663
 
633
664
  # This should supercede the open_socket method in the Pool Manager
634
665
  def open_socket(host, domain = nil, timeout = 5, port = 22, &_block)
635
- Timeout.timeout(timeout) do
636
- target_host = host
637
- target_host = "#{host}.#{domain}" if domain
638
- sock = TCPSocket.new target_host, port
639
- begin
640
- yield sock if block_given?
641
- ensure
642
- sock.close
643
- end
666
+ target_host = host
667
+ target_host = "#{host}.#{domain}" if domain
668
+ sock = TCPSocket.new(target_host, port, connect_timeout: timeout)
669
+ begin
670
+ yield sock if block_given?
671
+ ensure
672
+ sock.close
644
673
  end
645
674
  end
646
675
 
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module VmpoolerProviderVsphere
4
- VERSION = '2.0.0'
4
+ VERSION = '3.0.0'
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: vmpooler-provider-vsphere
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.0.0
4
+ version: 3.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Puppet
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2023-01-30 00:00:00.000000000 Z
11
+ date: 2023-04-19 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  requirement: !ruby/object:Gem::Requirement
@@ -35,7 +35,7 @@ dependencies:
35
35
  requirements:
36
36
  - - "~>"
37
37
  - !ruby/object:Gem::Version
38
- version: '2.4'
38
+ version: '3.0'
39
39
  name: vmpooler
40
40
  prerelease: false
41
41
  type: :runtime
@@ -43,7 +43,7 @@ dependencies:
43
43
  requirements:
44
44
  - - "~>"
45
45
  - !ruby/object:Gem::Version
46
- version: '2.4'
46
+ version: '3.0'
47
47
  - !ruby/object:Gem::Dependency
48
48
  requirement: !ruby/object:Gem::Requirement
49
49
  requirements:
@@ -204,7 +204,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
204
204
  - !ruby/object:Gem::Version
205
205
  version: '0'
206
206
  requirements: []
207
- rubygems_version: 3.2.29
207
+ rubygems_version: 3.3.25
208
208
  signing_key:
209
209
  specification_version: 4
210
210
  summary: VMware provider for VMPooler