class AwsElb
def fetch_from_api
def fetch_from_api backend = BackendFactory.create(inspec_runner) begin lbs = backend.describe_load_balancers(load_balancer_names: [elb_name]).load_balancer_descriptions @exists = true # Load balancer names are uniq; we will either have 0 or 1 result unpack_describe_elbs_response(lbs.first) rescue Aws::ElasticLoadBalancing::Errors::LoadBalancerNotFound @exists = false populate_as_missing end end
def populate_as_missing
def populate_as_missing @availability_zones = [] @external_ports = [] @instance_ids = [] @internal_ports = [] @security_group_ids = [] @subnet_ids = [] end
def to_s
def to_s "AWS ELB #{elb_name}" end
def unpack_describe_elbs_response(lb_struct)
def unpack_describe_elbs_response(lb_struct) @availability_zones = lb_struct.availability_zones @dns_name = lb_struct.dns_name @external_ports = lb_struct.listener_descriptions.map { |ld| ld.listener.load_balancer_port } @instance_ids = lb_struct.instances.map(&:instance_id) @internal_ports = lb_struct.listener_descriptions.map { |ld| ld.listener.instance_port } @elb_name = lb_struct.load_balancer_name @security_group_ids = lb_struct.security_groups @subnet_ids = lb_struct.subnets @vpc_id = lb_struct.vpc_id end
def validate_params(raw_params)
def validate_params(raw_params) validated_params = check_resource_param_names( raw_params: raw_params, allowed_params: [:elb_name], allowed_scalar_name: :elb_name, allowed_scalar_type: String, ) if validated_params.empty? raise ArgumentError, 'You must provide a elb_name to aws_elb.' end validated_params end