kelbim 0.0.1 → 0.0.2

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 7eedb5e0c3b9983991baaaacd8233fe41d9ed137
4
- data.tar.gz: 73b2b07df5e2219bfaaf81c9d0d39b9b56d363eb
3
+ metadata.gz: 3a3aa9626f47a857cfeb39f3f20b5154099016a6
4
+ data.tar.gz: 85e9bcd93725b03f76e569c25f7beb56391d2f66
5
5
  SHA512:
6
- metadata.gz: 6aa83ac6a4a98111e0f3816c15d200236256bbe6cff68c24087be96c11b27da1952e1b7f7e9dd66ecc91f2a73b3c4e43430c59ac1b87927cb87bcf5705f59f07
7
- data.tar.gz: 430af7b5270717adddd3cd7452f15e392cb118c845b5db5930a9097c458740233d1d14583ba88affbd4d655562c1d01977b03d307fb003c3eb559b0e081ae160
6
+ metadata.gz: 7d17e5a9853ba64b82c8d8ef70032bb465ea9a1369743d921144d80f176a6e5574eb991a7ff140f1f7aac113a7ad49cf54b36f74da8e23b35555a04f6a4c8d73
7
+ data.tar.gz: 0097ad300a14b1c36d3524f0d7b9dd4305400e163e7eb86139c9f3aa93665643ae19dc4c658ea0c6c04b1de12548e46af1efd2ba0a0e5c5dcb8e6eac02be2626
data/README.md CHANGED
@@ -4,7 +4,7 @@ Kelbim is a tool to manage ELB.
4
4
 
5
5
  It defines the state of ELB using DSL, and updates ELB according to DSL.
6
6
 
7
- **Attention! This is the alpha version!**
7
+ **Attention! This is a alpha version!**
8
8
 
9
9
  ## Installation
10
10
 
@@ -100,5 +100,32 @@ ec2 "vpc-XXXXXXXXX" do
100
100
  end
101
101
  ```
102
102
 
103
+ ## Test
104
+
105
+ ```ruby
106
+ ec2 "vpc-XXXXXXXXX" do
107
+ load_balancer "my-load-balancer" do
108
+ test do
109
+ host = "my-load-balancer-XXXXXXXXXX.ap-northeast-1.elb.amazonaws.com"
110
+
111
+ expect {
112
+ timeout(3) do
113
+ socket = TCPSocket.open(host, 8080)
114
+ socket.close if socket
115
+ end
116
+ }.not_to raise_error
117
+ end
118
+ ...
119
+ ```
120
+
121
+ ```sh
122
+ shell> kelbim -t
123
+ Test `ELBfile`
124
+ ...
125
+
126
+ Finished in 3.16 seconds
127
+ 3 examples, 0 failures
128
+ ```
129
+
103
130
  ## Link
104
131
  * [RubyGems.org site](http://rubygems.org/gems/kelbim)
data/bin/kelbim CHANGED
@@ -1,8 +1,10 @@
1
1
  #!/usr/bin/env ruby
2
2
  $: << File.expand_path("#{File.dirname __FILE__}/../lib")
3
3
  require 'rubygems'
4
+ require 'json'
4
5
  require 'kelbim'
5
6
  require 'optparse'
7
+ require 'rspec'
6
8
 
7
9
  DEFAULT_FILENAME = 'ELBfile'
8
10
 
@@ -23,18 +25,21 @@ ARGV.options do |opt|
23
25
  secret_key = nil
24
26
  region = nil
25
27
 
26
- opt.on('-k', '--access-key ACCESS_KEY') {|v| access_key = v }
27
- opt.on('-s', '--secret-key SECRET_KEY') {|v| secret_key = v }
28
- opt.on('-r', '--region REGION') {|v| region = v }
29
- opt.on('-a', '--apply') {|v| mode = :apply }
30
- opt.on('-f', '--file FILE') {|v| file = v }
31
- opt.on('', '--dry-run') {|v| options[:dry_run] = true }
32
- opt.on('-e', '--export') {|v| mode = :export }
33
- opt.on('-o', '--output FILE') {|v| output_file = v }
34
- opt.on('', '--split') {|v| split = true }
35
- opt.on('-t', '--test') {|v| mode = :test }
36
- opt.on('' , '--no-color') { options[:color] = false }
37
- opt.on('' , '--debug') { options[:debug] = true }
28
+ opt.on('-k', '--access-key ACCESS_KEY') {|v| access_key = v }
29
+ opt.on('-s', '--secret-key SECRET_KEY') {|v| secret_key = v }
30
+ opt.on('-r', '--region REGION') {|v| region = v }
31
+ opt.on('-a', '--apply') {|v| mode = :apply }
32
+ opt.on('-f', '--file FILE') {|v| file = v }
33
+ opt.on('', '--dry-run') {|v| options[:dry_run] = true }
34
+ opt.on('', '--without-deleting-policy') {|v| options[:without_deleting_policy] = true }
35
+ opt.on('-e', '--export') {|v| mode = :export }
36
+ opt.on('-o', '--output FILE') {|v| output_file = v }
37
+ opt.on('', '--split') {|v| split = true }
38
+ opt.on('-t', '--test') {|v| mode = :test }
39
+ opt.on('', '--show-load-balancers') {|v| mode = :show_load_balancers }
40
+ opt.on('', '--show-policies') {|v| mode = :show_policies }
41
+ opt.on('' , '--no-color') { options[:color] = false }
42
+ opt.on('' , '--debug') { options[:debug] = true }
38
43
  opt.parse!
39
44
 
40
45
  if access_key and secret_key
@@ -123,8 +128,12 @@ begin
123
128
  end
124
129
 
125
130
  logger.info("Test `#{file}`")
