fog-azure-rm 0.5.0 → 0.6.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: c7723f74bbee0611351af2564fa5d3435354be5a5ed212a12fdae7ab5050a88c
4
- data.tar.gz: 142a0f7e06a32ff2e83fe9b87c62ff115edc7e6b0601e37e5c967c45f91b1ed6
3
+ metadata.gz: df46e3710a22d1cbeca770d5132cb57545062441ad3991a140dea9f33845b8bb
4
+ data.tar.gz: b95d9140a0510bc61b0a8cc61dcbb609278edb53d39fab4c182b1926841be38f
5
5
  SHA512:
6
- metadata.gz: 9cd47cf5c5ad0b765a791dd1faaef235139671c2fa8bac0c01d5b404ca66390ae91e1f490f4a3e6308074399f4c4d8192f52d5433cc6408eed457641bf90f2f2
7
- data.tar.gz: 31215199cce2b823e2e0d80ccd6ee593f425deadaf65a389f6fc656c6372f0fee07442186faad44a9105860fbf3e1833b1d072a987ee2540c93308b58f993524
6
+ metadata.gz: 62a38b825f9a5228096a0edb21a584a1318378dc7a215849dc92f99fbc806c8da793decabfd90977a14081e0147db6cba4c91db8297c95635146088c52a3aad2
7
+ data.tar.gz: 7392b2fad3a5e12de70924c50c55aa1305ff03cf7e5e7ddd25614813831e98a6f9549433a97b0c396a92e589b06b0694ad59175f008423b21568fc8c247e0b92
data/CHANGELOG.md CHANGED
@@ -1,3 +1,24 @@
1
+ ## 0.6.0
2
+
3
+ **Changed:**
4
+ - Updated dependency of mime-types to (~> 3.0)
5
+ - Updated dependency of rake to (>= 12.3.3)
6
+
7
+ ## 0.5.3
8
+
9
+ **Fixed**
10
+ - Added Null Check for `path_params` hash for `AzureOperationError` Request Headers
11
+
12
+ ## 0.5.2
13
+
14
+ **Added**
15
+ - Printing Information from `AzureOperationError` Response Headers
16
+
17
+ ## 0.5.1
18
+
19
+ **Added**
20
+ - Added Managed Disk Caching Option
21
+
1
22
  ## 0.5.0
2
23
 
3
24
  **Added**
data/fog-azure-rm.gemspec CHANGED
@@ -18,7 +18,7 @@ Gem::Specification.new do |spec|
18
18
  spec.extra_rdoc_files = %w[README.md]
19
19
  spec.required_ruby_version = '>= 2.0.0'
20
20
  spec.post_install_message = 'Thanks for installing!'
21
- spec.add_development_dependency 'rake', '~> 10.0'
21
+ spec.add_development_dependency 'rake', '>= 12.3.3'
22
22
  spec.add_development_dependency 'minitest', '~> 5.8.4'
23
23
  spec.add_development_dependency 'simplecov'
24
24
  spec.add_development_dependency 'codeclimate-test-reporter' , '~> 1.0.0'
@@ -34,5 +34,5 @@ Gem::Specification.new do |spec|
34
34
  spec.add_dependency 'azure_mgmt_key_vault', '~> 0.9.0'
35
35
  spec.add_dependency 'azure-storage', '= 0.11.5.preview'
36
36
  spec.add_dependency 'vhd', '0.0.4'
37
- spec.add_dependency 'mime-types', '~> 1.25'
37
+ spec.add_dependency 'mime-types', '~> 3.0'
38
38
  end
@@ -6,6 +6,40 @@ module Fog
6
6
  def initialize(message, azure_exception)
7
7
  super(azure_exception.request, azure_exception.response, azure_exception.body, "Exception in #{message}")
8
8
  end
