{"record":{"id":"a12795fe2bdf059c","repo":"kubernetes/kops","slug":"newlblistenertaskfromcloud-failed-to-create-new-l","errorCode":null,"errorMessage":"NewLBListenerTaskFromCloud: Failed to create new LBListener task for pool %s: %v","messagePattern":"NewLBListenerTaskFromCloud: Failed to create new LBListener task for pool (.+?): (.+?)","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"upup/pkg/fi/cloudup/openstacktasks/lblistener.go","lineNumber":75,"sourceCode":"\treturn s.ID\n}\n\nfunc NewLBListenerTaskFromCloud(cloud openstack.OpenstackCloud, lifecycle fi.Lifecycle, listener *listeners.Listener, find *LBListener) (*LBListener, error) {\n\t// sort for consistent comparison\n\tsort.Strings(listener.AllowedCIDRs)\n\tlistenerTask := &LBListener{\n\t\tID:           new(listener.ID),\n\t\tName:         new(listener.Name),\n\t\tPort:         new(listener.ProtocolPort),\n\t\tAllowedCIDRs: listener.AllowedCIDRs,\n\t\tLifecycle:    lifecycle,\n\t}\n\n\tif len(listener.Pools) > 0 {\n\t\tfor _, pool := range listener.Pools {\n\t\t\tpoolTask, err := NewLBPoolTaskFromCloud(cloud, lifecycle, &pool, find.Pool)\n\t\t\tif err != nil {\n\t\t\t\treturn nil, fmt.Errorf(\"NewLBListenerTaskFromCloud: Failed to create new LBListener task for pool %s: %v\", pool.Name, err)\n\t\t\t} else {\n\t\t\t\tlistenerTask.Pool = poolTask\n\t\t\t\t// TODO: Support Multiple?\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t} else {\n\t\tpool, err := cloud.GetPool(listener.DefaultPoolID)\n\t\tif err != nil {\n\t\t\treturn nil, fmt.Errorf(\"Fail to get pool with ID: %s: %v\", listener.DefaultPoolID, err)\n\t\t}\n\t\tpoolTask, err := NewLBPoolTaskFromCloud(cloud, lifecycle, pool, find.Pool)\n\t\tif err != nil {\n\t\t\treturn nil, fmt.Errorf(\"NewLBListenerTaskFromCloud: Failed to create new LBListener task for pool %s: %v\", pool.Name, err)\n\t\t}\n\t\tlistenerTask.Pool = poolTask\n\t}\n\tif find != nil {","sourceCodeStart":57,"sourceCodeEnd":93,"githubUrl":"https://github.com/kubernetes/kops/blob/4c8573c808a73d578c5eadc86d410646ea0b0d73/upup/pkg/fi/cloudup/openstacktasks/lblistener.go#L57-L93","documentation":"While reconstructing an LBListener task from cloud state, kOps builds the associated LBPool task for each pool attached to the listener. This error wraps a failure from NewLBPoolTaskFromCloud, so the listener cannot be modeled during Find.","triggerScenarios":"Find → NewLBListenerTaskFromCloud with listener.Pools non-empty, where NewLBPoolTaskFromCloud fails — usually a failed cloud API call to fetch the loadbalancer or pool details referenced by the pool record.","commonSituations":"Pool references a load balancer deleted out-of-band; transient Octavia API error during `kops update cluster`; permissions prevent reading pool/loadbalancer details.","solutions":["Read the inner error to see which cloud call failed","Confirm the listener's pool and its loadbalancer still exist: `openstack loadbalancer pool list`, `openstack loadbalancer show <lb>`","Re-run `kops update cluster`; if state is stale after manual cloud edits, remove the orphaned resources or fix kops state"],"exampleFix":null,"handlingStrategy":"try-catch","validationCode":"openstack loadbalancer pool list -f value -c ID -c Loadbalancers | while read id lb; do\n  openstack loadbalancer pool show \"$id\" >/dev/null || echo \"pool $id unreadable\"\ndone","typeGuard":null,"tryCatchPattern":"poolTask, err := NewLBPoolTaskFromCloud(cloud, lifecycle, &pool, find.Pool)\nif err != nil {\n    // transient Octavia failure: retry with backoff; else surface wrapped error\n    if isTransient(err) { return retryWithBackoff(err) }\n    return nil, fmt.Errorf(\"failed to build pool task for %s: %w\", pool.Name, err)\n}","preventionTips":["Avoid deleting LB pools directly in OpenStack; let kops manage lifecycle","Run updates with valid, unexpired OpenStack credentials","Check Octavia API health before large cluster updates"],"tags":["openstack","octavia","loadbalancer","find"],"backgroundTag":"cloud-resource-not-found","analyzedSha":"4c8573c808a73d578c5eadc86d410646ea0b0d73","analyzedAt":"2026-09-05T04:13:19.212Z","contentChangedAt":"2026-09-05T04:13:19.212Z","schemaVersion":2},"datasetVersion":"2026-09-12T07:17:12.445Z"}