func()

in pkg/common/config/config_ini_legacy.go [116:233]


func (cci *CommonConfigINI) validateConfig() error {
	//Fix default global values
	if cci.Global.RoundTripperCount == 0 {
		cci.Global.RoundTripperCount = DefaultRoundTripperCount
	}
	if cci.Global.VCenterPort == "" {
		cci.Global.VCenterPort = DefaultVCenterPortStr
	}
	if cci.Global.APIBinding == "" {
		cci.Global.APIBinding = DefaultAPIBinding
	}
	if cci.Global.IPFamily == "" {
		cci.Global.IPFamily = DefaultIPFamily
	}

	// Create a single instance of VSphereInstance for the Global VCenterIP if the
	// VirtualCenter does not already exist in the map
	if cci.Global.VCenterIP != "" && cci.VirtualCenter[cci.Global.VCenterIP] == nil {
		cci.VirtualCenter[cci.Global.VCenterIP] = &VirtualCenterConfigINI{
			User:              cci.Global.User,
			Password:          cci.Global.Password,
			TenantRef:         cci.Global.VCenterIP,
			VCenterIP:         cci.Global.VCenterIP,
			VCenterPort:       cci.Global.VCenterPort,
			InsecureFlag:      cci.Global.InsecureFlag,
			Datacenters:       cci.Global.Datacenters,
			RoundTripperCount: cci.Global.RoundTripperCount,
			CAFile:            cci.Global.CAFile,
			Thumbprint:        cci.Global.Thumbprint,
			SecretRef:         DefaultCredentialManager,
			SecretName:        cci.Global.SecretName,
			SecretNamespace:   cci.Global.SecretNamespace,
			IPFamily:          cci.Global.IPFamily,
		}
	}

	// Must have at least one vCenter defined
	if len(cci.VirtualCenter) == 0 {
		klog.Error(ErrMissingVCenter)
		return ErrMissingVCenter
	}

	// vsphere.conf is no longer supported in the old format.
	for vcServer, vcConfig := range cci.VirtualCenter {
		klog.V(4).Infof("Initializing vc server %s", vcServer)
		if vcServer == "" {
			klog.Error(ErrInvalidVCenterIP)
			return ErrInvalidVCenterIP
		}

		// If vcConfig.VCenterIP is explicitly set, that means the vcServer
		// above is the TenantRef
		if vcConfig.VCenterIP != "" {
			//vcConfig.VCenterIP is already set
			vcConfig.TenantRef = vcServer
		} else {
			vcConfig.VCenterIP = vcServer
			vcConfig.TenantRef = vcServer
		}

		if !cci.isSecretInfoProvided() && !vcConfig.isSecretInfoProvided() {
			if vcConfig.User == "" {
				vcConfig.User = cci.Global.User
				if vcConfig.User == "" {
					klog.Errorf("vcConfig.User is empty for vc %s!", vcServer)
					return ErrUsernameMissing
				}
			}
			if vcConfig.Password == "" {
				vcConfig.Password = cci.Global.Password
				if vcConfig.Password == "" {
					klog.Errorf("vcConfig.Password is empty for vc %s!", vcServer)
					return ErrPasswordMissing
				}
			}
		} else if cci.isSecretInfoProvided() && !vcConfig.isSecretInfoProvided() {
			vcConfig.SecretRef = DefaultCredentialManager
		} else if vcConfig.isSecretInfoProvided() {
			vcConfig.SecretRef = vcConfig.SecretNamespace + "/" + vcConfig.SecretName
		}

		if vcConfig.VCenterPort == "" {
			vcConfig.VCenterPort = cci.Global.VCenterPort
		}

		if vcConfig.Datacenters == "" {
			if cci.Global.Datacenters != "" {
				vcConfig.Datacenters = cci.Global.Datacenters
			}
		}
		if vcConfig.RoundTripperCount == 0 {
			vcConfig.RoundTripperCount = cci.Global.RoundTripperCount
		}
		if vcConfig.CAFile == "" {
			vcConfig.CAFile = cci.Global.CAFile
		}
		if vcConfig.Thumbprint == "" {
			vcConfig.Thumbprint = cci.Global.Thumbprint
		}

		if vcConfig.IPFamily == "" {
			vcConfig.IPFamily = cci.Global.IPFamily
		}

		err := vcConfig.validateIPFamily()
		if err != nil {
			klog.Errorf("Invalid vcConfig IPFamily: %s, err=%s", vcConfig.IPFamily, err)
			return err
		}

		insecure := vcConfig.InsecureFlag
		if !insecure {
			vcConfig.InsecureFlag = cci.Global.InsecureFlag
		}
	}

	return nil
}