dynect4r 0.2.1 → 0.2.2
Sign up to get free protection for your applications and to get access to all the features.
- data/bin/dynect4r-client +29 -15
- metadata +4 -4
data/bin/dynect4r-client
CHANGED
@@ -13,7 +13,7 @@ options = {
|
|
13
13
|
:password => nil,
|
14
14
|
:zone => nil,
|
15
15
|
:node => Socket.gethostbyname(Socket.gethostname).first,
|
16
|
-
:ttl =>
|
16
|
+
:ttl => 3600,
|
17
17
|
:type => 'A',
|
18
18
|
:rdata => nil,
|
19
19
|
:log_level => 'info',
|
@@ -39,7 +39,7 @@ OptionParser.new do |opts|
|
|
39
39
|
end
|
40
40
|
|
41
41
|
opts.on('-s', '--ttl VALUE', 'Time to Live (default: %s)' % options[:ttl]) do |opt|
|
42
|
-
options[:ttl] = opt
|
42
|
+
options[:ttl] = opt.to_i
|
43
43
|
end
|
44
44
|
|
45
45
|
opts.on('-t', '--type VALUE', 'Record type (default: %s)' % options[:type]) do |opt|
|
@@ -93,33 +93,47 @@ rescue Dynect::DynectError
|
|
93
93
|
end
|
94
94
|
|
95
95
|
# create set of existing records
|
96
|
+
curr_rec_args = {}
|
96
97
|
begin
|
97
|
-
existing_rdata = {}
|
98
98
|
response = c.rest_call(:get, [Dynect::rtype_to_resource(options[:type]), options[:zone], options[:node]])
|
99
99
|
response[:data].each do |url|
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
|
100
|
+
begin
|
101
|
+
record = c.rest_call(:get, url)[:data]
|
102
|
+
rdata = record[:rdata].inject({}) { |memo,(k,v)| memo[k.to_s] = v.to_s; memo }
|
103
|
+
log.info('Found record (Zone="%s", Node="%s" TTL="%s", Type="%s", RData="%s")' %
|
104
|
+
[record[:zone], record[:fqdn], record[:ttl], record[:record_type], rdata.to_json])
|
105
|
+
record_args = {
|
106
|
+
'ttl' => record[:ttl],
|
107
|
+
'rdata' => rdata
|
108
|
+
}
|
109
|
+
curr_rec_args[record_args] = url
|
110
|
+
rescue Dynect::DynectError
|
111
|
+
log.error('Query failed for %s - %s' % [url, $!.message])
|
112
|
+
end
|
104
113
|
end
|
114
|
+
rescue Dynect::NotFoundError
|
115
|
+
log.info('No records found')
|
105
116
|
rescue Dynect::DynectError
|
106
117
|
log.error('Query for records failed - %s' % $!.message)
|
107
118
|
Process.exit(1)
|
108
119
|
end
|
109
120
|
|
110
121
|
# create set of new records
|
111
|
-
|
122
|
+
new_rec_args = Set.new
|
112
123
|
options[:rdata].each do |rdata|
|
113
|
-
|
124
|
+
new_rec_args << {
|
125
|
+
'ttl' => options[:ttl],
|
126
|
+
'rdata' => Dynect::args_for_rtype(options[:type], rdata)
|
127
|
+
}
|
114
128
|
end
|
115
129
|
|
116
130
|
# delete records
|
117
|
-
(
|
131
|
+
(curr_rec_args.keys.to_set - new_rec_args).each do |rec_args|
|
118
132
|
log.warn('%sDeleting record (Zone="%s", Node="%s" TTL="%s", Type="%s", RData="%s")' %
|
119
|
-
[options[:dry_run] ? '(NOT) ' : '', options[:zone], options[:node],
|
133
|
+
[options[:dry_run] ? '(NOT) ' : '', options[:zone], options[:node], rec_args['ttl'], options[:type], rec_args['rdata'].to_json])
|
120
134
|
begin
|
121
135
|
if not options[:dry_run]
|
122
|
-
c.rest_call(:delete,
|
136
|
+
c.rest_call(:delete, curr_rec_args[rec_args])
|
123
137
|
end
|
124
138
|
changes += 1
|
125
139
|
rescue Dynect::DynectError
|
@@ -129,12 +143,12 @@ end
|
|
129
143
|
end
|
130
144
|
|
131
145
|
# add new records
|
132
|
-
(
|
146
|
+
(new_rec_args - curr_rec_args.keys.to_set).each do |rec_args|
|
133
147
|
log.warn('%sCreating record (Zone="%s", Node="%s" TTL="%s", Type="%s", RData="%s")' %
|
134
|
-
[options[:dry_run] ? '(NOT) ' : '', options[:zone], options[:node],
|
148
|
+
[options[:dry_run] ? '(NOT) ' : '', options[:zone], options[:node], rec_args['ttl'], options[:type], rec_args['rdata'].to_json])
|
135
149
|
begin
|
136
150
|
if not options[:dry_run]
|
137
|
-
response = c.rest_call(:post, [Dynect::rtype_to_resource(options[:type]), options[:zone], options[:node]],
|
151
|
+
response = c.rest_call(:post, [Dynect::rtype_to_resource(options[:type]), options[:zone], options[:node]], rec_args)
|
138
152
|
end
|
139
153
|
changes += 1
|
140
154
|
rescue Dynect::DynectError
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: dynect4r
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 19
|
5
5
|
prerelease: false
|
6
6
|
segments:
|
7
7
|
- 0
|
8
8
|
- 2
|
9
|
-
-
|
10
|
-
version: 0.2.
|
9
|
+
- 2
|
10
|
+
version: 0.2.2
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Michael T. Conigliaro
|
@@ -15,7 +15,7 @@ autorequire:
|
|
15
15
|
bindir: bin
|
16
16
|
cert_chain: []
|
17
17
|
|
18
|
-
date: 2010-07-
|
18
|
+
date: 2010-07-09 00:00:00 -06:00
|
19
19
|
default_executable:
|
20
20
|
dependencies:
|
21
21
|
- !ruby/object:Gem::Dependency
|