kelbim 0.0.4 → 0.1.0

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: 31722ea70560259f840e6930f24b8c37e33fd5e8
4
- data.tar.gz: b355daf0b127520c498c02af58dffe7b0aefd18d
3
+ metadata.gz: d76367e3e72459fcb48c7e7c2ac7644c91bfc2a8
4
+ data.tar.gz: 4fcd4b448eb952c926b96330d53a462de3e1daeb
5
5
  SHA512:
6
- metadata.gz: 2c2141371eced944ce51727775ed9bd83784593e1b3131c35822d04c6985b9442b9ef36bb62ee5e6a28309fc6f5aa47c9dd974e7bd5e713a0d673111535f3ac9
7
- data.tar.gz: bab991f93822e384c4e542bfdf6b682720aa4c642f7b3808a51e3d5f691d8a60bba42352a6d2973bcc77b2ca7633e86a8d875ea2e11d94a816ef338ac1a6ef74
6
+ metadata.gz: 344fa9f5496e7564195c040e9772091a6a9a608f57e6a1bc6bea44391cb295d32b67a17a9ba2067539b1c7e512b741be4124a5fd10cd4a2d7339b8c64187bebf
7
+ data.tar.gz: 9441923f6b77523ee48a530376438f3c35c7e28bc8b93e0500bc83f2188ebdb9e761916f4cd867eb3da2da2c92acdcc23f2faf6a7dc5f53f21ae39134d329f5d
data/README.md CHANGED
@@ -4,7 +4,15 @@ 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 a alpha version!**
7
+ [![Build Status](https://drone.io/bitbucket.org/winebarrel/kelbim/status.png)](https://drone.io/bitbucket.org/winebarrel/kelbim/latest)
8
+
9
+ **Notice**
10
+
11
+ It does not yet support the following load balancer policies:
12
+
13
+ * ProxyProtocolPolicyType
14
+ * BackendServerAuthenticationPolicyType
15
+ * PublicKeyPolicyType
8
16
 
9
17
  ## Installation
10
18
 
data/bin/kelbim CHANGED
@@ -1,10 +1,12 @@
1
1
  #!/usr/bin/env ruby
2
2
  $: << File.expand_path("#{File.dirname __FILE__}/../lib")
3
3
  require 'rubygems'
4
+ require 'fileutils'
4
5
  require 'json'
5
6
  require 'kelbim'
6
7
  require 'optparse'
7
8
  require 'rspec'
9
+ require 'kelbim/rspec_formatter'
8
10
 
9
11
  DEFAULT_FILENAME = 'ELBfile'
10
12
 
@@ -35,6 +37,7 @@ ARGV.options do |opt|
35
37
  opt.on('-e', '--export') {|v| mode = :export }
36
38
  opt.on('-o', '--output FILE') {|v| output_file = v }
37
39
  opt.on('', '--split') {|v| split = true }
40
+ opt.on('', '--split-more') {|v| split = :more }
38
41
  opt.on('-t', '--test') {|v| mode = :test }
39
42
  opt.on('', '--show-load-balancers') {|v| mode = :show_load_balancers }
40
43
  opt.on('', '--show-policies') {|v| mode = :show_policies }
@@ -83,13 +86,29 @@ begin
83
86
 
84
87
  client.export do |exported, converter|
85
88
  exported.each do |vpc, elbs|
86
- elb_file = File.join(File.dirname(output_file), "#{vpc || :classic}.elb")
87
- requires << elb_file
89
+ if split == :more
90
+ elb_dir = File.join(File.dirname(output_file), "#{vpc || :classic}")
91
+ FileUtils.mkdir_p(elb_dir)
88
92
 
89
- logger.info(" write `#{elb_file}`")
93
+ elbs.each do |name, attrs|
94
+ elb_file = File.join(elb_dir, "#{name}.elb")
95
+ requires << elb_file
90
96
 
91
- open(elb_file, 'wb') do |f|
92
- f.puts converter.call(vpc => elbs)
97
+ logger.info(" write `#{elb_file}`")
98
+
99
+ open(elb_file, 'wb') do |f|
100
+ f.puts converter.call(vpc => {name => attrs})
101
+ end
102
+ end
103
+ else
104
+ elb_file = File.join(File.dirname(output_file), "#{vpc || :classic}.elb")
105
+ requires << elb_file
106
+
107
+ logger.info(" write `#{elb_file}`")
108
+
109
+ open(elb_file, 'wb') do |f|
110
+ f.puts converter.call(vpc => elbs)
111
+ end
93
112
  end
94
113
  end
95
114
  end
@@ -127,8 +146,13 @@ begin
127
146
  raise "No ELBfile found (looking for: #{file})"
128
147
  end
129
148
 
149
+ RSpec.configure do |config|
150
+ config.color_enabled = options[:color]
151
+ config.output_stream = $stdout # formatterをセットする前に設定…
152
+ config.formatter = Kelbim::RSpecFormatter
153
+ end
154
+
130
155
  logger.info("Test `#{file}`")
131
- RSpec.configuration.color_enabled = options[:color]
132
156
  client.test(file)
133
157
  when :show_load_balancers
134
158
  puts JSON.pretty_generate(client.load_balancers)
data/lib/kelbim/client.rb CHANGED
@@ -123,7 +123,7 @@ module Kelbim
123
123
  if ec2_aws
124
124
  walk_ec2(vpc, ec2_dsl, ec2_aws, elb.load_balancers)
125
125
  else
126
- log(:warn, "EC2 `#{vpc || :classic}` is not found", :yellow)
126
+ walk_ec2(vpc, ec2_dsl, [], elb.load_balancers)
127
127
  end
128
128
  end
129
129
 
@@ -145,6 +145,9 @@ module Kelbim
145
145
  end
146
146
 
147
147
  lb_list_dsl.each do |key, lb_dsl|
148
+ name = key[0]
149
+ log(:info, "Comparing #{vpc || :classic} > #{name}", :intense_black)
150
+
148
151
  lb_aws = lb_list_aws.delete(key)
149
152
  walk_load_balancer(lb_dsl, lb_aws)
150
153
  end
@@ -233,13 +236,13 @@ module Kelbim
233
236
  old_policies << plcy_aws
234
237
  end
235
238
 
236
- if not new_policies.empty? and orig_policy_names.sort != new_policies.map {|i| i.name }.sort
239
+ if orig_policy_names.sort != new_policies.map {|i| i.name }.sort
237
240
  listener.policies = new_policies
241
+ end
238
242
 
239
- unless @options.without_deleting_policy
240
- old_policies.each do |plcy_aws|
241
- plcy_aws.delete
242
- end
243
+ if not old_policies.empty? and not @options.without_deleting_policy
244
+ old_policies.each do |plcy_aws|
245
+ plcy_aws.delete
243
246
  end
244
247
  end
245
248
  end
@@ -119,7 +119,7 @@ end
119
119
 
120
120
  def output_instances(instances, vpc)
121
121
  if instances.empty?
122
- instances = '# not registered'
122
+ instances = '# no instances'
123
123
  else
124
124
  instance_id_names = @instance_names[vpc] || {}
125
125
 
@@ -8,7 +8,6 @@ module Kelbim
8
8
  attr_reader :result
9
9
 
10
10
  def initialize(vpc, load_balancers, &block)
11
- @names = []
12
11
  @error_identifier = "EC2 `#{vpc || :classic}`"
13
12
 
14
13
  @result = OpenStruct.new({
@@ -16,6 +15,7 @@ module Kelbim
16
15
  :load_balancers => load_balancers,
17
16
  })
18
17
 
18
+ @names = load_balancers.map {|i| i.name }
19
19
  instance_eval(&block)
20
20
  end
21
21
 
@@ -0,0 +1,22 @@
1
+ require 'rspec'
2
+ require 'rspec/core/formatters/progress_formatter'
3
+
4
+ module Kelbim
5
+ class RSpecFormatter < RSpec::Core::Formatters::ProgressFormatter
6
+ def dump_failure_info(example)
7
+ exception = example.execution_result[:exception]
8
+
9
+ if exception.message
10
+ line = exception.message.to_s.split("\n").first
11
+ line.sub!(/\s*with backtrace:\s*/, '')
12
+ output.puts "#{long_padding}#{failure_color(line)}"
13
+ end
14
+ end
15
+
16
+ def dump_backtrace(example)
17
+ end
18
+
19
+ def dump_commands_to_rerun_failed_examples
20
+ end
21
+ end # RSpecFormatter
22
+ end # Kelbim
data/lib/kelbim/tester.rb CHANGED
@@ -2,7 +2,6 @@ require 'rspec'
2
2
  require 'net/http'
3
3
  require 'socket'
4
4
  require 'timeout'
5
- require 'kelbim/ext/base_text_formatter-ext'
6
5
  require 'kelbim/logger'
7
6
 
8
7
  module Kelbim
@@ -1,5 +1,5 @@
1
1
  module Kelbim
2
- VERSION = "0.0.4"
2
+ VERSION = "0.1.0"
3
3
  end
4
4
 
5
5
  Version = Kelbim::VERSION
@@ -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 ? dsl.server_certificate.name : nil.inspect}", :green)
36
+ log(:info, " set server_certificate=#{dsl.server_certificate}", :green)
37
37
 
38
38
  unless @options.dry_run
39
39
  ss = @options.iam.server_certificates[dsl.server_certificate]
@@ -29,7 +29,7 @@ module Kelbim
29
29
  :id => "<new load balancer name=#{dsl.name}>",
30
30
  :name => dsl.name,
31
31
  :vpc_id => vpc,
32
- :instances => dsl.instances,
32
+ :instances => [], # instancesはLoadBalancerの処理で更新
33
33
  :scheme => dsl.scheme,
34
34
  :listeners => dsl.listeners.map {|i| LoadBalancer::ListenerCollection.create_mock_listener(i, @load_balancer) },
35
35
  :health_check => {}, # health_checkはLoadBalancerの処理で更新
@@ -48,7 +48,7 @@ module Kelbim
48
48
  :listeners => [],
49
49
  }
