rig 0.3.6 → 0.3.7

Sign up to get free protection for your applications and to get access to all the features.
data/Gemfile CHANGED
@@ -3,5 +3,6 @@ source 'https://rubygems.org'
3
3
  # Specify your gem's dependencies in rig.gemspec
4
4
  gemspec
5
5
 
6
+ gem 'fog'
6
7
  gem 'chef', '~> 0.10.8'
7
8
  gem 'net-ssh', '~> 2.1.4'
@@ -4,6 +4,14 @@
4
4
  :count: 1
5
5
  :flavor: c1.medium
6
6
  :balance: true
7
+ #[{"PolicyNames"=>[], "Listener"=>{"InstancePort"=>80, "SSLCertificateId"=>nil, "Protocol"=>"HTTP", "LoadBalancerPort"=>80, "InstanceProtocol"=>"HTTP"}}]
8
+ #{"ListenerDescriptions"=>[{"PolicyNames"=>[], "Listener"=>{"InstancePort"=>80, "SSLCertificateId"=>nil, "Protocol"=>"HTTP", "LoadBalancerPort"=>80, "InstanceProtocol"=>"HTTP"}}]}
9
+ :listeners:
10
+ - :from: HTTP:80
11
+ :to: HTTP:80
12
+ - :from: HTTPS:443
13
+ :to: HTTP:80
14
+ :cert: inqlabs.com
7
15
  :primary: true
8
16
  :groups:
9
17
  - default
@@ -8,8 +8,13 @@ module Rig
8
8
  list = Rig::Model::Balancer.all
9
9
  list.each do |lb|
10
10
  puts lb.id
11
+ puts "- listeners"
12
+ lb.listeners.each do |l|
13
+ puts " - #{l.protocol}:#{l.lb_port} => #{l.instance_protocol}:#{l.instance_port}"
14
+ end
15
+ puts "- instances"
11
16
  lb.instances.each do |inst|
12
- puts "- #{inst}"
17
+ puts " - #{inst}"
13
18
  end
14
19
  end
15
20
  end
@@ -1,3 +1,6 @@
1
+ require 'fog/aws/models/elb/listeners'
2
+ require 'fog/aws/models/elb/load_balancers'
3
+ require 'awesome_print'
1
4
 
2
5
  module Rig
3
6
  module Model
@@ -7,12 +10,18 @@ module Rig
7
10
  Rig::Connection.balancer.load_balancers.all
8
11
  end
9
12
 
10
- def new(name)
11
- Rig::Connection.balancer.load_balancers.new({ :id => name })
13
+ def new(name, listeners=[])
14
+ listeners.map! do |listener|
15
+ ld = new_listener_description(listener)
16
+ ap ld
17
+ ld
18
+ end
19
+ ap listeners
20
+ Rig::Connection.balancer.load_balancers.new({ :id => name, "ListenerDescriptions" => listeners })
12
21
  end
13
22
 
14
- def create(name)
15
- b = self.new(name)
23
+ def create(name, listeners=[])
24
+ b = self.new(name, listeners)
16
25
  b.save if b
17
26
  puts ".. created: #{name}"
18
27
  b
@@ -23,17 +32,41 @@ module Rig
23
32
  end
24
33
 
25
34
  def find_by_environment(name)
26
- self.all.select {|e| e.id =~ /^#{name}/}
35
+ self.all.select { |e| e.id =~ /^#{name}/ }
27
36
  end
28
37
 
29
38
  def destroy(list)
30
39
  list = [*list]
31
- lbs = list.map {|e| e.kind_of?(String) ? self.find(e) : e}
40
+ lbs = list.map { |e| e.kind_of?(String) ? self.find(e) : e }
32
41
  lbs.each do |lb|
33
42
  puts ".. destroying: #{lb.id}"
34
43
  lb.destroy if lb
35
44
  end
36
45
  end
46
+
47
+ private
48
+
49
+ def new_listener_description(listener)
50
+ desc = { }
51
+ (from_proto, from_port) = listener[:from].split(/:/)
52
+ (to_proto, to_port) = listener[:to].split(/:/)
53
+ sslcert = listener[:cert] || nil
54
+ policy_names = listener[:policy_names] || []
55
+
56
+ new_listener = Fog::AWS::ELB::Listener.new(
57
+ :policy_names => policy_names,
58
+ :instance_port => to_port,
59
+ :instance_protocol => to_proto,
60
+ :lb_port => from_port,
61
+ :protocol => from_proto,
62
+ :ssl_id => sslcert
63
+ )
64
+
65
+ {
66
+ 'Listener' => new_listener.to_params,
67
+ 'PolicyNames' => new_listener.policy_names
68
+ }
69
+ end
37
70
  end
38
71
  end
39
72
  end
@@ -118,7 +118,7 @@ module Rig
118
118
 
119
119
  if tmpl[:balance]
120
120
  puts "creating balancer"
121
- balancer = Rig::Model::Balancer.create("#{name}-#{role}")
121
+ balancer = Rig::Model::Balancer.create("#{name}-#{role}", tmpl[:listeners])
122
122
  balancer.register_instances(setinstances.collect { |e| e.id })
123
123
  balancer.save
124
124
 
@@ -138,14 +138,15 @@ module Rig
138
138
  puts ".. primary: #{name}.env.#@zone #{balancer.attributes[:dns_name]}"
139
139
  Rig::Model::Dns.create("#{name}.env.#@zone", balancer.attributes[:dns_name])
140
140
  end
141
+ else
142
+ #TODO: handle no balancer, but primary - point to server instance
143
+ #if tmpl[:primary]
144
+ # puts ".. primary #{name}.env.#@zone #{}"
145
+ #end
141
146
  end
142
147
  end
143
148
  end
144
149
 
145
- #print "waiting"
146
- #@servers.first.wait_for { print "."; attributes[:public_ip_address] }
147
- #puts
148
-
149
150
  # if we've got a chef config, use it
150
151
  if Rig.config.chef
151
152
  puts "creating chef environment"
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 = 3
6
- TINY = 6
6
+ TINY = 7
7
7
  STRING = [MAJOR, MINOR, TINY].join('.')
8
8
  end
9
9
  end
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rig
3
3
  version: !ruby/object:Gem::Version
4
- hash: 31
4
+ hash: 29
5
5
  prerelease:
6
6
  segments:
7
7
  - 0
8
8
  - 3
9
- - 6
10
- version: 0.3.6
9
+ - 7
10
+ version: 0.3.7
11
11
  platform: ruby
12
12
  authors:
13
13
  - Shawn Catanzarite
@@ -15,7 +15,7 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2012-04-30 00:00:00 Z
18
+ date: 2012-05-02 00:00:00 Z
19
19
  dependencies:
20
20
  - !ruby/object:Gem::Dependency
21
21
  name: clamp