sml-rubber 0.9.9 → 0.9.10

Sign up to get free protection for your applications and to get access to all the features.
Files changed (72) hide show
  1. data/VERSION +1 -1
  2. data/generators/vulcanize/templates/apache/config/rubber/deploy-apache.rb +13 -7
  3. data/generators/vulcanize/templates/apache/config/rubber/role/{web → apache}/deflate.conf +0 -0
  4. data/generators/vulcanize/templates/apache/config/rubber/role/{web → apache}/expires.conf +0 -0
  5. data/generators/vulcanize/templates/apache/config/rubber/role/{web → apache}/headers.conf +0 -0
  6. data/generators/vulcanize/templates/apache/config/rubber/role/apache/monit-apache.conf +8 -0
  7. data/generators/vulcanize/templates/apache/config/rubber/role/apache/ports.conf +5 -0
  8. data/generators/vulcanize/templates/apache/config/rubber/role/{web → apache}/setenvif.conf +0 -0
  9. data/generators/vulcanize/templates/apache/config/rubber/role/web_tools/tools-apache-vhost.conf +62 -0
  10. data/generators/vulcanize/templates/apache/config/rubber/role/web_tools/tools-apache.auth +7 -0
  11. data/generators/vulcanize/templates/{nginx/config/rubber/role/web_tools/index.html → apache/config/rubber/role/web_tools/tools-index.html} +8 -1
  12. data/generators/vulcanize/templates/apache/config/rubber/rubber-apache.yml +4 -12
  13. data/generators/vulcanize/templates/base/config/deploy.rb +5 -34
  14. data/generators/vulcanize/templates/base/config/rubber/deploy-setup.rb +4 -6
  15. data/generators/vulcanize/templates/base/config/rubber/rubber.yml +29 -3
  16. data/generators/vulcanize/templates/complete_mongrel_mysql/config/rubber/role/haproxy/haproxy-mongrel.conf +23 -0
  17. data/generators/vulcanize/templates/{nginx/config/rubber/role/web/nginx.conf → complete_mongrel_mysql/config/rubber/role/nginx/nginx-mongrel.conf} +25 -45
  18. data/generators/vulcanize/templates/complete_mongrel_mysql/config/rubber/rubber-complete.yml +41 -0
  19. data/generators/vulcanize/templates/{complete_mysql → complete_mongrel_mysql}/templates.yml +0 -0
  20. data/generators/vulcanize/templates/complete_passenger_mysql/config/rubber/role/haproxy/haproxy-passenger.conf +19 -0
  21. data/generators/vulcanize/templates/complete_passenger_mysql/config/rubber/rubber-complete.yml +40 -0
  22. data/generators/vulcanize/templates/complete_passenger_mysql/templates.yml +3 -1
  23. data/generators/vulcanize/templates/cruise/config/rubber/deploy-cruise.rb +8 -10
  24. data/generators/vulcanize/templates/cruise/config/rubber/role/web_tools/cruise-nginx.conf +1 -1
  25. data/generators/vulcanize/templates/haproxy/config/rubber/role/haproxy/haproxy-base.conf +26 -0
  26. data/generators/vulcanize/templates/haproxy/config/rubber/role/web_tools/haproxy-nginx.conf +1 -1
  27. data/generators/vulcanize/templates/haproxy/config/rubber/rubber-haproxy.yml +0 -5
  28. data/generators/vulcanize/templates/mongrel/config/rubber/deploy-mongrel.rb +7 -7
  29. data/generators/vulcanize/templates/mongrel/config/rubber/role/{app → mongrel}/mongrel_cluster.yml +4 -4
  30. data/generators/vulcanize/templates/mongrel/config/rubber/role/{app → mongrel}/monit-mongrel.conf +2 -2
  31. data/generators/vulcanize/templates/mongrel/config/rubber/rubber-mongrel.yml +2 -2
  32. data/generators/vulcanize/templates/monit/config/rubber/role/web_tools/monit-admin-nginx.conf +1 -1
  33. data/generators/vulcanize/templates/munin/config/rubber/deploy-munin.rb +17 -1
  34. data/generators/vulcanize/templates/munin/config/rubber/role/web_tools/munin-nginx.conf +1 -1
  35. data/generators/vulcanize/templates/munin/config/rubber/rubber-munin.yml +1 -1
  36. data/generators/vulcanize/templates/mysql/config/rubber/deploy-mysql.rb +14 -36
  37. data/generators/vulcanize/templates/mysql/config/rubber/role/db/monit-mysql.cnf +1 -1
  38. data/generators/vulcanize/templates/mysql/config/rubber/rubber-mysql.yml +8 -0
  39. data/generators/vulcanize/templates/mysql_cluster/config/rubber/deploy-mysql_cluster.rb +7 -7
  40. data/generators/vulcanize/templates/nginx/config/rubber/deploy-nginx.rb +6 -6
  41. data/generators/vulcanize/templates/nginx/config/rubber/role/{web → nginx}/crontab +0 -0
  42. data/generators/vulcanize/templates/nginx/config/rubber/role/{web → nginx}/monit-nginx.conf +0 -1
  43. data/generators/vulcanize/templates/nginx/config/rubber/role/nginx/nginx.conf +42 -0
  44. data/generators/vulcanize/templates/nginx/config/rubber/role/web_tools/nginx-tools.conf +43 -62
  45. data/generators/vulcanize/templates/nginx/config/rubber/role/web_tools/tools-index.html +30 -0
  46. data/generators/vulcanize/templates/nginx/config/rubber/role/web_tools/tools-nginx.auth +7 -0
  47. data/generators/vulcanize/templates/nginx/config/rubber/rubber-nginx.yml +3 -26
  48. data/generators/vulcanize/templates/passenger/config/rubber/deploy-passenger.rb +13 -40
  49. data/generators/vulcanize/templates/passenger/config/rubber/role/passenger/munin-passenger-sudoers.conf +6 -0
  50. data/generators/vulcanize/templates/passenger/config/rubber/role/passenger/munin-passenger.conf +47 -0
  51. data/generators/vulcanize/templates/passenger/config/rubber/role/passenger/passenger-apache-vhost.conf +46 -0
  52. data/generators/vulcanize/templates/passenger/config/rubber/role/passenger/passenger.conf +10 -0
  53. data/generators/vulcanize/templates/passenger/config/rubber/rubber-passenger.yml +9 -11
  54. data/generators/vulcanize/templates/sphinx/config/rubber/deploy-sphinx.rb +1 -1
  55. data/lib/rubber/cloud/aws.rb +30 -0
  56. data/lib/rubber/instance.rb +53 -2
  57. data/lib/rubber/recipes/rubber.rb +7 -6
  58. data/lib/rubber/recipes/rubber/deploy.rb +22 -1
  59. data/lib/rubber/recipes/rubber/instances.rb +74 -24
  60. data/lib/rubber/recipes/rubber/load_balancers.rb +27 -0
  61. data/lib/rubber/recipes/rubber/security_groups.rb +5 -7
  62. data/lib/rubber/recipes/rubber/setup.rb +50 -14
  63. data/lib/rubber/recipes/rubber/static_ips.rb +7 -7
  64. data/lib/rubber/recipes/rubber/utils.rb +6 -7
  65. data/lib/rubber/recipes/rubber/volumes.rb +8 -8
  66. data/lib/rubber/util.rb +4 -0
  67. data/test/instance_test.rb +55 -0
  68. metadata +32 -18
  69. data/generators/vulcanize/templates/apache/config/rubber/role/web/vhost.conf +0 -27
  70. data/generators/vulcanize/templates/haproxy/config/rubber/role/haproxy/haproxy.conf +0 -44
  71. data/generators/vulcanize/templates/passenger/config/rubber/role/web/passenger.conf +0 -8
  72. data/generators/vulcanize/templates/passenger/config/rubber/role/web/vhost.conf +0 -29