50
50
 
51
- opts[:instances] = dsl.instances unless dsl.instances.empty?
51
+ # instancesはLoadBalancerの処理で更新
52
52
 
53
53
  dsl.listeners.each do |lstnr|
54
54
  lstnr_opts = LoadBalancer::ListenerCollection.create_listener_options(lstnr, @options.iam)
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: kelbim
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.4
4
+ version: 0.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - winebarrel
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2013-11-03 00:00:00.000000000 Z
11
+ date: 2013-11-04 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: aws-sdk
@@ -66,6 +66,20 @@ dependencies:
66
66
  - - '>='
67
67
  - !ruby/object:Gem::Version
68
68
  version: '0'
69
+ - !ruby/object:Gem::Dependency
70
+ name: term-ansicolor
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - '>='
74
+ - !ruby/object:Gem::Version
75
+ version: '0'
76
+ type: :runtime
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - '>='
81
+ - !ruby/object:Gem::Version
82
+ version: '0'
69
83
  - !ruby/object:Gem::Dependency
70
84
  name: bundler
71
85
  requirement: !ruby/object:Gem::Requirement
@@ -129,13 +143,13 @@ files:
129
143
  - lib/kelbim/dsl/load-balancer.rb
130
144
  - lib/kelbim/dsl.rb
131
145
  - lib/kelbim/exporter.rb
132
- - lib/kelbim/ext/base_text_formatter-ext.rb
133
146
  - lib/kelbim/ext/ec2-ext.rb
134
147
  - lib/kelbim/ext/elb-listener-ext.rb
135
148
  - lib/kelbim/ext/elb-load-balancer-ext.rb
136
149
  - lib/kelbim/ext/string-ext.rb
137
150
  - lib/kelbim/logger.rb
138
151
  - lib/kelbim/policy-types.rb
152
+ - lib/kelbim/rspec_formatter.rb
139
153
  - lib/kelbim/tester.rb
140
154
  - lib/kelbim/version.rb
141
155
  - lib/kelbim/wrapper/elb-wrapper.rb
@@ -1,26 +0,0 @@
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
- line.sub!(/\s*with backtrace:\s*/, '')
14
- output.puts "#{long_padding}#{failure_color(line)}"
15
- end
16
- end
17
-
18
- def dump_backtrace(example)
19
- end
20
-
21
- def dump_commands_to_rerun_failed_examples
22
- end
23
- end # BaseTextFormatter
24
- end # Formatters
25
- end # Core
26
- end # RSpec