cloudfoundry-community/bosh-cloudstack-cpi

View on GitHub
bosh-dev/lib/bosh/dev/vsphere/micro_bosh_deployment_manifest.rb

Summary

Maintainability
B
5 hrs
Test Coverage
require 'bosh/dev/vsphere'
require 'bosh/dev/writable_manifest'

module Bosh::Dev::VSphere
  class MicroBoshDeploymentManifest
    include Bosh::Dev::WritableManifest

    attr_reader :filename

    def initialize(env)
      @env = env
      @filename = 'micro_bosh.yml'
    end

    def to_h
      { 'name' => 'microbosh-vsphere-jenkins',
        'network' =>
          { 'ip' => env['BOSH_VSPHERE_MICROBOSH_IP'],
            'netmask' => env['BOSH_VSPHERE_NETMASK'],
            'gateway' => env['BOSH_VSPHERE_GATEWAY'],
            'dns' => [env['BOSH_VSPHERE_DNS']],
            'cloud_properties' => { 'name' => env['BOSH_VSPHERE_NET_ID'] } },
        'resources' =>
          { 'persistent_disk' => 4096,
            'cloud_properties' => { 'ram' => 2048, 'disk' => 8192, 'cpu' => 1 } },
        'cloud' =>
          { 'plugin' => 'vsphere',
            'properties' =>
              { 'agent' => { 'ntp' => [env['BOSH_VSPHERE_NTP_SERVER']] },
                'vcenters' =>
                  [{ 'host' => env['BOSH_VSPHERE_VCENTER'],
                     'user' => env['BOSH_VSPHERE_VCENTER_USER'],
                     'password' => env['BOSH_VSPHERE_VCENTER_PASSWORD'],
                     'datacenters' =>
                       [{ 'name' => env['BOSH_VSPHERE_VCENTER_DC'],
                          'vm_folder' => "#{env['BOSH_VSPHERE_VCENTER_UBOSH_FOLDER_PREFIX']}_VMs",
                          'template_folder' =>
                            "#{env['BOSH_VSPHERE_VCENTER_UBOSH_FOLDER_PREFIX']}_Templates",
                          'disk_path' =>
                            "#{env['BOSH_VSPHERE_VCENTER_UBOSH_FOLDER_PREFIX']}_Disks",
                          'datastore_pattern' =>
                            env['BOSH_VSPHERE_VCENTER_UBOSH_DATASTORE_PATTERN'],
                          'persistent_datastore_pattern' =>
                            env['BOSH_VSPHERE_VCENTER_UBOSH_DATASTORE_PATTERN'],
                          'allow_mixed_datastores' => true,
                          'clusters' =>
                            [{ env['BOSH_VSPHERE_VCENTER_CLUSTER'] =>
                                 { 'resource_pool' =>
                                     env['BOSH_VSPHERE_VCENTER_RESOURCE_POOL'] } }] }] }] } },
        'apply_spec' =>
          { 'properties' =>
              { 'vcenter' =>
                  { 'host' => env['BOSH_VSPHERE_VCENTER'],
                    'user' => env['BOSH_VSPHERE_VCENTER_USER'],
                    'password' => env['BOSH_VSPHERE_VCENTER_PASSWORD'],
                    'datacenters' =>
                      [{ 'name' => env['BOSH_VSPHERE_VCENTER_DC'],
                         'vm_folder' => "#{env['BOSH_VSPHERE_VCENTER_FOLDER_PREFIX']}_VMs",
                         'template_folder' =>
                           "#{env['BOSH_VSPHERE_VCENTER_FOLDER_PREFIX']}_Templates",
                         'disk_path' => "#{env['BOSH_VSPHERE_VCENTER_FOLDER_PREFIX']}_Disks",
                         'datastore_pattern' => env['BOSH_VSPHERE_VCENTER_DATASTORE_PATTERN'],
                         'persistent_datastore_pattern' =>
                           env['BOSH_VSPHERE_VCENTER_DATASTORE_PATTERN'],
                         'allow_mixed_datastores' => true,
                         'clusters' =>
                           [{ env['BOSH_VSPHERE_VCENTER_CLUSTER'] =>
                                { 'resource_pool' =>
                                    env['BOSH_VSPHERE_VCENTER_RESOURCE_POOL']
                                } }] }] } } } }
    end

    private

    attr_reader :env
  end
end