rig 0.6.4 → 0.6.5

Sign up to get free protection for your applications and to get access to all the features.
data/CHANGELOG.md CHANGED
@@ -1,5 +1,10 @@
1
1
  # Changelog
2
2
 
3
+ ## v0.6.4:
4
+ * add support for setting stickiness policy with DSL 'sticky' method on balancers
5
+ * clean up waiting for dns on environment create/save
6
+ * clean up mongo plugin
7
+
3
8
  ## v0.6.3:
4
9
  * minor bug fixes
5
10
  * clean up 'server tags' command, need to look at the rest
@@ -89,13 +89,32 @@ module Rig
89
89
  subcommand "view", "view load balancer information" do
90
90
  include Options::ShowAll
91
91
 
92
- parameter "NAME", "name of instance"
92
+ parameter "NAME", "name of the balancer"
93
93
 
94
94
  def execute
95
95
  item = Rig::Model::Balancer.find(name)
96
96
  puts item.attributes.to_yaml
97
97
  end
98
98
  end
99
+
100
+ subcommand "sticky", "set sticky policy" do
101
+
102
+ parameter "NAME", "name of the balancer"
103
+
104
+ option %w{-d --delete}, :flag, "delete policy"
105
+ option %w{-p --policy}, "POLICY", "policy name", :default => "AWSConsolePolicy-1"
106
+ option %w{-l --listener}, "LISTENER", "the listener port", :default => "443"
107
+ option %w{-t --type}, "TYPE", "the sticky policy type (lb or app)", :default => "lb"
108
+ option %w{-e --expires}, "EXPIRES", "the expiration period for lb type or cookie for app type", :default => "300"
109
+
110
+ def execute
111
+ if delete?
112
+ Rig::Model::Balancer.unsticky(name, type, expires, listener, policy)
113
+ else
114
+ Rig::Model::Balancer.sticky(name, type, expires, listener, policy)
115
+ end
116
+ end
117
+ end
99
118
  end
100
119
  end
101
120
  end
@@ -79,6 +79,38 @@ module Rig
79
79
  match.first.destroy
80
80
  end
81
81
 
82
+ def sticky(balancer_name, type, expires_or_cookie, listener="443", policy_name='RigLbCookiePolicy')
83
+ elb = find(balancer_name)
84
+ raise "balancer #{balancer_name} not found" unless elb
85
+
86
+ case type.to_sym
87
+ when :app, :application
88
+ Rig::Connection.balancer.create_app_cookie_stickiness_policy(balancer_name, policy_name, expires_or_cookie)
89
+ Rig::Connection.balancer.set_load_balancer_policies_of_listener(balancer_name, listener.to_i, [policy_name])
90
+ when :lb, :load_balancer
91
+ Rig::Connection.balancer.create_lb_cookie_stickiness_policy(balancer_name, policy_name, expires_or_cookie.to_i)
92
+ Rig::Connection.balancer.set_load_balancer_policies_of_listener(balancer_name, listener.to_i, [policy_name])
93
+ else
94
+ raise "unknown sticky type #{type}"
95
+ end
96
+ end
97
+
98
+ def unsticky(balancer_name, type, expires_or_cookie, listener="443", policy_name='RigLbCookiePolicy')
99
+ elb = find(balancer_name)
100
+ raise "balancer #{balancer_name} not found" unless elb
101
+
102
+ case type.to_sym
103
+ when :app, :application
104
+ Rig::Connection.balancer.set_load_balancer_policies_of_listener(balancer_name, listener.to_i, [])
105
+ Rig::Connection.balancer.delete_load_balancer_policy(balancer_name, policy_name)
106
+ when :lb, :load_balancer
107
+ Rig::Connection.balancer.set_load_balancer_policies_of_listener(balancer_name, listener.to_i, [])
108
+ Rig::Connection.balancer.delete_load_balancer_policy(balancer_name, policy_name)
109
+ else
110
+ raise "unknown sticky type #{type}"
111
+ end
112
+ end
113
+
82
114
  private
83
115
 
84
116
  def new_listener_description(listener)
@@ -99,19 +131,6 @@ module Rig
99
131
  'PolicyNames' => policy_names
100
132
  }
101
133
  end
102
-
103
- def sticky(type, balancer_name, expires_or_cookie, policy_name='LBCookieStickinessPolicy')
104
- elb = find(balancer_name)
105
- raise "balancer #{balancer_name} not found" unless elb
106
- case type.to_sym
107
- when :app, :application
108
- Rig::Connection.balancer.create_app_cookie_stickiness_policy(balancer_name, policy_name, expires_or_cookie)
109
- when :lb, :load_balancer
110
- Rig::Connection.balancer.create_lb_cookie_stickiness_policy(balancer_name, policy_name, expires_or_cookie)
111
- else
112
- raise "unknown sticky type #{type}"
113
- end
114
- end
115
134
  end
116
135
  end
117
136
  end
@@ -114,17 +114,23 @@ module Rig
114
114
  Rig::Log.info ".. primary: #{name}.env.#@zone #{balancer.attributes[:dns_name]}"
115
115
  Rig::Model::Dns.create("#{name}.env.#@zone", balancer.attributes[:dns_name], :ttl => 30)
116
116
  end
117
+ end
118
+ end
119
+
120
+ wait_for_dns
117
121
 
122
+ @template.balancers.each do |b|
123
+ if set[b.name]
118
124
  if b.sticky
119
- Rig::Log.info ".. setting stickiness policy"
125
+ Rig::Log.info "#@name-#{b.name}: setting stickiness policy"
120
126
  policy_name = 'RigLBStickinessPolicy'
121
127
  type = b.sticky_type
122
128
  expires_or_cookie = b.sticky_arg
123
129
  case type.to_sym
124
130
  when :app, :application
125
- Rig::Connection.balancer.create_app_cookie_stickiness_policy("#@name-#{b.name}", policy_name, expires_or_cookie)
131
+ ap Rig::Connection.balancer.create_app_cookie_stickiness_policy("#@name-#{b.name}", policy_name, expires_or_cookie)
126
132
  when :lb, :load_balancer
127
- Rig::Connection.balancer.create_lb_cookie_stickiness_policy("#@name-#{b.name}", policy_name, expires_or_cookie)
133
+ ap Rig::Connection.balancer.create_lb_cookie_stickiness_policy("#@name-#{b.name}", policy_name, expires_or_cookie)
128
134
  else
129
135
  raise "unknown sticky type #{type}"
130
136
  end
@@ -132,8 +138,6 @@ module Rig
132
138
  end
133
139
  end
134
140
 
135
- wait_for_dns
136
-
137
141
  Rig::Log.info "associating servers' DNS"
138
142
  @dnsdelayed.each do |h|
139
143
  server = @server_hash[h[:server]]
@@ -204,6 +208,7 @@ module Rig
204
208
  private
205
209
 
206
210
  def wait_for_dns
211
+ Rig::Log.info "waiting for servers..."
207
212
  while servers_without_dns > 0
208
213
  sleep 2
209
214
  reload
data/lib/rig/version.rb CHANGED
@@ -3,7 +3,7 @@ unless defined?(Rig::Version)
3
3
  module Version
4
4
  MAJOR = 0
5
5
  MINOR = 6
6
- TINY = 4
6
+ TINY = 5
7
7
  STRING = [MAJOR, MINOR, TINY].join('.')
8
8
  end
9
9
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rig
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.6.4
4
+ version: 0.6.5
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors: