fog-azure-rm 0.3.3 → 0.3.4

Sign up to get free protection for your applications and to get access to all the features.
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