fog-azure-rm 0.3.3 → 0.3.4

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 (142) hide show
  1. checksums.yaml +4 -4
  2. data/.arclint +8 -0
  3. data/CHANGELOG.md +10 -0
  4. data/CONTRIBUTORS.md +4 -0
  5. data/lib/fog/azurerm/compute.rb +1 -0
  6. data/lib/fog/azurerm/docs/application_gateway.md +6 -7
  7. data/lib/fog/azurerm/docs/compute.md +45 -11
  8. data/lib/fog/azurerm/docs/dns.md +4 -1
  9. data/lib/fog/azurerm/docs/key_vault.md +3 -0
  10. data/lib/fog/azurerm/docs/network.md +18 -13
  11. data/lib/fog/azurerm/docs/resources.md +11 -8
  12. data/lib/fog/azurerm/docs/sql.md +18 -16
  13. data/lib/fog/azurerm/docs/storage.md +13 -78
  14. data/lib/fog/azurerm/docs/traffic_manager.md +7 -6
  15. data/lib/fog/azurerm/models/application_gateway/gateway.rb +5 -1
  16. data/lib/fog/azurerm/models/compute/availability_set.rb +4 -1
  17. data/lib/fog/azurerm/models/compute/creation_data.rb +4 -2
  18. data/lib/fog/azurerm/models/compute/data_disk.rb +26 -0
  19. data/lib/fog/azurerm/models/compute/managed_disk.rb +4 -4
  20. data/lib/fog/azurerm/models/compute/server.rb +31 -5
  21. data/lib/fog/azurerm/models/key_vault/vault.rb +3 -1
  22. data/lib/fog/azurerm/models/network/load_balancer.rb +3 -1
  23. data/lib/fog/azurerm/models/network/local_network_gateway.rb +3 -1
  24. data/lib/fog/azurerm/models/network/network_interface.rb +3 -1
  25. data/lib/fog/azurerm/models/network/network_security_group.rb +4 -2
  26. data/lib/fog/azurerm/models/network/public_ip.rb +4 -2
  27. data/lib/fog/azurerm/models/network/virtual_network.rb +4 -2
  28. data/lib/fog/azurerm/models/resources/resource_group.rb +3 -1
  29. data/lib/fog/azurerm/models/sql/sql_database.rb +3 -3
  30. data/lib/fog/azurerm/models/sql/sql_server.rb +3 -2
  31. data/lib/fog/azurerm/models/storage/storage_account.rb +4 -1
  32. data/lib/fog/azurerm/models/traffic_manager/traffic_manager_profile.rb +3 -1
  33. data/lib/fog/azurerm/requests/application_gateway/create_or_update_application_gateway.rb +1 -0
  34. data/lib/fog/azurerm/requests/compute/attach_data_disk_to_vm.rb +49 -13
  35. data/lib/fog/azurerm/requests/compute/create_availability_set.rb +4 -2
  36. data/lib/fog/azurerm/requests/compute/create_virtual_machine.rb +38 -36
  37. data/lib/fog/azurerm/requests/compute/detach_data_disk_from_vm.rb +1 -2
  38. data/lib/fog/azurerm/requests/dns/create_or_update_zone.rb +1 -2
  39. data/lib/fog/azurerm/requests/key_vault/create_or_update_vault.rb +1 -0
  40. data/lib/fog/azurerm/requests/network/check_express_route_cir_auth_exists.rb +1 -1
  41. data/lib/fog/azurerm/requests/network/create_load_balancer.rb +4 -4
  42. data/lib/fog/azurerm/requests/network/create_or_update_express_route_circuit.rb +1 -1
  43. data/lib/fog/azurerm/requests/network/create_or_update_local_network_gateway.rb +1 -2
  44. data/lib/fog/azurerm/requests/network/create_or_update_network_interface.rb +4 -3
  45. data/lib/fog/azurerm/requests/network/create_or_update_network_security_group.rb +4 -3
  46. data/lib/fog/azurerm/requests/network/create_or_update_public_ip.rb +5 -3
  47. data/lib/fog/azurerm/requests/network/create_or_update_virtual_network.rb +4 -3
  48. data/lib/fog/azurerm/requests/network/create_or_update_virtual_network_gateway_connection.rb +1 -1
  49. data/lib/fog/azurerm/requests/resources/check_azure_resource_exists.rb +1 -1
  50. data/lib/fog/azurerm/requests/resources/create_resource_group.rb +2 -1
  51. data/lib/fog/azurerm/requests/resources/delete_resource_tag.rb +4 -4
  52. data/lib/fog/azurerm/requests/resources/tag_resource.rb +4 -4
  53. data/lib/fog/azurerm/requests/sql/create_or_update_database.rb +13 -10
  54. data/lib/fog/azurerm/requests/sql/create_or_update_sql_server.rb +8 -5
  55. data/lib/fog/azurerm/requests/storage/create_storage_account.rb +4 -2
  56. data/lib/fog/azurerm/requests/traffic_manager/create_or_update_traffic_manager_profile.rb +13 -3
  57. data/lib/fog/azurerm/storage.rb +0 -19
  58. data/lib/fog/azurerm/version.rb +1 -1
  59. data/test/api_stub.rb +0 -2
  60. data/test/api_stub/models/compute/server.rb +62 -0
  61. data/test/api_stub/requests/compute/virtual_machine.rb +75 -0
  62. data/test/api_stub/requests/resources/resource_group.rb +1 -1
  63. data/test/integration/application_gateway.rb +8 -1
  64. data/test/integration/availability_set.rb +9 -2
  65. data/test/integration/external_load_balancer.rb +2 -1
  66. data/test/integration/internal_load_balancer.rb +2 -1
  67. data/test/integration/key_vault.rb +2 -1
  68. data/test/integration/managed_disk.rb +10 -5
  69. data/test/integration/network_interface.rb +2 -1
  70. data/test/integration/network_security_group.rb +2 -1
  71. data/test/integration/public_ip.rb +2 -1
  72. data/test/integration/resource_group.rb +5 -2
  73. data/test/integration/resource_tag.rb +4 -2
  74. data/test/integration/server.rb +81 -3
  75. data/test/integration/sql_server.rb +10 -2
  76. data/test/integration/storage_account.rb +32 -20
  77. data/test/integration/traffic_manager.rb +6 -1
  78. data/test/integration/virtual_network.rb +2 -1
  79. data/test/integration/virtual_network_gateway_connection.rb +3 -3
  80. data/test/models/application_gateway/test_gateway.rb +2 -1
  81. data/test/models/compute/test_availability_set.rb +2 -1
  82. data/test/models/{storage → compute}/test_data_disk.rb +2 -2
  83. data/test/models/compute/test_managed_disk.rb +2 -1
  84. data/test/models/compute/test_server.rb +31 -2
  85. data/test/models/dns/test_zone.rb +2 -1
  86. data/test/models/key_vault/test_vault.rb +2 -1
  87. data/test/models/network/test_load_balancer.rb +2 -1
  88. data/test/models/network/test_network_interface.rb +2 -1
  89. data/test/models/network/test_network_security_group.rb +2 -1
  90. data/test/models/network/test_public_ip.rb +2 -1
  91. data/test/models/network/test_virtual_network.rb +2 -1
  92. data/test/models/resources/test_resource_group.rb +2 -1
  93. data/test/models/sql/test_database.rb +2 -1
  94. data/test/models/sql/test_sql_server.rb +2 -1
  95. data/test/models/storage/test_storage_account.rb +2 -1
  96. data/test/models/traffic_manager/test_traffic_manager_profile.rb +2 -1
  97. data/test/requests/compute/test_attach_data_disk_to_vm.rb +21 -6
  98. data/test/requests/network/test_check_express_route_cir_auth_exists.rb +1 -1
  99. data/test/requests/network/test_create_load_balancer.rb +3 -2
  100. data/test/requests/network/test_create_network_interface.rb +4 -3
  101. data/test/requests/network/test_create_or_update_network_security_group.rb +3 -2
  102. data/test/requests/network/test_create_or_update_virtual_network.rb +5 -3
  103. data/test/requests/network/test_create_public_ip.rb +3 -2
  104. data/test/requests/network/test_update_public_ip.rb +3 -2
  105. data/test/requests/resources/test_create_resource_group.rb +3 -2
  106. data/test/requests/resources/test_delete_resource_tag.rb +3 -3
  107. data/test/requests/resources/test_tag_resource.rb +3 -3
  108. data/test/test_helper.rb +0 -14
  109. metadata +5 -36
  110. data/lib/fog/azurerm/models/storage/data_disk.rb +0 -27
  111. data/lib/fog/azurerm/models/storage/recovery_vault.rb +0 -50
  112. data/lib/fog/azurerm/models/storage/recovery_vaults.rb +0 -27
  113. data/lib/fog/azurerm/requests/storage/create_or_update_recovery_vault.rb +0 -54
  114. data/lib/fog/azurerm/requests/storage/delete_recovery_vault.rb +0 -35
  115. data/lib/fog/azurerm/requests/storage/disable_backup_protection.rb +0 -60
  116. data/lib/fog/azurerm/requests/storage/enable_backup_protection.rb +0 -61
  117. data/lib/fog/azurerm/requests/storage/get_all_backup_jobs.rb +0 -56
  118. data/lib/fog/azurerm/requests/storage/get_backup_container.rb +0 -53
  119. data/lib/fog/azurerm/requests/storage/get_backup_item.rb +0 -58
  120. data/lib/fog/azurerm/requests/storage/get_backup_job_for_vm.rb +0 -53
  121. data/lib/fog/azurerm/requests/storage/get_backup_protection_policy.rb +0 -64
  122. data/lib/fog/azurerm/requests/storage/get_recovery_vault.rb +0 -49
  123. data/lib/fog/azurerm/requests/storage/list_recovery_vaults.rb +0 -48
  124. data/lib/fog/azurerm/requests/storage/set_recovery_vault_context.rb +0 -36
  125. data/lib/fog/azurerm/requests/storage/start_backup.rb +0 -54
  126. data/test/api_stub/models/storage/recovery_vault.rb +0 -23
  127. data/test/api_stub/requests/storage/recovery_vault.rb +0 -189
  128. data/test/models/storage/test_recovery_vault.rb +0 -61
  129. data/test/models/storage/test_recovery_vaults.rb +0 -47
  130. data/test/requests/storage/test_create_recovery_vault.rb +0 -35
  131. data/test/requests/storage/test_delete_recovery_vault.rb +0 -34
  132. data/test/requests/storage/test_disable_backup_protection.rb +0 -52
  133. data/test/requests/storage/test_enable_backup_protection.rb +0 -66
  134. data/test/requests/storage/test_get_all_backup_jobs.rb +0 -35
  135. data/test/requests/storage/test_get_backup_container.rb +0 -35
  136. data/test/requests/storage/test_get_backup_item.rb +0 -35
  137. data/test/requests/storage/test_get_backup_job_for_vm.rb +0 -26
  138. data/test/requests/storage/test_get_backup_protection_policy.rb +0 -35
  139. data/test/requests/storage/test_get_recovery_vault.rb +0 -35
  140. data/test/requests/storage/test_list_recovery_vault.rb +0 -35
  141. data/test/requests/storage/test_set_recovery_vault_context.rb +0 -34
  142. data/test/requests/storage/test_start_backup.rb +0 -55
