fog-azure-rm 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 (97) hide show
  1. checksums.yaml +4 -4
  2. data/CONTRIBUTING.md +19 -8
  3. data/LICENSE.md +1 -1
  4. data/README.md +9 -8
  5. data/lib/fog/azurerm/models/compute/availability_set.rb +17 -3
  6. data/lib/fog/azurerm/models/compute/availability_sets.rb +2 -6
  7. data/lib/fog/azurerm/models/compute/server.rb +1 -1
  8. data/lib/fog/azurerm/models/compute/servers.rb +3 -1
  9. data/lib/fog/azurerm/models/dns/record_set.rb +31 -3
  10. data/lib/fog/azurerm/models/dns/record_sets.rb +7 -17
  11. data/lib/fog/azurerm/models/dns/zone.rb +26 -3
  12. data/lib/fog/azurerm/models/dns/zones.rb +8 -6
  13. data/lib/fog/azurerm/models/network/frontend_ip_configuration.rb +32 -0
  14. data/lib/fog/azurerm/models/network/inbound_nat_pool.rb +27 -0
  15. data/lib/fog/azurerm/models/network/inbound_nat_rule.rb +29 -0
  16. data/lib/fog/azurerm/models/network/load_balancer.rb +249 -0
  17. data/lib/fog/azurerm/models/network/load_balancers.rb +27 -0
  18. data/lib/fog/azurerm/models/network/load_balancing_rule.rb +42 -0
  19. data/lib/fog/azurerm/models/network/network_interface.rb +46 -7
  20. data/lib/fog/azurerm/models/network/network_interfaces.rb +2 -8
  21. data/lib/fog/azurerm/models/network/network_security_group.rb +89 -0
  22. data/lib/fog/azurerm/models/network/network_security_groups.rb +27 -0
  23. data/lib/fog/azurerm/models/network/network_security_rule.rb +40 -0
  24. data/lib/fog/azurerm/models/network/probe.rb +29 -0
  25. data/lib/fog/azurerm/models/network/public_ip.rb +32 -4
  26. data/lib/fog/azurerm/models/network/public_ips.rb +2 -8
  27. data/lib/fog/azurerm/models/network/subnet.rb +20 -12
  28. data/lib/fog/azurerm/models/network/subnets.rb +1 -7
  29. data/lib/fog/azurerm/models/network/traffic_manager_end_point.rb +63 -0
  30. data/lib/fog/azurerm/models/network/traffic_manager_end_points.rb +29 -0
  31. data/lib/fog/azurerm/models/network/traffic_manager_profile.rb +59 -0
  32. data/lib/fog/azurerm/models/network/traffic_manager_profiles.rb +24 -0
  33. data/lib/fog/azurerm/models/network/virtual_network.rb +19 -6
  34. data/lib/fog/azurerm/models/network/virtual_networks.rb +4 -9
  35. data/lib/fog/azurerm/models/resources/resource_group.rb +2 -1
  36. data/lib/fog/azurerm/models/resources/resource_groups.rb +1 -9
  37. data/lib/fog/azurerm/models/storage/storage_account.rb +5 -7
  38. data/lib/fog/azurerm/models/storage/storage_accounts.rb +5 -6
  39. data/lib/fog/azurerm/network.rb +30 -0
  40. data/lib/fog/azurerm/requests/compute/create_availability_set.rb +13 -2
  41. data/lib/fog/azurerm/requests/compute/create_virtual_machine.rb +60 -2
  42. data/lib/fog/azurerm/requests/compute/deallocate_virtual_machine.rb +4 -2
  43. data/lib/fog/azurerm/requests/compute/delete_availability_set.rb +4 -2
  44. data/lib/fog/azurerm/requests/compute/delete_virtual_machine.rb +4 -2
  45. data/lib/fog/azurerm/requests/compute/generalize_virtual_machine.rb +4 -2
  46. data/lib/fog/azurerm/requests/compute/get_virtual_machine.rb +57 -1
  47. data/lib/fog/azurerm/requests/compute/list_availability_sets.rb +16 -1
  48. data/lib/fog/azurerm/requests/compute/list_available_sizes_for_virtual_machine.rb +27 -1
  49. data/lib/fog/azurerm/requests/compute/power_off_virtual_machine.rb +4 -2
  50. data/lib/fog/azurerm/requests/compute/redeploy_virtual_machine.rb +4 -2
  51. data/lib/fog/azurerm/requests/compute/restart_virtual_machine.rb +4 -2
  52. data/lib/fog/azurerm/requests/compute/start_virtual_machine.rb +4 -2
  53. data/lib/fog/azurerm/requests/dns/check_for_zone.rb +16 -17
  54. data/lib/fog/azurerm/requests/dns/create_record_set.rb +80 -37
  55. data/lib/fog/azurerm/requests/dns/create_zone.rb +43 -27
  56. data/lib/fog/azurerm/requests/dns/delete_record_set.rb +17 -19
  57. data/lib/fog/azurerm/requests/dns/delete_zone.rb +16 -19
  58. data/lib/fog/azurerm/requests/dns/get_records_from_record_set.rb +29 -28
  59. data/lib/fog/azurerm/requests/dns/list_record_sets.rb +49 -23
  60. data/lib/fog/azurerm/requests/dns/list_zones.rb +57 -23
  61. data/lib/fog/azurerm/requests/network/check_for_public_ip.rb +3 -1
  62. data/lib/fog/azurerm/requests/network/check_for_virtual_network.rb +4 -2
  63. data/lib/fog/azurerm/requests/network/create_load_balancer.rb +208 -0
  64. data/lib/fog/azurerm/requests/network/create_network_interface.rb +42 -4
  65. data/lib/fog/azurerm/requests/network/create_network_security_group.rb +200 -0
  66. data/lib/fog/azurerm/requests/network/create_public_ip.rb +19 -5
  67. data/lib/fog/azurerm/requests/network/create_subnet.rb +19 -6
  68. data/lib/fog/azurerm/requests/network/create_traffic_manager_endpoint.rb +78 -0
  69. data/lib/fog/azurerm/requests/network/create_traffic_manager_profile.rb +127 -0
  70. data/lib/fog/azurerm/requests/network/create_virtual_network.rb +40 -5
  71. data/lib/fog/azurerm/requests/network/delete_load_balancer.rb +27 -0
  72. data/lib/fog/azurerm/requests/network/delete_network_interface.rb +5 -3
  73. data/lib/fog/azurerm/requests/network/delete_network_security_group.rb +29 -0
  74. data/lib/fog/azurerm/requests/network/delete_public_ip.rb +4 -2
  75. data/lib/fog/azurerm/requests/network/delete_subnet.rb +10 -8
  76. data/lib/fog/azurerm/requests/network/delete_traffic_manager_endpoint.rb +37 -0
  77. data/lib/fog/azurerm/requests/network/delete_traffic_manager_profile.rb +37 -0
  78. data/lib/fog/azurerm/requests/network/delete_virtual_network.rb +8 -6
  79. data/lib/fog/azurerm/requests/network/get_traffic_manager_profile.rb +96 -0
  80. data/lib/fog/azurerm/requests/network/list_load_balancers.rb +31 -0
  81. data/lib/fog/azurerm/requests/network/list_network_interfaces.rb +41 -9
  82. data/lib/fog/azurerm/requests/network/list_network_security_groups.rb +171 -0
  83. data/lib/fog/azurerm/requests/network/list_public_ips.rb +21 -9
  84. data/lib/fog/azurerm/requests/network/list_subnets.rb +34 -11
  85. data/lib/fog/azurerm/requests/network/list_traffic_manager_profiles.rb +98 -0
  86. data/lib/fog/azurerm/requests/network/list_virtual_networks.rb +53 -8
  87. data/lib/fog/azurerm/requests/resources/create_resource_group.rb +11 -2
  88. data/lib/fog/azurerm/requests/resources/delete_resource_group.rb +4 -2
  89. data/lib/fog/azurerm/requests/resources/list_resource_groups.rb +23 -7
  90. data/lib/fog/azurerm/requests/storage/check_storage_account_name_availability.rb +2 -0
  91. data/lib/fog/azurerm/requests/storage/create_storage_account.rb +14 -8
  92. data/lib/fog/azurerm/requests/storage/delete_storage_account.rb +4 -3
  93. data/lib/fog/azurerm/requests/storage/list_storage_account_for_rg.rb +33 -2
  94. data/lib/fog/azurerm/requests/storage/list_storage_accounts.rb +32 -5
  95. data/lib/fog/azurerm/storage.rb +0 -1
  96. data/lib/fog/azurerm/version.rb +1 -1
  97. metadata +35 -10
