Class: Splicer::Dynect::Provider

Inherits:
Provider
  • Object
show all
Defined in:
lib/splicer/dynect/provider.rb

Overview

Author:

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(config) ⇒ Provider

Returns a new instance of Provider.



8
9
10
# File 'lib/splicer/dynect/provider.rb', line 8

def initialize(config)
  @client = Client.new(config.customer, config.username, config.password)
end

Instance Attribute Details

#clientObject (readonly)

Returns the value of attribute client.



6
7
8
# File 'lib/splicer/dynect/provider.rb', line 6

def client
  @client
end

Instance Method Details

#create_record_in_zone(record, zone) ⇒ Object



62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
# File 'lib/splicer/dynect/provider.rb', line 62

def create_record_in_zone(record, zone)
  Splicer.logger.debug "[SPLICER][DYNECT] #create_record_in_zone record=#{record.inspect} zone=#{zone.inspect}"
  client.

  begin
    get_zone(zone)
  rescue
    client.post "Zone/#{zone.name}", rname: "admin@#{zone.name}", ttl: zone.ttl
  end

  create_record(record, zone)
  publish_zone(zone)
ensure
  client.logout
end

#create_zone(zone) ⇒ Object



12
13
14
15
16
17
18
19
20
21
22
23
24
25
# File 'lib/splicer/dynect/provider.rb', line 12

def create_zone(zone)
  Splicer.logger.debug "[SPLICER][DYNECT] #create_zone zone=#{zone.inspect}"
  client.

  client.post "Zone/#{zone.name}", rname: "admin@#{zone.name}", ttl: zone.ttl

  zone.records.each do |record|
    create_record(record, zone)
  end

  publish_zone(zone)
ensure
  client.logout
end

#delete_record_in_zone(record, zone) ⇒ Object



40
41
42
43
44
45
46
47
48
49
50
# File 'lib/splicer/dynect/provider.rb', line 40

def delete_record_in_zone(record, zone)
  Splicer.logger.debug "[SPLICER][DYNECT] #delete_record_in_zone record=#{record.inspect} zone=#{zone.inspect}"
  return false unless can_delete?(record)
  client.
  id = find_record_id(record, zone)
  url = record_resource_url(record, zone).concat("/#{id}")
  client.delete(url)
  publish_zone(zone)
ensure
  client.logout
end

#delete_zone(zone) ⇒ Object



27
28
29
30
31
32
33
34
35
36
37
38
# File 'lib/splicer/dynect/provider.rb', line 27

def delete_zone(zone)
  Splicer.logger.debug "[SPLICER][DYNECT] #delete_zone zone=#{zone.inspect}"
  client.
  begin
    get_zone(zone)
    client.delete "Zone/#{zone.name}"
  rescue Splicer::Errors::RequestError => error
    Splicer.logger.debug "[SPLICER][DYNECT] response=#{error}"
  end
ensure
  client.logout
end

#update_record_in_zone(record, zone) ⇒ Object



52
53
54
55
56
57
58
59
60
# File 'lib/splicer/dynect/provider.rb', line 52

def update_record_in_zone(record, zone)
  Splicer.logger.debug "[SPLICER][DYNECT] #update_record_in_zone record=#{record.inspect} zone=#{zone.inspect}"
  return false unless can_update?(record)
  client.
  update_record(record, zone)
  publish_zone(zone)
ensure
  client.logout
end