fog-vsphere 1.11.3 → 1.12.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
2
  SHA1:
3
- metadata.gz: 259e868ec79a58fd97457645401a8771432781d2
4
- data.tar.gz: 5e4890489b7f412b31af88069c3fae0f2b32bf68
3
+ metadata.gz: 6948368d6c3ede9335c8c621c43c5c72a54f8747
4
+ data.tar.gz: e5eb87794542a2b897959da77baedea015f77d97
5
5
  SHA512:
6
- metadata.gz: cf035226cec5df7395df07c46707af0369ed277dddc60ef41bf2bb8c737a01092db58b614b22ffd9285f5158b713711b078f37fa7858341243792b940c416734
7
- data.tar.gz: 91398f19bfd736f7e14a1f91c5178a49b18a888baf4f6d225b440a9b3ac56865f4de54ef0fa450fb0acff76357f852fc5c553cc0622bb2a9eec860db0dbc80f8
6
+ metadata.gz: d7b9b802dbbf729f610364aa5a08fe9ad2bce3f1653ff6832db9ed752c362028342fad45571ffa13ca69f3c357ad727ad415a94c6699797021696e2d33b55f2a
7
+ data.tar.gz: d1e3c7165715a76e4b08d3ba9af8e16895c426396bef500986d02be02bb7cae94e6a41c9daf3d4feee2f3362a04471f7a1e53b52eea2e74b1d8a3dd8ec037bac
@@ -1,3 +1,8 @@
1
+ ## v1.12.0
2
+
3
+ * Add existing state validation for power on/off requests
4
+ * Add ability for server to acquire WebMKS ticket
5
+
1
6
  ## v1.11.3
2
7
 
3
8
  * Fix issue when cloning and interface is in boot order
@@ -75,6 +75,7 @@
75
75
  * karmab <karimboumedhel@gmail.com>
76
76
  * karimb <karimboumedhel@gmail.com>
77
77
  * milo_cheung <milo.cheung@appcara.com>
78
+ * scottd018 <scottd018@users.noreply.github.com>
78
79
  * slivik <jakub.sliva@gmail.com>
79
80
  * theOpenBit <theopenbit@users.noreply.github.com>
80
81
  * tipt0e <topo-2@charter.net>
@@ -49,6 +49,8 @@ module Fog
49
49
  collection :rules
50
50
  model :host
51
51
  collection :hosts
52
+ model :ticket
53
+ collection :tickets
52
54
 
53
55
  request_path 'fog/vsphere/requests/compute'
54
56
  request :current_time
@@ -123,6 +125,7 @@ module Fog
123
125
  request :modify_vm_controller
124
126
  request :vm_revert_snapshot
125
127
  request :vm_remove_snapshot
128
+ request :vm_acquire_ticket
126
129
 
127
130
  module Shared
128
131
  attr_reader :vsphere_is_vcenter
@@ -97,13 +97,13 @@ module Fog
97
97
 
98
98
  def start(options = {})
99
99
  requires :instance_uuid
100
- service.vm_power_on('instance_uuid' => instance_uuid)
100
+ service.vm_power_on('instance_uuid' => instance_uuid) unless ready?
101
101
  end
102
102
 
103
103
  def stop(options = {})
104
104
  options = { :force => !tools_installed? || !tools_running? }.merge(options)
105
105
  requires :instance_uuid
106
- service.vm_power_off('instance_uuid' => instance_uuid, 'force' => options[:force])
106
+ service.vm_power_off('instance_uuid' => instance_uuid, 'force' => options[:force]) unless power_state == 'poweredOff'
107
107
  end
108
108
 
109
109
  def suspend(options = {})
@@ -324,6 +324,10 @@ module Fog
324
324
  (path.split('/').reject {|e| e.empty?} - ["Datacenters", datacenter, "vm"]).join("/")
325
325
  end
326
326
 
327
+ def acquire_ticket(type = nil)
328
+ service.tickets(:server => self).create
329
+ end
330
+
327
331
  private
328
332
 
329
333
  def defaults
@@ -0,0 +1,17 @@
1
+ require 'fog/compute/models/server'
2
+
3
+ module Fog
4
+ module Compute
5
+ class Vsphere
6
+ class Ticket < Fog::Model
7
+
8
+ attribute :server_id
9
+
10
+ attribute :ticket
11
+ attribute :host
12
+ attribute :port
13
+ attribute :ssl_thumbprint
14
+ end
15
+ end
16
+ end
17
+ end
@@ -0,0 +1,25 @@
1
+ module Fog
2
+ module Compute
3
+ class Vsphere
4
+ class Tickets < Fog::Collection
5
+ autoload :Ticket, File.expand_path('../ticket', __FILE__)
6
+
7
+ model Fog::Compute::Vsphere::Ticket
8
+
9
+ attr_accessor :server
10
+
11
+ def create(opts = {})
12
+ requires :server
13
+ raise 'server must be a Fog::Compute::Vsphere::Server' unless server.is_a?(Fog::Compute::Vsphere::Server)
14
+ new(
15
+ service.vm_acquire_ticket(
16
+ opts.merge(
17
+ 'instance_uuid' => server.instance_uuid
18
+ )
19
+ )
20
+ )
21
+ end
22
+ end
23
+ end
24
+ end
25
+ end
@@ -0,0 +1,34 @@
1
+ module Fog
2
+ module Compute
3
+ class Vsphere
4
+ class Real
5
+ def vm_acquire_ticket(options = {})
6
+ raise ArgumentError, "instance_uuid is a required parameter" unless options.key?('instance_uuid')
7
+ ticket_type = options['ticket_type'] || 'webmks'
8
+
9
+ vm_mob_ref = get_vm_ref(options['instance_uuid'])
10
+
11
+ ticket = vm_mob_ref.AcquireTicket(:ticketType => ticket_type)
12
+ {
13
+ 'ticket' => ticket.ticket,
14
+ 'host' => ticket.host,
15
+ 'port' => ticket.port,
16
+ 'ssl_thumbprint' => ticket.sslThumbprint
17
+ }
18
+ end
19
+ end
20
+
21
+ class Mock
22
+ def vm_acquire_ticket(options = {})
23
+ raise ArgumentError, "instance_uuid is a required parameter" unless options.key?('instance_uuid')
24
+ {
25
+ 'ticket' => 'fdsfdsf',
26
+ 'host' => 'esxi.example.com',
27
+ 'port' => 443,
28
+ 'ssl_thumbprint' => '1C:63:E1:BD:56:03:EB:44:85:12:12:FC:DA:40:11:65:0E:30:A1:B8'
29
+ }
30
+ end
31
+ end
32
+ end
33
+ end
34
+ end
@@ -1,5 +1,5 @@
1
1
  module Fog