@@ -23,13 +23,12 @@ module Fog
23
23
  attribute :requested_service_objective_name, aliases: %w(requestedServiceObjectiveName)
24
24
  attribute :service_level_objective, aliases: %w(serviceLevelObjective)
25
25
  attribute :source_database_id, aliases: %w(sourceDatabaseId)
26
+ attribute :tags
26
27
 
27
28
  def self.parse(database)
28
29
  database_hash = get_hash_from_object(database)
29
-
30
30
  database_hash['resource_group'] = get_resource_group_from_id(database.id)
31
31
  database_hash['server_name'] = get_resource_from_resource_id(database.id, 8)
32
-
33
32
  database_hash
34
33
  end
35
34
 
@@ -58,7 +57,8 @@ module Fog
58
57
  max_size_bytes: max_size_bytes,
59
58
  requested_service_objective_name: requested_service_objective_name,
60
59
  elastic_pool_name: elastic_pool_name,
61
- requested_service_objective_id: requested_service_objective_id
60
+ requested_service_objective_id: requested_service_objective_id,
61
+ tags: tags
62
62
  }
63
63
  end
64
64
  end
@@ -13,11 +13,11 @@ module Fog
13
13
  attribute :administrator_login
14
14
  attribute :administrator_login_password
15
15
  attribute :fully_qualified_domain_name, aliases: %w(fullyQualifiedDomainName)
