fog-azure-rm 0.3.2 → 0.3.3

Sign up to get free protection for your applications and to get access to all the features.
Files changed (55) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +18 -0
  3. data/fog-azure-rm.gemspec +2 -3
  4. data/lib/fog/azurerm/constants.rb +3 -1
  5. data/lib/fog/azurerm/docs/compute.md +10 -4
  6. data/lib/fog/azurerm/models/compute/availability_set.rb +22 -1
  7. data/lib/fog/azurerm/models/key_vault/access_policy_entry.rb +0 -4
  8. data/lib/fog/azurerm/models/traffic_manager/traffic_manager_profile.rb +1 -1
  9. data/lib/fog/azurerm/requests/compute/create_availability_set.rb +25 -11
  10. data/lib/fog/azurerm/utilities/general.rb +1 -1
  11. data/lib/fog/azurerm/version.rb +1 -1
  12. data/lib/fog/azurerm.rb +0 -1
  13. data/test/api_stub/models/compute/availability_set.rb +24 -5
  14. data/test/api_stub/requests/compute/availability_set.rb +62 -5
  15. data/test/integration/application_gateway.rb +1 -1
  16. data/test/integration/availability_set.rb +103 -16
  17. data/test/integration/blob.rb +1 -1
  18. data/test/integration/container.rb +1 -1
  19. data/test/integration/data_disk.rb +1 -1
  20. data/test/integration/deployment.rb +1 -1
  21. data/test/integration/express_route_circuit.rb +1 -1
  22. data/test/integration/external_load_balancer.rb +1 -1
  23. data/test/integration/internal_load_balancer.rb +1 -1
  24. data/test/integration/key_vault.rb +1 -1
  25. data/test/integration/local_network_gateway.rb +1 -1
  26. data/test/integration/managed_disk.rb +1 -1
  27. data/test/integration/network_interface.rb +1 -1
  28. data/test/integration/network_security_group.rb +1 -1
  29. data/test/integration/network_security_rule.rb +1 -1
  30. data/test/integration/public_ip.rb +1 -1
  31. data/test/integration/record_set.rb +1 -1
  32. data/test/integration/resource_group.rb +1 -1
  33. data/test/integration/resource_tag.rb +1 -1
  34. data/test/integration/server.rb +1 -1
  35. data/test/integration/server_custom_image.rb +2 -2
  36. data/test/integration/sql_server.rb +1 -1
  37. data/test/integration/storage_account.rb +1 -1
  38. data/test/integration/subnet.rb +1 -1
  39. data/test/integration/traffic_manager.rb +1 -1
  40. data/test/integration/virtual_machine_extension.rb +2 -2
  41. data/test/integration/virtual_network.rb +1 -1
  42. data/test/integration/virtual_network_gateway.rb +3 -9
  43. data/test/integration/{Virtual_network_gateway_connection.rb → virtual_network_gateway_connection.rb} +3 -2
  44. data/test/integration/virtual_network_gateway_connection_to_express_route.rb +3 -3
  45. data/test/integration/zone.rb +1 -1
  46. data/test/models/compute/test_availability_set.rb +4 -2
  47. data/test/models/key_vault/test_vault.rb +1 -1
  48. data/test/requests/compute/test_attach_data_disk_to_vm.rb +6 -6
  49. data/test/requests/compute/test_check_vm_exists.rb +3 -3
  50. data/test/requests/compute/test_create_availability_set.rb +87 -3
  51. data/test/requests/compute/test_detach_data_disk_from_vm.rb +2 -2
  52. data/test/requests/compute/test_get_virtual_machine.rb +2 -2
  53. data/test/requests/compute/test_get_vm_status.rb +2 -2
  54. data/test/test_helper.rb +23 -0
  55. metadata +46 -62
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 33c1b3dbf863e197bc2a541c66577f56bc7e4aac
4
- data.tar.gz: 3a7d2a9906695e7be641e1d641bbb7f1bf89c798
3
+ metadata.gz: b8944a95ff930f77d95fb39e4d7fa8728beed49a
4
+ data.tar.gz: 6942ca294485b5409739be38f260145373ba2442
5
5
  SHA512:
6
- metadata.gz: a37083a43154de9aae645b01e329b44856cc2ac5b74b6baf972937d996980d1b2e32b3752a0be8e1b0130827fff01533c4e1166642af2d6615f8704ac23af547
7
- data.tar.gz: d5d45fd735a93a8c0e6c93f10cd613d6c59c247e97e688ac66f9278352a84e2ba2b3bf56a3b567c7ac6dd18e4bc0dd58318e189cd8c74a39b1be7daed414dae5
6
+ metadata.gz: 6421a9c42baaca61dbaeae5ccdddd492913c2bd8cabe572b3ffb023686aae163fedccd6fabb82ac3b91979e8f8169af97af88aa8fbd313e052e426755989a996
7
+ data.tar.gz: 127c6618eef86a984e16fd3d228e6bd5fb9f612a99fde301244751cc1693a5d3fb9558922573f71fa0e5987e7b78c8cd56275a97d08507555ad2200511a4f600
data/CHANGELOG.md CHANGED
@@ -1,3 +1,21 @@
1
+ ## 0.3.3
2
+
3
+ **Added:**
4
+ - Compute Service - Added support to create availability set with managed disk support
5
+
6
+ **Changed:**
7
+ - Compute Service - Provided option to configure fault and update domain values
8
+ - Removed dependency on Rest Client
9
+ - azure-storage dependency fixed to 0.11.5.preview (to enable use with ruby 2.0.0)
10
+
11
+ **Fixed:**
12
+ - Unit tests - Storage and Compute
13
+
14
+ ## 0.3.2
15
+
16
+ **Added:**
17
+ - Compute Service - Made remaining server(virtual machine) methods async
18
+
1
19
  ## 0.3.1
2
20
 
3
21
  **Changed:**
data/fog-azure-rm.gemspec CHANGED
@@ -5,7 +5,7 @@ require 'fog/azurerm/version'
5
5
  Gem::Specification.new do |spec|
6
6
  spec.name = 'fog-azure-rm'
7
7
  spec.version = Fog::AzureRM::VERSION
8
- spec.authors = ['Shaffan Chaudhry', 'Samawia Moin', 'Adnan Khalil', 'Zeeshan Arshad', 'Haider Ali', 'Waqar Haider', 'Bilal Naeem']
8
+ spec.authors = ['Shaffan Chaudhry', 'Samawia Moin', 'Adnan Khalil', 'Zeeshan Arshad', 'Haider Ali', 'Waqar Haider', 'Bilal Naeem', 'Muhammad Asad', 'Azeem Sajid', 'Maham Nazir', 'Abbas Sheikh']
9
9
  spec.summary = "Module for the 'fog' gem to support Azure Resource Manager cloud services."
10
10
  spec.description = "This library can be used as a module for 'fog' or as standalone provider
11
11
  to use the Azure Resource Manager cloud services in applications.."
@@ -24,7 +24,6 @@ Gem::Specification.new do |spec|
24
24
  spec.add_development_dependency 'codeclimate-test-reporter' , '~> 1.0.0'
25
25
  spec.add_dependency 'fog-core', '~> 1.43.0'
26
26
  spec.add_dependency 'fog-json', '~> 1.0'
27
- spec.add_dependency 'rest-client', '~> 2.0.0'
28
27
  spec.add_dependency 'azure_mgmt_compute', '~> 0.9.0'
29
28
  spec.add_dependency 'azure_mgmt_resources', '~> 0.9.0'
30
29
  spec.add_dependency 'azure_mgmt_storage', '~> 0.9.0'
@@ -33,6 +32,6 @@ Gem::Specification.new do |spec|
33
32
  spec.add_dependency 'azure_mgmt_traffic_manager', '~> 0.9.0'
34
33
  spec.add_dependency 'azure_mgmt_sql', '~> 0.9.0'
35
34
  spec.add_dependency 'azure_mgmt_key_vault', '~> 0.9.0'
36
- spec.add_dependency 'azure-storage', '>= 0.11.5.preview', '< 1.0'
35
+ spec.add_dependency 'azure-storage', '= 0.11.5.preview'
37
36
  spec.add_dependency 'vhd', '0.0.4'
38
37
  end
@@ -7,7 +7,7 @@ STANDARD_STORAGE = 'Standard'.freeze
7
7
  PREMIUM_STORAGE = 'Premium'.freeze
8
8
  ALLOWED_STANDARD_REPLICATION = %w(LRS ZRS GRS RAGRS).freeze
9
9
  API_VERSION = '2016-06-01'.freeze
10
- FAULT_DOMAIN_COUNT = 3
10
+ FAULT_DOMAIN_COUNT = 2
11
11
  UPDATE_DOMAIN_COUNT = 5
12
12
  WINDOWS = 'windows'.freeze
13
13
  VPN = 'Vpn'.freeze
@@ -59,3 +59,5 @@ MAXIMUM_CHUNK_SIZE = 4 * 1024 * 1024
59
59
  # The hash value of 4MB empty content
60
60
  HASH_OF_4MB_EMPTY_CONTENT = 'b5cfa9d6c8febd618f91ac2843d50a1c'.freeze
61
61
  REST_CLIENT_API_VERSION = %w(2014-04-01-preview 2016-05-01).freeze
62
+ AS_SKU_CLASSIC = 'Classic'.freeze
63
+ AS_SKU_ALIGNED = 'Aligned'.freeze
@@ -52,6 +52,7 @@ When using **managed_disk_storage_type** you should not pass the **vhd_path** as
52
52
  password: '<Password for VM>', # Optional, if 'platform' partameter is 'Linux'.
