bosh_aws_cpi 1.5.0.pre.1492 → 1.5.0.pre.1504

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,4 +1,5 @@
1
1
  # Copyright (c) 2009-2012 VMware, Inc.
2
+ require 'cloud/aws/stemcell_finder'
2
3
 
3
4
  module Bosh::AwsCloud
4
5
 
@@ -80,12 +81,12 @@ module Bosh::AwsCloud
80
81
  def create_vm(agent_id, stemcell_id, resource_pool, network_spec, disk_locality = nil, environment = nil)
81
82
  with_thread_name("create_vm(#{agent_id}, ...)") do
82
83
  # do this early to fail fast
83
- stemcell = Stemcell.find(region, stemcell_id)
84
+ stemcell = StemcellFinder.find_by_region_and_id(region, stemcell_id)
84
85
 
85
86
  begin
86
87
  instance_manager = InstanceManager.new(region, registry, az_selector)
87
88
  instance = instance_manager.
88
- create(agent_id, stemcell_id, resource_pool, network_spec, (disk_locality || []), environment, options)
89
+ create(agent_id, stemcell.image_id, resource_pool, network_spec, (disk_locality || []), environment, options)
89
90
 
90
91
  logger.info("Creating new instance '#{instance.id}'")
91
92
 
@@ -417,7 +418,7 @@ module Bosh::AwsCloud
417
418
  # @param [String] stemcell_id EC2 AMI name of the stemcell to be deleted
418
419
  def delete_stemcell(stemcell_id)
419
420
  with_thread_name("delete_stemcell(#{stemcell_id})") do
420
- stemcell = Stemcell.find(region, stemcell_id)
421
+ stemcell = StemcellFinder.find_by_region_and_id(region, stemcell_id)
421
422
  stemcell.delete
422
423
  end
423
424
  end
@@ -0,0 +1,24 @@
1
+ module Bosh::AwsCloud
2
+ class LightStemcell
3
+ def initialize(heavy_stemcell, logger)
4
+ @logger = logger
5
+ @heavy_stemcell = heavy_stemcell
6
+ end
7
+
8
+ def delete
9
+ @logger.info("NoOP: Deleting light stemcell '#{@heavy_stemcell.id}'")
10
+ end
11
+
12
+ def id
13
+ "#{@heavy_stemcell.id} light"
14
+ end
15
+
16
+ def root_device_name
17
+ @heavy_stemcell.root_device_name
18
+ end
19
+
20
+ def image_id
21
+ @heavy_stemcell.image_id
22
+ end
23
+ end
24
+ end
@@ -27,6 +27,9 @@ module Bosh::AwsCloud
27
27
 
28
28
  delete_snapshots
29
29
  logger.info("deleted stemcell '#{id}'")
30
+ # The following suppression of AuthFailure is potentially dangerous
31
+ # But we have to do it here because we need to be compatible with existing
32
+ # light stemcells in BOSH DB which appear to be "heavy".
30
33
  rescue AWS::EC2::Errors::AuthFailure => e
31
34
  # If we get an auth failure from the deregister call, it means we don't own the AMI
32
35
  # and we were just faking it, so we can just return pretending that we deleted it.
@@ -37,14 +40,18 @@ module Bosh::AwsCloud
37
40
  ami.id
38
41
  end
39
42
 
43
+ def image_id
44
+ ami.id
45
+ end
46
+
40
47
  def root_device_name
41
48
  ami.root_device_name
42
49
  end
43
50
 
44
51
  def memoize_snapshots
45
- # .to_h is used as the AWS API documentation isn't trustworthy:
52
+ # .to_hash is used as the AWS API documentation isn't trustworthy:
46
53
  # it says block_device_mappings retruns a Hash, but in reality it flattens it!
47
- ami.block_device_mappings.to_h.each do |device, map|
54
+ ami.block_device_mappings.to_hash.each do |device, map|
48
55
  snapshot_id = map[:snapshot_id]
49
56
  if id
50
57
  logger.debug("queuing snapshot '#{snapshot_id}' for deletion")
@@ -39,7 +39,7 @@ module Bosh::AwsCloud
39
39
 
40
40
  raise Bosh::Clouds::CloudError, "Stemcell does not contain an AMI for this region (#{region.name})" unless id
41
41
 
42
- Stemcell.find(region, id)
42
+ StemcellFinder.find_by_region_and_id(region, "#{id} light")
43
43
  end
44
44
 
45
45
  # This method tries to execute the helper script stemcell-copy
