pdns_api 0.1.1 → 0.1.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/lib/pdns_api/api.rb +8 -0
- data/lib/pdns_api/config.rb +4 -4
- data/lib/pdns_api/metadata.rb +0 -4
- data/lib/pdns_api/version.rb +1 -1
- data/lib/pdns_api/zone.rb +84 -2
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 657948fecf6bc98b2564c4ca8a662fe535effc76
|
4
|
+
data.tar.gz: 5f3d133e97e22df2ff682500d079bc0cbeed06f8
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: b1f5e2794d3d8da64596717ac8beb59328e90eb6774e91561aff3183eb6ed9e5bfb74549056c6247599279b56482046dad74e195692d4d2d11b13a20131978bc
|
7
|
+
data.tar.gz: b4f3d1ac66fd8abe82170710da88927f86d4283018384804188eb715472203347306c227d8d2536a17df995af6286587e7dfbcd2545eb00551c85a37e72ec077
|
data/lib/pdns_api/api.rb
CHANGED
@@ -44,6 +44,14 @@ module PDNS
|
|
44
44
|
#
|
45
45
|
# If +info+ is set this method updates the current information.
|
46
46
|
# The current information is used to create the object.
|
47
|
+
#
|
48
|
+
# Example:
|
49
|
+
# zone.create(
|
50
|
+
# name: zone.id,
|
51
|
+
# kind: 'Native',
|
52
|
+
# dnssec: true,
|
53
|
+
# nameservers: %w( ns0.example.com. ns1.example.com. )
|
54
|
+
# )
|
47
55
|
def create(info = nil)
|
48
56
|
info(info)
|
49
57
|
@http.post("#{@parent.url}/#{@class}", @info)
|
data/lib/pdns_api/config.rb
CHANGED
@@ -25,10 +25,6 @@ module PDNS
|
|
25
25
|
# The name of the configuration option.
|
26
26
|
attr_accessor :name
|
27
27
|
|
28
|
-
##
|
29
|
-
# The value of the configuration option.
|
30
|
-
attr_accessor :value
|
31
|
-
|
32
28
|
##
|
33
29
|
# Disabled common methods
|
34
30
|
undef_method :delete
|
@@ -75,6 +71,10 @@ module PDNS
|
|
75
71
|
#
|
76
72
|
# If +value+ is set, the current +value+ is used.
|
77
73
|
# If +value+ is not set, +value+ is updated and then used.
|
74
|
+
#
|
75
|
+
# Example:
|
76
|
+
# config.change('PowerDNS v3.14159265')
|
77
|
+
#
|
78
78
|
def change(value = nil)
|
79
79
|
value(value)
|
80
80
|
@http.put(@url, @info)
|
data/lib/pdns_api/metadata.rb
CHANGED
data/lib/pdns_api/version.rb
CHANGED
data/lib/pdns_api/zone.rb
CHANGED
@@ -47,6 +47,13 @@ module PDNS
|
|
47
47
|
##
|
48
48
|
# Modifies information (records) of a zone.
|
49
49
|
# Also formats records to match the API requirements.
|
50
|
+
#
|
51
|
+
# Example:
|
52
|
+
# zone.modify([
|
53
|
+
# changetype: 'DELETE',
|
54
|
+
# name: 'www.example.com.',
|
55
|
+
# type: 'A'
|
56
|
+
# ])
|
50
57
|
def modify(rrsets)
|
51
58
|
rrsets.map! do |rrset|
|
52
59
|
rrset = format_records(rrset) if rrset.key?(:records)
|
@@ -92,6 +99,30 @@ module PDNS
|
|
92
99
|
# Adds records to the ones already existing in the zone.
|
93
100
|
#
|
94
101
|
# The existing records are retrieved and merged with the ones given in +rrsets+.
|
102
|
+
#
|
103
|
+
# Elements of +rrsets+ can contain +:records+, which can be:
|
104
|
+
# - A +String+ containing a single record value.
|
105
|
+
# - An +Array+ containing record values.
|
106
|
+
# - An +Array+ containing hashes as specified in the PowerDNS API.
|
107
|
+
#
|
108
|
+
# Example:
|
109
|
+
# zone.add({
|
110
|
+
# name: 'www0.example.com.',
|
111
|
+
# type: 'A',
|
112
|
+
# ttl: 86_400,
|
113
|
+
# records: '127.0.1.1',
|
114
|
+
# }, {
|
115
|
+
# name: 'www1.example.com.',
|
116
|
+
# type: 'A',
|
117
|
+
# ttl: 86_400,
|
118
|
+
# records: ['127.0.1.1', '127.0.0.1'],
|
119
|
+
# }, {
|
120
|
+
# name: 'www2.example.com.',
|
121
|
+
# type: 'A',
|
122
|
+
# ttl: 86_400,
|
123
|
+
# records: [{content: '127.0.1.1'},{content: '127.0.0.1', disabled: true}],
|
124
|
+
# })
|
125
|
+
#
|
95
126
|
def add(*rrsets)
|
96
127
|
# Get current zone data
|
97
128
|
data = get
|
@@ -114,6 +145,32 @@ module PDNS
|
|
114
145
|
|
115
146
|
##
|
116
147
|
# Updates (replaces) records for a name/type combination in the zone.
|
148
|
+
#
|
149
|
+
# +rrsets+ is used to create a changeset.
|
150
|
+
#
|
151
|
+
# Elements of +rrsets+ can contain +:records+, which can be:
|
152
|
+
# - A +String+ containing a single record value.
|
153
|
+
# - An +Array+ containing record values.
|
154
|
+
# - An +Array+ containing hashes as specified in the PowerDNS API.
|
155
|
+
#
|
156
|
+
# Example:
|
157
|
+
# zone.update({
|
158
|
+
# name: 'www0.example.com.',
|
159
|
+
# type: 'A',
|
160
|
+
# ttl: 86_400,
|
161
|
+
# records: '127.0.1.1'
|
162
|
+
# }, {
|
163
|
+
# name: 'www1.example.com.',
|
164
|
+
# type: 'A',
|
165
|
+
# ttl: 86_400,
|
166
|
+
# records: ['127.0.1.1', '127.0.0.1']
|
167
|
+
# }, {
|
168
|
+
# name: 'www2.example.com.',
|
169
|
+
# type: 'A',
|
170
|
+
# ttl: 86_400,
|
171
|
+
# records: [{content: '127.0.1.1'},{content: '127.0.0.1', disabled: true}]
|
172
|
+
# })
|
173
|
+
#
|
117
174
|
def update(*rrsets)
|
118
175
|
# Set type and format records
|
119
176
|
rrsets.map! do |rrset|
|
@@ -126,6 +183,16 @@ module PDNS
|
|
126
183
|
|
127
184
|
##
|
128
185
|
# Removes all records for a name/type combination from the zone.
|
186
|
+
#
|
187
|
+
# Example:
|
188
|
+
# zone.remove({
|
189
|
+
# name: 'www0.example.com.',
|
190
|
+
# type: 'A'
|
191
|
+
# }, {
|
192
|
+
# name: 'www1.example.com.',
|
193
|
+
# type: 'A'
|
194
|
+
# })
|
195
|
+
#
|
129
196
|
def remove(*rrsets)
|
130
197
|
# Set type and format records
|
131
198
|
rrsets.map! do |rrset|
|
@@ -142,6 +209,17 @@ module PDNS
|
|
142
209
|
#
|
143
210
|
# If +kind+ is set a +Metadata+ object is returned using the provided +kind+.
|
144
211
|
# If +value+ is set as well, a complete Metadata object is returned.
|
212
|
+
#
|
213
|
+
# Example:
|
214
|
+
# # Retrieve all metadata in a hash
|
215
|
+
# zone.metadata
|
216
|
+
# # Create a metadata object
|
217
|
+
# meta = zone.metadata('ALLOW-AXFR-FROM')
|
218
|
+
# puts meta.get
|
219
|
+
# # Create a metadata object with a value
|
220
|
+
# meta = zone.metadata('ALLOW-AXFR-FROM','AUTO-NS')
|
221
|
+
# meta.change
|
222
|
+
#
|
145
223
|
def metadata(kind = nil, value = nil)
|
146
224
|
return Metadata.new(@http, self, kind, value) unless kind.nil? || value.nil?
|
147
225
|
return Metadata.new(@http, self, kind) unless kind.nil?
|
@@ -163,6 +241,10 @@ module PDNS
|
|
163
241
|
# containing +CryptoKey+ objects.
|
164
242
|
#
|
165
243
|
# If +id+ is set a +CryptoKey+ object with the provided ID is returned.
|
244
|
+
#
|
245
|
+
# Example:
|
246
|
+
# ckeys = zone.cryptokeys
|
247
|
+
# ckey = zone.cryptokey(12)
|
166
248
|
def cryptokeys(id = nil)
|
167
249
|
return CryptoKey.new(@http, self, id) unless id.nil?
|
168
250
|
|
@@ -214,8 +296,8 @@ module PDNS
|
|
214
296
|
# Returns the records matching the ones in +rrset+ from +data+.
|
215
297
|
# +data+ should be the result from +get+.
|
216
298
|
def current_records(rrset, data)
|
217
|
-
# Get the records from the data, `records` is v0, `
|
218
|
-
records = data[:records] || data[:
|
299
|
+
# Get the records from the data, `records` is v0, `rrsets` is v1
|
300
|
+
records = data[:records] || data[:rrsets]
|
219
301
|
|
220
302
|
# Select records matching type/name
|
221
303
|
current = records.select { |r| r[:name] == rrset[:name] && r[:type] == rrset[:type] }
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: pdns_api
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Silke Hofstra
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-05-
|
11
|
+
date: 2016-05-31 00:00:00.000000000 Z
|
12
12
|
dependencies: []
|
13
13
|
description: A gem for manipulation of DNS through the PowerDNS API
|
14
14
|
email: silke.ruby@slxh.nl
|