Skip to content

Display update group in tctl inventory#54324

Merged
hugoShaka merged 2 commits intomasterfrom
hugo/tctl-inventory-updater-info
May 5, 2025
Merged

Display update group in tctl inventory#54324
hugoShaka merged 2 commits intomasterfrom
hugo/tctl-inventory-updater-info

Conversation

@hugoShaka
Copy link
Copy Markdown
Contributor

@hugoShaka hugoShaka commented Apr 25, 2025

This PR contains many small changes allowing users to see and query the instance update group using tctl inventory.

Changes contain:

  • Adding UpdateGroup to the instance filter to allow filtering based on the update group
  • Reporting the updaterr info from the hello into the InstanceSpec (the field was introduced in Move updater info proto from authclient to types #54236)
  • Adding --format support to tctl inventory status to provide an easy way to access all the fields from instance hellos when troubleshoting (set --format=json)
  • Adding Update Group to the tctl inventory list output

Part of: RFD 184

Goal (internal): https://github.com/gravitational/cloud/issues/11856

Changelog: Display the update group in tctl inventory list
Changelog: Allow to filter instances based on their update group in tctl inventory list
Changelog: Add json output format support to tctl inventory status

@hugoShaka hugoShaka requested review from sclevine and vapopov April 25, 2025 19:30
@github-actions github-actions bot added size/sm tctl tctl - Teleport admin tool labels Apr 25, 2025
@hugoShaka hugoShaka requested review from espadolini, fspmarshall and rosstimothy and removed request for gabrielcorado and kimlisa April 28, 2025 14:09
switch c.format {
case teleport.Text:
table := asciitable.MakeTable([]string{"Server ID", "Hostname", "Services", "Agent Version", "Upgrader", "Upgrader Version"})
table := asciitable.MakeTable([]string{"Server ID", "Hostname", "Services", "Agent Version", "Upgrader", "Upgrader Version", "Update Group"})
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

How wide can this table get? 😬

NewerThanVersion: vc.Normalize(c.newerThan),
ExternalUpgrader: upgrader,
NoExtUpgrader: noUpgrader,
UpdateGroup: c.updateGroup,
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

I don't think there's a good way around this without defining a new RPC (with better forwards compatibility) but keep in mind that the update group filtering will just not happen if a newer tctl ends up talking to an auth that doesn't know about this field, so maybe we should also filter the list on the client side?

@hugoShaka hugoShaka force-pushed the hugo/tctl-inventory-updater-info branch from c47affe to 9b9c160 Compare May 5, 2025 18:12
@hugoShaka hugoShaka enabled auto-merge May 5, 2025 18:12
@hugoShaka hugoShaka added this pull request to the merge queue May 5, 2025
github-merge-queue bot pushed a commit that referenced this pull request May 5, 2025
@github-merge-queue github-merge-queue bot removed this pull request from the merge queue due to failed status checks May 5, 2025
@hugoShaka hugoShaka added this pull request to the merge queue May 5, 2025
Merged via the queue into master with commit 3eb6181 May 5, 2025
43 checks passed
@hugoShaka hugoShaka deleted the hugo/tctl-inventory-updater-info branch May 5, 2025 21:00
hugoShaka added a commit that referenced this pull request Jul 18, 2025
hugoShaka added a commit that referenced this pull request Jul 24, 2025
hugoShaka added a commit that referenced this pull request Jul 25, 2025
github-merge-queue bot pushed a commit that referenced this pull request Jul 28, 2025
* Add rollout mutation functions (#52930)

* Add Trigger, Rollback, ForceDone autoupdate RPCs (#52931)

* Add Trigger, Rollback, ForceDone autoupdate RPCs

* Add all_started_groups bool + switch to group set

* fix error type

* Align semver libs (#52795)

* Convert autoupdate version handling to coreos/go-semver

* get the right version in installer endpoint + get rid of x/mod/semver

* depguard x/mod/semver

* Add nolint rules for existing x/mod/semver usages

* Add depguard explanation

* Add autoupdate trigger/mark-done/rollback commands (#52933)

* Add updater info in Hello (#53911)

* Introduce autoupdate_agent_report proto types (#54175)

* Introduce autoupdate_agent_report proto types

* Fix tests + remove delete all RPC

* Move updater info proto from authclient to types (#54236)

* Report updater info in Hello (#53938)

* Report updater info in Hello

* Add UUID to Hello

* lint

* Fix after rebase

---------

Co-authored-by: Stephen Levine <stephen.levine@goteleport.com>

* Send goodbye even when doing soft-reload (#54176)

* Send goodbye even when doing soft-reload

* Save and replay Goodbye on connect

* Add SoftReload flag to Goodbye

* SendGoodbye -> SetAndSendGoodbye

* Display update group in `tctl inventory` (#54324)

* Add autoupdate manual rollout audit events (#52934)

* Add autoupdate trigger/merk-done/rollback audit events

* Remove useless resource metadata and add groups to audit event

* Add events to web UI

* Add autoupdate_agent_report backend service (#54333)

* Add autoupdate_agent_report backend service

* Saner resource validation

* Add agent rollout cache + service + client (#54772)

* Add agent rollout cache + service + client

* fix after rebase

* add event in tests

* fix autoupdateagenmtreport event streaming

* lint

* Fix backport: slog -> logrus

* Generate autoupdate agent report periodically (#54865)

* Generate autoupdate agent report periodically

* address edoardo's feedback

* Apply suggestions from code review

Co-authored-by: Edoardo Spadolini <edoardo.spadolini@goteleport.com>

* fix proto field lookup + address feedback

* fix tests + add license

---------

Co-authored-by: Edoardo Spadolini <edoardo.spadolini@goteleport.com>

* Add omission info in autoupdate report (#55001)

* Add agent counters to autoupdate_agent_rollout proto (#55096)

* Add agent counters to autoupdate_agent_rollout proto

* int64 -> uint64

* Add reports to client and rewrite mockClient using testify (#55097)

* Add reports to client and rewrite mockClient using testify

When adding the ListAutoUpdateAgentReports() function to the Client interface
I realized that the mock client was not supporting List endpoints.
Instead of expanding the custom mock system, I rewrote the mock client to use
the standard testify/mock library.

* checkIfEmpty -> checkIfCallsWereDone

* Make halt-on-error autoupdate strategy use agent reports (#55116)

* Make half-on-error autoupdate strategy use agent reports

* Make report helpers reusable for time-based strategy

* address edoardo's feedback

* Set the agent count when reconciling time-based rollouts (#55152)

* Set the agent count when reconciling time-based rollouts

* Apply suggestions from code review

Co-authored-by: Stephen Levine <stephen.levine@goteleport.com>

---------

Co-authored-by: Stephen Levine <stephen.levine@goteleport.com>

* Fix flaky `TestServer_generateAgentVersionReport` (#56015)

* [v18] Add autoupdate agent report commands (#56495)

* Add autoupdate agent report commands

* Address feedback

* autoupdate canary support: proto messages (#56259)

* autoupdate canary support: inventory and auth primitives (#56261)

* autoupdate canary support: tctl (#56473)

* autoupdate canary support: tctl support

This commits makes `tctl autoupdate agents status` display groups in the
canary state properly.

* add `--force` flag to `tctl autoupdate agents start-update`

* autoupdate canary support: modulate proxy response (#56468)

This commit makes the TEleport Proxcy service find and pind endpoints
fetch the updater ID from the request parameters and lookup if the
requestor is a canary. If it is, the requestor will be told to update.

* autoupdate canary support: rollout controller (#56467)

* autoupdate canary support: rollout controller

This commit adds canary support to the autoupdate_agent_rollout
controller when the strategy is "halt-on-error".

* Apply suggestions from code review

* Fix backport: add inventory clock + deal with edoardo breaking everything

* Fix tests after backport

* fixup! Fix tests after backport

* fixup! fixup! Fix tests after backport

* lint authproto -> clientproto

* Fix autoupdate canary sampling for the catch-all group

* Tune the canary logic (#56926)

- Users can now specify how many canaries they want
- Instead of looking at the current group size, we rely on user input
- max canary 10 -> 5 (I have not done the max message size yet)
- fix a bug causing the start date to be reset when doing canary ->
  active

* Reliably detect update.yaml after soft reloads

* always send group in agent hello (#55071)

* Fix detection on initial install

* fix log

* Always persist new configuration

* cleanup

* fix tests

* fix tests relying on go 1.24

* fix crd snapshot tests + fix linter issue

---------

Co-authored-by: Stephen Levine <stephen.levine@goteleport.com>
Co-authored-by: Edoardo Spadolini <edoardo.spadolini@goteleport.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size/sm tctl tctl - Teleport admin tool

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants