1276 Commits

Author SHA1 Message Date
Edward Sammut Alessi
56cce45e19
chore(frontend): bump node to 24.15.0
Bump node version for frontend to 24.15.0

Signed-off-by: Edward Sammut Alessi <edward.sammutalessi@siderolabs.com>
2026-05-04 12:07:10 +02:00
Utku Ozdemir
7989c3c03b
test: fix data race in machine service mock
The read of the field was not protected by the lock, unlike all other operations, which caused a data race in CA rotation tests.

Signed-off-by: Utku Ozdemir <utku.ozdemir@siderolabs.com>
2026-05-04 00:38:57 +02:00
Artem Chernyshev
c141613d46
fix: fix the storm of PendingUpdateStatus create/destroy
Use `shouldUpgrade` bool flag when computing the config/upgrade diffs.
Otherwise any if `shouldUpgrade` gets out of sync with the condition
inside the `ClusterMachineConfigStatus` controller causes it to loop
creating and deleting pending changes.

Signed-off-by: Artem Chernyshev <artem.chernyshev@talos-systems.com>
2026-05-01 17:59:07 +03:00
Utku Ozdemir
a43407d095
feat: generate config section of helm chart values from config schema
Introduce a new small tool, `helmvaluesgen`, which runs on `make generate` to update the `config:` section in the Helm chart's `values.yaml` with the current Omni config schema.

It takes two inputs:
1. Omni config schema JSON
2. An "overrides" YAML file for the customization for the Helm chart, such as different default values ("chart defaults, different from Omni's defaults"), omission rules, and different descriptions to be included in the chart README.

Signed-off-by: Utku Ozdemir <utku.ozdemir@siderolabs.com>
2026-05-01 16:32:11 +02:00
Artem Chernyshev
0cdb5a58c8
feat: support raw bytes in the inline fields for manifests/patches
Now inline supports all three variants:
- a single inline map (backward compatibility for config patches).
- a list of inline maps
- raw bytes, that can also contain multiple documents.

`omnictl cluster template export` command was updated to export config
patches/manifests as raw bytes to ensure that multiple values are
properly supported.

Fixes: https://github.com/siderolabs/omni/issues/2683

Signed-off-by: Artem Chernyshev <artem.chernyshev@talos-systems.com>
2026-04-30 19:07:46 +03:00
Edward Sammut Alessi
14b83e1299
feat: set infra provider factory endpoint to the one configured in omni
Set infra provider factory endpoint to the one configured in Omni features state, which itself is from args/config. Expose the configured factory URL on the provider.

Signed-off-by: Edward Sammut Alessi <edward.sammutalessi@siderolabs.com>
2026-04-30 15:32:40 +02:00
Edward Sammut Alessi
efbd089ffb
feat(frontend): add qol machine updates to omni frontend
Add some QoL updates for machine management to Omni frontend.

1. Add a copy machine UUID button to the cluster machine page
2. Add a toggle between hostnames and UUIDs to the machines list page (copy will copy what it sees, preference is saved)
3. Add kernel args tabs to machine and cluster machine pages, to allow editing kernel args. The "Update kernel args" button from machines list dropdown menu will now redirect to here instead of opening a modal.

Signed-off-by: Edward Sammut Alessi <edward.sammutalessi@siderolabs.com>
2026-04-30 14:06:57 +02:00
Utku Ozdemir
2fe716d2c9
chore: enable go linting for build tags, fix linting errors
Add the build tags we were using, `integration` and `tools`, to be included in the linting/formatting of  golangci-lint.

Rename the build tag `tools` to `sidero.tools` to avoid colliding with the same named build tag in `github.com/johannesboyne/gofakes3` package - otherwise the dependency was failing to compile due to having multiple package names in the same package.

Fix all the linting errors surfaced by this enablement.

Also, temporarily re-enabled `nolintlint` to find the nolint directives which were no longer necessary and removed them.

