Module: Splicer

Defined in:
lib/splicer.rb,
lib/splicer/zone.rb,
lib/splicer/errors.rb,
lib/splicer/records.rb,
lib/splicer/version.rb,
lib/splicer/provider.rb,
lib/splicer/null_object.rb,
lib/splicer/configuration.rb,
lib/splicer/records/record.rb,
lib/splicer/records/a_record.rb,
lib/splicer/records/mx_record.rb,
lib/splicer/records/ns_record.rb,
lib/splicer/records/ptr_record.rb,
lib/splicer/records/spf_record.rb,
lib/splicer/records/srv_record.rb,
lib/splicer/records/txt_record.rb,
lib/splicer/records/aaaa_record.rb,
lib/splicer/records/cname_record.rb

Overview

Splicer is a simple DNS data structure that allows you to publish changes to one or more dns services if desired.

This was constructed with the need for a way to transition from one dns host to another and allow for a failover solution should your primary provider go down.

Note: You will still have to manually point your name servers over to the new provider.

Available Providers

* splicer-dynect
* splicer-dns_made_easy
* splicer-no_op_provider

Example Configureation

Splicer.configure do |config|
  config.register(Splicer::Dynect::Config.new('company','user','password'))
  config.register(Splicer::DNSMadeEasy::Config.new('user','password'))
  config.logger = Logger.new(STDOUT)
end

See Also:

Author:

Defined Under Namespace

Modules: Errors, Records Classes: Configuration, NullObject, Provider, Zone

Constant Summary collapse

VERSION =
'2.2.2'
@@configuration =
nil
@@logger =
nil

Class Method Summary collapse

Class Method Details

.configure {|@@configuration| ... } ⇒ void

This method returns an undefined value.

Configures the splicer library

Yields:

  • (@@configuration)


42
43
44
45
46
# File 'lib/splicer.rb', line 42

def self.configure &block
  @@configuration = Configuration.new
  yield(@@configuration)
  @@logger = @@configuration.logger
end

.create_record_in_zone(record, zone) ⇒ void

This method returns an undefined value.



72
73
74
75
76
77
# File 'lib/splicer.rb', line 72

def self.create_record_in_zone(record, zone)
  return false if domain_information_is_invalid(record, zone)
  providers.each do |provider|
    provider.create_record_in_zone(record, zone)
  end
end

.create_zone(zone) ⇒ void

This method returns an undefined value.



56
57
58
59
60
61
# File 'lib/splicer.rb', line 56

def self.create_zone(zone)
  return false if zone_is_invalid(zone)
  providers.each do |provider|
    provider.create_zone(zone)
  end
end

.delete_record_in_zone(record, zone) ⇒ void

This method returns an undefined value.

Deletes a record from a zone



103
104
105
106
107
108
# File 'lib/splicer.rb', line 103

def self.delete_record_in_zone(record, zone)
  return false if domain_information_is_invalid(record, zone)
  providers.each do |provider|
    provider.delete_record_in_zone(record, zone)
  end
end

.delete_zone(zone) ⇒ void

This method returns an undefined value.



64
65
66
67
68
69
# File 'lib/splicer.rb', line 64

def self.delete_zone(zone)
  return false if zone_is_invalid(zone)
  providers.each do |provider|
    provider.delete_zone(zone)
  end
end

.domain_information_is_invalid(record, zone) ⇒ Object



116
117
118
# File 'lib/splicer.rb', line 116

def self.domain_information_is_invalid(record, zone)
  !record.is_a?(Splicer::Records::Record) || zone_is_invalid(zone)
end

.get_records_for(zone) ⇒ Object

Fetches list of associated records



96
97
98
99
# File 'lib/splicer.rb', line 96

def self.get_records_for(zone)
  return [] if zone_is_invalid(zone)
  providers.map { |provider| provider.get_records_for(zone) }.flatten
end

.get_zone_for(zone) ⇒ Object

Returns the zone data from domain host



88
89
90
91
92
# File 'lib/splicer.rb', line 88

def self.get_zone_for(zone)
  return false if zone_is_invalid(zone)
  zone_array = providers.map { |provider| provider.get_zone_for(zone) }
  zone_array.compact.first
end

.loggerLogger|Splicer::NullObject

The logger that splicer will use

Returns:



112
113
114
# File 'lib/splicer.rb', line 112

def self.logger
  @@logger || NullObject.new
end

.providersArray<Splicer::Providers::Base>

Gets a list of providers

Returns:

  • (Array<Splicer::Providers::Base>)


50
51
52
53
# File 'lib/splicer.rb', line 50

def self.providers
  @@configuration ||= Configuration.new
  @@configuration.providers
end

.update_record_in_zone(record, zone) ⇒ void

This method returns an undefined value.



80
81
82
83
84
85
# File 'lib/splicer.rb', line 80

def self.update_record_in_zone(record, zone)
  return false if domain_information_is_invalid(record, zone)
  providers.each do |provider|
    provider.update_record_in_zone(record, zone)
  end
end

.zone_is_invalid(zone) ⇒ Object



120
121
122
# File 'lib/splicer.rb', line 120

def self.zone_is_invalid(zone)
  !zone.is_a?(Splicer::Zone)
end