16
+ attribute :tags
16
17
 
17
18
  def self.parse(server)
18
19
  sql_server_hash = get_hash_from_object(server)
19
20
  sql_server_hash['resource_group'] = get_resource_group_from_id(server.id)
20
-
21
21
  sql_server_hash
22
22
  end
23
23
 
@@ -40,7 +40,8 @@ module Fog
40
40
  version: version,
41
41
  location: location,
42
42
  administrator_login: administrator_login,
43
- administrator_login_password: administrator_login_password
43
+ administrator_login_password: administrator_login_password,
44
+ tags: tags
44
45
  }
45
46
  end
46
47
  end
@@ -11,6 +11,7 @@ module Fog
11
11
  attribute :sku_name
12
12
  attribute :replication
13
13
  attribute :encryption
14
+ attribute :tags
14
15
 
15
16
  def self.parse(storage_account)
16
17
  hash = {}
@@ -21,6 +22,7 @@ module Fog
21
22
  hash['sku_name'] = storage_account.sku.name.split('_').first
22
23
  hash['replication'] = storage_account.sku.name.split('_').last
23
24
  hash['encryption'] = storage_account.encryption.services.blob.enabled unless storage_account.encryption.nil?
25
+ hash['tags'] = storage_account.tags
24
26
  hash
25
27
  end
26
28
 
@@ -43,7 +45,8 @@ module Fog
43
45
  sku_name: sku_name,
44
46
  location: location,
45
47
  replication: replication,
46
- encryption: encryption
48
+ encryption: encryption,
49
+ tags: tags
47
50
  }
48
51
  end
49
52
 
@@ -17,6 +17,7 @@ module Fog
17
17
  attribute :port
18
18
  attribute :path
19
19
  attribute :endpoints
20
+ attribute :tags
20
21
 
21
22
  def self.parse(profile)
22
23
  traffic_manager_profile = get_hash_from_object(profile)
@@ -79,7 +80,8 @@ module Fog
79
80
  protocol: protocol,
80
81
  port: port,
81
82
  path: path,
82
- endpoints: endpoints
83
+ endpoints: endpoints,
84
+ tags: tags
83
85
  }
84
86
  end
85
87
  end
@@ -33,6 +33,7 @@ module Fog
33
33
  application_gateway.http_listeners = define_http_listeners(gateway_params[:http_listeners]) if gateway_params[:http_listeners]
34
34
  application_gateway.url_path_maps = define_url_path_maps(gateway_params[:url_path_maps]) if gateway_params[:url_path_maps]
35
35
  application_gateway.request_routing_rules = define_request_routing_rules(gateway_params[:request_routing_rules]) if gateway_params[:request_routing_rules]
36
+ application_gateway.tags = gateway_params[:tags]
36
37
 
37
38
  gateway_sku = Azure::ARM::Network::Models::ApplicationGatewaySku.new
38
39
  gateway_sku.name = gateway_params[:sku_name]
@@ -3,20 +3,35 @@ module Fog
3
3
  class AzureRM
4
4
  # This class provides the actual implementation for service calls.
5
5
  class Real
6
- def attach_data_disk_to_vm(resource_group, vm_name, disk_name, disk_size, storage_account_name, async)
7
- msg = "Attaching Data Disk #{disk_name} to Virtual Machine #{vm_name} in Resource Group #{resource_group}"
6
+ def attach_data_disk_to_vm(disk_params, async)
7
+ # Variable un-packing for easy access
8
+ vm_name = disk_params[:vm_name]
9
+ vm_resource_group = disk_params[:vm_resource_group]
10
+ disk_name = disk_params[:disk_name]
11
+ disk_resource_group = disk_params[:disk_resource_group]
12
+ disk_size = disk_params[:disk_size_gb]
13
+ storage_account_name = disk_params[:storage_account_name]
14
+
15
+ msg = "Attaching Data Disk #{disk_name} to Virtual Machine #{vm_name} in Resource Group #{vm_resource_group}"
8
16
  Fog::Logger.debug msg
9
- vm = get_virtual_machine_instance(resource_group, vm_name, @compute_mgmt_client)
17
+ vm = get_virtual_machine_instance(vm_resource_group, vm_name)
10
18
  lun = get_logical_unit_number(vm.storage_profile.data_disks)
11
- access_key = get_storage_access_key(resource_group, storage_account_name, @storage_mgmt_client)
12
- data_disk = get_data_disk_object(disk_name, disk_size, lun, storage_account_name, access_key)
19
+
20
+ # Attach data disk to VM
21
+ if storage_account_name
22
+ # Un-managed data disk
23
+ access_key = get_storage_access_key(vm_resource_group, storage_account_name)
24
+ data_disk = get_unmanaged_disk_object(disk_name, disk_size, lun, storage_account_name, access_key)
25
+ elsif disk_resource_group
26
+ # Managed data disk
27
+ data_disk = get_data_disk_object(disk_resource_group, disk_name, lun)
28
+ end
13
29
  vm.storage_profile.data_disks.push(data_disk)
14
- vm.resources = nil
15
30
  begin
16
31
  if async