@@ -12,21 +12,16 @@ module Fog
12
12
  requires :resource_group
13
13
  virtual_networks = []
14
14
  service.list_virtual_networks(resource_group).each do |vnet|
15
- hash = {}
16
- vnet.instance_variables.each do |var|
17
- hash[var.to_s.delete('@')] = vnet.instance_variable_get(var)
18
- end
19
- hash['resource_group'] = vnet.instance_variable_get('@id').split('/')[4]
20
- virtual_networks << hash
15
+ virtual_networks << Fog::Network::AzureRM::VirtualNetwork.parse(vnet)
21
16
  end
22
17
  load(virtual_networks)
23
18
  end
24
19
 
25
- def get(identity, resource_group)
26
- all.find { |f| f.name == identity && f.resource_group == resource_group }
20
+ def get(identity)
21
+ all.find { |f| f.name == identity }
27
22
  end
28
23
 
29
- def check_if_exists(name, resource_group)
24
+ def check_if_exists(resource_group, name)
30
25
  Fog::Logger.debug "Checkng if Virtual Network #{name} exists."
31
26
  if service.check_for_virtual_network(name, resource_group)
32
27
  Fog::Logger.debug "Virtual Network #{name} exists."
@@ -9,7 +9,8 @@ module Fog
9
9
  def save
10
10
  requires :name
11
11
  requires :location
12
- service.create_resource_group(name, location)
12
+ resource_group = service.create_resource_group(name, location)
13
+ merge_attributes(resource_group)
13
14
  end
14
15
 
15
16
  def destroy
@@ -8,15 +8,7 @@ module Fog
8
8
  model Fog::Resources::AzureRM::ResourceGroup
9
9
 
10
10
  def all
11
- resource_groups = []
12
- service.list_resource_groups.each do |rg|
13
- hash = {}
14
- rg.instance_variables.each do |var|
15
- hash[var.to_s.delete('@')] = rg.instance_variable_get(var)
16
- end
17
- resource_groups << hash
18
- end
19
- load(resource_groups)
11
+ load(service.list_resource_groups)
20
12
  end
21
13
 
22
14
  def get(identity)
@@ -1,23 +1,19 @@
1
- # rubocop:disable LineLength
2
- # rubocop:disable MethodLength
3
1
  module Fog
4
2
  module Storage
5
3
  class AzureRM
6
4
  # This class is giving implementation of create/save and
7
5
  # delete/destroy for storage account.
8
6
  class StorageAccount < Fog::Model
9
- attribute :id
10
7
  identity :name
11
- attribute :type
12
8
  attribute :location
13
- attribute :tags
14
9
  attribute :resource_group
15
- attribute :properties
10
+ attribute :account_type
16
11
 
17
12
  def save
18
13
  requires :name
19
14
  requires :location
20
15
  requires :resource_group
16
+ hash = {}
21
17
  # Create a model for new storage account.
22
18
  properties = Azure::ARM::Storage::Models::StorageAccountPropertiesCreateParameters.new
23
19
  properties.account_type = 'Standard_LRS' # This might change in the near future!
@@ -25,7 +21,9 @@ module Fog
25
21
  params = Azure::ARM::Storage::Models::StorageAccountCreateParameters.new
26
22
  params.properties = properties
27
23
  params.location = location