126
- # XXX:
131
+ RSpec.configuration.color_enabled = options[:color]
127
132
  client.test(file)
133
+ when :show_load_balancers
134
+ puts JSON.pretty_generate(client.load_balancers)
135
+ when :show_policies
136
+ puts JSON.pretty_generate(client.policies)
128
137
  else
129
138
  raise 'must not happen'
130
139
  end
data/lib/kelbim/client.rb CHANGED
@@ -4,6 +4,7 @@ require 'kelbim/exporter'
4
4
  require 'kelbim/ext/ec2-ext'
5
5
  require 'kelbim/ext/elb-load-balancer-ext'
6
6
  require 'kelbim/policy-types'
7
+ require 'kelbim/tester'
7
8
  require 'kelbim/wrapper/elb-wrapper'
8
9
  require 'kelbim/logger'
9
10
 
@@ -23,7 +24,54 @@ module Kelbim
23
24
  end
24
25
 
25
26
  def test(file)
26
- # XXX:
27
+ AWS.memoize do
28
+ dsl = load_file(file)
29
+ Tester.test(dsl)
30
+ end
31
+ end
32
+
33
+ def load_balancers
34
+ exported = nil
35
+
36
+ AWS.memoize do
37
+ exported = Exporter.export(@options.elb)
38
+ end
39
+
40
+ retval = {}
41
+
42
+ exported.map do |vpc, lbs|
43
+ vpc = vpc || 'classic'
44
+ retval[vpc] = {}
45
+
46
+ lbs.map do |name, attrs|
47
+ retval[vpc][name] = attrs[:dns_name]
48
+ end
49
+ end
50
+
51
+ return retval
52
+ end
53
+
54
+ def policies
55
+ exported = nil
56
+
57
+ AWS.memoize do
58
+ exported = Exporter.export(@options.elb)
59
+ end
60
+
61
+ retval = {}
62
+
63
+ exported.map do |vpc, lbs|
64
+ vpc = vpc || 'classic'
65
+
66
+ lbs.map do |name, attrs|
67
+ if attrs[:policies]
68
+ retval[vpc] ||= {}
69
+ retval[vpc][name] = attrs[:policies]
70
+ end
71
+ end
72
+ end
73
+
74
+ return retval
27
75
  end
28
76
 
29
77
  def export
@@ -36,19 +36,16 @@ end
36
36
 
37
37
  def output_load_balancer(vpc, name, load_balancer)
38
38
  name = name.inspect
39
- internal = (load_balancer[:scheme] == 'internal') ? ', :internal => true ' : ' '
39
+ is_internal = (load_balancer[:scheme] == 'internal')
40
+ internal = is_internal ? ', :internal => true ' : ' '
40
41
  instances = output_instances(load_balancer[:instances], vpc).strip
41
42
  listeners = output_listeners(load_balancer[:listeners]).strip
42
43
  health_check = output_health_check(load_balancer[:health_check]).strip
