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
}