require 'fog/azurerm' require 'yaml' ######################################################################################################################## ###################### Services object required by all actions ###################### ###################### Keep it Uncommented! ###################### ######################################################################################################################## azure_credentials = YAML.load_file(File.expand_path('credentials/azure.yml', __dir__)) rs = Fog::Resources::AzureRM.new( tenant_id: azure_credentials['tenant_id'], client_id: azure_credentials['client_id'], client_secret: azure_credentials['client_secret'], subscription_id: azure_credentials['subscription_id'], environment: azure_credentials['environment'] ) compute = Fog::Compute::AzureRM.new( tenant_id: azure_credentials['tenant_id'], client_id: azure_credentials['client_id'], client_secret: azure_credentials['client_secret'], subscription_id: azure_credentials['subscription_id'], environment: azure_credentials['environment'] ) ######################################################################################################################## ###################### Resource names ##################### ######################################################################################################################## time = current_time resource_group_name = "AS-RG-#{time}" unmanaged_as_name_default = "ASUnmanagedDefault#{time}" unmanaged_as_name_custom = "ASUnmanagedCustom#{time}" managed_as_name_default = "ASManagedDefault#{time}" managed_as_name_custom = "ASManagedCustom#{time}" ######################################################################################################################## ###################### Prerequisites ###################### ######################################################################################################################## begin puts 'Running integration test for availability set...' puts "Create resource group (#{resource_group_name}):" resource_group = rs.resource_groups.create( name: resource_group_name, location: LOCATION ) puts "Created resource group! [#{resource_group.name}]" ######################################################################################################################## ###################### Check for Availability set ###################### ######################################################################################################################## puts 'Check for existing availability sets:' is_exists = compute.availability_sets.check_availability_set_exists(resource_group_name, unmanaged_as_name_default) puts "Availability set does NOT exist! [#{unmanaged_as_name_default}] " unless is_exists is_exists = compute.availability_sets.check_availability_set_exists(resource_group_name, unmanaged_as_name_custom) puts "Availability set does NOT exist! [#{unmanaged_as_name_custom}] " unless is_exists is_exists = compute.availability_sets.check_availability_set_exists(resource_group_name, managed_as_name_default) puts "Availability set does NOT exist! [#{managed_as_name_default}] " unless is_exists is_exists = compute.availability_sets.check_availability_set_exists(resource_group_name, managed_as_name_custom) puts "Availability set does NOT exist! [#{managed_as_name_default}] " unless is_exists ######################################################################################################################## ###################### Create Unmanaged Availability Set (Default) ###################### ######################################################################################################################## puts "Create unmanaged default availability set (#{unmanaged_as_name_default}):" avail_set = compute.availability_sets.create( name: unmanaged_as_name_default, location: LOCATION, resource_group: resource_group_name ) name = avail_set.name fault_domains = avail_set.platform_fault_domain_count update_domains = avail_set.platform_update_domain_count puts "Created availability set! [#{name}] => { fd: #{fault_domains}, ud: #{update_domains} }" ######################################################################################################################## ###################### Create Unmanaged Availability Set (Custom) ###################### ######################################################################################################################## puts "Create unmanaged custom availability set (#{unmanaged_as_name_custom}):" avail_set = compute.availability_sets.create( name: unmanaged_as_name_custom, location: LOCATION, resource_group: resource_group_name, platform_fault_domain_count: 3, platform_update_domain_count: 10 ) name = avail_set.name fault_domains = avail_set.platform_fault_domain_count update_domains = avail_set.platform_update_domain_count puts "Created availability set! [#{name}] => { fd: #{fault_domains}, ud: #{update_domains} }" ######################################################################################################################## ###################### Create Managed Availability Set (Default) ###################### ######################################################################################################################## puts "Create managed default availability set (#{managed_as_name_default}):" avail_set = compute.availability_sets.create( name: managed_as_name_default, location: LOCATION, resource_group: resource_group_name, is_managed: true ) name = avail_set.name fault_domains = avail_set.platform_fault_domain_count update_domains = avail_set.platform_update_domain_count puts "Created availability set! [#{name}] => { fd: #{fault_domains}, ud: #{update_domains} }" ######################################################################################################################## ###################### Create Managed Availability Set (Custom) ###################### ######################################################################################################################## puts "Create managed custom availability set (#{managed_as_name_custom}):" avail_set = compute.availability_sets.create( name: managed_as_name_custom, location: LOCATION, resource_group: resource_group_name, platform_fault_domain_count: 2, platform_update_domain_count: 10, is_managed: true ) name = avail_set.name fault_domains = avail_set.platform_fault_domain_count update_domains = avail_set.platform_update_domain_count puts "Created availability set! [#{name}] => { fd: #{fault_domains}, ud: #{update_domains} }" ######################################################################################################################## ###################### List Availability Sets ###################### ######################################################################################################################## puts 'List availability sets:' compute.availability_sets(resource_group: resource_group_name).each do |availability_set| puts availability_set.name end ######################################################################################################################## ###################### Get and Delete Availability Set ###################### ######################################################################################################################## puts 'Get and delete availability sets:' avail_set = compute.availability_sets.get(resource_group_name, unmanaged_as_name_default) puts "Get availability set : #{avail_set.name}" puts "Deleted availability set : #{avail_set.destroy}" avail_set = compute.availability_sets.get(resource_group_name, unmanaged_as_name_custom) puts "Get availability set : #{avail_set.name}" puts "Deleted availability set : #{avail_set.destroy}" avail_set = compute.availability_sets.get(resource_group_name, managed_as_name_default) puts "Get availability set : #{avail_set.name}" puts "Deleted availability set : #{avail_set.destroy}" avail_set = compute.availability_sets.get(resource_group_name, managed_as_name_custom) puts "Get availability set : #{avail_set.name}" puts "Deleted availability set : #{avail_set.destroy}" ######################################################################################################################## ###################### Clean Up ###################### ######################################################################################################################## rg = rs.resource_groups.get(resource_group_name) rg.destroy puts 'Integration test for availability set ran successfully!' rescue puts 'Integration Test for availability set is failing!!!' resource_group.destroy unless resource_group.nil? end