43
- dns_name = load_balancer[:dns_name]
44
+ testcase = (is_internal and not load_balancer.fetch(:listeners, []).empty?) ? '' : ("\n " + output_testcase(load_balancer).strip + "\n")
44
45
 
45
46
  out = <<-EOS
46
- load_balancer #{name}#{internal}do
47
- #test do
48
- # #host = #{dns_name.inspect}
49
- # #expect(Net::HTTP.start(host, 80).get("/")).to be_a(Net::HTTPOK)
50
- #end
51
-
47
+ load_balancer #{name}#{internal}do#{
48
+ testcase}
52
49
  #{instances}
53
50
 
54
51
  #{listeners}
@@ -92,6 +89,34 @@ end
92
89
  return out
93
90
  end
94
91
 
92
+ def output_testcase(load_balancer)
93
+ dns_name = load_balancer[:dns_name]
94
+ ports = load_balancer[:listeners].map {|i| i[:port] }
95
+
96
+ out = <<-EOS
97
+ test do
98
+ host = #{dns_name.inspect}
99
+ EOS
100
+
101
+ ports.each do |port|
102
+ out.concat(<<-EOS)
103
+
104
+ expect {
105
+ timeout(3) do
106
+ socket = TCPSocket.open(host, #{port})
107
+ socket.close if socket
108
+ end
109
+ }.not_to raise_error
110
+ EOS
111
+ end
112
+
113
+ out.concat(<<-EOS)
114
+ end
115
+ EOS
116
+
117
+ return out
118
+ end
119
+
95
120
  def output_instances(instances, vpc)
96
121
  if instances.empty?
97
122
  instances = '# not registered'
@@ -7,13 +7,13 @@ module Kelbim
7
7
  class EC2
8
8
  attr_reader :result
9
9
 
10
- def initialize(vpc, &block)
10
+ def initialize(vpc, load_balancers, &block)
11
11
  @names = []
12
12
  @error_identifier = "EC2 `#{vpc || :classic}`"
13
13
 
14
14
  @result = OpenStruct.new({
15
15
  :vpc => vpc,
16
- :load_balancers => [],
16
+ :load_balancers => load_balancers,
17
17
  })
18
18
 
19
19
  instance_eval(&block)
@@ -18,6 +18,7 @@ module Kelbim
18
18
  :name => name,
19
19
  :instances => [],
20
20
  :internal => internal,
21
+ :scheme => internal ? 'internal' : 'internet-facing',
21
22
  })
22
23
 
23
24
  instance_eval(&block)
@@ -38,7 +39,7 @@ module Kelbim
38
39
  end
39
40
 
40
41
  def test(&block)
41
- call_once(:instances)
42
+ call_once(:test)
42
43
  @result.test = block
43
44
  end
44
45
 
data/lib/kelbim/dsl.rb CHANGED
@@ -38,7 +38,11 @@ module Kelbim
38
38
  end
39
39
 
40
40
  def ec2(vpc = nil, &block)
41
- @result.ec2s[vpc] = EC2.new(vpc, &block).result
41
+ if (ec2_result = @result.ec2s[vpc])
42
+ @result.ec2s[vpc] = EC2.new(vpc, ec2_result.load_balancers, &block).result
43
+ else
44
+ @result.ec2s[vpc] = EC2.new(vpc, [], &block).result
45
+ end
42
46
  end
43
47
  end # DSL
44
48
  end # Kelbim
@@ -34,6 +34,11 @@ module Kelbim
34
34
  :dns_name => load_balancer.dns_name,
35
35
  }
36
36
 
37
+ if load_balancer.policies.first
38
+ attrs[:policies] = h = {}
39
+ load_balancer.policies.each {|i| h[i.name] = i.type }
40
+ end
41
+
37
42
  if load_balancer.vpc_id
38
43
  attrs[:subnets] = load_balancer.subnets.map {|i| i.id }
39
44
  attrs[:security_groups] = load_balancer.security_groups.map {|i| i.name }