53
53
  disable_password_authentication: false,
54
54
  network_interface_card_ids: ['/subscriptions/{Subscription-Id}/resourceGroups/{Resource-Group-Name}/providers/Microsoft.Network/networkInterfaces/{Network-Interface-Id}'],
55
+ availability_set_id: '<availability_set_id>', # Optional
55
56
  publisher: 'Canonical', # Not required if custom image is being used
56
57
  offer: 'UbuntuServer', # Not required if custom image is being used
57
58
  sku: '14.04.2-LTS', # Not required if custom image is being used
@@ -77,6 +78,7 @@ Create a new windows server
77
78
  password: '<Password for VM>',
78
79
  disable_password_authentication: false,
79
80
  network_interface_card_ids: ['/subscriptions/{Subscription-Id}/resourceGroups/{Resource-Group-Name}/providers/Microsoft.Network/networkInterfaces/{Network-Interface-Id}'],
81
+ availability_set_id: '<availability_set_id>', # Optional
80
82
  publisher: 'MicrosoftWindowsServerEssentials', # Not required if custom image is being used
81
83
  offer: 'WindowsServerEssentials', # Not required if custom image is being used
82
84
  sku: 'WindowsServerEssentials', # Not required if custom image is being used
@@ -103,6 +105,7 @@ Create a new linux server asynchronously
103
105
  password: '<Password for VM>', # Optional, if 'platform' partameter is 'Linux'.
104
106
  disable_password_authentication: false,
105
107
  network_interface_card_ids: ['/subscriptions/{Subscription-Id}/resourceGroups/{Resource-Group-Name}/providers/Microsoft.Network/networkInterfaces/{Network-Interface-Id}'],
108
+ availability_set_id: '<availability_set_id>', # Optional
106
109
  publisher: 'Canonical', # Not required if custom image is being used
107
110
  offer: 'UbuntuServer', # Not required if custom image is being used
108
111
  sku: '14.04.2-LTS', # Not required if custom image is being used