@@ -0,0 +1,14 @@
1
+ require 'cloud/aws/light_stemcell'
2
+ require 'cloud/aws/stemcell'
3
+
4
+ module Bosh::AwsCloud
5
+ class StemcellFinder
6
+ def self.find_by_region_and_id(region, id)
7
+ if id =~ / light$/
8
+ LightStemcell.new(Stemcell.find(region, id[0...-6]), Bosh::Clouds::Config.logger)
9
+ else
10
+ Stemcell.find(region, id)
11
+ end
12
+ end
13
+ end
14
+ end
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Bosh
4
4
  module AwsCloud
5
- VERSION = '1.5.0.pre.1492'
5
+ VERSION = '1.5.0.pre.1504'
6
6
  end
7
7
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: bosh_aws_cpi
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.5.0.pre.1492
4
+ version: 1.5.0.pre.1504
5
5
  prerelease: 6
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: 2013-12-06 00:00:00.000000000 Z
12
+ date: 2013-12-07 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: aws-sdk
@@ -34,7 +34,7 @@ dependencies:
34
34
  requirements:
35
35
  - - ~>
36
36
  - !ruby/object:Gem::Version
37
- version: 1.5.0.pre.1492
37
+ version: 1.5.0.pre.1504
38
38
  type: :runtime
39
39
  prerelease: false
40
40
  version_requirements: !ruby/object:Gem::Requirement
@@ -42,7 +42,7 @@ dependencies:
42
42
  requirements:
43
43
  - - ~>
44
44
  - !ruby/object:Gem::Version
45
- version: 1.5.0.pre.1492
45
+ version: 1.5.0.pre.1504
46
46
  - !ruby/object:Gem::Dependency
47
47
  name: bosh_cpi
48
48
  requirement: !ruby/object:Gem::Requirement
@@ -50,7 +50,7 @@ dependencies:
50
50
  requirements:
51
51
  - - ~>
52
52
  - !ruby/object:Gem::Version
53
- version: 1.5.0.pre.1492
53
+ version: 1.5.0.pre.1504
54
54
  type: :runtime
55
55
  prerelease: false
56
56
  version_requirements: !ruby/object:Gem::Requirement
@@ -58,7 +58,7 @@ dependencies:
58
58
  requirements:
59
59
  - - ~>
60
60
  - !ruby/object:Gem::Version
61
- version: 1.5.0.pre.1492
61
+ version: 1.5.0.pre.1504
62
62
  - !ruby/object:Gem::Dependency
63
63
  name: bosh-registry
64
64
  requirement: !ruby/object:Gem::Requirement
@@ -66,7 +66,7 @@ dependencies:
66
66
  requirements:
67
67
  - - ~>
68
68
  - !ruby/object:Gem::Version
69
- version: 1.5.0.pre.1492
69
+ version: 1.5.0.pre.1504
70
70
  type: :runtime
71
71
  prerelease: false
72
72
  version_requirements: !ruby/object:Gem::Requirement
@@ -74,7 +74,7 @@ dependencies:
74
74
  requirements:
75
75
  - - ~>
76
76
  - !ruby/object:Gem::Version
77
- version: 1.5.0.pre.1492
77
+ version: 1.5.0.pre.1504
78
78
  - !ruby/object:Gem::Dependency
79
79
  name: httpclient
80
80
  requirement: !ruby/object:Gem::Requirement
@@ -109,7 +109,7 @@ dependencies:
109
109
  version: 0.8.2
110
110
  description: ! 'BOSH AWS CPI
111
111
 
112
- 966b08'
112
+ 882c2b'
113
113
  email: support@cloudfoundry.com
114
114
  executables:
115
115
  - bosh_aws_console
@@ -125,12 +125,14 @@ files:
125
125
  - lib/cloud/aws/dynamic_network.rb
126
126
  - lib/cloud/aws/helpers.rb
127
127
  - lib/cloud/aws/instance_manager.rb
128
+ - lib/cloud/aws/light_stemcell.rb
128
129
  - lib/cloud/aws/manual_network.rb
129
130
  - lib/cloud/aws/network.rb
130
131
  - lib/cloud/aws/network_configurator.rb
131
132
  - lib/cloud/aws/resource_wait.rb
132
133
  - lib/cloud/aws/stemcell.rb
133
134
  - lib/cloud/aws/stemcell_creator.rb
135
+ - lib/cloud/aws/stemcell_finder.rb
134
136
  - lib/cloud/aws/tag_manager.rb
135
137
  - lib/cloud/aws/version.rb
136
138
  - lib/cloud/aws/vip_network.rb