Sha256: cc4ae7adaa8aa8f7285b54d918235e610198dd931af5d6d0b284ffda73ab98e1

Contents?: true

Size: 1.01 KB

Versions: 8

Compression:

Stored size: 1.01 KB

Contents

Sunzi::Dependency.load('linode')

module Sunzi
  class DNS
    class Linode < Base
      def initialize(config, cloud)
        @api = ::Linode.new(:api_key => (cloud == 'linode') ? config['api_key'] : config['linode']['api_key'])
        zone = config['fqdn']['zone']
        @domain = @api.domain.list.find{|i| i.domain == zone }
        abort_with "zone for #{zone} was not found on Linode DNS!" unless @domain
      end

      def add(fqdn, ip)
        say 'adding the public IP to Linode DNS Manager...'
        @api.domain.resource.create(:DomainID => @domain.domainid, :Type => 'A', :Name => fqdn, :Target => ip)
      end

      def delete(ip)
        say 'deleting the public IP from Linode DNS Manager...'
        resource = @api.domain.resource.list(:DomainID => @domain.domainid).find{|i| i.target == ip }
        abort_with "ip address #{ip} was not found on Linode DNS!" unless resource
        @api.domain.resource.delete(:DomainID => @domain.domainid, :ResourceID => resource.resourceid)
      end
    end
  end
end

Version data entries

8 entries across 8 versions & 1 rubygems

Version Path
sunzi-1.5.2 lib/sunzi/dns/linode.rb
sunzi-1.5.1 lib/sunzi/dns/linode.rb
sunzi-1.5.0 lib/sunzi/dns/linode.rb
sunzi-1.4.0 lib/sunzi/dns/linode.rb
sunzi-1.3.0 lib/sunzi/dns/linode.rb
sunzi-1.2.0 lib/sunzi/dns/linode.rb
sunzi-1.1.2 lib/sunzi/dns/linode.rb
sunzi-1.1.1 lib/sunzi/dns/linode.rb