far-gem 0.5.1

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 (771) hide show
  1. checksums.yaml +7 -0
  2. data/.arclint +8 -0
  3. data/.codeclimate.yml +17 -0
  4. data/.gitignore +6 -0
  5. data/.hound.yml +2 -0
  6. data/.rubocop.yml +38 -0
  7. data/.travis.yml +47 -0
  8. data/CHANGELOG.md +356 -0
  9. data/CONTRIBUTING.md +40 -0
  10. data/CONTRIBUTORS.md +12 -0
  11. data/Gemfile +3 -0
  12. data/LICENSE.md +20 -0
  13. data/README.md +96 -0
  14. data/fog-azure-rm.gemspec +37 -0
  15. data/lib/fog/azurerm.rb +88 -0
  16. data/lib/fog/azurerm/application_gateway.rb +75 -0
  17. data/lib/fog/azurerm/async_response.rb +44 -0
  18. data/lib/fog/azurerm/compute.rb +102 -0
  19. data/lib/fog/azurerm/config.rb +1 -0
  20. data/lib/fog/azurerm/constants.rb +71 -0
  21. data/lib/fog/azurerm/credentials.rb +40 -0
  22. data/lib/fog/azurerm/dns.rb +70 -0
  23. data/lib/fog/azurerm/docs/application_gateway.md +245 -0
  24. data/lib/fog/azurerm/docs/compute.md +499 -0
  25. data/lib/fog/azurerm/docs/dns.md +149 -0
  26. data/lib/fog/azurerm/docs/key_vault.md +91 -0
  27. data/lib/fog/azurerm/docs/network.md +1132 -0
  28. data/lib/fog/azurerm/docs/resources.md +178 -0
  29. data/lib/fog/azurerm/docs/sql.md +170 -0
  30. data/lib/fog/azurerm/docs/storage.md +398 -0
  31. data/lib/fog/azurerm/docs/structure.md +53 -0
  32. data/lib/fog/azurerm/docs/traffic_manager.md +161 -0
  33. data/lib/fog/azurerm/key_vault.rb +51 -0
  34. data/lib/fog/azurerm/models/application_gateway/backend_address_pool.rb +24 -0
  35. data/lib/fog/azurerm/models/application_gateway/backend_http_setting.rb +28 -0
  36. data/lib/fog/azurerm/models/application_gateway/frontend_ip_configuration.rb +26 -0
  37. data/lib/fog/azurerm/models/application_gateway/frontend_port.rb +20 -0
  38. data/lib/fog/azurerm/models/application_gateway/gateway.rb +617 -0
  39. data/lib/fog/azurerm/models/application_gateway/gateways.rb +30 -0
  40. data/lib/fog/azurerm/models/application_gateway/http_listener.rb +30 -0
  41. data/lib/fog/azurerm/models/application_gateway/ip_configuration.rb +26 -0
  42. data/lib/fog/azurerm/models/application_gateway/probe.rb +30 -0
  43. data/lib/fog/azurerm/models/application_gateway/request_routing_rule.rb +27 -0
  44. data/lib/fog/azurerm/models/application_gateway/ssl_certificate.rb +24 -0
  45. data/lib/fog/azurerm/models/application_gateway/url_path_map.rb +30 -0
  46. data/lib/fog/azurerm/models/compute/availability_set.rb +67 -0
  47. data/lib/fog/azurerm/models/compute/availability_sets.rb +35 -0
  48. data/lib/fog/azurerm/models/compute/caching_types.rb +13 -0
  49. data/lib/fog/azurerm/models/compute/creation_data.rb +23 -0
  50. data/lib/fog/azurerm/models/compute/data_disk.rb +26 -0
  51. data/lib/fog/azurerm/models/compute/disk_create_option.rb +16 -0
  52. data/lib/fog/azurerm/models/compute/disk_create_option_types.rb +13 -0
  53. data/lib/fog/azurerm/models/compute/encryption_settings.rb +29 -0
  54. data/lib/fog/azurerm/models/compute/image_disk_reference.rb +15 -0
  55. data/lib/fog/azurerm/models/compute/managed_disk.rb +77 -0
  56. data/lib/fog/azurerm/models/compute/managed_disks.rb +43 -0
  57. data/lib/fog/azurerm/models/compute/operation_status_response.rb +18 -0
  58. data/lib/fog/azurerm/models/compute/server.rb +268 -0
  59. data/lib/fog/azurerm/models/compute/servers.rb +47 -0
  60. data/lib/fog/azurerm/models/compute/virtual_machine_extension.rb +76 -0
  61. data/lib/fog/azurerm/models/compute/virtual_machine_extensions.rb +31 -0
  62. data/lib/fog/azurerm/models/dns/a_record.rb +15 -0
  63. data/lib/fog/azurerm/models/dns/cname_record.rb +15 -0
  64. data/lib/fog/azurerm/models/dns/record_set.rb +103 -0
  65. data/lib/fog/azurerm/models/dns/record_sets.rb +34 -0
  66. data/lib/fog/azurerm/models/dns/zone.rb +58 -0
  67. data/lib/fog/azurerm/models/dns/zones.rb +29 -0
  68. data/lib/fog/azurerm/models/key_vault/access_policy_entry.rb +27 -0
  69. data/lib/fog/azurerm/models/key_vault/vault.rb +78 -0
  70. data/lib/fog/azurerm/models/key_vault/vaults.rb +27 -0
  71. data/lib/fog/azurerm/models/network/express_route_circuit.rb +86 -0
  72. data/lib/fog/azurerm/models/network/express_route_circuit_authorization.rb +50 -0
  73. data/lib/fog/azurerm/models/network/express_route_circuit_authorizations.rb +28 -0
  74. data/lib/fog/azurerm/models/network/express_route_circuit_peering.rb +91 -0
  75. data/lib/fog/azurerm/models/network/express_route_circuit_peerings.rb +27 -0
  76. data/lib/fog/azurerm/models/network/express_route_circuits.rb +30 -0
  77. data/lib/fog/azurerm/models/network/express_route_service_provider.rb +29 -0
  78. data/lib/fog/azurerm/models/network/express_route_service_providers.rb +18 -0
  79. data/lib/fog/azurerm/models/network/frontend_ip_configuration.rb +27 -0
  80. data/lib/fog/azurerm/models/network/inbound_nat_pool.rb +26 -0
  81. data/lib/fog/azurerm/models/network/inbound_nat_rule.rb +26 -0
  82. data/lib/fog/azurerm/models/network/ipallocation_method.rb +12 -0
  83. data/lib/fog/azurerm/models/network/load_balancer.rb +249 -0
  84. data/lib/fog/azurerm/models/network/load_balancers.rb +36 -0
  85. data/lib/fog/azurerm/models/network/load_balancing_rule.rb +37 -0
  86. data/lib/fog/azurerm/models/network/local_network_gateway.rb +62 -0
  87. data/lib/fog/azurerm/models/network/local_network_gateways.rb +27 -0
  88. data/lib/fog/azurerm/models/network/network_interface.rb +121 -0
  89. data/lib/fog/azurerm/models/network/network_interfaces.rb +30 -0
  90. data/lib/fog/azurerm/models/network/network_security_group.rb +114 -0
  91. data/lib/fog/azurerm/models/network/network_security_groups.rb +30 -0
  92. data/lib/fog/azurerm/models/network/network_security_rule.rb +66 -0
  93. data/lib/fog/azurerm/models/network/network_security_rules.rb +31 -0
  94. data/lib/fog/azurerm/models/network/path_rule.rb +30 -0
  95. data/lib/fog/azurerm/models/network/probe.rb +28 -0
  96. data/lib/fog/azurerm/models/network/public_ip.rb +70 -0
  97. data/lib/fog/azurerm/models/network/public_ips.rb +30 -0
  98. data/lib/fog/azurerm/models/network/security_rule_access.rb +12 -0
  99. data/lib/fog/azurerm/models/network/security_rule_direction.rb +12 -0
  100. data/lib/fog/azurerm/models/network/security_rule_protocol.rb +13 -0
  101. data/lib/fog/azurerm/models/network/subnet.rb +66 -0
  102. data/lib/fog/azurerm/models/network/subnets.rb +31 -0
  103. data/lib/fog/azurerm/models/network/virtual_network.rb +109 -0
  104. data/lib/fog/azurerm/models/network/virtual_network_gateway.rb +137 -0
  105. data/lib/fog/azurerm/models/network/virtual_network_gateway_connection.rb +76 -0
  106. data/lib/fog/azurerm/models/network/virtual_network_gateway_connections.rb +27 -0
  107. data/lib/fog/azurerm/models/network/virtual_network_gateways.rb +30 -0
  108. data/lib/fog/azurerm/models/network/virtual_networks.rb +36 -0
  109. data/lib/fog/azurerm/models/network/vpn_client_configuration.rb +34 -0
  110. data/lib/fog/azurerm/models/network/vpn_client_revoked_certificates.rb +22 -0
  111. data/lib/fog/azurerm/models/network/vpn_client_root_certificates.rb +22 -0
  112. data/lib/fog/azurerm/models/resources/azure_resource.rb +25 -0
  113. data/lib/fog/azurerm/models/resources/azure_resources.rb +32 -0
  114. data/lib/fog/azurerm/models/resources/dependency.rb +27 -0
  115. data/lib/fog/azurerm/models/resources/deployment.rb +65 -0
  116. data/lib/fog/azurerm/models/resources/deployments.rb +30 -0
  117. data/lib/fog/azurerm/models/resources/provider.rb +27 -0
  118. data/lib/fog/azurerm/models/resources/provider_resource_type.rb +22 -0
  119. data/lib/fog/azurerm/models/resources/resource_group.rb +34 -0
  120. data/lib/fog/azurerm/models/resources/resource_groups.rb +29 -0
  121. data/lib/fog/azurerm/models/sql/firewall_rule.rb +48 -0
  122. data/lib/fog/azurerm/models/sql/firewall_rules.rb +32 -0
  123. data/lib/fog/azurerm/models/sql/sql_database.rb +67 -0
  124. data/lib/fog/azurerm/models/sql/sql_databases.rb +32 -0
  125. data/lib/fog/azurerm/models/sql/sql_server.rb +50 -0
  126. data/lib/fog/azurerm/models/sql/sql_servers.rb +31 -0
  127. data/lib/fog/azurerm/models/storage/directories.rb +75 -0
  128. data/lib/fog/azurerm/models/storage/directory.rb +151 -0
  129. data/lib/fog/azurerm/models/storage/file.rb +263 -0
  130. data/lib/fog/azurerm/models/storage/files.rb +183 -0
  131. data/lib/fog/azurerm/models/storage/kind.rb +12 -0
  132. data/lib/fog/azurerm/models/storage/sku_name.rb +15 -0
  133. data/lib/fog/azurerm/models/storage/sku_tier.rb +12 -0
  134. data/lib/fog/azurerm/models/storage/storage_account.rb +92 -0
  135. data/lib/fog/azurerm/models/storage/storage_accounts.rb +47 -0
  136. data/lib/fog/azurerm/models/traffic_manager/traffic_manager_end_point.rb +82 -0
  137. data/lib/fog/azurerm/models/traffic_manager/traffic_manager_end_points.rb +30 -0
  138. data/lib/fog/azurerm/models/traffic_manager/traffic_manager_profile.rb +90 -0
  139. data/lib/fog/azurerm/models/traffic_manager/traffic_manager_profiles.rb +27 -0
  140. data/lib/fog/azurerm/network.rb +178 -0
  141. data/lib/fog/azurerm/requests/application_gateway/check_ag_exists.rb +31 -0
  142. data/lib/fog/azurerm/requests/application_gateway/create_or_update_application_gateway.rb +302 -0
  143. data/lib/fog/azurerm/requests/application_gateway/delete_application_gateway.rb +26 -0
  144. data/lib/fog/azurerm/requests/application_gateway/get_application_gateway.rb +159 -0
  145. data/lib/fog/azurerm/requests/application_gateway/list_application_gateways.rb +29 -0
  146. data/lib/fog/azurerm/requests/application_gateway/start_application_gateway.rb +27 -0
  147. data/lib/fog/azurerm/requests/application_gateway/stop_application_gateway.rb +27 -0
  148. data/lib/fog/azurerm/requests/application_gateway/update_sku_attributes.rb +28 -0
  149. data/lib/fog/azurerm/requests/application_gateway/update_subnet_id_in_gateway_ip_configuration.rb +29 -0
  150. data/lib/fog/azurerm/requests/compute/attach_data_disk_to_vm.rb +208 -0
  151. data/lib/fog/azurerm/requests/compute/check_availability_set_exists.rb +31 -0
  152. data/lib/fog/azurerm/requests/compute/check_managed_disk_exists.rb +33 -0
  153. data/lib/fog/azurerm/requests/compute/check_vm_exists.rb +39 -0
  154. data/lib/fog/azurerm/requests/compute/check_vm_extension_exists.rb +31 -0
  155. data/lib/fog/azurerm/requests/compute/check_vm_status.rb +38 -0
  156. data/lib/fog/azurerm/requests/compute/create_availability_set.rb +64 -0
  157. data/lib/fog/azurerm/requests/compute/create_image.rb +68 -0
  158. data/lib/fog/azurerm/requests/compute/create_or_update_managed_disk.rb +121 -0
  159. data/lib/fog/azurerm/requests/compute/create_or_update_vm_extension.rb +63 -0
  160. data/lib/fog/azurerm/requests/compute/create_virtual_machine.rb +403 -0
  161. data/lib/fog/azurerm/requests/compute/deallocate_virtual_machine.rb +35 -0
  162. data/lib/fog/azurerm/requests/compute/delete_availability_set.rb +27 -0
  163. data/lib/fog/azurerm/requests/compute/delete_image.rb +29 -0
  164. data/lib/fog/azurerm/requests/compute/delete_managed_disk.rb +29 -0
  165. data/lib/fog/azurerm/requests/compute/delete_virtual_machine.rb +35 -0
  166. data/lib/fog/azurerm/requests/compute/delete_vm_extension.rb +28 -0
  167. data/lib/fog/azurerm/requests/compute/detach_data_disk_from_vm.rb +102 -0
  168. data/lib/fog/azurerm/requests/compute/generalize_virtual_machine.rb +35 -0
  169. data/lib/fog/azurerm/requests/compute/get_availability_set.rb +32 -0
  170. data/lib/fog/azurerm/requests/compute/get_image.rb +45 -0
  171. data/lib/fog/azurerm/requests/compute/get_managed_disk.rb +64 -0
  172. data/lib/fog/azurerm/requests/compute/get_virtual_machine.rb +88 -0
  173. data/lib/fog/azurerm/requests/compute/get_vm_extension.rb +46 -0
  174. data/lib/fog/azurerm/requests/compute/grant_access_to_managed_disk.rb +30 -0
  175. data/lib/fog/azurerm/requests/compute/list_availability_sets.rb +40 -0
  176. data/lib/fog/azurerm/requests/compute/list_available_sizes_for_virtual_machine.rb +64 -0
  177. data/lib/fog/azurerm/requests/compute/list_managed_disks_by_rg.rb +66 -0
  178. data/lib/fog/azurerm/requests/compute/list_managed_disks_in_subscription.rb +66 -0
  179. data/lib/fog/azurerm/requests/compute/list_virtual_machines.rb +69 -0
  180. data/lib/fog/azurerm/requests/compute/power_off_virtual_machine.rb +35 -0
  181. data/lib/fog/azurerm/requests/compute/redeploy_virtual_machine.rb +35 -0
  182. data/lib/fog/azurerm/requests/compute/restart_virtual_machine.rb +35 -0
  183. data/lib/fog/azurerm/requests/compute/revoke_access_to_managed_disk.rb +33 -0
  184. data/lib/fog/azurerm/requests/compute/start_virtual_machine.rb +35 -0
  185. data/lib/fog/azurerm/requests/dns/check_record_set_exists.rb +31 -0
  186. data/lib/fog/azurerm/requests/dns/check_zone_exists.rb +34 -0
  187. data/lib/fog/azurerm/requests/dns/create_or_update_record_set.rb +72 -0
  188. data/lib/fog/azurerm/requests/dns/create_or_update_zone.rb +56 -0
  189. data/lib/fog/azurerm/requests/dns/delete_record_set.rb +28 -0
  190. data/lib/fog/azurerm/requests/dns/delete_zone.rb +28 -0
  191. data/lib/fog/azurerm/requests/dns/get_record_set.rb +47 -0
  192. data/lib/fog/azurerm/requests/dns/get_records_from_record_set.rb +32 -0
  193. data/lib/fog/azurerm/requests/dns/get_zone.rb +41 -0
  194. data/lib/fog/azurerm/requests/dns/list_record_sets.rb +63 -0
  195. data/lib/fog/azurerm/requests/dns/list_zones.rb +72 -0
  196. data/lib/fog/azurerm/requests/key_vault/check_vault_exists.rb +31 -0
  197. data/lib/fog/azurerm/requests/key_vault/create_or_update_vault.rb +106 -0
  198. data/lib/fog/azurerm/requests/key_vault/delete_vault.rb +28 -0
  199. data/lib/fog/azurerm/requests/key_vault/get_vault.rb +54 -0
  200. data/lib/fog/azurerm/requests/key_vault/list_vaults.rb +56 -0
  201. data/lib/fog/azurerm/requests/network/add_address_prefixes_in_virtual_network.rb +68 -0
  202. data/lib/fog/azurerm/requests/network/add_dns_servers_in_virtual_network.rb +76 -0
  203. data/lib/fog/azurerm/requests/network/add_security_rules.rb +154 -0
  204. data/lib/fog/azurerm/requests/network/add_subnets_in_virtual_network.rb +71 -0
  205. data/lib/fog/azurerm/requests/network/attach_network_security_group_to_subnet.rb +57 -0
  206. data/lib/fog/azurerm/requests/network/attach_resource_to_nic.rb +89 -0
  207. data/lib/fog/azurerm/requests/network/attach_route_table_to_subnet.rb +57 -0
  208. data/lib/fog/azurerm/requests/network/check_express_route_cir_auth_exists.rb +31 -0
  209. data/lib/fog/azurerm/requests/network/check_express_route_circuit_exists.rb +31 -0
  210. data/lib/fog/azurerm/requests/network/check_load_balancer_exists.rb +31 -0
  211. data/lib/fog/azurerm/requests/network/check_local_net_gateway_exists.rb +31 -0
  212. data/lib/fog/azurerm/requests/network/check_net_sec_group_exists.rb +31 -0
  213. data/lib/fog/azurerm/requests/network/check_net_sec_rule_exists.rb +31 -0
  214. data/lib/fog/azurerm/requests/network/check_network_interface_exists.rb +31 -0
  215. data/lib/fog/azurerm/requests/network/check_public_ip_exists.rb +33 -0
  216. data/lib/fog/azurerm/requests/network/check_subnet_exists.rb +32 -0
  217. data/lib/fog/azurerm/requests/network/check_virtual_network_exists.rb +33 -0
  218. data/lib/fog/azurerm/requests/network/check_vnet_gateway_connection_exists.rb +32 -0
  219. data/lib/fog/azurerm/requests/network/check_vnet_gateway_exists.rb +32 -0
  220. data/lib/fog/azurerm/requests/network/create_load_balancer.rb +189 -0
  221. data/lib/fog/azurerm/requests/network/create_or_update_express_route_circuit.rb +111 -0
  222. data/lib/fog/azurerm/requests/network/create_or_update_express_route_circuit_authorization.rb +51 -0
  223. data/lib/fog/azurerm/requests/network/create_or_update_express_route_circuit_peering.rb +79 -0
  224. data/lib/fog/azurerm/requests/network/create_or_update_local_network_gateway.rb +79 -0
  225. data/lib/fog/azurerm/requests/network/create_or_update_network_interface.rb +121 -0
  226. data/lib/fog/azurerm/requests/network/create_or_update_network_security_group.rb +178 -0
  227. data/lib/fog/azurerm/requests/network/create_or_update_network_security_rule.rb +59 -0
  228. data/lib/fog/azurerm/requests/network/create_or_update_public_ip.rb +61 -0
  229. data/lib/fog/azurerm/requests/network/create_or_update_virtual_network.rb +111 -0
  230. data/lib/fog/azurerm/requests/network/create_or_update_virtual_network_gateway.rb +159 -0
  231. data/lib/fog/azurerm/requests/network/create_or_update_virtual_network_gateway_connection.rb +83 -0
  232. data/lib/fog/azurerm/requests/network/create_subnet.rb +54 -0
  233. data/lib/fog/azurerm/requests/network/delete_express_route_circuit.rb +28 -0
  234. data/lib/fog/azurerm/requests/network/delete_express_route_circuit_authorization.rb +29 -0
  235. data/lib/fog/azurerm/requests/network/delete_express_route_circuit_peering.rb +28 -0
  236. data/lib/fog/azurerm/requests/network/delete_load_balancer.rb +28 -0
  237. data/lib/fog/azurerm/requests/network/delete_local_network_gateway.rb +29 -0
  238. data/lib/fog/azurerm/requests/network/delete_network_interface.rb +28 -0
  239. data/lib/fog/azurerm/requests/network/delete_network_security_group.rb +30 -0
  240. data/lib/fog/azurerm/requests/network/delete_network_security_rule.rb +30 -0
  241. data/lib/fog/azurerm/requests/network/delete_public_ip.rb +27 -0
  242. data/lib/fog/azurerm/requests/network/delete_subnet.rb +28 -0
  243. data/lib/fog/azurerm/requests/network/delete_virtual_network.rb +28 -0
  244. data/lib/fog/azurerm/requests/network/delete_virtual_network_gateway.rb +28 -0
  245. data/lib/fog/azurerm/requests/network/delete_virtual_network_gateway_connection.rb +29 -0
  246. data/lib/fog/azurerm/requests/network/detach_network_security_group_from_subnet.rb +51 -0
  247. data/lib/fog/azurerm/requests/network/detach_resource_from_nic.rb +81 -0
  248. data/lib/fog/azurerm/requests/network/detach_route_table_from_subnet.rb +51 -0
  249. data/lib/fog/azurerm/requests/network/get_available_ipaddresses_count.rb +23 -0
  250. data/lib/fog/azurerm/requests/network/get_connection_shared_key.rb +25 -0
  251. data/lib/fog/azurerm/requests/network/get_express_route_circuit.rb +51 -0
  252. data/lib/fog/azurerm/requests/network/get_express_route_circuit_authorization.rb +35 -0
  253. data/lib/fog/azurerm/requests/network/get_express_route_circuit_peering.rb +48 -0
  254. data/lib/fog/azurerm/requests/network/get_load_balancer.rb +170 -0
  255. data/lib/fog/azurerm/requests/network/get_local_network_gateway.rb +47 -0
  256. data/lib/fog/azurerm/requests/network/get_network_interface.rb +60 -0
  257. data/lib/fog/azurerm/requests/network/get_network_security_group.rb +165 -0
  258. data/lib/fog/azurerm/requests/network/get_network_security_rule.rb +47 -0
  259. data/lib/fog/azurerm/requests/network/get_public_ip.rb +41 -0
  260. data/lib/fog/azurerm/requests/network/get_subnet.rb +37 -0
  261. data/lib/fog/azurerm/requests/network/get_virtual_network.rb +62 -0
  262. data/lib/fog/azurerm/requests/network/get_virtual_network_gateway.rb +45 -0
  263. data/lib/fog/azurerm/requests/network/get_virtual_network_gateway_connection.rb +47 -0
  264. data/lib/fog/azurerm/requests/network/list_express_route_circuit_authorizations.rb +37 -0
  265. data/lib/fog/azurerm/requests/network/list_express_route_circuit_peerings.rb +44 -0
  266. data/lib/fog/azurerm/requests/network/list_express_route_circuits.rb +53 -0
  267. data/lib/fog/azurerm/requests/network/list_express_route_service_providers.rb +37 -0
  268. data/lib/fog/azurerm/requests/network/list_load_balancers.rb +31 -0
  269. data/lib/fog/azurerm/requests/network/list_load_balancers_in_subscription.rb +31 -0
  270. data/lib/fog/azurerm/requests/network/list_local_network_gateways.rb +50 -0
  271. data/lib/fog/azurerm/requests/network/list_network_interfaces.rb +67 -0
  272. data/lib/fog/azurerm/requests/network/list_network_security_groups.rb +169 -0
  273. data/lib/fog/azurerm/requests/network/list_network_security_rules.rb +51 -0
  274. data/lib/fog/azurerm/requests/network/list_public_ips.rb +46 -0
  275. data/lib/fog/azurerm/requests/network/list_subnets.rb +55 -0
  276. data/lib/fog/azurerm/requests/network/list_virtual_network_gateway_connections.rb +50 -0
  277. data/lib/fog/azurerm/requests/network/list_virtual_network_gateways.rb +43 -0
  278. data/lib/fog/azurerm/requests/network/list_virtual_networks.rb +74 -0
  279. data/lib/fog/azurerm/requests/network/list_virtual_networks_in_subscription.rb +74 -0
  280. data/lib/fog/azurerm/requests/network/remove_address_prefixes_from_virtual_network.rb +69 -0
  281. data/lib/fog/azurerm/requests/network/remove_dns_servers_from_virtual_network.rb +69 -0
  282. data/lib/fog/azurerm/requests/network/remove_security_rule.rb +157 -0
  283. data/lib/fog/azurerm/requests/network/remove_subnets_from_virtual_network.rb +59 -0
  284. data/lib/fog/azurerm/requests/network/reset_connection_shared_key.rb +36 -0
  285. data/lib/fog/azurerm/requests/network/set_connection_shared_key.rb +36 -0
  286. data/lib/fog/azurerm/requests/resources/check_azure_resource_exists.rb +40 -0
  287. data/lib/fog/azurerm/requests/resources/check_deployment_exists.rb +30 -0
  288. data/lib/fog/azurerm/requests/resources/check_resource_group_exists.rb +30 -0
  289. data/lib/fog/azurerm/requests/resources/create_deployment.rb +97 -0
  290. data/lib/fog/azurerm/requests/resources/create_resource_group.rb +40 -0
  291. data/lib/fog/azurerm/requests/resources/delete_deployment.rb +28 -0
  292. data/lib/fog/azurerm/requests/resources/delete_resource_group.rb +28 -0
  293. data/lib/fog/azurerm/requests/resources/delete_resource_tag.rb +44 -0
  294. data/lib/fog/azurerm/requests/resources/get_deployment.rb +81 -0
  295. data/lib/fog/azurerm/requests/resources/get_resource_group.rb +47 -0
  296. data/lib/fog/azurerm/requests/resources/list_deployments.rb +77 -0
  297. data/lib/fog/azurerm/requests/resources/list_resource_groups.rb +51 -0
  298. data/lib/fog/azurerm/requests/resources/list_tagged_resources.rb +50 -0
  299. data/lib/fog/azurerm/requests/resources/tag_resource.rb +43 -0
  300. data/lib/fog/azurerm/requests/sql/check_database_exists.rb +21 -0
  301. data/lib/fog/azurerm/requests/sql/check_firewall_rule_exists.rb +21 -0
  302. data/lib/fog/azurerm/requests/sql/check_sql_server_exists.rb +21 -0
  303. data/lib/fog/azurerm/requests/sql/create_or_update_database.rb +71 -0
  304. data/lib/fog/azurerm/requests/sql/create_or_update_firewall_rule.rb +42 -0
  305. data/lib/fog/azurerm/requests/sql/create_or_update_sql_server.rb +53 -0
  306. data/lib/fog/azurerm/requests/sql/delete_database.rb +28 -0
  307. data/lib/fog/azurerm/requests/sql/delete_firewall_rule.rb +29 -0
  308. data/lib/fog/azurerm/requests/sql/delete_sql_server.rb +29 -0
  309. data/lib/fog/azurerm/requests/sql/get_database.rb +42 -0
  310. data/lib/fog/azurerm/requests/sql/get_firewall_rule.rb +37 -0
  311. data/lib/fog/azurerm/requests/sql/get_sql_server.rb +34 -0
  312. data/lib/fog/azurerm/requests/sql/list_databases.rb +58 -0
  313. data/lib/fog/azurerm/requests/sql/list_firewall_rules.rb +49 -0
  314. data/lib/fog/azurerm/requests/sql/list_sql_servers.rb +44 -0
  315. data/lib/fog/azurerm/requests/storage/acquire_blob_lease.rb +32 -0
  316. data/lib/fog/azurerm/requests/storage/acquire_container_lease.rb +32 -0
  317. data/lib/fog/azurerm/requests/storage/check_container_exists.rb +30 -0
  318. data/lib/fog/azurerm/requests/storage/check_storage_account_exists.rb +37 -0
  319. data/lib/fog/azurerm/requests/storage/check_storage_account_name_availability.rb +44 -0
  320. data/lib/fog/azurerm/requests/storage/commit_blob_blocks.rb +30 -0
  321. data/lib/fog/azurerm/requests/storage/compare_container_blobs.rb +148 -0
  322. data/lib/fog/azurerm/requests/storage/copy_blob.rb +30 -0
  323. data/lib/fog/azurerm/requests/storage/copy_blob_from_uri.rb +30 -0
  324. data/lib/fog/azurerm/requests/storage/create_block_blob.rb +108 -0
  325. data/lib/fog/azurerm/requests/storage/create_container.rb +40 -0
  326. data/lib/fog/azurerm/requests/storage/create_disk.rb +62 -0
  327. data/lib/fog/azurerm/requests/storage/create_page_blob.rb +31 -0
  328. data/lib/fog/azurerm/requests/storage/create_storage_account.rb +66 -0
  329. data/lib/fog/azurerm/requests/storage/delete_blob.rb +32 -0
  330. data/lib/fog/azurerm/requests/storage/delete_container.rb +31 -0
  331. data/lib/fog/azurerm/requests/storage/delete_disk.rb +36 -0
  332. data/lib/fog/azurerm/requests/storage/delete_storage_account.rb +27 -0
  333. data/lib/fog/azurerm/requests/storage/get_blob.rb +163 -0
  334. data/lib/fog/azurerm/requests/storage/get_blob_http_url.rb +39 -0
  335. data/lib/fog/azurerm/requests/storage/get_blob_https_url.rb +39 -0
  336. data/lib/fog/azurerm/requests/storage/get_blob_properties.rb +55 -0
  337. data/lib/fog/azurerm/requests/storage/get_blob_url.rb +28 -0
  338. data/lib/fog/azurerm/requests/storage/get_container_acl.rb +30 -0
  339. data/lib/fog/azurerm/requests/storage/get_container_properties.rb +41 -0
  340. data/lib/fog/azurerm/requests/storage/get_container_url.rb +34 -0
  341. data/lib/fog/azurerm/requests/storage/get_storage_access_keys.rb +32 -0
  342. data/lib/fog/azurerm/requests/storage/get_storage_account.rb +36 -0
  343. data/lib/fog/azurerm/requests/storage/list_blobs.rb +168 -0
  344. data/lib/fog/azurerm/requests/storage/list_containers.rb +73 -0
  345. data/lib/fog/azurerm/requests/storage/list_storage_account_for_rg.rb +49 -0
  346. data/lib/fog/azurerm/requests/storage/list_storage_accounts.rb +49 -0
  347. data/lib/fog/azurerm/requests/storage/multipart_save_block_blob.rb +110 -0
  348. data/lib/fog/azurerm/requests/storage/put_blob_block.rb +30 -0
  349. data/lib/fog/azurerm/requests/storage/put_blob_metadata.rb +31 -0
  350. data/lib/fog/azurerm/requests/storage/put_blob_pages.rb +30 -0
  351. data/lib/fog/azurerm/requests/storage/put_blob_properties.rb +31 -0
  352. data/lib/fog/azurerm/requests/storage/put_container_acl.rb +31 -0
  353. data/lib/fog/azurerm/requests/storage/put_container_metadata.rb +31 -0
  354. data/lib/fog/azurerm/requests/storage/release_blob_lease.rb +30 -0
  355. data/lib/fog/azurerm/requests/storage/release_container_lease.rb +30 -0
  356. data/lib/fog/azurerm/requests/storage/save_page_blob.rb +111 -0
  357. data/lib/fog/azurerm/requests/storage/update_storage_account.rb +59 -0
  358. data/lib/fog/azurerm/requests/storage/wait_blob_copy_operation_to_finish.rb +56 -0
  359. data/lib/fog/azurerm/requests/traffic_manager/check_traffic_manager_endpoint_exists.rb +31 -0
  360. data/lib/fog/azurerm/requests/traffic_manager/check_traffic_manager_profile_exists.rb +31 -0
  361. data/lib/fog/azurerm/requests/traffic_manager/create_or_update_traffic_manager_endpoint.rb +54 -0
  362. data/lib/fog/azurerm/requests/traffic_manager/create_or_update_traffic_manager_profile.rb +130 -0
  363. data/lib/fog/azurerm/requests/traffic_manager/delete_traffic_manager_endpoint.rb +28 -0
  364. data/lib/fog/azurerm/requests/traffic_manager/delete_traffic_manager_profile.rb +26 -0
  365. data/lib/fog/azurerm/requests/traffic_manager/get_traffic_manager_endpoint.rb +39 -0
  366. data/lib/fog/azurerm/requests/traffic_manager/get_traffic_manager_profile.rb +80 -0
  367. data/lib/fog/azurerm/requests/traffic_manager/list_traffic_manager_profiles.rb +82 -0
  368. data/lib/fog/azurerm/resources.rb +71 -0
  369. data/lib/fog/azurerm/sql.rb +66 -0
  370. data/lib/fog/azurerm/storage.rb +136 -0
  371. data/lib/fog/azurerm/traffic_manager.rb +62 -0
  372. data/lib/fog/azurerm/utilities/general.rb +179 -0
  373. data/lib/fog/azurerm/utilities/logger_messages.yml +19 -0
  374. data/lib/fog/azurerm/version.rb +5 -0
  375. data/rake-script.sh +10 -0
  376. data/rakefile +29 -0
  377. data/test/api_stub.rb +145 -0
  378. data/test/api_stub/models/application_gateway/gateway.rb +165 -0
  379. data/test/api_stub/models/compute/availability_set.rb +69 -0
  380. data/test/api_stub/models/compute/managed_disk.rb +59 -0
  381. data/test/api_stub/models/compute/server.rb +268 -0
  382. data/test/api_stub/models/compute/virtual_machine_extension.rb +31 -0
  383. data/test/api_stub/models/dns/record_set.rb +57 -0
  384. data/test/api_stub/models/dns/zone.rb +29 -0
  385. data/test/api_stub/models/key_vault/vault.rb +39 -0
  386. data/test/api_stub/models/network/express_route_circuit.rb +47 -0
  387. data/test/api_stub/models/network/express_route_circuit_authorization.rb +22 -0
  388. data/test/api_stub/models/network/express_route_circuit_peering.rb +33 -0
  389. data/test/api_stub/models/network/express_route_service_provider.rb +29 -0
  390. data/test/api_stub/models/network/load_balancer.rb +154 -0
  391. data/test/api_stub/models/network/local_network_gateway.rb +31 -0
  392. data/test/api_stub/models/network/network_interface.rb +72 -0
  393. data/test/api_stub/models/network/network_security_group.rb +95 -0
  394. data/test/api_stub/models/network/network_security_rule.rb +30 -0
  395. data/test/api_stub/models/network/public_ip.rb +36 -0
  396. data/test/api_stub/models/network/subnet.rb +36 -0
  397. data/test/api_stub/models/network/virtual_network.rb +62 -0
  398. data/test/api_stub/models/network/virtual_network_gateway.rb +26 -0
  399. data/test/api_stub/models/network/virtual_network_gateway_connection.rb +31 -0
  400. data/test/api_stub/models/resources/deployment.rb +116 -0
  401. data/test/api_stub/models/resources/resource.rb +43 -0
  402. data/test/api_stub/models/resources/resource_group.rb +24 -0
  403. data/test/api_stub/models/sql/sql_database.rb +30 -0
  404. data/test/api_stub/models/sql/sql_firewall_rule.rb +24 -0
  405. data/test/api_stub/models/sql/sql_server.rb +24 -0
  406. data/test/api_stub/models/storage/directory.rb +178 -0
  407. data/test/api_stub/models/storage/file.rb +181 -0
  408. data/test/api_stub/models/storage/storageaccount.rb +22 -0
  409. data/test/api_stub/models/traffic_manager/traffic_manager_end_point.rb +27 -0
  410. data/test/api_stub/models/traffic_manager/traffic_manager_profile.rb +75 -0
  411. data/test/api_stub/requests/application_gateway/gateway.rb +461 -0
  412. data/test/api_stub/requests/compute/availability_set.rb +114 -0
  413. data/test/api_stub/requests/compute/image.rb +41 -0
  414. data/test/api_stub/requests/compute/managed_disk.rb +102 -0
  415. data/test/api_stub/requests/compute/virtual_machine.rb +1018 -0
  416. data/test/api_stub/requests/compute/virtual_machine_extension.rb +46 -0
  417. data/test/api_stub/requests/dns/record_set.rb +75 -0
  418. data/test/api_stub/requests/dns/zone.rb +52 -0
  419. data/test/api_stub/requests/key_vault/vault.rb +95 -0
  420. data/test/api_stub/requests/network/express_route_circuit.rb +100 -0
  421. data/test/api_stub/requests/network/express_route_circuit_authorization.rb +31 -0
  422. data/test/api_stub/requests/network/express_route_circuit_peering.rb +62 -0
  423. data/test/api_stub/requests/network/express_route_service_provider.rb +30 -0
  424. data/test/api_stub/requests/network/load_balancer.rb +388 -0
  425. data/test/api_stub/requests/network/local_network_gateway.rb +62 -0
  426. data/test/api_stub/requests/network/network_interface.rb +264 -0
  427. data/test/api_stub/requests/network/network_security_group.rb +225 -0
  428. data/test/api_stub/requests/network/network_security_rule.rb +72 -0
  429. data/test/api_stub/requests/network/public_ip.rb +71 -0
  430. data/test/api_stub/requests/network/subnet.rb +71 -0
  431. data/test/api_stub/requests/network/virtual_network.rb +125 -0
  432. data/test/api_stub/requests/network/virtual_network_gateway.rb +49 -0
  433. data/test/api_stub/requests/network/virtual_network_gateway_connection.rb +68 -0
  434. data/test/api_stub/requests/resources/deployment.rb +68 -0
  435. data/test/api_stub/requests/resources/resource.rb +45 -0
  436. data/test/api_stub/requests/resources/resource_group.rb +51 -0
  437. data/test/api_stub/requests/sql/database.rb +71 -0
  438. data/test/api_stub/requests/sql/firewall_rule.rb +50 -0
  439. data/test/api_stub/requests/sql/sql_server.rb +49 -0
  440. data/test/api_stub/requests/storage/directory.rb +89 -0
  441. data/test/api_stub/requests/storage/file.rb +243 -0
  442. data/test/api_stub/requests/storage/storageaccount.rb +126 -0
  443. data/test/api_stub/requests/traffic_manager/traffic_manager_endpoint.rb +41 -0
  444. data/test/api_stub/requests/traffic_manager/traffic_manager_profile.rb +166 -0
  445. data/test/integration/README.md +14 -0
  446. data/test/integration/application_gateway.rb +260 -0
  447. data/test/integration/availability_set.rb +184 -0
  448. data/test/integration/blob.rb +297 -0
  449. data/test/integration/container.rb +160 -0
  450. data/test/integration/credentials/azure.yml +5 -0
  451. data/test/integration/data_disk.rb +90 -0
  452. data/test/integration/deployment.rb +78 -0
  453. data/test/integration/express_route_circuit.rb +139 -0
  454. data/test/integration/external_load_balancer.rb +156 -0
  455. data/test/integration/internal_load_balancer.rb +145 -0
  456. data/test/integration/key_vault.rb +99 -0
  457. data/test/integration/local_network_gateway.rb +91 -0
  458. data/test/integration/managed_disk.rb +118 -0
  459. data/test/integration/network_interface.rb +157 -0
  460. data/test/integration/network_security_group.rb +134 -0
  461. data/test/integration/network_security_rule.rb +102 -0
  462. data/test/integration/public_ip.rb +84 -0
  463. data/test/integration/record_set.rb +126 -0
  464. data/test/integration/resource_group.rb +62 -0
  465. data/test/integration/resource_tag.rb +93 -0
  466. data/test/integration/server.rb +356 -0
  467. data/test/integration/server_custom_image.rb +227 -0
  468. data/test/integration/sql_server.rb +183 -0
  469. data/test/integration/storage_account.rb +135 -0
  470. data/test/integration/subnet.rb +122 -0
  471. data/test/integration/traffic_manager.rb +142 -0
  472. data/test/integration/virtual_machine_extension.rb +165 -0
  473. data/test/integration/virtual_network.rb +163 -0
  474. data/test/integration/virtual_network_gateway.rb +119 -0
  475. data/test/integration/virtual_network_gateway_connection.rb +221 -0
  476. data/test/integration/virtual_network_gateway_connection_to_express_route.rb +123 -0
  477. data/test/integration/zone.rb +81 -0
  478. data/test/models/application_gateway/test_gateway.rb +136 -0
  479. data/test/models/application_gateway/test_gateways.rb +55 -0
  480. data/test/models/compute/test_availability_set.rb +57 -0
  481. data/test/models/compute/test_availability_sets.rb +55 -0
  482. data/test/models/compute/test_data_disk.rb +23 -0
  483. data/test/models/compute/test_managed_disk.rb +62 -0
  484. data/test/models/compute/test_managed_disks.rb +68 -0
  485. data/test/models/compute/test_server.rb +236 -0
  486. data/test/models/compute/test_servers.rb +56 -0
  487. data/test/models/compute/test_virtual_machine_extension.rb +61 -0
  488. data/test/models/compute/test_virtual_machine_extensions.rb +49 -0
  489. data/test/models/dns/test_record_set.rb +86 -0
  490. data/test/models/dns/test_record_sets.rb +66 -0
  491. data/test/models/dns/test_zone.rb +51 -0
  492. data/test/models/dns/test_zones.rb +51 -0
  493. data/test/models/key_vault/test_vault.rb +40 -0
  494. data/test/models/key_vault/test_vaults.rb +55 -0
  495. data/test/models/network/test_express_route_circuit.rb +52 -0
  496. data/test/models/network/test_express_route_circuit_authorization.rb +50 -0
  497. data/test/models/network/test_express_route_circuit_authorizations.rb +56 -0
  498. data/test/models/network/test_express_route_circuit_peering.rb +53 -0
  499. data/test/models/network/test_express_route_circuit_peerings.rb +43 -0
  500. data/test/models/network/test_express_route_circuits.rb +55 -0
  501. data/test/models/network/test_express_route_service_providers.rb +30 -0
  502. data/test/models/network/test_load_balancer.rb +52 -0
  503. data/test/models/network/test_load_balancers.rb +55 -0
  504. data/test/models/network/test_local_network_gateway.rb +53 -0
  505. data/test/models/network/test_local_network_gateways.rb +55 -0
  506. data/test/models/network/test_network_interface.rb +97 -0
  507. data/test/models/network/test_network_interfaces.rb +55 -0
  508. data/test/models/network/test_network_security_group.rb +87 -0
  509. data/test/models/network/test_network_security_groups.rb +54 -0
  510. data/test/models/network/test_network_security_rule.rb +44 -0
  511. data/test/models/network/test_network_security_rules.rb +55 -0
  512. data/test/models/network/test_public_ip.rb +62 -0
  513. data/test/models/network/test_public_ips.rb +55 -0
  514. data/test/models/network/test_subnet.rb +83 -0
  515. data/test/models/network/test_subnets.rb +56 -0
  516. data/test/models/network/test_virtual_network.rb +107 -0
  517. data/test/models/network/test_virtual_network_gateway.rb +62 -0
  518. data/test/models/network/test_virtual_network_gateway_connection.rb +59 -0
  519. data/test/models/network/test_virtual_network_gateway_connections.rb +55 -0
  520. data/test/models/network/test_virtual_network_gateways.rb +55 -0
  521. data/test/models/network/test_virtual_networks.rb +67 -0
  522. data/test/models/resources/test_deployment.rb +55 -0
  523. data/test/models/resources/test_deployments.rb +51 -0
  524. data/test/models/resources/test_resource.rb +22 -0
  525. data/test/models/resources/test_resource_group.rb +45 -0
  526. data/test/models/resources/test_resource_groups.rb +51 -0
  527. data/test/models/resources/test_resources.rb +52 -0
  528. data/test/models/sql/test_database.rb +68 -0
  529. data/test/models/sql/test_databases.rb +42 -0
  530. data/test/models/sql/test_firewall_rule.rb +55 -0
  531. data/test/models/sql/test_firewall_rules.rb +42 -0
  532. data/test/models/sql/test_sql_server.rb +58 -0
  533. data/test/models/sql/test_sql_servers.rb +41 -0
  534. data/test/models/storage/test_directories.rb +74 -0
  535. data/test/models/storage/test_directory.rb +178 -0
  536. data/test/models/storage/test_file.rb +294 -0
  537. data/test/models/storage/test_files.rb +234 -0
  538. data/test/models/storage/test_storage_account.rb +89 -0
  539. data/test/models/storage/test_storage_accounts.rb +78 -0
  540. data/test/models/traffic_manager/test_traffic_manager_end_point.rb +54 -0
  541. data/test/models/traffic_manager/test_traffic_manager_end_points.rb +56 -0
  542. data/test/models/traffic_manager/test_traffic_manager_profile.rb +63 -0
  543. data/test/models/traffic_manager/test_traffic_manager_profiles.rb +55 -0
  544. data/test/requests/application_gateway/test_check_ag_exists.rb +38 -0
  545. data/test/requests/application_gateway/test_create_or_update_application_gateway.rb +35 -0
  546. data/test/requests/application_gateway/test_delete_application_gateway.rb +23 -0
  547. data/test/requests/application_gateway/test_get_application_gateway.rb +24 -0
  548. data/test/requests/application_gateway/test_list_application_gateways.rb +24 -0
  549. data/test/requests/application_gateway/test_start_application_gateway.rb +25 -0
  550. data/test/requests/application_gateway/test_stop_application_gateway.rb +25 -0
  551. data/test/requests/compute/test_attach_data_disk_to_vm.rb +105 -0
  552. data/test/requests/compute/test_check_availability_set_exists.rb +38 -0
  553. data/test/requests/compute/test_check_managed_disk_exists.rb +38 -0
  554. data/test/requests/compute/test_check_vm_exists.rb +38 -0
  555. data/test/requests/compute/test_check_vm_extension_exists.rb +38 -0
  556. data/test/requests/compute/test_create_availability_set.rb +112 -0
  557. data/test/requests/compute/test_create_image.rb +27 -0
  558. data/test/requests/compute/test_create_or_update_managed_disk.rb +38 -0
  559. data/test/requests/compute/test_create_virtual_machine.rb +90 -0
  560. data/test/requests/compute/test_create_vm_extension.rb +35 -0
  561. data/test/requests/compute/test_deallocate_virtual_machine.rb +32 -0
  562. data/test/requests/compute/test_delete_availability_set.rb +23 -0
  563. data/test/requests/compute/test_delete_image.rb +23 -0
  564. data/test/requests/compute/test_delete_managed_disk.rb +23 -0
  565. data/test/requests/compute/test_delete_virtual_machine.rb +32 -0
  566. data/test/requests/compute/test_detach_data_disk_from_vm.rb +32 -0
  567. data/test/requests/compute/test_generalize_virtual_machine.rb +32 -0
  568. data/test/requests/compute/test_get_availability_set.rb +24 -0
  569. data/test/requests/compute/test_get_image.rb +23 -0
  570. data/test/requests/compute/test_get_managed_disk.rb +24 -0
  571. data/test/requests/compute/test_get_virtual_machine.rb +24 -0
  572. data/test/requests/compute/test_get_vm_extension.rb +26 -0
  573. data/test/requests/compute/test_get_vm_status.rb +25 -0
  574. data/test/requests/compute/test_grant_access_to_managed_disk.rb +26 -0
  575. data/test/requests/compute/test_list_availability_sets.rb +24 -0
  576. data/test/requests/compute/test_list_available_sizes_for_virtual_machine.rb +33 -0
  577. data/test/requests/compute/test_list_managed_disks_by_rg.rb +24 -0
  578. data/test/requests/compute/test_list_managed_disks_in_subscription.rb +24 -0
  579. data/test/requests/compute/test_list_virtual_machines.rb +24 -0
  580. data/test/requests/compute/test_power_off_virtual_machine.rb +32 -0
  581. data/test/requests/compute/test_redeploy_virtual_machine.rb +33 -0
  582. data/test/requests/compute/test_restart_virtual_machine.rb +32 -0
  583. data/test/requests/compute/test_revoke_access_to_managed_disk.rb +24 -0
  584. data/test/requests/compute/test_start_virtual_machine.rb +32 -0
  585. data/test/requests/compute/test_update_vm_extension.rb +35 -0
  586. data/test/requests/dns/test_check_record_set_exists.rb +38 -0
  587. data/test/requests/dns/test_check_zone_exists.rb +49 -0
  588. data/test/requests/dns/test_create_record_set.rb +46 -0
  589. data/test/requests/dns/test_create_zone.rb +37 -0
  590. data/test/requests/dns/test_delete_record_set.rb +24 -0
  591. data/test/requests/dns/test_delete_zone.rb +24 -0
  592. data/test/requests/dns/test_get_record_set.rb +24 -0
  593. data/test/requests/dns/test_get_records_from_record_set.rb +42 -0
  594. data/test/requests/dns/test_get_zone.rb +35 -0
  595. data/test/requests/dns/test_list_record_sets.rb +35 -0
  596. data/test/requests/dns/test_list_zones.rb +26 -0
  597. data/test/requests/key_vault/test_check_vault_exists.rb +38 -0
  598. data/test/requests/key_vault/test_create_or_update_vault.rb +25 -0
  599. data/test/requests/key_vault/test_delete_vault.rb +23 -0
  600. data/test/requests/key_vault/test_get_vault.rb +24 -0
  601. data/test/requests/key_vault/test_list_vaults.rb +24 -0
  602. data/test/requests/network/test_add_address_prefixes_in_virtual_network.rb +29 -0
  603. data/test/requests/network/test_add_dns_servers_in_virtual_network.rb +29 -0
  604. data/test/requests/network/test_add_security_rules.rb +43 -0
  605. data/test/requests/network/test_add_subnets_in_virtual_network.rb +29 -0
  606. data/test/requests/network/test_attach_network_security_group_to_subnet.rb +26 -0
  607. data/test/requests/network/test_attach_resource_to_nic.rb +43 -0
  608. data/test/requests/network/test_attach_route_table_to_subnet.rb +26 -0
  609. data/test/requests/network/test_check_express_route_cir_auth_exists.rb +38 -0
  610. data/test/requests/network/test_check_express_route_circuit_exists.rb +38 -0
  611. data/test/requests/network/test_check_load_balancer_exists.rb +38 -0
  612. data/test/requests/network/test_check_local_net_gateway_exists.rb +38 -0
  613. data/test/requests/network/test_check_net_sec_group_exists.rb +38 -0
  614. data/test/requests/network/test_check_net_sec_rule_exists.rb +38 -0
  615. data/test/requests/network/test_check_network_interface_exists.rb +38 -0
  616. data/test/requests/network/test_check_public_ip_exists.rb +37 -0
  617. data/test/requests/network/test_check_subnet_exists.rb +38 -0
  618. data/test/requests/network/test_check_virtual_network_exists.rb +40 -0
  619. data/test/requests/network/test_check_vnet_gateway_connection_exists.rb +38 -0
  620. data/test/requests/network/test_check_vnet_gateway_exists.rb +38 -0
  621. data/test/requests/network/test_create_express_route_circuit.rb +39 -0
  622. data/test/requests/network/test_create_express_route_circuit_authorization.rb +35 -0
  623. data/test/requests/network/test_create_express_route_circuit_peering.rb +37 -0
  624. data/test/requests/network/test_create_load_balancer.rb +50 -0
  625. data/test/requests/network/test_create_local_network_gateway.rb +36 -0
  626. data/test/requests/network/test_create_network_interface.rb +43 -0
  627. data/test/requests/network/test_create_or_update_network_security_group.rb +39 -0
  628. data/test/requests/network/test_create_or_update_network_security_rule.rb +28 -0
  629. data/test/requests/network/test_create_or_update_virtual_network.rb +57 -0
  630. data/test/requests/network/test_create_public_ip.rb +36 -0
  631. data/test/requests/network/test_create_subnet.rb +35 -0
  632. data/test/requests/network/test_create_virtual_network_gateway.rb +37 -0
  633. data/test/requests/network/test_create_virtual_network_gateway_connection.rb +36 -0
  634. data/test/requests/network/test_delete_express_route_circuit.rb +24 -0
  635. data/test/requests/network/test_delete_express_route_circuit_authorization.rb +23 -0
  636. data/test/requests/network/test_delete_express_route_circuit_peering.rb +24 -0
  637. data/test/requests/network/test_delete_load_balancer.rb +24 -0
  638. data/test/requests/network/test_delete_local_network_gateway.rb +23 -0
  639. data/test/requests/network/test_delete_network_interface.rb +24 -0
  640. data/test/requests/network/test_delete_network_security_group.rb +25 -0
  641. data/test/requests/network/test_delete_network_security_rule.rb +25 -0
  642. data/test/requests/network/test_delete_public_ip.rb +24 -0
  643. data/test/requests/network/test_delete_subnet.rb +24 -0
  644. data/test/requests/network/test_delete_virtual_network.rb +24 -0
  645. data/test/requests/network/test_delete_virtual_network_gateway.rb +24 -0
  646. data/test/requests/network/test_delete_virtual_network_gateway_connection.rb +23 -0
  647. data/test/requests/network/test_detach_network_security_group_from_subnet.rb +26 -0
  648. data/test/requests/network/test_detach_resource_from_nic.rb +41 -0
  649. data/test/requests/network/test_detach_route_table_from_subnet.rb +26 -0
  650. data/test/requests/network/test_get_available_ipaddresses_count.rb +18 -0
  651. data/test/requests/network/test_get_connection_shared_key.rb +24 -0
  652. data/test/requests/network/test_get_express_route_circuit.rb +24 -0
  653. data/test/requests/network/test_get_express_route_circuit_authorization.rb +24 -0
  654. data/test/requests/network/test_get_express_route_circuit_peering.rb +24 -0
  655. data/test/requests/network/test_get_load_balancer.rb +24 -0
  656. data/test/requests/network/test_get_local_network_gateway.rb +24 -0
  657. data/test/requests/network/test_get_network_interface.rb +24 -0
  658. data/test/requests/network/test_get_network_security_group.rb +26 -0
  659. data/test/requests/network/test_get_network_security_rule.rb +26 -0
  660. data/test/requests/network/test_get_public_ip.rb +26 -0
  661. data/test/requests/network/test_get_subnet.rb +26 -0
  662. data/test/requests/network/test_get_virtual_network.rb +26 -0
  663. data/test/requests/network/test_get_virtual_network_gateway.rb +24 -0
  664. data/test/requests/network/test_get_virtual_network_gateway_connection.rb +24 -0
  665. data/test/requests/network/test_list_express_route_circuit_authorizations.rb +24 -0
  666. data/test/requests/network/test_list_express_route_circuit_peerings.rb +24 -0
  667. data/test/requests/network/test_list_express_route_circuits.rb +26 -0
  668. data/test/requests/network/test_list_express_route_service_providers.rb +24 -0
  669. data/test/requests/network/test_list_load_balancers.rb +24 -0
  670. data/test/requests/network/test_list_local_network_gateways.rb +24 -0
  671. data/test/requests/network/test_list_network_interfaces.rb +24 -0
  672. data/test/requests/network/test_list_network_security_groups.rb +26 -0
  673. data/test/requests/network/test_list_network_security_rules.rb +26 -0
  674. data/test/requests/network/test_list_public_ips.rb +24 -0
  675. data/test/requests/network/test_list_subnets.rb +24 -0
  676. data/test/requests/network/test_list_virtual_network_gateway_connections.rb +24 -0
  677. data/test/requests/network/test_list_virtual_network_gateways.rb +24 -0
  678. data/test/requests/network/test_list_virtual_networks.rb +24 -0
  679. data/test/requests/network/test_list_virtual_networks_in_subscription.rb +24 -0
  680. data/test/requests/network/test_remove_address_prefixes_from_virtual_network.rb +29 -0
  681. data/test/requests/network/test_remove_dns_servers_from_virtual_network.rb +29 -0
  682. data/test/requests/network/test_remove_security_rule.rb +29 -0
  683. data/test/requests/network/test_remove_subnets_from_virtual_network.rb +29 -0
  684. data/test/requests/network/test_reset_connection_shared_key.rb +23 -0
  685. data/test/requests/network/test_set_connection_shared_key.rb +23 -0
  686. data/test/requests/network/test_update_public_ip.rb +35 -0
  687. data/test/requests/resources/test_check_azure_resource_exists.rb +22 -0
  688. data/test/requests/resources/test_check_deployment_exists.rb +29 -0
  689. data/test/requests/resources/test_check_resource_group_exists.rb +29 -0
  690. data/test/requests/resources/test_create_deployment.rb +32 -0
  691. data/test/requests/resources/test_create_resource_group.rb +25 -0
  692. data/test/requests/resources/test_delete_deployment.rb +25 -0
  693. data/test/requests/resources/test_delete_resource_group.rb +24 -0
  694. data/test/requests/resources/test_delete_resource_tag.rb +35 -0
  695. data/test/requests/resources/test_get_deployment.rb +24 -0
  696. data/test/requests/resources/test_get_resource_group.rb +24 -0
  697. data/test/requests/resources/test_list_deployments.rb +25 -0
  698. data/test/requests/resources/test_list_resource_groups.rb +24 -0
  699. data/test/requests/resources/test_list_tagged_resources.rb +24 -0
  700. data/test/requests/resources/test_tag_resource.rb +35 -0
  701. data/test/requests/sql/test_create_or_update_database.rb +25 -0
  702. data/test/requests/sql/test_create_or_update_firewall_rule.rb +25 -0
  703. data/test/requests/sql/test_create_or_update_sql_server.rb +25 -0
  704. data/test/requests/sql/test_delete_database.rb +23 -0
  705. data/test/requests/sql/test_delete_firewall_rule.rb +23 -0
  706. data/test/requests/sql/test_delete_sql_server.rb +23 -0
  707. data/test/requests/sql/test_get_database.rb +24 -0
  708. data/test/requests/sql/test_get_firewall_rule.rb +24 -0
  709. data/test/requests/sql/test_get_sql_server.rb +24 -0
  710. data/test/requests/sql/test_list_databases.rb +24 -0
  711. data/test/requests/sql/test_list_firewall_rules.rb +24 -0
  712. data/test/requests/sql/test_list_sql_servers.rb +24 -0
  713. data/test/requests/storage/test_acquire_blob_lease.rb +36 -0
  714. data/test/requests/storage/test_acquire_container_lease.rb +36 -0
  715. data/test/requests/storage/test_check_container_exists.rb +18 -0
  716. data/test/requests/storage/test_check_storage_account_exists.rb +41 -0
  717. data/test/requests/storage/test_check_storage_account_name_availability.rb +35 -0
  718. data/test/requests/storage/test_commit_blob_blocks.rb +34 -0
  719. data/test/requests/storage/test_compare_container_blobs.rb +36 -0
  720. data/test/requests/storage/test_copy_blob.rb +36 -0
  721. data/test/requests/storage/test_copy_blob_from_uri.rb +36 -0
  722. data/test/requests/storage/test_create_block_blob.rb +80 -0
  723. data/test/requests/storage/test_create_container.rb +36 -0
  724. data/test/requests/storage/test_create_disk.rb +70 -0
  725. data/test/requests/storage/test_create_page_blob.rb +34 -0
  726. data/test/requests/storage/test_create_storage_account.rb +34 -0
  727. data/test/requests/storage/test_delete_blob.rb +42 -0
  728. data/test/requests/storage/test_delete_container.rb +42 -0
  729. data/test/requests/storage/test_delete_disk.rb +30 -0
  730. data/test/requests/storage/test_delete_storage_account.rb +28 -0
  731. data/test/requests/storage/test_get_blob.rb +141 -0
  732. data/test/requests/storage/test_get_blob_http_url.rb +30 -0
  733. data/test/requests/storage/test_get_blob_https_url.rb +30 -0
  734. data/test/requests/storage/test_get_blob_properties.rb +45 -0
  735. data/test/requests/storage/test_get_blob_url.rb +75 -0
  736. data/test/requests/storage/test_get_container_acl.rb +37 -0
  737. data/test/requests/storage/test_get_container_properties.rb +45 -0
  738. data/test/requests/storage/test_get_container_url.rb +33 -0
  739. data/test/requests/storage/test_get_storage_access_keys.rb +24 -0
  740. data/test/requests/storage/test_get_storage_account.rb +25 -0
  741. data/test/requests/storage/test_list_blobs.rb +77 -0
  742. data/test/requests/storage/test_list_containers.rb +54 -0
  743. data/test/requests/storage/test_list_storage_accounts.rb +37 -0
  744. data/test/requests/storage/test_list_storage_accounts_for_rg.rb +37 -0
  745. data/test/requests/storage/test_multipart_save_block_blob.rb +105 -0
  746. data/test/requests/storage/test_put_blob_block.rb +34 -0
  747. data/test/requests/storage/test_put_blob_metadata.rb +36 -0
  748. data/test/requests/storage/test_put_blob_pages.rb +34 -0
  749. data/test/requests/storage/test_put_blob_properties.rb +39 -0
  750. data/test/requests/storage/test_put_container_acl.rb +34 -0
  751. data/test/requests/storage/test_put_container_metadata.rb +36 -0
  752. data/test/requests/storage/test_release_blob_lease.rb +34 -0
  753. data/test/requests/storage/test_release_container_lease.rb +34 -0
  754. data/test/requests/storage/test_save_page_blob.rb +115 -0
  755. data/test/requests/storage/test_update_storage_account.rb +34 -0
  756. data/test/requests/storage/test_wait_blob_copy_operation_to_finish.rb +148 -0
  757. data/test/requests/traffic_manager/test_check_traffic_manager_endpoint_exists.rb +38 -0
  758. data/test/requests/traffic_manager/test_check_traffic_manager_profile_exists.rb +38 -0
  759. data/test/requests/traffic_manager/test_create_traffic_manager_endpoint.rb +25 -0
  760. data/test/requests/traffic_manager/test_create_traffic_manager_profile.rb +25 -0
  761. data/test/requests/traffic_manager/test_delete_traffic_manager_endpoint.rb +23 -0
  762. data/test/requests/traffic_manager/test_delete_traffic_manager_profile.rb +23 -0
  763. data/test/requests/traffic_manager/test_get_traffic_manager_endpoint.rb +24 -0
  764. data/test/requests/traffic_manager/test_get_traffic_manager_profile.rb +24 -0
  765. data/test/requests/traffic_manager/test_list_traffic_manager_profiles.rb +24 -0
  766. data/test/requests/traffic_manager/test_update_traffic_manager_endpoint.rb +27 -0
  767. data/test/requests/traffic_manager/test_update_traffic_manager_profile.rb +27 -0
  768. data/test/smoke_tests/compute/test_resource_group_smoke.rb +37 -0
  769. data/test/test_credentials.rb +63 -0
  770. data/test/test_helper.rb +831 -0
  771. metadata +1050 -0