28
- service.create_storage_account(resource_group, name, params)
24
+ sa = service.create_storage_account(resource_group, name, params)
25
+ hash['account_type'] = sa['properties']['accountType']
26
+ merge_attributes(hash)
29
27
  end
30
28
 
31
29
  def destroy
@@ -1,8 +1,6 @@
1
1
  require 'fog/core/collection'
2
2
  require 'fog/azurerm/models/storage/storage_account'
3
- # rubocop:disable LineLength
4
- # rubocop:disable MethodLength
5
- # rubocop:disable AbcSize
3
+
6
4
  module Fog
7
5
  module Storage
8
6
  class AzureRM
@@ -21,9 +19,10 @@ module Fog
21
19
  end
22
20
  hash_of_storage_accounts.each do |account|
23
21
  hash = {}
24
- account.instance_variables.each do |var|
25
- hash[var.to_s.delete('@')] = account.instance_variable_get(var)
26
- end
22
+ hash['name'] = account['name']
23
+ hash['location'] = account['location']
24
+ hash['resource_group'] = account['id'].split('/')[4]
25
+ hash['account_type'] = account['properties']['accountType']
27
26
  accounts << hash
28
27
  end
29
28
  load(accounts)
@@ -24,6 +24,18 @@ module Fog
24
24
  request :create_network_interface
25
25
  request :delete_network_interface
26
26
  request :list_network_interfaces
27
+ request :create_load_balancer
28
+ request :delete_load_balancer
29
+ request :list_load_balancers
30
+ request :create_network_security_group
31
+ request :delete_network_security_group
32
+ request :list_network_security_groups
33
+ request :create_traffic_manager_profile
34
+ request :get_traffic_manager_profile
35
+ request :delete_traffic_manager_profile
36
+ request :list_traffic_manager_profiles
37
+ request :create_traffic_manager_endpoint
38
+ request :delete_traffic_manager_endpoint
27
39
 
28
40
  model_path 'fog/azurerm/models/network'
29
41
  model :virtual_network
@@ -34,6 +46,20 @@ module Fog
34
46
  collection :subnets
35
47
  model :network_interface
36
48
  collection :network_interfaces
49
+ model :load_balancer
50
+ collection :load_balancers
51
+ model :frontend_ip_configuration
52
+ model :inbound_nat_pool
53
+ model :inbound_nat_rule
54
+ model :load_balancing_rule
55
+ model :probe
56
+ model :network_security_group
57
+ collection :network_security_groups
58
+ model :network_security_rule
59
+ model :traffic_manager_profile
60
+ collection :traffic_manager_profiles
61
+ model :traffic_manager_end_point
62
+ collection :traffic_manager_end_points
37
63
 
38
64
  # Mock class for Network Service
39
65
  class Mock
@@ -60,6 +86,10 @@ module Fog
60
86
  credentials = Fog::Credentials::AzureRM.get_credentials(options[:tenant_id], options[:client_id], options[:client_secret])
61
87
  @network_client = ::Azure::ARM::Network::NetworkManagementClient.new(credentials)
62
88
  @network_client.subscription_id = options[:subscription_id]
89
+ @tenant_id = options[:tenant_id]
90
+ @client_id = options[:client_id]
91
+ @client_secret = options[:client_secret]
92
+ @subscription_id = options[:subscription_id]
63
93
  end
64
94
  end
65
95
  end
@@ -12,7 +12,7 @@ module Fog
12
12
  promise = @compute_mgmt_client.availability_sets.create_or_update(resource_group, name, avail_set_props)
13
13
  result = promise.value!
14
14
  Fog::Logger.debug "Availability Set #{name} created successfully."
15
- result
15
+ Azure::ARM::Compute::Models::AvailabilitySet.serialize_object(result.body)
16
16
  rescue MsRestAzure::AzureOperationError => e
17
17
  msg = "Exception creating Availability Set #{name} in Resource Group: #{resource_group}. #{e.body['error']['message']}"
18
18
  raise msg
@@ -37,7 +37,18 @@ module Fog
37
37
  end
