fog-azure-rm-temp 0.0.1 → 0.0.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 (55) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +14 -0
  3. data/fog-azure-rm.gemspec +2 -2
  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/network/network_interface.rb +0 -2
  9. data/lib/fog/azurerm/models/traffic_manager/traffic_manager_profile.rb +1 -1
  10. data/lib/fog/azurerm/requests/compute/create_availability_set.rb +25 -11
  11. data/lib/fog/azurerm/utilities/general.rb +1 -1
  12. data/lib/fog/azurerm/version.rb +1 -1
  13. data/test/api_stub/models/compute/availability_set.rb +24 -5
  14. data/test/api_stub/requests/compute/availability_set.rb +60 -3
  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 +10 -12
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 4b1b3d3e92b86d79df668e8ed1c864edd9b35263
4
- data.tar.gz: e89d10ef333b8d8be25d6af5f876e422b93725f2
3
+ metadata.gz: a20d559af2750fa5accf144e58bfaed3066f527b
4
+ data.tar.gz: 697b8f3ccf1afe6692add47b3c95ea1fa48cf6de
5
5
  SHA512:
6
- metadata.gz: 58f52397024c1fa8d4e4ccfde73b167405bcf2ef6349a50c3c4a2a19c6bf458828a1739e92506db2a066e14ac3a4815eaffd78cffeec877d2ea824e57a84c490
7
- data.tar.gz: d39cba508579ae02029186ebf2a28a01bcfb182c0363325be614127131675973dd160208b982fb125baf5cfd710fbbca471218f62faec4f4083c7971cbc2618d
6
+ metadata.gz: 563047f630231789c7178dd53c74a71959db9d6ecfb919b1fe0d4291caa8af53f03af922364071ba1543135c88a146542002b19e26d2b565129a625d446f1b59
7
+ data.tar.gz: e7feaca9e8386910c7025a1abb25000acebbf5e4df79cd97a1d7548e9556e062fc88fe43f104d700407cf0210595cf4ebe0f4b296ebc209f7f3bf7de5fcf3004
data/CHANGELOG.md CHANGED
@@ -1,3 +1,17 @@
1
+ ## 0.3.3
2
+
3
+ **Added:**
4
+ - Compute Service - Added support to create Managed Availability Set
5
+
6
+ **Changed:**
7
+ - Compute Service - Updated default values for fault and update domains
8
+ - Compute Service - Provided option to configure fault and update domains with reasonable default values
9
+
10
+ ## 0.3.2
11
+
12
+ **Added:**
13
+ - Compute Service - Made remaining server(virtual machine) methods async
14
+
1
15
  ## 0.3.1
2
16
 
3
17
  **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-temp'
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.."
@@ -32,6 +32,6 @@ Gem::Specification.new do |spec|
32
32
  spec.add_dependency 'azure_mgmt_traffic_manager', '~> 0.9.0'
33
33
  spec.add_dependency 'azure_mgmt_sql', '~> 0.9.0'
34
34
  spec.add_dependency 'azure_mgmt_key_vault', '~> 0.9.0'
35
- spec.add_dependency 'azure-storage', '>= 0.11.5.preview', '< 1.0'
35
+ spec.add_dependency 'azure-storage', '= 0.11.5.preview'
36
36
  spec.add_dependency 'vhd', '0.0.4'
37
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 => { Managed: 2, Unmanaged: 3 }
227
+ platform_update_domain_count: <No of Update Domains>, # [Optional] Default => { Managed: 5, Unmanaged: 5 }
228
+ is_managed: 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 :is_managed
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['is_managed'] = 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, is_managed))
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, is_managed)
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
+ is_managed: is_managed
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
@@ -22,7 +22,6 @@ module Fog
22
22
  attribute :applied_dns_servers
23
23
  attribute :internal_dns_name_label
24
24
  attribute :internal_fqd
25
- attribute :type
26
25
 
27
26
  def self.parse(nic)
28
27
  hash = {}
@@ -34,7 +33,6 @@ module Fog
34
33
  hash['mac_address'] = nic.mac_address unless nic.mac_address.nil?
35
34
  hash['network_security_group_id'] = nil
36
35
  hash['network_security_group_id'] = nic.network_security_group.id unless nic.network_security_group.nil?
37
- hash['type'] = nic.type
38
36
  ip_configuration = nic.ip_configurations[0] unless nic.ip_configurations.nil?
39
37
  unless ip_configuration.nil?
40
38
  hash['ip_configuration_name'] = ip_configuration.name
@@ -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
+ is_managed = availability_set_params[:is_managed].nil? ? false : availability_set_params[:is_managed]
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, is_managed)
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, is_managed)
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(is_managed)
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(is_managed)
38
+ sku = Azure::ARM::Compute::Models::Sku.new
39
+ sku.name = is_managed ? 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.0.1'.freeze
3
+ VERSION = '0.0.2'.freeze
4
4
  end
5
5
  end
@@ -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": 3,
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": 3,
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
@@ -28,7 +79,10 @@ module ApiStub
28
79
  "tags": {},
29
80
  "platformUpdateDomainCount":5,
30
81
  "platformFaultDomainCount":3,
31
- "virtualMachines":[]
82
+ "virtualMachines":[],
83
+ "sku":{
84
+ "name":"Classic"
85
+ }
32
86
  } ]
33
87
  }'
34
88
  availability_set_mapper = Azure::ARM::Compute::Models::AvailabilitySetListResult.mapper
@@ -45,7 +99,10 @@ module ApiStub
45
99
  "tags": {},
46
100
  "platformUpdateDomainCount":5,
47
101
  "platformFaultDomainCount":3,
48
- "virtualMachines":[]
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
+ is_managed: 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
+ is_managed: 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