Signed-off-by: Utku Ozdemir <utku.ozdemir@siderolabs.com>
2026-04-29 21:18:45 +02:00
Edward Sammut Alessi
718d61a6b4
chore(frontend): bump dependencies
Bump frontend dependencies

Signed-off-by: Edward Sammut Alessi <edward.sammutalessi@siderolabs.com>
2026-04-29 18:02:02 +02:00
Edward Sammut Alessi
d3592671ec
feat: download talosctl directly from factory
Download talosctl binaries from factory instead of Github

Signed-off-by: Edward Sammut Alessi <edward.sammutalessi@siderolabs.com>
2026-04-29 17:06:25 +02:00
Edward Sammut Alessi
b2671d08d0
refactor(frontend): create downloadfile helper
Create a downloadFile helper to stop repeating the anchor link creation logic

Signed-off-by: Edward Sammut Alessi <edward.sammutalessi@siderolabs.com>
2026-04-29 16:52:15 +02:00
Edward Sammut Alessi
dc9baca82f
refactor(frontend): refactor downloadtalosctl modal to new modal system
Refactor the DownloadTalosctl modal to the new Modal system.

Signed-off-by: Edward Sammut Alessi <edward.sammutalessi@siderolabs.com>
2026-04-29 16:52:14 +02:00
Oguz Kilcan
06d8140d78
feat: add join token/talos version placeholders in installation media
InstallationMediaConfig can now use empty strings for talosVersion and joinToken, which resolve to the current stable version and default token at download time.

The create wizard adds "Automatic" options to the version and token dropdowns, and the download modal shows version/token/arch pickers for all presets.

Co-authored-by: Edward Sammut Alessi <edward.sammutalessi@siderolabs.com>
Signed-off-by: Oguz Kilcan <oguz.kilcan@siderolabs.com>
Signed-off-by: Edward Sammut Alessi <edward.sammutalessi@siderolabs.com>
2026-04-29 14:34:30 +02:00
Artem Chernyshev
5f4b97616c
fix: bring back election campaign resign code in the etcd state
And also try to avoid the race in the election campaign.

Signed-off-by: Artem Chernyshev <artem.chernyshev@talos-systems.com>
2026-04-28 19:57:01 +03:00
Utku Ozdemir
03c4e1d9ba
fix: stop logging Kubernetes read checks
Dry-run requests and permission checks no longer add noisy Kubernetes access entries to the audit log. Kubernetes writes continue to be recorded.

Fixes: siderolabs/omni#2745
Signed-off-by: Utku Ozdemir <utku.ozdemir@siderolabs.com>
2026-04-27 23:31:30 +02:00
Artem Chernyshev
dc3b974d0d
fix: remove workload proxy deployment when disabled on the account
Fixes: #2656

Signed-off-by: Artem Chernyshev <artem.chernyshev@talos-systems.com>
2026-04-27 14:33:32 +03:00
Artem Chernyshev
65af568b34
fix: skip allocating nodes for deleted/tearing down MachineRequests
Without the fix `MachineRequestStatus` cleanup controller deletes the
`MachineSetNode` and the `MachineSetNode` controller might allocate it
back immediately.

Signed-off-by: Artem Chernyshev <artem.chernyshev@talos-systems.com>
2026-04-24 20:35:12 +03:00
Utku Ozdemir
f9dd849153
feat: introduce powered off machine state and power on support
Machines that were shutting down and then disconnect are now shown as "Powered Off" in the UI instead of being stuck in "Shutting Down" with a greyed-out unreachable state.

For machines managed by a static infra provider, shutting down a machine now prevents the provider from automatically powering it back on due to cluster allocation. The provider honors the shutdown request until the machine goes through a deallocation cycle, at which point the request is considered stale.

Intentionally powered-off machines are also excluded from the "disconnected machines" list on the frontend when destroying a cluster, to avoid them being force-destroyed.

