fog-vsphere 3.7.2 → 3.7.4

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
2
  SHA256:
3
- metadata.gz: 924b9bbb6dc4715d151b6737ab5a7c29ba114e3c8f3e3d05366d29a5f164c52e
4
- data.tar.gz: bca22014a94f40e12301c2f18664242effbd09c984cff91e134947f5a4e799c1
3
+ metadata.gz: e15bb39e301de755701847ea587fd678e5717fc75408c03ac0ed7d295716f386
4
+ data.tar.gz: fc273115526f3dd9ebf4d37d83b9f89db85eea61926f24df1227268c959fb3a8
5
5
  SHA512:
6
- metadata.gz: c7d777833b52e0184c94818bf6876ae3ee518425c57f9ae922b1f66b0f92b20c832e16e358d7e280c91ba2fa12f65c6469a231fe97ee55680c253541c09f817f
7
- data.tar.gz: 5006c14b999ba3ee502a423a953407b1cbd5739f2de946adb67026dfadc08a937d7b770839d1110b5792b1a26e0eac8ba83a8f7f455bc8d51e86ec9390b7e6a9
6
+ metadata.gz: 879ed96c76c460c8872cb4322e7e9daa27ab21e7627f54ffb7776e6724a7938d47c20f47c8a6d0f25accbb5acbe046b6afede16283dd7b793674541f2e61ad3e
7
+ data.tar.gz: b57fb164b9f54f4fa9b6902c904190166a3cc85e27e970b5fc61874a3df0310edece6fae1ae7add7f52d20f4c7a02fb48607bf13842e919b54ce139ffa6d9e32
data/fog-vsphere.gemspec CHANGED
@@ -25,6 +25,9 @@ Gem::Specification.new do |spec|
25
25
  spec.add_runtime_dependency 'fog-core'
26
26
  spec.add_runtime_dependency 'rbvmomi2', '~> 3.0'
27
27
 
28
+ spec.add_dependency "base64"
29
+ spec.add_dependency "ostruct"
30
+
28
31
  spec.add_development_dependency 'bundler'
29
32
  spec.add_development_dependency 'pry', '~> 0.10'
30
33
  spec.add_development_dependency 'rake', '>= 12.3.3'
@@ -120,6 +120,7 @@ module Fog
120
120
  request :revert_to_snapshot
121
121
  request :list_processes
122
122
  request :upload_iso
123
+ request :destroy_iso
123
124
  request :folder_destroy
124
125
  request :create_rule
125
126
  request :list_rules
@@ -384,7 +385,7 @@ module Fog
384
385
  }],
385
386
  'scsi_controllers' =>
386
387
  [{ 'shared_bus' => 'noSharing',
387
- 'type' => 'VirtualLsiLogicController',
388
+ 'type' => 'ParaVirtualSCSIController',
388
389
  'unit_number' => 7,
389
390
  'key' => 1000 }],
390
391
  'nvme_controllers' =>
@@ -9,7 +9,7 @@ module Fog
9
9
  attribute :server_id
10
10
 
11
11
  DEFAULT_KEY = 1000
12
- DEFAULT_TYPE = "VirtualLsiLogicController".freeze
12
+ DEFAULT_TYPE = "ParaVirtualSCSIController".freeze
13
13
 
14
14
  def initialize(attributes = {})
15
15
  super
@@ -273,7 +273,11 @@ module Fog
273
273
  end
274
274
 
275
275
  def controller_default_options
276
- { operation: :add, type: RbVmomi::VIM.VirtualLsiLogicController.class, shared: false }
276
+ {
277
+ operation: :add,
278
+ type: Fog::Vsphere.class_from_string(Fog::Vsphere::Compute::SCSIController::DEFAULT_TYPE, 'RbVmomi::VIM'),
279
+ shared: false
280
+ }
277
281
  end
278
282
 
279
283
  def controller_get_shared_from_options(options)