@@ -216,10 +219,13 @@ azure_compute_service.availability_sets.check_availability_set_exists(<Resource
216
219
  Create a new availability set
217
220
 
218
221
  ```ruby
219
- azure_compute_service.availability_sets.create(
220
- name: '<Availability Set name>',
221
- location: 'West US',
222
- resource_group: '<Resource Group name>'
222
+ azure_compute_service.availability_sets.create(
223
+ name: '<Availability Set name>',
224
+ location: '<Location>',
225
+ resource_group: '<Resource Group name>'
226
+ platform_fault_domain_count: <No of Fault Domains>, # [Optional] Default => 2
227
+ platform_update_domain_count: <No of Update Domains>, # [Optional] Default => 5
228
+ use_managed_disk: true # [Optional] Possible values true or false
223
229
  )
224
230
  ```
225
231
  ## List Availability Sets
@@ -11,6 +11,8 @@ module Fog
11
11
  attribute :resource_group
12
12
  attribute :platform_update_domain_count
13
13
  attribute :platform_fault_domain_count
14
+ attribute :use_managed_disk
15
+ attribute :sku_name
14
16
 
15
17
  def self.parse(availability_set)
16
18
  hash = {}
@@ -21,6 +23,12 @@ module Fog
21
23
  hash['resource_group'] = get_resource_group_from_id(availability_set.id)
22
24
  hash['platform_update_domain_count'] = availability_set.platform_update_domain_count
23
25
  hash['platform_fault_domain_count'] = availability_set.platform_fault_domain_count
26
+
27
+ unless availability_set.sku.nil?
28
+ hash['sku_name'] = availability_set.sku.name
29
+ hash['use_managed_disk'] = availability_set.sku.name.eql?(AS_SKU_ALIGNED)
30
+ end
31
+
24
32
  hash
25
33
  end
26
34
 
@@ -29,7 +37,7 @@ module Fog
29
37
  requires :location
30
38
  requires :resource_group
31
39
  # need to create the availability set
32
- as = service.create_availability_set(resource_group, name, location)
40
+ as = service.create_availability_set(avail_set_params(platform_fault_domain_count, platform_update_domain_count, use_managed_disk))
33
41
  hash = Fog::Compute::AzureRM::AvailabilitySet.parse(as)
34
42
  merge_attributes(hash)
35
43
  end
@@ -37,6 +45,19 @@ module Fog
37
45
  def destroy
38
46
  service.delete_availability_set(resource_group, name)
39
47
  end
48
+
49
+ private
50
+
51
+ def avail_set_params(platform_fault_domain_count, platform_update_domain_count, use_managed_disk)
52
+ {
53
+ name: name,
54
+ location: location,
55
+ resource_group: resource_group,
56
+ platform_fault_domain_count: platform_fault_domain_count,
57
+ platform_update_domain_count: platform_update_domain_count,
58
+ use_managed_disk: use_managed_disk
59
+ }
60
+ end
40
61
  end
41
62
  end
42
63
  end
@@ -21,10 +21,6 @@ module Fog
21
21
 
22
22
  access_policy_entry_hash
23
23
  end
24
-
25
- def save
26
- requires :object_id, :tenant_id, :keys, :secrets
27
- end
28
24
  end
29
25
  end
30
26
  end
@@ -55,7 +55,7 @@ module Fog
55
55
 
56
56
  def update(profile_params)
57
57
  validate_input(profile_params)
58
- profile_params[:endpoints] = endpoints.map { |endpoint| get_hash_from_object(endpoint)['attributes'] }
58
+ profile_params[:endpoints] = endpoints.map { |endpoint| get_hash_from_object(endpoint)['attributes'] } unless endpoints.nil?
59
59
  merge_attributes(profile_params)
60
60
  profile = service.create_or_update_traffic_manager_profile(traffic_manager_profile_hash)
61
61
  merge_attributes(Fog::TrafficManager::AzureRM::TrafficManagerProfile.parse(profile))
@@ -3,10 +3,18 @@ module Fog
3
3
  class AzureRM
4
4
  # This class provides the actual implementation for service calls.
5
5
  class Real
6
- def create_availability_set(resource_group, name, location)
6
+ def create_availability_set(availability_set_params)
7
+ name = availability_set_params[:name]
8
+ location = availability_set_params[:location]
9
+ resource_group = availability_set_params[:resource_group]
10
+ fault_domain_count = availability_set_params[:platform_fault_domain_count]
11
+ update_domain_count = availability_set_params[:platform_update_domain_count]
12
+ use_managed_disk = availability_set_params[:use_managed_disk].nil? ? false : availability_set_params[:use_managed_disk]
13
+
7
14
  msg = "Creating Availability Set '#{name}' in #{location} region."
8
15
  Fog::Logger.debug msg
9
- avail_set_params = get_availability_set_properties(location)
16
+ avail_set_params = get_availability_set_properties(location, fault_domain_count, update_domain_count, use_managed_disk)
17
+
10
18
  begin
11
19
  availability_set = @compute_mgmt_client.availability_sets.create_or_update(resource_group, name, avail_set_params)
12
20
  rescue MsRestAzure::AzureOperationError => e
@@ -17,23 +25,29 @@ module Fog
17
25
  end
18
26
 
19
27
  # create the properties object for creating availability sets
20
- def get_availability_set_properties(location)
28
+ def get_availability_set_properties(location, fault_domain_count, update_domain_count, use_managed_disk)
21
29
  avail_set = Azure::ARM::Compute::Models::AvailabilitySet.new
22
- avail_set.platform_fault_domain_count = FAULT_DOMAIN_COUNT
23
- avail_set.platform_update_domain_count = UPDATE_DOMAIN_COUNT
24
- avail_set.virtual_machines = []
25
- avail_set.statuses = []
26
30
  avail_set.location = location
31
+ avail_set.sku = create_availability_set_sku(use_managed_disk)
32
+ avail_set.platform_fault_domain_count = fault_domain_count.nil? ? FAULT_DOMAIN_COUNT : fault_domain_count
33
+ avail_set.platform_update_domain_count = update_domain_count.nil? ? UPDATE_DOMAIN_COUNT : update_domain_count
27
34
  avail_set
28
35
  end
36
+
37
+ def create_availability_set_sku(use_managed_disk)
38
+ sku = Azure::ARM::Compute::Models::Sku.new
39
+ sku.name = use_managed_disk ? AS_SKU_ALIGNED : AS_SKU_CLASSIC
40
+ sku
41
+ end
29
42
  end
43
+
30
44
  # This class provides the mock implementation for unit tests.
31
45
  class Mock
32
- def create_availability_set(resource_group, name, location)
46
+ def create_availability_set(availability_set_params)
33
47
  {
34
- 'location' => location,
35
- 'id' => "/subscriptions/########-####-####-####-############/resourceGroups/#{resource_group}/providers/Microsoft.Compute/availabilitySets/#{name}",
36
- 'name' => name,
48
+ 'location' => availability_set_params[:location],
49
+ 'id' => "/subscriptions/########-####-####-####-############/resourceGroups/#{availability_set_params[:resource_group]}/providers/Microsoft.Compute/availabilitySets/#{availability_set_params[:name]}",
50
+ 'name' => availability_set_params[:name],
37
51
  'type' => 'Microsoft.Compute/availabilitySets',
38
52
  'properties' =>
39
53
  {
@@ -55,7 +55,7 @@ def raise_azure_exception(exception, msg)
55
55
  end
56
56
  exception_message = "Exception in #{msg} #{message} Type: #{exception.class}\n#{exception.backtrace.join("\n")}"
57
57
  else
58
- "#{exception.inspect}\n#{exception.backtrace.join("\n")}"
58
+ exception_message = "#{exception.inspect}\n#{exception.backtrace.join("\n")}"
59
59
  end
60
60
 
61
61
  Fog::Logger.debug exception.backtrace
@@ -1,5 +1,5 @@
1
1
  module Fog
2
2
  module AzureRM
3
- VERSION = '0.3.2'.freeze
3
+ VERSION = '0.3.3'.freeze
4
4
  end
5
5
  end
data/lib/fog/azurerm.rb CHANGED
@@ -1,5 +1,4 @@
1
1
  require 'ms_rest_azure'
2
- require 'rest_client'
3
2
  require 'erb'
4
3
  require 'fog/azurerm/config'
5
4
  require 'fog/azurerm/constants'
@@ -3,15 +3,33 @@ module ApiStub
3
3
  module Compute
4
4
  # Mock class for Availability Set Model
5
5
  class AvailabilitySet
6
- def self.create_availability_set_response(sdk_compute_client)
6
+ def self.create_unmanaged_availability_set_response(sdk_compute_client)
7
7
  avail_set = {
8
8
  'id' => '/subscriptions/########-####-####-####-############/resourceGroups/fog-test-rg/providers/Microsoft.Compute/availabilitySets/fog-test-availability-set',
9
9
  'name' => 'fog-test-availability-set',
10
10
  'type' => 'Microsoft.Compute/availabilitySets',
11
11
  'location' => 'westus',
12
12
  'platformUpdateDomainCount' => UPDATE_DOMAIN_COUNT,
13
- 'platformFaultDomainCount' => FAULT_DOMAIN_COUNT
13
+ 'platformFaultDomainCount' => FAULT_DOMAIN_COUNT,
14
+ 'sku' => {
15
+ 'name' => 'Classic'
16
+ }
17
+ }
18
+ result_mapper = Azure::ARM::Compute::Models::AvailabilitySet.mapper
19
+ sdk_compute_client.deserialize(result_mapper, avail_set, 'result.body')
20
+ end
14
21
 
22
+ def self.create_managed_availability_set_response(sdk_compute_client)
23
+ avail_set = {
24
+ 'id' => '/subscriptions/########-####-####-####-############/resourceGroups/fog-test-rg/providers/Microsoft.Compute/availabilitySets/fog-test-availability-set',
25
+ 'name' => 'fog-test-availability-set',
26
+ 'type' => 'Microsoft.Compute/availabilitySets',
27
+ 'location' => 'westus',
28
+ 'platformUpdateDomainCount' => UPDATE_DOMAIN_COUNT,
29
+ 'platformFaultDomainCount' => FAULT_DOMAIN_COUNT,
30
+ 'sku' => {
31
+ 'name' => 'Aligned'
32
+ }
15
33
  }
16
34
  result_mapper = Azure::ARM::Compute::Models::AvailabilitySet.mapper
17
35
  sdk_compute_client.deserialize(result_mapper, avail_set, 'result.body')
@@ -25,7 +43,6 @@ module ApiStub
25
43
  'location' => 'westus',
26
44
  'platformUpdateDomainCount' => UPDATE_DOMAIN_COUNT,
27
45
  'platformFaultDomainCount' => FAULT_DOMAIN_COUNT
28
-
29
46
  }
30
47
  result_mapper = Azure::ARM::Compute::Models::AvailabilitySet.mapper
31
48
  sdk_compute_client.deserialize(result_mapper, avail_set, 'result.body')
@@ -38,8 +55,10 @@ module ApiStub
38
55
  'type' => 'Microsoft.Compute/availabilitySets',
39
56
  'location' => 'westus',
40
57
  'platformUpdateDomainCount' => UPDATE_DOMAIN_COUNT,
41
- 'platformFaultDomainCount' => FAULT_DOMAIN_COUNT
42
-
58
+ 'platformFaultDomainCount' => FAULT_DOMAIN_COUNT,
59
+ 'sku' => {
60
+ 'name' => 'Classic'
61
+ }
43
62
  }
44
63
  result_mapper = Azure::ARM::Compute::Models::AvailabilitySet.mapper
45
64
  sdk_compute_client.deserialize(result_mapper, avail_set, 'result.body')
@@ -3,6 +3,42 @@ module ApiStub
3
3
  module Compute
4
4
  # Mock class for Availability Set Requests
5
5
  class AvailabilitySet
6
+ def self.create_unmanaged_availability_set_response(compute_client)
7
+ body = '{
8
+ "id":"/subscriptions/{subscription-id}/resourceGroups/myrg1/providers/Microsoft.Compute/availabilitySets/avset1",
9
+ "name":"myavset1",
10
+ "type":"Microsoft.Compute/availabilitySets",
11
+ "location":"westus",
12
+ "tags": {},
13
+ "platformUpdateDomainCount": 5,
14
+ "platformFaultDomainCount": 2,
15
+ "virtualMachines":[],
16
+ "sku":{
17
+ "name":"Classic"
18
+ }
19
+ }'
20
+ availability_set_mapper = Azure::ARM::Compute::Models::AvailabilitySet.mapper
21
+ compute_client.deserialize(availability_set_mapper, Fog::JSON.decode(body), 'result.body')
22
+ end
23
+
24
+ def self.create_managed_availability_set_response(compute_client)
25
+ body = '{
26
+ "id":"/subscriptions/{subscription-id}/resourceGroups/myrg1/providers/Microsoft.Compute/availabilitySets/avset1",
27
+ "name":"myavset1",
28
+ "type":"Microsoft.Compute/availabilitySets",
29
+ "location":"westus",
30
+ "tags": {},
31
+ "platformUpdateDomainCount": 5,
32
+ "platformFaultDomainCount": 2,
33
+ "virtualMachines":[],
34
+ "sku":{
35
+ "name":"Aligned"
36
+ }
37
+ }'
38
+ availability_set_mapper = Azure::ARM::Compute::Models::AvailabilitySet.mapper
39
+ compute_client.deserialize(availability_set_mapper, Fog::JSON.decode(body), 'result.body')
40
+ end
41
+
6
42
  def self.create_availability_set_response(compute_client)
