class Bosh::Director::DeploymentPlan::CompilationConfig
Represents the deployment compilation worker configuration.
Attributes
availability_zone[R]
cloud_properties[R]
@return [Hash] cloud properties to use when creating VMs. (optional)
env[RW]
@return [Hash] environment to use when creating VMs. (optional)
network_name[R]
reuse_compilation_vms[RW]
@return [Bool] if VMs should be reused for compilation tasks. (optional)
vm_extensions[R]
vm_type[R]
workers[RW]
@return [Integer] number of worker VMs to use
Public Class Methods
new(compilation_config, azs_list, vm_types = [], vm_extensions = [])
click to toggle source
# File lib/bosh/director/deployment_plan/compilation_config.rb, line 28 def initialize(compilation_config, azs_list, vm_types = [], vm_extensions = []) @workers = safe_property(compilation_config, 'workers', class: Integer, min: 1) @network_name = safe_property(compilation_config, 'network', class: String) @reuse_compilation_vms = safe_property(compilation_config, 'reuse_compilation_vms', class: :boolean, optional: true) @cloud_properties = safe_property( compilation_config, 'cloud_properties', class: Hash, default: {}) @env = safe_property(compilation_config, 'env', class: Hash, optional: true, default: {}) parse_availability_zone(azs_list, compilation_config) parse_vm_type(compilation_config, vm_types) parse_vm_extensions(compilation_config, vm_extensions) end
Public Instance Methods
availability_zone_name()
click to toggle source
# File lib/bosh/director/deployment_plan/compilation_config.rb, line 50 def availability_zone_name @availability_zone.nil? ? nil : @availability_zone.name end
Private Instance Methods
parse_availability_zone(azs_list, compilation_config)
click to toggle source
# File lib/bosh/director/deployment_plan/compilation_config.rb, line 56 def parse_availability_zone(azs_list, compilation_config) az_name = safe_property(compilation_config, 'az', class: String, optional: true) @availability_zone = azs_list[az_name] if az_name && !az_name.empty? && @availability_zone.nil? raise Bosh::Director::CompilationConfigInvalidAvailabilityZone, "Compilation config references unknown az '#{az_name}'. Known azs are: [#{azs_list.keys.join(', ')}]" end end
parse_vm_extensions(compilation_config, vm_extensions)
click to toggle source
# File lib/bosh/director/deployment_plan/compilation_config.rb, line 83 def parse_vm_extensions(compilation_config, vm_extensions) @vm_extensions = [] vm_extension_names = safe_property(compilation_config, 'vm_extensions', class: Array, optional: true) Array(vm_extension_names).each { |vm_extension_name| vm_extension = vm_extensions.find { |vm_extension| vm_extension.name == vm_extension_name } if vm_extension.nil? vm_extensions_names = vm_extensions.map { |vm_extension| vm_extension.name } raise Bosh::Director::CompilationConfigInvalidVmExtension, "Compilation config references unknown vm extension '#{vm_extension_name}'. Known vm extensions are: #{vm_extensions_names.join(', ')}" end if @vm_type.nil? raise Bosh::Director::CompilationConfigVmTypeRequired, "Compilation config is using vm extension '#{vm_extension.name}' and must configure a vm type." end @vm_extensions.push(vm_extension) } end
parse_vm_type(compilation_config, vm_types)
click to toggle source
# File lib/bosh/director/deployment_plan/compilation_config.rb, line 65 def parse_vm_type(compilation_config, vm_types) vm_type_name = safe_property(compilation_config, 'vm_type', class: String, optional: true) if vm_type_name @vm_type = vm_types.find { |vm_type| vm_type.name == vm_type_name } if @vm_type.nil? vm_types_names = vm_types.map { |vm_type| vm_type.name } raise Bosh::Director::CompilationConfigInvalidVmType, "Compilation config references unknown vm type '#{vm_type_name}'. Known vm types are: #{vm_types_names.join(', ')}" end unless @cloud_properties.empty? raise Bosh::Director::CompilationConfigCloudPropertiesNotAllowed, "Compilation config is using vm type '#{@vm_type.name}' and should not be configuring cloud_properties." end end end