fog-vsphere 1.13.1 → 2.0.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: b20db71871f9f8c74e15f8c8c69dbfea6b7f25d3
4
- data.tar.gz: 78d13178e6d4023987e32d10cae4d0e5420fde6a
2
+ SHA256:
3
+ metadata.gz: d0dddb289327d2871f911801e572de9b9f3301a1eb3b0da0e9aeb60f8660fc3d
4
+ data.tar.gz: 2ed6a2f1ac3c94187cfdfc9dcc683f09c32c382c89872da97914754b4c567514
5
5
  SHA512:
6
- metadata.gz: 5157b6404305925bda2ea2688c44ef963ea5de21ef0b3a3a33969a6dc1afba77e6da0375a468085fcb23d7bd50d0775e19b0cbb61d0d855ba380a26eeff035f8
7
- data.tar.gz: b54b88739bee3002c8b38ac1c95dd4cd63421f6029394220fe3aa770a098f196bce033effcf95f93972e5c7e43e9961bd435d939a628b9dcf498e26635c195b8
6
+ metadata.gz: 01ca149030adc6f5d6b76b2ee2f4c9e7986dd533f99ab49cea195f6cb8ec56da761851e577f93dab33fbcb3d4e044637b7f0b98dfbee105a2f87fc4f1c4b52da
7
+ data.tar.gz: c0eb59366051e13703bf0a81ba091e84796dd1f1aae5e31260eb0bc9fa4dca46d56e4e1514daf06691b497b367b7735bb85f1fd102d4d8ad87c34e708e641ba9
data/.travis.yml CHANGED
@@ -6,8 +6,6 @@ matrix:
6
6
  - rvm: jruby-head
7
7
  fast_finish: true
8
8
  include:
9
- - rvm: 1.9.3
10
- gemfile: gemfiles/Gemfile.1.9.2+
11
9
  - rvm: 2.0.0
12
10
  gemfile: Gemfile
13
11
  - rvm: 2.1.10
@@ -18,8 +16,6 @@ matrix:
18
16
  gemfile: Gemfile
19
17
  - rvm: 2.4.0
20
18
  gemfile: Gemfile
21
- - rvm: jruby-19mode
22
- gemfile: gemfiles/Gemfile.1.9.2+
23
19
  - rvm: jruby-head
24
20
  gemfile: Gemfile
25
21
  notifications:
