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.1858.0 lib/bosh/stemcell/aws/ami.rb
bosh-stemcell-1.1840.0 lib/bosh/stemcell/aws/ami.rb
bosh-stemcell-1.1836.0 lib/bosh/stemcell/aws/ami.rb
bosh-stemcell-1.1798.0 lib/bosh/stemcell/aws/ami.rb
bosh-stemcell-1.1782.0 lib/bosh/stemcell/aws/ami.rb
bosh-stemcell-1.1777.0 lib/bosh/stemcell/aws/ami.rb
bosh-stemcell-1.1761.0 lib/bosh/stemcell/aws/ami.rb
bosh-stemcell-1.1750.0 lib/bosh/stemcell/aws/ami.rb
bosh-stemcell-1.1744.0 lib/bosh/stemcell/aws/ami.rb
bosh-stemcell-1.1722.0 lib/bosh/stemcell/aws/ami.rb
bosh-stemcell-1.5.0.pre.1657 lib/bosh/stemcell/aws/ami.rb
bosh-stemcell-1.5.0.pre.1644 lib/bosh/stemcell/aws/ami.rb
bosh-stemcell-1.5.0.pre.1639 lib/bosh/stemcell/aws/ami.rb
bosh-stemcell-1.5.0.pre.1633 lib/bosh/stemcell/aws/ami.rb
bosh-stemcell-1.5.0.pre.1623 lib/bosh/stemcell/aws/ami.rb
bosh-stemcell-1.5.0.pre.1612 lib/bosh/stemcell/aws/ami.rb
bosh-stemcell-1.5.0.pre.1525 lib/bosh/stemcell/aws/ami.rb
bosh-stemcell-1.5.0.pre.1504 lib/bosh/stemcell/aws/ami.rb
bosh-stemcell-1.5.0.pre.1492 lib/bosh/stemcell/aws/ami.rb
bosh-stemcell-1.5.0.pre.1489 lib/bosh/stemcell/aws/ami.rb