When I migrated from Kubevirt to Kubevirt, because the type was OpenShift, it checked the Kubernetes version of the source cluster. My source cluster version was v1.29.5, and then an error was reported in the logs: "error":"strconv.Atoi: parsing "29+": invalid syntax".
{"level":"error","ts":"2025-12-15 07:08:04.867","logger":"plan|ln7ws","msg":"check ocp version failed","plan":{"name":"plan-migration-test-vm1","namespace":"konveyor-forklift"},"plan":{"kind":"Plan","apiVersion":"forklift.konveyor.io/v1beta1","metadata":{"name":"plan-migration-test-vm1","namespace":"konveyor-forklift","uid":"1afc8f18-7ca6-4d4a-b037-4d0dd6c8d7b6","resourceVersion":"29448895","generation":1,"creationTimestamp":"2025-12-15T07:05:19Z","annotations":{"kubectl.kubernetes.io/last-applied-configuration":"{\"apiVersion\":\"forklift.konveyor.io/v1beta1\",\"kind\":\"Plan\",\"metadata\":{\"annotations\":{\"populatorLabels\":\"True\"},\"name\":\"plan-migration-test-vm1\",\"namespace\":\"konveyor-forklift\"},\"spec\":{\"map\":{\"network\":{\"apiVersion\":\"forklift.konveyor.io/v1beta1\",\"kind\":\"NetworkMap\",\"name\":\"migration-network-map\",\"namespace\":\"konveyor-forklift\"},\"storage\":{\"apiVersion\":\"forklift.konveyor.io/v1beta1\",\"kind\":\"StorageMap\",\"name\":\"migration-storage-map\",\"namespace\":\"konveyor-forklift\"}},\"migrateSharedDisks\":true,\"provider\":{\"destination\":{\"apiVersion\":\"forklift.konveyor.io/v1beta1\",\"kind\":\"Provider\",\"name\":\"host\",\"namespace\":\"konveyor-forklift\"},\"source\":{\"apiVersion\":\"forklift.konveyor.io/v1beta1\",\"kind\":\"Provider\",\"name\":\"kubevirt\",\"namespace\":\"konveyor-forklift\"}},\"targetNamespace\":\"konveyor-forklift\",\"vms\":[{\"name\":\"mk-test\",\"namespace\":\"test-mk\"}]}}\n","populatorLabels":"True"},"managedFields":[{"manager":"kubectl-client-side-apply","operation":"Update","apiVersion":"forklift.konveyor.io/v1beta1","time":"2025-12-15T07:05:19Z","fieldsType":"FieldsV1","fieldsV1":{"f:metadata":{"f:annotations":{".":{},"f:kubectl.kubernetes.io/last-applied-configuration":{},"f:populatorLabels":{}}},"f:spec":{".":{},"f:map":{".":{},"f:network":{},"f:storage":{}},"f:migrateSharedDisks":{},"f:preserveStaticIPs":{},"f:provider":{".":{},"f:destination":{},"f:source":{}},"f:pvcNameTemplateUseGenerateName":{},"f:runPreflightInspection":{},"f:skipGuestConversion":{},"f:targetNamespace":{},"f:useCompatibilityMode":{},"f:vms":{}}}},{"manager":"forklift-controller","operation":"Update","apiVersion":"forklift.konveyor.io/v1beta1","time":"2025-12-15T07:08:03Z","fieldsType":"FieldsV1","fieldsV1":{"f:status":{".":{},"f:conditions":{},"f:migration":{},"f:observedGeneration":{}}},"subresource":"status"}]},"spec":{"targetNamespace":"konveyor-forklift","provider":{"source":{"kind":"Provider","namespace":"konveyor-forklift","name":"kubevirt","apiVersion":"forklift.konveyor.io/v1beta1"},"destination":{"kind":"Provider","namespace":"konveyor-forklift","name":"host","apiVersion":"forklift.konveyor.io/v1beta1"}},"map":{"network":{"kind":"NetworkMap","namespace":"konveyor-forklift","name":"migration-network-map","apiVersion":"forklift.konveyor.io/v1beta1"},"storage":{"kind":"StorageMap","namespace":"konveyor-forklift","name":"migration-storage-map","apiVersion":"forklift.konveyor.io/v1beta1"}},"vms":[{"id":"e21d3aaa-7fdf-4e7a-b97e-ab3292b213a9","name":"mk-test","namespace":"test-mk","luks":{}}],"preserveStaticIPs":true,"pvcNameTemplateUseGenerateName":true,"migrateSharedDisks":true,"useCompatibilityMode":true,"runPreflightInspection":true},"status":{"conditions":[{"type":"UnsupportedVersion","status":"True","reason":"NotSupported","category":"Critical","message":"Source version is not supported.","lastTransitionTime":"2025-12-15T07:08:03Z"}],"observedGeneration":1,"migration":{}}},"error":"strconv.Atoi: parsing \"29+\": invalid syntax","stacktrace":"github.com/kubev2v/forklift/pkg/controller/plan.(*Reconciler).validateOpenShiftVersion\n\t/app/pkg/controller/plan/validation.go:290\ngithub.com/kubev2v/forklift/pkg/controller/plan.(*Reconciler).validate\n\t/app/pkg/controller/plan/validation.go:208\ngithub.com/kubev2v/forklift/pkg/controller/plan.Reconciler.Reconcile\n\t/app/pkg/controller/plan/controller.go:223\nsigs.k8s.io/controller-runtime/pkg/internal/controller.(*Controller[...]).Reconcile\n\t/app/vendor/sigs.k8s.io/controller-runtime/pkg/internal/controller/controller.go:119\nsigs.k8s.io/controller-runtime/pkg/internal/controller.(*Controller[...]).reconcileHandler\n\t/app/vendor/sigs.k8s.io/controller-runtime/pkg/internal/controller/controller.go:334\nsigs.k8s.io/controller-runtime/pkg/internal/controller.(*Controller[...]).processNextWorkItem\n\t/app/vendor/sigs.k8s.io/controller-runtime/pkg/internal/controller/controller.go:294\nsigs.k8s.io/controller-runtime/pkg/internal/controller.(*Controller[...]).Start.func2.2\n\t/app/vendor/sigs.k8s.io/controller-runtime/pkg/internal/controller/controller.go:255"}
When I migrated from Kubevirt to Kubevirt, because the type was OpenShift, it checked the Kubernetes version of the source cluster. My source cluster version was v1.29.5, and then an error was reported in the logs: "error":"strconv.Atoi: parsing "29+": invalid syntax".
{"level":"error","ts":"2025-12-15 07:08:04.867","logger":"plan|ln7ws","msg":"check ocp version failed","plan":{"name":"plan-migration-test-vm1","namespace":"konveyor-forklift"},"plan":{"kind":"Plan","apiVersion":"forklift.konveyor.io/v1beta1","metadata":{"name":"plan-migration-test-vm1","namespace":"konveyor-forklift","uid":"1afc8f18-7ca6-4d4a-b037-4d0dd6c8d7b6","resourceVersion":"29448895","generation":1,"creationTimestamp":"2025-12-15T07:05:19Z","annotations":{"kubectl.kubernetes.io/last-applied-configuration":"{\"apiVersion\":\"forklift.konveyor.io/v1beta1\",\"kind\":\"Plan\",\"metadata\":{\"annotations\":{\"populatorLabels\":\"True\"},\"name\":\"plan-migration-test-vm1\",\"namespace\":\"konveyor-forklift\"},\"spec\":{\"map\":{\"network\":{\"apiVersion\":\"forklift.konveyor.io/v1beta1\",\"kind\":\"NetworkMap\",\"name\":\"migration-network-map\",\"namespace\":\"konveyor-forklift\"},\"storage\":{\"apiVersion\":\"forklift.konveyor.io/v1beta1\",\"kind\":\"StorageMap\",\"name\":\"migration-storage-map\",\"namespace\":\"konveyor-forklift\"}},\"migrateSharedDisks\":true,\"provider\":{\"destination\":{\"apiVersion\":\"forklift.konveyor.io/v1beta1\",\"kind\":\"Provider\",\"name\":\"host\",\"namespace\":\"konveyor-forklift\"},\"source\":{\"apiVersion\":\"forklift.konveyor.io/v1beta1\",\"kind\":\"Provider\",\"name\":\"kubevirt\",\"namespace\":\"konveyor-forklift\"}},\"targetNamespace\":\"konveyor-forklift\",\"vms\":[{\"name\":\"mk-test\",\"namespace\":\"test-mk\"}]}}\n","populatorLabels":"True"},"managedFields":[{"manager":"kubectl-client-side-apply","operation":"Update","apiVersion":"forklift.konveyor.io/v1beta1","time":"2025-12-15T07:05:19Z","fieldsType":"FieldsV1","fieldsV1":{"f:metadata":{"f:annotations":{".":{},"f:kubectl.kubernetes.io/last-applied-configuration":{},"f:populatorLabels":{}}},"f:spec":{".":{},"f:map":{".":{},"f:network":{},"f:storage":{}},"f:migrateSharedDisks":{},"f:preserveStaticIPs":{},"f:provider":{".":{},"f:destination":{},"f:source":{}},"f:pvcNameTemplateUseGenerateName":{},"f:runPreflightInspection":{},"f:skipGuestConversion":{},"f:targetNamespace":{},"f:useCompatibilityMode":{},"f:vms":{}}}},{"manager":"forklift-controller","operation":"Update","apiVersion":"forklift.konveyor.io/v1beta1","time":"2025-12-15T07:08:03Z","fieldsType":"FieldsV1","fieldsV1":{"f:status":{".":{},"f:conditions":{},"f:migration":{},"f:observedGeneration":{}}},"subresource":"status"}]},"spec":{"targetNamespace":"konveyor-forklift","provider":{"source":{"kind":"Provider","namespace":"konveyor-forklift","name":"kubevirt","apiVersion":"forklift.konveyor.io/v1beta1"},"destination":{"kind":"Provider","namespace":"konveyor-forklift","name":"host","apiVersion":"forklift.konveyor.io/v1beta1"}},"map":{"network":{"kind":"NetworkMap","namespace":"konveyor-forklift","name":"migration-network-map","apiVersion":"forklift.konveyor.io/v1beta1"},"storage":{"kind":"StorageMap","namespace":"konveyor-forklift","name":"migration-storage-map","apiVersion":"forklift.konveyor.io/v1beta1"}},"vms":[{"id":"e21d3aaa-7fdf-4e7a-b97e-ab3292b213a9","name":"mk-test","namespace":"test-mk","luks":{}}],"preserveStaticIPs":true,"pvcNameTemplateUseGenerateName":true,"migrateSharedDisks":true,"useCompatibilityMode":true,"runPreflightInspection":true},"status":{"conditions":[{"type":"UnsupportedVersion","status":"True","reason":"NotSupported","category":"Critical","message":"Source version is not supported.","lastTransitionTime":"2025-12-15T07:08:03Z"}],"observedGeneration":1,"migration":{}}},"error":"strconv.Atoi: parsing \"29+\": invalid syntax","stacktrace":"github.com/kubev2v/forklift/pkg/controller/plan.(*Reconciler).validateOpenShiftVersion\n\t/app/pkg/controller/plan/validation.go:290\ngithub.com/kubev2v/forklift/pkg/controller/plan.(*Reconciler).validate\n\t/app/pkg/controller/plan/validation.go:208\ngithub.com/kubev2v/forklift/pkg/controller/plan.Reconciler.Reconcile\n\t/app/pkg/controller/plan/controller.go:223\nsigs.k8s.io/controller-runtime/pkg/internal/controller.(*Controller[...]).Reconcile\n\t/app/vendor/sigs.k8s.io/controller-runtime/pkg/internal/controller/controller.go:119\nsigs.k8s.io/controller-runtime/pkg/internal/controller.(*Controller[...]).reconcileHandler\n\t/app/vendor/sigs.k8s.io/controller-runtime/pkg/internal/controller/controller.go:334\nsigs.k8s.io/controller-runtime/pkg/internal/controller.(*Controller[...]).processNextWorkItem\n\t/app/vendor/sigs.k8s.io/controller-runtime/pkg/internal/controller/controller.go:294\nsigs.k8s.io/controller-runtime/pkg/internal/controller.(*Controller[...]).Start.func2.2\n\t/app/vendor/sigs.k8s.io/controller-runtime/pkg/internal/controller/controller.go:255"}