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 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" }
@@ -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
@@ -22,11 +22,13 @@ class UltraDNSUpdater::CLI
22
22
  def self.run
23
23
  opts = parse(ARGV)
24
24
 
25
- strategy_name = opts[:force_strategy] || opts[:update_strategy][:use]
26
- strategy_klass = UltraDNSUpdater::Strategies.strategy(strategy_name)
27
-
28
- ultradns = UltraDNSUpdater::UltraDNS.new(opts[:ultradns])
29
- hostname = strategy_klass.new(ultradns).update(opts[:update_strategy][strategy_name.to_sym].merge({:logger => @logger}))
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}"
@@ -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(strategy_config)
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)
@@ -15,7 +15,7 @@
15
15
  module UltraDNSUpdater::Strategies
16
16
  class Ec2 < UpdateStrategy
17
17
 
18
- def update(strategy_config)
18
+ def update()
19
19
  ec2 = UltraDNSUpdater::Ec2.new(strategy_config)
20
20
  name_tag_value = ec2.get_name_tag
21
21
 
@@ -17,8 +17,10 @@ require 'ultradns_updater/strategies/configured'
17
17
 
18
18
  module UltraDNSUpdater::Strategies
19
19
  class Hostname < Configured
20
- def update(strategy_config)
21
- super(strategy_config.merge({:name => Socket::gethostname()}))
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(strategy_config); end
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
- strategy_sym = strategy_name.to_sym rescue nil
27
- case strategy_sym
28
- when :ec2
29
- UltraDNSUpdater::Strategies::Ec2
30
- when :hostname
31
- UltraDNSUpdater::Strategies::Hostname
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
- raise "No strategy found for: #{strategy_name}"
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
 
@@ -13,5 +13,5 @@
13
13
  # limitations under the License.
14
14
 
15
15
  module UltraDNSUpdater
16
- VERSION = "0.0.19"
16
+ VERSION = "0.0.20"
17
17
  end
@@ -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({:iface => 'eth0', :name => name})
32
+ configured_strategy.update()
32
33
 
33
34
  ensure
34
35
 
@@ -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({:iface => 'eth0'})
33
-
33
+ hostname_strategy.update()
34
34
  ensure
35
35
  Socket.unstub(:gethostname)
36
36
  end
@@ -27,9 +27,9 @@ describe UltraDNSUpdater::IpInfo do
27
27
 
28
28
  iface = "eth0"
29
29
  if RUBY_PLATFORM =~ /darwin/
30
- iface = "en1"
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 = "en1"
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
+
@@ -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.19
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-10-05 00:00:00.000000000 Z
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: &2156070900 !ruby/object:Gem::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: *2156070900
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: &2156069800 !ruby/object:Gem::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: *2156069800
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: &2156068980 !ruby/object:Gem::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: *2156068980
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: &2156067920 !ruby/object:Gem::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: *2156067920
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: &2156066900 !ruby/object:Gem::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: *2156066900
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: &2156066400 !ruby/object:Gem::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: *2156066400
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: 2236748956179911852
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: 2236748956179911852
175
+ hash: -3951190794668498878
141
176
  requirements: []
142
177
  rubyforge_project: ultradns_updater
143
- rubygems_version: 1.8.15
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