class Bosh::Director::DeploymentPlan::JobAvailabilityZoneParser

Public Instance Methods

check_contains(az_names, networks, job) click to toggle source
# File lib/bosh/director/deployment_plan/job_availability_zone_parser.rb, line 15
def check_contains(az_names, networks, job)
  networks.each do |network|
    unless network.has_azs?(az_names)
      raise JobNetworkMissingRequiredAvailabilityZone,
        "Instance group '#{job.name}' must specify availability zone that matches availability zones of network '#{network.name}'"
    end
  end
end
check_validity_of(az_names, job_name) click to toggle source
# File lib/bosh/director/deployment_plan/job_availability_zone_parser.rb, line 24
def check_validity_of(az_names, job_name)
  if az_names.empty?
    raise JobMissingAvailabilityZones, "Instance group '#{job_name}' has empty availability zones"
  end

  az_names.each do |name|
    unless name.is_a?(String)
      raise JobInvalidAvailabilityZone, "Instance group '#{job_name}' has invalid availability zone '#{name}', string expected"
    end
  end
end
look_up_from_deployment(az_names, deployment, job_name) click to toggle source
# File lib/bosh/director/deployment_plan/job_availability_zone_parser.rb, line 36
def look_up_from_deployment(az_names, deployment, job_name)
  az_names.map do |name|
    az = deployment.availability_zone(name)
    if az.nil?
      raise JobUnknownAvailabilityZone, "Instance group '#{job_name}' references unknown availability zone '#{name}'"
    end
    az
  end
end
parse(job_spec, job, deployment, networks) click to toggle source
# File lib/bosh/director/deployment_plan/job_availability_zone_parser.rb, line 6
def parse(job_spec, job, deployment, networks)
  az_names = safe_property(job_spec, 'azs', class: Array, optional: true)
  check_contains(az_names, networks, job)

  return nil if az_names.nil?
  check_validity_of(az_names, job.name)
  look_up_from_deployment(az_names, deployment, job.name)
end