lib/fog/azurerm/requests/compute/create_availability_set.rb in fog-azure-rm-0.3.2 vs lib/fog/azurerm/requests/compute/create_availability_set.rb in fog-azure-rm-0.3.3

- old
+ new

@@ -1,40 +1,54 @@ module Fog module Compute class AzureRM # This class provides the actual implementation for service calls. class Real - def create_availability_set(resource_group, name, location) + def create_availability_set(availability_set_params) + name = availability_set_params[:name] + location = availability_set_params[:location] + resource_group = availability_set_params[:resource_group] + fault_domain_count = availability_set_params[:platform_fault_domain_count] + update_domain_count = availability_set_params[:platform_update_domain_count] + use_managed_disk = availability_set_params[:use_managed_disk].nil? ? false : availability_set_params[:use_managed_disk] + msg = "Creating Availability Set '#{name}' in #{location} region." Fog::Logger.debug msg - avail_set_params = get_availability_set_properties(location) + avail_set_params = get_availability_set_properties(location, fault_domain_count, update_domain_count, use_managed_disk) + begin availability_set = @compute_mgmt_client.availability_sets.create_or_update(resource_group, name, avail_set_params) rescue MsRestAzure::AzureOperationError => e raise_azure_exception(e, msg) end Fog::Logger.debug "Availability Set #{name} created successfully." availability_set end # create the properties object for creating availability sets - def get_availability_set_properties(location) + def get_availability_set_properties(location, fault_domain_count, update_domain_count, use_managed_disk) avail_set = Azure::ARM::Compute::Models::AvailabilitySet.new - avail_set.platform_fault_domain_count = FAULT_DOMAIN_COUNT - avail_set.platform_update_domain_count = UPDATE_DOMAIN_COUNT - avail_set.virtual_machines = [] - avail_set.statuses = [] avail_set.location = location + avail_set.sku = create_availability_set_sku(use_managed_disk) + avail_set.platform_fault_domain_count = fault_domain_count.nil? ? FAULT_DOMAIN_COUNT : fault_domain_count + avail_set.platform_update_domain_count = update_domain_count.nil? ? UPDATE_DOMAIN_COUNT : update_domain_count avail_set end + + def create_availability_set_sku(use_managed_disk) + sku = Azure::ARM::Compute::Models::Sku.new + sku.name = use_managed_disk ? AS_SKU_ALIGNED : AS_SKU_CLASSIC + sku + end end + # This class provides the mock implementation for unit tests. class Mock - def create_availability_set(resource_group, name, location) + def create_availability_set(availability_set_params) { - 'location' => location, - 'id' => "/subscriptions/########-####-####-####-############/resourceGroups/#{resource_group}/providers/Microsoft.Compute/availabilitySets/#{name}", - 'name' => name, + 'location' => availability_set_params[:location], + 'id' => "/subscriptions/########-####-####-####-############/resourceGroups/#{availability_set_params[:resource_group]}/providers/Microsoft.Compute/availabilitySets/#{availability_set_params[:name]}", + 'name' => availability_set_params[:name], 'type' => 'Microsoft.Compute/availabilitySets', 'properties' => { 'platformUpdateDomainCount' => FAULT_DOMAIN_COUNT, 'platformFaultDomainCount' => FAULT_DOMAIN_COUNT