dynect4r 0.2.1 → 0.2.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (2) hide show
  1. data/bin/dynect4r-client +29 -15
  2. metadata +4 -4
@@ -13,7 +13,7 @@ options = {
13
13
  :password => nil,
14
14
  :zone => nil,
15
15
  :node => Socket.gethostbyname(Socket.gethostname).first,
16
- :ttl => 86400,
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
- rdata = c.rest_call(:get, url)[:data][:rdata].inject({}) { |memo,(k,v)| memo[k.to_s] = v.to_s; memo }
101
- existing_rdata[rdata] = url
102
- log.info('Found record (Zone="%s", Node="%s" TTL="%s", Type="%s", RData="%s")' %
103
- [options[:zone], options[:node], options[:ttl], options[:type], rdata.to_json])
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
- new_rdata = Set.new
122
+ new_rec_args = Set.new
112
123
  options[:rdata].each do |rdata|
113
- new_rdata << Dynect::args_for_rtype(options[:type], rdata)
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
- (existing_rdata.keys.to_set - new_rdata).each do |rdata|
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], options[:ttl], options[:type], rdata.to_json])
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, existing_rdata[rdata])
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
- (new_rdata - existing_rdata.keys.to_set).each do |rdata|
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], options[:ttl], options[:type], rdata.to_json])
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]], { 'rdata' => rdata, 'ttl' => options[:ttl] })
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: 21
4
+ hash: 19
5
5
  prerelease: false
6
6
  segments:
7
7
  - 0
8
8
  - 2
9
- - 1
10
- version: 0.2.1
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-08 00:00:00 -06:00
18
+ date: 2010-07-09 00:00:00 -06:00
19
19
  default_executable:
20
20
  dependencies:
21
21
  - !ruby/object:Gem::Dependency