Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package talosctl for openSUSE:Factory checked in at 2025-05-20 09:36:03 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/talosctl (Old) and /work/SRC/openSUSE:Factory/.talosctl.new.30101 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "talosctl" Tue May 20 09:36:03 2025 rev:28 rq:1278105 version:1.10.2 Changes: -------- --- /work/SRC/openSUSE:Factory/talosctl/talosctl.changes 2025-05-07 19:22:12.833598457 +0200 +++ /work/SRC/openSUSE:Factory/.talosctl.new.30101/talosctl.changes 2025-05-20 09:38:02.721233841 +0200 @@ -1,0 +2,7 @@ +Sat May 17 07:13:16 UTC 2025 - Johannes Kastl <[email protected]> + +- update to 1.10.2: + https://github.com/siderolabs/talos/releases/tag/v1.10.2 + * no CLI-related changes in the Changelog + +------------------------------------------------------------------- Old: ---- talosctl-1.10.1.obscpio New: ---- talosctl-1.10.2.obscpio ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ talosctl.spec ++++++ --- /var/tmp/diff_new_pack.j42PYv/_old 2025-05-20 09:38:04.225299433 +0200 +++ /var/tmp/diff_new_pack.j42PYv/_new 2025-05-20 09:38:04.229299608 +0200 @@ -17,7 +17,7 @@ Name: talosctl -Version: 1.10.1 +Version: 1.10.2 Release: 0 Summary: CLI to interact with Talos Linux License: MPL-2.0 ++++++ _service ++++++ --- /var/tmp/diff_new_pack.j42PYv/_old 2025-05-20 09:38:04.269301352 +0200 +++ /var/tmp/diff_new_pack.j42PYv/_new 2025-05-20 09:38:04.273301527 +0200 @@ -4,7 +4,7 @@ <param name="scm">git</param> <param name="exclude">.git</param> <param name="exclude">go.work</param> - <param name="revision">v1.10.1</param> + <param name="revision">v1.10.2</param> <param name="match-tag">v*</param> <param name="versionformat">@PARENT_TAG@</param> <param name="versionrewrite-pattern">v(.*)</param> ++++++ talosctl-1.10.1.obscpio -> talosctl-1.10.2.obscpio ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/talosctl-1.10.1/.kres.yaml new/talosctl-1.10.2/.kres.yaml --- old/talosctl-1.10.1/.kres.yaml 2025-05-07 12:10:36.000000000 +0200 +++ new/talosctl-1.10.2/.kres.yaml 2025-05-16 16:04:24.000000000 +0200 @@ -9,13 +9,14 @@ config: |- creation_rules: - age: age1xrpa9ujxxcj2u2gzfrzv8mxak4rts94a6y60ypurv6rs5cpr4e4sg95f0k - # order: Andrey, Noel, Artem, Utku, Dmitriy + # order: Andrey, Noel, Artem, Utku, Tim, Andy pgp: >- 15D5721F5F5BAF121495363EFE042E3D4085A811, CC51116A94490FA6FB3C18EB2401FCAE863A06CA, 4919F560F0D35F80CF382D76E084A2DF1143C14D, 11177A43C6E3752E682AC690DBD13117B0A14E93, - AA5213AF261C1977AF38B03A94B473337258BFD5 + 5D7964FF2DB426ACB3C3505AA2A702DD5B689F45, + E77ED9F8451E10BD242D07415444881046F92733 --- kind: common.Repository spec: diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/talosctl-1.10.1/.secrets.yaml new/talosctl-1.10.2/.secrets.yaml --- old/talosctl-1.10.1/.secrets.yaml 2025-05-07 12:10:36.000000000 +0200 +++ new/talosctl-1.10.2/.secrets.yaml 2025-05-16 16:04:24.000000000 +0200 @@ -1,6 +1,6 @@ secrets: - AWS_ACCESS_KEY_ID: ENC[AES256_GCM,data:AeXmU6IET6Mu1m7RrGbUxKYfeGw=,iv:ivTCvzsvlMDeRi1Xo+Xig+q/MFjinRT25oTQ4dTpD5w=,tag:ZgeWJ9306rFP2QCfn13XEQ==,type:str] - AWS_SECRET_ACCESS_KEY: ENC[AES256_GCM,data:jOYsF4j5MuwJnUDW+m2TQxCaf1DOH+6QeAwtkBI2UKSCepG0ptHuzw==,iv:bYHZmQZly0S0fpRTQ6VwbafDYxH18jmfn6T/0/KQuqQ=,tag:55xc/fyBbb96QYzlohkZ+A==,type:str] + AWS_ACCESS_KEY_ID: ENC[AES256_GCM,data:WHaM6pwvIE3K619sS1o1eXGMZys=,iv:xsVmRsi682Y9UJfokxoQZomlztyMGh5z0cJOltYOgXk=,tag:kPd9IICZ5PO+iK/gA5D+Ww==,type:str] + AWS_SECRET_ACCESS_KEY: ENC[AES256_GCM,data:2Uh2LDkjJoS0/wB2eboeGq6xdb9jIi4D5D7yxGvPE4h+DH1rl/a2DA==,iv:804kZ8I2DtNL1NR4171WClJElaQgRPFKSgIKzAZHCHQ=,tag:Mp9bZVP3cMGA+UeKRIYqiA==,type:str] AWS_DEFAULT_REGION: ENC[AES256_GCM,data:Q7KZm7eenYFn,iv:VuzTTfAHe9FOTcqrGiJU9qdNixTxszm23rSXuNDB3cA=,tag:eGbIm8M/1Lsl0aoa9NanOQ==,type:str] AZURE_SUBSCRIPTION_ID: ENC[AES256_GCM,data:vSY8xRgtR/ZGaztRyKUZsPUfFOJF2Nn5Zj8uO4q4Xm/uMKHA,iv:gImkSQLPnK2lDs8BpKP/y5qtYUTQREBXPR+LiUz8RQU=,tag:CVeHJ5YOz6BW8M7JDgQHYQ==,type:str] AZURE_CLIENT_ID: ENC[AES256_GCM,data:sr2EhYwKjlsHYatqEoDXcm3yp5W8kzLyU4wpUPVvIwquxfM/,iv:ZMqoaG+F9JCfpUUbH6S0vvpwUmrfbCNpv4EJzFkb7Ng=,tag:RN5psxUWFa0SHroi4iqPHQ==,type:str] @@ -9,79 +9,86 @@ GOOGLE_PROJECT_ID: ENC[AES256_GCM,data:egcG5hIa5aq6tSRjhA==,iv:g/6pkcSJIQNNgoon6X+6DH2JaQgLKfTDpPUNFjlJ6Xg=,tag:ygF0I8bLRRbj2RdogQqxmw==,type:str] GOOGLE_CREDENTIALS: ENC[AES256_GCM,data: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,iv:nLXpwEqTJaQnZlE0CiQl+hWlBIJGSa8tEUebXpkMWec=,tag:MZ/FJeksYkqCsLaELJDq0A==,type:str] sops: - kms: [] - gcp_kms: [] - azure_kv: [] - hc_vault: [] age: - recipient: age1xrpa9ujxxcj2u2gzfrzv8mxak4rts94a6y60ypurv6rs5cpr4e4sg95f0k enc: | -----BEGIN AGE ENCRYPTED FILE----- - YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBrcFdwc0JTcGJISmlEYVpH - ajJmOXUybkJaeWpBVzdaZjExcmRpUTBwVlNvClZMZzNhc3g1bVVqd1YvWlZOUGIw - dm04WnZLVUV2dzBsM0xISm9Kc1FGNlEKLS0tIG4xSUJvUHloTUNLZGJUbjhKYmI2 - aGRDNzBvb09ZMnFXYjQyQ01VT3JWTkUKlxoDwPBcNAeXTy+qGg7QI7mZAV7bKEWT - XGqFTGipHlZ3fLG8dqlSPGXVmy3rSyCkKJgvgbQNut4UMZtZSjXe5A== + YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBCa25HZSt1b05HTkxoWU41 + anB3cm9MWGdRZkNhNENOd2RpSXdMS3ZKMjNVCkxDVEZqQ3U2YnlDdk85V29zQTdw + bUZOWnJPUFFZeS8yWmlaWjcxQzNwUGMKLS0tIGdydkVBbXdrQnNMejJZMjN5VS9r + TnhVWjdiWTFjN1RDTjVJVm9NNFl2TU0KAYNYtgdxBjEBJYRtT4dyISPPP8U0yXBn + zTKgwZePoa62YO1hM/yweMxsmdWxLg1yI4oVWltGwuIgd+WNOQivHQ== -----END AGE ENCRYPTED FILE----- - lastmodified: "2024-12-26T15:24:43Z" - mac: ENC[AES256_GCM,data:0y4Td5B6y5/GfTUSokDMQkWGHvcdw128nYjcBOheIm+5vcDRvK28Rexjk230bk/pgzFGPgnR81wsEdejHAPGLQ1Tcr7wQpJCyG/hikfSnzgjJYZ4Pfne1aZp6vav860oSzrUTJOmAEB/IZy5BojKUXDSnreo4+qbSFMtUfh2xPo=,iv:LA+wn+dkgZYa1+eP5TChaAW2+yQVOc0ZCrbuRW54eU0=,tag:u0XiF5Fi0lUAPS02Vis2Ug==,type:str] + lastmodified: "2025-05-13T15:31:16Z" + mac: ENC[AES256_GCM,data:rdcuqKgDUWYfwiXwfmZ4LQetBqLcxg4HVCQnAe6+66SlTRlk2tmfTWkkN+4d7mPlL2AvXFxLHT327kDoNQMg4lDImchLvmZLDXgyfxB9lqtSM0kHadNqQF0Vq/HhhXdg0dt1HxO0NUY/zplOhy/uBNwIiFzxNjIbj6hE5XOM6uw=,iv:YSfddml3V5PRWQLwcKYDjB8on8sUxEGd3Qqh1oSiuOg=,tag:mEwzKW19cT/9rXcXvJ2t2A==,type:str] pgp: - - created_at: "2024-12-26T15:24:19Z" + - created_at: "2025-05-13T14:07:57Z" enc: |- -----BEGIN PGP MESSAGE----- - hF4D/dYBJRlWfQISAQdAhMxf2ufyvBjHsiYgVmxfyhpVjXIkAWOBPF0V2hTBchIw - ty3hraRX8sRSyH9LBzO33xzsXYQH1XdynPy/xUSvSJ614GhOerDaDB2xKdLKhEaZ - 0l4BiT6s981bohkSBzxP6pqQc1EPsiXHt7VWdegq8c4egnluANr5iXcN0xuIb487 - HueNPaKXK6ZBF9QP+09tSNP6aAenejleCUHit2oM7afYIOy56UAi5Y3wMpIPy/zB - =d88N + hF4D/dYBJRlWfQISAQdAgHuuKQrCedfoxAHg5zxM6E0s11EzwU0SXbu8ETcFFyIw + Q1EDd0T/ZW4VnjIDto8kUC0KMtUvrvR1s3FCG9mx2ZKMvIXwTHqMkLomjaXRHn4v + 0l4BrQKkyX5Bm4mCzg8KC2e+JsvNdwNnkMJQHhU45q5TgBDV9FTA7Dri5IpNYt1L + AyGgUis+oRy4LBIN2vtjr5mV8nN71yWo6fpP0WsAh+ZHMumBiFc2ZklC6u5DIz/F + =M1T4 -----END PGP MESSAGE----- fp: 15D5721F5F5BAF121495363EFE042E3D4085A811 - - created_at: "2024-12-26T15:24:19Z" + - created_at: "2025-05-13T14:07:57Z" enc: |- -----BEGIN PGP MESSAGE----- - hF4D+EORkHurkvgSAQdATrXte4QAtZXgF8VY/Kfjqp243m4fj9CpJOf2GKbO+x0w - xmVbY3h0iQogyvkYp3Us09qcYH5FsISkjxxIIIs4YB74kOwW6MvW4+BMfsnJUTzW - 0l4BHzdtU4m8JGqXOeP8C2BF0U22xaYGZMPPsextok3GjDNgNec1/4w7liWDehw8 - ORJ8z+15TxHyqoUnt4PWer5LOtE12f+MKGmDeOVxep/lSzZxrNycZCSLgaG5Cgdv - =BgJM + hF4D+EORkHurkvgSAQdAQpNEHt3PLkCDNl4vym+srqWPglF8+UG8DL/XPRXgh0Uw + SlMoGpu6qinl5bPFSJKbZnuYKj8dWtWoFfK9c1xURgbaqd3mckjbofI/5BrqPJJC + 0l4BeyS+LrRZsFr0Ivyh/bI/0NTAw4WjSup6cQKO88XH+Q3Rhm6Kdzv57ZzIMpDd + 0gAgFTL7uGz4at5VhZoZLjuVff0jkW0tw38i27jyTgGUXTfJhiNXjJXET3LnUgIQ + =OgdO -----END PGP MESSAGE----- fp: CC51116A94490FA6FB3C18EB2401FCAE863A06CA - - created_at: "2024-12-26T15:24:19Z" + - created_at: "2025-05-13T14:07:57Z" enc: |- -----BEGIN PGP MESSAGE----- - hF4DCsA/BhMt3V4SAQdAENZRSE5wcxMS36LyYIlyIRj2IZR3gwn6vmpDPwcF3Ckw - 4Q7IAwgsSVTYloEq2L1ti6YiSYOIHJ6sQ37zb8MqjpnCwqeF+Ilw2zN6a4uapTDw - 0l4BEf2niBLKRnv4gYGAvQlsmDvKxD+XZgCA0Mf4Zo0gTBTNS5TRHaQuH2T+kZwc - fMAy22upXAJErldINHQLctOwG0r45lpqJAHu5BbmDOoyrrvU9oBk253XMgopYWmG - =WlAR + hF4DCsA/BhMt3V4SAQdAXEdFClqD2cSkNVYPqMSenULknpKAhaIgFvDD2j2WI18w + bq+Wxcz300c4bZNXROc8+hXNBzXW92MJ8uoNbD7hdefciF0UjcBf61mSQvYl/ueb + 0l4B3k56RagBSmwUl8LytAUgF5OzY/6ICpe48d/+rguxBHvcI+KO3jBc6Da4FiAb + AGOVk2VdzVIeOBgc/eytAWjRlKYHk3mkXIfMlOYx2LFbFmrex5BWnrgVqoxo3hZU + =d+Ec -----END PGP MESSAGE----- fp: 4919F560F0D35F80CF382D76E084A2DF1143C14D - - created_at: "2024-12-26T15:24:19Z" + - created_at: "2025-05-13T14:07:57Z" enc: |- -----BEGIN PGP MESSAGE----- - hF4DRbry8yWl6IgSAQdAaWSu41JqARDdez39dRCn2zP7TbiN/S+5yFsQvjohonsw - RGgwTfrUVWy4E67EMx7RN3sVEXtLDBpBobdKOvUTqe6fZ+TSrqyalfDrlMDxaGjj - 1GgBCQIQYCBiEZ2BvxY654zbUVkEet2nm41Lg/qQsEqBnXXZT24hX85WUbOyAYct - bR3sQZul9RlBFrkEXSLwBN+tFzidoIiHkHtRRsLZyCGKFfxyguM9He9CevDpggPA - wkKtYzMUzrNfKw== - =8JBm + hF4DRbry8yWl6IgSAQdAtRcYFWErls6e/h+TrDBuEQ+lECv2bfNEaZpg8yMIvRAw + G7Cm4X+lWBgeLD1mgrlF+kPsIxaolnXqM4V4dZAcAttrzffT1ssCtLe7dCRHZvfv + 1GgBCQIQ+RzUnceJJToXtV98yJlxWCnu38pM8hL9PCBfFI0XEftKvdlScxRzBK/R + 4nAIB29rAf9NHFeYDhIBjBdHQ9ju3T9kY0YH+585jsBCrWjMU+Hvj1JY7bVufrnV + ycoN0UtZ9f5Yag== + =H+8C -----END PGP MESSAGE----- fp: 11177A43C6E3752E682AC690DBD13117B0A14E93 - - created_at: "2024-12-26T15:24:19Z" + - created_at: "2025-05-13T14:07:57Z" enc: |- -----BEGIN PGP MESSAGE----- - hF4DzfZC0UNQ1VgSAQdAT6ORCIjbdFHRpTcZLEJIniYNWnkgB6kbOTUR7Z4TNyww - YjqSVzt0pRHA0tnLKxC0EE1E9VGTrFjDpg0+yeoOzgS5M2zdl47LM9RMJTnA3cGM - 1GgBCQIQNQoVBm+zPbJstZMPWUO7vrgTRxKFREm9RW3y1UP4DO4MmMr1F6yJyN/Z - 0xZraVpL4YAj5FFnf9YkrPlTbiJsClO20k30rK79IEuXGkxTvLk4R0p8bbG1ps4D - HaTBqg+N24qQ8w== - =x4Lm + hF4DvbozpGPUDxgSAQdA/bTj9TEnbetB0jMR6ZNyQwzOJ7tvvPKUPbE7s4qrkmUw + GZBOamgGXU0UnnQ1Rk1hJ9rXXe4A6DqUAkOelaS/qUqCzRSNZboEijizAApaXGZe + 0l4BbaCTNlLeJyI2jKbnO5hyv2DpHAFkKQ4CJna5KZj9TOrSrxnSkAJHLv0t0q9Z + M9weECX8RW3qvR75/H2T/ePfUYbGhB+7NpwN2BlU1wnTj7I9RkPetT8skCPxWY8G + =s/Bm -----END PGP MESSAGE----- - fp: AA5213AF261C1977AF38B03A94B473337258BFD5 + fp: 5D7964FF2DB426ACB3C3505AA2A702DD5B689F45 + - created_at: "2025-05-13T14:07:57Z" + enc: |- + -----BEGIN PGP MESSAGE----- + + hF4D44lO7/xrMMASAQdAFbcv3Hu/AdGGSWC6kbPJcqbSlD1cTPX8sg8kb0oCpCcw + 2/JLu9kJAEsO35DoyiYdRzBc2UVD26WSKtiNbD0XJOUo1yp/JTZ+xTH3fppE3Enf + 1GgBCQIQtHg1HF6qEOfhnGrrW1ZZXEheX6+BPfOnQmN6BUcoevD4RrkbKS/x3mh3 + A+y3MrdcaVtIQEWOMS1iuEKgJYeqYq6eOP0Y8B1Bbn3nKGK6G/zS7lqFDLUqWpMf + VT6LE5drfEXy5w== + =duo7 + -----END PGP MESSAGE----- + fp: E77ED9F8451E10BD242D07415444881046F92733 unencrypted_suffix: _unencrypted - version: 3.9.2 + version: 3.10.2 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/talosctl-1.10.1/.sops.yaml new/talosctl-1.10.2/.sops.yaml --- old/talosctl-1.10.1/.sops.yaml 2025-05-07 12:10:36.000000000 +0200 +++ new/talosctl-1.10.2/.sops.yaml 2025-05-16 16:04:24.000000000 +0200 @@ -1,13 +1,14 @@ # THIS FILE WAS AUTOMATICALLY GENERATED, PLEASE DO NOT EDIT. # -# Generated on 2024-12-26T15:20:08Z by kres fcff05e. +# Generated on 2025-05-13T14:08:31Z by kres 5ad3e5f. creation_rules: - age: age1xrpa9ujxxcj2u2gzfrzv8mxak4rts94a6y60ypurv6rs5cpr4e4sg95f0k - # order: Andrey, Noel, Artem, Utku, Dmitriy + # order: Andrey, Noel, Artem, Utku, Tim, Andy pgp: >- 15D5721F5F5BAF121495363EFE042E3D4085A811, CC51116A94490FA6FB3C18EB2401FCAE863A06CA, 4919F560F0D35F80CF382D76E084A2DF1143C14D, 11177A43C6E3752E682AC690DBD13117B0A14E93, - AA5213AF261C1977AF38B03A94B473337258BFD5 \ No newline at end of file + 5D7964FF2DB426ACB3C3505AA2A702DD5B689F45, + E77ED9F8451E10BD242D07415444881046F92733 \ No newline at end of file diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/talosctl-1.10.1/CHANGELOG.md new/talosctl-1.10.2/CHANGELOG.md --- old/talosctl-1.10.1/CHANGELOG.md 2025-05-07 12:10:36.000000000 +0200 +++ new/talosctl-1.10.2/CHANGELOG.md 2025-05-16 16:04:24.000000000 +0200 @@ -1,3 +1,79 @@ +## [Talos 1.10.2](https://github.com/siderolabs/talos/releases/tag/v1.10.2) (2025-05-16) + +Welcome to the v1.10.2 release of Talos! + + + +Please try out the release binaries and report any issues at +https://github.com/siderolabs/talos/issues. + +### Component Updates + +Linux: 6.12.27 + +Talos is built with Go 1.24.3. + + +### Contributors + +* Andrey Smirnov +* Noel Georgi +* Andrew Longwill + +### Changes +<details><summary>11 commits</summary> +<p> + +* [`44083c6e6`](https://github.com/siderolabs/talos/commit/44083c6e62bbef3481982b96746cd476ae512454) feat: update Linux to 6.12.27 +* [`78df89b87`](https://github.com/siderolabs/talos/commit/78df89b87c8521f688fb072470b8f90a1f32a927) fix: disable automatic MAC assignment to bridge interfaces +* [`a5de48b87`](https://github.com/siderolabs/talos/commit/a5de48b873b9c1b2f0b5f2989eef813d5f90a6e4) fix: selinux detection +* [`92dcddd19`](https://github.com/siderolabs/talos/commit/92dcddd1931cc1d696527f0eaf10de135aaa373f) fix: consistently apply dynamic grpc proxy dialer +* [`b8f1bde3c`](https://github.com/siderolabs/talos/commit/b8f1bde3c862a20e88ec931a24dc85525b449592) chore: rotate aws iam credentials +* [`e6b33e233`](https://github.com/siderolabs/talos/commit/e6b33e233b42251e91b55ac1652715d3446d04d6) chore: update sops keys +* [`b7e5741e6`](https://github.com/siderolabs/talos/commit/b7e5741e6fe5065ae8f00cb759513fa75b123804) test: fix the process runner log collection +* [`9e71cc8f5`](https://github.com/siderolabs/talos/commit/9e71cc8f50a7071b55c755bccc311bd89898f62c) fix: upgrade go-kubernetes for DRA flag bug +* [`55885600b`](https://github.com/siderolabs/talos/commit/55885600ba0165b4a0e29869bc97345a26dcd3b9) test: fix some flaky tests +* [`b183f95c7`](https://github.com/siderolabs/talos/commit/b183f95c7c072c47293ab0f4dea287e493ccf490) fix: k8s 1.32->1.33 upgrade check +* [`4b27faf44`](https://github.com/siderolabs/talos/commit/4b27faf44e030623caa51edd1aecaf5f4a427773) fix: improve volume mounter automaton +</p> +</details> + +### Changes from siderolabs/go-kubernetes +<details><summary>2 commits</summary> +<p> + +* [`9070be4`](https://github.com/siderolabs/go-kubernetes/commit/9070be4308e23d969ec4fc49b25dab4a27d512e7) fix: remove DynamicResourceAllocation feature gate +* [`8cb588b`](https://github.com/siderolabs/go-kubernetes/commit/8cb588bc4c93d812de901a6a33e599ba2169cd96) fix: k8s 1.32->1.33 upgrade check +</p> +</details> + +### Changes from siderolabs/pkgs +<details><summary>4 commits</summary> +<p> + +* [`b425b44`](https://github.com/siderolabs/pkgs/commit/b425b44f7975a89c25e786647f74d40c6c3de775) feat: update NVIDIA drivers +* [`88034a5`](https://github.com/siderolabs/pkgs/commit/88034a5daa2fbc6c4626af69efb8db897f52b15a) feat: update ZFS to 2.3.2 +* [`87ce8f7`](https://github.com/siderolabs/pkgs/commit/87ce8f71d420b1600fcd121c373324e87987abec) feat: update Linux to 6.12.27 +* [`c0af3b8`](https://github.com/siderolabs/pkgs/commit/c0af3b8715ebf6adb5bc68e983a8aa03facb361f) feat: update Go to 1.24.3 +</p> +</details> + +### Changes from siderolabs/tools +<details><summary>1 commit</summary> +<p> + +* [`fa51331`](https://github.com/siderolabs/tools/commit/fa513311ad42bb2a60e9b464c7c8fe3fbc2f0855) feat: update Go to 1.24.3 +</p> +</details> + +### Dependency Changes + +* **github.com/siderolabs/go-kubernetes** v0.2.21 -> v0.2.23 +* **github.com/siderolabs/pkgs** v1.10.0-8-g13e9f09 -> v1.10.0-12-gb425b44 +* **github.com/siderolabs/tools** v1.10.0-1-g67d3f5a -> v1.10.0-2-gfa51331 + +Previous release can be found at [v1.10.1](https://github.com/siderolabs/talos/releases/tag/v1.10.1) + ## [Talos 1.10.1](https://github.com/siderolabs/talos/releases/tag/v1.10.1) (2025-05-07) Welcome to the v1.10.1 release of Talos! diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/talosctl-1.10.1/Makefile new/talosctl-1.10.2/Makefile --- old/talosctl-1.10.1/Makefile 2025-05-07 12:10:36.000000000 +0200 +++ new/talosctl-1.10.2/Makefile 2025-05-16 16:04:24.000000000 +0200 @@ -25,9 +25,9 @@ EMBED_TARGET ?= embed TOOLS_PREFIX ?= ghcr.io/siderolabs/tools -TOOLS ?= v1.10.0-1-g67d3f5a +TOOLS ?= v1.10.0-2-gfa51331 PKGS_PREFIX ?= ghcr.io/siderolabs -PKGS ?= v1.10.0-8-g13e9f09 +PKGS ?= v1.10.0-12-gb425b44 KRES_IMAGE ?= ghcr.io/siderolabs/kres:latest CONFORMANCE_IMAGE ?= ghcr.io/siderolabs/conform:latest diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/talosctl-1.10.1/go.mod new/talosctl-1.10.2/go.mod --- old/talosctl-1.10.1/go.mod 2025-05-07 12:10:36.000000000 +0200 +++ new/talosctl-1.10.2/go.mod 2025-05-16 16:04:24.000000000 +0200 @@ -151,7 +151,7 @@ github.com/siderolabs/go-debug v0.5.0 github.com/siderolabs/go-kmsg v0.1.4 github.com/siderolabs/go-kubeconfig v0.1.1 - github.com/siderolabs/go-kubernetes v0.2.21 + github.com/siderolabs/go-kubernetes v0.2.23 github.com/siderolabs/go-loadbalancer v0.4.0 github.com/siderolabs/go-pcidb v0.3.1 github.com/siderolabs/go-pointer v1.0.1 @@ -165,7 +165,7 @@ github.com/siderolabs/net v0.4.0 github.com/siderolabs/proto-codec v0.1.2 github.com/siderolabs/siderolink v0.3.13 - github.com/siderolabs/talos/pkg/machinery v1.10.1 + github.com/siderolabs/talos/pkg/machinery v1.10.2 github.com/sirupsen/logrus v1.9.3 github.com/spf13/cobra v1.9.1 github.com/spf13/pflag v1.0.6 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/talosctl-1.10.1/go.sum new/talosctl-1.10.2/go.sum --- old/talosctl-1.10.1/go.sum 2025-05-07 12:10:36.000000000 +0200 +++ new/talosctl-1.10.2/go.sum 2025-05-16 16:04:24.000000000 +0200 @@ -647,8 +647,8 @@ github.com/siderolabs/go-kmsg v0.1.4/go.mod h1:BLkt2N2DHT0wsFMz32lMw6vNEZL90c8ZnBjpIUoBb/M= github.com/siderolabs/go-kubeconfig v0.1.1 h1:tZlgpelj/OqrcHVUwISPN0NRgObcflpH9WtE41mtQZ0= github.com/siderolabs/go-kubeconfig v0.1.1/go.mod h1:QaGp4i9L95oDbcU7jDn30aw4gnREkb3O5otgxw8imOk= -github.com/siderolabs/go-kubernetes v0.2.21 h1:+gHiyTyVz5oZy6cIVtqKbIWtAH/ejnQ7Yg9hZLG32WI= -github.com/siderolabs/go-kubernetes v0.2.21/go.mod h1:3qZzReVZV7e+r0DZC2cE6bBQse+CoC7SGL+EavA52G8= +github.com/siderolabs/go-kubernetes v0.2.23 h1:QGcxDd1D2IU2pIbSZayUNnEEZTARrpIiRVRQvHU+2Z8= +github.com/siderolabs/go-kubernetes v0.2.23/go.mod h1:3qZzReVZV7e+r0DZC2cE6bBQse+CoC7SGL+EavA52G8= github.com/siderolabs/go-loadbalancer v0.4.0 h1:nqZC4x1yZAFAtkb7eu5T1IoPaMDKu5jgQQGkk6rZa9s= github.com/siderolabs/go-loadbalancer v0.4.0/go.mod h1:tRVouZ9i2R/TRbNUF9MqyBlV2wsjX0cxkYTjPXcI9P0= github.com/siderolabs/go-pcidb v0.3.1 h1:Gef+LOwxB+bCUzoFajzvHg4icMqYGAoS/msdiMmPXo0= diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/talosctl-1.10.1/hack/release.toml new/talosctl-1.10.2/hack/release.toml --- old/talosctl-1.10.1/hack/release.toml 2025-05-07 12:10:36.000000000 +0200 +++ new/talosctl-1.10.2/hack/release.toml 2025-05-16 16:04:24.000000000 +0200 @@ -7,7 +7,7 @@ ignore_deps = ["github.com/coredns/coredns"] # previous release -previous = "v1.10.0" +previous = "v1.10.1" pre_release = false @@ -16,6 +16,14 @@ [notes] + [notes.updates] + title = "Component Updates" + description = """ +Linux: 6.12.27 + +Talos is built with Go 1.24.3. +""" + [make_deps] [make_deps.tools] diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/talosctl-1.10.1/hack/udevd/99-default.link new/talosctl-1.10.2/hack/udevd/99-default.link --- old/talosctl-1.10.1/hack/udevd/99-default.link 2025-05-07 12:10:36.000000000 +0200 +++ new/talosctl-1.10.2/hack/udevd/99-default.link 2025-05-16 16:04:24.000000000 +0200 @@ -12,4 +12,4 @@ [Link] NamePolicy=keep kernel database onboard slot path mac AlternativeNamesPolicy=database onboard slot path mac -MACAddressPolicy=persistent +MACAddressPolicy=none diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/talosctl-1.10.1/internal/app/machined/pkg/automaton/blockautomaton/volume_mount.go new/talosctl-1.10.2/internal/app/machined/pkg/automaton/blockautomaton/volume_mount.go --- old/talosctl-1.10.1/internal/app/machined/pkg/automaton/blockautomaton/volume_mount.go 2025-05-07 12:10:36.000000000 +0200 +++ new/talosctl-1.10.2/internal/app/machined/pkg/automaton/blockautomaton/volume_mount.go 2025-05-16 16:04:24.000000000 +0200 @@ -154,5 +154,20 @@ return nil, fmt.Errorf("error destroying mount request: %w", err) } - return nil, nil + return waitForVolumeMountStatusRemoved, nil +} + +// waitForVolumeMountStatusRemoved is the state of the volume mounter controller state machine that waits for the volume mount status to be removed. +func waitForVolumeMountStatusRemoved(ctx context.Context, r controller.ReaderWriter, logger *zap.Logger, mountContext volumeMountContext) (automaton.ControllerStateFunc[volumeMountContext], error) { + mountStatus, err := safe.ReaderGetByID[*block.VolumeMountStatus](ctx, r, mountContext.mountID) + if err != nil && !state.IsNotFoundError(err) { + return nil, fmt.Errorf("error reading volume mount status: %w", err) + } + + if mountStatus == nil { + // removed + return nil, nil + } + + return nil, xerrors.NewTaggedf[automaton.Continue]("waiting for mount status to be removed") } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/talosctl-1.10.1/internal/app/machined/pkg/automaton/blockautomaton/volume_mount_test.go new/talosctl-1.10.2/internal/app/machined/pkg/automaton/blockautomaton/volume_mount_test.go --- old/talosctl-1.10.1/internal/app/machined/pkg/automaton/blockautomaton/volume_mount_test.go 1970-01-01 01:00:00.000000000 +0100 +++ new/talosctl-1.10.2/internal/app/machined/pkg/automaton/blockautomaton/volume_mount_test.go 2025-05-16 16:04:24.000000000 +0200 @@ -0,0 +1,184 @@ +// This Source Code Form is subject to the terms of the Mozilla Public +// License, v. 2.0. If a copy of the MPL was not distributed with this +// file, You can obtain one at http://mozilla.org/MPL/2.0/. + +package blockautomaton_test + +import ( + "context" + "errors" + "fmt" + "testing" + "time" + + "github.com/cosi-project/runtime/pkg/controller" + "github.com/cosi-project/runtime/pkg/resource" + "github.com/cosi-project/runtime/pkg/resource/rtestutils" + "github.com/cosi-project/runtime/pkg/state" + "github.com/cosi-project/runtime/pkg/state/impl/inmem" + "github.com/cosi-project/runtime/pkg/state/impl/namespaced" + "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" + "go.uber.org/zap" + "go.uber.org/zap/zaptest" + + "github.com/siderolabs/talos/internal/app/machined/pkg/automaton" + "github.com/siderolabs/talos/internal/app/machined/pkg/automaton/blockautomaton" + "github.com/siderolabs/talos/pkg/machinery/resources/block" +) + +type stateReaderWriterAdapter struct { + state.State + + owner string +} + +func (s stateReaderWriterAdapter) Create(ctx context.Context, r resource.Resource) error { + return s.State.Create(ctx, r) +} + +func (s stateReaderWriterAdapter) Destroy(ctx context.Context, r resource.Pointer, _ ...controller.DeleteOption) error { + return s.State.Destroy(ctx, r, state.WithDestroyOwner(s.owner)) +} + +func (s stateReaderWriterAdapter) ModifyWithResult( + ctx context.Context, emptyResource resource.Resource, updateFunc func(resource.Resource) error, options ...controller.ModifyOption, +) (resource.Resource, error) { + _, err := s.State.Get(ctx, emptyResource.Metadata()) + if err != nil { + if state.IsNotFoundError(err) { + err = updateFunc(emptyResource) + if err != nil { + return nil, err + } + + if err = s.State.Create(ctx, emptyResource, state.WithCreateOwner(s.owner)); err != nil { + return nil, err + } + + return emptyResource, nil + } + + return nil, fmt.Errorf("error querying current object state: %w", err) + } + + updateOptions := []state.UpdateOption{state.WithUpdateOwner(s.owner)} + + modifyOptions := controller.ToModifyOptions(options...) + if modifyOptions.ExpectedPhase != nil { + updateOptions = append(updateOptions, state.WithExpectedPhase(*modifyOptions.ExpectedPhase)) + } else { + updateOptions = append(updateOptions, state.WithExpectedPhaseAny()) + } + + return s.State.UpdateWithConflicts(ctx, emptyResource.Metadata(), updateFunc, updateOptions...) +} + +func (s stateReaderWriterAdapter) Modify(ctx context.Context, emptyResource resource.Resource, updateFunc func(resource.Resource) error, options ...controller.ModifyOption) error { + _, err := s.ModifyWithResult(ctx, emptyResource, updateFunc, options...) + + return err +} + +func (s stateReaderWriterAdapter) Teardown(ctx context.Context, r resource.Pointer, _ ...controller.DeleteOption) (bool, error) { + return s.State.Teardown(ctx, r, state.WithTeardownOwner(s.owner)) +} + +func (s stateReaderWriterAdapter) Update(ctx context.Context, r resource.Resource) error { + return s.State.Update(ctx, r) +} + +func TestVolumeMounter(t *testing.T) { + t.Parallel() + + logger := zaptest.NewLogger(t) + st := state.WrapCore(namespaced.NewState(inmem.Build)) + ctx, cancel := context.WithTimeout(t.Context(), 10*time.Second) + t.Cleanup(cancel) + + mountedCh := make(chan struct{}) + + volumeMounter := blockautomaton.NewVolumeMounter("requester", "volumeID", func(ctx context.Context, rw controller.ReaderWriter, l *zap.Logger, vms *block.VolumeMountStatus) error { + select { + case <-mountedCh: + // already closed + return nil + default: + close(mountedCh) + + return errors.New("mount status callback") + } + }) + + const mountID = "requester-volumeID" + + adapter := stateReaderWriterAdapter{st, "automaton"} + + // 1st run, should create the volume mount request + require.NoError(t, volumeMounter.Run(ctx, adapter, logger)) + + rtestutils.AssertResource(ctx, t, st, mountID, func(vmr *block.VolumeMountRequest, asrt *assert.Assertions) { + asrt.Equal("requester", vmr.TypedSpec().Requester) + asrt.Equal("volumeID", vmr.TypedSpec().VolumeID) + }) + + require.NoError(t, st.AddFinalizer(ctx, block.NewVolumeMountRequest(block.NamespaceName, mountID).Metadata(), "test")) + + // no-op run, as the volume mount status doesn't exist + require.NoError(t, volumeMounter.Run(ctx, adapter, logger)) + + vms := block.NewVolumeMountStatus(block.NamespaceName, mountID) + require.NoError(t, st.Create(ctx, vms)) + + // 2nd run, should put a finalizer on the volume mount status and call the callback 1st time + err := volumeMounter.Run(ctx, adapter, logger) + + select { + case <-mountedCh: + case <-ctx.Done(): + t.Fatal("timed out waiting for mount status callback") + } + + require.ErrorContains(t, err, "mount status callback") + + // should put a finalizer on the volume mount status + rtestutils.AssertResource(ctx, t, st, mountID, func(vms *block.VolumeMountStatus, asrt *assert.Assertions) { + asrt.True(vms.Metadata().Finalizers().Has("requester")) + }) + + // 3rd run, now the mount callback should be called again, return nil, + // and volume mount status finalizer should be removed + require.NoError(t, volumeMounter.Run(ctx, adapter, logger)) + + // should remove a finalizer on the volume mount status + rtestutils.AssertResource(ctx, t, st, mountID, func(vms *block.VolumeMountStatus, asrt *assert.Assertions) { + asrt.False(vms.Metadata().Finalizers().Has("requester")) + }) + + // the mount request now should be torn down by the automaton + rtestutils.AssertResource(ctx, t, st, mountID, func(vmr *block.VolumeMountRequest, asrt *assert.Assertions) { + asrt.Equal(resource.PhaseTearingDown, vmr.Metadata().Phase()) + }) + + // remove our finalizer from the mount request + require.NoError(t, st.RemoveFinalizer(ctx, block.NewVolumeMountRequest(block.NamespaceName, mountID).Metadata(), "test")) + + // 4th run, now the mount request should be destroyed + require.NoError(t, volumeMounter.Run(ctx, adapter, logger)) + + rtestutils.AssertNoResource[*block.VolumeMountRequest](ctx, t, st, mountID) + + // destroy the volume mount status + require.NoError(t, st.Destroy(ctx, vms.Metadata())) + + var finished bool + + // 5th run, now the automaton should have finished + require.NoError(t, volumeMounter.Run(ctx, adapter, logger, automaton.WithAfterFunc(func() error { + finished = true + + return nil + }))) + + assert.True(t, finished) +} diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/talosctl-1.10.1/internal/app/machined/pkg/controllers/config/acquire_test.go new/talosctl-1.10.2/internal/app/machined/pkg/controllers/config/acquire_test.go --- old/talosctl-1.10.1/internal/app/machined/pkg/controllers/config/acquire_test.go 2025-05-07 12:10:36.000000000 +0200 +++ new/talosctl-1.10.2/internal/app/machined/pkg/controllers/config/acquire_test.go 2025-05-16 16:04:24.000000000 +0200 @@ -292,6 +292,7 @@ if wait { ctest.AssertNoResource[*block.VolumeMountRequest](suite, mountID) + suite.Destroy(volumeMountStatus) } } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/talosctl-1.10.1/internal/app/machined/pkg/controllers/network/cmdline_test.go new/talosctl-1.10.2/internal/app/machined/pkg/controllers/network/cmdline_test.go --- old/talosctl-1.10.1/internal/app/machined/pkg/controllers/network/cmdline_test.go 2025-05-07 12:10:36.000000000 +0200 +++ new/talosctl-1.10.2/internal/app/machined/pkg/controllers/network/cmdline_test.go 2025-05-16 16:04:24.000000000 +0200 @@ -23,8 +23,7 @@ ) func TestCmdlineParse(t *testing.T) { - t.Parallel() - + // [NOTE]: this test is not safe to run in parallel, as defaultIfaceName might flip if some interface is created concurrently ifaces, _ := net.Interfaces() //nolint:errcheck // ignoring error here as ifaces will be empty slices.SortFunc(ifaces, func(a, b net.Interface) int { return cmp.Compare(a.Name, b.Name) }) @@ -599,8 +598,6 @@ }, } { t.Run(test.name, func(t *testing.T) { - t.Parallel() - cmdline := procfs.NewCmdline(test.cmdline) link1 := netconfig.NewLinkStatus(netconfig.NamespaceName, "eth31") diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/talosctl-1.10.1/internal/app/machined/pkg/controllers/network/platform_config_test.go new/talosctl-1.10.2/internal/app/machined/pkg/controllers/network/platform_config_test.go --- old/talosctl-1.10.1/internal/app/machined/pkg/controllers/network/platform_config_test.go 2025-05-07 12:10:36.000000000 +0200 +++ new/talosctl-1.10.2/internal/app/machined/pkg/controllers/network/platform_config_test.go 2025-05-16 16:04:24.000000000 +0200 @@ -320,6 +320,11 @@ ), ) + // wait for the controller to acquire the config + ctest.AssertResources(suite, []string{ + "external/10.3.4.5/32", + }, func(r *network.AddressStatus, asrt *assert.Assertions) {}) + statePath := suite.T().TempDir() mountID := (&netctrl.PlatformConfigController{}).Name() + "-" + constants.StatePartitionLabel @@ -380,6 +385,10 @@ volumeMountStatus.TypedSpec().Target = statePath suite.Create(volumeMountStatus) + ctest.AssertNoResource[*block.VolumeMountRequest](suite, mountID) + + suite.Destroy(volumeMountStatus) + // controller should pick up cached network configuration ctest.AssertResources(suite, []string{ "external/10.3.4.5/32", @@ -406,14 +415,6 @@ asrt.Equal("", spec.Domainname) asrt.Equal(network.ConfigPlatform, spec.ConfigLayer) }, rtestutils.WithNamespace(network.ConfigNamespaceName)) - - ctest.AssertResources(suite, []resource.ID{volumeMountStatus.Metadata().ID()}, func(vms *block.VolumeMountStatus, asrt *assert.Assertions) { - asrt.True(vms.Metadata().Finalizers().Empty()) - }) - - suite.Destroy(volumeMountStatus) - - ctest.AssertNoResource[*block.VolumeMountRequest](suite, mountID) } func TestPlatformConfigSuite(t *testing.T) { diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/talosctl-1.10.1/internal/app/machined/pkg/controllers/runtime/events_sink.go new/talosctl-1.10.2/internal/app/machined/pkg/controllers/runtime/events_sink.go --- old/talosctl-1.10.1/internal/app/machined/pkg/controllers/runtime/events_sink.go 2025-05-07 12:10:36.000000000 +0200 +++ new/talosctl-1.10.2/internal/app/machined/pkg/controllers/runtime/events_sink.go 2025-05-16 16:04:24.000000000 +0200 @@ -22,6 +22,7 @@ networkutils "github.com/siderolabs/talos/internal/app/machined/pkg/controllers/network/utils" machinedruntime "github.com/siderolabs/talos/internal/app/machined/pkg/runtime" + "github.com/siderolabs/talos/pkg/grpc/dialer" "github.com/siderolabs/talos/pkg/machinery/resources/network" "github.com/siderolabs/talos/pkg/machinery/resources/runtime" ) @@ -165,6 +166,7 @@ cfg.TypedSpec().Endpoint, grpc.WithTransportCredentials(insecure.NewCredentials()), grpc.WithSharedWriteBuffer(true), + grpc.WithContextDialer(dialer.DynamicProxyDialer), ) if err != nil { return fmt.Errorf("error establishing connection to event sink: %w", err) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/talosctl-1.10.1/internal/app/machined/pkg/controllers/siderolink/manager.go new/talosctl-1.10.2/internal/app/machined/pkg/controllers/siderolink/manager.go --- old/talosctl-1.10.1/internal/app/machined/pkg/controllers/siderolink/manager.go 2025-05-07 12:10:36.000000000 +0200 +++ new/talosctl-1.10.2/internal/app/machined/pkg/controllers/siderolink/manager.go 2025-05-16 16:04:24.000000000 +0200 @@ -30,6 +30,7 @@ "google.golang.org/grpc/credentials/insecure" networkutils "github.com/siderolabs/talos/internal/app/machined/pkg/controllers/network/utils" + "github.com/siderolabs/talos/pkg/grpc/dialer" "github.com/siderolabs/talos/pkg/httpdefaults" "github.com/siderolabs/talos/pkg/machinery/constants" "github.com/siderolabs/talos/pkg/machinery/nethelpers" @@ -345,6 +346,7 @@ cfg.TypedSpec().Host, withTransportCredentials(cfg.TypedSpec().Insecure), grpc.WithSharedWriteBuffer(true), + grpc.WithContextDialer(dialer.DynamicProxyDialer), ) if connErr != nil { return nil, fmt.Errorf("error dialing SideroLink endpoint %q: %w", cfg.TypedSpec().Host, connErr) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/talosctl-1.10.1/internal/app/machined/pkg/system/runner/process/process.go new/talosctl-1.10.2/internal/app/machined/pkg/system/runner/process/process.go --- old/talosctl-1.10.1/internal/app/machined/pkg/system/runner/process/process.go 2025-05-07 12:10:36.000000000 +0200 +++ new/talosctl-1.10.2/internal/app/machined/pkg/system/runner/process/process.go 2025-05-16 16:04:24.000000000 +0200 @@ -5,7 +5,6 @@ package process import ( - "cmp" "fmt" "io" "io/fs" @@ -92,15 +91,14 @@ } type commandWrapper struct { - launcher *cap.Launcher - ctty optional.Optional[int] - selinuxLabel string - cgroupFile *os.File - stdin *os.File - stdout *os.File - stderr *os.File - afterStart func() - afterTermination func() error + launcher *cap.Launcher + ctty optional.Optional[int] + selinuxLabel string + cgroupFile *os.File + stdin *os.File + stdout *os.File + stderr *os.File + afterStart func() } func dropCaps(droppedCapabilities []string, launcher *cap.Launcher) error { @@ -195,16 +193,16 @@ launcher.Callback(beforeExecCallback) // Setup logging. - w, err := p.opts.LoggingManager.ServiceLog(p.args.ID).Writer() + logSink, err := p.opts.LoggingManager.ServiceLog(p.args.ID).Writer() if err != nil { return commandWrapper{}, fmt.Errorf("service log handler: %w", err) } - var writer io.Writer + var logWriter io.Writer if p.debug { - writer = io.MultiWriter(w, log.Writer()) + logWriter = io.MultiWriter(logSink, log.Writer()) } else { - writer = w + logWriter = logSink } // As MultiWriter is not a file, we need to create a pipe @@ -214,27 +212,30 @@ return commandWrapper{}, err } - go io.Copy(writer, pr) //nolint:errcheck + go func() { + defer pr.Close() //nolint:errcheck + defer logSink.Close() //nolint:errcheck + + io.Copy(logWriter, pr) //nolint:errcheck + }() // close the writer if we exit early due to an error closeWriter := true - closeLogging := func() (e error) { - for _, closer := range []io.Closer{w, pr, pw} { - e = cmp.Or(closer.Close(), e) - } + afterStartClosers := []io.Closer{pw} - return e + closeLogging := func() { + for _, closer := range afterStartClosers { + closer.Close() //nolint:errcheck + } } defer func() { if closeWriter { - closeLogging() //nolint:errcheck + closeLogging() } }() - var afterStartClosers []io.Closer - if p.opts.StdinFile != "" { stdin, err := os.Open(p.opts.StdinFile) if err != nil { @@ -277,8 +278,7 @@ closeWriter = false wrapper.launcher = launcher - wrapper.afterStart = func() { xslices.Map(afterStartClosers, io.Closer.Close) } - wrapper.afterTermination = closeLogging + wrapper.afterStart = closeLogging wrapper.ctty = p.opts.Ctty wrapper.selinuxLabel = p.opts.SelinuxLabel @@ -419,7 +419,7 @@ return fmt.Errorf("error building command: %w", err) } - defer cmdWrapper.afterTermination() //nolint:errcheck + defer cmdWrapper.afterStart() notifyCh := make(chan reaper.ProcessInfo, 8) @@ -479,7 +479,7 @@ // wait for process to terminate <-waitCh - return cmdWrapper.afterTermination() + return nil } func (p *processRunner) String() string { diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/talosctl-1.10.1/internal/app/machined/pkg/system/runner/process/process_test.go new/talosctl-1.10.2/internal/app/machined/pkg/system/runner/process/process_test.go --- old/talosctl-1.10.1/internal/app/machined/pkg/system/runner/process/process_test.go 2025-05-07 12:10:36.000000000 +0200 +++ new/talosctl-1.10.2/internal/app/machined/pkg/system/runner/process/process_test.go 2025-05-16 16:04:24.000000000 +0200 @@ -7,7 +7,6 @@ import ( "fmt" "io" - "log" "os" "path/filepath" "strconv" @@ -18,7 +17,9 @@ "time" "github.com/siderolabs/go-cmd/pkg/cmd/proc/reaper" + "github.com/stretchr/testify/assert" "github.com/stretchr/testify/suite" + "go.uber.org/goleak" "github.com/siderolabs/talos/internal/app/machined/pkg/runtime" "github.com/siderolabs/talos/internal/app/machined/pkg/runtime/logging" @@ -28,8 +29,10 @@ "github.com/siderolabs/talos/internal/app/machined/pkg/system/runner/restart" ) -func MockEventSink(state events.ServiceState, message string, args ...any) { - log.Printf("state %s: %s", state, fmt.Sprintf(message, args...)) +func MockEventSink(t *testing.T) func(state events.ServiceState, message string, args ...any) { + return func(state events.ServiceState, message string, args ...any) { + t.Logf("state %s: %s", state, fmt.Sprintf(message, args...)) + } } type ProcessSuite struct { @@ -67,7 +70,7 @@ defer func() { suite.Assert().NoError(r.Close()) }() - suite.Assert().NoError(r.Run(MockEventSink)) + suite.Assert().NoError(r.Run(MockEventSink(suite.T()))) // calling stop when Run has finished is no-op suite.Assert().NoError(r.Stop()) } @@ -82,18 +85,17 @@ defer func() { suite.Assert().NoError(r.Close()) }() - suite.Assert().NoError(r.Run(MockEventSink)) + suite.Assert().NoError(r.Run(MockEventSink(suite.T()))) - logFile, err := os.Open(filepath.Join(suite.tmpDir, "logtest.log")) - suite.Assert().NoError(err) + // the log file is written asynchronously, so we need to wait a bit + suite.EventuallyWithT(func(collect *assert.CollectT) { + asrt := assert.New(collect) - //nolint:errcheck - defer logFile.Close() + logContents, err := os.ReadFile(filepath.Join(suite.tmpDir, "logtest.log")) + asrt.NoError(err) - logContents, err := io.ReadAll(logFile) - suite.Assert().NoError(err) - - suite.Assert().Equal([]byte("Test 1\nTest 2\n"), logContents) + asrt.Equal([]byte("Test 1\nTest 2\n"), logContents) + }, time.Second, 10*time.Millisecond) } func (suite *ProcessSuite) TestRunRestartFailed() { @@ -116,7 +118,7 @@ go func() { defer wg.Done() - suite.Assert().NoError(r.Run(MockEventSink)) + suite.Assert().NoError(r.Run(MockEventSink(suite.T()))) }() fetchLog := func() []byte { @@ -166,7 +168,7 @@ done := make(chan error, 1) go func() { - done <- r.Run(MockEventSink) + done <- r.Run(MockEventSink(suite.T())) }() time.Sleep(40 * time.Millisecond) @@ -213,7 +215,7 @@ done := make(chan error, 1) go func() { - done <- r.Run(MockEventSink) + done <- r.Run(MockEventSink(suite.T())) }() time.Sleep(100 * time.Millisecond) @@ -253,7 +255,7 @@ done := make(chan error, 1) go func() { - done <- r.Run(MockEventSink) + done <- r.Run(MockEventSink(suite.T())) }() time.Sleep(10 * time.Millisecond) @@ -307,7 +309,7 @@ done := make(chan error, 1) go func() { - done <- r.Run(MockEventSink) + done <- r.Run(MockEventSink(suite.T())) }() time.Sleep(10 * time.Millisecond) @@ -360,7 +362,7 @@ done := make(chan error, 1) go func() { - done <- r.Run(MockEventSink) + done <- r.Run(MockEventSink(suite.T())) }() time.Sleep(10 * time.Millisecond) @@ -383,8 +385,14 @@ func TestProcessSuite(t *testing.T) { for _, runReaper := range []bool{true, false} { - func(runReaper bool) { - t.Run(fmt.Sprintf("runReaper=%v", runReaper), func(t *testing.T) { suite.Run(t, &ProcessSuite{runReaper: runReaper}) }) - }(runReaper) + t.Run(fmt.Sprintf("runReaper=%v", runReaper), + func(t *testing.T) { + suite.Run(t, &ProcessSuite{runReaper: runReaper}) + }, + ) } } + +func TestMain(m *testing.M) { + goleak.VerifyTestMain(m) +} diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/talosctl-1.10.1/internal/integration/api/ethernet.go new/talosctl-1.10.2/internal/integration/api/ethernet.go --- old/talosctl-1.10.1/internal/integration/api/ethernet.go 2025-05-07 12:10:36.000000000 +0200 +++ new/talosctl-1.10.2/internal/integration/api/ethernet.go 2025-05-16 16:04:24.000000000 +0200 @@ -8,6 +8,8 @@ import ( "context" + "fmt" + "math/rand/v2" "os" "testing" "time" @@ -23,6 +25,7 @@ "github.com/siderolabs/talos/internal/integration/base" "github.com/siderolabs/talos/pkg/machinery/client" networkconfig "github.com/siderolabs/talos/pkg/machinery/config/types/network" + "github.com/siderolabs/talos/pkg/machinery/config/types/v1alpha1" "github.com/siderolabs/talos/pkg/machinery/resources/network" ) @@ -198,6 +201,99 @@ }) } +// TestBridgeMAC verifies bridge MAC address. +func (suite *EthernetSuite) TestBridgeMAC() { + // pick up a random node to test the Ethernet on, and use it throughout the test + node := suite.RandomDiscoveredNodeInternalIP() + + suite.T().Logf("testing bridge MAC on node %s", node) + + // build a Talos API context which is tied to the node + nodeCtx := client.WithNode(suite.ctx, node) + + randomSuffix := fmt.Sprintf("%04x", rand.Int32()) + + patch1 := v1alpha1.Config{ + MachineConfig: &v1alpha1.MachineConfig{ + MachineNetwork: &v1alpha1.NetworkConfig{ + NetworkInterfaces: v1alpha1.NetworkDeviceList{ + { + DeviceInterface: "dummy" + randomSuffix, + DeviceDummy: pointer.To(true), + }, + { + DeviceInterface: "bridge" + randomSuffix, + DeviceBridge: &v1alpha1.Bridge{}, + }, + }, + }, + }, + } + + suite.PatchMachineConfig(nodeCtx, patch1) + + var dummyMAC string + + // the links should be created + rtestutils.AssertResources(nodeCtx, suite.T(), suite.Client.COSI, + []string{"dummy" + randomSuffix, "bridge" + randomSuffix}, + func(link *network.LinkStatus, _ *assert.Assertions) { + if link.TypedSpec().Kind == "dummy" { + dummyMAC = link.TypedSpec().HardwareAddr.String() + } + }) + + suite.Assert().NotEmpty(dummyMAC, "dummy MAC address is empty") + + // now, let's put dummy interface into the bridge + patch2 := v1alpha1.Config{ + MachineConfig: &v1alpha1.MachineConfig{ + MachineNetwork: &v1alpha1.NetworkConfig{ + NetworkInterfaces: v1alpha1.NetworkDeviceList{ + { + DeviceInterface: "bridge" + randomSuffix, + DeviceBridge: &v1alpha1.Bridge{ + BridgedInterfaces: []string{"dummy" + randomSuffix}, + }, + }, + }, + }, + }, + } + + suite.PatchMachineConfig(nodeCtx, patch2) + + // now bridge should have the same MAC address as dummy + rtestutils.AssertResources(nodeCtx, suite.T(), suite.Client.COSI, + []string{"dummy" + randomSuffix, "bridge" + randomSuffix}, + func(link *network.LinkStatus, asrt *assert.Assertions) { + asrt.Equal(dummyMAC, link.TypedSpec().HardwareAddr.String(), "dummy MAC address is not equal to bridge MAC address") + }) + + // revert the changes removing the dummy interface from the bridge + patch3 := map[string]any{ + "machine": map[string]any{ + "network": map[string]any{ + "interfaces": []map[string]any{ + { + "interface": "bridge" + randomSuffix, + "$patch": "delete", + }, + { + "interface": "dummy" + randomSuffix, + "$patch": "delete", + }, + }, + }, + }, + } + + suite.PatchMachineConfig(nodeCtx, patch3) + + rtestutils.AssertNoResource[*network.LinkStatus](nodeCtx, suite.T(), suite.Client.COSI, "dummy"+randomSuffix) + rtestutils.AssertNoResource[*network.LinkStatus](nodeCtx, suite.T(), suite.Client.COSI, "bridge"+randomSuffix) +} + func init() { allSuites = append(allSuites, new(EthernetSuite)) } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/talosctl-1.10.1/internal/pkg/dns/dns_test.go new/talosctl-1.10.2/internal/pkg/dns/dns_test.go --- old/talosctl-1.10.1/internal/pkg/dns/dns_test.go 2025-05-07 12:10:36.000000000 +0200 +++ new/talosctl-1.10.2/internal/pkg/dns/dns_test.go 2025-05-16 16:04:24.000000000 +0200 @@ -29,7 +29,7 @@ ) func TestDNS(t *testing.T) { - goleak.VerifyNone(t) + t.Cleanup(func() { goleak.VerifyNone(t) }) tests := []struct { name string @@ -47,7 +47,7 @@ }, { name: "failure", - hostname: "google.com", + hostname: "google-fail.com", nameservers: []string{"242.242.242.242"}, errCheck: check.ErrorContains("i/o timeout"), }, @@ -104,7 +104,7 @@ } func TestDNSEmptyDestinations(t *testing.T) { - goleak.VerifyNone(t) + t.Cleanup(func() { goleak.VerifyNone(t) }) stop := newManager(t) defer stop() @@ -123,7 +123,7 @@ } func Test_ServeBackground(t *testing.T) { - goleak.VerifyNone(t) + t.Cleanup(func() { goleak.VerifyNone(t) }) m := dns.NewManager(&testReader{}, func(e suture.Event) { t.Log("dns-runners event:", e) }, zaptest.NewLogger(t)) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/talosctl-1.10.1/internal/pkg/encryption/keys/kms.go new/talosctl-1.10.2/internal/pkg/encryption/keys/kms.go --- old/talosctl-1.10.1/internal/pkg/encryption/keys/kms.go 2025-05-07 12:10:36.000000000 +0200 +++ new/talosctl-1.10.2/internal/pkg/encryption/keys/kms.go 2025-05-16 16:04:24.000000000 +0200 @@ -23,6 +23,7 @@ "github.com/siderolabs/talos/internal/pkg/encryption/helpers" "github.com/siderolabs/talos/internal/pkg/endpoint" + "github.com/siderolabs/talos/pkg/grpc/dialer" "github.com/siderolabs/talos/pkg/httpdefaults" ) @@ -144,5 +145,6 @@ endpoint.Host, grpc.WithTransportCredentials(transportCredentials), grpc.WithSharedWriteBuffer(true), + grpc.WithContextDialer(dialer.DynamicProxyDialer), ) } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/talosctl-1.10.1/internal/pkg/selinux/selinux.go new/talosctl-1.10.2/internal/pkg/selinux/selinux.go --- old/talosctl-1.10.1/internal/pkg/selinux/selinux.go 2025-05-07 12:10:36.000000000 +0200 +++ new/talosctl-1.10.2/internal/pkg/selinux/selinux.go 2025-05-16 16:04:24.000000000 +0200 @@ -34,7 +34,13 @@ val := procfs.ProcCmdline().Get(constants.KernelParamSELinux).First() - return val != nil && *val == "1" + var selinuxFSPresent bool + + if _, err := os.Stat("/sys/fs/selinux"); err == nil { + selinuxFSPresent = true + } + + return val != nil && *val == "1" && selinuxFSPresent }) // IsEnforcing checks if SELinux is enabled and the mode should be enforcing. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/talosctl-1.10.1/pkg/grpc/middleware/auth/basic/basic.go new/talosctl-1.10.2/pkg/grpc/middleware/auth/basic/basic.go --- old/talosctl-1.10.1/pkg/grpc/middleware/auth/basic/basic.go 2025-05-07 12:10:36.000000000 +0200 +++ new/talosctl-1.10.2/pkg/grpc/middleware/auth/basic/basic.go 2025-05-16 16:04:24.000000000 +0200 @@ -13,6 +13,8 @@ "github.com/siderolabs/gen/xslices" "google.golang.org/grpc" "google.golang.org/grpc/credentials" + + "github.com/siderolabs/talos/pkg/grpc/dialer" ) // Credentials describes an authorization method. @@ -42,6 +44,7 @@ grpc.WithTransportCredentials(credentials.NewTLS(tlsConfig)), grpc.WithPerRPCCredentials(creds), grpc.WithSharedWriteBuffer(true), + grpc.WithContextDialer(dialer.DynamicProxyDialer), } conn, err = grpc.NewClient(address, grpcOpts...) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/talosctl-1.10.1/pkg/grpc/proxy/backend/local.go new/talosctl-1.10.2/pkg/grpc/proxy/backend/local.go --- old/talosctl-1.10.1/pkg/grpc/proxy/backend/local.go 2025-05-07 12:10:36.000000000 +0200 +++ new/talosctl-1.10.2/pkg/grpc/proxy/backend/local.go 2025-05-16 16:04:24.000000000 +0200 @@ -65,6 +65,7 @@ grpc.ForceCodecV2(proxy.Codec()), ), grpc.WithSharedWriteBuffer(true), + grpc.WithNoProxy(), ) return outCtx, l.conn, err diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/talosctl-1.10.1/pkg/machinery/constants/constants.go new/talosctl-1.10.2/pkg/machinery/constants/constants.go --- old/talosctl-1.10.1/pkg/machinery/constants/constants.go 2025-05-07 12:10:36.000000000 +0200 +++ new/talosctl-1.10.2/pkg/machinery/constants/constants.go 2025-05-16 16:04:24.000000000 +0200 @@ -14,7 +14,7 @@ const ( // DefaultKernelVersion is the default Linux kernel version. - DefaultKernelVersion = "6.12.25-talos" + DefaultKernelVersion = "6.12.27-talos" // KernelParamConfig is the kernel parameter name for specifying the URL. // to the config. @@ -1097,7 +1097,7 @@ DBusClientSocketLabel = "system_u:object_r:dbus_client_socket_t:s0" // GoVersion is the version of Go compiler this release was built with. - GoVersion = "go1.24.2" + GoVersion = "go1.24.3" // KubernetesTalosAPIServiceName is the name of the Kubernetes service to access Talos API. KubernetesTalosAPIServiceName = "talos" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/talosctl-1.10.1/pkg/machinery/gendata/data/pkgs new/talosctl-1.10.2/pkg/machinery/gendata/data/pkgs --- old/talosctl-1.10.1/pkg/machinery/gendata/data/pkgs 2025-05-07 12:10:36.000000000 +0200 +++ new/talosctl-1.10.2/pkg/machinery/gendata/data/pkgs 2025-05-16 16:04:24.000000000 +0200 @@ -1 +1 @@ -v1.10.0-8-g13e9f09 \ No newline at end of file +v1.10.0-12-gb425b44 \ No newline at end of file diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/talosctl-1.10.1/pkg/machinery/gendata/data/tag new/talosctl-1.10.2/pkg/machinery/gendata/data/tag --- old/talosctl-1.10.1/pkg/machinery/gendata/data/tag 2025-05-07 12:10:36.000000000 +0200 +++ new/talosctl-1.10.2/pkg/machinery/gendata/data/tag 2025-05-16 16:04:24.000000000 +0200 @@ -1 +1 @@ -v1.10.1 \ No newline at end of file +v1.10.2 \ No newline at end of file diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/talosctl-1.10.1/pkg/machinery/gendata/data/tools new/talosctl-1.10.2/pkg/machinery/gendata/data/tools --- old/talosctl-1.10.1/pkg/machinery/gendata/data/tools 2025-05-07 12:10:36.000000000 +0200 +++ new/talosctl-1.10.2/pkg/machinery/gendata/data/tools 2025-05-16 16:04:24.000000000 +0200 @@ -1 +1 @@ -v1.10.0-1-g67d3f5a \ No newline at end of file +v1.10.0-2-gfa51331 \ No newline at end of file diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/talosctl-1.10.1/pkg/machinery/version/os-release new/talosctl-1.10.2/pkg/machinery/version/os-release --- old/talosctl-1.10.1/pkg/machinery/version/os-release 2025-05-07 12:10:36.000000000 +0200 +++ new/talosctl-1.10.2/pkg/machinery/version/os-release 2025-05-16 16:04:24.000000000 +0200 @@ -1,7 +1,7 @@ NAME="Talos" ID=talos -VERSION_ID=v1.10.1 -PRETTY_NAME="Talos (v1.10.1)" +VERSION_ID=v1.10.2 +PRETTY_NAME="Talos (v1.10.2)" HOME_URL="https://www.talos.dev/" BUG_REPORT_URL="https://github.com/siderolabs/talos/issues" VENDOR_NAME="Sidero Labs" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/talosctl-1.10.1/website/content/v1.10/reference/cli.md new/talosctl-1.10.2/website/content/v1.10/reference/cli.md --- old/talosctl-1.10.1/website/content/v1.10/reference/cli.md 2025-05-07 12:10:36.000000000 +0200 +++ new/talosctl-1.10.2/website/content/v1.10/reference/cli.md 2025-05-16 16:04:24.000000000 +0200 @@ -144,7 +144,7 @@ --bad-rtc launch VM with bad RTC state (QEMU only) --cidr string CIDR of the cluster network (IPv4, ULA network for IPv6 is derived in automated way) (default "10.5.0.0/24") --cni-bin-path strings search path for CNI binaries (VM only) (default [/home/user/.talos/cni/bin]) - --cni-bundle-url string URL to download CNI bundle from (VM only) (default "https://github.com/siderolabs/talos/releases/download/v1.10.1/talosctl-cni-bundle-${ARCH}.tar.gz") + --cni-bundle-url string URL to download CNI bundle from (VM only) (default "https://github.com/siderolabs/talos/releases/download/v1.10.2/talosctl-cni-bundle-${ARCH}.tar.gz") --cni-cache-dir string CNI cache directory path (VM only) (default "/home/user/.talos/cni/cache") --cni-conf-dir string CNI config directory path (VM only) (default "/home/user/.talos/cni/conf.d") --config-injection-method string a method to inject machine config: default is HTTP server, 'metal-iso' to mount an ISO (QEMU only) @@ -2982,7 +2982,7 @@ --debug debug operation from kernel logs. --wait is set to true when this flag is set -f, --force force the upgrade (skip checks on etcd health and members, might lead to data loss) -h, --help help for upgrade - -i, --image string the container image to use for performing the install (default "ghcr.io/siderolabs/installer:v1.10.1") + -i, --image string the container image to use for performing the install (default "ghcr.io/siderolabs/installer:v1.10.2") --insecure upgrade using the insecure (encrypted with no auth) maintenance service -m, --reboot-mode string select the reboot mode during upgrade. Mode "powercycle" bypasses kexec. Valid values are: ["default" "powercycle"]. (default "default") -s, --stage stage the upgrade to perform it after a reboot ++++++ talosctl.obsinfo ++++++ --- /var/tmp/diff_new_pack.j42PYv/_old 2025-05-20 09:38:06.341391717 +0200 +++ /var/tmp/diff_new_pack.j42PYv/_new 2025-05-20 09:38:06.345391891 +0200 @@ -1,5 +1,5 @@ name: talosctl -version: 1.10.1 -mtime: 1746612636 -commit: 52269e8122cba4e9a2f1d4dcff0e1e32498c5b23 +version: 1.10.2 +mtime: 1747404264 +commit: 1cf5914b6e9c7ff9ffd1576602e6beafcffc147b ++++++ vendor.tar.gz ++++++ /work/SRC/openSUSE:Factory/talosctl/vendor.tar.gz /work/SRC/openSUSE:Factory/.talosctl.new.30101/vendor.tar.gz differ: char 13, line 1