data/CHANGELOG.md CHANGED
@@ -1,3 +1,12 @@
1
+ ## v2.0.0
2
+
3
+ * Drop support for ruby versions < 2.0.0
4
+ * Fix regex issue when folder contains the datacenter name (#120)
5
+ * add more attributes to host model (#119)
6
+ * Fixes listing resource pools for clusters nested in folders (#118)
7
+ * Add requests to host (#116)
8
+ * Fix interface code in VM clone (#115)
9
+
1
10
  ## v1.13.1
2
11
 
3
12
  * Fix typo of local variable name in clone operation (#114)
data/fog-vsphere.gemspec CHANGED
@@ -19,7 +19,7 @@ Gem::Specification.new do |spec|
19
19
 
20
20
  spec.require_paths = ['lib']
21
21
 
22
- spec.required_ruby_version = '>= 1.8.7'
22
+ spec.required_ruby_version = '>= 2.0.0'
23
23
 
24
24
  spec.add_runtime_dependency 'fog-core'
25
25
  spec.add_runtime_dependency 'rbvmomi', '~> 1.9'
@@ -127,6 +127,9 @@ module Fog
127
127
  request :vm_remove_snapshot
128
128
  request :vm_acquire_ticket
129
129
  request :vm_relocate
130
+ request :host_shutdown
131
+ request :host_start_maintenance
132
+ request :host_finish_maintenance
130
133
 
131
134
  module Shared
132
135
  attr_reader :vsphere_is_vcenter
@@ -437,6 +440,7 @@ module Fog
437
440
  :num_cpu_cores => "16",
438
441
  :overall_status => "green",
439
442
  :datacenter => "Solutions",
443
+ :full_path => 'Solutionscluster',
440
444
  :klass => "RbVmomi::VIM::ComputeResource"
441
445
  },
442
446
  {:id => "e4195973-102b-4096-bbd6-5429ff0b35c9",
@@ -445,6 +449,7 @@ module Fog
445
449
  :num_cpu_cores => "32",
446
450
  :overall_status => "green",
447
451
  :datacenter => "Solutions",
452
+ :full_path => 'Problemscluster',
448
453
  :klass => "RbVmomi::VIM::ComputeResource"
449
454
  },
450
455
  {
@@ -455,6 +460,7 @@ module Fog
455
460
  :num_cpu_cores => "32",
456
461
  :overall_status => "green",
457
462
  :datacenter => "Solutions",
463
+ :full_path => 'Nested/Problemscluster',
458
464
  :klass => "RbVmomi::VIM::ComputeResource"
459
465
  },
460
466
  {:id => "03616b8d-b707-41fd-b3b5-the Second",
@@ -463,6 +469,7 @@ module Fog
463
469
  :num_cpu_cores => "32",
464
470
  :overall_status => "green",
465
471
  :datacenter => "Solutions",
472
+ :full_path => 'Nested/Lastcluster',
466
473
  :klass => "RbVmomi::VIM::ComputeResource"}
467
474
  ]
468
475
  }
@@ -483,6 +490,19 @@ module Fog
483
490
  :datacenter => 'Solutions',
484
491
  :cluster => 'Solutionscluster',
485
492
  :name => 'host1.example.com',
493
+ :model => 'PowerEdge R730',
494
+ :vendor => 'Dell Inc.',
495
+ :ipaddress => '1.2.3.4',
496
+ :ipaddress6 => nil,
497
+ :hostname => 'host1',
498
+ :domainname => 'example.com',
499
+ :product_name => 'VMware ESXi',
500
+ :uuid => '4c4c4544-0051-3610-8046-c4c44f584a32',
501
+ :cpu_cores => 20,
502
+ :cpu_sockets => 2,
503
+ :cpu_threads => 40,
504
+ :memory => 824597241856,
505
+ :product_version => '6.0.0',
486
506
  :vm_ids => ['5032c8a5-9c5e-ba7a-3804-832a03e16381', '502916a3-b42e-17c7-43ce-b3206e9524dc']
487
507
  }
488
508
  }
@@ -14,7 +14,7 @@ module Fog
14
14
  def resource_pools(filters = { })
15
15
  self.attributes[:resource_pools] ||= id.nil? ? [] : service.resource_pools({
16
16
  :service => service,
17
- :cluster => name,
17
+ :cluster => full_path,
18
18
  :datacenter => datacenter
19
19
  }.merge(filters))
20
20
  end
@@ -22,7 +22,7 @@ module Fog
22
22
  def datastores(filters = { })
23
23
  self.attributes[:datastores] ||= id.nil? ? [] : service.datastores({
24
24
  :service => service,
25
- :cluster => name,
25
+ :cluster => full_path,
26
26
  :datacenter => datacenter
27
27
  }.merge(filters))
28
28
  end
@@ -30,17 +30,17 @@ module Fog
30
30
  def networks(filters = { })
31
31
  self.attributes[:networks] ||= id.nil? ? [] : service.networks({
32
32
  :service => service,
33
- :cluster => name,
33
+ :cluster => full_path,
34
34
  :datacenter => datacenter
35
35
  }.merge(filters))
36
36
  end
37
37
 
38
38
  def rules
39
- service.rules(:datacenter => datacenter, :cluster => name)
39
+ service.rules(:datacenter => datacenter, :cluster => full_path)
40
40
  end
41
41
 
42
42
  def hosts
43
- service.hosts(:datacenter => datacenter, :cluster => name)
43
+ service.hosts(:datacenter => datacenter, :cluster => full_path)
44
44
  end
45
45
 
46
46
  def to_s
@@ -8,10 +8,40 @@ module Fog
8
8
  attribute :cluster
9
9
  attribute :name
10
10
  attribute :vm_ids
11
+ attribute :cpu_cores
12
+ attribute :cpu_sockets
13
+ attribute :cpu_threads
14
+ attribute :memory
15
+ attribute :uuid
16
+
17
+ # Lazy Loaded Attributes
18
+ [:vm_ids].each do |attr|
19
+ define_method attr do
20
+ attributes[attr] = attributes[attr].call if attributes[attr].is_a?(Proc)
21
+ attributes[attr]
22
+ end
23
+ end
24
+ # End Lazy Loaded Attributes
11
25
 
12
26
  def to_s
13
27
  name
14
28
  end
29
+
30
+ def memory_mb
31
+ memory / 1024 / 1024
32
+ end
33
+
34
+ def shutdown
35
+ service.host_shutdown(name, cluster, datacenter)
36
+ end
37
+
38
+ def start_maintenance
39
+ service.host_start_maintenance(name, cluster, datacenter)
40
+ end
41
+
42
+ def finish_maintenance
43
+ service.host_finish_maintenance(name, cluster, datacenter)
44
+ end
15
45
  end
16
46
  end
17
47
  end
@@ -0,0 +1,14 @@
1
+ module Fog
2
+ module Compute
3
+ class Vsphere
4
+ class Real
5
+ def host_finish_maintenance(name, cluster_name, datacenter_name, timeout = 0)
6
+ host_ref = get_host(name, cluster_name, datacenter_name)
7
+ task = host_ref.ExitMaintenanceMode_Task(:timeout => timeout)
8
+ task.wait_for_completion
9
+ { 'task_state' => task.info.state }
10
+ end
11
+ end
12
+ end
13
+ end
14
+ end
@@ -0,0 +1,14 @@
1
+ module Fog
2
+ module Compute
3
+ class Vsphere
4
+ class Real
5
+ def host_shutdown(name, cluster_name, datacenter_name, force = false)
6
+ host_ref = get_host(name, cluster_name, datacenter_name)
7
+ task = host_ref.ShutdownHost_Task(:force => force)
8
+ task.wait_for_completion
9
+ { 'task_state' => task.info.state }
10
+ end
11
+ end
12
+ end
13
+ end
14
+ end
@@ -0,0 +1,14 @@
1
+ module Fog
2
+ module Compute
3
+ class Vsphere
4
+ class Real
5
+ def host_start_maintenance(name, cluster_name, datacenter_name, timeout = 0, evacuate_powered_off_vms = false)
6
+ host_ref = get_host(name, cluster_name, datacenter_name)
7
+ task = host_ref.EnterMaintenanceMode_Task(:timeout => timeout, :evacuatePoweredOffVms => evacuate_powered_off_vms)
8
+ task.wait_for_completion
9
+ { 'task_state' => task.info.state }
10
+ end
11
+ end
12
+ end
13
+ end
14
+ end
@@ -47,7 +47,7 @@ module Fog
47
47
 
48
48
  def cluster_path(cluster, datacenter_name)
49
49
  datacenter = find_raw_datacenter(datacenter_name)
50
- cluster.pretty_path.gsub(%r{(#{Regexp.escape(datacenter_name)}|#{Regexp.escape(datacenter.hostFolder.name)})\/}, '')
50
+ cluster.pretty_path.gsub(%r{(^#{Regexp.escape(datacenter_name)}|#{Regexp.escape(datacenter.hostFolder.name)})\/}, '')
51
51
  end
52
52
  end
53
53
 
@@ -11,13 +11,27 @@ module Fog
11
11
 
12
12
  def host_attributes(host, filters)
13
13
  {
14
- datacenter: filters[:datacenter],
15
- cluster: filters[:cluster],
16
- name: host[:name],
17
- vm_ids: host[:vm].map {|vm| vm.config.instanceUuid }
14
+ datacenter: filters[:datacenter],
15
+ cluster: filters[:cluster],
16
+ name: host[:name],
17
+ cpu_cores: host.hardware.cpuInfo.numCpuCores,
18
+ cpu_sockets: host.hardware.cpuInfo.numCpuPackages,
19
+ cpu_threads: host.hardware.cpuInfo.numCpuThreads,
20
+ memory: host.hardware.memorySize,
21
+ uuid: host.hardware.systemInfo.uuid,
22
+ model: host.hardware.systemInfo.model,
23
+ vendor: host.hardware.systemInfo.vendor,
24
+ ipaddress: (host.config.network.vnic.first.spec.ip.ipAddress rescue nil),
25
+ ipaddress6: (host.config.network.vnic.first.spec.ip.ipV6Config.ipV6Address.first.ipAddress rescue nil),
26
+ product_name: host.summary.config.product.name,
27
+ product_version: host.summary.config.product.version,
28
+ hostname: (host.config.network.dnsConfig.hostName rescue nil),
29
+ domainname: (host.config.network.dnsConfig.domainName rescue nil),
30
+ vm_ids: Proc.new { host[:vm].map {|vm| vm.config.instanceUuid } }
18
31
  }
19
32
  end
20
33
  end
34
+
21
35
  class Mock
22
36
  def list_hosts(filters = {})
23
37
  self.data[:hosts].values.select {|r| r[:datacenter] == filters[:datacenter] && r[:cluster] == filters[:cluster]}
@@ -766,7 +766,8 @@ module Fog
766
766
  device: template_nic
767
767
  }
768
768
  else
769
- specs << create_interface(template_nic, template_nic.key, :remove, :datacenter => datacenter)
769
+ interface = Fog::Compute::Vsphere::Interface.new(raw_to_hash(template_nic))
770
+ specs << create_interface(interface, interface.key, :remove, :datacenter => datacenter)
770
771
  end
771
772
  end
772
773
 
@@ -1,5 +1,5 @@
1
1
  module Fog
2
2
  module Vsphere
3
- VERSION = '1.13.1'.freeze
3
+ VERSION = '2.0.0'.freeze
4
4
  end
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: fog-vsphere
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.13.1
4
+ version: 2.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - J.R. Garcia
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-09-29 00:00:00.000000000 Z
11
+ date: 2018-02-28 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: fog-core
@@ -140,7 +140,6 @@ files:
140
140
  - README.md
141
141
  - Rakefile
142
142
  - fog-vsphere.gemspec
143
- - gemfiles/Gemfile.1.9.2+
144
143
  - lib/fog/bin/vsphere.rb
145
144
  - lib/fog/vsphere.rb
146
145
  - lib/fog/vsphere/compute.rb
@@ -209,6 +208,9 @@ files:
209
208
  - lib/fog/vsphere/requests/compute/get_template.rb
210
209
  - lib/fog/vsphere/requests/compute/get_virtual_machine.rb
211
210
  - lib/fog/vsphere/requests/compute/get_vm_first_scsi_controller.rb
211
+ - lib/fog/vsphere/requests/compute/host_finish_maintenance.rb
212
+ - lib/fog/vsphere/requests/compute/host_shutdown.rb
213
+ - lib/fog/vsphere/requests/compute/host_start_maintenance.rb
212
214
  - lib/fog/vsphere/requests/compute/list_child_snapshots.rb
213
215
  - lib/fog/vsphere/requests/compute/list_clusters.rb
214
216
  - lib/fog/vsphere/requests/compute/list_compute_resources.rb
@@ -314,7 +316,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
314
316
  requirements:
315
317
  - - ">="
316
318
  - !ruby/object:Gem::Version
317
- version: 1.8.7
319
+ version: 2.0.0
318
320
  required_rubygems_version: !ruby/object:Gem::Requirement
319
321
  requirements:
320
322
  - - ">="
@@ -322,7 +324,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
322
324
  version: '0'
323
325
  requirements: []
324
326
  rubyforge_project:
325
- rubygems_version: 2.6.11
327
+ rubygems_version: 2.7.3
326
328
  signing_key:
327
329
  specification_version: 4
328
330
  summary: Module for the 'fog' gem to support VMware vSphere.
@@ -1,9 +0,0 @@
1
- source 'https://rubygems.org'
2
-
3
- gem 'codeclimate-test-reporter', '~> 1.0', group: :test, require: nil
4
- gem 'json', '~> 1.8.0'
5
- gem 'net-ssh', '~> 2.9'
6
- gem 'rubocop', '~> 0.41.0'
7
- gem 'simplecov', '~> 0.12.0'
8
-
9
- gemspec :path => '..'