@@ -0,0 +1,25 @@
1
+ require 'rspec'
2
+ require 'rspec/core/formatters/base_text_formatter'
3
+
4
+ module RSpec
5
+ module Core
6
+ module Formatters
7
+ class BaseTextFormatter < BaseFormatter
8
+ def dump_failure_info(example)
9
+ exception = example.execution_result[:exception]
10
+
11
+ if exception.message
12
+ line = exception.message.to_s.split("\n").first
13
+ output.puts "#{long_padding}#{failure_color(line)}"
14
+ end
15
+ end
16
+
17
+ def dump_backtrace(example)
18
+ end
19
+
20
+ def dump_commands_to_rerun_failed_examples
21
+ end
22
+ end # BaseTextFormatter
23
+ end # Formatters
24
+ end # Core
25
+ end # RSpec
@@ -0,0 +1,36 @@
1
+ require 'rspec'
2
+ require 'net/http'
3
+ require 'socket'
4
+ require 'timeout'
5
+ require 'kelbim/ext/base_text_formatter-ext'
6
+ require 'kelbim/logger'
7
+
8
+ module Kelbim
9
+ class Tester
10
+ class << self
11
+ def test(dsl)
12
+ self.new(dsl).test
13
+ end
14
+ end # of class methods
15
+
16
+ def initialize(dsl)
17
+ @dsl = dsl
18
+ end
19
+
20
+ def test
21
+ require 'rspec/autorun'
22
+
23
+ @dsl.ec2s.each do |vpc, ec2|
24
+ vpc ||= 'classic'
25
+
26
+ ec2.load_balancers.each do |lb|
27
+ if lb.test
28
+ RSpec.describe("#{vpc || :classic} > #{lb.name}") {
29
+ it(&lb.test)
30
+ }
31
+ end
32
+ end
33
+ end
34
+ end
35
+ end # Tester
36
+ end # Kelbim
@@ -1,3 +1,5 @@
1
1
  module Kelbim
2
- VERSION = "0.0.1"
2
+ VERSION = "0.0.2"
3
3
  end
4
+
5
+ Version = Kelbim::VERSION
@@ -1,5 +1,6 @@
1
1
  require 'ostruct'
2
2
  require 'kelbim/wrapper/listener'
3
+ require 'kelbim/wrapper/policy-collection'
3
4
  require 'kelbim/logger'
4
5
 
5
6
  module Kelbim
@@ -9,36 +10,25 @@ module Kelbim
9
10
  class ListenerCollection
10
11
  include Logger::ClientHelper
11
12
 
12
- def initialize(listeners, load_balancer, options)
13
- @listeners = listeners
14
- @load_balancer = load_balancer
15
- @options = options
16
- end
17
-
18
- def each
19
- @listeners.each do |lstnr|
20
- yield(Listener.new(lstnr, @options))
21
- end
22
- end
23
-
24
- def create(dsl)
25
- log_id = [[dsl.protocol, dsl.port], [dsl.instance_protocol, dsl.instance_port]].map {|i| i.inspect }.join(' => ')
26
- log_id = "#{@load_balancer.vpc_id || :classic} > #{@load_balancer.name} > #{log_id}"
27
- log(:info, 'Create Listener', :cyan, log_id)
28
-
29
- if @options.dry_run
13
+ class << self
14
+ def create_mock_listener(dsl, load_balancer)
30
15
  lstnr = OpenStruct.new({
31
16
  :protocol => dsl.protocol,
32
17
  :port => dsl.port,
33
18
  :instance_protocol => dsl.instance_protocol,
34
19
  :instance_port => dsl.instance_port,
35
- :policies => dsl.policies.map {|i| PolicyCollection.create_mock_policy(i) },
20
+ :policies => dsl.policies.map {|i| Listener::PolicyCollection.create_mock_policy(i) },
21
+ :load_balancer => load_balancer,
36
22
  })
37
23
 
38
24
  if dsl.server_certificate
39
25
  lstnr.server_certificate = OpenStruct.new(:name => dsl.server_certificate)
40
26
  end
41
- else
27
+
28
+ return lstnr
29
+ end
30
+
31
+ def create_listener_options(dsl, iam)
42
32
  lstnr_opts = {
43
33
  :protocol => dsl.protocol,
44
34
  :port => dsl.port,
@@ -47,7 +37,7 @@ module Kelbim
47
37
  }
48
38
 
49
39
  if (ss_name = dsl.server_certificate)
50
- ss = @options.iam.server_certificates[ss_name]
40
+ ss = iam.server_certificates[ss_name]
51
41
 
52
42
  unless ss
53
43
  raise "Can't find ServerCertificate: #{ss_name} in #{load_balancer.vpc_id || :classic} > #{@load_balancer.name}"
@@ -56,6 +46,34 @@ module Kelbim
56
46
  lstnr_opts[:server_certificate] = ss.arn
57
47
  end
58
48
 
49
+ return lstnr_opts
50
+ end
51
+ end # of class methods
52
+
53
+ def initialize(listeners, load_balancer, options)
54
+ @listeners = listeners
55
+ @load_balancer = load_balancer
56
+ @options = options
57
+ end
58
+
59
+ def each
60
+ @listeners.each do |lstnr|
61
+ yield(Listener.new(lstnr, @options))
62
+ end
63
+ end
64
+
65
+ def create(dsl)
66
+ log_id = [[dsl.protocol, dsl.port], [dsl.instance_protocol, dsl.instance_port]].map {|i| i.inspect }.join(' => ')
67
+ log_id = "#{@load_balancer.vpc_id || :classic} > #{@load_balancer.name} > #{log_id}"
68
+ log(:info, 'Create Listener', :cyan, log_id)
69
+
70
+ lstnr = nil
71
+
72
+ if @options.dry_run
73
+ lstnr = self.class.create_mock_listener(dsl, @load_balancer)
74
+ else
75
+ lstnr_opts = self.class.create_listener_options(dsl, @options.iam)
76
+
59
77
  # lstnr_optsは破壊的に更新される
60
78
  lstnr = @listeners.create(lstnr_opts.dup)
61
79
  @options.updated = true
@@ -33,7 +33,7 @@ module Kelbim
33
33
  log(:info, 'Update Listener', :green, log_id)
34
34
 
35
35
  compare_server_certificate(dsl) do
36
- log(:info, " set server_certificate=#{dsl.server_certificate}", :green)
36
+ log(:info, " set server_certificate=#{dsl.server_certificate ? dsl.server_certificate.name : nil.inspect}", :green)
37
37
 
38
38
  unless @options.dry_run
39
39
  ss = @options.iam.server_certificates[dsl.server_certificate]
@@ -1,5 +1,6 @@
1
1
  require 'ostruct'
2
2
  require 'kelbim/wrapper/load-balancer'
3
+ require 'kelbim/wrapper/listener-collection'
3
4
  require 'kelbim/logger'
4
5
 
5
6
  module Kelbim
@@ -29,19 +30,11 @@ module Kelbim
29
30
  :name => dsl.name,
30
31
  :vpc_id => vpc,
31
32
  :instances => dsl.instances,
32
- :scheme => (dsl.internal ? 'internal' : 'internet-facing'),
33
- :listeners => listeners,
33
+ :scheme => dsl.scheme,
34
+ :listeners => dsl.listeners.map {|i| LoadBalancer::ListenerCollection.create_mock_listener(i, @load_balancer) },
34
35
  :health_check => {}, # health_checkはLoadBalancerの処理で更新
35
36
  })
36
37
 
37
- listeners.each do |lstnr|
38
- lstnr.load_balancer = lb
39
-
40
- if lstnr.server_certificate
41
- lstnr.server_certificate = OpenStruct.new(:name => lstnr.server_certificate)
42
- end
43
- end
44
-
45
38
  if vpc
46
39
  lb.subnets = dsl.subnets.map {|i| OpenStruct.new(:id => i) }
47
40
  sg_names = @options.security_group_names[vpc] || {}
@@ -51,30 +44,14 @@ module Kelbim
51
44
  end
52
45
  else
53
46
  opts = {
54
- :scheme => (dsl.internal ? 'internal' : 'internet-facing'),
55
- :listeners => [],
47
+ :scheme => dsl.scheme,
48
+ :listeners => [],
56
49
  }
57
50
 
58
51
  opts[:instances] = dsl.instances unless dsl.instances.empty?
59
52
 
60
53
  dsl.listeners.each do |lstnr|
61
- lstnr_opts = {
62
- :port => lstnr.port,
63
- :protocol => lstnr.protocol,
64
- :instance_protocol => lstnr.instance_protocol,
65
- :instance_port => lstnr.instance_port,
66
- }
67
-
68
- if (ss_name = lstnr.server_certificate)
69
- ss = @options.iam.server_certificates[ss_name]
70
-
71
- unless ss
72
- raise "Can't find ServerCertificate: #{ss_name} in #{vpc || :classic} > #{dsl.name}"
73
- end
74
-
75
- lstnr_opts[:server_certificate] = ss.arn
76
- end
77
-
54
+ lstnr_opts = LoadBalancer::ListenerCollection.create_listener_options(lstnr, @options.iam)
78
55
  opts[:listeners] << lstnr_opts
