{"record":{"id":"e773abdbeaf02f33","repo":"kubernetes/kops","slug":"must-specify-mode-for-non-shared-network","errorCode":null,"errorMessage":"must specify mode for (non-shared) Network","messagePattern":"must specify mode for \\(non-shared\\) Network","errorType":"validation","errorClass":null,"httpStatus":null,"severity":"error","filePath":"upup/pkg/fi/cloudup/gcetasks/network.go","lineNumber":130,"sourceCode":"\t\t\treturn fmt.Errorf(\"CIDR must specified for networks where mode=legacy\")\n\t\t}\n\t\tklog.Warningf(\"using legacy mode for GCE network %q\", fi.ValueOf(e.Name))\n\tdefault:\n\t\tif cidr != \"\" {\n\t\t\treturn fmt.Errorf(\"CIDR cannot specified for networks where mode=%s\", e.Mode)\n\t\t}\n\t}\n\n\tswitch e.Mode {\n\tcase \"auto\":\n\tcase \"custom\":\n\tcase \"legacy\":\n\t\t// Known\n\n\tcase \"\":\n\t\t// Treated as \"keep existing\", only allowed for shared mode\n\t\tif !fi.ValueOf(e.Shared) {\n\t\t\treturn fmt.Errorf(\"must specify mode for (non-shared) Network\")\n\t\t}\n\n\tdefault:\n\t\treturn fmt.Errorf(\"unknown mode %q for Network\", e.Mode)\n\t}\n\n\treturn nil\n}\n\nfunc (_ *Network) RenderGCE(t *gce.GCEAPITarget, a, e, changes *Network) error {\n\tshared := fi.ValueOf(e.Shared)\n\tif shared {\n\t\t// Verify the network was found\n\t\tif a == nil {\n\t\t\treturn fmt.Errorf(\"Network with name %q not found\", fi.ValueOf(e.Name))\n\t\t}\n\t}\n","sourceCodeStart":112,"sourceCodeEnd":148,"githubUrl":"https://github.com/kubernetes/kops/blob/4c8573c808a73d578c5eadc86d410646ea0b0d73/upup/pkg/fi/cloudup/gcetasks/network.go#L112-L148","documentation":"Validation error from Network.CheckChanges. Mode is empty and Shared is false. An empty mode means 'keep existing' and is only permitted when adopting a shared network; a kOps-managed network must declare auto, custom, or legacy.","triggerScenarios":"Thrown at upup/pkg/fi/cloudup/gcetasks/network.go:130 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Set an explicit mode (auto, custom, or legacy) on the network in the cluster spec","Or mark the network as shared if it is an existing network managed outside kOps"],"exampleFix":null,"handlingStrategy":"validation","validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"4c8573c808a73d578c5eadc86d410646ea0b0d73","analyzedAt":"2026-09-05T04:13:19.212Z","contentChangedAt":"2026-09-05T04:13:19.212Z","schemaVersion":2},"datasetVersion":"2026-09-12T12:17:11.808Z"}