2
2
  module Vsphere
3
- VERSION = '1.11.3'.freeze
3
+ VERSION = '1.12.0'.freeze
4
4
  end
5
5
  end
@@ -36,6 +36,9 @@ Shindo.tests('Fog::Compute[:vsphere] | server model', ['vsphere']) do
36
36
  end
37
37
  end
38
38
  end
39
+ test('tickets') do
40
+ test('acquire ticket successfully') { server.acquire_ticket.kind_of? Fog::Compute::Vsphere::Ticket }
41
+ end
39
42
  end
40
43
  tests('have attributes') do
41
44
  model_attribute_hash = server.attributes
@@ -0,0 +1,14 @@
1
+ Shindo.tests('Fog::Compute[:vsphere] | hosts collection', ['vsphere']) do
2
+
3
+ servers = Fog::Compute[:vsphere].servers
4
+ server = servers.last
5
+ ticket = server.acquire_ticket
6
+
7
+ tests('A ticket') do
8
+ test('should have a ticket') { not ticket.ticket.empty? }
9
+ test('should have a host') { not ticket.host.empty? }
10
+ test('should have a port') { ticket.port.kind_of? Fixnum }
11
+ test('should have a ssl ssl_thumbprint') { not ticket.ssl_thumbprint.empty? }
12
+ end
13
+
14
+ end
@@ -0,0 +1,10 @@
1
+ Shindo.tests('Fog::Compute[:vsphere] | hosts collection', ['vsphere']) do
2
+
3
+ service = Fog::Compute[:vsphere]
4
+ server = service.servers.last
5
+
6
+ tests('The tickets collection') do
7
+ test('should create a ticket for a server') { service.tickets(:server => server).create.kind_of? Fog::Compute::Vsphere::Ticket }
8
+ end
9
+
10
+ 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.11.3
4
+ version: 1.12.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-07-27 00:00:00.000000000 Z
11
+ date: 2017-08-24 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: fog-core
@@ -182,6 +182,8 @@ files:
182
182
  - lib/fog/vsphere/models/compute/storage_pods.rb
183
183
  - lib/fog/vsphere/models/compute/template.rb
184
184
  - lib/fog/vsphere/models/compute/templates.rb
185
+ - lib/fog/vsphere/models/compute/ticket.rb
186
+ - lib/fog/vsphere/models/compute/tickets.rb
185
187
  - lib/fog/vsphere/models/compute/volume.rb
186
188
  - lib/fog/vsphere/models/compute/volumes.rb
187
189
  - lib/fog/vsphere/requests/compute/cloudinit_to_customspec.rb
@@ -238,6 +240,7 @@ files:
238
240
  - lib/fog/vsphere/requests/compute/revert_to_snapshot.rb
239
241
  - lib/fog/vsphere/requests/compute/set_vm_customvalue.rb
240
242
  - lib/fog/vsphere/requests/compute/upload_iso.rb
243
+ - lib/fog/vsphere/requests/compute/vm_acquire_ticket.rb
241
244
  - lib/fog/vsphere/requests/compute/vm_clone.rb
242
245
  - lib/fog/vsphere/requests/compute/vm_config_vnc.rb
243
246
  - lib/fog/vsphere/requests/compute/vm_destroy.rb
@@ -268,6 +271,8 @@ files:
268
271
  - tests/models/compute/server_tests.rb
269
272
  - tests/models/compute/server_unit_tests.rb
270
273
  - tests/models/compute/servers_tests.rb
274
+ - tests/models/compute/ticket_tests.rb
275
+ - tests/models/compute/tickets_tests.rb
271
276
  - tests/requests/compute/current_time_tests.rb
272
277
  - tests/requests/compute/folder_destroy_tests.rb
273
278
  - tests/requests/compute/get_network_tests.rb
@@ -316,7 +321,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
316
321
  version: '0'
317
322
  requirements: []
318
323
  rubyforge_project:
319
- rubygems_version: 2.6.12
324
+ rubygems_version: 2.6.11
320
325
  signing_key:
321
326
  specification_version: 4
322
327
  summary: Module for the 'fog' gem to support VMware vSphere.
@@ -332,6 +337,8 @@ test_files:
332
337
  - tests/models/compute/server_tests.rb
333
338
  - tests/models/compute/server_unit_tests.rb
334
339
  - tests/models/compute/servers_tests.rb
340
+ - tests/models/compute/ticket_tests.rb
341
+ - tests/models/compute/tickets_tests.rb
335
342
  - tests/requests/compute/current_time_tests.rb
336
343
  - tests/requests/compute/folder_destroy_tests.rb
337
344
  - tests/requests/compute/get_network_tests.rb