Skip to content

Deprecate URLs with "team" and "query" terminology#40520

Merged
sgress454 merged 5 commits intomainfrom
sgress454/deprecate-urls
Feb 26, 2026
Merged

Deprecate URLs with "team" and "query" terminology#40520
sgress454 merged 5 commits intomainfrom
sgress454/deprecate-urls

Conversation

@sgress454
Copy link
Copy Markdown
Contributor

@sgress454 sgress454 commented Feb 25, 2026

Related issue: Resolves #40519

Details

This PR adds a new system for registering deprecated URLs separately from the main URLs (i.e. not clogging up handler.go with a bunch of .WithAltPaths() or similar. It uses a registry that's shared between all the different endpointer, which is then iterated over and a new handler is created for the deprecated endpoint which stores info about the deprecation (the old and new URLs) in the context. A new middleware looks for that context info and, if found, logs a deprecation warning (if the topic is enabled).

Checklist for submitter

If some of the following don't apply, delete the relevant line.

  • Changes file added for user-visible changes in changes/, orbit/changes/ or ee/fleetd-chrome/changes.
    See Changes files for more information.
    no need for a changelog as we are not logging the warnings by default

Testing

  • Added/updated automated tests
  • QA'd all new/changed functionality manually
  • Verified that going to /teams with --logging_enable_topics=deprecated-field-names got me this log:
deprecated_path=/api/_version_/fleet/teams deprecation_warning="API `/api/_version_/fleet/teams` is deprecated, use `/api/_version_/fleet/fleets` instead
  • Going to /fleets with that flag enabled resulted in no deprecation log
  • Going to /teams without the flag enabled resulted in no deprecation log

@sgress454 sgress454 requested a review from a team as a code owner February 25, 2026 19:04
Comment thread server/service/handler.go
kithttp.ServerBefore(
kithttp.PopulateRequestContext, // populate the request context with common fields
auth.SetRequestsContexts(svc),
endpointer.LogDeprecatedPathAlias, // log deprecation warning for deprecated URL path aliases
Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The reason we need this new middleware, vs. just adding the logging code directly in the deprecated path's wrappedHandler, is that we don't have a logging context at the time that the handler is called (the context is created in SetRequestsContexts). We could have the wrapper create its own context and have SetRequestsContexts use that one if it exists, but I wasn't comfortable messing around with how our log context gets instantiated. As it is, this middleware is very light -- if the log topic is disabled or there's no deprecation info in the context, it bails.

@codecov
Copy link
Copy Markdown

codecov Bot commented Feb 25, 2026

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 66.29%. Comparing base (6dd1848) to head (ec79b26).
⚠️ Report is 39 commits behind head on main.

Additional details and impacted files
@@            Coverage Diff             @@
##             main   #40520      +/-   ##
==========================================
+ Coverage   66.27%   66.29%   +0.02%     
==========================================
  Files        2461     2465       +4     
  Lines      197427   197492      +65     
  Branches     8618     8618              
==========================================
+ Hits       130842   130926      +84     
+ Misses      54740    54723      -17     
+ Partials    11845    11843       -2     
Flag Coverage Δ
backend 68.17% <100.00%> (+0.02%) ⬆️

Flags with carried forward coverage won't be shown. Click here to find out more.

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

@sgress454 sgress454 merged commit 6476123 into main Feb 26, 2026
49 of 50 checks passed
@sgress454 sgress454 deleted the sgress454/deprecate-urls branch February 26, 2026 04:20
sgress454 added a commit that referenced this pull request Feb 26, 2026
<!-- Add the related story/sub-task/bug number, like Resolves #123, or
remove if NA -->
**Related issue:** Resolves #40519

# Details

This PR adds a new system for registering deprecated URLs separately
from the main URLs (i.e. not clogging up `handler.go` with a bunch of
`.WithAltPaths()` or similar. It uses a registry that's shared between
all the different endpointer, which is then iterated over and a new
handler is created for the deprecated endpoint which stores info about
the deprecation (the old and new URLs) in the context. A new middleware
looks for that context info and, if found, logs a deprecation warning
(if the topic is enabled).

# Checklist for submitter

If some of the following don't apply, delete the relevant line.

- [ ] Changes file added for user-visible changes in `changes/`,
`orbit/changes/` or `ee/fleetd-chrome/changes`.
See [Changes
files](https://github.com/fleetdm/fleet/blob/main/docs/Contributing/guides/committing-changes.md#changes-files)
for more information.
no need for a changelog as we are not logging the warnings by default

## Testing

- [X] Added/updated automated tests
- [X] QA'd all new/changed functionality manually

* Verified that going to `/teams` with
`--logging_enable_topics=deprecated-field-names` got me this log:
```
deprecated_path=/api/_version_/fleet/teams deprecation_warning="API `/api/_version_/fleet/teams` is deprecated, use `/api/_version_/fleet/fleets` instead
```
* Going to `/fleets` with that flag enabled resulted in no deprecation
log
* Going to `/teams` _without_ the flag enabled resulted in no
deprecation log
iansltx pushed a commit that referenced this pull request Feb 26, 2026
@georgekarrv georgekarrv mentioned this pull request Mar 3, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Add deprecation warnings for URLs using "team" and "query"

2 participants