ironfan 5.0.10 → 5.0.11

Sign up to get free protection for your applications and to get access to all the features.
data/Rakefile CHANGED
@@ -68,10 +68,10 @@ RSpec::Core::RakeTask.new(:spec) do |spec|
68
68
  spec.pattern = 'spec/{ironfan,chef,ironfan/*}/*_spec.rb'
69
69
  end
70
70
 
71
- desc 'Run :spec task with coverage using Simplecov'
72
- task :coverage do
73
- ENV['IRONFAN_COV'] = 'true'
74
- Rake::Task[:spec].invoke
71
+ RSpec::Core::RakeTask.new(:rcov) do |spec|
72
+ spec.pattern = 'spec/**/*_spec.rb'
73
+ spec.rcov = true
74
+ spec.rcov_opts = %w[ --exclude .rvm --no-comments --text-summary ]
75
75
  end
76
76
 
77
77
  RSpec::Core::RakeTask.new(:integration) do |spec|
data/VERSION CHANGED
@@ -1 +1,2 @@
1
- 5.0.10
1
+ 5.0.11
2
+
data/ironfan.gemspec CHANGED
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = "ironfan"
8
- s.version = "5.0.10"
8
+ s.version = "5.0.11"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Infochimps"]
12
- s.date = "2014-02-20"
12
+ s.date = "2014-04-02"
13
13
  s.description = "Ironfan allows you to orchestrate not just systems but clusters of machines. It includes a powerful layer on top of knife and a collection of cloud cookbooks."
14
14
  s.email = "coders@infochimps.com"