@@ -0,0 +1,27 @@
1
+ namespace :rubber do
2
+
3
+ desc <<-DESC
4
+ Sets up the network load balancers
5
+ DESC
6
+ required_task :setup_load_balancers do
7
+ setup_load_balancers()
8
+ end
9
+
10
+ desc <<-DESC
11
+ Describes the network load balancers
12
+ DESC
13
+ required_task :describe_load_balancers do
14
+ lbs = cloud.describe_load_balancers()
15
+ pp lbs
16
+ end
17
+
18
+ def setup_load_balancers
19
+ # get remote lbs
20
+ # for each local not in remote, add it
21
+ # get all zones for all instances for roles, and make sure in lb
22
+ # warn if lb not balanced (count of instances per zone is equal)
23
+ # for each local that is in remote, sync listeners and zones
24
+ # for each remote not in local, remove it
25
+ end
26
+
27
+ end
@@ -45,8 +45,8 @@ namespace :rubber do
45
45
  env = rubber_cfg.environment.bind(roles, host)
46
46
  security_group_defns = env.security_groups
47
47
  if env.auto_security_groups
48
- sghosts = (rubber_cfg.instance.collect{|ic| ic.name } + [host]).uniq.compact
49
- sgroles = (rubber_cfg.instance.all_roles + roles).uniq.compact
48
+ sghosts = (rubber_instances.collect{|ic| ic.name } + [host]).uniq.compact
49
+ sgroles = (rubber_instances.all_roles + roles).uniq.compact
50
50
  security_group_defns = inject_auto_security_groups(security_group_defns, sghosts, sgroles)
51
51
  sync_security_groups(security_group_defns)
52
52
  else
@@ -67,8 +67,7 @@ namespace :rubber do
67
67
  end
