func()

in eksconfig/config.go [992:1161]


func (cfg *Config) ValidateAndSetDefaults() error {
	if cfg.mu == nil {
		cfg.mu = new(sync.RWMutex)
	}
	cfg.mu.Lock()
	defer func() {
		if serr := cfg.unsafeSync(); serr != nil {
			fmt.Fprintf(os.Stderr, "[WARN] failed to sync config files %v\n", serr)
		}
		cfg.mu.Unlock()
	}()

	// generically defaults and validates addons that are members of cfg.Spec
	spec := reflect.ValueOf(cfg.Spec)
	for i := 0; i < spec.NumField(); i++ {
		// skip if the field does not implement Addon or is Nil
		if addon, ok := spec.Field(i).Interface().(Addon); ok && !reflect.ValueOf(addon).IsNil() {
			addon.Default(cfg)
			if err := addon.Validate(cfg); err != nil {
				return fmt.Errorf("failed to validate %s, %v", reflect.ValueOf(addon).Type(), err)
			}
		}
	}

	if err := cfg.validateConfig(); err != nil {
		return fmt.Errorf("validateConfig failed [%v]", err)
	}
	if err := cfg.validateAddOnNodeGroups(); err != nil {
		return fmt.Errorf("validateAddOnNodeGroups failed [%v]", err)
	}
	if err := cfg.validateAddOnManagedNodeGroups(); err != nil {
		return fmt.Errorf("validateAddOnManagedNodeGroups failed [%v]", err)
	}

	if err := cfg.validateAddOnCNIVPC(); err != nil {
		return fmt.Errorf("validateAddOnCNIVPC failed [%v]", err)
	}

	total := int32(0)
	if cfg.IsEnabledAddOnNodeGroups() {
		for _, cur := range cfg.AddOnNodeGroups.ASGs {
			total += cur.ASGDesiredCapacity
		}
	}
	if cfg.IsEnabledAddOnManagedNodeGroups() {
		for _, cur := range cfg.AddOnManagedNodeGroups.MNGs {
			total += int32(cur.ASGDesiredCapacity)
		}
	}
	cfg.TotalNodes = total

	if err := cfg.validateAddOnCWAgent(); err != nil {
		return fmt.Errorf("validateAddOnCWAgent failed [%v]", err)
	}
	if err := cfg.validateAddOnFluentd(); err != nil {
		return fmt.Errorf("validateAddOnFluentd failed [%v]", err)
	}
	if err := cfg.validateAddOnMetricsServer(); err != nil {
		return fmt.Errorf("validateAddOnMetricsServer failed [%v]", err)
	}

	if err := cfg.validateAddOnConformance(); err != nil {
		return fmt.Errorf("validateAddOnConformance failed [%v]", err)
	}

	if err := cfg.validateAddOnAppMesh(); err != nil {
		return fmt.Errorf("validateAddOnAppMesh failed [%v]", err)
	}
	if err := cfg.validateAddOnCSIEBS(); err != nil {
		return fmt.Errorf("validateAddOnCSIEBS failed [%v]", err)
	}

	if err := cfg.validateAddOnKubernetesDashboard(); err != nil {
		return fmt.Errorf("validateAddOnKubernetesDashboard failed [%v]", err)
	}
	if err := cfg.validateAddOnPrometheusGrafana(); err != nil {
		return fmt.Errorf("validateAddOnPrometheusGrafana failed [%v]", err)
	}
	if err := cfg.validateAddOnPHPApache(); err != nil {
		return fmt.Errorf("validateAddOnPHPApache failed [%v]", err)
	}
	if err := cfg.validateAddOnNLBHelloWorld(); err != nil {
		return fmt.Errorf("validateAddOnNLBHelloWorld failed [%v]", err)
	}
	if err := cfg.validateAddOnNLBGuestbook(); err != nil {
		return fmt.Errorf("validateAddOnNLBGuestbook failed [%v]", err)
	}
	if err := cfg.validateAddOnALB2048(); err != nil {
		return fmt.Errorf("validateAddOnALB2048 failed [%v]", err)
	}
	if err := cfg.validateAddOnJobsPi(); err != nil {
		return fmt.Errorf("validateAddOnJobsPi failed [%v]", err)
	}
	if err := cfg.validateAddOnJobsEcho(); err != nil {
		return fmt.Errorf("validateAddOnJobsEcho failed [%v]", err)
	}
	if err := cfg.validateAddOnCronJobs(); err != nil {
		return fmt.Errorf("validateAddOnCronJobs failed [%v]", err)
	}

	if err := cfg.validateAddOnCSRsLocal(); err != nil {
		return fmt.Errorf("validateAddOnCSRsLocal failed [%v]", err)
	}
	if err := cfg.validateAddOnCSRsRemote(); err != nil {
		return fmt.Errorf("validateAddOnCSRsRemote failed [%v]", err)
	}

	if err := cfg.validateAddOnConfigmapsLocal(); err != nil {
		return fmt.Errorf("validateAddOnConfigmapsLocal failed [%v]", err)
	}
	if err := cfg.validateAddOnConfigmapsRemote(); err != nil {
		return fmt.Errorf("validateAddOnConfigmapsRemote failed [%v]", err)
	}

	if err := cfg.validateAddOnSecretsLocal(); err != nil {
		return fmt.Errorf("validateAddOnSecretsLocal failed [%v]", err)
	}
	if err := cfg.validateAddOnSecretsRemote(); err != nil {
		return fmt.Errorf("validateAddOnSecretsRemote failed [%v]", err)
	}

	if err := cfg.validateAddOnFargate(); err != nil {
		return fmt.Errorf("validateAddOnFargate failed [%v]", err)
	}
	if err := cfg.validateAddOnIRSA(); err != nil {
		return fmt.Errorf("validateAddOnIRSA failed [%v]", err)
	}
	if err := cfg.validateAddOnIRSAFargate(); err != nil {
		return fmt.Errorf("validateIRSAAddOnFargate failed [%v]", err)
	}
	if err := cfg.validateAddOnWordpress(); err != nil {
		return fmt.Errorf("validateAddOnWordpress failed [%v]", err)
	}
	if err := cfg.validateAddOnJupyterHub(); err != nil {
		return fmt.Errorf("validateAddOnJupyterHub failed [%v]", err)
	}
	if err := cfg.validateAddOnKubeflow(); err != nil {
		return fmt.Errorf("validateAddOnKubeflow failed [%v]", err)
	}
	if err := cfg.validateAddOnCUDAVectorAdd(); err != nil {
		return fmt.Errorf("validateAddOnCUDAVectorAdd failed [%v]", err)
	}

	if err := cfg.validateAddOnClusterLoaderLocal(); err != nil {
		return fmt.Errorf("validateAddOnClusterLoaderLocal failed [%v]", err)
	}
	if err := cfg.validateAddOnClusterLoaderRemote(); err != nil {
		return fmt.Errorf("validateAddOnClusterLoaderRemote failed [%v]", err)
	}

	if err := cfg.validateAddOnStresserLocal(); err != nil {
		return fmt.Errorf("validateAddOnStresserLocal failed [%v]", err)
	}
	if err := cfg.validateAddOnStresserRemote(); err != nil {
		return fmt.Errorf("validateAddOnStresserRemote failed [%v]", err)
	}
	if err := cfg.validateAddOnStresserRemoteV2(); err != nil {
		return fmt.Errorf("validateAddOnStresserRemoteV2 failed [%v]", err)
	}

	if err := cfg.validateAddOnClusterVersionUpgrade(); err != nil {
		return fmt.Errorf("validateAddOnClusterVersionUpgrade failed [%v]", err)
	}

	if err := cfg.validateAddOnAmiSoftLockupIssue454(); err != nil {
		return fmt.Errorf("validateAddOnClusterVersionUpgrade failed [%v]", err)
	}

	return nil
}