17
- response = @compute_mgmt_client.virtual_machines.create_or_update_async(resource_group, vm_name, vm)
32
+ response = @compute_mgmt_client.virtual_machines.create_or_update_async(vm_resource_group, vm_name, vm)
18
33
  else
19
- virtual_machine = @compute_mgmt_client.virtual_machines.create_or_update(resource_group, vm_name, vm)
34
+ virtual_machine = @compute_mgmt_client.virtual_machines.create_or_update(vm_resource_group, vm_name, vm)
20
35
  end
21
36
  rescue MsRestAzure::AzureOperationError => e
22
37
  if e.body.to_s =~ /InvalidParameter/ && e.body.to_s =~ /already exists/
@@ -35,11 +50,11 @@ module Fog
35
50
 
36
51
  private
37
52
 
38
- def get_virtual_machine_instance(resource_group, vm_name, client)
53
+ def get_virtual_machine_instance(resource_group, vm_name)
39
54
  msg = "Getting Virtual Machine #{vm_name} from Resource Group #{resource_group}"
40
55
  Fog::Logger.debug msg
41
56
  begin
42
- virtual_machine = client.virtual_machines.get(resource_group, vm_name)
57
+ virtual_machine = @compute_mgmt_client.virtual_machines.get(resource_group, vm_name)
43
58
  rescue MsRestAzure::AzureOperationError => e
44
59
  raise_azure_exception(e, msg)
45
60
  end
@@ -60,11 +75,32 @@ module Fog
60
75
  lun_range_list[0]
61
76
  end
62
77
 
63
- def get_storage_access_key(resource_group, storage_account_name, storage_client)
78
+ def get_data_disk_object(disk_resource_group, disk_name, lun)
79
+ msg = "Getting Managed Disk #{disk_name} from Resource Group #{disk_resource_group}"
80
+ begin
81
+ disk = @compute_mgmt_client.disks.get(disk_resource_group, disk_name)
82
+ rescue MsRestAzure::AzureOperationError => e
83
+ Fog::Logger.debug msg
84
+ raise_azure_exception(e, msg)
85
+ end
86
+ managed_disk = Azure::ARM::Compute::Models::DataDisk.new
87
+ managed_disk.name = disk_name
88
+ managed_disk.lun = lun
89
+ managed_disk.create_option = Azure::ARM::Compute::Models::DiskCreateOptionTypes::Attach
90
+
91
+ # Managed disk parameter
92
+ managed_disk_params = Azure::ARM::Compute::Models::ManagedDiskParameters.new
93
+ managed_disk_params.id = disk.id
94
+ managed_disk.managed_disk = managed_disk_params
95
+
96
+ managed_disk
97
+ end
98
+
99
+ def get_storage_access_key(resource_group, storage_account_name)
64
100
  msg = "Getting Storage Access Keys from Resource Group #{resource_group}"
65
101
  Fog::Logger.debug msg
66
102
  begin
67
- storage_account_keys = storage_client.storage_accounts.list_keys(resource_group, storage_account_name)
103
+ storage_account_keys = @storage_mgmt_client.storage_accounts.list_keys(resource_group, storage_account_name)
68
104
  rescue MsRestAzure::AzureOperationError => e
69
105
  raise_azure_exception(e, msg)
70
106
  end
@@ -72,7 +108,7 @@ module Fog
72
108
  storage_account_keys.keys[0].value
73
109
  end
74
110
 
75
- def get_data_disk_object(disk_name, disk_size, lun, storage_account_name, access_key)
111
+ def get_unmanaged_disk_object(disk_name, disk_size, lun, storage_account_name, access_key)
76
112
  data_disk = Azure::ARM::Compute::Models::DataDisk.new
77
113
  data_disk.name = disk_name
78
114
  data_disk.lun = lun
@@ -10,10 +10,11 @@ module Fog
10
10
  fault_domain_count = availability_set_params[:platform_fault_domain_count]
11
11
  update_domain_count = availability_set_params[:platform_update_domain_count]
12
12
  use_managed_disk = availability_set_params[:use_managed_disk].nil? ? false : availability_set_params[:use_managed_disk]
13
+ tags = availability_set_params[:tags]
13
14
 
14
15
  msg = "Creating Availability Set '#{name}' in #{location} region."
15
16
  Fog::Logger.debug msg
16
- avail_set_params = get_availability_set_properties(location, fault_domain_count, update_domain_count, use_managed_disk)
17
+ avail_set_params = get_availability_set_properties(location, fault_domain_count, update_domain_count, use_managed_disk, tags)
17
18
 
18
19
  begin
19
20
  availability_set = @compute_mgmt_client.availability_sets.create_or_update(resource_group, name, avail_set_params)
