ironfan 5.0.10 → 5.0.11

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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: