fog/fog-azure-rm

View on GitHub
lib/fog/azurerm/models/dns/zone.rb

Summary

Maintainability
A
0 mins
Test Coverage
F
52%
module Fog
  module DNS
    class AzureRM
      # This class is giving implementation of create/save and
      # delete/destroy for Zone.
      class Zone < Fog::Model
        attribute :id
        identity :name
        attribute :resource_group
        attribute :location
        attribute :type
        attribute :tags
        attribute :etag
        attribute :number_of_record_sets
        attribute :max_number_of_record_sets

        def self.parse(zone)
          hash = {}
          hash['id'] = zone.id
          hash['name'] = zone.name
          hash['resource_group'] = get_resource_group_from_id(zone.id)
          hash['location'] = zone.location
          hash['type'] = zone.type
          hash['tags'] = zone.tags
          hash['etag'] = zone.etag
          hash['number_of_record_sets'] = zone.number_of_record_sets
          hash['max_number_of_record_sets'] = zone.max_number_of_record_sets
          hash
        end

        def save
          requires :name, :resource_group, :location
          zone = service.create_or_update_zone(zone_params)
          merge_attributes(Fog::DNS::AzureRM::Zone.parse(zone))
        end

        def destroy
          service.delete_zone(resource_group, name)
        end

        private

        def zone_params
          {
            name: name,
            resource_group: resource_group,
            location: location,
            type: type,
            tags: tags,
            number_of_record_sets: number_of_record_sets,
            max_number_of_record_sets: max_number_of_record_sets,
            etag: etag
          }
        end
      end
    end
  end
end