7
43
  body = '{
8
44
  "id":"/subscriptions/{subscription-id}/resourceGroups/myrg1/providers/Microsoft.Compute/availabilitySets/avset1",
@@ -11,7 +47,22 @@ module ApiStub
11
47
  "location":"westus",
12
48
  "tags": {},
13
49
  "platformUpdateDomainCount": 5,
14
- "platformFaultDomainCount":3,
50
+ "platformFaultDomainCount": 2,
51
+ "virtualMachines":[]
52
+ }'
53
+ availability_set_mapper = Azure::ARM::Compute::Models::AvailabilitySet.mapper
54
+ compute_client.deserialize(availability_set_mapper, Fog::JSON.decode(body), 'result.body')
55
+ end
56
+
57
+ def self.create_custom_availability_set_response(compute_client)
58
+ body = '{
59
+ "id":"/subscriptions/{subscription-id}/resourceGroups/myrg1/providers/Microsoft.Compute/availabilitySets/avset1",
60
+ "name":"myavset1",
61
+ "type":"Microsoft.Compute/availabilitySets",
62
+ "location":"westus",
63
+ "tags": {},
64
+ "platformUpdateDomainCount": 10,
65
+ "platformFaultDomainCount": 3,
15
66
  "virtualMachines":[]
16
67
  }'
