Sha256: e4f6c746b72fbe0a01d2f79f44ce14ca12ca6a482ea72600b4a49be28040d3b8

Contents?: true

Size: 1.03 KB

Versions: 5

Compression:

Stored size: 1.03 KB

Contents

require "net/validations"

module Net
  class Record
    include Net::Validations
    attr_accessor :hostname, :proxy, :logger

    def initialize opts = {}
      # set all attributes
      opts.each do |k,v|
        eval("self.#{k}= v") if self.respond_to?("#{k}=")
      end if opts

      raise Net::LeaseConflict.new("#{self.mac}/#{self.ip}") if opts['state']

      self.logger ||= Rails.logger
      raise "Must define a hostname" if hostname.blank?
      raise "Must define a proxy"    if proxy.nil?
    end

    def inspect
      to_s
    end

     # Do we have conflicting entries?
    def conflicting?
      !conflicts.empty?
    end

    # clears internal cache
    def reload!
      @conflicts = nil
    end

    # Compares two records by their attributes
    def == other
      return false unless other.respond_to? :attrs
      self.attrs == other.attrs
    end

  end

  class Error < RuntimeError; end

  class Conflict < Exception
    attr_accessor :type, :expected, :actual, :message
  end

  class LeaseConflict < RuntimeError; end
end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
foreman_discovery-1.0.0 test/foreman_app/lib/net.rb
foreman_discovery-1.0.0.rc4 test/foreman_app/lib/net.rb
foreman_discovery-1.0.0.rc3 test/foreman_app/lib/net.rb
foreman_discovery-1.0.0.rc2 test/foreman_app/lib/net.rb
foreman_discovery-1.0.0.rc1 test/foreman_app/lib/net.rb