68
68
 
69
69
  def isolate_prefix
70
- env = rubber_cfg.environment.bind()
71
- return "#{env.app_name}_#{RUBBER_ENV}_"
70
+ return "#{rubber_env.app_name}_#{RUBBER_ENV}_"
72
71
  end
73
72
 
74
73
  def isolate_group_name(group_name)
@@ -93,11 +92,10 @@ namespace :rubber do
93
92
  end
94
93
 
95
94
  def sync_security_groups(groups)
96
- env = rubber_cfg.environment.bind()
97
95
  return unless groups
98
96
 
99
97
  groups = Rubber::Util::stringify(groups)
100
- groups = isolate_groups(groups) if env.isolate_security_groups
98
+ groups = isolate_groups(groups) if rubber_env.isolate_security_groups
101
99
  group_keys = groups.keys.clone()
102
100
 
103
101
  # For each group that does already exist in ec2
@@ -106,7 +104,7 @@ namespace :rubber do
106
104
  group_name = cloud_group[:name]
107
105
 
108
106
  # skip those groups that don't belong to this project/env
109
- next if env.isolate_security_groups && group_name !~ /^#{isolate_prefix}/
107
+ next if rubber_env.isolate_security_groups && group_name !~ /^#{isolate_prefix}/
110
108
 
111
109
  if group_keys.delete(group_name)
112
110
  # sync rules
@@ -9,7 +9,7 @@ namespace :rubber do
9
9
  upgrade_packages
10
10
  install_packages
11
11
  setup_volumes
12
- add_gem_sources
12
+ setup_gem_sources
13
13
  install_gems
14
14
  deploy.setup
15
15
  end
@@ -33,10 +33,9 @@ namespace :rubber do
33
33
  hosts_file = '/etc/hosts'
34
34
 
35
35
  # Generate /etc/hosts contents for the local machine from instance config
36
- env = rubber_cfg.environment.bind()
37
- delim = "## rubber config #{env.domain} #{RUBBER_ENV}"
36
+ delim = "## rubber config #{rubber_env.domain} #{RUBBER_ENV}"
38
37
  local_hosts = delim + "\n"
39
- rubber_cfg.instance.each do |ic|
38
+ rubber_instances.each do |ic|
40
39
  # don't add unqualified hostname in local hosts file since user may be
41
40
  # managing multiple domains with same aliases
42
41
  hosts_data = [ic.full_name, ic.external_host, ic.internal_host].join(' ')
@@ -57,7 +56,7 @@ namespace :rubber do
57
56
  Sets up aliases in dynamic dns provider for instance hostnames based on contents of instance.yml.
58
57
  DESC
59
58
  required_task :setup_dns_aliases do
60
- rubber_cfg.instance.each do |ic|
59
+ rubber_instances.each do |ic|
61
60
  update_dyndns(ic)
62
61
  end
63
62
  end
@@ -73,12 +72,12 @@ namespace :rubber do
73
72
  delim = "## rubber config"
74
73
  delim = "#{delim} #{RUBBER_ENV}"
75
74
  remote_hosts = delim + "\n"
76
- rubber_cfg.instance.each do |ic|
75
+ rubber_instances.each do |ic|
77
76
  hosts_data = [ic.name, ic.full_name, ic.external_host, ic.internal_host].join(' ')
78
77
  remote_hosts << ic.internal_ip << ' ' << hosts_data << "\n"
79
78
  end
80
79
  remote_hosts << delim << "\n"
81
- if rubber_cfg.instance.size > 0
80
+ if rubber_instances.size > 0
82
81
  # write out the hosts file for the remote instances
83
82
  # NOTE that we use "capture" to get the existing hosts
84
83
  # file, which only grabs the hosts file from the first host
@@ -127,7 +126,7 @@ namespace :rubber do
127
126
  end
128
127
 
129
128
  desc <<-DESC
130
- Install extra Ubuntu packages. Set 'packages' in rubber.yml to \
129
+ Install Ubuntu packages. Set 'packages' in rubber.yml to \
131
130
  be an array of strings.
132
131
  DESC
133
132
  task :install_packages do
@@ -135,7 +134,7 @@ namespace :rubber do
135
134
  end
136
135
 
137
136
  desc <<-DESC
138
- Install extra ruby gems. Set 'gems' in rubber.yml to \
137
+ Install ruby gems. Set 'gems' in rubber.yml to \
139
138
  be an array of strings.
140
139
  DESC
141
140
  task :install_gems do
@@ -143,13 +142,50 @@ namespace :rubber do
143
142
  end
144
143
 
145
144
  desc <<-DESC