17
68
  availability_set_mapper = Azure::ARM::Compute::Models::AvailabilitySet.mapper
@@ -27,8 +78,11 @@ module ApiStub
27
78
  "location":"westus",
28
79
  "tags": {},
29
80
  "platformUpdateDomainCount":5,
30
- "platformFaultDomainCount":3,
31
- "virtualMachines":[]
81
+ "platformFaultDomainCount":2,
82
+ "virtualMachines":[],
83
+ "sku":{
84
+ "name":"Classic"
85
+ }
32
86
  } ]
33
87
  }'
34
88
  availability_set_mapper = Azure::ARM::Compute::Models::AvailabilitySetListResult.mapper
@@ -44,8 +98,11 @@ module ApiStub
44
98
  "location":"westus",
45
99
  "tags": {},
46
100
  "platformUpdateDomainCount":5,
47
- "platformFaultDomainCount":3,
48
- "virtualMachines":[]
101
+ "platformFaultDomainCount":2,
102
+ "virtualMachines":[],
103
+ "sku":{
104
+ "name":"Classic"
105
+ }
49
106
  } ]
50
107
  }'
51
108
  availability_set_mapper = Azure::ARM::Compute::Models::AvailabilitySet.mapper
@@ -6,7 +6,7 @@ require 'yaml'
6
6
  ###################### Keep it Uncommented! ######################
7
7
  ########################################################################################################################
8
8
 
9
- azure_credentials = YAML.load_file('credentials/azure.yml')
9
+ azure_credentials = YAML.load_file(File.expand_path('credentials/azure.yml', __dir__))
10
10
 
