func newLBCreateOperation()

in cmd/lb_create.go [183:235]


func newLBCreateOperation(
	lbName, lbScheme string,
	certificates, ports, securityGroupIDs, subnetIDs []string,
	output Output,
	acm acm.Client,
	ec2 ec2.Client,
	elbv2 elbv2.Client,
) (operation lbCreateOperation, errors []error) {
	operation = lbCreateOperation{
		certificateOperation: certificateOperation{acm: acm, output: output},
		elbv2:                elbv2,
		lbName:               lbName,
		lbScheme:             lbScheme,
		output:               output,
		vpcOperation:         vpcOperation{ec2: ec2, output: output},
	}

	if errs := operation.setPorts(ports); len(errs) > 0 {
		errors = append(errors, errs...)
	}

	if err := operation.inferType(); err != nil {
		errors = append(errors, err)
	}

	if len(certificates) > 0 {
		if errs := operation.setCertificateARNs(certificates); len(errs) > 0 {
			errors = append(errors, errs...)
		}
	}

	if len(subnetIDs) > 0 {
		if err := operation.setSubnetIDs(subnetIDs); err != nil {
			errors = append(errors, err)
		}
	} else {
		if err := operation.setDefaultSubnetIDs(); err != nil {
			errors = append(errors, err)
		}
	}

	if len(securityGroupIDs) > 0 {
		operation.setSecurityGroupIDs(securityGroupIDs)
	} else if operation.lbType == "application" {
		if err := operation.setDefaultSecurityGroupID(); err != nil {
			errors = append(errors, err)
		}
	}

	errors = append(errors, operation.validate()...)

	return
}