9
+
10
+ def print_subscription_limits_information
11
+ request_method = @request.method
12
+ subscription_id = @request.path_params['subscriptionId'] unless @request.path_params.nil?
13
+
14
+ limit_value = remaining_subscription_request_limits(@response)
15
+
16
+ puts "Subscription: '#{subscription_id}'. Request Method: '#{request_method}'. \nLimit Value: #{limit_value['header']}: #{limit_value['value']}\n" unless limit_value.empty?
17
+ end
18
+
19
+ def remaining_subscription_request_limits(response)
20
+ limit = {}
21
+ # handles both read and write limits
22
+ if response.headers.key? 'x-ms-ratelimit-remaining-subscription-resource-requests'
23
+ limit['header'] = 'x-ms-ratelimit-remaining-subscription-resource-requests'
24
+ limit['value'] = response.headers['x-ms-ratelimit-remaining-subscription-resource-requests']
25
+
26
+ # limit for collection API calls
27
+ elsif response.headers.key? 'x-ms-ratelimit-remaining-subscription-resource-entities-read'
28
+ limit['header'] = 'x-ms-ratelimit-remaining-subscription-resource-entities-read'
29
+ limit['value'] = response.headers['x-ms-ratelimit-remaining-subscription-resource-entities-read']
30
+
31
+ # read requests limit
32
+ elsif response.headers.key? 'x-ms-ratelimit-remaining-subscription-reads'
33
+ limit['header'] = 'x-ms-ratelimit-remaining-subscription-reads'
34
+ limit['value'] = response.headers['x-ms-ratelimit-remaining-subscription-reads']
35
+
36
+ # write requests limit
37
+ elsif response.headers.key? 'x-ms-ratelimit-remaining-subscription-writes'
38
+ limit['header'] = 'x-ms-ratelimit-remaining-subscription-writes'
39
+ limit['value'] = response.headers['x-ms-ratelimit-remaining-subscription-writes']
40
+ end
41
+ limit
42
+ end
9
43
  end
10
44
 
11
45
  # This is a custom Fog exception inherited from Azure::Core::Http::HTTPError
@@ -160,7 +160,7 @@ async_response = fog_compute_service.servers.create_async(
160
160
  os_disk_name: '<Disk Name>' # [Optional], name of the os disk
161
161
  )
162
162
  ```
163
- Following methods are available to handle async respoonse:
163
+ Following methods are available to handle async response:
164
164
  - state
165
165
  - pending?
166
166
  - rejected?
@@ -310,10 +310,10 @@ fog_compute_service.managed_disks.create(
310
310
 
311
311
  ## Attach a Managed Data Disk to Server
312
312
 
313
- Get the server object and attach a Data Disk to it.
313
+ Get the server object and attach a Data Disk with Disk Caching Option to it. Possible <Disk Caching Option> values include: "None", "ReadOnly", "ReadWrite". By Default "None" set.
314
314
 
315
315
  ```ruby