@@ -25,12 +26,13 @@ module Fog
25
26
  end
26
27
 
27
28
  # create the properties object for creating availability sets
28
- def get_availability_set_properties(location, fault_domain_count, update_domain_count, use_managed_disk)
29
+ def get_availability_set_properties(location, fault_domain_count, update_domain_count, use_managed_disk, tags)
29
30
  avail_set = Azure::ARM::Compute::Models::AvailabilitySet.new
30
31
  avail_set.location = location
31
32
  avail_set.sku = create_availability_set_sku(use_managed_disk)
32
33
  avail_set.platform_fault_domain_count = fault_domain_count.nil? ? FAULT_DOMAIN_COUNT : fault_domain_count
33
34
  avail_set.platform_update_domain_count = update_domain_count.nil? ? UPDATE_DOMAIN_COUNT : update_domain_count
35
+ avail_set.tags = tags
34
36
  avail_set
35
37
  end
36
38
 
@@ -6,61 +6,63 @@ module Fog
6
6
  class AzureRM
7
7
  # This class provides the actual implementation for service calls.
8
8
  class Real
9
- def create_virtual_machine(vm_hash, async = false)
10
- msg = "Creating Virtual Machine #{vm_hash[:name]} in Resource Group #{vm_hash[:resource_group]}."
9
+ def create_virtual_machine(vm_config, async = false)
10
+ msg = "Creating Virtual Machine #{vm_config[:name]} in Resource Group #{vm_config[:resource_group]}."
11
11
  Fog::Logger.debug msg
12
12
  virtual_machine = Azure::ARM::Compute::Models::VirtualMachine.new
13
13
 
14
- unless vm_hash[:availability_set_id].nil?
14
+ unless vm_config[:availability_set_id].nil?
15
15
  sub_resource = MsRestAzure::SubResource.new
16
- sub_resource.id = vm_hash[:availability_set_id]
16
+ sub_resource.id = vm_config[:availability_set_id]
17
17
  virtual_machine.availability_set = sub_resource
18
18
  end
19
19
 
20
- string_data = vm_hash[:custom_data]
20
+ string_data = vm_config[:custom_data]
21
21
  string_data = WHITE_SPACE if string_data.nil?
22
22
  encoded_data = Base64.strict_encode64(string_data)
23
- virtual_machine.hardware_profile = define_hardware_profile(vm_hash[:vm_size])
24
- virtual_machine.storage_profile = define_storage_profile(vm_hash[:name],
25
- vm_hash[:storage_account_name],
26
- vm_hash[:publisher],
27
- vm_hash[:offer],
28
- vm_hash[:sku],
29
- vm_hash[:version],
30
- vm_hash[:vhd_path],
31
- vm_hash[:os_disk_caching],
32
- vm_hash[:platform],
33
- vm_hash[:resource_group],
34
- vm_hash[:managed_disk_storage_type])
23
+ virtual_machine.hardware_profile = define_hardware_profile(vm_config[:vm_size])
24
+ virtual_machine.storage_profile = define_storage_profile(vm_config[:name],
25
+ vm_config[:storage_account_name],
26
+ vm_config[:publisher],
27
+ vm_config[:offer],
28
+ vm_config[:sku],
29
+ vm_config[:version],
30
+ vm_config[:vhd_path],
31
+ vm_config[:os_disk_caching],
32
+ vm_config[:platform],
33
+ vm_config[:resource_group],
34
+ vm_config[:managed_disk_storage_type],
35
+ vm_config[:os_disk_size])
35
36
 
