fog/fog-azure-rm

View on GitHub
lib/fog/azurerm/models/compute/availability_set.rb

Summary

Maintainability
A
0 mins
Test Coverage
F
47%
module Fog
  module Compute
    class AzureRM
      # This class is giving implementation of create/save and
      # delete/destroy for Availability Set.
      class AvailabilitySet < Fog::Model
        attribute :id
        identity  :name
        attribute :type
        attribute :location
        attribute :resource_group
        attribute :platform_update_domain_count
        attribute :platform_fault_domain_count
        attribute :use_managed_disk
        attribute :sku_name
        attribute :tags

        def self.parse(availability_set)
          hash = {}
          hash['id'] = availability_set.id
          hash['name'] = availability_set.name
          hash['type'] = availability_set.type
          hash['location'] = availability_set.location
          hash['resource_group'] = get_resource_group_from_id(availability_set.id)
          hash['platform_update_domain_count'] = availability_set.platform_update_domain_count
          hash['platform_fault_domain_count'] = availability_set.platform_fault_domain_count

          unless availability_set.sku.nil?
            hash['sku_name'] = availability_set.sku.name
            hash['use_managed_disk'] = availability_set.sku.name.eql?(AS_SKU_ALIGNED)
          end

          hash['tags'] = availability_set.tags
          hash
        end

        def save
          requires :name
          requires :location
          requires :resource_group
          # need to create the availability set
          as = service.create_availability_set(avail_set_params(platform_fault_domain_count, platform_update_domain_count, use_managed_disk))
          hash = Fog::Compute::AzureRM::AvailabilitySet.parse(as)
          merge_attributes(hash)
        end

        def destroy
          service.delete_availability_set(resource_group, name)
        end

        private

        def avail_set_params(platform_fault_domain_count, platform_update_domain_count, use_managed_disk)
          {
            name: name,
            location: location,
            resource_group: resource_group,
            platform_fault_domain_count: platform_fault_domain_count,
            platform_update_domain_count: platform_update_domain_count,
            use_managed_disk: use_managed_disk,
            tags: tags
          }
        end
      end
    end
  end
end