11
11
  resource = Fog::Resources::AzureRM.new(
12
12
  tenant_id: azure_credentials['tenant_id'],
@@ -6,7 +6,7 @@ require 'yaml'
6
6
  ###################### Keep it Uncommented! ######################
7
7
  ########################################################################################################################
8
8
 
9
- azure_credentials = YAML.load_file('credentials/azure.yml')
9
+ azure_credentials = YAML.load_file(File.expand_path('credentials/azure.yml', __dir__))
10
10
 
11
11
  rs = Fog::Resources::AzureRM.new(
12
12
  tenant_id: azure_credentials['tenant_id'],
@@ -29,41 +29,114 @@ compute = Fog::Compute::AzureRM.new(
29
29
  ########################################################################################################################
30
30
 
31
31
  time = current_time
32
- resource_group_name = "AS-RG-#{time}"
33
- availability_set_name = "AS#{time}asetunique"
32
+ resource_group_name = "AS-RG-#{time}"
33
+ unmanaged_as_name_default = "ASUnmanagedDefault#{time}"
34
+ unmanaged_as_name_custom = "ASUnmanagedCustom#{time}"
35
+ managed_as_name_default = "ASManagedDefault#{time}"
36
+ managed_as_name_custom = "ASManagedCustom#{time}"
34
37
 
35
38
  ########################################################################################################################
36
39
  ###################### Prerequisites ######################
37
40
  ########################################################################################################################
38
41
 
39
42
  begin
43
+ puts 'Running integration test for availability set...'
44
+
45
+ puts "Create resource group (#{resource_group_name}):"
40
46
  resource_group = rs.resource_groups.create(
41
47
  name: resource_group_name,
42
48
  location: LOCATION
43
49
  )
44
-
50
+ puts "Created resource group! [#{resource_group.name}]"
45
51
 
46
52
  ########################################################################################################################
47
- ###################### Check for Availability set ######################
53
+ ###################### Check for Availability set ######################
48
54
  ########################################################################################################################
49
55
 
50
- flag = compute.availability_sets.check_availability_set_exists(resource_group_name, availability_set_name)
51
- puts "Availability set doesn't exist." unless flag
56
+ puts 'Check for existing availability sets:'
57
+
58
+ is_exists = compute.availability_sets.check_availability_set_exists(resource_group_name, unmanaged_as_name_default)
59
+ puts "Availability set does NOT exist! [#{unmanaged_as_name_default}] " unless is_exists
60
+
61
+ is_exists = compute.availability_sets.check_availability_set_exists(resource_group_name, unmanaged_as_name_custom)
62
+ puts "Availability set does NOT exist! [#{unmanaged_as_name_custom}] " unless is_exists
63
+
64
+ is_exists = compute.availability_sets.check_availability_set_exists(resource_group_name, managed_as_name_default)
65
+ puts "Availability set does NOT exist! [#{managed_as_name_default}] " unless is_exists
66
+
67
+ is_exists = compute.availability_sets.check_availability_set_exists(resource_group_name, managed_as_name_custom)
68
+ puts "Availability set does NOT exist! [#{managed_as_name_default}] " unless is_exists
52
69
 
53
70
  ########################################################################################################################
54
- ###################### Create Availability Set ######################
71
+ ###################### Create Unmanaged Availability Set (Default) ######################
55
72
  ########################################################################################################################
56
73
 
74
+ puts "Create unmanaged default availability set (#{unmanaged_as_name_default}):"
57
75
  avail_set = compute.availability_sets.create(
58
- name: availability_set_name,
76
+ name: unmanaged_as_name_default,
59
77
  location: LOCATION,
60
78
  resource_group: resource_group_name
61
79
  )
62
- puts "Created availability set: #{avail_set.name}"
80
+ name = avail_set.name
81
+ fault_domains = avail_set.platform_fault_domain_count
82
+ update_domains = avail_set.platform_update_domain_count
83
+ puts "Created availability set! [#{name}] => { fd: #{fault_domains}, ud: #{update_domains} }"
84
+
85
+ ########################################################################################################################
86
+ ###################### Create Unmanaged Availability Set (Custom) ######################
87
+ ########################################################################################################################
88
+
89
+ puts "Create unmanaged custom availability set (#{unmanaged_as_name_custom}):"
90
+ avail_set = compute.availability_sets.create(
91
+ name: unmanaged_as_name_custom,
92
+ location: LOCATION,
93
+ resource_group: resource_group_name,
94
+ platform_fault_domain_count: 3,
95
+ platform_update_domain_count: 10
96
+ )
97
+ name = avail_set.name
98
+ fault_domains = avail_set.platform_fault_domain_count
99
+ update_domains = avail_set.platform_update_domain_count
100
+ puts "Created availability set! [#{name}] => { fd: #{fault_domains}, ud: #{update_domains} }"
101
+
102
+ ########################################################################################################################
103
+ ###################### Create Managed Availability Set (Default) ######################
104
+ ########################################################################################################################
105
+
106
+ puts "Create managed default availability set (#{managed_as_name_default}):"
107
+ avail_set = compute.availability_sets.create(
108
+ name: managed_as_name_default,
109
+ location: LOCATION,
110
+ resource_group: resource_group_name,
111
+ use_managed_disk: true
112
+ )
113
+ name = avail_set.name
114
+ fault_domains = avail_set.platform_fault_domain_count
115
+ update_domains = avail_set.platform_update_domain_count
116
+ puts "Created availability set! [#{name}] => { fd: #{fault_domains}, ud: #{update_domains} }"
117
+
118
+ ########################################################################################################################
119
+ ###################### Create Managed Availability Set (Custom) ######################
120
+ ########################################################################################################################
121
+
122
+ puts "Create managed custom availability set (#{managed_as_name_custom}):"
123
+ avail_set = compute.availability_sets.create(
124
+ name: managed_as_name_custom,
125
+ location: LOCATION,
126
+ resource_group: resource_group_name,
127
+ platform_fault_domain_count: 2,
128
+ platform_update_domain_count: 10,
129
+ use_managed_disk: true
130
+ )
131
+ name = avail_set.name
132
+ fault_domains = avail_set.platform_fault_domain_count
133
+ update_domains = avail_set.platform_update_domain_count
134
+ puts "Created availability set! [#{name}] => { fd: #{fault_domains}, ud: #{update_domains} }"
63
135
 
64
136
  ########################################################################################################################
65
137
  ###################### List Availability Sets ######################
66
138
  ########################################################################################################################
139
+
67
140
  puts 'List availability sets:'
68
141
  compute.availability_sets(resource_group: resource_group_name).each do |availability_set|
69
142
  puts availability_set.name
@@ -73,18 +146,32 @@ begin
73
146
  ###################### Get and Delete Availability Set ######################
74
147
  ########################################################################################################################
75
148
 
76
- avail_set = compute.availability_sets.get(resource_group_name, availability_set_name)
77
- puts "Get availability set: #{avail_set.name}"
78
- puts "Deleted availability set: #{avail_set.destroy}"
149
+ puts 'Get and delete availability sets:'
150
+
151
+ avail_set = compute.availability_sets.get(resource_group_name, unmanaged_as_name_default)
152
+ puts "Get availability set : #{avail_set.name}"
153
+ puts "Deleted availability set : #{avail_set.destroy}"
154
+
155
+ avail_set = compute.availability_sets.get(resource_group_name, unmanaged_as_name_custom)
156
+ puts "Get availability set : #{avail_set.name}"
157
+ puts "Deleted availability set : #{avail_set.destroy}"
158
+
159
+ avail_set = compute.availability_sets.get(resource_group_name, managed_as_name_default)
160
+ puts "Get availability set : #{avail_set.name}"
161
+ puts "Deleted availability set : #{avail_set.destroy}"
162
+
163
+ avail_set = compute.availability_sets.get(resource_group_name, managed_as_name_custom)
164
+ puts "Get availability set : #{avail_set.name}"
165
+ puts "Deleted availability set : #{avail_set.destroy}"
79
166
 
80
167
  ########################################################################################################################
81
- ###################### CleanUp ######################
168
+ ###################### Clean Up ######################
82
169
  ########################################################################################################################
83
170
 
84
171
  rg = rs.resource_groups.get(resource_group_name)
85
172
  rg.destroy
86
- puts 'Integration Test for availability set ran successfully'
173
+ puts 'Integration test for availability set ran successfully!'
87
174
  rescue
88
- puts 'Integration Test for availability set is failing'
175
+ puts 'Integration Test for availability set is failing!!!'
89
176
  resource_group.destroy unless resource_group.nil?
90
177
  end
@@ -6,7 +6,7 @@ require 'yaml'
6
6
  ###################### Keep it Uncommented! ######################
7
7
  ########################################################################################################################
8
8
 
9
- azure_credentials = YAML.load_file('credentials/azure.yml')
9
+ azure_credentials = YAML.load_file(File.expand_path('credentials/azure.yml', __dir__))
10
10
 
11
11
  rs = Fog::Resources::AzureRM.new(
12
12
  tenant_id: azure_credentials['tenant_id'],
@@ -6,7 +6,7 @@ require 'yaml'
6
6
  ###################### Keep it Uncommented! ######################
7
7
  ########################################################################################################################
8
8
 
9
- azure_credentials = YAML.load_file('credentials/azure.yml')
9
+ azure_credentials = YAML.load_file(File.expand_path('credentials/azure.yml', __dir__))
10
10
 
11
11
  rs = Fog::Resources::AzureRM.new(
12
12
  tenant_id: azure_credentials['tenant_id'],
@@ -6,7 +6,7 @@ require 'yaml'
6
6
  ###################### Keep it Uncommented! ######################
7
7
  ########################################################################################################################
8
8
 
9
- azure_credentials = YAML.load_file('credentials/azure.yml')
9
+ azure_credentials = YAML.load_file(File.expand_path('credentials/azure.yml', __dir__))
10
10
 
11
11
  rs = Fog::Resources::AzureRM.new(
12
12
  tenant_id: azure_credentials['tenant_id'],