Sha256: 24bc68ecba8d54cd255dad79649a56c549bec25a16ec5cd458a0fae34a8097da

Contents?: true

Size: 1.33 KB

Versions: 139

Compression:

Stored size: 1.33 KB

Contents

require 'cloud'
require 'bosh_aws_cpi'
require 'ostruct'
require 'yaml'
require 'rake'
require 'bosh/stemcell/aws/region'

module Bosh::Stemcell::Aws
  class Ami
    attr_reader :stemcell

    def initialize(stemcell, region)
      @stemcell = stemcell
      @region = region
    end

    def publish
      cloud_config = OpenStruct.new(logger: Logger.new('ami.log'), task_checkpoint: nil)
      Bosh::Clouds::Config.configure(cloud_config)

      cloud = Bosh::Clouds::Provider.create('aws', options)

      stemcell.extract do |tmp_dir, stemcell_manifest|
        ami_id = cloud.create_stemcell("#{tmp_dir}/image", stemcell_manifest['cloud_properties'])
        cloud.ec2.images[ami_id].public = true
        ami_id
      end
    end

    private

    attr_reader :region

    def options
      # just fake the registry struct, as we don't use it
      {
        'aws' => aws,
        'registry' => {
          'endpoint' => 'http://fake.registry',
          'user' => 'fake',
          'password' => 'fake'
        }
      }
    end

    def aws
      access_key_id = ENV['BOSH_AWS_ACCESS_KEY_ID']
      secret_access_key = ENV['BOSH_AWS_SECRET_ACCESS_KEY']

      {
        'default_key_name' => 'fake',
        'region' => region.name,
        'access_key_id' => access_key_id,
        'secret_access_key' => secret_access_key
      }
    end
  end
end

Version data entries

139 entries across 139 versions & 1 rubygems

Version Path
bosh-stemcell-1.5.0.pre.1332 lib/bosh/stemcell/aws/ami.rb
bosh-stemcell-1.5.0.pre.1330 lib/bosh/stemcell/aws/ami.rb
bosh-stemcell-1.5.0.pre.1328 lib/bosh/stemcell/aws/ami.rb
bosh-stemcell-1.5.0.pre.1327 lib/bosh/stemcell/aws/ami.rb
bosh-stemcell-1.5.0.pre.1326 lib/bosh/stemcell/aws/ami.rb
bosh-stemcell-1.5.0.pre.1324 lib/bosh/stemcell/aws/ami.rb
bosh-stemcell-1.5.0.pre.1323 lib/bosh/stemcell/aws/ami.rb
bosh-stemcell-1.5.0.pre.1320 lib/bosh/stemcell/aws/ami.rb
bosh-stemcell-1.5.0.pre.1319 lib/bosh/stemcell/aws/ami.rb
bosh-stemcell-1.5.0.pre.1318 lib/bosh/stemcell/aws/ami.rb
bosh-stemcell-1.5.0.pre.1306 lib/bosh/stemcell/aws/ami.rb
bosh-stemcell-1.5.0.pre.1305 lib/bosh/stemcell/aws/ami.rb
bosh-stemcell-1.5.0.pre.1302 lib/bosh/stemcell/aws/ami.rb
bosh-stemcell-1.5.0.pre.1284 lib/bosh/stemcell/aws/ami.rb
bosh-stemcell-1.5.0.pre.1278 lib/bosh/stemcell/aws/ami.rb
bosh-stemcell-1.5.0.pre.1274 lib/bosh/stemcell/aws/ami.rb
bosh-stemcell-1.5.0.pre.1269 lib/bosh/stemcell/aws/ami.rb
bosh-stemcell-1.5.0.pre.1266 lib/bosh/stemcell/aws/ami.rb
bosh-stemcell-1.5.0.pre.1260 lib/bosh/stemcell/aws/ami.rb
bosh-stemcell-1.5.0.pre.1259 lib/bosh/stemcell/aws/ami.rb