15
15
  s.extra_rdoc_files = [
@@ -53,17 +53,13 @@ class Chef
53
53
 
54
54
  (ui.fatal("No nodes returned from search!"); exit 10) if addresses.nil? || addresses.length == 0
55
55
 
56
- # Need to include both public host and public ip; sometimes these are different
57
- @hostname_to_ironfan_hostname = target.to_a.inject({}) do |remap, c|
58
- remap[c.machine.public_hostname] = c.machine.tags['Name']
59
- remap[c.machine.public_ip_address] = c.machine.tags['Name']
60
- remap
61
- end
62
-
56
+ @hostname_to_ironfan_hostname = Hash[
57
+ target.map do |c|
58
+ [c.machine.public_hostname, c.machine.tags['Name']]
59
+ end
60
+ ]
63
61
  @longest_ironfan_hostname = @hostname_to_ironfan_hostname.values.group_by(&:size).max.last[0].size
64
62
 
65
- @action_nodes = Chef::Search::Query.new.search(:node, "node_name:#{@name_args[0]}*")[0]
66
-
67
63
  session_from_list(addresses)
68
64
  end
69
65
 
@@ -125,7 +125,7 @@ module Ironfan
125
125
  protected
126
126
 
127
127
  def client_group(compute)
128
- security_group(compute.cluster_name, (compute.name if compute.is_a?(Facet)))
128
+ security_group(compute.cluster_name)
129
129
  end
130
130
 
131
131
  def full_server_cluster
@@ -321,38 +321,51 @@ module Ironfan
321
321
  end
322
322
  end
323
323
 
324
+ #
325
+ # aws ec2 flavor info: details on ec2 linux instances in us-east
326
+ #
327
+ # instance details from http://aws.amazon.com/ec2/instance-types/
328
+ # pricing from http://aws.amazon.com/ec2/pricing/
329
+ #
330
+ # some notes on attributes:
331
+ # price: cost per hour in US dollars as of 12 March 2014
332
+ # ram: instance RAM in MiB
333
+ # cores: number of vCPUs
334
+ # core_size: ECU / vCPU
335
+
336
+
324
337
  Chef::Config[:ec2_flavor_info] ||= {}
325
338
  Chef::Config[:ec2_flavor_info].merge!({
326
339
  # 32-or-64: m1.small, m1.medium, t1.micro, c1.medium
327
- 't1.micro' => { :price => 0.02, :bits => 64, :ram => 686, :cores => 1, :core_size => 0.25, :inst_disks => 0, :inst_disk_size => 0, :ephemeral_volumes => 0 },
328
- 'm1.small' => { :price => 0.08, :bits => 64, :ram => 1740, :cores => 1, :core_size => 1, :inst_disks => 1, :inst_disk_size => 160, :ephemeral_volumes => 1 },
329
- 'm1.medium' => { :price => 0.165, :bits => 64, :ram => 3840, :cores => 2, :core_size => 1, :inst_disks => 1, :inst_disk_size => 410, :ephemeral_volumes => 1 },
330
- 'c1.medium' => { :price => 0.17, :bits => 64, :ram => 1740, :cores => 2, :core_size => 2.5, :inst_disks => 1, :inst_disk_size => 350, :ephemeral_volumes => 1 },
331
- 'm3.medium' => { :price => 0.113, :bits => 64, :ram => 3840, :cores => 1, :core_size => 3.25, :inst_disks => 1, :inst_disk_size => 4, :ephemeral_volumes => 1, :ebs_optimizable => 500, },
332
- 'm1.large' => { :price => 0.32, :bits => 64, :ram => 7680, :cores => 2, :core_size => 2, :inst_disks => 2, :inst_disk_size => 850, :ephemeral_volumes => 2, :ebs_optimizable => 500, },
333
- 'm3.large' => { :price => 0.225, :bits => 64, :ram => 7680, :cores => 2, :core_size => 3.25, :inst_disks => 1, :inst_disk_size => 32, :ephemeral_volumes => 0, :ebs_optimizable => 500, },
334
- 'm2.xlarge' => { :price => 0.41, :bits => 64, :ram => 18124, :cores => 2, :core_size => 3.25, :inst_disks => 1, :inst_disk_size => 420, :ephemeral_volumes => 1, },
335
- 'm3.xlarge' => { :price => 0.45, :bits => 64, :ram => 15360, :cores => 4, :core_size => 3.25, :inst_disks => 2, :inst_disk_size => 40, :ephemeral_volumes => 2, :ebs_optimizable => 500, },
336
- 'c1.xlarge' => { :price => 0.64, :bits => 64, :ram => 7168, :cores => 8, :core_size => 2.5, :inst_disks => 4, :inst_disk_size => 1690, :ephemeral_volumes => 4, :ebs_optimizable => 1000, },
337
- 'm1.xlarge' => { :price => 0.66, :bits => 64, :ram => 15360, :cores => 4, :core_size => 2, :inst_disks => 4, :inst_disk_size => 1690, :ephemeral_volumes => 4, :ebs_optimizable => 1000, },
338
- 'm3.2xlarge' => { :price => 0.90, :bits => 64, :ram => 30720, :cores => 8, :core_size => 3.25, :inst_disks => 2, :inst_disk_size => 80, :ephemeral_volumes => 2, :ebs_optimizable => 1000, },
339
- 'm2.2xlarge' => { :price => 0.90, :bits => 64, :ram => 35020, :cores => 4, :core_size => 3.25, :inst_disks => 2, :inst_disk_size => 850, :ephemeral_volumes => 2, :ebs_optimizable => 500, },
340
- 'm2.4xlarge' => { :price => 1.80, :bits => 64, :ram => 70041, :cores => 8, :core_size => 3.25, :inst_disks => 4, :inst_disk_size => 1690, :ephemeral_volumes => 4, :ebs_optimizable => 1000, },
341
- 'cc1.4xlarge' => { :price => 1.30, :bits => 64, :ram => 23552, :cores => 8, :core_size => 4.19, :inst_disks => 4, :inst_disk_size => 1690, :ephemeral_volumes => 2, :placement_groupable => true, :virtualization => 'hvm' },
342
- 'cc2.8xlarge' => { :price => 2.40, :bits => 64, :ram => 61952, :cores =>32, :core_size => 5.50, :inst_disks => 8, :inst_disk_size => 3370, :ephemeral_volumes => 4, :placement_groupable => true, :virtualization => 'hvm' },
343
- 'cg1.4xlarge' => { :price => 2.10, :bits => 64, :ram => 22528, :cores => 8, :core_size => 4.19, :inst_disks => 4, :inst_disk_size => 1690, :ephemeral_volumes => 2, :placement_groupable => true, :virtualization => 'hvm' },
344
- 'c3.large' => { :price => 0.15, :bits => 64, :ram => 3840, :cores => 2, :core_size => 6.50, :inst_disks => 2, :inst_disk_size => 16, :ephemeral_volumes => 2, :placement_groupable => true, :virtualization => 'hvm', :ebs_opizable => 1000 },
345
- 'c3.xlarge' => { :price => 0.30, :bits => 64, :ram => 7168, :cores => 4, :core_size => 6.50, :inst_disks => 2, :inst_disk_size => 40, :ephemeral_volumes => 2, :placement_groupable => true, :virtualization => 'hvm', :ebs_opizable => 1000 },
346
- 'c3.2xlarge' => { :price => 0.60, :bits => 64, :ram => 15360, :cores => 8, :core_size => 6.50, :inst_disks => 2, :inst_disk_size => 80, :ephemeral_volumes => 2, :placement_groupable => true, :virtualization => 'hvm', :ebs_opizable => 1000 },
347
- 'c3.4xlarge' => { :price => 1.20, :bits => 64, :ram => 30720, :cores =>16, :core_size => 6.50, :inst_disks => 2, :inst_disk_size => 160, :ephemeral_volumes => 2, :placement_groupable => true, :virtualization => 'hvm', :ebs_opizable => 1000 },
348
- 'c3.8xlarge' => { :price => 2.40, :bits => 64, :ram => 30720, :cores =>32, :core_size => 6.50, :inst_disks => 2, :inst_disk_size => 320, :ephemeral_volumes => 2, :placement_groupable => true, :virtualization => 'hvm' },
349
- 'hs1.8xlarge' => { :price => 4.60, :bits => 64, :ram => 119808, :cores => 8, :core_size => 5.50, :inst_disks =>24, :inst_disk_size => 2048, :ephemeral_volumes =>24, :placement_groupable => true, :virtualization => 'hvm' },
350
- 'cr1.8xlarge' => { :price => 3.50, :bits => 64, :ram => 249856, :cores =>32, :core_size => 6.50, :inst_disks => 2, :inst_disk_size => 120, :ephemeral_volumes => 2, :placement_groupable => true, :virtualization => 'hvm' },
351
- 'i2.xlarge' => { :price => 0.85, :bits => 64, :ram => 31232, :cores => 4, :core_size => 3.50, :inst_disks => 1, :inst_disk_size => 800, :ephemeral_volumes => 1, :placement_groupable => true, :virtualization => 'hvm', :ebs_optimized => 500 },
352
- 'i2.2xlarge' => { :price => 1.71, :bits => 64, :ram => 62464, :cores => 8, :core_size => 3.50, :inst_disks => 2, :inst_disk_size => 800, :ephemeral_volumes => 2, :placement_groupable => true, :virtualization => 'hvm', :ebs_optimized => 1000 },
353
- 'i2.4xlarge' => { :price => 3.41, :bits => 64, :ram => 124928, :cores =>16, :core_size => 3.50, :inst_disks => 4, :inst_disk_size => 800, :ephemeral_volumes => 4, :placement_groupable => true, :virtualization => 'hvm', :ebs_optimized => 1000 },
354
- 'i2.8xlarge' => { :price => 6.82, :bits => 64, :ram => 249856, :cores =>32, :core_size => 3.50, :inst_disks => 8, :inst_disk_size => 800, :ephemeral_volumes => 8, :placement_groupable => true, :virtualization => 'hvm' },
355
- 'g2.2xlarge' => { :price => 0.65, :bits => 64, :ram => 15360, :cores => 8, :core_size => 3.25, :inst_disks => 1, :inst_disk_size => 60, :ephemeral_volumes => 1, :placement_groupable => true, :virtualization => 'hvm', :ebs_optimized => 1000 },
340
+ 't1.micro' => { :price => 0.02, :bits => 64, :ram => 630, :cores => 1, :core_size => 0.25, :inst_disks => 0, :inst_disk_size => 0, :ephemeral_volumes => 0 },
341
+ 'm1.small' => { :price => 0.06, :bits => 64, :ram => 1741, :cores => 1, :core_size => 1.0, :inst_disks => 1, :inst_disk_size => 160, :ephemeral_volumes => 1 },
342
+ 'm1.medium' => { :price => 0.120, :bits => 64, :ram => 3840, :cores => 1, :core_size => 2.0, :inst_disks => 1, :inst_disk_size => 410, :ephemeral_volumes => 1 },
343
+ 'c1.medium' => { :price => 0.145, :bits => 64, :ram => 1741, :cores => 2, :core_size => 2.5, :inst_disks => 1, :inst_disk_size => 350, :ephemeral_volumes => 1 },
344
+ 'm3.medium' => { :price => 0.113, :bits => 64, :ram => 3840, :cores => 1, :core_size => 3.0, :inst_disks => 1, :inst_disk_size => 4, :ephemeral_volumes => 1, :ebs_optimizable => 500, },
345
+ 'm1.large' => { :price => 0.240, :bits => 64, :ram => 7680, :cores => 2, :core_size => 2.0, :inst_disks => 2, :inst_disk_size => 420, :ephemeral_volumes => 2, :ebs_optimizable => 500, },
346
+ 'm3.large' => { :price => 0.225, :bits => 64, :ram => 7680, :cores => 2, :core_size => 3.25, :inst_disks => 1, :inst_disk_size => 32, :ephemeral_volumes => 0, :ebs_optimizable => 500, },
347
+ 'm2.xlarge' => { :price => 0.410, :bits => 64, :ram => 17510, :cores => 2, :core_size => 3.25, :inst_disks => 1, :inst_disk_size => 420, :ephemeral_volumes => 1 },
348
+ 'm3.xlarge' => { :price => 0.450, :bits => 64, :ram => 15360, :cores => 4, :core_size => 3.25, :inst_disks => 2, :inst_disk_size => 40, :ephemeral_volumes => 2, :ebs_optimizable => 500, },
349
+ 'c1.xlarge' => { :price => 0.580, :bits => 64, :ram => 7168, :cores => 8, :core_size => 2.5, :inst_disks => 4, :inst_disk_size => 420, :ephemeral_volumes => 4, :ebs_optimizable => 1000, },
350
+ 'm1.xlarge' => { :price => 0.480, :bits => 64, :ram => 15360, :cores => 4, :core_size => 2.0, :inst_disks => 4, :inst_disk_size => 420, :ephemeral_volumes => 4, :ebs_optimizable => 1000, },
351
+ 'm3.2xlarge' => { :price => 0.900, :bits => 64, :ram => 30720, :cores => 8, :core_size => 3.25, :inst_disks => 2, :inst_disk_size => 80, :ephemeral_volumes => 2, :ebs_optimizable => 1000, },
352
+ 'm2.2xlarge' => { :price => 0.820, :bits => 64, :ram => 35021, :cores => 4, :core_size => 3.25, :inst_disks => 1, :inst_disk_size => 850, :ephemeral_volumes => 2, :ebs_optimizable => 500, },
353
+ 'm2.4xlarge' => { :price => 1.640, :bits => 64, :ram => 70042, :cores => 8, :core_size => 3.25, :inst_disks => 2, :inst_disk_size => 840, :ephemeral_volumes => 2, :ebs_optimizable => 1000, },
354
+ 'cc2.8xlarge' => { :price => 2.400, :bits => 64, :ram => 61952, :cores =>32, :core_size => 2.75, :inst_disks => 4, :inst_disk_size => 840, :ephemeral_volumes => 4, :placement_groupable => true, :virtualization => 'hvm' },
355
+ 'cg1.4xlarge' => { :price => 2.100, :bits => 64, :ram => 23040, :cores =>16, :core_size => 2.09375, :inst_disks => 2, :inst_disk_size => 840, :ephemeral_volumes => 2, :placement_groupable => true, :virtualization => 'hvm' },
356
+ 'c3.large' => { :price => 0.150, :bits => 64, :ram => 3840, :cores => 2, :core_size => 3.5, :inst_disks => 2, :inst_disk_size => 16, :ephemeral_volumes => 2, :placement_groupable => true, :virtualization => 'hvm', :ebs_opizable => 1000 },
357
+ 'c3.xlarge' => { :price => 0.300, :bits => 64, :ram => 7680, :cores => 4, :core_size => 3.5, :inst_disks => 2, :inst_disk_size => 40, :ephemeral_volumes => 2, :placement_groupable => true, :virtualization => 'hvm', :ebs_opizable => 1000 },
358
+ 'c3.2xlarge' => { :price => 0.600, :bits => 64, :ram => 15360, :cores => 8, :core_size => 3.5, :inst_disks => 2, :inst_disk_size => 80, :ephemeral_volumes => 2, :placement_groupable => true, :virtualization => 'hvm', :ebs_opizable => 1000 },
359
+ 'c3.4xlarge' => { :price => 1.200, :bits => 64, :ram => 30720, :cores => 16, :core_size => 3.4375, :inst_disks => 2, :inst_disk_size => 160, :ephemeral_volumes => 2, :placement_groupable => true, :virtualization => 'hvm', :ebs_opizable => 1000 },
360
+ 'c3.8xlarge' => { :price => 2.400, :bits => 64, :ram => 61440, :cores => 32, :core_size => 3.375, :inst_disks => 2, :inst_disk_size => 320, :ephemeral_volumes => 2, :placement_groupable => true, :virtualization => 'hvm' },
361
+ 'hs1.8xlarge' => { :price => 4.600, :bits => 64, :ram => 119808, :cores => 16, :core_size => 2.1875, :inst_disks => 24, :inst_disk_size => 2048, :ephemeral_volumes => 24, :placement_groupable => true, :virtualization => 'hvm' },
362
+ 'cr1.8xlarge' => { :price => 3.500, :bits => 64, :ram => 249856, :cores => 32, :core_size => 2.75, :inst_disks => 2, :inst_disk_size => 120, :ephemeral_volumes => 2, :placement_groupable => true, :virtualization => 'hvm' },
363
+ 'i2.xlarge' => { :price => 0.853, :bits => 64, :ram => 31232, :cores => 4, :core_size => 3.5, :inst_disks => 1, :inst_disk_size => 800, :ephemeral_volumes => 1, :placement_groupable => true, :virtualization => 'hvm', :ebs_optimized => 500 },
364
+ 'i2.2xlarge' => { :price => 1.705, :bits => 64, :ram => 62464, :cores => 8, :core_size => 3.375, :inst_disks => 2, :inst_disk_size => 800, :ephemeral_volumes => 2, :placement_groupable => true, :virtualization => 'hvm', :ebs_optimized => 1000 },
365
+ 'i2.4xlarge' => { :price => 3.410, :bits => 64, :ram => 124928, :cores => 16, :core_size => 3.3125, :inst_disks => 4, :inst_disk_size => 800, :ephemeral_volumes => 4, :placement_groupable => true, :virtualization => 'hvm', :ebs_optimized => 1000 },
366
+ 'i2.8xlarge' => { :price => 6.820, :bits => 64, :ram => 249856, :cores => 32, :core_size => 3.25, :inst_disks => 8, :inst_disk_size => 800, :ephemeral_volumes => 8, :placement_groupable => true, :virtualization => 'hvm' },
367
+ 'g2.2xlarge' => { :price => 0.650, :bits => 64, :ram => 15360, :cores => 8, :core_size => 3.25, :inst_disks => 1, :inst_disk_size => 60, :ephemeral_volumes => 1, :placement_groupable => true, :virtualization => 'hvm', :ebs_optimized => 1000 },
368
+ 'hi1.4xlarge' => { :price => 3.100, :bits => 64, :ram => 61952, :cores => 16, :core_size => 2.1875, :inst_disks => 2, :inst_disk_size => 1024, :ephemeral_volumes => 2, :placement_groupable => true, :virtualization => 'hvm', :ebs_optimized => 1000 },
356
369
  })
357
370
 
358
371
  Chef::Config[:ec2_image_info] ||= {}
@@ -189,8 +189,6 @@ module Ironfan
189
189
  cloud = computer.server.cloud(:ec2)
190
190
  c_group = cloud.security_group(computer.server.cluster_name)
191
191
  c_group.authorized_by_group(c_group.name)
192
- facet_name = "#{computer.server.cluster_name}-#{computer.server.facet_name}"
193
- cloud.security_group(facet_name)
194
192
  end
195
193
 
196
194
  # Try an authorization, ignoring duplicates (this is easier than correlating).
@@ -182,7 +182,7 @@ describe Ironfan::Dsl::Component do
182
182
  end
183
183
 
184
184
  it 'correctly sets the server cluster even when the client and server facets differ' do
185
- bam_wak_group = Ironfan.realm(:wap).cluster(:bam).facet(:wak).cloud(:ec2).security_group('wap_bam-wak')
185
+ bam_wak_group = Ironfan.realm(:wap).cluster(:bam).facet(:wak).cloud(:ec2).security_group('wap_bam')
186
186
  bam_wak_group.group_authorized_by.should include('wap_bop')
187
187
  end
188
188
 
data/spec/spec_helper.rb CHANGED
@@ -1,8 +1,4 @@
1
1
  $:.unshift File.expand_path('../../lib', __FILE__)
2
- if ENV['IRONFAN_COV']
3
- require 'simplecov'
4
- SimpleCov.start
5
- end
6
2
  require 'chef'
7
3
  require 'chef/knife'
8
4
  require 'ironfan'
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ironfan
3
3
  version: !ruby/object:Gem::Version
4
- version: 5.0.10
4
+ version: 5.0.11
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2014-02-20 00:00:00.000000000 Z
12
+ date: 2014-04-02 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: chef
@@ -408,6 +408,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
408
408
  - - ! '>='
409
409
  - !ruby/object:Gem::Version
410
410
  version: '0'
411
+ segments:
412
+ - 0
413
+ hash: -3889852725831803643
411
414
  required_rubygems_version: !ruby/object:Gem::Requirement
412
415
  none: false
413
416
  requirements:
@@ -450,4 +453,3 @@ test_files:
450
453
  - spec/spec_helper/dummy_diff_drawer.rb
451
454
  - spec/spec_helper.rb
452
455
  - spec/test_config.rb
453
- has_rdoc: