fog-azure-rm 0.3.1 → 0.3.2

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.
Files changed (29) hide show
  1. checksums.yaml +4 -4
  2. data/lib/fog/azurerm/docs/compute.md +9 -3
  3. data/lib/fog/azurerm/models/compute/server.rb +49 -28
  4. data/lib/fog/azurerm/models/compute/servers.rb +16 -6
  5. data/lib/fog/azurerm/requests/compute/attach_data_disk_to_vm.rb +12 -4
  6. data/lib/fog/azurerm/requests/compute/check_vm_exists.rb +13 -5
  7. data/lib/fog/azurerm/requests/compute/check_vm_status.rb +1 -1
  8. data/lib/fog/azurerm/requests/compute/create_virtual_machine.rb +42 -34
  9. data/lib/fog/azurerm/requests/compute/deallocate_virtual_machine.rb +12 -4
  10. data/lib/fog/azurerm/requests/compute/delete_virtual_machine.rb +12 -4
  11. data/lib/fog/azurerm/requests/compute/detach_data_disk_from_vm.rb +12 -4
  12. data/lib/fog/azurerm/requests/compute/generalize_virtual_machine.rb +12 -4
  13. data/lib/fog/azurerm/requests/compute/get_virtual_machine.rb +8 -4
  14. data/lib/fog/azurerm/requests/compute/list_available_sizes_for_virtual_machine.rb +12 -4
  15. data/lib/fog/azurerm/requests/compute/power_off_virtual_machine.rb +12 -4
  16. data/lib/fog/azurerm/requests/compute/redeploy_virtual_machine.rb +12 -4
  17. data/lib/fog/azurerm/requests/compute/restart_virtual_machine.rb +12 -4
  18. data/lib/fog/azurerm/requests/compute/start_virtual_machine.rb +12 -4
  19. data/lib/fog/azurerm/version.rb +1 -1
  20. data/test/models/compute/test_server.rb +51 -1
  21. data/test/requests/compute/test_deallocate_virtual_machine.rb +11 -2
  22. data/test/requests/compute/test_delete_virtual_machine.rb +11 -2
  23. data/test/requests/compute/test_generalize_virtual_machine.rb +11 -2
  24. data/test/requests/compute/test_list_available_sizes_for_virtual_machine.rb +11 -2
  25. data/test/requests/compute/test_power_off_virtual_machine.rb +11 -2
  26. data/test/requests/compute/test_redeploy_virtual_machine.rb +12 -2
  27. data/test/requests/compute/test_restart_virtual_machine.rb +11 -2
  28. data/test/requests/compute/test_start_virtual_machine.rb +11 -2
  29. metadata +2 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 8b05e068c2570129a04ec59038987d96cd2daf5d
4
- data.tar.gz: 9d2740ade94fed00b138a4d2ba58e0909fd0d44d
3
+ metadata.gz: 33c1b3dbf863e197bc2a541c66577f56bc7e4aac
4
+ data.tar.gz: 3a7d2a9906695e7be641e1d641bbb7f1bf89c798
5
5
  SHA512:
6
- metadata.gz: 7610426c54b2015495ddd93f6fb8acf7aa409e823eefa30d6721834662392fdec228dd336c132e87ea0d532b245e4f02f0fbcbf7392ec71cd0cf410705b7b259
7
- data.tar.gz: 750ad15a028ee91a40a35d0a3bd39c4e2efd700f0756a367c54ae3d32fa2d0fe5626b6933a7354cb72c68f91b270b2a5739f42b8cc16468939b8fb97b17f666f
6
+ metadata.gz: a37083a43154de9aae645b01e329b44856cc2ac5b74b6baf972937d996980d1b2e32b3752a0be8e1b0130827fff01533c4e1166642af2d6615f8704ac23af547
7
+ data.tar.gz: d5d45fd735a93a8c0e6c93f10cd613d6c59c247e97e688ac66f9278352a84e2ba2b3bf56a3b567c7ac6dd18e4bc0dd58318e189cd8c74a39b1be7daed414dae5
@@ -38,6 +38,9 @@ Create a new linux server
38
38
  **Info:**
39
39
  Attribute **network_interface_card_ids** is an array of NICs ids. The NIC id at index zero will become primary NIC of this server(virtual machine) by default.
40
40
 
41
+ **Info:**
42
+ When using **managed_disk_storage_type** you should not pass the **vhd_path** as the managed disk will be used for the OS disk. Also, data disks cannot be attached to a VM which uses managed disks for the OS disk.
43
+
41
44
  ```ruby
42
45
  azure_compute_service.servers.create(
43
46
  name: '<VM Name>',
@@ -56,7 +59,8 @@ Attribute **network_interface_card_ids** is an array of NICs ids. The NIC id at
56
59
  platform: 'Linux',
57
60
  vhd_path: '<Path of VHD>', # Optional, if you want to create the VM from a custom image.
58
61
  custom_data: 'echo customData', # Optional, if you want to add custom data in this VM.
59
- os_disk_caching: Fog::ARM::Compute::Models::CachingTypes::None # Optional, can be one of None, ReadOnly, ReadWrite
62
+ os_disk_caching: Fog::ARM::Compute::Models::CachingTypes::None, # Optional, can be one of None, ReadOnly, ReadWrite
63
+ managed_disk_storage_type: Azure::ARM::Compute::Models::StorageAccountTypes::StandardLRS # Optional, can be StandardLRS or PremiumLRS
60
64
  )
61
65
  ```
62
66
 
@@ -79,7 +83,8 @@ Create a new windows server
79
83
  version: 'latest', # Not required if custom image is being used
80
84
  platform: 'Windows',
81
85
  vhd_path: '<Path of VHD>', # Optional, if you want to create the VM from a custom image.
82
- custom_data: 'echo customData' # Optional, if you want to add custom data in this VM.
86
+ custom_data: 'echo customData', # Optional, if you want to add custom data in this VM.
87
+ managed_disk_storage_type: Azure::ARM::Compute::Models::StorageAccountTypes::StandardLRS # Optional, can be StandardLRS or PremiumLRS
83
88
  )
84
89
  ```
85
90
 
@@ -105,7 +110,8 @@ Create a new linux server asynchronously
105
110
  platform: 'Linux',
106
111
  vhd_path: '<Path of VHD>', # Optional, if you want to create the VM from a custom image.
107
112
  custom_data: 'echo customData', # Optional, if you want to add custom data in this VM.
108
- os_disk_caching: Fog::ARM::Compute::Models::CachingTypes::None # Optional, can be one of None, ReadOnly, ReadWrite
113
+ os_disk_caching: Fog::ARM::Compute::Models::CachingTypes::None, # Optional, can be one of None, ReadOnly, ReadWrite
114
+ managed_disk_storage_type: Azure::ARM::Compute::Models::StorageAccountTypes::StandardLRS # Optional, can be StandardLRS or PremiumLRS
109
115
  )
110
116
  ```
111
117
  Following methods are available to handle async respoonse:
@@ -30,6 +30,7 @@ module Fog
30
30
  attribute :availability_set_id