38
38
  # This class provides the mock implementation for unit tests.
39
39
  class Mock
40
- def create_availability_set(resource_group, name, params)
40
+ def create_availability_set(resource_group, name, location)
41
+ {
42
+ 'location' => location,
43
+ 'id' => "/subscriptions/########-####-####-####-############/resourceGroups/#{resource_group}/providers/Microsoft.Compute/availabilitySets/#{name}",
44
+ 'name' => name,
45
+ 'type' => 'Microsoft.Compute/availabilitySets',
46
+ 'properties' =>
47
+ {
48
+ 'platformUpdateDomainCount' => 2,
49
+ 'platformFaultDomainCount' => 2
50
+ }
51
+ }
41
52
  end
42
53
  end
43
54
  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 create_virtual_machine(name, location, resource_group, vm_size, storage_account_name,
6
+ def create_virtual_machine(resource_group, name, location, vm_size, storage_account_name,
7
7
  username, password, disable_password_authentication,
8
8
  ssh_key_path, ssh_key_data, network_interface_card_id,
9
9
  availability_set_id, publisher, offer, sku, version)
@@ -92,7 +92,65 @@ module Fog
92
92
  end
93
93
  # This class provides the mock implementation for unit tests.
94
94
  class Mock
95
- def create_virtual_machine
95
+ def create_virtual_machine(resource_group, name, location, vm_size, storage_account_name,
96
+ username, password, disable_password_authentication,
97
+ ssh_key_path, ssh_key_data, network_interface_card_id,
98
+ availability_set_id, publisher, offer, sku, version)
99
+ {
100
+ "location"=>location,
101
+ "id"=>"/subscriptions/########-####-####-####-############/resourceGroups/#{resource_group}/providers/Microsoft.Compute/virtualMachines/#{name}",
102
+ "name"=>name,
103
+ "type"=>"Microsoft.Compute/virtualMachines",
104
+ "properties"=>
105
+ {
106
+ "hardwareProfile"=>
107
+ {
108
+ "vmSize"=>vm_size
109
+ },
110
+ "storageProfile"=>
111
+ {
112
+ "imageReference"=>
113
+ {
114
+ "publisher"=>publisher,
115
+ "offer"=>offer,
116
+ "sku"=>sku,
117
+ "version"=>version
118
+ },
119
+ "osDisk"=>
120
+ {
121
+ "name"=>"#{name}_os_disk",
122
+ "vhd"=>
123
+ {
124
+ "uri"=>"http://#{storage_account_name}.blob.core.windows.net/vhds/#{name}_os_disk.vhd"
125
+ },
126
+ "createOption"=>"FromImage",
127
+ "osType"=>"Linux",
128
+ "caching"=>"ReadWrite"
129
+ },
130
+ "dataDisks"=>[]
131
+ },
132
+ "osProfile"=>
133
+ {
134
+ "computerName"=>name,
135
+ "adminUsername"=>username,
136
+ "linuxConfiguration"=>
137
+ {
138
+ "disablePasswordAuthentication"=>disable_password_authentication
139
+ },
140
+ "secrets"=>[]
141
+ },
142
+ "networkProfile"=>
143
+ {
144
+ "networkInterfaces"=>
145
+ [
146
+ {
147
+ "id"=>"/subscriptions/########-####-####-####-############/resourceGroups/#{resource_group}/providers/Microsoft.Network/networkInterfaces/#{network_interface_card_id.split('/')[8]}"
148
+ }
149
+ ]
150
+ },
151
+ "provisioningState"=>"Succeeded"
152
+ }
153
+ }
96
154
  end
97
155
  end
98
156
  end
@@ -7,9 +7,9 @@ module Fog
7
7
  Fog::Logger.debug "Deallocating Virtual Machine #{name} in Resource Group #{resource_group}."
8
8
  begin
9
9
  promise = @compute_mgmt_client.virtual_machines.deallocate(resource_group, name)
10
- result = promise.value!
10
+ promise.value!
11
11
  Fog::Logger.debug "Virtual Machine #{name} Deallocated Successfully."
12
- result
12
+ true
13
13
  rescue MsRestAzure::AzureOperationError => e
14
14
  msg = "Error Deallocating Virtual Machine '#{name}' in Resource Group '#{resource_group}'. #{e.body['error']['message']}"
15
15
  raise msg
@@ -19,6 +19,8 @@ module Fog
19
19
  # This class provides the mock implementation for unit tests.
20
20
  class Mock
21
21
  def deallocate_virtual_machine(resource_group, name)
22
+ Fog::Logger.debug "Virtual Machine #{name} from Resource group #{resource_group} Deallocated successfully."
23
+ return true
22
24
  end
23
25
  end
24
26
  end
@@ -7,9 +7,9 @@ module Fog
7
7
  begin
8
8
  Fog::Logger.debug "Deleting Availability Set: #{name}."
9
9
  promise = @compute_mgmt_client.availability_sets.delete(resource_group, name)
10
- result = promise.value!
10
+ promise.value!
11
11
  Fog::Logger.debug "Availability Set #{name} deleted successfully."
12
- result
12
+ true
13
13
  rescue MsRestAzure::AzureOperationError => e
14
14
  msg = "Exception deleting Availability Set #{name} in Resourse Group #{resource_group}. #{e.body['error']['message']}"
15
15
  raise msg
@@ -19,6 +19,8 @@ module Fog
19
19
  # This class provides the mock implementation for unit tests.
20
20
  class Mock
21
21
  def delete_availability_set(resource_group, name)
22
+ Fog::Logger.debug "Availability Set #{name} from Resource group #{resource_group} deleted successfully."
23
+ return true
22
24
  end
23
25
  end
24
26
  end
@@ -7,9 +7,9 @@ module Fog
7
7
  Fog::Logger.debug "Deleting Virtual Machine #{name} from Resource Group #{resource_group}."
8
8
  begin
9
9
  promise = @compute_mgmt_client.virtual_machines.delete(resource_group, name)
10
- result = promise.value!
10
+ promise.value!
11
11
  Fog::Logger.debug "Virtual Machine #{name} Deleted Successfully."
12
- result
12
+ true
13
13
  rescue MsRestAzure::AzureOperationError => e
14
14
  msg = "Error Deleting Virtual Machine '#{name}' from Resource Group '#{resource_group}'. #{e.body['error']['message']}"
15
15
  raise msg
@@ -19,6 +19,8 @@ module Fog
19
19
  # This class provides the mock implementation for unit tests.
20
20
  class Mock
21
21
  def delete_virtual_machine(resource_group, name)
22
+ Fog::Logger.debug "Virtual Machine #{name} from Resource group #{resource_group} deleted successfully."
23
+ return true
22
24
  end
23
25
  end
24
26
  end
@@ -7,9 +7,9 @@ module Fog
7
7
  Fog::Logger.debug "Generalizing Virtual Machine #{name} in Resource Group #{resource_group}."
8
8
  begin
9
9
  promise = @compute_mgmt_client.virtual_machines.generalize(resource_group, name)
10
- result = promise.value!
10
+ promise.value!
11
11
  Fog::Logger.debug "Virtual Machine #{name} Generalized Successfully."
12
- result
12
+ true
13
13
  rescue MsRestAzure::AzureOperationError => e
14
14
  msg = "Error Generalizing Virtual Machine '#{name}' in Resource Group '#{resource_group}'. #{e.body['error']['message']}"
15
15
  raise msg
@@ -19,6 +19,8 @@ module Fog
19
19
  # This class provides the mock implementation for unit tests.
20
20
  class Mock
21
21
  def generalize_virtual_machine(resource_group, name)
22
+ Fog::Logger.debug "Virtual Machine #{name} from Resource group #{resource_group} Generalized successfully."
23
+ return true
22
24
  end
23
25
  end
24
26
  end
@@ -7,7 +7,7 @@ module Fog
7
7
  begin
8
8
  promise = @compute_mgmt_client.virtual_machines.get(resource_group, name)
9
9
  response = promise.value!
10
- response.body
10
+ Azure::ARM::Compute::Models::VirtualMachine.serialize_object(response.body)
11
11
  rescue MsRestAzure::AzureOperationError => e
12
12
  msg = "Exception getting Virtual Machine #{name} from Resource Group '#{resource_group}'. #{e.body['error']['message']}"
13
13
  raise msg
@@ -17,6 +17,62 @@ module Fog
17
17
  # This class provides the mock implementation for unit tests.
18
18
  class Mock
19
19
  def get_virtual_machine(resource_group, name)
20
+ {
21
+ "location"=>"westus",
22
+ "id"=>"/subscriptions/########-####-####-####-############/resourceGroups/#{resource_group}/providers/Microsoft.Compute/virtualMachines/#{name}",
23
+ "name"=>name,
24
+ "type"=>"Microsoft.Compute/virtualMachines",
25
+ "properties"=>
26
+ {
27
+ "hardwareProfile"=>
28
+ {
29
+ "vmSize"=>"Basic_A0"
30
+ },
31
+ "storageProfile"=>
32
+ {
33
+ "imageReference"=>
34
+ {
35
+ "publisher"=>"Canonical",
36
+ "offer"=>"UbuntuServer",
37
+ "sku"=>"14.04.2-LTS",
38
+ "version"=>"latest"
39
+ },
40
+ "osDisk"=>
41
+ {
42
+ "name"=>"#{name}_os_disk",
43
+ "vhd"=>
44
+ {
45
+ "uri"=>"http://fogtestsafirst.blob.core.windows.net/vhds/testVM_os_disk.vhd"
46
+ },
47
+ "createOption"=>"FromImage",
48
+ "osType"=>"Linux",
49
+ "caching"=>"ReadWrite"
50
+ },
51
+ "dataDisks"=>[]
52
+ },
53
+ "osProfile"=>
54
+ {
55
+ "computerName"=>name,
56
+ "adminUsername"=>"testfog",
57
+ "linuxConfiguration"=>
58
+ {
59
+ "disablePasswordAuthentication"=>false
60
+ },
61
+ "secrets"=>[]
62
+ },
63
+ "networkProfile"=>
64
+ {
65
+ "networkInterfaces"=>
66
+ [
67
+ {
68
+ "id"=>"/subscriptions/########-####-####-####-############/resourceGroups/#{resource_group}/providers/Microsoft.Network/networkInterfaces/testNIC"
69
+ }
70
+ ]
71
+ },
72
+ "provisioningState"=>"Succeeded"
73
+ }
74
+ }
75
+
20
76
  end
21
77
  end
22
78
  end
@@ -7,7 +7,7 @@ module Fog
7
7
  begin
8
8
  promise = @compute_mgmt_client.availability_sets.list(resource_group)
9
9
  response = promise.value!
10
- response.body.value
10
+ Azure::ARM::Compute::Models::AvailabilitySetListResult.serialize_object(response.body)['value']
11
11
  rescue MsRestAzure::AzureOperationError => e
12
12
  msg = "Exception listing availability sets in Resource Group #{resource_group}. #{e.body['error']['message']}"
13
13
  raise msg
@@ -17,6 +17,21 @@ module Fog
17
17
  # This class provides the mock implementation for unit tests.
18
18
  class Mock
19
19
  def list_availability_sets(resource_group)
20
+ [
21
+ {
22
+ "id"=>"/subscriptions/{subscription-id}/resourceGroups/#{resource_group}/providers/Microsoft.Compute/availabilitySets/test_availability_set",
23
+ "name"=>"test_availability_set",
24
+ "type"=>"Microsoft.Compute/availabilitySets",
25
+ "location"=>"westus",
26
+ "tags"=> {},
27
+ "properties"=>
28
+ {
29
+ "platformUpdateDomainCount"=>5,
30
+ "platformFaultDomainCount"=>3,
31
+ "virtualMachines"=>[]
32
+ }
33
+ }
34
+ ]
20
35
  end
21
36
  end
22
37
  end