36
- virtual_machine.os_profile = if vm_hash[:platform].casecmp(WINDOWS).zero?
37
- define_windows_os_profile(vm_hash[:name],
38
- vm_hash[:username],
39
- vm_hash[:password],
40
- vm_hash[:provision_vm_agent],
41
- vm_hash[:enable_automatic_updates],
37
+ virtual_machine.os_profile = if vm_config[:platform].casecmp(WINDOWS).zero?
38
+ define_windows_os_profile(vm_config[:name],
39
+ vm_config[:username],
40
+ vm_config[:password],
41
+ vm_config[:provision_vm_agent],
42
+ vm_config[:enable_automatic_updates],
42
43
  encoded_data)
43
44
  else
44
- define_linux_os_profile(vm_hash[:name],
45
- vm_hash[:username],
46
- vm_hash[:password],
47
- vm_hash[:disable_password_authentication],
48
- vm_hash[:ssh_key_path],
49
- vm_hash[:ssh_key_data],
45
+ define_linux_os_profile(vm_config[:name],
46
+ vm_config[:username],
47
+ vm_config[:password],
48
+ vm_config[:disable_password_authentication],
49
+ vm_config[:ssh_key_path],
50
+ vm_config[:ssh_key_data],
50
51
  encoded_data)
51
52
  end
52
- virtual_machine.network_profile = define_network_profile(vm_hash[:network_interface_card_ids])
53
- virtual_machine.location = vm_hash[:location]
53
+ virtual_machine.network_profile = define_network_profile(vm_config[:network_interface_card_ids])
54
+ virtual_machine.location = vm_config[:location]
55
+ virtual_machine.tags = vm_config[:tags]
54
56
  begin
55
57
  response = if async
56
- @compute_mgmt_client.virtual_machines.create_or_update_async(vm_hash[:resource_group], vm_hash[:name], virtual_machine)
58
+ @compute_mgmt_client.virtual_machines.create_or_update_async(vm_config[:resource_group], vm_config[:name], virtual_machine)
57
59
  else
58
- @compute_mgmt_client.virtual_machines.create_or_update(vm_hash[:resource_group], vm_hash[:name], virtual_machine)
60
+ @compute_mgmt_client.virtual_machines.create_or_update(vm_config[:resource_group], vm_config[:name], virtual_machine)
59
61
  end
60
62
  rescue MsRestAzure::AzureOperationError => e
61
63
  raise_azure_exception(e, msg)
62
64
  end
63
- Fog::Logger.debug "Virtual Machine #{vm_hash[:name]} Created Successfully." unless async
65
+ Fog::Logger.debug "Virtual Machine #{vm_config[:name]} Created Successfully." unless async
64
66
  response
65
67
  end
66
68
 
@@ -81,7 +83,7 @@ module Fog
81
83
  image_reference
82
84
  end
83
85
 
84
- def define_storage_profile(vm_name, storage_account_name, publisher, offer, sku, version, vhd_path, os_disk_caching, platform, resource_group, managed_disk_storage_type)
86
+ def define_storage_profile(vm_name, storage_account_name, publisher, offer, sku, version, vhd_path, os_disk_caching, platform, resource_group, managed_disk_storage_type, os_disk_size)
85
87
  storage_profile = Azure::ARM::Compute::Models::StorageProfile.new
86
88
  storage_profile.image_reference = image_reference(publisher, offer, sku, version)
87
89
  os_disk = Azure::ARM::Compute::Models::OSDisk.new
@@ -129,7 +131,7 @@ module Fog
129
131
 
130
132
  os_disk.name = "#{vm_name}_os_disk"
131
133
  os_disk.os_type = platform
132
-
134
+ os_disk.disk_size_gb = os_disk_size unless os_disk_size.nil?
133
135
  os_disk.create_option = Azure::ARM::Compute::Models::DiskCreateOptionTypes::FromImage
134
136
  os_disk.caching = unless os_disk_caching.nil?
135
137
  case os_disk_caching
@@ -6,13 +6,12 @@ module Fog
6
6
  def detach_data_disk_from_vm(resource_group, vm_name, disk_name, async)
7
7
  msg = "Detaching Data Disk #{disk_name} from Virtual Machine #{vm_name} in Resource Group #{resource_group}."
8
8
  Fog::Logger.debug msg
9
- vm = get_virtual_machine_instance(resource_group, vm_name, @compute_mgmt_client)
9
+ vm = get_virtual_machine_instance(resource_group, vm_name)
10
10
  vm.storage_profile.data_disks.each_with_index do |disk, index|
11
11
  if disk.name == disk_name
12
12
  vm.storage_profile.data_disks.delete_at(index)
13
13
  end
14
14
  end
15
- vm.resources = nil
16
15
  begin
17
16
  if async
18
17
  response = @compute_mgmt_client.virtual_machines.create_or_update_async(resource_group, vm_name, vm)
@@ -25,9 +25,8 @@ module Fog
25
25
  zone.type = zone_params[:type]
26
26
  zone.number_of_record_sets = zone_params[:number_of_record_sets]
27
27
  zone.max_number_of_record_sets = zone_params[:max_number_of_record_sets]
28
- zone.tags = zone_params[:tags] if zone.tags.nil?
28
+ zone.tags = zone_params[:tags]
29
29
  zone.etag = zone_params[:etag]
30
-
31
30
  zone
32
31
  end
33
32
  end
@@ -21,6 +21,7 @@ module Fog
21
21
  def get_vault_param_object(vault_hash)
22
22
  vault_param = Azure::ARM::KeyVault::Models::VaultCreateOrUpdateParameters.new
23
23
  vault_param.location = vault_hash[:location]
24
+ vault_param.tags = vault_hash[:tags]
24
25
  vault_param.properties = get_vault_properties_object(vault_hash)
25
26
  vault_param
26
27
  end
@@ -11,7 +11,7 @@ module Fog
11
11
  Fog::Logger.debug "Express Route Circuit Authorization #{authorization_name} exists."
12
12
  true
13
13
  rescue MsRestAzure::AzureOperationError => e
14
- if e.body['error']['code'] == 'ResourceNotFound'
14
+ if e.body['error']['code'] == 'NotFound'
15
15
  Fog::Logger.debug "Express Route Circuit Authorization #{authorization_name} doesn't exist."
16
16
  false
17
17
  else
@@ -3,10 +3,10 @@ module Fog
3
3
  class AzureRM
4
4
  # Real class for Load-Balancer Request
5
5
  class Real
6
- def create_load_balancer(name, location, resource_group, frontend_ip_configurations, backend_address_pool_names, load_balancing_rules, probes, inbound_nat_rules, inbound_nat_pools)
6
+ def create_load_balancer(name, location, resource_group, frontend_ip_configurations, backend_address_pool_names, load_balancing_rules, probes, inbound_nat_rules, inbound_nat_pools, tags)
7
7
  msg = "Creating Load-Balancer: #{name}"
8
8
  Fog::Logger.debug msg
9
- load_balancer = define_load_balancer(name, location, frontend_ip_configurations, backend_address_pool_names, load_balancing_rules, probes, inbound_nat_rules, inbound_nat_pools)
9
+ load_balancer = define_load_balancer(name, location, frontend_ip_configurations, backend_address_pool_names, load_balancing_rules, probes, inbound_nat_rules, inbound_nat_pools, tags)
10
10
  begin
11
11
  load_balancer = @network_client.load_balancers.create_or_update(resource_group, name, load_balancer)
12
12
  rescue MsRestAzure::AzureOperationError => e
@@ -18,11 +18,11 @@ module Fog
18
18
 
19
19
  private
20
20
 
21
- def define_load_balancer(name, location, frontend_ip_configurations, backend_address_pool_names, load_balancing_rules, probes, inbound_nat_rules, inbound_nat_pools)
21
+ def define_load_balancer(name, location, frontend_ip_configurations, backend_address_pool_names, load_balancing_rules, probes, inbound_nat_rules, inbound_nat_pools, tags)
22
22
  load_balancer = Azure::ARM::Network::Models::LoadBalancer.new
23
23
  load_balancer.name = name
24
24
  load_balancer.location = location
25
-
25
+ load_balancer.tags = tags
26
26
  if frontend_ip_configurations
27
27
  frontend_ip_configuration_arr = define_lb_frontend_ip_configurations(frontend_ip_configurations)
28
28
  load_balancer.frontend_ipconfigurations = frontend_ip_configuration_arr
@@ -47,7 +47,7 @@ module Fog
47
47
  express_route_circuit.name = circuit_name
48
48
  express_route_circuit.location = location
49
49
  express_route_circuit.sku = sku
50
- express_route_circuit.tags = tags if express_route_circuit.tags.nil?
50
+ express_route_circuit.tags = tags
51
51
  express_route_circuit
52
52
  end
53
53
 
@@ -25,13 +25,12 @@ module Fog
25
25
  local_network_gateway.local_network_address_space = get_local_network_address_space_object(local_network_gateway_params[:local_network_address_space_prefixes]) if local_network_gateway_params[:local_network_address_space_prefixes]
26
26
  local_network_gateway.gateway_ip_address = local_network_gateway_params[:gateway_ip_address] if local_network_gateway_params[:gateway_ip_address]
27
27
  local_network_gateway.bgp_settings = get_bgp_settings_object(local_network_gateway_params)
28
-
29
28
  local_network_gateway.name = local_network_gateway_params[:name]
30
29
  local_network_gateway.type = local_network_gateway_params[:type]
31
30
  local_network_gateway.location = local_network_gateway_params[:location]
32
31
  local_network_gateway.tags = local_network_gateway_params[:tags] if local_network_gateway.tags.nil?
33
32
  local_network_gateway.provisioning_state = local_network_gateway_params[:provisioning_state]
34
-
33
+ local_network_gateway.tags = local_network_gateway_params[:tags]
35
34
  local_network_gateway
36
35
  end
37
36