@@ -0,0 +1 @@
1
+ LOCATION = 'eastus'.freeze
@@ -0,0 +1,71 @@
1
+ AZURE_RESOURCE = 'https://management.azure.com'.freeze
2
+ DEFAULT_ADDRESS_PREFIXES = ['10.2.0.0/16'].freeze
3
+ SUBNET = 'Subnet'.freeze
4
+ PUBLIC_IP = 'Public-IP-Address'.freeze
5
+ NETWORK_SECURITY_GROUP = 'Network-Security-Group'.freeze
6
+ STANDARD_STORAGE = 'Standard'.freeze
7
+ PREMIUM_STORAGE = 'Premium'.freeze
8
+ ALLOWED_STANDARD_REPLICATION = %w[LRS ZRS GRS RAGRS].freeze
9
+ API_VERSION = '2016-06-01'.freeze
10
+ FAULT_DOMAIN_COUNT = 2
11
+ UPDATE_DOMAIN_COUNT = 5
12
+ WINDOWS = 'windows'.freeze
13
+ VPN = 'Vpn'.freeze
14
+ MICROSOFT_PEERING = 'MicrosoftPeering'.freeze
15
+ RESOURCE_GROUP_NAME = 4
16
+ RESOURCE_PROVIDER_NAMESPACE = 6
17
+ RESOURCE_TYPE = 7
18
+ RESOURCE_NAME = 8
19
+ ENDPOINT_PREFIX = 'Microsoft.Network/trafficManagerProfiles'.freeze
20
+ DISK_PREFIX = 'Microsoft.Compute/disks'.freeze
21
+ AZURE_ENDPOINTS = 'azureEndpoints'.freeze
22
+ EXTERNAL_ENDPOINTS = 'externalEndpoints'.freeze
23
+ NESTED_ENDPOINTS = 'nestedEndpoints'.freeze
24
+ GLOBAL = 'global'.freeze
25
+ UPLOAD_BLOB_WORKER_THREAD_COUNT = 8
26
+ VM_NAME_POSITION = 8
27
+ PRIMARY_NIC_INDEX = 0
28
+
29
+ ENVIRONMENT_AZURE_CLOUD = 'AzureCloud'.freeze
30
+ ENVIRONMENT_AZURE_CHINA_CLOUD = 'AzureChinaCloud'.freeze
31
+ ENVIRONMENT_AZURE_US_GOVERNMENT = 'AzureUSGovernment'.freeze
32
+ ENVIRONMENT_AZURE_GERMAN_CLOUD = 'AzureGermanCloud'.freeze
33
+
34
+ # MsRestAzure::AzureOperationError class Error Codes
35
+ ERROR_CODE_RESOURCE_NOT_FOUND = 'ResourceNotFound'.freeze
36
+ ERROR_CODE_NOT_FOUND = 'NotFound'.freeze
37
+ ERROR_CODE_RESOURCE_GROUP_NOT_FOUND = 'ResourceGroupNotFound'.freeze
38
+ ERROR_CODE_PARENT_RESOURCE_NOT_FOUND = 'ParentResourceNotFound'.freeze
39
+
40
+ PLATFORM_LINUX = 'linux'.freeze
41
+
42
+ # State of the copy operation
43
+ COPY_STATUS =
44
+ {
45
+ # The copy completed successfully.
46
+ SUCCESS: 'success',
47
+ # The copy is in progress
48
+ PENDING: 'pending'
49
+ }.freeze
50
+
51
+ # https://msdn.microsoft.com/en-us/library/azure/dd179451.aspx
52
+ # The maximum size for a block blob created via Put Blob is 64 MB. But for better performance, this size should be 32 MB.
53
+ # If your blob is larger than 32 MB, you must upload it as a set of blocks.
54
+ SINGLE_BLOB_PUT_THRESHOLD = 32 * 1024 * 1024
55
+
56
+ # Block blob: https://msdn.microsoft.com/en-us/library/azure/dd135726.aspx
57
+ # Page blob: https://msdn.microsoft.com/en-us/library/azure/ee691975.aspx
58
+ # Each block/page can be a different size, up to a maximum of 4 MB
59
+ MAXIMUM_CHUNK_SIZE = 4 * 1024 * 1024
60
+
61
+ # The hash value of 4MB empty content
62
+ HASH_OF_4MB_EMPTY_CONTENT = 'b5cfa9d6c8febd618f91ac2843d50a1c'.freeze
63
+ REST_CLIENT_API_VERSION = %w[2014-04-01-preview 2016-05-01].freeze
64
+ AS_SKU_CLASSIC = 'Classic'.freeze
65
+ AS_SKU_ALIGNED = 'Aligned'.freeze
66
+
67
+ # The tag key and tag value for creating a temporary storage account for generalized image
68
+ TEMPORARY_STORAGE_ACCOUNT_TAG_KEY = 'generalized_image'.freeze
69
+ TEMPORARY_STORAGE_ACCOUNT_TAG_VALUE = 'delete'.freeze
70
+
71
+ HTTP_NOT_FOUND = 404
@@ -0,0 +1,40 @@
1
+ module Fog
2
+ module Credentials
3
+ # This class is managing credentials token
4
+ class AzureRM
5
+ def self.get_credentials(tenant_id, client_id, client_secret, environment = ENVIRONMENT_AZURE_CLOUD)
6
+ if @credentials.nil? || new_management_credential?(tenant_id, client_id, client_secret, environment)
7
+ get_new_credentials(tenant_id, client_id, client_secret, environment)
8
+ else
9
+ @credentials
10
+ end
11
+ end
12
+
13
+ def self.get_token(tenant_id, client_id, client_secret, environment = ENVIRONMENT_AZURE_CLOUD)
14
+ get_credentials(tenant_id, client_id, client_secret, environment) if @credentials.nil?
15
+ @token_provider.get_authentication_header
16
+ end
17
+
18
+ def self.get_new_credentials(tenant_id, client_id, client_secret, environment)
19
+ @tenant_id = tenant_id
20
+ @client_id = client_id
21
+ @client_secret = client_secret
22
+ @environment = environment
23
+ return if @tenant_id.nil? || @client_id.nil? || @client_secret.nil?
24
+ @token_provider = MsRestAzure::ApplicationTokenProvider.new(@tenant_id, @client_id, @client_secret, active_directory_service_settings(environment))
25
+ @credentials = MsRest::TokenCredentials.new(@token_provider)
26
+ @credentials
27
+ end
28
+
29
+ def self.new_management_credential?(tenant_id, client_id, client_secret, environment)
30
+ @tenant_id != tenant_id ||
31
+ @client_id != client_id ||
32
+ @client_secret != client_secret ||
33
+ @environment != environment
34
+ end
35
+
36
+ private_class_method :get_new_credentials
37
+ private_class_method :new_management_credential?
38
+ end
39
+ end
40
+ end
@@ -0,0 +1,70 @@
1
+ module Fog
2
+ module DNS
3
+ # This class registers models, requests and collections
4
+ class AzureRM < Fog::Service
5
+ requires :tenant_id
6
+ requires :client_id
7
+ requires :client_secret
8
+ requires :subscription_id
9
+ recognizes :environment
10
+
11
+ request_path 'fog/azurerm/requests/dns'
12
+ request :create_or_update_zone
13
+ request :delete_zone
14
+ request :check_zone_exists
15
+ request :list_zones
16
+ request :get_zone
17
+ request :create_or_update_record_set
18
+ request :delete_record_set
19
+ request :list_record_sets
20
+ request :get_records_from_record_set
21
+ request :get_record_set
22
+ request :check_record_set_exists
23
+
24
+ model_path 'fog/azurerm/models/dns'
25
+ model :zone
26
+ collection :zones
27
+ model :record_set
28
+ collection :record_sets
29
+ model :a_record
30
+ model :cname_record
31
+
32
+ # This class provides the mock implementation for unit tests.
33
+ class Mock
34
+ def initialize(_options = {})
35
+ end
36
+ end
37
+
38
+ # This class provides the actual implementation for service calls.
39
+ class Real
40
+ def initialize(options)
41
+ begin
42
+ require 'azure_mgmt_dns'
43
+ rescue LoadError => e
44
+ retry if require('rubygems')
45
+ raise e.message
46
+ end
47
+
48
+ options[:environment] = 'AzureCloud' if options[:environment].nil?
49
+
50
+ credentials = Fog::Credentials::AzureRM.get_credentials(options[:tenant_id], options[:client_id], options[:client_secret], options[:environment])
51
+ telemetry = "fog-azure-rm/#{Fog::AzureRM::VERSION}"
52
+ @dns_client = ::Azure::ARM::Dns::DnsManagementClient.new(credentials, resource_manager_endpoint_url(options[:environment]))
53
+ @dns_client.subscription_id = options[:subscription_id]
54
+ @dns_client.add_user_agent_information(telemetry)
55
+ @tenant_id = options[:tenant_id]
56
+ @client_id = options[:client_id]
57
+ @client_secret = options[:client_secret]
58
+ @environment = options[:environment]
59
+ @resources = Fog::Resources::AzureRM.new(
60
+ tenant_id: options[:tenant_id],
61
+ client_id: options[:client_id],
62
+ client_secret: options[:client_secret],
63
+ subscription_id: options[:subscription_id],
64
+ environment: options[:environment]
65
+ )
66
+ end
67
+ end
68
+ end
69
+ end
70
+ end
@@ -0,0 +1,245 @@
1
+ # Application Gateway
2
+
3
+ This document explains how to get started using Azure Network Service with Fog to manage Application Gateway. With this gem you can create, update, list or delete Application Gateway.
4
+
5
+ ## Usage
6
+
7
+ First of all, you need to require the Fog library by executing:
8
+
9
+ ```ruby
10
+ require 'fog/azurerm'
11
+ ```
12
+ ## Create Connection
13
+
14
+ Next, create a connection to the Application Gateway Service:
15
+
16
+ ```ruby
17
+ fog_application_gateway_service = Fog::ApplicationGateway::AzureRM.new(
18
+ tenant_id: '<Tenant Id>', # Tenant Id of Azure Active Directory Application
19
+ client_id: '<Client Id>', # Client Id of Azure Active Directory Application
20
+ client_secret: '<Client Secret>', # Client Secret of Azure Active Directory Application
21
+ subscription_id: '<Subscription Id>', # Subscription Id of an Azure Account
22
+ environment: '<AzureCloud/AzureChinaCloud/AzureUSGovernment/AzureGermanCloud>' # Azure cloud environment. Default is AzureCloud.
23
+ )
24
+ ```
25
+
26
+ ## Check Application Gateway Existence
27
+
28
+ ```ruby
29
+ fog_application_gateway_service.gateways.check_application_gateway_exists('<Resource Group Name>', '<Gateway Name>')
30
+
31
+ ```
32
+
33
+ ## Create Application Gateway
34
+
35
+ Create a new Application Gateway.
36
+
37
+ ```ruby
38
+ gateway = fog_application_gateway_service.gateways.create(
39
+
40
+ name: '<Gateway Name>',
41
+ location: '<Location>',
42
+ resource_group: '<Resource Group name>',
43
+ sku_name: '<SKU Name>',
44
+ sku_tier: '<SKU Tier>',
45
+ sku_capacity: '<SKU Capacity>',
46
+ gateway_ip_configurations:
47
+ [
48
+ {
49
+ name: '<Gateway IP Config Name>',
50
+ subnet_id: '/subscriptions/<Subscription Id>/resourcegroups/<Resource Group Name>/providers/Microsoft.Network/virtualNetworks/<Virtual Network Name>/subnets/<Subnet Name>'
51
+ }
52
+ ],
53
+ frontend_ip_configurations:
54
+ [
55
+ {
56
+ name: '<Frontend IP Config Name>',
57
+ private_ip_allocation_method: '<IP Allocation Method>',
58
+ public_ip_address_id: '/subscriptions/<Subscription Id>/resourcegroups/<Resource Group Name>/providers/Microsoft.Network/publicIPAddresses/<Public IP Address Name>',
59
+ private_ip_address: '<IP Address>'
60
+ }
61
+ ],
62
+ frontend_ports:
63
+ [
64
+ {
65
+ name: '<Frontend Port Name>',
66
+ port: <Port Number>
67
+ }
68
+ ],
69
+ backend_address_pools:
70
+ [
71
+ {
72
+ name: '<Backend Address Pool Name>',
73
+ ip_addresses: [
74
+ {
75
+ ipAddress: '<IP Address>'
76
+ }
77
+ ]
78
+ }
79
+ ],
80
+ backend_http_settings_list:
81
+ [
82
+ {
83
+ name: '<Gateway Settings Name>',
84
+ port: <Port Number>,
85
+ protocol: '<Protocol Name>',
86
+ cookie_based_affinity: '<Enabled/Disabled>',
87
+ request_timeout: '<Timeout Time>'
88
+ }
89
+ ],
90
+ http_listeners:
91
+ [
92
+ {
93
+ name: '<Gateway Listener Name>',
94
+ frontend_ip_config_id: '/subscriptions/<Subscription Id>/resourceGroups/<Resource Group Name>/providers/Microsoft.Network/applicationGateways/<Gateway Name>/frontendIPConfigurations/<Frontend IP Config Name>',
95
+ frontend_port_id: '/subscriptions/<Subscription Id>/resourceGroups/<Resource Group Name>/providers/Microsoft.Network/applicationGateways/<Gateway Name>/frontendPorts/<Frontend Port Name>',
96
+ protocol: '<Protocol Name>',
97
+ host_name: '',
98
+ require_server_name_indication: '<True/False>'
99
+ }
100
+ ],
101
+ request_routing_rules:
102
+ [
103
+ {
104
+ name: '<Gateway Request Route Rule Name>',
105
+ type: '<Type>',
106
+ http_listener_id: '/subscriptions/<Subscription Id>/resourceGroups/<Resource Group Name>/providers/Microsoft.Network/applicationGateways/<Gateway Name>/httpListeners/<Gateway Listener Name>',
107
+ backend_address_pool_id: '/subscriptions/<Subscription Id>/resourceGroups/<Resource Group Name>/providers/Microsoft.Network/applicationGateways/<Gateway Name>/backendAddressPools/<Backend Address Pool Name>',
108
+ backend_http_settings_id: '/subscriptions/<Subscription Id>/resourceGroups/<Resource Group Name>/providers/Microsoft.Network/applicationGateways/<Gateway Name>/backendHttpSettingsCollection/<Gateway Settings Name>',
109
+ url_path_map: ''
110
+ }
111
+ ],
112
+ tags: { key1: 'value1', key2: 'value2', keyN: 'valueN' } # [Optional]
113
+ )
114
+ ```
115
+
116
+ There can be two ways of giving `frontend_ip_configurations` while creating application gateway
117
+
118
+ 1. When giving public IP, then we need to provide `public_ip_address_id` as follows
119
+
120
+ ```ruby
121
+ frontend_ip_configurations:
122
+ [
123
+ {
124
+ name: '<Frontend IP Config Name>',
125
+ private_ip_allocation_method: '<IP Allocation Method>',
126
+ public_ip_address_id: '/subscriptions/<Subscription Id>/resourcegroups/<Resource Group Name>/providers/Microsoft.Network/publicIPAddresses/<Public IP Address Name>',
127
+ private_ip_address: '<IP Address>'
128
+ }
129
+ ]
130
+ 2. When giving subnet id, then we need to provide `subnet_id` as follows
131
+
132
+ ```ruby
133
+ frontend_ip_configurations:
134
+ [
135
+ {
136
+ name: '<Frontend IP Config Name>',
137
+ private_ip_allocation_method: '<IP Allocation Method>',
138
+ subnet_id: '<Subnet ID>',
139
+ private_ip_address: '<IP Address>'
140
+ }
141
+ ]
142
+ ## List Application Gateways
143
+
144
+ List all application gateways in a resource group
145
+
146
+ ```ruby
147
+ gateways = fog_application_gateway_service.gateways(resource_group: '<Resource Group Name>')
148
+ gateways.each do |gateway|
149
+ puts "#{gateway.name}"
150
+ end
151
+ ```
152
+
153
+ ## Retrieve a single Application Gateway
154
+
155
+ Get a single record of Application Gateway
156
+
157
+ ```ruby
158
+ gateway = fog_application_gateway_service
159
+ .gateways
160
+ .get('<Resource Group Name>', '<Application Gateway Name>')
161
+ puts "#{gateway.name}"
162
+ ```
163
+
164
+
165
+ ## Update SKU attributes (Name and Capacity)
166
+
167
+ ```ruby
168
+ ag.update_sku('<SKU Name>', '<SKU Capacity>')
169
+ ```
170
+
171
+ ## Update gateway IP configuration (Subnet Id)
172
+
173
+
174
+ ```ruby
175
+ ag.update_gateway_ip_configuration('/subscriptions/<Subscription Id>/<Resource Group Name>/<Gateway Name>/providers/Microsoft.Network/virtualNetworks/<Virtual Network Name>/subnets/<Subnet Name>')
176
+ ```
177
+
178
+ ## Add/ Remove SSL Certificates
179
+
180
+ ```ruby
181
+ ag.add_ssl_certificate(
182
+ {
183
+ name: '<SSL Certificate Name>',
184
+ data: '<SSL Certificate Data>',
185
+ password: '<Password>',
186
+ public_cert_data: '<Public Certificate Data>'
187
+ }
188
+ )
189
+
190
+ ag.remove_ssl_certificate(
191
+ {
192
+ name: '<SSL Certificate Name>',
193
+ data: '<SSL Certificate Data>',
194
+ password: '<Password>',
195
+ public_cert_data: '<Public Certificate Data>'
196
+ }
197
+ )
198
+ ```
199
+
200
+ ## Add/ Remove Frontend ports
201
+
202
+ ```ruby
203
+ ag.add_frontend_port({name: '<Frontend Port Name>', port: <Port Number>})
204
+
205
+ ag.remove_frontend_port({name: '<Frontend Port Name>', port: <Port Number>})
206
+ ```
207
+
208
+ ## Add/ Remove Probes
209
+
210
+ ```ruby
211
+ ag.add_probe(
212
+ {
213
+ name: '<Probe Name>',
214
+ protocol: '<Protocol Name>',
215
+ host: '<Host Name>',
216
+ path: '<Probe Path>',
217
+ interval: <Interval Time>,
218
+ timeout: <Timeout Time>,
219
+ unhealthy_threshold: <Threshold Value>
220
+ }
221
+ )
222
+
223
+ ag.remove__probe(
224
+ {
225
+ name: '<Probe name>',
226
+ protocol: '<Protocol Name>',
227
+ host: '<Protocol Name>',
228
+ path: '<Probe Path>',
229
+ interval: <Interval Time>,
230
+ timeout: <Timeout Time>,
231
+ unhealthy_threshold: <Threshold Value>
232
+ }
233
+ )
234
+ ```
235
+
236
+ ## Destroy a single Application Gateway
237
+
238
+ Get a application gateway object from the get method and then destroy that application gateway.
239
+
240
+ ```ruby
241
+ gateway.destroy
242
+ ```
243
+
244
+ ## Support and Feedback
245
+ Your feedback is highly appreciated! If you have specific issues with the Fog ARM, you should file an issue via Github.
@@ -0,0 +1,499 @@
1
+ # Compute
2
+
3
+ This document explains how to get started using Azure Compute Service with Fog. With this gem you can create, update, list or delete availability sets and virtual machines.
4
+
5
+ ## Usage
6
+
7
+ First of all, you need to require the Fog library by executing:
8
+
9
+ ```ruby
10
+ require 'fog/azurerm'
11
+ ```
12
+
13
+ ## Create Connection
14
+
15
+ Next, create a connection to the Compute Service:
16
+
17
+ ```ruby
18
+ fog_compute_service = Fog::Compute::AzureRM.new(
19
+ tenant_id: '<Tenant Id>', # Tenant Id of Azure Active Directory Application
20
+ client_id: '<Client Id>', # Client Id of Azure Active Directory Application
21
+ client_secret: '<Client Secret>', # Client Secret of Azure Active Directory Application
22
+ subscription_id: '<Subscription Id>', # Subscription Id of an Azure Account
23
+ environment: '<AzureCloud/AzureChinaCloud/AzureUSGovernment/AzureGermanCloud>' # Azure cloud environment. Default is AzureCloud.
24
+ )
25
+ ```
26
+
27
+ ## Check Server Existence
28
+
29
+ ```ruby
30
+ fog_compute_service.servers.check_vm_exists('<Resource Group Name>', '<VM Name>')
31
+ ```
32
+
33
+ ## Create Server
34
+
35
+ **Info:**
36
+
37
+ - Attribute **network_interface_card_ids** is an array of NICs Ids. The NIC Id at index zero will become primary NIC of this server (virtual machine) by default.
38
+ - To create VM with managed OS disk, use the _managed_disk_storage_type_ argument
39
+ - To create VM with unmanaged OS disk, use the _storage_account_name_ argument
40
+
41
+ ### Virtual Machine (Managed OS Disk)
42
+
43
+ ```ruby
44
+ fog_compute_service.servers.create(
45
+ name: '<VM Name>',
46
+ location: '<Location>',
47
+ resource_group: '<Resource Group Name>',
48
+ tags: { key1: 'value1', key2: 'value2', keyN: 'valueN' },
49
+ vm_size: '<Virtual Machine Size>',
50
+ username: '<Username>',
51
+ disable_password_authentication: <True/False>,
52
+ network_interface_card_ids: ['/subscriptions/<Subscription Id>/resourceGroups/<Resource Group Name>/providers/Microsoft.Network/networkInterfaces/<Network Interface Id>'],
53
+ publisher: '<Publisher Name>', # Not required if custom image is being used
54
+ offer: '<Offer Name>', # Not required if custom image is being used
55
+ sku: '<SKU Name>', # Not required if custom image is being used
56
+ version: '<Version>', # Not required if custom image is being used
57
+ platform: '<OS Type>',
58
+ availability_set_id: '<Availability Set Id>', # [Optional]
59
+ password: '<Password>', # [Optional], if 'platform' partameter is 'Linux'.
60
+ vhd_path: '<Path of VHD>', # [Optional], if you want to create the VM from a custom image.
61
+ custom_data: '<Custom Data Value>', # [Optional], if you want to add custom data in this VM.
62
+ os_disk_caching: '<Caching Type>', # [Optional], can be one of None, ReadOnly, ReadWrite
63
+ managed_disk_storage_type: '<Storage Account Type>', # [Optional], if storage_account_name is passed, can be StandardLRS or PremiumLRS
64
+ os_disk_size: <Disk Size> # [Optional], size of the os disk in GB (upto 1023)
65
+ )
66
+ ```
67
+
68
+ **Info:**
69
+
70
+ - To create VM from Image, pass in the Image ID in `image_ref` attribute
71
+
72
+ **Limitation:**
73
+
74
+ - Image should be in the same region
75
+ - ONLY managed VM can be created from image
76
+
77
+ ### Virtual Machine (Managed OS Disk from Image)
78
+
79
+ ```ruby
80
+ fog_compute_service.servers.create(
81
+ name: '<VM Name>',
82
+ location: '<Location>',
83
+ resource_group: '<Resource Group Name>',
84
+ tags: { key1: 'value1', key2: 'value2', keyN: 'valueN' },
85
+ vm_size: '<Virtual Machine Size>',
86
+ username: '<Username>',
87
+ disable_password_authentication: <True/False>,
88
+ network_interface_card_ids: ['/subscriptions/<Subscription Id>/resourceGroups/<Resource Group Name>/providers/Microsoft.Network/networkInterfaces/<Network Interface Id>'],
89
+ publisher: '<Publisher Name>', # Not required if custom image is being used
90
+ offer: '<Offer Name>', # Not required if custom image is being used
91
+ sku: '<SKU Name>', # Not required if custom image is being used
92
+ version: '<Version>', # Not required if custom image is being used
93
+ platform: '<OS Type>',
94
+ availability_set_id: '<Availability Set Id>', # [Optional]
95
+ password: '<Password>', # [Optional], if 'platform' partameter is 'Linux'.
96
+ image_ref: '<Image ID>', # [Optional], if you want to create the VM from a custom image.
97
+ custom_data: '<Custom Data Value>', # [Optional], if you want to add custom data in this VM.
98
+ os_disk_caching: '<Caching Type>', # [Optional], can be one of None, ReadOnly, ReadWrite
99
+ managed_disk_storage_type: '<Storage Account Type>', # [Optional], if storage_account_name is passed, can be StandardLRS or PremiumLRS
100
+ os_disk_size: <Disk Size> # [Optional], size of the os disk in GB (upto 1023)
101
+ )
102
+ ```
103
+
104
+ ### Virtual Machine (Unmanaged OS Disk)
105
+
106
+ ```ruby
107
+ fog_compute_service.servers.create(
108
+ name: '<VM Name>',
109
+ location: '<Location>',
110
+ resource_group: '<Resource Group Name>',
111
+ tags: { key1: 'value1', key2: 'value2', keyN: 'valueN' },
112
+ vm_size: '<Virtual Machine Size>',
113
+ storage_account_name: '<Storage Account Name>',
114
+ username: '<Username>',
115
+ password: '<Password>',
116
+ disable_password_authentication: <True/False>,
117
+ network_interface_card_ids: ['/subscriptions/<Subscription Id>/resourceGroups/<Resource Group Name>/providers/Microsoft.Network/networkInterfaces/<Network Interface Id>'],
118
+ publisher: '<Publisher Name>', # Not required if custom image is being used
119
+ offer: '<Offer Name>', # Not required if custom image is being used
120
+ sku: '<SKU Name>', # Not required if custom image is being used
121
+ version: '<Version>', # Not required if custom image is being used
122
+ platform: '<OS Type>',
123
+ availability_set_id: '<Availability Set Id>', # [Optional]
124
+ vhd_path: '<Path of VHD>', # [Optional], if you want to create the VM from a custom image.
125
+ custom_data: '<Custom Data Value>', # [Optional], if you want to add custom data in this VM.
126
+ os_disk_size: <Disk Size> # [Optional], size of the os disk in GB (upto 1023)
127
+ )
128
+ ```
129
+
130
+ ## Create Server Asynchronously
131
+
132
+ Create a new linux server asynchronously
133
+
134
+ ```ruby
135
+ async_response = fog_compute_service.servers.create_async(
136
+ name: '<VM Name>',
137
+ location: '<Location>',
138
+ resource_group: '<Resource Group Name>',
139
+ tags: { key1: 'value1', key2: 'value2', keyN: 'valueN' },
140
+ vm_size: '<Virtual Machine Size>',
141
+ storage_account_name: '<Storage Account Name>',
142
+ username: '<Username for VM>',
143
+ disable_password_authentication: <True/False>,
144
+ network_interface_card_ids: ['/subscriptions/<Subscription Id>/resourceGroups/<Resource Group Name>/providers/Microsoft.Network/networkInterfaces/<Network Interface Id>'],
145
+ publisher: '<Publisher Name>', # Not required if custom image is being used
146
+ offer: '<Offer Name>', # Not required if custom image is being used
147
+ sku: '<SKU Name>', # Not required if custom image is being used
148
+ version: '<Version>' , # Not required if custom image is being used
149
+ platform: '<OS Type>',
150
+ availability_set_id: '<Availability Set Id>', # [Optional]
151
+ password: '<Password>', # [Optional], if 'platform' partameter is 'Linux'.
152
+ vhd_path: '<Path of VHD>', # [Optional], if you want to create the VM from a custom image.
153
+ custom_data: '<Custom Data Value>', # [Optional], if you want to add custom data in this VM.
154
+ os_disk_caching: '<Caching Type>', # [Optional], can be one of None, ReadOnly, ReadWrite
155
+ managed_disk_storage_type: '<Storage Account Type>', # [Optional], can be StandardLRS or PremiumLRS
156
+ os_disk_size: <Disk Size> # [Optional], size of the os disk in GB (upto 1023)
157
+ )
158
+ ```
159
+ Following methods are available to handle async respoonse:
160
+ - state
161
+ - pending?
162
+ - rejected?
163
+ - reason
164
+ - fulfilled?
165
+ - value
166
+
167
+ An example of handling async response is given below:
168
+
169
+ ```ruby
170
+ while 1
171
+ puts async_response.state
172
+
173
+ if async_response.pending?
174
+ sleep(2)
175
+ end
176
+
177
+ if async_response.fulfilled?
178
+ puts async_response.value.inspect
179
+ break
180
+ end
181
+
182
+ if async_response.rejected?
183
+ puts async_response.reason.inspect
184
+ break
185
+ end
186
+ end
187
+ ```
188
+
189
+ For more information about custom_data, see link: https://msdn.microsoft.com/en-us/library/azure/mt163591.aspx
190
+
191
+ ## List Servers
192
+
193
+ List servers in a resource group
194
+
195
+ ```ruby
196
+ servers = fog_compute_service.servers(resource_group: '<Resource Group Name>')
197
+ servers.each do |server|
198
+ puts "#{server.name}"
199
+ puts "#{server.location}"
200
+ end
201
+ ```
202
+
203
+ ## Retrieve a single Server
204
+
205
+ Get a single record of Server
206
+
207
+ ```ruby
208
+ server = fog_compute_service
209
+ .servers(resource_group: '<Resource Group Name>')
210
+ .get('<Resource Group Name>', 'Server Name>')
211
+ puts "#{server.name}"
212
+ ```
213
+
214
+ ## Get a Server's status
215
+
216
+ Check the status of a Server
217
+
218
+ ```ruby
219
+ status = fog_compute_service
220
+ .servers
221
+ .get('<Resource Group Name>', '<Server Name>')
222
+ .vm_status
223
+ puts status
224
+ ```
225
+
226
+ ## Start a Server
227
+ ```ruby
228
+ server.start
229
+ ```
230
+
231
+ ## Power Off a Server
232
+ ```ruby
233
+ server.power_off
234
+ ```
235
+
236
+ ## Restart a Server
237
+ ```ruby
238
+ server.restart
239
+ ```
240
+
241
+ ## Deallocate a Server
242
+ ```ruby
243
+ server.deallocate
244
+ ```
245
+
246
+ ## Redeploy a Server
247
+ ```ruby
248
+ server.redeploy
249
+ ```
250
+
251
+ ## Destroy a single Server
252
+
253
+ Get a server object from the get method (described above) and then destroy that server.
254
+
255
+ ```ruby
256
+ server.destroy
257
+ ```
258
+
259
+ ## Attach a Data Disk to Server
260
+
261
+ Get the server object and attach a Data Disk to it. The data disk attached is blob based.
262
+
263
+ ```ruby
264
+ server.attach_data_disk('<Disk Name>', <Size in GBs>, '<Storage Account Name>')
265
+ ```
266
+
267
+ ## Detach a Data Disk from Server
268
+
269
+ Get the server object and detach a Data Disk from it.
270
+
271
+ ```ruby
272
+ server.detach_data_disk('<Disk Name>')
273
+ ```
274
+
275
+ ## Create Managed Disk
276
+
277
+ Create a new Premium Managed Disk
278
+
279
+ ```ruby
280
+ fog_compute_service.managed_disks.create(
281
+ name: '<Disk Name>',
282
+ location: '<Location>',
283
+ resource_group_name: '<Resource Group Name>',
284
+ account_type: '<Storage Account Type>',
285
+ disk_size_gb: <Disk Size in GBs>,
286
+ creation_data: {
287
+ create_option: '<Create Option Value>'
288
+ }
289
+ )
290
+ ```
291
+
292
+ Create a new Standard Managed Disk
293
+
294
+ ```ruby
295
+ fog_compute_service.managed_disks.create(
296
+ name: '<Disk Name>',
297
+ location: '<Location>',
298
+ resource_group_name: '<Resource Group Name>',
299
+ account_type: '<Storage Account Type>',
300
+ disk_size_gb: <Disk Size in GBs>,
301
+ creation_data: {
302
+ create_option: '<Create Option Value>'
303
+ }
304
+ )
305
+ ```
306
+
307
+ ## Attach a Managed Data Disk to Server
308
+
309
+ Get the server object and attach a Data Disk to it.
310
+
311
+ ```ruby
312
+ server.attach_managed_disk('<Disk Name>', '<Disk Resource Group Name>')
313
+ ```
314
+
315
+ ## Detach a Managed Data Disk from Server
316
+
317
+ Get the server object and detach a Data Disk from it.
318
+
319
+ ```ruby
320
+ server.detach_managed_disk('<Disk Name>')
321
+ ```
322
+
323
+ ## List Managed Disks in a Resource Group
324
+
325
+ List managed disks in a resource group
326
+
327
+ ```ruby
328
+ managed_disks = fog_compute_service.managed_disks(resource_group: '<Resource Group Name>')
329
+ mnaged_disks.each do |disk|
330
+ puts "#{disk.name}"
331
+ puts "#{disk.location}"
332
+ end
333
+ ```
334
+
335
+ ## List Managed Disks in a Subscription
336
+
337
+ List managed disks in a subscription
338
+
339
+ ```ruby
340
+ fog_compute_service.managed_disks.each do |disk|
341
+ puts "#{disk.name}"
342
+ puts "#{disk.location}"
343
+ end
344
+ ```
345
+
346
+ ## Grant Access to a Managed Disk
347
+
348
+ Grant access to a managed disk
349
+
350
+ ```ruby
351
+ access_sas = fog_compute_service.managed_disks.grant_access('<Resource Group Name>', '<Disk Name>', '<Access Type>', <Duration in Seconds>)
352
+ puts "Access SAS: #{access_sas}"
353
+ ```
354
+
355
+ ## Revoke Access from a Managed Disk
356
+
357
+ Revoke access from a managed disk
358
+
359
+ ```ruby
360
+ response = fog_compute_service.managed_disks.revoke_access('<Resource Group Name>', '<Disk Name>')
361
+ puts "Revoke Access response status: #{response.status}"
362
+ ```
363
+
364
+ ## Check Managed Disk Existence
365
+
366
+ ```ruby
367
+ fog_compute_service.managed_disks.check_managed_disk_exists('<Resource Group Name>', '<Disk Name>')
368
+ ```
369
+
370
+ ## Retrieve a single Managed Disk
371
+
372
+ Get a single record of managed disks
373
+
374
+ ```ruby
375
+ managed_disk = fog_compute_service
376
+ .managed_disks
377
+ .get('<Resource Group Name>', '<Disk Name>')
378
+ puts "#{managed_disk.name}"
379
+ ```
380
+
381
+ ## Destroy a single Managed Disk
382
+
383
+ Get an managed disk object from the get method and then destroy that managed disk.
384
+
385
+ ```ruby
386
+ managed_disk.destroy
387
+ ```
388
+
389
+ ## Check Availability Set Existence
390
+
391
+ ```ruby
392
+ fog_compute_service.availability_sets.check_availability_set_exists('<Resource Group Name>', '<Availability Set Name>')
393
+ ```
394
+
395
+ ## Create Availability Set
396
+
397
+ Create a new availability set
398
+
399
+ ```ruby
400
+ fog_compute_service.availability_sets.create(
401
+ name: '<Availability Set Name>',
402
+ location: '<Location>',
403
+ resource_group: '<Resource Group Name>'
404
+ platform_fault_domain_count: <No of Fault Domains>, # [Optional] Default => 2
405
+ platform_update_domain_count: <No of Update Domains>, # [Optional] Default => 5
406
+ use_managed_disk: true # [Optional] Possible values true or false
407
+ )
408
+ ```
409
+ ## List Availability Sets
410
+
411
+ List availability sets in a resource group
412
+
413
+ ```ruby
414
+ availability_sets = fog_compute_service.availability_sets(resource_group: '<Resource Group Name>')
415
+ availability_sets.each do |availability_set|
416
+ puts "#{availability_set.name}"
417
+ puts "#{availability_set.location}"
418
+ end
419
+ ```
420
+
421
+ ## Retrieve a single Availability Set
422
+
423
+ Get a single record of Availability Set
424
+
425
+ ```ruby
426
+ availability_set = fog_compute_service
427
+ .availability_sets
428
+ .get('<Resource Group Name>','<Availability Set Name>')
429
+ puts "#{availability_set.name}"
430
+ ```
431
+
432
+ ## Destroy a single Availability Set
433
+
434
+ Get an availability set object from the get method and then destroy that availability set.
435
+
436
+ ```ruby
437
+ availability_set.destroy
438
+ ```
439
+
440
+ ## Check Virtual Machine Extension Existence
441
+
442
+ ```ruby
443
+ fog_compute_service.virtual_machine_extensions.check_vm_extension_exists('<Resource Group Name>', '<Virtual Machine Name>', '<Extension Name>')
444
+ ```
445
+
446
+ ## Create Virtual Machine Extension
447
+
448
+ Installs an extension to the specified virtual machine.
449
+
450
+ ```ruby
451
+ fog_compute_service.virtual_machine_extensions.create(
452
+ name: '<Extension Name>',
453
+ resource_group: '<Resource Group Name>',
454
+ location: '<Location>',
455
+ vm_name: '<Virtual Machine Name>', # Extension will be installed on this VM
456
+ publisher: '<Extension Publisher>',
457
+ type: '<Extension Type>',
458
+ type_handler_version: '<Extension Version>',
459
+ settings: {JSON object}, # Format: {"key": "value", "key": {"key": "value"}}
460
+ protected_settings: {JSON object},
461
+ auto_upgrade_minor_version: <True/False> , # Optional
462
+ )
463
+ ```
464
+
465
+ ## Get Extension from Virtual Machine
466
+
467
+ Retrieves the given extension from the virtual machine
468
+
469
+ ```ruby
470
+ vm_extension = fog_compute_service.virtual_machine_extensions.get(
471
+ '<Resource Group Name>', '<Virtual Machine Name>', '<Extension Name>'
472
+ )
473
+ ```
474
+
475
+ ## Update Extension
476
+
477
+ Update the given extension. The attributes that can be modified are
478
+ - auto_upgrade_minor_version
479
+ - settings
480
+ - protected_settings
481
+
482
+ ```ruby
483
+ vm_extension.update(
484
+ auto_upgrade_minor_version: <True/False>,
485
+ settings: {JSON object},
486
+ protected_settings: {JSON object}
487
+ )
488
+ ```
489
+
490
+ ## Destroy Extension
491
+
492
+ Destroy the given extension from the virtual machine
493
+
494
+ ```ruby
495
+ vm_extension.destroy
496
+ ```
497
+
498
+ ## Support and Feedback
499
+ Your feedback is appreciated! If you have specific issues with the fog ARM, you should file an issue via Github.