ultradns_updater 0.0.19 → 0.0.20
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.
- data/apiary.apib +34 -0
- data/config/sample.config.yaml +5 -1
- data/lib/ultradns_updater/cli.rb +7 -5
- data/lib/ultradns_updater/ec2.rb +9 -0
- data/lib/ultradns_updater/strategies/configured.rb +2 -2
- data/lib/ultradns_updater/strategies/ec2.rb +1 -1
- data/lib/ultradns_updater/strategies/hostname.rb +4 -2
- data/lib/ultradns_updater/strategies/multiple.rb +50 -0
- data/lib/ultradns_updater/strategies/openstack.rb +37 -0
- data/lib/ultradns_updater/strategies/update_strategy.rb +12 -2
- data/lib/ultradns_updater/strategies.rb +21 -9
- data/lib/ultradns_updater/version.rb +1 -1
- data/spec/lib/configured_spec.rb +3 -2
- data/spec/lib/hostname_spec.rb +3 -3
- data/spec/lib/ip_info_spec.rb +3 -3
- data/spec/lib/multiple_spec.rb +49 -0
- data/spec/lib/openstack_spec.rb +42 -0
- data/spec/lib/strategies_spec.rb +8 -0
- metadata +56 -19
data/apiary.apib
ADDED
@@ -0,0 +1,34 @@
|
|
1
|
+
HOST: http://www.google.com/
|
2
|
+
|
3
|
+
--- Sample API v2 ---
|
4
|
+
---
|
5
|
+
Welcome to the our sample API documentation. All comments can be written in (support [Markdown](http://daringfireball.net/projects/markdown/syntax) syntax)
|
6
|
+
---
|
7
|
+
|
8
|
+
--
|
9
|
+
Shopping Cart Resources
|
10
|
+
The following is a section of resources related to the shopping cart
|
11
|
+
--
|
12
|
+
List products added into your shopping-cart. (comment block again in Markdown)
|
13
|
+
GET /shopping-cart
|
14
|
+
< 200
|
15
|
+
< Content-Type: application/json
|
16
|
+
{ "items": [
|
17
|
+
{ "url": "/shopping-cart/1", "product":"2ZY48XPZ", "quantity": 1, "name": "New socks", "price": 1.25 }
|
18
|
+
] }
|
19
|
+
|
20
|
+
Save new products in your shopping cart
|
21
|
+
POST /shopping-cart
|
22
|
+
> Content-Type: application/json
|
23
|
+
{ "product":"1AB23ORM", "quantity": 2 }
|
24
|
+
< 201
|
25
|
+
< Content-Type: application/json
|
26
|
+
{ "status": "created", "url": "/shopping-cart/2" }
|
27
|
+
|
28
|
+
|
29
|
+
-- Payment Resources --
|
30
|
+
This resource allows you to submit payment information to process your *shopping cart* items
|
31
|
+
POST /payment
|
32
|
+
{ "cc": "12345678900", "cvc": "123", "expiry": "0112" }
|
33
|
+
< 200
|
34
|
+
{ "receipt": "/payment/receipt/1" }
|
data/config/sample.config.yaml
CHANGED
@@ -1,11 +1,15 @@
|
|
1
1
|
---
|
2
2
|
update_strategy:
|
3
|
-
use: 'ec2' # choose strategy to use
|
3
|
+
use: 'ec2' # choose strategy to use: ec2, hostname, configured, or more than one to attempt: ['ec2', 'openstack']
|
4
|
+
# strategies follow:
|
5
|
+
# Other strategies defined below:
|
4
6
|
ec2: # read from ec2
|
5
7
|
access_key_id : 'ACCESS KEY ID'
|
6
8
|
secret_access_key : 'ACCESS KEY'
|
7
9
|
name_tag : 'Name' # tag to use in AWS for the DNS CNAME or A & hostname (fqdn)
|
8
10
|
iface: 'auto' # for VPC, the interface to use if no public hostname is available
|
11
|
+
openstack:
|
12
|
+
dhcp_domain: '.novalocal'
|
9
13
|
hostname: # read from the hostname (fqdn)
|
10
14
|
iface: 'eth0' # interface to use to use the IP to map to the hostname
|
11
15
|
# 'auto' is also possible pick the interface that has connectivity
|
data/lib/ultradns_updater/cli.rb
CHANGED
@@ -22,11 +22,13 @@ class UltraDNSUpdater::CLI
|
|
22
22
|
def self.run
|
23
23
|
opts = parse(ARGV)
|
24
24
|
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
25
|
+
if opts[:force_strategy]
|
26
|
+
opts[:update_strategy][:use] = opts[:force_strategy]
|
27
|
+
end
|
28
|
+
|
29
|
+
ultradns = UltraDNSUpdater::UltraDNS.new(opts[:ultradns])
|
30
|
+
strategy_klass = UltraDNSUpdater::Strategies.strategy(opts[:update_strategy][:use])
|
31
|
+
hostname = strategy_klass.new(ultradns, opts[:update_strategy], @logger).update()
|
30
32
|
|
31
33
|
if hostname.nil?
|
32
34
|
error_text = "Error Creating or Updating CNAME for hostname: #{hostname} using: #{strategy_name}"
|
data/lib/ultradns_updater/ec2.rb
CHANGED
@@ -47,6 +47,15 @@ class UltraDNSUpdater::Ec2
|
|
47
47
|
@public_hostname
|
48
48
|
end
|
49
49
|
|
50
|
+
def get_instance_public_ipv4
|
51
|
+
@public_ipv4 ||= begin
|
52
|
+
response = HTTPI.get(URI("#{EC2_META_DATA_URL}/public-ipv4").to_s)
|
53
|
+
response.code == 200 ? response.body : ''
|
54
|
+
end
|
55
|
+
@logger.debug("Public IPv4 = #{@public_ipv4}")
|
56
|
+
@public_ipv4
|
57
|
+
end
|
58
|
+
|
50
59
|
def get_name_tag
|
51
60
|
dns_cname = ''
|
52
61
|
ec2.tags.filter('resource-id', get_instance_id()).each do |tag|
|
@@ -14,8 +14,8 @@
|
|
14
14
|
|
15
15
|
module UltraDNSUpdater::Strategies
|
16
16
|
class Configured < UpdateStrategy
|
17
|
-
def update(
|
18
|
-
hostname = strategy_config[:name]
|
17
|
+
def update()
|
18
|
+
hostname = strategy_config()[:name]
|
19
19
|
precondition.not_empty(hostname)
|
20
20
|
|
21
21
|
ip = iface_ip(strategy_config)
|
@@ -17,8 +17,10 @@ require 'ultradns_updater/strategies/configured'
|
|
17
17
|
|
18
18
|
module UltraDNSUpdater::Strategies
|
19
19
|
class Hostname < Configured
|
20
|
-
|
21
|
-
|
20
|
+
|
21
|
+
def strategy_config
|
22
|
+
super().merge({:name => Socket::gethostname()})
|
22
23
|
end
|
24
|
+
|
23
25
|
end
|
24
26
|
end
|
@@ -0,0 +1,50 @@
|
|
1
|
+
# Copyright 2012 NeuStar, Inc. All rights reserved.
|
2
|
+
#
|
3
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
4
|
+
# you may not use this file except in compliance with the License.
|
5
|
+
# You may obtain a copy of the License at
|
6
|
+
#
|
7
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
8
|
+
#
|
9
|
+
# Unless required by applicable law or agreed to in writing, software
|
10
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
11
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
12
|
+
# See the License for the specific language governing permissions and
|
13
|
+
# limitations under the License.
|
14
|
+
|
15
|
+
module UltraDNSUpdater::Strategies
|
16
|
+
class Multiple < UpdateStrategy
|
17
|
+
def self.factory(strategies)
|
18
|
+
clazz = Class.new(UltraDNSUpdater::Strategies::Multiple)
|
19
|
+
clazz.send(:define_method, :strategies) {strategies}
|
20
|
+
clazz
|
21
|
+
end
|
22
|
+
|
23
|
+
def initialize(ultradns, strategy_section, logger = ::Logger.new(STDOUT))
|
24
|
+
super(ultradns, strategy_section, logger)
|
25
|
+
@strategy_instances = []
|
26
|
+
strategies.each do |strategy|
|
27
|
+
@strategy_instances << strategy.new(ultradns, strategy_section, logger)
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
31
|
+
# should be overwritten
|
32
|
+
def strategies; []; end
|
33
|
+
|
34
|
+
def update()
|
35
|
+
@strategy_instances.each do |strategy|
|
36
|
+
begin
|
37
|
+
strategy_config[:logger].info("Trying strategy #{strategy.class.name}") if strategy_config[:logger]
|
38
|
+
result = strategy.update()
|
39
|
+
return result if result
|
40
|
+
rescue
|
41
|
+
# ignore, try next
|
42
|
+
end
|
43
|
+
end
|
44
|
+
nil
|
45
|
+
end
|
46
|
+
|
47
|
+
end
|
48
|
+
end
|
49
|
+
|
50
|
+
|
@@ -0,0 +1,37 @@
|
|
1
|
+
# Copyright 2012 NeuStar, Inc. All rights reserved.
|
2
|
+
#
|
3
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
4
|
+
# you may not use this file except in compliance with the License.
|
5
|
+
# You may obtain a copy of the License at
|
6
|
+
#
|
7
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
8
|
+
#
|
9
|
+
# Unless required by applicable law or agreed to in writing, software
|
10
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
11
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
12
|
+
# See the License for the specific language governing permissions and
|
13
|
+
# limitations under the License.
|
14
|
+
|
15
|
+
module UltraDNSUpdater::Strategies
|
16
|
+
class Openstack < UpdateStrategy
|
17
|
+
|
18
|
+
def update()
|
19
|
+
opts = {:access_key_id => nil,
|
20
|
+
:secret_access_key => nil,
|
21
|
+
:logger => strategy_config()[:logger]
|
22
|
+
}
|
23
|
+
ec2 = UltraDNSUpdater::Ec2.new(opts)
|
24
|
+
|
25
|
+
dhcp_domain = strategy_config()[:dhcp_domain]
|
26
|
+
name_value = ec2.get_instance_public_hostname.gsub(/#{dhcp_domain}/, '')
|
27
|
+
ip = ec2.get_instance_public_ipv4
|
28
|
+
|
29
|
+
result = nil
|
30
|
+
if name_value && ip && ultradns.create_or_update_a(name_value, ip)
|
31
|
+
result = name_value
|
32
|
+
end
|
33
|
+
result
|
34
|
+
end
|
35
|
+
|
36
|
+
end
|
37
|
+
end
|
@@ -15,18 +15,28 @@
|
|
15
15
|
class UltraDNSUpdater::Strategies::UpdateStrategy
|
16
16
|
include UltraDNSUpdater::Preconditions
|
17
17
|
|
18
|
-
def initialize(ultradns)
|
18
|
+
def initialize(ultradns, strategy_section, logger = ::Logger.new(STDOUT))
|
19
19
|
@ultradns = ultradns
|
20
|
+
@strategy_section = strategy_section
|
21
|
+
@logger = logger
|
20
22
|
end
|
21
23
|
|
22
24
|
# update ultradns based on the configuration provided
|
23
25
|
# returns: the hostname applied or else nil
|
24
|
-
def update(
|
26
|
+
def update(); end
|
25
27
|
|
26
28
|
def ultradns
|
27
29
|
@ultradns
|
28
30
|
end
|
29
31
|
|
32
|
+
def strategy_to_use
|
33
|
+
@strategy_section[:use]
|
34
|
+
end
|
35
|
+
|
36
|
+
def strategy_config
|
37
|
+
@strategy_section[strategy_to_use.to_sym].merge({:logger => @logger}) rescue nil
|
38
|
+
end
|
39
|
+
|
30
40
|
def iface_ip(strategy_config)
|
31
41
|
ip = nil
|
32
42
|
if strategy_config[:iface] == 'auto'
|
@@ -17,22 +17,34 @@ module UltraDNSUpdater::Strategies; end
|
|
17
17
|
|
18
18
|
require 'ultradns_updater/strategies/update_strategy'
|
19
19
|
require 'ultradns_updater/strategies/ec2'
|
20
|
+
require 'ultradns_updater/strategies/openstack'
|
21
|
+
require 'ultradns_updater/strategies/multiple'
|
20
22
|
require 'ultradns_updater/strategies/configured'
|
21
23
|
require 'ultradns_updater/strategies/hostname'
|
22
24
|
|
23
25
|
module UltraDNSUpdater::Strategies
|
24
26
|
|
25
27
|
def self.strategy(strategy_name)
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
UltraDNSUpdater::Strategies::
|
32
|
-
when :configured
|
33
|
-
UltraDNSUpdater::Strategies::Configured
|
28
|
+
if strategy_name.kind_of?(Array)
|
29
|
+
strategies = []
|
30
|
+
strategy_name.each do |strategy_item|
|
31
|
+
strategies << strategy(strategy_item)
|
32
|
+
end
|
33
|
+
UltraDNSUpdater::Strategies::Multiple.factory(strategies)
|
34
34
|
else
|
35
|
-
|
35
|
+
strategy_sym = strategy_name.to_sym rescue nil
|
36
|
+
case strategy_sym
|
37
|
+
when :ec2
|
38
|
+
UltraDNSUpdater::Strategies::Ec2
|
39
|
+
when :openstack
|
40
|
+
UltraDNSUpdater::Strategies::Openstack
|
41
|
+
when :hostname
|
42
|
+
UltraDNSUpdater::Strategies::Hostname
|
43
|
+
when :configured
|
44
|
+
UltraDNSUpdater::Strategies::Configured
|
45
|
+
else
|
46
|
+
raise "No strategy found for: #{strategy_name}"
|
47
|
+
end
|
36
48
|
end
|
37
49
|
end
|
38
50
|
|
data/spec/lib/configured_spec.rb
CHANGED
@@ -25,10 +25,11 @@ describe UltraDNSUpdater::Strategies::Configured do
|
|
25
25
|
|
26
26
|
ultradns = Object.new
|
27
27
|
ultradns.should_receive(:create_or_update_a).with(name, ip_addr)
|
28
|
-
configured_strategy = UltraDNSUpdater::Strategies::Configured.new(ultradns
|
28
|
+
configured_strategy = UltraDNSUpdater::Strategies::Configured.new(ultradns,
|
29
|
+
{:use => 'conf', :conf => {:iface => 'eth0', :name => name}})
|
29
30
|
configured_strategy.stub(:iface_ip).and_return(ip_addr)
|
30
31
|
|
31
|
-
configured_strategy.update(
|
32
|
+
configured_strategy.update()
|
32
33
|
|
33
34
|
ensure
|
34
35
|
|
data/spec/lib/hostname_spec.rb
CHANGED
@@ -25,12 +25,12 @@ describe UltraDNSUpdater::Strategies::Hostname do
|
|
25
25
|
|
26
26
|
ultradns = Object.new
|
27
27
|
ultradns.should_receive(:create_or_update_a).with(hostname, ip_addr)
|
28
|
-
hostname_strategy = UltraDNSUpdater::Strategies::Hostname.new(ultradns
|
28
|
+
hostname_strategy = UltraDNSUpdater::Strategies::Hostname.new(ultradns,
|
29
|
+
{:use => 'host', :host => {:iface => 'eth0'}})
|
29
30
|
hostname_strategy.stub(:iface_ip).and_return(ip_addr)
|
30
31
|
Socket.stub(:gethostname).and_return(hostname)
|
31
32
|
Socket.gethostname.should == hostname
|
32
|
-
hostname_strategy.update(
|
33
|
-
|
33
|
+
hostname_strategy.update()
|
34
34
|
ensure
|
35
35
|
Socket.unstub(:gethostname)
|
36
36
|
end
|
data/spec/lib/ip_info_spec.rb
CHANGED
@@ -27,9 +27,9 @@ describe UltraDNSUpdater::IpInfo do
|
|
27
27
|
|
28
28
|
iface = "eth0"
|
29
29
|
if RUBY_PLATFORM =~ /darwin/
|
30
|
-
iface = "
|
30
|
+
iface = "en0"
|
31
31
|
end
|
32
|
-
|
32
|
+
|
33
33
|
UltraDNSUpdater::IpInfo.ipv4_for_iface(iface).should_not == ''
|
34
34
|
UltraDNSUpdater::IpInfo.ipv4_for_iface(iface).should match(/\d+\.\d+\.\d+\.\d+/)
|
35
35
|
end
|
@@ -38,7 +38,7 @@ describe UltraDNSUpdater::IpInfo do
|
|
38
38
|
|
39
39
|
iface = "eth0" # probably have eth0 on linux..
|
40
40
|
if RUBY_PLATFORM =~ /darwin/
|
41
|
-
iface = "
|
41
|
+
iface = "en0"
|
42
42
|
end
|
43
43
|
|
44
44
|
UltraDNSUpdater::IpInfo.ipv6_for_iface(iface).should_not == ''
|
@@ -0,0 +1,49 @@
|
|
1
|
+
# Copyright 2012 NeuStar, Inc. All rights reserved.
|
2
|
+
#
|
3
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
4
|
+
# you may not use this file except in compliance with the License.
|
5
|
+
# You may obtain a copy of the License at
|
6
|
+
#
|
7
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
8
|
+
#
|
9
|
+
# Unless required by applicable law or agreed to in writing, software
|
10
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
11
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
12
|
+
# See the License for the specific language governing permissions and
|
13
|
+
# limitations under the License.
|
14
|
+
|
15
|
+
require 'spec_helper'
|
16
|
+
require 'fakeweb'
|
17
|
+
require 'ostruct'
|
18
|
+
|
19
|
+
|
20
|
+
describe UltraDNSUpdater::Strategies::Multiple do
|
21
|
+
it "should try multiple strategies" do
|
22
|
+
begin
|
23
|
+
fake_name = "openstack-iad01-az02.neustar.biz"
|
24
|
+
FakeWeb.register_uri(:get, UltraDNSUpdater::Ec2::EC2_META_DATA_URL + "/public-hostname", :body => fake_name)
|
25
|
+
fake_ipv4 = "10.1.2.3"
|
26
|
+
FakeWeb.register_uri(:get, UltraDNSUpdater::Ec2::EC2_META_DATA_URL + "/public-ipv4", :body => fake_ipv4)
|
27
|
+
|
28
|
+
|
29
|
+
ultradns = Object.new
|
30
|
+
ultradns.should_receive(:create_or_update_a).with(fake_name, fake_ipv4).and_return()
|
31
|
+
|
32
|
+
clazz_bad = Class.new(UltraDNSUpdater::Strategies::UpdateStrategy) do
|
33
|
+
def update()
|
34
|
+
raise "Fake Error"
|
35
|
+
end
|
36
|
+
end
|
37
|
+
|
38
|
+
multiple_factory = UltraDNSUpdater::Strategies::Multiple.factory(
|
39
|
+
[clazz_bad, UltraDNSUpdater::Strategies::Openstack])
|
40
|
+
|
41
|
+
openstack_strategy = multiple_factory.new(ultradns,
|
42
|
+
{ :use => 'conf', :conf => {} }
|
43
|
+
)
|
44
|
+
openstack_strategy.update().should == fake_name
|
45
|
+
ensure
|
46
|
+
FakeWeb.clean_registry
|
47
|
+
end
|
48
|
+
end
|
49
|
+
end
|
@@ -0,0 +1,42 @@
|
|
1
|
+
# Copyright 2012 NeuStar, Inc. All rights reserved.
|
2
|
+
#
|
3
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
4
|
+
# you may not use this file except in compliance with the License.
|
5
|
+
# You may obtain a copy of the License at
|
6
|
+
#
|
7
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
8
|
+
#
|
9
|
+
# Unless required by applicable law or agreed to in writing, software
|
10
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
11
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
12
|
+
# See the License for the specific language governing permissions and
|
13
|
+
# limitations under the License.
|
14
|
+
|
15
|
+
require 'spec_helper'
|
16
|
+
require 'fakeweb'
|
17
|
+
require 'ostruct'
|
18
|
+
|
19
|
+
|
20
|
+
describe UltraDNSUpdater::Strategies::Openstack do
|
21
|
+
it "should update ultradns openstack information" do
|
22
|
+
begin
|
23
|
+
dhcp_domain = '.novalocal'
|
24
|
+
fake_name = "openstack-iad01-az02.neustar.biz"
|
25
|
+
FakeWeb.register_uri(:get, UltraDNSUpdater::Ec2::EC2_META_DATA_URL + "/public-hostname",
|
26
|
+
:body => (fake_name + dhcp_domain))
|
27
|
+
fake_ipv4 = "10.1.2.3"
|
28
|
+
FakeWeb.register_uri(:get, UltraDNSUpdater::Ec2::EC2_META_DATA_URL + "/public-ipv4", :body => fake_ipv4)
|
29
|
+
|
30
|
+
|
31
|
+
ultradns = Object.new
|
32
|
+
ultradns.should_receive(:create_or_update_a).with(fake_name, fake_ipv4).and_return()
|
33
|
+
openstack_strategy = UltraDNSUpdater::Strategies::Openstack.new(ultradns,
|
34
|
+
{ :use => 'conf', :conf => {:dhcp_domain => dhcp_domain } }
|
35
|
+
)
|
36
|
+
openstack_strategy.update().should == fake_name
|
37
|
+
ensure
|
38
|
+
FakeWeb.clean_registry
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
42
|
+
|
data/spec/lib/strategies_spec.rb
CHANGED
@@ -27,5 +27,13 @@ describe UltraDNSUpdater::Strategies do
|
|
27
27
|
expect { UltraDNSUpdater::Strategies.strategy(nil) }.to raise_error(RuntimeError)
|
28
28
|
expect { UltraDNSUpdater::Strategies.strategy(:blah) }.to raise_error(RuntimeError)
|
29
29
|
end
|
30
|
+
|
31
|
+
it "should support multiple strategies" do
|
32
|
+
UltraDNSUpdater::Strategies.strategy(['ec2', 'openstack']).should_not == nil
|
33
|
+
multiple = UltraDNSUpdater::Strategies.strategy(['ec2', 'openstack'])
|
34
|
+
multiple.new(nil, nil).strategies.should ==
|
35
|
+
[UltraDNSUpdater::Strategies::Ec2, UltraDNSUpdater::Strategies::Openstack]
|
36
|
+
end
|
37
|
+
|
30
38
|
end
|
31
39
|
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ultradns_updater
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.20
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,11 +9,11 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-
|
12
|
+
date: 2012-11-05 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: aws-sdk
|
16
|
-
requirement:
|
16
|
+
requirement: !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ~>
|
@@ -21,32 +21,47 @@ dependencies:
|
|
21
21
|
version: 1.5.6
|
22
22
|
type: :runtime
|
23
23
|
prerelease: false
|
24
|
-
version_requirements:
|
24
|
+
version_requirements: !ruby/object:Gem::Requirement
|
25
|
+
none: false
|
26
|
+
requirements:
|
27
|
+
- - ~>
|
28
|
+
- !ruby/object:Gem::Version
|
29
|
+
version: 1.5.6
|
25
30
|
- !ruby/object:Gem::Dependency
|
26
31
|
name: wasabi
|
27
|
-
requirement:
|
32
|
+
requirement: !ruby/object:Gem::Requirement
|
28
33
|
none: false
|
29
34
|
requirements:
|
30
|
-
- - =
|
35
|
+
- - '='
|
31
36
|
- !ruby/object:Gem::Version
|
32
37
|
version: 2.5.0
|
33
38
|
type: :runtime
|
34
39
|
prerelease: false
|
35
|
-
version_requirements:
|
40
|
+
version_requirements: !ruby/object:Gem::Requirement
|
41
|
+
none: false
|
42
|
+
requirements:
|
43
|
+
- - '='
|
44
|
+
- !ruby/object:Gem::Version
|
45
|
+
version: 2.5.0
|
36
46
|
- !ruby/object:Gem::Dependency
|
37
47
|
name: savon
|
38
|
-
requirement:
|
48
|
+
requirement: !ruby/object:Gem::Requirement
|
39
49
|
none: false
|
40
50
|
requirements:
|
41
|
-
- - =
|
51
|
+
- - '='
|
42
52
|
- !ruby/object:Gem::Version
|
43
53
|
version: 1.1.0
|
44
54
|
type: :runtime
|
45
55
|
prerelease: false
|
46
|
-
version_requirements:
|
56
|
+
version_requirements: !ruby/object:Gem::Requirement
|
57
|
+
none: false
|
58
|
+
requirements:
|
59
|
+
- - '='
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: 1.1.0
|
47
62
|
- !ruby/object:Gem::Dependency
|
48
63
|
name: rake
|
49
|
-
requirement:
|
64
|
+
requirement: !ruby/object:Gem::Requirement
|
50
65
|
none: false
|
51
66
|
requirements:
|
52
67
|
- - ! '>='
|
@@ -54,10 +69,15 @@ dependencies:
|
|
54
69
|
version: '0'
|
55
70
|
type: :development
|
56
71
|
prerelease: false
|
57
|
-
version_requirements:
|
72
|
+
version_requirements: !ruby/object:Gem::Requirement
|
73
|
+
none: false
|
74
|
+
requirements:
|
75
|
+
- - ! '>='
|
76
|
+
- !ruby/object:Gem::Version
|
77
|
+
version: '0'
|
58
78
|
- !ruby/object:Gem::Dependency
|
59
79
|
name: rspec
|
60
|
-
requirement:
|
80
|
+
requirement: !ruby/object:Gem::Requirement
|
61
81
|
none: false
|
62
82
|
requirements:
|
63
83
|
- - ! '>='
|
@@ -65,10 +85,15 @@ dependencies:
|
|
65
85
|
version: '0'
|
66
86
|
type: :development
|
67
87
|
prerelease: false
|
68
|
-
version_requirements:
|
88
|
+
version_requirements: !ruby/object:Gem::Requirement
|
89
|
+
none: false
|
90
|
+
requirements:
|
91
|
+
- - ! '>='
|
92
|
+
- !ruby/object:Gem::Version
|
93
|
+
version: '0'
|
69
94
|
- !ruby/object:Gem::Dependency
|
70
95
|
name: fakeweb
|
71
|
-
requirement:
|
96
|
+
requirement: !ruby/object:Gem::Requirement
|
72
97
|
none: false
|
73
98
|
requirements:
|
74
99
|
- - ! '>='
|
@@ -76,7 +101,12 @@ dependencies:
|
|
76
101
|
version: '0'
|
77
102
|
type: :development
|
78
103
|
prerelease: false
|
79
|
-
version_requirements:
|
104
|
+
version_requirements: !ruby/object:Gem::Requirement
|
105
|
+
none: false
|
106
|
+
requirements:
|
107
|
+
- - ! '>='
|
108
|
+
- !ruby/object:Gem::Version
|
109
|
+
version: '0'
|
80
110
|
description: Update your UltraDNS configured A, AAAA, or CNAMEs to point to an instance
|
81
111
|
public hostnames
|
82
112
|
email:
|
@@ -91,6 +121,7 @@ files:
|
|
91
121
|
- LICENSE
|
92
122
|
- README.md
|
93
123
|
- Rakefile
|
124
|
+
- apiary.apib
|
94
125
|
- bin/ultradns_updater
|
95
126
|
- config/sample.config.yaml
|
96
127
|
- lib/ultradns_updater.rb
|
@@ -102,6 +133,8 @@ files:
|
|
102
133
|
- lib/ultradns_updater/strategies/configured.rb
|
103
134
|
- lib/ultradns_updater/strategies/ec2.rb
|
104
135
|
- lib/ultradns_updater/strategies/hostname.rb
|
136
|
+
- lib/ultradns_updater/strategies/multiple.rb
|
137
|
+
- lib/ultradns_updater/strategies/openstack.rb
|
105
138
|
- lib/ultradns_updater/strategies/update_strategy.rb
|
106
139
|
- lib/ultradns_updater/ultradns.rb
|
107
140
|
- lib/ultradns_updater/version.rb
|
@@ -109,6 +142,8 @@ files:
|
|
109
142
|
- spec/lib/ec2_spec.rb
|
110
143
|
- spec/lib/hostname_spec.rb
|
111
144
|
- spec/lib/ip_info_spec.rb
|
145
|
+
- spec/lib/multiple_spec.rb
|
146
|
+
- spec/lib/openstack_spec.rb
|
112
147
|
- spec/lib/strategies_spec.rb
|
113
148
|
- spec/lib/ultradns_spec.rb
|
114
149
|
- spec/spec_helper.rb
|
@@ -128,7 +163,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
128
163
|
version: '0'
|
129
164
|
segments:
|
130
165
|
- 0
|
131
|
-
hash:
|
166
|
+
hash: -3951190794668498878
|
132
167
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
133
168
|
none: false
|
134
169
|
requirements:
|
@@ -137,10 +172,10 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
137
172
|
version: '0'
|
138
173
|
segments:
|
139
174
|
- 0
|
140
|
-
hash:
|
175
|
+
hash: -3951190794668498878
|
141
176
|
requirements: []
|
142
177
|
rubyforge_project: ultradns_updater
|
143
|
-
rubygems_version: 1.8.
|
178
|
+
rubygems_version: 1.8.24
|
144
179
|
signing_key:
|
145
180
|
specification_version: 3
|
146
181
|
summary: Update UltraDNS from an instance with EC2 support
|
@@ -149,6 +184,8 @@ test_files:
|
|
149
184
|
- spec/lib/ec2_spec.rb
|
150
185
|
- spec/lib/hostname_spec.rb
|
151
186
|
- spec/lib/ip_info_spec.rb
|
187
|
+
- spec/lib/multiple_spec.rb
|
188
|
+
- spec/lib/openstack_spec.rb
|
152
189
|
- spec/lib/strategies_spec.rb
|
153
190
|
- spec/lib/ultradns_spec.rb
|
154
191
|
- spec/spec_helper.rb
|