146
- Add extra ruby gems sources. Set 'gemsources' in rubber.yml to \
145
+ Install ruby gems defined in the rails environment.rb
146
+ DESC
147
+ after "deploy:symlink", "rubber:install_rails_gems" if Rubber::Util.is_rails?
148
+ task :install_rails_gems do
149
+ sudo "sh -c 'cd #{current_path} && RAILS_ENV=#{RUBBER_ENV} rake gems:install'"
150
+ end
151
+
152
+ desc <<-DESC
153
+ Setup ruby gems sources. Set 'gemsources' in rubber.yml to \
147
154
  be an array of URI strings.
148
155
  DESC
149
- task :add_gem_sources do
150
- env = rubber_cfg.environment.bind()
151
- if env.gemsources
152
- env.gemsources.each { |source| sudo "gem sources -a #{source}"}
156
+ task :setup_gem_sources do
157
+ if rubber_env.gemsources
158
+ script = prepare_script 'gem_sources_helper', <<-'ENDSCRIPT'
159
+ ruby - $@ <<-'EOF'
160
+
161
+ sources = ARGV
162
+
163
+ installed = []
164
+ `gem sources -l`.grep(/^[^*]/) do |line|
165
+ line = line.strip
166
+ installed << line if line.size > 0
167
+ end
168
+
169
+ to_install = sources - installed
170
+ to_remove = installed - sources
171
+
172
+ if to_install.size > 0
173
+ to_install.each do |source|
174
+ system "gem sources -a #{source}"
175
+ fail "Unable to add gem sources" if $?.exitstatus > 0
176
+ end
177
+ end
178
+ if to_remove.size > 0
179
+ to_remove.each do |source|
180
+ system "gem sources -r #{source}"
181
+ fail "Unable to remove gem sources" if $?.exitstatus > 0
182
+ end
183
+ end
184
+
185
+ 'EOF'
186
+ ENDSCRIPT
187
+
188
+ sudo "sh #{script} #{rubber_env.gemsources.join(' ')}"
153
189
  end
154
190
  end
155
191
 
@@ -5,10 +5,10 @@ namespace :rubber do
5
5
  Sets up static IPs for the instances configured to have them
6
6
  DESC
7
7
  required_task :setup_static_ips do
8
- rubber_cfg.instance.each do |ic|
8
+ rubber_instances.each do |ic|
9
9
  env = rubber_cfg.environment.bind(ic.role_names, ic.name)
10
10
  if env.use_static_ip
11
- artifacts = rubber_cfg.instance.artifacts
11
+ artifacts = rubber_instances.artifacts
12
12
  ip = artifacts['static_ips'][ic.name] rescue nil
13
13
 
14
14
  # first allocate the static ip if we don't have a global record (artifacts) for it
@@ -16,7 +16,7 @@ namespace :rubber do
16
16
  logger.info "Allocating static IP for #{ic.full_name}"
17
17
  ip = allocate_static_ip()
18
18
  artifacts['static_ips'][ic.name] = ip
19
- rubber_cfg.instance.save
19
+ rubber_instances.save
20
20
  end
21
21
 
22
22
  # then, associate it if we don't have a record (on instance) of association
@@ -29,7 +29,7 @@ namespace :rubber do
29
29
  ic.internal_host = instance[:internal_host]
30
30
  ic.external_ip = ip
31
31
  ic.static_ip = ip
32
- rubber_cfg.instance.save()
32
+ rubber_instances.save()
33
33
 
34
34
  logger.info "Waiting for static ip to associate"
35
35
  while true do
@@ -96,12 +96,12 @@ namespace :rubber do
96
96
  cloud.destroy_static_ip(ip) rescue logger.info("IP was not attached")
97
97
 
98
98
  logger.info "Removing ip #{ip} from rubber instances file"
99
- artifacts = rubber_cfg.instance.artifacts
99
+ artifacts = rubber_instances.artifacts
100
100
  artifacts['static_ips'].delete_if {|k,v| v == ip}
101
- rubber_cfg.instance.each do |ic|
101
+ rubber_instances.each do |ic|
102
102
  ic.static_ip = nil if ic.static_ip == ip
103
103
  end
104
- rubber_cfg.instance.save
104
+ rubber_instances.save
105
105
  end
106
106
 
107
107
  end
@@ -8,12 +8,12 @@ namespace :rubber do
8
8
  e.g. RUBBER_ENV=matt cap create_staging
9
9
  DESC
10
10
  required_task :create_staging do
11
- if rubber_cfg.instance.size > 0
11
+ if rubber_instances.size > 0
12
12
  value = Capistrano::CLI.ui.ask("The #{RUBBER_ENV} environment already has instances, Are you SURE you want to create a staging instance that may interact with them [y/N]?: ")
13
13
  fatal("Exiting", 0) if value !~ /^y/
14
14
  end
15
15
  instance_alias = ENV['ALIAS'] = rubber.get_env("ALIAS", "Hostname to use for staging instance", true, RUBBER_ENV)
16
- default_roles = rubber_cfg.environment.bind().staging_roles || "*"
16
+ default_roles = rubber_env.staging_roles || "*"
17
17
  roles = ENV['ROLES'] = rubber.get_env("ROLES", "Roles to use for staging instance", true, default_roles)
18
18
 
19
19
  # some bootstraps update code (bootstrap_db) but if you don't have that role, need to do it here
@@ -24,7 +24,7 @@ namespace :rubber do
24
24
  set :rubber_code_was_updated, true
25
25
  end
26
26
 
27
- if rubber_cfg.instance[instance_alias]
27
+ if rubber_instances[instance_alias]
28
28
  logger.info "Instance already exists, skipping to bootstrap"
29
29
  else
30
30
  rubber.create
@@ -134,7 +134,7 @@ namespace :rubber do
134
134
 
135
135
  def find_alias(ip, instance_id, do_connect=true)
136
136
  if instance_id
137
- instance = rubber_cfg.instance.find {|i| i.instance_id == instance_id }
137
+ instance = rubber_instances.find {|i| i.instance_id == instance_id }
138
138
  local_alias = instance.full_name if instance
139
139
  end
140
140
  local_alias ||= File.read("/etc/hosts").grep(/#{ip}/).first.split[1] rescue nil
@@ -150,8 +150,7 @@ namespace :rubber do
150
150
  def prepare_script(name, contents)
151
151
  script = "/tmp/#{name}"
152
152
  # this lets us abort a script if a command in the middle of it errors out
153
- env = rubber_cfg.environment.bind()
154
- contents = "#{env.stop_on_error_cmd}\n#{contents}" if env.stop_on_error_cmd
153
+ contents = "#{rubber_env.stop_on_error_cmd}\n#{contents}" if rubber_env.stop_on_error_cmd
155
154
  put(contents, script)
156
155
  return script
157
156
  end
@@ -188,7 +187,7 @@ namespace :rubber do
188
187
  # be installed.
189
188
  def get_host_options(cfg_name, &block)
190
189
  opts = {}
191
- rubber_cfg.instance.each do | ic|
190
+ rubber_instances.each do | ic|
192
191
  env = rubber_cfg.environment.bind(ic.role_names, ic.name)
193
192
  cfg_value = env[cfg_name]
194
193
  if cfg_value
@@ -5,7 +5,7 @@ namespace :rubber do
5
5
  All volumes defined in rubber.yml will be created if neccessary, and attached/mounted on their associated instances
6
6
  DESC
7
7
  required_task :setup_volumes do
8
- rubber_cfg.instance.filtered.each do |ic|
8
+ rubber_instances.filtered.each do |ic|
9
9
  env = rubber_cfg.environment.bind(ic.role_names, ic.name)
10
10
  created_vols = []
11
11
  vol_specs = env.volumes || []
@@ -71,7 +71,7 @@ namespace :rubber do
71
71
  def setup_volume(ic, vol_spec)
72
72
  created = nil
73
73
  key = "#{ic.name}_#{vol_spec['device']}"
74
- artifacts = rubber_cfg.instance.artifacts
74
+ artifacts = rubber_instances.artifacts
75
75
  vol_id = artifacts['volumes'][key]
76
76
 
77
77
  # first create the volume if we don't have a global record (artifacts) for it
@@ -79,7 +79,7 @@ namespace :rubber do
79
79
  logger.info "Creating volume for #{ic.full_name}:#{vol_spec['device']}"
80
80
  vol_id = create_volume(vol_spec['size'], vol_spec['zone'])
81
81
  artifacts['volumes'][key] = vol_id
82
- rubber_cfg.instance.save
82
+ rubber_instances.save
83
83
  created = vol_spec['device']
84
84
  end
85
85
 
@@ -89,7 +89,7 @@ namespace :rubber do
89
89
  logger.info "Attaching volume #{vol_id} to #{ic.full_name}:#{vol_spec['device']}"
90
90
  attach_volume(vol_id, ic.instance_id, vol_spec['device'])
91
91
  ic.volumes << vol_id
92
- rubber_cfg.instance.save
92
+ rubber_instances.save
93
93
 
94
94
  print "Waiting for volume to attach"
95
95
  while true do
@@ -151,7 +151,7 @@ namespace :rubber do
151
151
  _setup_partition
152
152
 
153
153
  ic.partitions << part_id
154
- rubber_cfg.instance.save
154
+ rubber_instances.save
155
155
  created = part_id
156
156
 
157
157
  end
@@ -253,12 +253,12 @@ namespace :rubber do
253
253
  cloud.destroy_volume(volume_id)
254
254
 
255
255
  logger.info "Removing volume #{volume_id} from rubber instances file"
256
- artifacts = rubber_cfg.instance.artifacts
256
+ artifacts = rubber_instances.artifacts
257
257
  artifacts['volumes'].delete_if {|k,v| v == volume_id}
258
- rubber_cfg.instance.each do |ic|
258
+ rubber_instances.each do |ic|
259
259
  ic.volumes.delete(volume_id) if ic.volumes
260
260
  end
261
- rubber_cfg.instance.save
261
+ rubber_instances.save
262
262
  end
263
263
 
264
264
  end
@@ -29,5 +29,9 @@ module Rubber
29
29
  open("|sudo tee #{path} > /dev/null", perms, &block)
30
30
  end
31
31
 
32
+ def self.is_rails?
33
+ File.exist?(File.join(RUBBER_ROOT, 'config', 'environment.rb'))
34
+ end
35
+
32
36
  end
33
37
  end
@@ -35,4 +35,59 @@ class InstanceTest < Test::Unit::TestCase
35
35
 
36
36
  end
37
37
 
38
+ def test_equality
39
+ assert RoleItem.new('a').eql?(RoleItem.new('a'))
40
+ assert RoleItem.new('a') == RoleItem.new('a')
41
+ assert_equal RoleItem.new('a').hash, RoleItem.new('a').hash
42
+
43
+ assert ! RoleItem.new('a').eql?(RoleItem.new('b'))
44
+ assert RoleItem.new('a') != RoleItem.new('b')
45
+ assert_not_equal RoleItem.new('a').hash, RoleItem.new('b').hash
46
+
47
+ assert RoleItem.new('a', {'a' => 'b', 1 => true}).eql?(RoleItem.new('a', {'a' => 'b', 1 => true}))
48
+ assert RoleItem.new('a', {'a' => 'b', 1 => true}) == RoleItem.new('a', {'a' => 'b', 1 => true})
49
+ assert_equal RoleItem.new('a', {'a' => 'b', 1 => true}).hash, RoleItem.new('a', {'a' => 'b', 1 => true}).hash
50
+
51
+ assert ! RoleItem.new('a', {'a' => 'b', 1 => true}).eql?(RoleItem.new('a', {'a' => 'b', 2 => true}))
52
+ assert RoleItem.new('a', {'a' => 'b', 1 => true}) != RoleItem.new('a', {'a' => 'b', 2 => true})
53
+ assert_equal RoleItem.new('a', {'a' => 'b', 1 => true}).hash, RoleItem.new('a', {'a' => 'b', 2 => true}).hash
54
+ end
55
+
56
+ def test_role_parse
57
+ assert_equal RoleItem.new('a'), RoleItem.parse("a")
58
+ assert_equal RoleItem.new('a', {'b' => 'c'}), RoleItem.parse("a:b=c")
59
+ assert_equal RoleItem.new('a', {'b' => 'c', 'd' => 'e'}), RoleItem.parse("a:b=c;d=e")
60
+ assert_equal RoleItem.new('a', {'b' => true, 'c' => false}), RoleItem.parse("a:b=true;c=false")
61
+ end
62
+
63
+ def test_role_to_s
64
+ assert_equal "a", RoleItem.new('a').to_s
65
+ assert_equal "a:b=c", RoleItem.new('a', {'b' => 'c'}).to_s
66
+ assert_equal "a:b=c;d=e", RoleItem.new('a', {'b' => 'c', 'd' => 'e'}).to_s
67
+ assert_equal "a:b=true;c=false", RoleItem.new('a', {'b' => true, 'c' => false}).to_s
68
+ end
69
+
70
+ def test_expand_role_dependencies
71
+ deps = { RoleItem.new('a') => RoleItem.new('b'),
72
+ RoleItem.new('b') => RoleItem.new('c'),
73
+ RoleItem.new('c') => [RoleItem.new('d'), RoleItem.new('a')]}
74
+ roles = [RoleItem.new('a'),RoleItem.new('b'),RoleItem.new('c'),RoleItem.new('d')]
75
+ assert_equal roles, RoleItem.expand_role_dependencies(RoleItem.new('a'), deps).sort
76
+ assert_equal roles, RoleItem.expand_role_dependencies([RoleItem.new('a'), RoleItem.new('d')], deps).sort
77
+
78
+ deps = { RoleItem.new('mysql_master') => RoleItem.new('db', {'primary' => true}),
79
+ RoleItem.new('mysql_slave') => RoleItem.new('db'),
80
+ RoleItem.new('db', {'primary' => true}) => RoleItem.new('mysql_master'),
81
+ RoleItem.new('db') => RoleItem.new('mysql_slave')
82
+ }
83
+ assert_equal [RoleItem.new('db', 'primary' => true), RoleItem.new('mysql_master')],
84
+ RoleItem.expand_role_dependencies(RoleItem.new('mysql_master'), deps).sort
85
+ assert_equal [RoleItem.new('db', 'primary' => true), RoleItem.new('mysql_master')],
86
+ RoleItem.expand_role_dependencies(RoleItem.new('db', 'primary' => true), deps).sort
87
+ assert_equal [RoleItem.new('db'), RoleItem.new('mysql_slave')],
88
+ RoleItem.expand_role_dependencies(RoleItem.new('mysql_slave'), deps).sort
89
+ assert_equal [RoleItem.new('db'), RoleItem.new('mysql_slave')],
90
+ RoleItem.expand_role_dependencies(RoleItem.new('db'), deps).sort
91
+
92
+ end
38
93
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sml-rubber
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.9.9
4
+ version: 0.9.10
5
5
  platform: ruby
6
6
  authors:
7
7
  - Matt Conway
@@ -9,7 +9,7 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2009-09-03 00:00:00 -07:00
12
+ date: 2009-09-15 00:00:00 -07:00
13
13
  default_executable: vulcanize
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
@@ -88,11 +88,15 @@ files:
88
88
  - bin/vulcanize
89
89
  - generators/vulcanize/USAGE
90
90
  - generators/vulcanize/templates/apache/config/rubber/deploy-apache.rb
91
- - generators/vulcanize/templates/apache/config/rubber/role/web/deflate.conf
92
- - generators/vulcanize/templates/apache/config/rubber/role/web/expires.conf
93
- - generators/vulcanize/templates/apache/config/rubber/role/web/headers.conf
94
- - generators/vulcanize/templates/apache/config/rubber/role/web/setenvif.conf
95
- - generators/vulcanize/templates/apache/config/rubber/role/web/vhost.conf
91
+ - generators/vulcanize/templates/apache/config/rubber/role/apache/deflate.conf
92
+ - generators/vulcanize/templates/apache/config/rubber/role/apache/expires.conf
93
+ - generators/vulcanize/templates/apache/config/rubber/role/apache/headers.conf
94
+ - generators/vulcanize/templates/apache/config/rubber/role/apache/monit-apache.conf
95
+ - generators/vulcanize/templates/apache/config/rubber/role/apache/ports.conf
96
+ - generators/vulcanize/templates/apache/config/rubber/role/apache/setenvif.conf
97
+ - generators/vulcanize/templates/apache/config/rubber/role/web_tools/tools-apache-vhost.conf
98
+ - generators/vulcanize/templates/apache/config/rubber/role/web_tools/tools-apache.auth
99
+ - generators/vulcanize/templates/apache/config/rubber/role/web_tools/tools-index.html
96
100
  - generators/vulcanize/templates/apache/config/rubber/rubber-apache.yml
97
101
  - generators/vulcanize/templates/apache/templates.yml
98
102
  - generators/vulcanize/templates/base/Capfile
@@ -106,7 +110,12 @@ files:
106
110
  - generators/vulcanize/templates/base/script/cron-runner
107
111
  - generators/vulcanize/templates/base/script/cron-sh
108
112
  - generators/vulcanize/templates/base/templates.yml
109
- - generators/vulcanize/templates/complete_mysql/templates.yml
113
+ - generators/vulcanize/templates/complete_mongrel_mysql/config/rubber/role/haproxy/haproxy-mongrel.conf
114
+ - generators/vulcanize/templates/complete_mongrel_mysql/config/rubber/role/nginx/nginx-mongrel.conf
115
+ - generators/vulcanize/templates/complete_mongrel_mysql/config/rubber/rubber-complete.yml
116
+ - generators/vulcanize/templates/complete_mongrel_mysql/templates.yml
117
+ - generators/vulcanize/templates/complete_passenger_mysql/config/rubber/role/haproxy/haproxy-passenger.conf
118
+ - generators/vulcanize/templates/complete_passenger_mysql/config/rubber/rubber-complete.yml
110
119
  - generators/vulcanize/templates/complete_passenger_mysql/templates.yml
111
120
  - generators/vulcanize/templates/cruise/config/rubber/deploy-cruise.rb
112
121
  - generators/vulcanize/templates/cruise/config/rubber/role/cruise/cruise
@@ -117,8 +126,8 @@ files:
117
126
  - generators/vulcanize/templates/cruise/config/rubber/rubber-cruise.yml
118
127
  - generators/vulcanize/templates/cruise/templates.yml
119
128
  - generators/vulcanize/templates/haproxy/config/rubber/deploy-haproxy.rb
129
+ - generators/vulcanize/templates/haproxy/config/rubber/role/haproxy/haproxy-base.conf
120
130
  - generators/vulcanize/templates/haproxy/config/rubber/role/haproxy/haproxy-default.conf
121
- - generators/vulcanize/templates/haproxy/config/rubber/role/haproxy/haproxy.conf
122
131
  - generators/vulcanize/templates/haproxy/config/rubber/role/haproxy/monit-haproxy.conf
123
132
  - generators/vulcanize/templates/haproxy/config/rubber/role/haproxy/syslog-haproxy.conf
124
133
  - generators/vulcanize/templates/haproxy/config/rubber/role/haproxy/syslogd-default.conf
@@ -134,8 +143,8 @@ files:
134
143
  - generators/vulcanize/templates/minimal_mysql/templates.yml
135
144
  - generators/vulcanize/templates/minimal_nodb/templates.yml
136
145
  - generators/vulcanize/templates/mongrel/config/rubber/deploy-mongrel.rb
137
- - generators/vulcanize/templates/mongrel/config/rubber/role/app/mongrel_cluster.yml
138
- - generators/vulcanize/templates/mongrel/config/rubber/role/app/monit-mongrel.conf
146
+ - generators/vulcanize/templates/mongrel/config/rubber/role/mongrel/mongrel_cluster.yml
147
+ - generators/vulcanize/templates/mongrel/config/rubber/role/mongrel/monit-mongrel.conf
139
148
  - generators/vulcanize/templates/mongrel/config/rubber/rubber-mongrel.yml
140
149
  - generators/vulcanize/templates/mongrel/templates.yml
141
150
  - generators/vulcanize/templates/monit/config/rubber/common/monit-default.conf
@@ -179,16 +188,19 @@ files:
179
188
  - generators/vulcanize/templates/mysql_proxy/config/rubber/rubber-mysql_proxy.yml
180
189
  - generators/vulcanize/templates/mysql_proxy/templates.yml
181
190
  - generators/vulcanize/templates/nginx/config/rubber/deploy-nginx.rb
182
- - generators/vulcanize/templates/nginx/config/rubber/role/web/crontab
183
- - generators/vulcanize/templates/nginx/config/rubber/role/web/monit-nginx.conf
184
- - generators/vulcanize/templates/nginx/config/rubber/role/web/nginx.conf
185
- - generators/vulcanize/templates/nginx/config/rubber/role/web_tools/index.html
191
+ - generators/vulcanize/templates/nginx/config/rubber/role/nginx/crontab
192
+ - generators/vulcanize/templates/nginx/config/rubber/role/nginx/monit-nginx.conf
193
+ - generators/vulcanize/templates/nginx/config/rubber/role/nginx/nginx.conf
186
194
  - generators/vulcanize/templates/nginx/config/rubber/role/web_tools/nginx-tools.conf
195
+ - generators/vulcanize/templates/nginx/config/rubber/role/web_tools/tools-index.html
196
+ - generators/vulcanize/templates/nginx/config/rubber/role/web_tools/tools-nginx.auth
187
197
  - generators/vulcanize/templates/nginx/config/rubber/rubber-nginx.yml
188
198
  - generators/vulcanize/templates/nginx/templates.yml
189
199
  - generators/vulcanize/templates/passenger/config/rubber/deploy-passenger.rb
190
- - generators/vulcanize/templates/passenger/config/rubber/role/web/passenger.conf
191
- - generators/vulcanize/templates/passenger/config/rubber/role/web/vhost.conf
200
+ - generators/vulcanize/templates/passenger/config/rubber/role/passenger/munin-passenger-sudoers.conf
201
+ - generators/vulcanize/templates/passenger/config/rubber/role/passenger/munin-passenger.conf
202
+ - generators/vulcanize/templates/passenger/config/rubber/role/passenger/passenger-apache-vhost.conf
203
+ - generators/vulcanize/templates/passenger/config/rubber/role/passenger/passenger.conf
192
204
  - generators/vulcanize/templates/passenger/config/rubber/rubber-passenger.yml
193
205
  - generators/vulcanize/templates/passenger/templates.yml
194
206
  - generators/vulcanize/templates/sphinx/config/rubber/common/sphinx.yml
@@ -217,6 +229,7 @@ files:
217
229
  - lib/rubber/recipes/rubber/bundles.rb
218
230
  - lib/rubber/recipes/rubber/deploy.rb
219
231
  - lib/rubber/recipes/rubber/instances.rb
232
+ - lib/rubber/recipes/rubber/load_balancers.rb
220
233
  - lib/rubber/recipes/rubber/security_groups.rb
221
234
  - lib/rubber/recipes/rubber/setup.rb
222
235
  - lib/rubber/recipes/rubber/static_ips.rb
@@ -226,6 +239,7 @@ files:
226
239
  - lib/rubber/util.rb
227
240
  has_rdoc: false
228
241
  homepage: http://github.com/wr0ngway/rubber
242
+ licenses:
229
243
  post_install_message:
230
244
  rdoc_options:
231
245
  - --charset=UTF-8
@@ -246,7 +260,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
246
260
  requirements: []
247
261
 
248
262
  rubyforge_project: rubber
249
- rubygems_version: 1.2.0
263
+ rubygems_version: 1.3.5
250
264
  signing_key:
251
265
  specification_version: 3
252
266
  summary: A capistrano plugin for managing multi-instance deployments to the cloud (ec2)