Sha256: df158076a8dd60357dbd76dd46ede5e6e6a6a3610b6069bf4aa196d47cfd3421

Contents?: true

Size: 1.17 KB

Versions: 92

Compression:

Stored size: 1.17 KB

Contents

module Bosh::Stemcell
  module Infrastructure
    def self.for(name)
      case name
        when 'openstack'
          OpenStack.new
        when 'aws'
          Aws.new
        when 'vsphere'
          Vsphere.new
        else
          raise ArgumentError.new("invalid infrastructure: #{name}")
      end
    end

    class Base
      attr_reader :name, :hypervisor, :default_disk_size

      def initialize(options = {})
        @name = options.fetch(:name)
        @supports_light_stemcell = options.fetch(:supports_light_stemcell, false)
        @hypervisor = options.fetch(:hypervisor)
        @default_disk_size = options.fetch(:default_disk_size)
      end

      def light?
        @supports_light_stemcell
      end
    end

    class OpenStack < Base
      def initialize
        super(name: 'openstack', hypervisor: 'kvm', default_disk_size: 10240)
      end
    end

    class Vsphere < Base
      def initialize
        super(name: 'vsphere', hypervisor: 'esxi', default_disk_size: 3072)
      end
    end

    class Aws < Base
      def initialize
        super(name: 'aws', hypervisor: 'xen', supports_light_stemcell: true, default_disk_size: 2048)
      end
    end
  end
end

Version data entries

92 entries across 92 versions & 1 rubygems

Version Path
bosh-stemcell-1.5.0.pre.1327 lib/bosh/stemcell/infrastructure.rb
bosh-stemcell-1.5.0.pre.1326 lib/bosh/stemcell/infrastructure.rb
bosh-stemcell-1.5.0.pre.1324 lib/bosh/stemcell/infrastructure.rb
bosh-stemcell-1.5.0.pre.1323 lib/bosh/stemcell/infrastructure.rb
bosh-stemcell-1.5.0.pre.1320 lib/bosh/stemcell/infrastructure.rb
bosh-stemcell-1.5.0.pre.1319 lib/bosh/stemcell/infrastructure.rb
bosh-stemcell-1.5.0.pre.1318 lib/bosh/stemcell/infrastructure.rb
bosh-stemcell-1.5.0.pre.1306 lib/bosh/stemcell/infrastructure.rb
bosh-stemcell-1.5.0.pre.1305 lib/bosh/stemcell/infrastructure.rb
bosh-stemcell-1.5.0.pre.1302 lib/bosh/stemcell/infrastructure.rb
bosh-stemcell-1.5.0.pre.1284 lib/bosh/stemcell/infrastructure.rb
bosh-stemcell-1.5.0.pre.1278 lib/bosh/stemcell/infrastructure.rb
bosh-stemcell-1.5.0.pre.1274 lib/bosh/stemcell/infrastructure.rb
bosh-stemcell-1.5.0.pre.1269 lib/bosh/stemcell/infrastructure.rb
bosh-stemcell-1.5.0.pre.1266 lib/bosh/stemcell/infrastructure.rb
bosh-stemcell-1.5.0.pre.1260 lib/bosh/stemcell/infrastructure.rb
bosh-stemcell-1.5.0.pre.1259 lib/bosh/stemcell/infrastructure.rb
bosh-stemcell-1.5.0.pre.1257 lib/bosh/stemcell/infrastructure.rb
bosh-stemcell-1.5.0.pre.1256 lib/bosh/stemcell/infrastructure.rb
bosh-stemcell-1.5.0.pre.1252 lib/bosh/stemcell/infrastructure.rb