func()

in internal/pkg/manifest/validate.go [94:168]


func (l LoadBalancedWebService) validate() error {
	var err error
	if err = l.LoadBalancedWebServiceConfig.validate(); err != nil {
		return err
	}
	if err = l.Workload.validate(); err != nil {
		return err
	}
	if err = validateTargetContainer(validateTargetContainerOpts{
		mainContainerName: aws.StringValue(l.Name),
		mainContainerPort: l.ImageConfig.Port,
		targetContainer:   l.HTTPOrBool.Main.TargetContainer,
		sidecarConfig:     l.Sidecars,
	}); err != nil {
		return fmt.Errorf(`validate load balancer target for "http": %w`, err)
	}
	for idx, rule := range l.HTTPOrBool.AdditionalRoutingRules {
		if err = validateTargetContainer(validateTargetContainerOpts{
			mainContainerName: aws.StringValue(l.Name),
			mainContainerPort: l.ImageConfig.Port,
			targetContainer:   rule.TargetContainer,
			sidecarConfig:     l.Sidecars,
		}); err != nil {
			return fmt.Errorf(`validate load balancer target for "http.additional_rules[%d]": %w`, idx, err)
		}
	}
	if err = validateTargetContainer(validateTargetContainerOpts{
		mainContainerName: aws.StringValue(l.Name),
		mainContainerPort: l.ImageConfig.Port,
		targetContainer:   l.NLBConfig.Listener.TargetContainer,
		sidecarConfig:     l.Sidecars,
	}); err != nil {
		return fmt.Errorf(`validate target for "nlb": %w`, err)
	}
	for idx, listener := range l.NLBConfig.AdditionalListeners {
		if err = validateTargetContainer(validateTargetContainerOpts{
			mainContainerName: aws.StringValue(l.Name),
			mainContainerPort: l.ImageConfig.Port,
			targetContainer:   listener.TargetContainer,
			sidecarConfig:     l.Sidecars,
		}); err != nil {
			return fmt.Errorf(`validate target for "nlb.additional_listeners[%d]": %w`, idx, err)
		}
	}
	if err = validateContainerDeps(validateDependenciesOpts{
		sidecarConfig:     l.Sidecars,
		imageConfig:       l.ImageConfig.Image,
		mainContainerName: aws.StringValue(l.Name),
		logging:           l.Logging,
	}); err != nil {
		return fmt.Errorf("validate container dependencies: %w", err)
	}
	if err = validateExposedPorts(validateExposedPortsOpts{
		mainContainerName: aws.StringValue(l.Name),
		mainContainerPort: l.ImageConfig.Port,
		sidecarConfig:     l.Sidecars,
		alb:               &l.HTTPOrBool.HTTP,
		nlb:               &l.NLBConfig,
	}); err != nil {
		return fmt.Errorf("validate unique exposed ports: %w", err)
	}
	ports, err := l.ExposedPorts()
	if err != nil {
		return err
	}
	if err = validateHealthCheckPorts(validateHealthCheckPortsOpts{
		exposedPorts:      ports,
		mainContainerPort: l.ImageConfig.Port,
		alb:               l.HTTPOrBool.HTTP,
		nlb:               l.NLBConfig,
	}); err != nil {
		return fmt.Errorf("validate load balancer health check ports: %w", err)
	}
	return nil
}