dynect4r 0.2.1 → 0.2.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.
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