31
31
  attribute :custom_data
32
32
  attribute :vhd_path
33
+ attribute :managed_disk_storage_type
33
34
 
34
35
  def self.parse(vm)
35
36
  hash = {}
@@ -40,8 +41,14 @@ module Fog
40
41
  hash['vm_size'] = vm.hardware_profile.vm_size unless vm.hardware_profile.vm_size.nil?
41
42
  unless vm.storage_profile.nil?
42
43
  hash['os_disk_name'] = vm.storage_profile.os_disk.name
43
- hash['os_disk_vhd_uri'] = vm.storage_profile.os_disk.vhd.uri
44
- hash['storage_account_name'] = hash['os_disk_vhd_uri'].split('/')[2].split('.')[0]
44
+
45
+ if vm.storage_profile.os_disk.vhd.nil?
46
+ hash['managed_disk_storage_type'] = vm.storage_profile.os_disk.managed_disk.storage_account_type
47
+ else
48
+ hash['os_disk_vhd_uri'] = vm.storage_profile.os_disk.vhd.uri
49
+ hash['storage_account_name'] = hash['os_disk_vhd_uri'].split('/')[2].split('.')[0]
50
+ end
51
+
45
52
  hash['os_disk_caching'] = vm.storage_profile.os_disk.caching
46
53
  unless vm.storage_profile.image_reference.nil?
47
54
  hash['publisher'] = vm.storage_profile.image_reference.publisher
@@ -76,7 +83,7 @@ module Fog
76
83
  def save(async = false)
77
84
  requires :name, :location, :resource_group, :vm_size, :storage_account_name,
78
85
  :username, :network_interface_card_ids
79
- requires :publisher, :offer, :sku, :version if vhd_path.nil?
86
+ requires :publisher, :offer, :sku, :version if vhd_path.nil? && managed_disk_storage_type.nil?
80
87
 
81
88
  if platform_is_linux?(platform)
82
89
  requires :disable_password_authentication
@@ -94,50 +101,58 @@ module Fog
94
101
  end
95
102
  end
96
103
 
97
- def destroy
98
- service.delete_virtual_machine(resource_group, name)
104
+ def destroy(async = false)
105
+ response = service.delete_virtual_machine(resource_group, name, async)
106
+ async ? create_fog_async_response(response) : response
99
107
  end
100
108
 
101
- def generalize
102
- service.generalize_virtual_machine(resource_group, name)
109
+ def generalize(async = false)
110
+ response = service.generalize_virtual_machine(resource_group, name, async)
111
+ async ? create_fog_async_response(response) : response
103
112
  end
104
113
 
105
- def power_off
106
- service.power_off_virtual_machine(resource_group, name)
114
+ def power_off(async = false)
115
+ response = service.power_off_virtual_machine(resource_group, name, async)
116
+ async ? create_fog_async_response(response) : response
107
117
  end
108
118
 
109
- def start
110
- service.start_virtual_machine(resource_group, name)
119
+ def start(async = false)
120
+ response = service.start_virtual_machine(resource_group, name, async)
121
+ async ? create_fog_async_response(response) : response
111
122
  end
112
123
 
113
- def restart
114
- service.restart_virtual_machine(resource_group, name)
124
+ def restart(async = false)
125
+ response = service.restart_virtual_machine(resource_group, name, async)
126
+ async ? create_fog_async_response(response) : response
115
127
  end
116
128
 
117
- def deallocate
118
- service.deallocate_virtual_machine(resource_group, name)
129
+ def deallocate(async = false)
130
+ response = service.deallocate_virtual_machine(resource_group, name, async)
131
+ async ? create_fog_async_response(response) : response
119
132
  end
120
133
 
121
- def redeploy
122
- service.redeploy_virtual_machine(resource_group, name)
134
+ def redeploy(async = false)
135
+ response = service.redeploy_virtual_machine(resource_group, name, async)
136
+ async ? create_fog_async_response(response) : response
123
137
  end
124
138
 
125
- def list_available_sizes
126
- service.list_available_sizes_for_virtual_machine(resource_group, name)
139
+ def list_available_sizes(async = false)
140
+ response = service.list_available_sizes_for_virtual_machine(resource_group, name, async)
141
+ async ? create_fog_async_response(response) : response
127
142
  end
128
143
 
129
- def vm_status
130
- service.check_vm_status(resource_group, name)
144
+ def vm_status(async = false)
145
+ service.check_vm_status(resource_group, name, async)
131
146
  end
132
147
 
133
- def attach_data_disk(disk_name, disk_size, storage_account_name)
134
- vm = service.attach_data_disk_to_vm(resource_group, name, disk_name, disk_size, storage_account_name)
135
- merge_attributes(Fog::Compute::AzureRM::Server.parse(vm))
148
+ def attach_data_disk(disk_name, disk_size, storage_account_name, async = false)
149
+ response = service.attach_data_disk_to_vm(resource_group, name, disk_name, disk_size, storage_account_name, async)
150
+ async ? create_fog_async_response(response) : merge_attributes(Fog::Compute::AzureRM::Server.parse(response))
136
151
  end
137
152
 
138
- def detach_data_disk(disk_name)
139
- vm = service.detach_data_disk_from_vm(resource_group, name, disk_name)
140
- merge_attributes(Fog::Compute::AzureRM::Server.parse(vm))
153
+ def detach_data_disk(disk_name, async = false)
154
+ response = service.detach_data_disk_from_vm(resource_group, name, disk_name, async)
155
+ async ? create_fog_async_response(response) : merge_attributes(Fog::Compute::AzureRM::Server.parse(response))
141
156
  end
142
157
 
143
158
  private
@@ -146,6 +161,11 @@ module Fog
146
161
  platform.strip.casecmp(PLATFORM_LINUX).zero?
147
162
  end
148
163
 
164
+ def create_fog_async_response(response)
165
+ server = Fog::Compute::AzureRM::Server.new(service: service)
166
+ Fog::AzureRM::AsyncResponse.new(server, response)
167
+ end
168
+
149
169
  def virtual_machine_params(ssh_key_path)
150
170
  {
151
171
  resource_group: resource_group,
@@ -169,7 +189,8 @@ module Fog
169
189
  enable_automatic_updates: enable_automatic_updates,
170
190
  custom_data: custom_data,
171
191
  vhd_path: vhd_path,
172
- os_disk_caching: os_disk_caching
192
+ os_disk_caching: os_disk_caching,
193
+ managed_disk_storage_type: managed_disk_storage_type
173
194
  }
174
195
  end
175
196
  end
@@ -22,14 +22,24 @@ module Fog
22
22
  Fog::AzureRM::AsyncResponse.new(server, async_response)
23
23
  end
24
24
 