79
56
  end
80
57
 
@@ -23,6 +23,10 @@ module Kelbim
23
23
  end
24
24
 
25
25
  def eql?(dsl)
26
+ compare_scheme(dsl) do
27
+ log(:warn, "`scheme`('internet-facing' or 'internal') cannot be updated", :yellow, "#{vpc_id || :classic} > #{name}")
28
+ end
29
+
26
30
  compare_health_check(dsl) or return false
27
31
 
28
32
  if self.vpc_id
@@ -65,7 +69,7 @@ module Kelbim
65
69
  end
66
70
 
67
71
  compare_health_check(dsl) do
68
- log(:info, ' set health_check=' + dsl.health_check.inspect, :green)
72
+ log(:info, ' set health_check=' + dsl.health_check.inspect, :green)
69
73
 
70
74
  unless @options.dry_run
71
75
  @load_balancer.configure_health_check(dsl.health_check)
@@ -162,6 +166,12 @@ module Kelbim
162
166
  end
163
167
 
164
168
  private
169
+ def compare_scheme(dsl)
170
+ same = (@load_balancer.scheme == dsl.scheme)
171
+ yield if !same && block_given?
172
+ return same
173
+ end
174
+
165
175
  def compare_health_check(dsl)
166
176
  same = (@load_balancer.health_check.sort == dsl.health_check.sort)
167
177
  yield if !same && block_given?
@@ -21,7 +21,7 @@ module Kelbim
21
21
 
22
22
  if PolicyTypes.name?(dsl_name_or_attrs)
23
23
  plcy.name = dsl_name_or_attrs
24
- plcy.type = {'<new policy attribute name>' => ['<new policy attribute value>']}
24
+ plcy.attribute = {'<new policy attribute name>' => ['<new policy attribute value>']}
25
25
  else
26
26
  plcy.name = '<new policy name>'
27
27
  plcy.attributes = PolicyTypes.unexpand(dsl_type, dsl_name_or_attrs)
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: kelbim
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - winebarrel
@@ -38,6 +38,34 @@ dependencies:
38
38
  - - '>='
39
39
  - !ruby/object:Gem::Version
40
40
  version: '0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: rspec
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ~>
46
+ - !ruby/object:Gem::Version
47
+ version: 2.14.1
48
+ type: :runtime
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ~>
53
+ - !ruby/object:Gem::Version
54
+ version: 2.14.1
55
+ - !ruby/object:Gem::Dependency
56
+ name: json
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - '>='
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ type: :runtime
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - '>='
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
41
69
  - !ruby/object:Gem::Dependency
42
70
  name: bundler
43
71
  requirement: !ruby/object:Gem::Requirement
@@ -66,6 +94,20 @@ dependencies:
66
94
  - - '>='
67
95
  - !ruby/object:Gem::Version
68
96
  version: '0'
97
+ - !ruby/object:Gem::Dependency
98
+ name: rspec
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - ~>
102
+ - !ruby/object:Gem::Version
103
+ version: 2.14.1
104
+ type: :development
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - ~>
109
+ - !ruby/object:Gem::Version
110
+ version: 2.14.1
69
111
  description: Kelbim is a tool to manage ELB. It defines the state of ELB using DSL,
70
112
  and updates ELB according to DSL.
71
113
  email:
@@ -87,12 +129,14 @@ files:
87
129
  - lib/kelbim/dsl/load-balancer.rb
88
130
  - lib/kelbim/dsl.rb
89
131
  - lib/kelbim/exporter.rb
132
+ - lib/kelbim/ext/base_text_formatter-ext.rb
90
133
  - lib/kelbim/ext/ec2-ext.rb
91
134
  - lib/kelbim/ext/elb-listener-ext.rb
92
135
  - lib/kelbim/ext/elb-load-balancer-ext.rb
93
136
  - lib/kelbim/ext/string-ext.rb
94
137
  - lib/kelbim/logger.rb
95
138
  - lib/kelbim/policy-types.rb
139
+ - lib/kelbim/tester.rb
96
140
  - lib/kelbim/version.rb
97
141
  - lib/kelbim/wrapper/elb-wrapper.rb
98
142
  - lib/kelbim/wrapper/listener-collection.rb