code: func NamespaceKeyFunc(ctx context.Context, prefix string, name string) (string, error) {
  	key := NamespaceKeyRootFunc(ctx, prefix)
  	ns, ok := genericapirequest.NamespaceFrom(ctx)
  	if !ok || len(ns) == 0 {
  		return "", kubeerr.NewBadRequest("Namespace parameter required.")
  	}
  	if len(name) == 0 {
  		return "", kubeerr.NewBadRequest("Name parameter required.")
  	}
  	if msgs := path.IsValidPathSegmentName(name); len(msgs) != 0 {
  		return "", kubeerr.NewBadRequest(fmt.Sprintf("Name parameter invalid: %q: %s", name, strings.Join(msgs, ";")))
  	}
  	key = key + "/" + name
  	return key, nil
  }
docs: // NamespaceKeyFunc is the default function for constructing storage paths to
  // a resource relative to the given prefix enforcing namespace rules. If the
  // context does not contain a namespace, it errors.