25
- def get(resource_group_name, virtual_machine_name)
26
- virtual_machine = service.get_virtual_machine(resource_group_name, virtual_machine_name)
27
- virtual_machine_fog = Fog::Compute::AzureRM::Server.new(service: service)
28
- virtual_machine_fog.merge_attributes(Fog::Compute::AzureRM::Server.parse(virtual_machine))
25
+ def get(resource_group_name, virtual_machine_name, async = false)
26
+ response = service.get_virtual_machine(resource_group_name, virtual_machine_name, async)
27
+ virtual_machine = Fog::Compute::AzureRM::Server.new(service: service)
28
+ if async
29
+ Fog::AzureRM::AsyncResponse.new(virtual_machine, response)
30
+ else
31
+ virtual_machine.merge_attributes(Fog::Compute::AzureRM::Server.parse(response))
32
+ end
29
33
  end
30
34
 
31
- def check_vm_exists(resource_group, name)
32
- service.check_vm_exists(resource_group, name)
35
+ def check_vm_exists(resource_group, name, async = false)
36
+ response = service.check_vm_exists(resource_group, name, async)
37
+ if async
38
+ server = Fog::Compute::AzureRM::Server.new(service: service)
39
+ Fog::AzureRM::AsyncResponse.new(server, response)
40
+ else
41
+ response
42
+ end
33
43
  end
34
44
  end
35
45
  end
@@ -3,7 +3,7 @@ module Fog
3
3
  class AzureRM
4
4
  # This class provides the actual implementation for service calls.
5
5
  class Real
6
- def attach_data_disk_to_vm(resource_group, vm_name, disk_name, disk_size, storage_account_name)
6
+ def attach_data_disk_to_vm(resource_group, vm_name, disk_name, disk_size, storage_account_name, async)
7
7
  msg = "Attaching Data Disk #{disk_name} to Virtual Machine #{vm_name} in Resource Group #{resource_group}"
8
8
  Fog::Logger.debug msg
9
9
  vm = get_virtual_machine_instance(resource_group, vm_name, @compute_mgmt_client)
@@ -13,7 +13,11 @@ module Fog
13
13
  vm.storage_profile.data_disks.push(data_disk)
14
14
  vm.resources = nil
15
15
  begin
16
- virtual_machine = @compute_mgmt_client.virtual_machines.create_or_update(resource_group, vm_name, vm)
16
+ if async
17
+ response = @compute_mgmt_client.virtual_machines.create_or_update_async(resource_group, vm_name, vm)
18
+ else
19
+ virtual_machine = @compute_mgmt_client.virtual_machines.create_or_update(resource_group, vm_name, vm)
20
+ end
17
21
  rescue MsRestAzure::AzureOperationError => e
18
22
  if e.body.to_s =~ /InvalidParameter/ && e.body.to_s =~ /already exists/
19
23
  Fog::Logger.debug 'The disk is already attached'
@@ -21,8 +25,12 @@ module Fog
21
25
  raise_azure_exception(e, msg)
22
26
  end
23
27
  end
24
- Fog::Logger.debug "Data Disk #{disk_name} attached to Virtual Machine #{vm_name} successfully."
25
- virtual_machine
28
+ if async
29
+ response
30
+ else
31
+ Fog::Logger.debug "Data Disk #{disk_name} attached to Virtual Machine #{vm_name} successfully."
32
+ virtual_machine
33
+ end
26
34
  end
27
35
 
28
36
  private
@@ -3,21 +3,29 @@ module Fog
3
3
  class AzureRM
4
4
  # This class provides the actual implementation for service calls.
5
5
  class Real
6
- def check_vm_exists(resource_group, name)
6
+ def check_vm_exists(resource_group, name, async)
7
7
  msg = "Checking Virtual Machine #{name}"
8
8
  Fog::Logger.debug msg
9
9
  begin
10
- @compute_mgmt_client.virtual_machines.get(resource_group, name, 'instanceView')
11
- Fog::Logger.debug "Virtual machine #{name} exists."
12
- true
10
+ if async
11
+ response = @compute_mgmt_client.virtual_machines.get_async(resource_group, name, 'instanceView')
12
+ else
13
+ @compute_mgmt_client.virtual_machines.get(resource_group, name, 'instanceView')
14
+ end
13
15
  rescue MsRestAzure::AzureOperationError => e
14
16
  if e.body['error']['code'] == 'ResourceNotFound'
15
17
  Fog::Logger.debug "Virtual machine #{name} doesn't exist."
16
- false
18
+ return false
17
19
  else
18
20
  raise_azure_exception(e, msg)
19
21
  end
20
22
  end
23
+ if async
24
+ response
25
+ else
26
+ Fog::Logger.debug "Virtual machine #{name} exists."
27
+ true
28
+ end
21
29
  end
22
30
  end
23
31
  # This class provides the mock implementation for unit tests.
@@ -3,7 +3,7 @@ module Fog
3
3
  class AzureRM
4
4
  # This class provides the actual implementation for service calls.
5
5
  class Real
6
- def check_vm_status(resource_group, name)
6
+ def check_vm_status(resource_group, name, async)
7
7
  msg = "Checking Virtual Machine #{name} status"
8
8
  Fog::Logger.debug msg
9
9
  begin
@@ -30,7 +30,8 @@ module Fog
30
30
  vm_hash[:vhd_path],
31
31
  vm_hash[:os_disk_caching],
32
32
  vm_hash[:platform],
33
- vm_hash[:resource_group])
33
+ vm_hash[:resource_group],
34
+ vm_hash[:managed_disk_storage_type])
34
35
 
35
36
  virtual_machine.os_profile = if vm_hash[:platform].casecmp(WINDOWS).zero?
