Sha256: 145854761061dfc26ac99624d62e3f0de7a0bf61a287ce21a8626a9745f8af85

Contents?: true

Size: 1.41 KB

Versions: 37

Compression:

Stored size: 1.41 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(options, 'fake-director-uuid')

      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
      {
        'plugin' => 'aws',
        'properties' => {
          '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

37 entries across 37 versions & 1 rubygems

Version Path
bosh-stemcell-1.2690.4.0 lib/bosh/stemcell/aws/ami.rb
bosh-stemcell-1.2732.0 lib/bosh/stemcell/aws/ami.rb
bosh-stemcell-1.2719.0 lib/bosh/stemcell/aws/ami.rb
bosh-stemcell-1.2717.0 lib/bosh/stemcell/aws/ami.rb
bosh-stemcell-1.2710.0 lib/bosh/stemcell/aws/ami.rb
bosh-stemcell-1.2707.0 lib/bosh/stemcell/aws/ami.rb
bosh-stemcell-1.2682.1.0 lib/bosh/stemcell/aws/ami.rb
bosh-stemcell-1.2697.0 lib/bosh/stemcell/aws/ami.rb
bosh-stemcell-1.2693.0 lib/bosh/stemcell/aws/ami.rb
bosh-stemcell-1.2690.0 lib/bosh/stemcell/aws/ami.rb
bosh-stemcell-1.2686.0 lib/bosh/stemcell/aws/ami.rb
bosh-stemcell-1.2685.0 lib/bosh/stemcell/aws/ami.rb
bosh-stemcell-1.2682.0 lib/bosh/stemcell/aws/ami.rb
bosh-stemcell-1.2681.0 lib/bosh/stemcell/aws/ami.rb
bosh-stemcell-1.2671.0 lib/bosh/stemcell/aws/ami.rb
bosh-stemcell-1.2669.0 lib/bosh/stemcell/aws/ami.rb
bosh-stemcell-1.2657.0 lib/bosh/stemcell/aws/ami.rb
bosh-stemcell-1.2652.0 lib/bosh/stemcell/aws/ami.rb
bosh-stemcell-1.2641.0 lib/bosh/stemcell/aws/ami.rb
bosh-stemcell-1.2640.0 lib/bosh/stemcell/aws/ami.rb