@@ -0,0 +1,65 @@
1
+ module Fog
2
+ module Vsphere
3
+ class Compute
4
+ class Real
5
+ def destroy_iso(options = {})
6
+ # Keep using the same validation helper for required keys, etc.
7
+ options = destroy_iso_check_options(options)
8
+
9
+ datastore = get_raw_datastore(options['datastore'], options['datacenter'])
10
+ datacenter = get_raw_datacenter(options['datacenter'])
11
+
12
+ filename = options['filename'] || File.basename(options['local_path'])
13
+ remote_rel = File.join(options['upload_directory'].to_s, filename).sub(%r{\A/+}, '')
14
+ remote_ds = "[#{options['datastore']}] #{remote_rel}"
15
+
16
+ task = connection.serviceContent.fileManager.DeleteDatastoreFile_Task(
17
+ name: remote_ds,
18
+ datacenter: datacenter
19
+ )
20
+ task.wait_for_completion
21
+
22
+ # Return true if it is gone
23
+ !datastore.exists?(remote_rel)
24
+ end
25
+
26
+ private
27
+
28
+ def destroy_iso_check_options(options)
29
+ default_options = {
30
+ 'upload_directory' => 'isos'
31
+ }
32
+ options = default_options.merge(options)
33
+ required_options = %w[datacenter datastore local_path]
34
+ required_options.each do |param|
35
+ raise ArgumentError, "#{required_options.join(', ')} are required" unless options.key? param
36
+ end
37
+ raise Fog::Vsphere::Compute::NotFound, "Datacenter #{options['datacenter']} doesn't exist!" unless get_datacenter(options['datacenter'])
38
+ raise Fog::Vsphere::Compute::NotFound, "Datastore #{options['datastore']} doesn't exist!" unless get_raw_datastore(options['datastore'], options['datacenter'])
39
+ options
40
+ end
41
+ end
42
+
43
+ class Mock
44
+ def destroy_iso(options = {})
45
+ destroy_iso_check_options(options)
46
+ true
47
+ end
48
+
49
+ private
50
+
51
+ def destroy_iso_check_options(options)
52
+ default_options = {
53
+ 'upload_directory' => 'isos'
54
+ }
55
+ options = default_options.merge(options)
56
+ required_options = %w[datacenter datastore local_path]
57
+ required_options.each do |param|
58
+ raise ArgumentError, "#{required_options.join(', ')} are required" unless options.key? param
59
+ end
60
+ options
61
+ end
62
+ end
63
+ end
64
+ end
65
+ end
@@ -2,6 +2,22 @@ module Fog
2
2
  module Vsphere
3
3
  class Compute
4
4
  class Real
5
+ def upload_iso(options = {})
6
+ options = upload_iso_check_options(options)
7
+ datastore = get_raw_datastore(options['datastore'], options['datacenter'])
8
+ datacenter = get_raw_datacenter(options['datacenter'])
9
+ filename = options['filename'] || File.basename(options['local_path'])
10
+ unless datastore.exists?(options['upload_directory'])
11
+ connection.serviceContent.fileManager.MakeDirectory name: "[#{options['datastore']}] #{options['upload_directory']}",
12
+ datacenter: datacenter,
13
+ createParentDirectories: false
14
+ end
15
+ datastore.upload options['upload_directory'] + '/' + filename, options['local_path']
16
+ datastore.exists? options['upload_directory'] + '/' + filename
17
+ end
18
+
19
+ private
20
+
5
21
  def upload_iso_check_options(options)
6
22
  default_options = {
7
23
  'upload_directory' => 'isos'
@@ -11,23 +27,30 @@ module Fog
11
27
  required_options.each do |param|
12
28
  raise ArgumentError, "#{required_options.join(', ')} are required" unless options.key? param
13
29
  end
14
- raise Fog::Vsphere::Compute::NotFound, "Datacenter #{options['datacenter']} Doesn't Exist!" unless get_datacenter(options['datacenter'])
15
- raise Fog::Vsphere::Compute::NotFound, "Datastore #{options['datastore']} Doesn't Exist!" unless get_raw_datastore(options['datastore'], options['datacenter'])
30
+ raise Fog::Vsphere::Compute::NotFound, "Datacenter #{options['datacenter']} doesn't exist!" unless get_datacenter(options['datacenter'])
31
+ raise Fog::Vsphere::Compute::NotFound, "Datastore #{options['datastore']} doesn't exist!" unless get_raw_datastore(options['datastore'], options['datacenter'])
16
32
  options
17
33
  end
34
+ end
18
35
 
36
+ class Mock
19
37
  def upload_iso(options = {})
20
- options = upload_iso_check_options(options)
21
- datastore = get_raw_datastore(options['datastore'], options['datacenter'])
22
- datacenter = get_raw_datacenter(options['datacenter'])
23
- filename = options['filename'] || File.basename(options['local_path'])
24
- unless datastore.exists?(options['upload_directory'])
25
- connection.serviceContent.fileManager.MakeDirectory name: "[#{options['datastore']}] #{options['upload_directory']}",
26
- datacenter: datacenter,
27
- createParentDirectories: false
38
+ upload_iso_check_options(options)
39
+ true
40
+ end
41
+
42
+ private
43
+
44
+ def upload_iso_check_options(options)
45
+ default_options = {
46
+ 'upload_directory' => 'isos'
47
+ }
48
+ options = default_options.merge(options)
49
+ required_options = %w[datacenter datastore local_path]
50
+ required_options.each do |param|
51
+ raise ArgumentError, "#{required_options.join(', ')} are required" unless options.key? param
28
52
  end
29
- datastore.upload options['upload_directory'] + '/' + filename, options['local_path']
30
- datastore.exists? options['upload_directory'] + '/' + filename
53
+ options
31
54
  end
32
55
  end
33
56
  end
@@ -1,5 +1,5 @@
1
1
  module Fog
2
2
  module Vsphere
3
- VERSION = '3.7.2'.freeze
3
+ VERSION = '3.7.4'.freeze
4
4
  end
5
5
  end
@@ -0,0 +1,25 @@
1
+ require_relative '../../helper'
2
+
3
+ require 'fog/vsphere/models/compute/scsicontroller'
4
+
5
+ describe Fog::Vsphere::Compute::SCSIController do
6
+ describe '#type' do
7
+ it 'defaults to ParaVirtualSCSIController when not given a type' do
8
+ controller = Fog::Vsphere::Compute::SCSIController.new
9
+
10
+ assert_equal('ParaVirtualSCSIController', controller.type)
11
+ end
12
+
13
+ %w[
14
+ VirtualLsiLogicController
15
+ VirtualLsiLogicSASController
16
+ VirtualBusLogicController
17
+ ].each do |legacy_type|
18
+ it "preserves an explicitly requested #{legacy_type}" do
19
+ controller = Fog::Vsphere::Compute::SCSIController.new(:type => legacy_type)
20
+
21
+ assert_equal(legacy_type, controller.type)
22
+ end
23
+ end
24
+ end
25
+ end
@@ -0,0 +1,39 @@
1
+ require_relative '../../helper'
2
+
3
+ require 'rbvmomi'
4
+ require 'fog/vsphere/models/compute/scsicontroller'
5
+ require 'fog/vsphere/requests/compute/create_vm'
6
+
7
+ describe Fog::Vsphere::Compute::Real do
8
+ let(:real) { Fog::Vsphere::Compute::Real.allocate }
9
+
10
+ describe '#create_controller' do
11
+ it 'defaults to ParaVirtualSCSIController when no controller is given' do
12
+ result = real.send(:create_controller)
13
+
14
+ assert_equal(RbVmomi::VIM::ParaVirtualSCSIController, result[:device].class)
15
+ end
16
+
17
+ it 'defaults a freshly built SCSIController model to ParaVirtualSCSIController' do
18
+ controller = Fog::Vsphere::Compute::SCSIController.new
19
+
20
+ result = real.send(:create_controller, controller)
21
+
22
+ assert_equal(RbVmomi::VIM::ParaVirtualSCSIController, result[:device].class)
23
+ end
24
+
25
+ %w[
26
+ VirtualLsiLogicController
27
+ VirtualLsiLogicSASController
28
+ VirtualBusLogicController
29
+ ].each do |legacy_type|
30
+ it "still builds a #{legacy_type} when explicitly requested" do
31
+ controller = Fog::Vsphere::Compute::SCSIController.new(:type => legacy_type)
32
+
33
+ result = real.send(:create_controller, controller)
34
+
35
+ assert_equal(RbVmomi::VIM.const_get(legacy_type), result[:device].class)
36
+ end
37
+ end
38
+ end
39
+ end
@@ -0,0 +1,16 @@
1
+ Shindo.tests('Fog::Compute[:vsphere] | destroy_iso request', ['vsphere']) do
2
+ compute = Fog::Compute[:vsphere]
3
+
4
+ tests('The response should') do
5
+ response = compute.destroy_iso(
6
+ 'datacenter' => 'dc1',
7
+ 'datastore' => 'datastore-1',
8
+ 'local_path' => '/tmp/test.iso'
9
+ )
10
+ test('be true') { response == true }
11
+ end
12
+
13
+ tests('The expected options') do
14
+ raises(ArgumentError, 'raises ArgumentError when required options are missing') { compute.destroy_iso }
15
+ end
16
+ end
@@ -1,5 +1,3 @@
1
- require 'ostruct'
2
-
3
1
  Shindo.tests('Fog::Compute[:vsphere] | update_vm request', 'vsphere') do
4
2
  compute = Fog::Compute[:vsphere]
5
3
  server = Fog::Vsphere::Compute::Server.new
@@ -0,0 +1,16 @@
1
+ Shindo.tests('Fog::Compute[:vsphere] | upload_iso request', ['vsphere']) do
2
+ compute = Fog::Compute[:vsphere]
3
+
4
+ tests('The response should') do
5
+ response = compute.upload_iso(
6
+ 'datacenter' => 'dc1',
7
+ 'datastore' => 'datastore-1',
8
+ 'local_path' => '/tmp/test.iso'
9
+ )
10
+ test('be true') { response == true }
11
+ end
12
+
13
+ tests('The expected options') do
14
+ raises(ArgumentError, 'raises ArgumentError when required options are missing') { compute.upload_iso }
15
+ end
16
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: fog-vsphere
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.7.2
4
+ version: 3.7.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - J.R. Garcia
@@ -37,6 +37,34 @@ dependencies:
37
37
  - - "~>"
38
38
  - !ruby/object:Gem::Version
39
39
  version: '3.0'
40
+ - !ruby/object:Gem::Dependency
41
+ name: base64
42
+ requirement: !ruby/object:Gem::Requirement
43
+ requirements:
44
+ - - ">="
45
+ - !ruby/object:Gem::Version
46
+ version: '0'
47
+ type: :runtime
48
+ prerelease: false
49
+ version_requirements: !ruby/object:Gem::Requirement
50
+ requirements:
51
+ - - ">="
52
+ - !ruby/object:Gem::Version
53
+ version: '0'
54
+ - !ruby/object:Gem::Dependency
55
+ name: ostruct
56
+ requirement: !ruby/object:Gem::Requirement
57
+ requirements:
58
+ - - ">="
59
+ - !ruby/object:Gem::Version
60
+ version: '0'
61
+ type: :runtime
62
+ prerelease: false
63
+ version_requirements: !ruby/object:Gem::Requirement
64
+ requirements:
65
+ - - ">="
66
+ - !ruby/object:Gem::Version
67
+ version: '0'
40
68
  - !ruby/object:Gem::Dependency
41
69
  name: bundler
42
70
  requirement: !ruby/object:Gem::Requirement
@@ -275,6 +303,7 @@ files:
275
303
  - lib/fog/vsphere/requests/compute/create_vm.rb
276
304
  - lib/fog/vsphere/requests/compute/current_time.rb
277
305
  - lib/fog/vsphere/requests/compute/destroy_group.rb
306
+ - lib/fog/vsphere/requests/compute/destroy_iso.rb
278
307
  - lib/fog/vsphere/requests/compute/destroy_resource_pool.rb
279
308
  - lib/fog/vsphere/requests/compute/destroy_rule.rb
280
309
  - lib/fog/vsphere/requests/compute/folder_destroy.rb
@@ -374,13 +403,16 @@ files:
374
403
  - tests/models/compute/cluster_tests.rb
375
404
  - tests/models/compute/hosts_tests.rb
376
405
  - tests/models/compute/rules_tests.rb
406
+ - tests/models/compute/scsicontroller_tests.rb
377
407
  - tests/models/compute/server_tests.rb
378
408
  - tests/models/compute/server_unit_tests.rb
379
409
  - tests/models/compute/servers_tests.rb
380
410
  - tests/models/compute/ticket_tests.rb
381
411
  - tests/models/compute/tickets_tests.rb
412
+ - tests/requests/compute/create_controller_tests.rb
382
413
  - tests/requests/compute/create_folder_tests.rb
383
414
  - tests/requests/compute/current_time_tests.rb
415
+ - tests/requests/compute/destroy_iso_tests.rb
384
416
  - tests/requests/compute/folder_destroy_tests.rb
385
417
  - tests/requests/compute/get_cluster_tests.rb
386
418
  - tests/requests/compute/get_compute_resource_tests.rb
@@ -407,6 +439,7 @@ files:
407
439
  - tests/requests/compute/revert_to_snapshot_tests.rb
408
440
  - tests/requests/compute/set_vm_customvalue_tests.rb
409
441
  - tests/requests/compute/update_vm_tests.rb
442
+ - tests/requests/compute/upload_iso_tests.rb
410
443
  - tests/requests/compute/vm_clone_tests.rb
411
444
  - tests/requests/compute/vm_config_vnc_tests.rb
412
445
  - tests/requests/compute/vm_destroy_tests.rb
@@ -439,7 +472,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
439
472
  - !ruby/object:Gem::Version
440
473
  version: '0'
441
474
  requirements: []
442
- rubygems_version: 3.8.0.dev
475
+ rubygems_version: 3.6.9
443
476
  specification_version: 4
444
477
  summary: Module for the 'fog' gem to support VMware vSphere.
445
478
  test_files:
@@ -465,13 +498,16 @@ test_files:
465
498
  - tests/models/compute/cluster_tests.rb
466
499
  - tests/models/compute/hosts_tests.rb
467
500
  - tests/models/compute/rules_tests.rb
501
+ - tests/models/compute/scsicontroller_tests.rb
468
502
  - tests/models/compute/server_tests.rb
469
503
  - tests/models/compute/server_unit_tests.rb
470
504
  - tests/models/compute/servers_tests.rb
471
505
  - tests/models/compute/ticket_tests.rb
472
506
  - tests/models/compute/tickets_tests.rb
507
+ - tests/requests/compute/create_controller_tests.rb
473
508
  - tests/requests/compute/create_folder_tests.rb
474
509
  - tests/requests/compute/current_time_tests.rb
510
+ - tests/requests/compute/destroy_iso_tests.rb
475
511
  - tests/requests/compute/folder_destroy_tests.rb
476
512
  - tests/requests/compute/get_cluster_tests.rb
477
513
  - tests/requests/compute/get_compute_resource_tests.rb
@@ -498,6 +534,7 @@ test_files:
498
534
  - tests/requests/compute/revert_to_snapshot_tests.rb
499
535
  - tests/requests/compute/set_vm_customvalue_tests.rb
500
536
  - tests/requests/compute/update_vm_tests.rb
537
+ - tests/requests/compute/upload_iso_tests.rb
501
538
  - tests/requests/compute/vm_clone_tests.rb
502
539
  - tests/requests/compute/vm_config_vnc_tests.rb
503
540
  - tests/requests/compute/vm_destroy_tests.rb