The shutdown modal in the frontend now calls a new management API endpoint instead of the Talos API directly. The CLI gains \`omnictl machine shutdown\` and \`omnictl machine power-on\` commands.

Closes siderolabs/omni#1634.
Part of siderolabs/omni-infra-provider-bare-metal#103.

Signed-off-by: Utku Ozdemir <utku.ozdemir@siderolabs.com>
2026-04-24 13:57:12 +02:00
Edward Sammut Alessi
921389a59c
fix(frontend): fix eula handling to prevent being stuck on /eula
If initial EULA request fails, we will show AppUnavailable instead of sending to /eula. If you navigate directly /eula and its already accepted, navigate away to the Home page.

Signed-off-by: Edward Sammut Alessi <edward.sammutalessi@siderolabs.com>
2026-04-24 09:38:00 +02:00
Artem Chernyshev
725f41d4ee
fix: properly display service account expiration time in the UI
The old code was incorrectly picking the public key.

Fixes: https://github.com/siderolabs/omni/issues/2717

Signed-off-by: Artem Chernyshev <artem.chernyshev@talos-systems.com>
2026-04-23 21:19:54 +03:00
Edward Sammut Alessi
c5a4310570
feat(frontend): add support modal to omni
Add a support modal to Omni, providing links to github issues, support, docs, community links, and office hours.

Signed-off-by: Edward Sammut Alessi <edward.sammutalessi@siderolabs.com>
2026-04-23 15:46:42 +02:00
Edward Sammut Alessi
66383890b8
feat(frontend): show disks and devices in machines/machine page
Show disks and devices for machines in the machines/machine page, even for maintenance mode machines.

Signed-off-by: Edward Sammut Alessi <edward.sammutalessi@siderolabs.com>
2026-04-23 15:21:01 +02:00
Edward Sammut Alessi
1e31079e4e
fix(frontend): fix indeterminate state for update extensions modal
Fix the indeterminate state for UpdateExtensions modal. It was never setting up the watch, so the information was not available. As part of this, refactored it to useResourceWatch and the new modal system and created stories for it. Also started moving refactored modals from views/modals into components/modals, as they are more of a component than a view anyway.

Signed-off-by: Edward Sammut Alessi <edward.sammutalessi@siderolabs.com>
2026-04-23 14:56:36 +02:00
Edward Sammut Alessi
6d7e4f454e
feat(frontend): allow quickly switching between cluster machines
Allow quickly switching between cluster machines on the cluster machine page via a select dropdown. Reactivity was not working on most of the pages due to getContext only being checked once in setup, so had to fix a lot of things there.

Signed-off-by: Edward Sammut Alessi <edward.sammutalessi@siderolabs.com>
2026-04-23 13:26:04 +02:00
Edward Sammut Alessi
c98b1187ea
fix(frontend): clear page state when keys are cleared
After clearing keys, use location.replace instead of router.replace to do a full page reload to clear any invalid key related state. This addresses an issue where user might see a blank screen if something breaks with their keys whilst still having a valid auth session. Usually an invalid auth session triggers a redirect to the auth provider, causing the same state reset. This also fixes a flakey test in e2e-talemu suite which was suffering from this.

Signed-off-by: Edward Sammut Alessi <edward.sammutalessi@siderolabs.com>
2026-04-22 12:59:18 +02:00
Edward Sammut Alessi
f89955b43d
refactor(frontend): remove last use of <watch> component
Remove the last usage of the <Watch> component.

Signed-off-by: Edward Sammut Alessi <edward.sammutalessi@siderolabs.com>
2026-04-22 12:40:58 +02:00
Edward Sammut Alessi
be67f710f8
feat: allow reader access to join token
Explicitly allow readers to read join tokens

Signed-off-by: Edward Sammut Alessi <edward.sammutalessi@siderolabs.com>
2026-04-21 16:28:32 +02:00
Oguz Kilcan
f221168823
chore: bump deps
Bump dependencies

Signed-off-by: Oguz Kilcan <oguz.kilcan@siderolabs.com>
2026-04-21 10:20:29 +02:00
Oguz Kilcan
475e3660d7
feat: add Talos version end-of-support notifications and metrics
* Track machines running Talos versions approaching or past end of support relative to MinTalosVersion.
* Replace the config-driven non-ImageFactory deprecation notification with hardcoded constants and add two new notifications (approaching end of support, end of support reached) with corresponding Prometheus metrics.
* Add startup validation hooks (currently disabled) that will refuse to start when unsupported machines are detected.
* Fix frontend notification namespace from Default to Ephemeral.

Signed-off-by: Oguz Kilcan <oguz.kilcan@siderolabs.com>
2026-04-20 17:11:49 +02:00
Justin Garrison
302e9175a3
feat: comment serviceaccount create output
The plain text output makes it less friendly to automation and saving to
.env files because it's interpreted by the shell.

Signed-off-by: Justin Garrison <justin.garrison@siderolabs.com>
2026-04-20 16:35:27 +02:00
Noel Georgi
967c229e1d
chore: rekres to update to new kres schema
This also allows enforcecontexts per branch.

Signed-off-by: Noel Georgi <git@frezbo.dev>
2026-04-20 18:08:29 +05:30
Edward Sammut Alessi
edbb621aa2
chore: bump stripe-go to v85
Bump stripe-go to v85 and use their modern syntax.

Signed-off-by: Edward Sammut Alessi <edward.sammutalessi@siderolabs.com>
2026-04-20 12:31:58 +02:00
Edward Sammut Alessi
cc0adefcad
fix(frontend): select default join token in installation media wizard
Select the default join token in the installation media wizard. Also bump tsconfig to ES2023 (which is baseline widely available) to get access to .toSorted().

Signed-off-by: Edward Sammut Alessi <edward.sammutalessi@siderolabs.com>
2026-04-20 09:41:14 +02:00
Oguz Kilcan
0987fa9e8f
chore: prepare omni with talos v1.13.0-rc
Prepare omni for upcoming talos version 1.13

Signed-off-by: Oguz Kilcan <oguz.kilcan@siderolabs.com>
2026-04-17 16:58:24 +02:00
Oguz Kilcan
73a06f8921
chore: bump talos machinery
Bump talos machinery to v1.13.0-rc.0

Signed-off-by: Oguz Kilcan <oguz.kilcan@siderolabs.com>
2026-04-17 14:42:55 +02:00
Artem Chernyshev
78544a8557
feat: restrict directories for included files in the cluster templates
By default only allow to include files from the same directory where the
template file lives.
This is to prevent malicious cluster templates that include something
like `/etc/passwd`.
Fixes: https://github.com/siderolabs/omni/issues/2590

Signed-off-by: Artem Chernyshev <artem.chernyshev@talos-systems.com>
2026-04-16 19:28:33 +03:00
Edward Sammut Alessi
a3fd0b1c4c
feat(frontend): allow re-saving omni support bundle
After download completes on the Omni support bundle, the user may click save again to save the bundle again without having to initiate the download again. This helps incase you accidentally click out of the first save, or deleted it, or anything like that. If you want a fresh bundle, you can still get that when you close & re-open the modal.

Signed-off-by: Edward Sammut Alessi <edward.sammutalessi@siderolabs.com>
2026-04-16 15:19:52 +02:00
Utku Ozdemir
5c4a6b5766
feat: remove image factory proxying
Omni now rejects legacy installation media download requests with a message asking users to upgrade omnictl instead of proxying them to the Talos image factory.

Current omnictl versions continue to download installation media directly from the Talos image factory.

Signed-off-by: Utku Ozdemir <utku.ozdemir@siderolabs.com>
2026-04-16 14:26:42 +02:00
Edward Sammut Alessi
dc5e289c1f
feat(frontend): show notifications in the frontend
Show Omni notifications in UI as a dismissable banner

Signed-off-by: Edward Sammut Alessi <edward.sammutalessi@siderolabs.com>
2026-04-15 18:42:20 +02:00
Edward Sammut Alessi
9fd6e9e14b
fix(frontend): open external eula link in a new tab
Open external EULA link in a new tab with _blank

Signed-off-by: Edward Sammut Alessi <edward.sammutalessi@siderolabs.com>
2026-04-15 16:57:05 +02:00
Oguz Kilcan
8c23f72e07
chore: bump deps
Bump dependency go-talos-support

Signed-off-by: Oguz Kilcan <oguz.kilcan@siderolabs.com>
2026-04-15 15:33:10 +02:00
Artem Chernyshev
2e9d00a661
chore: make Omni use join tokens mode legacyAllowed by default
Fixes: https://github.com/siderolabs/omni/issues/1591

Signed-off-by: Artem Chernyshev <artem.chernyshev@talos-systems.com>
2026-04-15 15:08:28 +03:00
Edward Sammut Alessi
488b020b2e
feat: add more filters to audit logs
Add multiple new filters to audit logs. Through the UI, there will be a generic search box and the ability to sort columns. Through the CLI, there will be support for the same plus also direct filters for event_type, resource_type, resource_id, cluster_id, and actor.

Signed-off-by: Edward Sammut Alessi <edward.sammutalessi@siderolabs.com>
2026-04-15 11:03:54 +02:00
Utku Ozdemir
590ea2e370
feat: add per-key creation and last-active tracking for service accounts
Add creation timestamps and per-key last-active tracking to service account key listings. The `omnictl serviceaccount list` command now shows KEY CREATED and KEY LAST ACTIVE columns for each public key, alongside the existing SA-level LAST ACTIVE.

A new PublicKeyLastActive resource tracks per-key usage. The activity interceptor now extracts the signing key fingerprint from the auth context and records last-used timestamps per key, with independent debouncing. The ServiceAccountStatusController aggregates this data into the service account status for display.

A cleanup controller removes PublicKeyLastActive resources when their corresponding public key is torn down.

Closes: siderolabs/omni#2661
Signed-off-by: Utku Ozdemir <utku.ozdemir@siderolabs.com>
2026-04-14 21:12:30 +02:00
Artem Chernyshev
44b0d636e3
chore: bump deps
Also rekres.

Signed-off-by: Artem Chernyshev <artem.chernyshev@talos-systems.com>
2026-04-14 14:54:53 +03:00
Edward Sammut Alessi
186f02b45f
chore(frontend): bump frontend dependencies
Bump all frontend dependencies

Signed-off-by: Edward Sammut Alessi <edward.sammutalessi@siderolabs.com>
2026-04-14 11:06:46 +02:00
Edward Sammut Alessi
572162547a
feat(frontend): update talos version text on installation media wizard
Update the text shown when selecting the Talos version on the Installation Media wizard to be the latest recommended version, rather than the latest.

Signed-off-by: Edward Sammut Alessi <edward.sammutalessi@siderolabs.com>
2026-04-14 09:02:44 +02:00
Edward Sammut Alessi
cad3713552
feat: implement eula guard for omni
Implement a guard for Omni to prevent usage until users accept an EULA through the UI or a startup flag.

Signed-off-by: Edward Sammut Alessi <edward.sammutalessi@siderolabs.com>
2026-04-13 16:49:51 +02:00
Oguz Kilcan
0d92cc0d0f
feat: allow force destroying machine requests
Machine requests are now created without a controller owner, allowing operators and admins to teardown stuck or unwanted requests directly. The controller replaces destroyed requests automatically to maintain the desired machine count. Includes a migration to clear ownership on existing requests.

Signed-off-by: Oguz Kilcan <oguz.kilcan@siderolabs.com>
2026-04-13 10:35:35 +02:00
Justin Garrison
507becf140
feat: toggle info buttons if already opened
Changes the behavior of info buttons to close the panel if it's already
open

Signed-off-by: Justin Garrison <justin.garrison@siderolabs.com>
2026-04-13 09:52:00 +02:00