kubesphere/kubesphere · error
the name of the object (%s) does not match the name on the U
Error message
the name of the object (%s) does not match the name on the URL (%s)
What it means
UpdateWorkspaceTemplate validates that the name in the submitted workspace object body matches the workspaceName path parameter. Kubernetes semantics require these to be equal; a mismatch means the client is trying to update a different object than the URL addresses, so the handler returns 400 with 'the name of the object (%s) does not match the name on the URL (%s)'.
Source
Thrown at pkg/kapis/tenant/v1beta1/handler.go:139
}
_ = response.WriteEntity(servererr.None)
}
func (h *handler) UpdateWorkspaceTemplate(req *restful.Request, resp *restful.Response) {
workspaceName := req.PathParameter("workspace")
var workspace tenantv1beta1.WorkspaceTemplate
err := req.ReadEntity(&workspace)
if err != nil {
klog.Error(err)
api.HandleBadRequest(resp, req, err)
return
}
if workspaceName != workspace.Name {
err := fmt.Errorf("the name of the object (%s) does not match the name on the URL (%s)", workspace.Name, workspaceName)
klog.Errorf("%+v", err)
api.HandleBadRequest(resp, req, err)
return
}
requestUser, ok := request.UserFrom(req.Request.Context())
if !ok {
err := fmt.Errorf("cannot obtain user info")
klog.Errorln(err)
api.HandleForbidden(resp, req, err)
}
updated, err := h.tenant.UpdateWorkspaceTemplate(requestUser, &workspace)
if err != nil {
klog.Error(err)
if errors.IsNotFound(err) {
api.HandleNotFound(resp, req, err)View on GitHub (pinned to 04a29b5c60)
Solutions
- Ensure body metadata.name exactly equals the URL workspace segment before issuing the PUT
- Refetch the object from the same workspace you intend to update
- To rename a workspace, create a new one and migrate instead of changing metadata.name
- Fix template/tooling that interpolates the URL path but not the body name
Example fix
// before
body := {"metadata":{"name":"workspace-a"}} // URL: /workspaces/workspace-b
// after
body := {"metadata":{"name":"workspace-b"}} // matches URL /workspaces/workspace-b Defensive patterns
Strategy: validation
Validate before calling
func checkWorkspaceUpdate(urlName string, obj metav1.Object) error {
if obj.GetName() != urlName {
return fmt.Errorf("body name %q != URL name %q", obj.GetName(), urlName)
}
return nil
}
// call before issuing PUT Try / catch
if err := checkWorkspaceUpdate(wsName, workspace); err != nil { return err }
// server already returns 400 on mismatch; treat 400 with 'does not match the name on the URL' as a client bug, not retryable
if resp.StatusCode == 400 && strings.Contains(body, "does not match the name on the URL") {
return fmt.Errorf("fix client payload: %s", body)
} Prevention
- Always derive the PUT body from a GET on the same resource path
- Never edit metadata.name on objects destined for update
- Add client-side name-consistency assertions in SDK/tooling
- Watch for copy-paste between workspaces
When it happens
Trigger: PUT /kapis/tenant.kubesphere.io/v1beta1/workspaces/{workspace} where the JSON body's metadata.name differs from {workspace} (e.g. body fetched from another workspace, or name edited in a UI form).
Common situations: Copying a workspace spec and forgetting to change metadata.name; GET from workspace-A then PUT against workspace-B; renaming attempts (renames are not allowed via PUT); templating bugs where the URL uses a variable but the body is hardcoded.
Related errors
- the name of the object (%s) does not match the name on the U
- cannot obtain user info
- cannot obtain user info
- invalid Identity Provider, please ensure that the provider n
- must set %s
AI-assisted analysis of kubesphere/kubesphere@04a29b5c60 (2026-09-03).
Data as JSON: /api/errors/0c277dcff4943117.
Report an issue: GitHub.