func()

in cmd/root.go [158:207]


func (o *migrateOptions) ValidateFlags() error {
	if o.projectID == "" {
		return fmt.Errorf("--%s not provided or empty", projectFlag)
	}
	if o.selectedNetwork == "" {
		return fmt.Errorf("--%s not provided or empty", networkFlag)
	}

	// Concurrency validation.
	if o.concurrentClusters < 1 {
		return fmt.Errorf("--%s must be an integer greater than 0", concurrentClustersFlag)
	}

	// Polling validation.
	if o.pollingInterval < 10*time.Second {
		return fmt.Errorf("--%s must greater than or equal to 10 seconds. Note: Upgrade operations times are O(minutes)", pollingIntervalFlag)
	}
	if o.pollingDeadline < 5*time.Minute {
		return fmt.Errorf("--%s must greater than or equal to 5 minutes. Note: Upgrade operations times are O(minutes)", pollingDeadlineFlag)
	}
	if o.pollingInterval > o.pollingDeadline {
		return fmt.Errorf("--%s=%v must be greater than --%s=%v", pollingDeadlineFlag, o.pollingDeadline, pollingIntervalFlag, o.pollingInterval)
	}

	// Version validation.
	if (o.desiredControlPlaneVersion == "" && !o.inPlaceControlPlaneUpgrade) ||
		(o.desiredControlPlaneVersion != "" && o.inPlaceControlPlaneUpgrade) {
		return fmt.Errorf("specify --%s or provide a version for --%s, but not both", inPlaceControlPlaneUpgradeFlag, desiredControlPlaneVersionFlag)
	}
	if o.desiredControlPlaneVersion != "" {
		if err := clusters.IsFormatValid(o.desiredControlPlaneVersion); err != nil {
			return fmt.Errorf("--%s=%q is not valid: %v", desiredControlPlaneVersionFlag, o.desiredControlPlaneVersion, err)
		}
	}
	if err := clusters.IsFormatValid(o.desiredNodeVersion); err != nil {
		return fmt.Errorf("--%s=%q is not valid: %v", desiredNodeVersionFlag, o.desiredNodeVersion, err)
	}
	// Use of `-` or `latest` aliases are validated later at the control plane and node pool level.
	if !o.inPlaceControlPlaneUpgrade &&
		o.desiredControlPlaneVersion != clusters.DefaultVersion &&
		o.desiredControlPlaneVersion != clusters.LatestVersion &&
		o.desiredNodeVersion != clusters.DefaultVersion &&
		o.desiredNodeVersion != clusters.LatestVersion {
		if err := clusters.IsWithinVersionSkew(o.desiredNodeVersion, o.desiredControlPlaneVersion, clusters.MaxVersionSkew); err != nil {
			return err
		}
	}

	return nil
}