36
37
  define_windows_os_profile(vm_hash[:name],
@@ -80,48 +81,55 @@ module Fog
80
81
  image_reference
81
82
  end
82
83
 
83
- def define_storage_profile(vm_name, storage_account_name, publisher, offer, sku, version, vhd_path, os_disk_caching, platform, resource_group)
84
+ def define_storage_profile(vm_name, storage_account_name, publisher, offer, sku, version, vhd_path, os_disk_caching, platform, resource_group, managed_disk_storage_type)
84
85
  storage_profile = Azure::ARM::Compute::Models::StorageProfile.new
86
+ storage_profile.image_reference = image_reference(publisher, offer, sku, version)
85
87
  os_disk = Azure::ARM::Compute::Models::OSDisk.new
86
- vhd = Azure::ARM::Compute::Models::VirtualHardDisk.new
87
88
 
88
- vhd.uri = get_blob_endpoint(storage_account_name) + "/vhds/#{vm_name}_os_disk.vhd"
89
+ if managed_disk_storage_type.nil?
90
+ vhd = Azure::ARM::Compute::Models::VirtualHardDisk.new
91
+ vhd.uri = get_blob_endpoint(storage_account_name) + "/vhds/#{vm_name}_os_disk.vhd"
89
92
 
90
- if vhd_path.nil?
91
- storage_profile.image_reference = image_reference(publisher, offer, sku, version)
92
- else
93
- # Copy if VHD does not exist belongs to same storage account.
94
- vhd_storage_account = (vhd_path.split('/')[2]).split('.')[0]
95
- if storage_account_name != vhd_storage_account
96
- storage_account = @storage_service.storage_accounts.get(resource_group, storage_account_name)
97
- access_key = storage_account.get_access_keys.first.value
98
- storage_data = Fog::Storage::AzureRM.new(provider: 'AzureRM', azure_storage_account_name: storage_account_name, azure_storage_access_key: access_key)
99
- new_time = current_time
100
- container_name = "customvhd#{new_time}"
101
- blob_name = "vhd_image#{new_time}.vhd"
102
- storage_data.directories.create(
103
- key: container_name
104
- )
93
+ unless vhd_path.nil?
94
+ # Copy if VHD does not exist belongs to same storage account.
95
+ vhd_storage_account = (vhd_path.split('/')[2]).split('.')[0]
96
+ if storage_account_name != vhd_storage_account
97
+ storage_account = @storage_service.storage_accounts.get(resource_group, storage_account_name)
98
+ access_key = storage_account.get_access_keys.first.value
99
+ storage_data = Fog::Storage::AzureRM.new(provider: 'AzureRM', azure_storage_account_name: storage_account_name, azure_storage_access_key: access_key)
100
+ new_time = current_time
101
+ container_name = "customvhd#{new_time}"
102
+ blob_name = "vhd_image#{new_time}.vhd"
103
+ storage_data.directories.create(
104
+ key: container_name
105
+ )
105
106
 
106
- storage_data.copy_blob_from_uri(container_name, blob_name, vhd_path)
107
- until storage_data.get_blob_properties(container_name, blob_name).properties[:copy_status] == 'success'
108
- Fog::Logger.debug 'Waiting disk to ready'
109
- sleep(10)
107
+ storage_data.copy_blob_from_uri(container_name, blob_name, vhd_path)
108
+ until storage_data.get_blob_properties(container_name, blob_name).properties[:copy_status] == 'success'
109
+ Fog::Logger.debug 'Waiting disk to ready'
110
+ sleep(10)
111
+ end
112
+ new_vhd_path = get_blob_endpoint(storage_account_name) + "/#{container_name}/#{blob_name}"
113
+ Fog::Logger.debug "Path:#{new_vhd_path}. | Copy done"
114
+ else
115
+ new_vhd_path = vhd_path
110
116
  end
111
- new_vhd_path = get_blob_endpoint(storage_account_name) + "/#{container_name}/#{blob_name}"
112
- Fog::Logger.debug "Path:#{new_vhd_path}. | Copy done"
113
- else
114
- new_vhd_path = vhd_path
117
+
118
+ img_vhd = Azure::ARM::Compute::Models::VirtualHardDisk.new
119
+ img_vhd.uri = new_vhd_path
120
+ os_disk.image = img_vhd
115
121
  end
116
122
 
117
- img_vhd = Azure::ARM::Compute::Models::VirtualHardDisk.new
118
- img_vhd.uri = new_vhd_path
119
- os_disk.image = img_vhd
120
- os_disk.os_type = platform
123
+ os_disk.vhd = vhd
124
+ else
125
+ managed_disk = Azure::ARM::Compute::Models::ManagedDiskParameters.new
126
+ managed_disk.storage_account_type = managed_disk_storage_type
127
+ os_disk.managed_disk = managed_disk
121
128
  end
122
-
129
+
123
130
  os_disk.name = "#{vm_name}_os_disk"
124
- os_disk.vhd = vhd
131
+ os_disk.os_type = platform
132
+
125
133
  os_disk.create_option = Azure::ARM::Compute::Models::DiskCreateOptionTypes::FromImage
126
134
  os_disk.caching = unless os_disk_caching.nil?
127
135
  case os_disk_caching
@@ -133,7 +141,7 @@ module Fog
133
141
  Azure::ARM::Compute::Models::CachingTypes::ReadWrite
134
142
  end
135
143
  end
136
-
144
+
137
145
  storage_profile.os_disk = os_disk
138
146
  storage_profile
139
147
  end
@@ -3,16 +3,24 @@ module Fog
3
3
  class AzureRM
4
4
  # This class provides the actual implementation for service calls.
5
5
  class Real
6
- def deallocate_virtual_machine(resource_group, name)
6
+ def deallocate_virtual_machine(resource_group, name, async)
7
7
  msg = "Deallocating Virtual Machine #{name} in Resource Group #{resource_group}"
8
8
  Fog::Logger.debug msg
9
9
  begin
10
- @compute_mgmt_client.virtual_machines.deallocate(resource_group, name)
10
+ if async
11
+ response = @compute_mgmt_client.virtual_machines.deallocate_async(resource_group, name)
12
+ else
13
+ @compute_mgmt_client.virtual_machines.deallocate(resource_group, name)
14
+ end
11
15
  rescue MsRestAzure::AzureOperationError => e
12
16
  raise_azure_exception(e, msg)
13
17
  end
14
- Fog::Logger.debug "Virtual Machine #{name} Deallocated Successfully."
15
- true
18
+ if async
19
+ response
20
+ else
21
+ Fog::Logger.debug "Virtual Machine #{name} Deallocated Successfully."
22
+ true
23
+ end
16
24
  end
17
25
  end
18
26
  # This class provides the mock implementation for unit tests.
@@ -3,16 +3,24 @@ module Fog
3
3
  class AzureRM
4
4
  # This class provides the actual implementation for service calls.
5
5
  class Real
6
- def delete_virtual_machine(resource_group, name)
6
+ def delete_virtual_machine(resource_group, name, async)
7
7
  msg = "Deleting Virtual Machine #{name} from Resource Group #{resource_group}"
8
8
  Fog::Logger.debug msg
9
9
  begin
10
- @compute_mgmt_client.virtual_machines.delete(resource_group, name)
10
+ if async
11
+ response = @compute_mgmt_client.virtual_machines.delete_async(resource_group, name)
12
+ else
13
+ @compute_mgmt_client.virtual_machines.delete(resource_group, name)
14
+ end
11
15
  rescue MsRestAzure::AzureOperationError => e
12
16
  raise_azure_exception(e, msg)
13
17
  end
14
- Fog::Logger.debug "Virtual Machine #{name} Deleted Successfully."
15
- true
18
+ if async
19
+ response
20
+ else
21
+ Fog::Logger.debug "Virtual Machine #{name} Deleted Successfully."
22
+ true
23
+ end
16
24
  end
17
25
  end
18
26
  # This class provides the mock implementation for unit tests.
@@ -3,7 +3,7 @@ module Fog
3
3
  class AzureRM
4
4
  # This class provides the actual implementation for service calls.
5
5
  class Real
6
- def detach_data_disk_from_vm(resource_group, vm_name, disk_name)
6
+ def detach_data_disk_from_vm(resource_group, vm_name, disk_name, async)
7
7
  msg = "Detaching Data Disk #{disk_name} from Virtual Machine #{vm_name} in Resource Group #{resource_group}."
8
8
  Fog::Logger.debug msg
9
9
  vm = get_virtual_machine_instance(resource_group, vm_name, @compute_mgmt_client)
@@ -14,12 +14,20 @@ module Fog
14
14
  end
15
15
  vm.resources = nil
16
16
  begin
17
- virtual_machine = @compute_mgmt_client.virtual_machines.create_or_update(resource_group, vm_name, vm)
17
+ if async
18
+ response = @compute_mgmt_client.virtual_machines.create_or_update_async(resource_group, vm_name, vm)
19
+ else
20
+ virtual_machine = @compute_mgmt_client.virtual_machines.create_or_update(resource_group, vm_name, vm)
21
+ end
18
22
  rescue MsRestAzure::AzureOperationError => e
19
23
  raise_azure_exception(e, msg)
20
24
  end
21
- Fog::Logger.debug "Data Disk #{disk_name} detached from Virtual Machine #{vm_name} successfully."
22
- virtual_machine
25
+ if async
26
+ response
27
+ else
28
+ Fog::Logger.debug "Data Disk #{disk_name} detached from Virtual Machine #{vm_name} successfully."
29
+ virtual_machine
30
+ end
23
31
  end
24
32
  end
25
33
  # This class provides the mock implementation for unit tests.
@@ -3,16 +3,24 @@ module Fog
3
3
  class AzureRM
4
4
  # This class provides the actual implementation for service calls.
5
5
  class Real
6
- def generalize_virtual_machine(resource_group, name)
6
+ def generalize_virtual_machine(resource_group, name, async)
7
7
  msg = "Generalizing Virtual Machine #{name} in Resource Group #{resource_group}"
8
8
  Fog::Logger.debug msg
9
9
  begin
10
- @compute_mgmt_client.virtual_machines.generalize(resource_group, name)
10
+ if async
11
+ response = @compute_mgmt_client.virtual_machines.generalize_async(resource_group, name)
12
+ else
13
+ @compute_mgmt_client.virtual_machines.generalize(resource_group, name)
14
+ end
11
15
  rescue MsRestAzure::AzureOperationError => e
12
16
  raise_azure_exception(e, msg)
13
17
  end
14
- Fog::Logger.debug "Virtual Machine #{name} Generalized Successfully."
15
- true
18
+ if async
19
+ response
20
+ else
21
+ Fog::Logger.debug "Virtual Machine #{name} Generalized Successfully."
22
+ true
23
+ end
16
24
  end
17
25
  end
18
26
  # This class provides the mock implementation for unit tests.
@@ -3,16 +3,20 @@ module Fog
3
3
  class AzureRM
4
4
  # This class provides the actual implementation for service calls.
5
5
  class Real
6
- def get_virtual_machine(resource_group, name)
6
+ def get_virtual_machine(resource_group, name, async)
7
7
  msg = "Getting Virtual Machine #{name} from Resource Group '#{resource_group}'"
8
8
  Fog::Logger.debug msg
9
9
  begin
10
- virtual_machine = @compute_mgmt_client.virtual_machines.get(resource_group, name)
10
+ if async
11
+ response = @compute_mgmt_client.virtual_machines.get_async(resource_group, name)
12
+ else
13
+ response = @compute_mgmt_client.virtual_machines.get(resource_group, name)
14
+ end
11
15
  rescue MsRestAzure::AzureOperationError => e
12
16
  raise_azure_exception(e, msg)
13
17
  end
14
- Fog::Logger.debug "Getting Virtual Machine #{name} from Resource Group '#{resource_group}' successful"
15
- virtual_machine
18
+ Fog::Logger.debug "Getting Virtual Machine #{name} from Resource Group '#{resource_group}' successful" unless async
19
+ response
16
20
  end
17
21
  end
18
22
  # This class provides the mock implementation for unit tests.
@@ -3,16 +3,24 @@ module Fog
3
3
  class AzureRM
4
4
  # This class provides the actual implementation for service calls.
5
5
  class Real
6
- def list_available_sizes_for_virtual_machine(resource_group, name)
6
+ def list_available_sizes_for_virtual_machine(resource_group, name, async)
7
7
  msg = "Listing sizes for Virtual Machine #{name} in Resource Group #{resource_group}"
8
8
  Fog::Logger.debug msg
9
9
  begin
10
- vm_sizes = @compute_mgmt_client.virtual_machines.list_available_sizes(resource_group, name)
10
+ if async
11
+ response = @compute_mgmt_client.virtual_machines.list_available_sizes_async(resource_group, name)
12
+ else
13
+ vm_sizes = @compute_mgmt_client.virtual_machines.list_available_sizes(resource_group, name)
14
+ end
11
15
  rescue MsRestAzure::AzureOperationError => e
12
16
  raise_azure_exception(e, msg)
13
17
  end
14
- Fog::Logger.debug "Successfully listed sizes for Virtual Machine #{name} in Resource Group #{resource_group}"
15
- vm_sizes.value
18
+ if async
19
+ response
20
+ else
21
+ Fog::Logger.debug "Successfully listed sizes for Virtual Machine #{name} in Resource Group #{resource_group}"
22
+ vm_sizes.value
23
+ end
16
24
  end
17
25
  end
18
26
  # This class provides the mock implementation for unit tests.
@@ -3,16 +3,24 @@ module Fog
3
3
  class AzureRM
4
4
  # This class provides the actual implementation for service calls.
5
5
  class Real
6
- def power_off_virtual_machine(resource_group, name)
6
+ def power_off_virtual_machine(resource_group, name, async)
7
7
  msg = "Powering off Virtual Machine #{name} in Resource Group #{resource_group}"
8
8
  Fog::Logger.debug msg
9
9
  begin
10
- @compute_mgmt_client.virtual_machines.power_off(resource_group, name)
10
+ if async
11
+ response = @compute_mgmt_client.virtual_machines.power_off_async(resource_group, name)
12
+ else
13
+ @compute_mgmt_client.virtual_machines.power_off(resource_group, name)
14
+ end
11
15
  rescue MsRestAzure::AzureOperationError => e
12
16
  raise_azure_exception(e, msg)
13
17
  end
14
- Fog::Logger.debug "Virtual Machine #{name} Powered off Successfully."
15
- true
18
+ if async
19
+ response
20
+ else
21
+ Fog::Logger.debug "Virtual Machine #{name} Powered off Successfully."
22
+ true
23
+ end
16
24
  end
17
25
  end
18
26
  # This class provides the mock implementation for unit tests.
@@ -3,16 +3,24 @@ module Fog
3
3
  class AzureRM
4
4
  # This class provides the actual implementation for service calls.
5
5
  class Real
6
- def redeploy_virtual_machine(resource_group, name)
6
+ def redeploy_virtual_machine(resource_group, name, async)
7
7
  msg = "Redeploying Virtual Machine #{name} in Resource Group #{resource_group}."
8
8
  Fog::Logger.debug msg
9
9
  begin
10
- @compute_mgmt_client.virtual_machines.redeploy(resource_group, name)
10
+ if async
11
+ response = @compute_mgmt_client.virtual_machines.redeploy_async(resource_group, name)
12
+ else
13
+ @compute_mgmt_client.virtual_machines.redeploy(resource_group, name)
14
+ end
11
15
  rescue MsRestAzure::AzureOperationError => e
12
16
  raise_azure_exception(e, msg)
13
17
  end
14
- Fog::Logger.debug "Virtual Machine #{name} Redeployed Successfully."
15
- true
18
+ if async
19
+ response
20
+ else
21
+ Fog::Logger.debug "Virtual Machine #{name} Redeployed Successfully."
22
+ true
23
+ end
16
24
  end
17
25
  end
18
26
  # This class provides the mock implementation for unit tests.
@@ -3,16 +3,24 @@ module Fog
3
3
  class AzureRM
4
4
  # This class provides the actual implementation for service calls.
5
5
  class Real
6
- def restart_virtual_machine(resource_group, name)
6
+ def restart_virtual_machine(resource_group, name, async)
7
7
  msg = "Restarting Virtual Machine #{name} in Resource Group #{resource_group}"
8
8
  Fog::Logger.debug msg
9
9
  begin
10
- @compute_mgmt_client.virtual_machines.restart(resource_group, name)
10
+ if async
11
+ response = @compute_mgmt_client.virtual_machines.restart_async(resource_group, name)
12
+ else
13
+ @compute_mgmt_client.virtual_machines.restart(resource_group, name)
14
+ end
11
15
  rescue MsRestAzure::AzureOperationError => e
12
16
  raise_azure_exception(e, msg)
13
17
  end
14
- Fog::Logger.debug "Virtual Machine #{name} Restarted Successfully."
15
- true
18
+ if async
19
+ response
20
+ else
21
+ Fog::Logger.debug "Virtual Machine #{name} Restarted Successfully."
22
+ true
23
+ end
16
24
  end
17
25
  end
18
26
  # This class provides the mock implementation for unit tests.
@@ -3,16 +3,24 @@ module Fog
3
3
  class AzureRM
4
4
  # This class provides the actual implementation for service calls.
5
5
  class Real
6
- def start_virtual_machine(resource_group, name)
6
+ def start_virtual_machine(resource_group, name, async)
7
7
  msg = "Starting Virtual Machine #{name} in Resource Group #{resource_group}."
8
8
  Fog::Logger.debug msg
9
9
  begin
10
- @compute_mgmt_client.virtual_machines.start(resource_group, name)
10
+ if async
11
+ response = @compute_mgmt_client.virtual_machines.start_async(resource_group, name)
12
+ else
13
+ @compute_mgmt_client.virtual_machines.start(resource_group, name)
14
+ end
11
15
  rescue MsRestAzure::AzureOperationError => e
12
16
  raise_azure_exception(e, msg)
13
17
  end
14
- Fog::Logger.debug "Virtual Machine #{name} started Successfully."
15
- true
18
+ if async
19
+ response
20
+ else
21
+ Fog::Logger.debug "Virtual Machine #{name} started Successfully."
22
+ true
23
+ end
16
24
  end
17
25
  end
18
26
  # This class provides the mock implementation for unit tests.
@@ -1,5 +1,5 @@
1
1
  module Fog
2
2
  module AzureRM
3
- VERSION = '0.3.1'.freeze
3
+ VERSION = '0.3.2'.freeze
4
4
  end
5
5
  end
@@ -84,42 +84,77 @@ class TestServer < Minitest::Test
84
84
  @service.stub :delete_virtual_machine, true do
85
85
  assert @server.destroy
86
86
  end
87
+
88
+ async_response = Concurrent::Promise.execute { 10 }
89
+ @service.stub :delete_virtual_machine, async_response do
90
+ assert_instance_of Fog::AzureRM::AsyncResponse, @server.destroy(true)
91
+ end
87
92
  end
88
93
 
89
94
  def test_generalize_method_response
90
95
  @service.stub :generalize_virtual_machine, true do
91
96
  assert @server.generalize
92
97
  end
98
+
99
+ async_response = Concurrent::Promise.execute { 10 }
100
+ @service.stub :generalize_virtual_machine, async_response do
101
+ assert_instance_of Fog::AzureRM::AsyncResponse, @server.generalize(true)
102
+ end
93
103
  end
94
104
 
95
105
  def test_power_off_method_response
96
106
  @service.stub :power_off_virtual_machine, true do
97
107
  assert @server.power_off
98
108
  end
109
+
110
+ async_response = Concurrent::Promise.execute { 10 }
111
+ @service.stub :power_off_virtual_machine, async_response do
112
+ assert_instance_of Fog::AzureRM::AsyncResponse, @server.power_off(true)
113
+ end
99
114
  end
100
115
 
101
116
  def test_start_method_response
102
117
  @service.stub :start_virtual_machine, true do
103
118
  assert @server.start
104
119
  end
120
+
121
+ async_response = Concurrent::Promise.execute { 10 }
122
+ @service.stub :start_virtual_machine, async_response do
123
+ assert_instance_of Fog::AzureRM::AsyncResponse, @server.start(true)
124
+ end
105
125
  end
106
126
 
107
127
  def test_restart_method_response
108
128
  @service.stub :restart_virtual_machine, true do
109
129
  assert @server.restart
110
130
  end
131
+
132
+ async_response = Concurrent::Promise.execute { 10 }
133
+ @service.stub :restart_virtual_machine, async_response do
134
+ assert_instance_of Fog::AzureRM::AsyncResponse, @server.restart(true)
135
+ end
111
136
  end
112
137
 
113
138
  def test_deallocate_method_response
114
139
  @service.stub :deallocate_virtual_machine, true do
115
140
  assert @server.deallocate
116
141
  end
142
+
143
+ async_response = Concurrent::Promise.execute { 10 }
144
+ @service.stub :deallocate_virtual_machine, async_response do
145
+ assert_instance_of Fog::AzureRM::AsyncResponse, @server.deallocate(true)
146
+ end
117
147
  end
118
148
 
119
149
  def test_redeploy_method_response
120
150
  @service.stub :redeploy_virtual_machine, true do
121
151
  assert @server.redeploy
122
152
  end
153
+
154
+ async_response = Concurrent::Promise.execute { 10 }
155
+ @service.stub :redeploy_virtual_machine, async_response do
156
+ assert_instance_of Fog::AzureRM::AsyncResponse, @server.redeploy(true)
157
+ end
123
158
  end
124
159
 
125
160
  def test_vm_status_method_response
@@ -131,7 +166,12 @@ class TestServer < Minitest::Test
131
166
  def test_list_available_sizes_method_response
132
167
  response = ApiStub::Models::Compute::Server.list_available_sizes_for_virtual_machine_response(@compute_client)
133
168
  @service.stub :list_available_sizes_for_virtual_machine, response do
134
- assert_instance_of Array, @server.list_available_sizes
169
+ assert_instance_of Array, @server.list_available_sizes(false)
170
+ end
171
+
172
+ async_response = Concurrent::Promise.execute { 10 }
173
+ @service.stub :list_available_sizes_for_virtual_machine, async_response do
174
+ assert_instance_of Fog::AzureRM::AsyncResponse, @server.list_available_sizes(true)
135
175
  end
136
176
  end
137
177
 
@@ -140,6 +180,11 @@ class TestServer < Minitest::Test
140
180
  @service.stub :attach_data_disk_to_vm, response do
141
181
  assert_instance_of Fog::Compute::AzureRM::Server, @server.attach_data_disk('disk1', '10', 'mystorage1')
142
182
  end
183
+
184
+ async_response = Concurrent::Promise.execute { 10 }
185
+ @service.stub :attach_data_disk_to_vm, async_response do
186
+ assert_instance_of Fog::AzureRM::AsyncResponse, @server.attach_data_disk('disk', '10', 'mystorage1', true)
187
+ end
143
188
  end
144
189
 
145
190
  def test_detach_data_disk_response
@@ -147,5 +192,10 @@ class TestServer < Minitest::Test
147
192
  @service.stub :detach_data_disk_from_vm, response do
148
193
  assert_instance_of Fog::Compute::AzureRM::Server, @server.detach_data_disk('disk1')
149
194
  end
195
+
196
+ async_response = Concurrent::Promise.execute { 10 }
197
+ @service.stub :detach_data_disk_from_vm, async_response do
198
+ assert_instance_of Fog::AzureRM::AsyncResponse, @server.detach_data_disk('disk1', true)
199
+ end
150
200
  end
151
201
  end
@@ -10,14 +10,23 @@ class TestDeallocateVirtualMachine < Minitest::Test
10
10
 
11
11
  def test_deallocate_virtual_machine_success
12
12
  @virtual_machines.stub :deallocate, true do
13
- assert @service.deallocate_virtual_machine('fog-test-rg', 'fog-test-server')
13
+ assert @service.deallocate_virtual_machine('fog-test-rg', 'fog-test-server', false)
14
+ end
15
+
16
+ async_response = Concurrent::Promise.execute { 10 }
17
+ @virtual_machines.stub :deallocate_async, async_response do
18
+ assert @service.deallocate_virtual_machine('fog-test-rg', 'fog-test-server', true), async_response
14
19
  end
15
20
  end
16
21
 
17
22
  def test_deallocate_virtual_machine_failure
18
23
  response = proc { fail MsRestAzure::AzureOperationError.new(nil, nil, 'error' => { 'message' => 'mocked exception' }) }
19
24
  @virtual_machines.stub :deallocate, response do
20
- assert_raises(RuntimeError) { @service.deallocate_virtual_machine('fog-test-rg', 'fog-test-server') }
25
+ assert_raises(RuntimeError) { @service.deallocate_virtual_machine('fog-test-rg', 'fog-test-server', false) }
26
+ end
27
+
28
+ @virtual_machines.stub :deallocate_async, response do
29
+ assert_raises(RuntimeError) { @service.deallocate_virtual_machine('fog-test-rg', 'fog-test-server', true) }
21
30
  end
22
31
  end
23
32
  end
@@ -10,14 +10,23 @@ class TestDeleteVirtualMachine < Minitest::Test
10
10
 
11
11
  def test_delete_virtual_machine_success
12
12
  @virtual_machines.stub :delete, true do
13
- assert @service.delete_virtual_machine('fog-test-rg', 'fog-test-server')
13
+ assert @service.delete_virtual_machine('fog-test-rg', 'fog-test-server', false)
14
+ end
15
+
16
+ async_response = Concurrent::Promise.execute { 10 }
17
+ @virtual_machines.stub :delete_async, async_response do
18
+ assert @service.delete_virtual_machine('fog-test-rg', 'fog-test-server', true), async_response
14
19
  end
15
20
  end
16
21
 
17
22
  def test_delete_virtual_machine_failure
18
23
  response = proc { fail MsRestAzure::AzureOperationError.new(nil, nil, 'error' => { 'message' => 'mocked exception' }) }
19
24
  @virtual_machines.stub :delete, response do
20
- assert_raises(RuntimeError) { @service.delete_virtual_machine('fog-test-rg', 'fog-test-server') }
25
+ assert_raises(RuntimeError) { @service.delete_virtual_machine('fog-test-rg', 'fog-test-server', false) }
26
+ end
27
+
28
+ @virtual_machines.stub :delete_async, response do
29
+ assert_raises(RuntimeError) { @service.delete_virtual_machine('fog-test-rg', 'fog-test-server', true) }
21
30
  end
22
31
  end
23
32
  end
@@ -10,14 +10,23 @@ class TestGeneralizeVirtualMachine < Minitest::Test
10
10
 
11
11
  def test_generalize_virtual_machine_success
12
12
  @virtual_machines.stub :generalize, true do
13
- assert @service.generalize_virtual_machine('fog-test-rg', 'fog-test-server')
13
+ assert @service.generalize_virtual_machine('fog-test-rg', 'fog-test-server', false)
14
+ end
15
+
16
+ async_response = Concurrent::Promise.execute { 10 }
17
+ @virtual_machines.stub :generalize_async, async_response do
18
+ assert @service.generalize_virtual_machine('fog-test-rg', 'fog-test-server', true), async_response
14
19
  end
15
20
  end
16
21
 
17
22
  def test_generalize_virtual_machine_failure
18
23
  response = proc { fail MsRestAzure::AzureOperationError.new(nil, nil, 'error' => { 'message' => 'mocked exception' }) }
19
24
  @virtual_machines.stub :generalize, response do
20
- assert_raises(RuntimeError) { @service.generalize_virtual_machine('fog-test-rg', 'fog-test-server') }
25
+ assert_raises(RuntimeError) { @service.generalize_virtual_machine('fog-test-rg', 'fog-test-server', false) }
26
+ end
27
+
28
+ @virtual_machines.stub :generalize_async, response do
29
+ assert_raises(RuntimeError) { @service.generalize_virtual_machine('fog-test-rg', 'fog-test-server', true) }
21
30
  end
22
31
  end
23
32
  end
@@ -11,14 +11,23 @@ class TestListAvailableSizesForVirtualMachine < Minitest::Test
11
11
  def test_list_available_sizes_for_virtual_machine_success
12
12
  response = ApiStub::Requests::Compute::VirtualMachine.list_available_sizes_for_virtual_machine_response(@compute_client)
13
13
  @virtual_machines.stub :list_available_sizes, response do
14
- assert_equal @service.list_available_sizes_for_virtual_machine('fog-test-rg', 'fog-test-server'), response.value
14
+ assert_equal @service.list_available_sizes_for_virtual_machine('fog-test-rg', 'fog-test-server', false), response.value
15
+ end
16
+
17
+ async_response = Concurrent::Promise.execute { 10 }
18
+ @virtual_machines.stub :list_available_sizes_async, async_response do
19
+ assert @service.list_available_sizes_for_virtual_machine('fog-test-rg', 'fog-test-server', true), async_response
15
20
  end
16
21
  end
17
22
 
18
23
  def test_list_available_sizes_for_virtual_machine_failure
19
24
  response = proc { fail MsRestAzure::AzureOperationError.new(nil, nil, 'error' => { 'message' => 'mocked exception' }) }
20
25
  @virtual_machines.stub :list_available_sizes, response do
21
- assert_raises(RuntimeError) { @service.list_available_sizes_for_virtual_machine('fog-test-rg', 'fog-test-server') }
26
+ assert_raises(RuntimeError) { @service.list_available_sizes_for_virtual_machine('fog-test-rg', 'fog-test-server', false) }
27
+ end
28
+
29
+ @virtual_machines.stub :list_available_sizes_async, response do
30
+ assert_raises(RuntimeError) { @service.list_available_sizes_for_virtual_machine('fog-test-rg', 'fog-test-server', true) }
22
31
  end
23
32
  end
24
33
  end
@@ -10,14 +10,23 @@ class TestPowerOffVirtualMachine < Minitest::Test
10
10
 
11
11
  def test_power_off_virtual_machine_success
12
12
  @virtual_machines.stub :power_off, true do
13
- assert @service.power_off_virtual_machine('fog-test-rg', 'fog-test-server')
13
+ assert @service.power_off_virtual_machine('fog-test-rg', 'fog-test-server' ,false)
14
+ end
15
+
16
+ async_response = Concurrent::Promise.execute { 10 }
17
+ @virtual_machines.stub :power_off_async, async_response do
18
+ assert @service.power_off_virtual_machine('fog-test-rg', 'fog-test-server', true), async_response
14
19
  end
15
20
  end
16
21
 
17
22
  def test_power_off_virtual_machine_failure
18
23
  response = proc { fail MsRestAzure::AzureOperationError.new(nil, nil, 'error' => { 'message' => 'mocked exception' }) }
19
24
  @virtual_machines.stub :power_off, response do
20
- assert_raises(RuntimeError) { @service.power_off_virtual_machine('fog-test-rg', 'fog-test-server') }
25
+ assert_raises(RuntimeError) { @service.power_off_virtual_machine('fog-test-rg', 'fog-test-server', false) }
26
+ end
27
+
28
+ @virtual_machines.stub :power_off_async, response do
29
+ assert_raises(RuntimeError) { @service.power_off_virtual_machine('fog-test-rg', 'fog-test-server', true) }
21
30
  end
22
31
  end
23
32
  end
@@ -10,14 +10,24 @@ class TestRedeployVirtualMachine < Minitest::Test
10
10
 
11
11
  def test_redeploy_virtual_machine_success
12
12
  @virtual_machines.stub :redeploy, true do
13
- assert @service.redeploy_virtual_machine('fog-test-rg', 'fog-test-server')
13
+ assert @service.redeploy_virtual_machine('fog-test-rg', 'fog-test-server', false)
14
+ end
15
+
16
+ async_response = Concurrent::Promise.execute { 10 }
17
+ @virtual_machines.stub :redeploy_async, async_response do
18
+ assert @service.redeploy_virtual_machine('fog-test-rg', 'fog-test-server', true), async_response
14
19
  end
15
20
  end
16
21
 
17
22
  def test_redeploy_virtual_machine_failure
18
23
  response = proc { fail MsRestAzure::AzureOperationError.new(nil, nil, 'error' => { 'message' => 'mocked exception' }) }
19
24
  @virtual_machines.stub :redeploy, response do
20
- assert_raises(RuntimeError) { @service.redeploy_virtual_machine('fog-test-rg', 'fog-test-server') }
25
+ assert_raises(RuntimeError) { @service.redeploy_virtual_machine('fog-test-rg', 'fog-test-server', false) }
26
+ end
27
+
28
+ async_response = Concurrent::Promise.execute { 10 }
29
+ @virtual_machines.stub :redeploy_async, response do
30
+ assert_raises(RuntimeError) { @service.redeploy_virtual_machine('fog-test-rg', 'fog-test-server', true) }
21
31
  end
22
32
  end
23
33
  end
@@ -10,14 +10,23 @@ class TestRestartVirtualMachine < Minitest::Test
10
10
 
11
11
  def test_restart_virtual_machine_success
12
12
  @virtual_machines.stub :restart, true do
13
- assert @service.restart_virtual_machine('fog-test-rg', 'fog-test-server')
13
+ assert @service.restart_virtual_machine('fog-test-rg', 'fog-test-server', false)
14
+ end
15
+
16
+ async_response = Concurrent::Promise.execute { 10 }
17
+ @virtual_machines.stub :restart_async, async_response do
18
+ assert @service.restart_virtual_machine('fog-test-rg', 'fog-test-server', true), async_response
14
19
  end
15
20
  end
16
21
 
17
22
  def test_restart_virtual_machine_failure
18
23
  response = proc { fail MsRestAzure::AzureOperationError.new(nil, nil, 'error' => { 'message' => 'mocked exception' }) }
19
24
  @virtual_machines.stub :restart, response do
20
- assert_raises(RuntimeError) { @service.restart_virtual_machine('fog-test-rg', 'fog-test-server') }
25
+ assert_raises(RuntimeError) { @service.restart_virtual_machine('fog-test-rg', 'fog-test-server', false) }
26
+ end
27
+
28
+ @virtual_machines.stub :restart_async, response do
29
+ assert_raises(RuntimeError) { @service.restart_virtual_machine('fog-test-rg', 'fog-test-server', true) }
21
30
  end
22
31
  end
23
32
  end
@@ -10,14 +10,23 @@ class TestStartVirtualMachine < Minitest::Test
10
10
 
11
11
  def test_start_virtual_machine_success
12
12
  @virtual_machines.stub :start, true do
13
- assert @service.start_virtual_machine('fog-test-rg', 'fog-test-server')
13
+ assert @service.start_virtual_machine('fog-test-rg', 'fog-test-server', false)
14
+ end
15
+
16
+ async_response = Concurrent::Promise.execute { 10 }
17
+ @virtual_machines.stub :start_async, async_response do
18
+ assert @service.start_virtual_machine('fog-test-rg', 'fog-test-server', true), async_response
14
19
  end
15
20
  end
16
21
 
17
22
  def test_start_virtual_machine_failure
18
23
  response = proc { fail MsRestAzure::AzureOperationError.new(nil, nil, 'error' => { 'message' => 'mocked exception' }) }
19
24
  @virtual_machines.stub :start, response do
20
- assert_raises(RuntimeError) { @service.start_virtual_machine('fog-test-rg', 'fog-test-server') }
25
+ assert_raises(RuntimeError) { @service.start_virtual_machine('fog-test-rg', 'fog-test-server', false) }
26
+ end
27
+
28
+ @virtual_machines.stub :start_async, response do
29
+ assert_raises(RuntimeError) { @service.start_virtual_machine('fog-test-rg', 'fog-test-server', true) }
21
30
  end
22
31
  end
23
32
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: fog-azure-rm
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.1
4
+ version: 0.3.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Shaffan Chaudhry
@@ -14,7 +14,7 @@ authors:
14
14
  autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
- date: 2017-05-03 00:00:00.000000000 Z
17
+ date: 2017-07-20 00:00:00.000000000 Z
18
18
  dependencies:
19
19
  - !ruby/object:Gem::Dependency
20
20
  name: rake