42508 Rename abm to ab in API (#46657)
<!-- Add the related story/sub-task/bug number, like Resolves #123, or remove if NA --> **Related issue:** Resolves #42508 Renames abm/apple_business_manager to ab/apple_business in API and fleetctl. Uses existing renameto logic with a slight twist: added "inline" option to handle cases particularly where a single object tree has renames in multiple versions so that we don't break backwards compatibiility since the default behavior when you have multi-level renames is a new/old split at the top level # Checklist for submitter If some of the following don't apply, delete the relevant line. - [x] 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. - [x] Input data is properly validated, `SELECT *` is avoided, SQL injection is prevented (using placeholders for values in statements), JS inline code is prevented especially for url redirects, and untrusted data interpolated into shell scripts/commands is validated against shell metacharacters. - [x] Timeouts are implemented and retries are limited to avoid infinite loops - [x] If paths of existing endpoints are modified without backwards compatibility, checked the frontend/CLI for any necessary changes ## Testing - [x] Added/updated automated tests - [x] Where appropriate, [automated tests simulate multiple hosts and test for host isolation](https://github.com/fleetdm/fleet/blob/main/docs/Contributing/reference/patterns-backend.md#unit-testing) (updates to one hosts's records do not affect another) - [x] QA'd all new/changed functionality manually <!-- This is an auto-generated comment: release notes by coderabbit.ai --> ## Summary by CodeRabbit * **New Features** * Canonical Apple Business (AB) API endpoints and CLI: /api/v1/fleet/ab_tokens, /api/v1/fleet/mdm/apple/ab_public_key, plus new fleetctl get mdm-ab and fleetctl generate mdm-ab * New GitOps/config key: mdm.apple_business * Admin UI updated to show Apple Business tokens with fleet-based associations and updated labels * **Deprecations** * Legacy ABM endpoints, CLI aliases, and config keys remain supported but emit deprecation warnings pointing to the new AB equivalents <!-- end of auto-generated comment: release notes by coderabbit.ai -->
This commit is contained in:
@@ -28,6 +28,15 @@ func (e *AliasConflictError) Error() string {
|
||||
type AliasRule struct {
|
||||
OldKey string
|
||||
NewKey string
|
||||
// Inline opts a renamed container into "merged" response duplication:
|
||||
// instead of the default clean split (the old key holds an all-old subtree
|
||||
// and the new key an all-new one), the old key's subtree also carries the
|
||||
// new-named copies of any nested renamed containers — so both names appear
|
||||
// together on the same object. Set via the `,inline` option on the
|
||||
// `renameto` struct tag (e.g. `renameto:"ab_tokens,inline"`). It only
|
||||
// affects response encoding (DuplicateJSONKeys); request decoding ignores
|
||||
// it.
|
||||
Inline bool
|
||||
}
|
||||
|
||||
// JSONKeyRewriteReader is a streaming io.Reader that handles
|
||||
@@ -153,6 +162,8 @@ func RewriteDeprecatedKeys(data []byte, rules []AliasRule) ([]byte, map[string]s
|
||||
func RewriteOldToNewKeys(data []byte, rules []AliasRule) ([]byte, error) {
|
||||
reversed := make([]AliasRule, len(rules))
|
||||
for i, r := range rules {
|
||||
// Inline is intentionally not preserved: this only renames keys, it
|
||||
// never duplicates them.
|
||||
reversed[i] = AliasRule{OldKey: r.NewKey, NewKey: r.OldKey}
|
||||
}
|
||||
result, _, err := RewriteDeprecatedKeys(data, reversed)
|
||||
|
||||
Reference in New Issue
Block a user