316
- server.attach_managed_disk('<Disk Name>', '<Disk Resource Group Name>')
316
+ server.attach_managed_disk('<Disk Name>', '<Disk Resource Group Name>', '<Async Option>', '<Disk Caching Option>')
317
317
  ```
318
318
 
319
319
  ## Detach a Managed Data Disk from Server
@@ -173,8 +173,8 @@ module Fog
173
173
  async ? create_fog_async_response(response) : merge_attributes(Fog::Compute::AzureRM::Server.parse(response))
174
174
  end
175
175
 
176
- def attach_managed_disk(disk_name, disk_resource_group, async = false)
177
- response = service.attach_data_disk_to_vm(data_disk_params(disk_name, nil, nil, disk_resource_group), async)
176
+ def attach_managed_disk(disk_name, disk_resource_group, async = false, caching = 'None')
177
+ response = service.attach_data_disk_to_vm(data_disk_params(disk_name, nil, nil, disk_resource_group, caching), async)
178
178
  async ? create_fog_async_response(response) : merge_attributes(Fog::Compute::AzureRM::Server.parse(response))
179
179
  end
180
180
 
@@ -239,14 +239,15 @@ module Fog
239
239
  }
240
240
  end
241
241
 
242
- def data_disk_params(disk_name, disk_size = nil, storage_account = nil, disk_resource_group = nil)
242
+ def data_disk_params(disk_name, disk_size = nil, storage_account = nil, disk_resource_group = nil, caching = nil)
243
243
  {
244
244
  vm_name: name,
245
245
  vm_resource_group: resource_group,
246
246
  disk_name: disk_name,
247
247
  disk_size_gb: disk_size,
248
248
  storage_account_name: storage_account,
249
- disk_resource_group: disk_resource_group
249
+ disk_resource_group: disk_resource_group,
250
+ caching: caching
250
251
  }
251
252
  end
252
253
 
@@ -11,6 +11,7 @@ module Fog
11
11
  disk_resource_group = disk_params[:disk_resource_group]
12
12
  disk_size = disk_params[:disk_size_gb]
13
13
  storage_account_name = disk_params[:storage_account_name]
14
+ caching = disk_params[:caching] || nil
14
15
 
15
16
  msg = "Attaching Data Disk #{disk_name} to Virtual Machine #{vm_name} in Resource Group #{vm_resource_group}"
16
17
  Fog::Logger.debug msg
@@ -24,7 +25,7 @@ module Fog
24
25
  data_disk = get_unmanaged_disk_object(disk_name, disk_size, lun, storage_account_name, access_key)
25
26
  elsif disk_resource_group
26
27
  # Managed data disk
27
- data_disk = get_data_disk_object(disk_resource_group, disk_name, lun)
28
+ data_disk = get_data_disk_object(disk_resource_group, disk_name, lun, caching)
28
29
  end
29
30
  vm.storage_profile.data_disks.push(data_disk)
30
31
  begin
@@ -75,7 +76,7 @@ module Fog
75
76
  lun_range_list[0]
76
77
  end
77
78
 
78
- def get_data_disk_object(disk_resource_group, disk_name, lun)
79
+ def get_data_disk_object(disk_resource_group, disk_name, lun, caching)
79
80
  msg = "Getting Managed Disk #{disk_name} from Resource Group #{disk_resource_group}"
80
81
  begin
81
82
  disk = @compute_mgmt_client.disks.get(disk_resource_group, disk_name)
@@ -88,6 +89,18 @@ module Fog
88
89
  managed_disk.lun = lun
89
90
  managed_disk.create_option = Azure::ARM::Compute::Models::DiskCreateOptionTypes::Attach
90
91
 
92
+ # Managed Disk Caching Type
93
+ managed_disk.caching = case caching
94
+ when 'ReadOnly'
95
+ Azure::ARM::Compute::Models::CachingTypes::ReadOnly
96
+ when 'ReadWrite'
97
+ Azure::ARM::Compute::Models::CachingTypes::ReadWrite
98
+ when 'None', nil
99
+ Azure::ARM::Compute::Models::CachingTypes::None
100
+ else
101
+ raise "Invalid Disk Caching Option: #{caching}"
102
+ end
103
+
91
104
  # Managed disk parameter
92
105
  managed_disk_params = Azure::ARM::Compute::Models::ManagedDiskParameters.new
93
106
  managed_disk_params.id = disk.id
@@ -50,8 +50,11 @@ end
50
50
 
51
51
  def raise_azure_exception(exception, msg)
52
52
  raise Fog::AzureRM::CustomAzureCoreHttpError.new(exception) if exception.is_a?(Azure::Core::Http::HTTPError)
53
- raise Fog::AzureRM::CustomAzureOperationError.new(msg, exception) if exception.is_a?(MsRestAzure::AzureOperationError)
54
- raise exception
53
+ raise exception unless exception.is_a?(MsRestAzure::AzureOperationError)
54
+
55
+ azure_operation_error = Fog::AzureRM::CustomAzureOperationError.new(msg, exception)
56
+ azure_operation_error.print_subscription_limits_information if !azure_operation_error.request.nil? && !azure_operation_error.response.nil?
57
+ raise azure_operation_error
55
58
  end
56
59
 
57
60
  # Make sure if input_params(Hash) contains all keys present in required_params(Array)
@@ -1,5 +1,5 @@
1
1
  module Fog
2
2
  module AzureRM
3
- VERSION = '0.5.0'.freeze
3
+ VERSION = '0.6.0'.freeze
4
4
  end
5
5
  end
data/rakefile CHANGED
@@ -1,4 +1,6 @@
1
+ require 'bundler/gem_tasks'
1
2
  require 'rake/testtask'
3
+
2
4
  task default: :cc_coverage
3
5
  task :test do
4
6
  ENV['COVERAGE'] = nil
@@ -134,7 +134,7 @@ begin
134
134
  name: 'TestVM-Managed',
135
135
  location: LOCATION,
136
136
  resource_group: 'TestRG-VM',
137
- vm_size: 'Basic_A0',
137
+ vm_size: 'Standard_B2s',
138
138
  storage_account_name: nil,
139
139
  username: 'testuser',
140
140
  password: 'Confiz=123',
@@ -238,6 +238,30 @@ begin
238
238
  )
239
239
  puts "Created Managed Disk: #{managed_disk.name}"
240
240
 
241
+ managed_disk_ro = compute.managed_disks.create(
242
+ name: 'ManagedDataDiskRO',
243
+ location: LOCATION,
244
+ resource_group_name: 'TestRG-VM',
245
+ account_type: 'Standard_LRS',
246
+ disk_size_gb: 100,
247
+ creation_data: {
248
+ create_option: 'Empty'
249
+ }
250
+ )
251
+ puts "Created Managed Disk: #{managed_disk_ro.name}"
252
+
253
+ managed_disk_rw = compute.managed_disks.create(
254
+ name: 'ManagedDataDiskRW',
255
+ location: LOCATION,
256
+ resource_group_name: 'TestRG-VM',
257
+ account_type: 'Standard_LRS',
258
+ disk_size_gb: 100,
259
+ creation_data: {
260
+ create_option: 'Empty'
261
+ }
262
+ )
263
+ puts "Created Managed Disk: #{managed_disk_rw.name}"
264
+
241
265
  ########################################################################################################################
242
266
  ###################### Attach Managed Data Disk to VM ######################
243
267
  ########################################################################################################################
@@ -245,6 +269,12 @@ begin
245
269
  managed_vm.attach_managed_disk('ManagedDataDisk', 'TestRG-VM')
246
270
  puts 'Attached Managed Data Disk to VM!'
247
271
 
272
+ managed_vm.attach_managed_disk('ManagedDataDiskRO', 'TestRG-VM', false, 'ReadOnly')
273
+ puts 'Attached Managed Data Disk with Disk Caching ReadOnly to VM!'
274
+
275
+ managed_vm.attach_managed_disk('ManagedDataDiskRW', 'TestRG-VM', false, 'ReadWrite')
276
+ puts 'Attached Managed Data Disk with Disk Caching ReadWrite to VM!'
277
+
248
278
  ########################################################################################################################
249
279
  ###################### Detach Data Disk from VM ######################
250
280
  ########################################################################################################################
@@ -252,6 +282,12 @@ begin
252
282
  managed_vm.detach_managed_disk('ManagedDataDisk')
253
283
  puts 'Detached Managed Data Disk from VM!'
254
284
 
285
+ managed_vm.detach_managed_disk('ManagedDataDiskRO')
286
+ puts 'Detached Managed Data Disk with Disk Caching ReadOnly from VM!'
287
+
288
+ managed_vm.detach_managed_disk('ManagedDataDiskRW')
289
+ puts 'Detached Managed Data Disk with Disk Caching ReadWrite from VM!'
290
+
255
291
  ########################################################################################################################
256
292
  ###################### Delete Managed Data Disk ######################
257
293
  ########################################################################################################################
@@ -259,6 +295,12 @@ begin
259
295
  managed_disk.destroy
260
296
  puts 'Deleted managed data disk!'
261
297
 
298
+ managed_disk_ro.destroy
299
+ puts 'Deleted managed data disk with Disk Caching ReadOnly!'
300
+
301
+ managed_disk_rw.destroy
302
+ puts 'Deleted managed data disk with Disk Caching ReadWrite!'
303
+
262
304
  ########################################################################################################################
263
305
  ###################### List VM in a resource group ######################
264
306
  ########################################################################################################################
@@ -216,6 +216,12 @@ class TestServer < Minitest::Test
216
216
  @service.stub :attach_data_disk_to_vm, response do
217
217
  assert_instance_of Fog::Compute::AzureRM::Server, @server.attach_managed_disk('disk_name', 'resoure_group')
218
218
  end
219
+ @service.stub :attach_data_disk_to_vm, response do
220
+ assert_instance_of Fog::Compute::AzureRM::Server, @server.attach_managed_disk('disk_name', 'resoure_group', false, 'ReadOnly')
221
+ end
222
+ @service.stub :attach_data_disk_to_vm, response do
223
+ assert_instance_of Fog::Compute::AzureRM::Server, @server.attach_managed_disk('disk_name', 'resoure_group', false, 'ReadWrite')
224
+ end
219
225
 
220
226
  async_response = Concurrent::Promise.execute { 10 }
221
227
  @service.stub :attach_data_disk_to_vm, async_response do
@@ -42,6 +42,22 @@ class TestAttachDataDiskToVM < Minitest::Test
42
42
  end
43
43
  end
44
44
  end
45
+ @virtual_machines.stub :get, @get_vm_response do
46
+ @disks.stub :get, @get_managed_disk_response do
47
+ @virtual_machines.stub :create_or_update, @get_vm_managed_disk_response do
48
+ input_params = { vm_name: 'ManagedVM', vm_resource_group: 'ManagedRG', disk_name: 'ManagedDataDisk1', disk_size_gb: 100, disk_resource_group: 'ManagedRG', caching: 'ReadOnly' }
49
+ assert_equal @service.attach_data_disk_to_vm(input_params, false), @get_vm_managed_disk_response
50
+ end
51
+ end
52
+ end
53
+ @virtual_machines.stub :get, @get_vm_response do
54
+ @disks.stub :get, @get_managed_disk_response do
55
+ @virtual_machines.stub :create_or_update, @get_vm_managed_disk_response do
56
+ input_params = { vm_name: 'ManagedVM', vm_resource_group: 'ManagedRG', disk_name: 'ManagedDataDisk1', disk_size_gb: 100, disk_resource_group: 'ManagedRG', caching: 'ReadWrite' }
57
+ assert_equal @service.attach_data_disk_to_vm(input_params, false), @get_vm_managed_disk_response
58
+ end
59
+ end
60
+ end
45
61
  end
46
62
 
47
63
  def test_attach_data_disk_to_vm_failure
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.5.0
4
+ version: 0.6.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Shaffan Chaudhry
@@ -15,25 +15,25 @@ authors:
15
15
  - Azeem Sajid
16
16
  - Maham Nazir
17
17
  - Abbas Sheikh
18
- autorequire:
18
+ autorequire:
19
19
  bindir: bin
20
20
  cert_chain: []
21
- date: 2019-02-28 00:00:00.000000000 Z
21
+ date: 2022-01-29 00:00:00.000000000 Z
22
22
  dependencies:
23
23
  - !ruby/object:Gem::Dependency
24
24
  name: rake
25
25
  requirement: !ruby/object:Gem::Requirement
26
26
  requirements:
27
- - - "~>"
27
+ - - ">="
28
28
  - !ruby/object:Gem::Version
29
- version: '10.0'
29
+ version: 12.3.3
30
30
  type: :development
31
31
  prerelease: false
32
32
  version_requirements: !ruby/object:Gem::Requirement
33
33
  requirements:
34
- - - "~>"
34
+ - - ">="
35
35
  - !ruby/object:Gem::Version
36
- version: '10.0'
36
+ version: 12.3.3
37
37
  - !ruby/object:Gem::Dependency
38
38
  name: minitest
39
39
  requirement: !ruby/object:Gem::Requirement
@@ -250,18 +250,18 @@ dependencies:
250
250
  requirements:
251
251
  - - "~>"
252
252
  - !ruby/object:Gem::Version
253
- version: '1.25'
253
+ version: '3.0'
254
254
  type: :runtime
255
255
  prerelease: false
256
256
  version_requirements: !ruby/object:Gem::Requirement
257
257
  requirements:
258
258
  - - "~>"
259
259
  - !ruby/object:Gem::Version
260
- version: '1.25'
260
+ version: '3.0'
261
261
  description: |-
262
262
  This library can be used as a module for 'fog' or as standalone provider
263
263
  to use the Azure Resource Manager cloud services in applications..
264
- email:
264
+ email:
265
265
  executables: []
266
266
  extensions: []
267
267
  extra_rdoc_files:
@@ -1059,8 +1059,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
1059
1059
  - !ruby/object:Gem::Version
1060
1060
  version: '0'
1061
1061
  requirements: []
1062
- rubygems_version: 3.0.2
1063
- signing_key:
1062
+ rubygems_version: 3.3.5
1063
+ signing_key:
1064
1064
  specification_version: 4
1065
1065
  summary: Module for the 'fog' gem to support Azure Resource Manager cloud services.
1066
1066
  test_files: []