From ad451ea5b2450f245c6abf3f1402f4de9bc1a459 Mon Sep 17 00:00:00 2001 From: Andrew Kenworthy Date: Wed, 14 Oct 2026 10:59:36 +0200 Subject: [PATCH 1/5] chore: Replace serde_yaml with yaml_serde --- Cargo.lock | 70 +++---- Cargo.nix | 196 +++++++++--------- Cargo.toml | 6 +- crate-hashes.json | 18 +- rust/operator-binary/Cargo.toml | 4 +- .../operator-binary/src/airflow_controller.rs | 2 +- .../src/controller/build/mod.rs | 34 +-- .../build/properties/webserver_config.rs | 12 +- .../src/controller/build/resource/executor.rs | 4 +- rust/operator-binary/src/controller/mod.rs | 4 +- .../src/controller/validate.rs | 12 +- rust/operator-binary/src/crd/affinity.rs | 8 +- .../operator-binary/src/crd/authentication.rs | 8 +- rust/operator-binary/src/crd/mod.rs | 10 +- 14 files changed, 198 insertions(+), 190 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index fc06d2e8..9025622e 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1706,7 +1706,7 @@ dependencies = [ [[package]] name = "k8s-version" version = "0.1.3" -source = "git+https://github.com/stackabletech/operator-rs.git?tag=stackable-operator-0.119.0#ed84d456ff0b8324db3d7444659cb207564be8c9" +source = "git+https://github.com/stackabletech//operator-rs.git?branch=main#19934e0b539091e03f42a9d9ca08813a5c947e94" dependencies = [ "darling 0.24.1", "regex", @@ -1870,6 +1870,12 @@ version = "0.2.16" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b6d2cec3eae94f9f509c767b45932f1ada8350c4bdb85af2fcab4a3c14807981" +[[package]] +name = "libyaml-rs" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2e126dda6f34391ab7b444f9922055facc83c07a910da3eb16f1e4d9c45dc777" + [[package]] name = "libz-sys" version = "1.1.29" @@ -2971,19 +2977,6 @@ dependencies = [ "serde", ] -[[package]] -name = "serde_yaml" -version = "0.9.34+deprecated" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6a8b1a1a2ebf674015cc02edccce75287f1a0130d394307b36743c2f5d504b47" -dependencies = [ - "indexmap", - "itoa", - "ryu", - "serde", - "unsafe-libyaml", -] - [[package]] name = "sha1" version = "0.10.7" @@ -3164,18 +3157,18 @@ dependencies = [ "semver", "serde", "serde_json", - "serde_yaml", "snafu 0.9.2", "stackable-operator", "strum", "tokio", "tracing", + "yaml_serde", ] [[package]] name = "stackable-certs" version = "0.4.1" -source = "git+https://github.com/stackabletech/operator-rs.git?tag=stackable-operator-0.119.0#ed84d456ff0b8324db3d7444659cb207564be8c9" +source = "git+https://github.com/stackabletech//operator-rs.git?branch=main#19934e0b539091e03f42a9d9ca08813a5c947e94" dependencies = [ "const-oid", "ecdsa", @@ -3198,8 +3191,8 @@ dependencies = [ [[package]] name = "stackable-operator" -version = "0.119.0" -source = "git+https://github.com/stackabletech/operator-rs.git?tag=stackable-operator-0.119.0#ed84d456ff0b8324db3d7444659cb207564be8c9" +version = "0.120.0" +source = "git+https://github.com/stackabletech//operator-rs.git?branch=main#19934e0b539091e03f42a9d9ca08813a5c947e94" dependencies = [ "base64 0.23.1", "clap", @@ -3222,7 +3215,6 @@ dependencies = [ "semver", "serde", "serde_json", - "serde_yaml", "sha2", "snafu 0.9.2", "stackable-operator-derive", @@ -3238,12 +3230,13 @@ dependencies = [ "url", "uuid", "xml", + "yaml_serde", ] [[package]] name = "stackable-operator-derive" version = "0.3.1" -source = "git+https://github.com/stackabletech/operator-rs.git?tag=stackable-operator-0.119.0#ed84d456ff0b8324db3d7444659cb207564be8c9" +source = "git+https://github.com/stackabletech//operator-rs.git?branch=main#19934e0b539091e03f42a9d9ca08813a5c947e94" dependencies = [ "darling 0.24.1", "proc-macro2", @@ -3254,7 +3247,7 @@ dependencies = [ [[package]] name = "stackable-shared" version = "0.1.2" -source = "git+https://github.com/stackabletech/operator-rs.git?tag=stackable-operator-0.119.0#ed84d456ff0b8324db3d7444659cb207564be8c9" +source = "git+https://github.com/stackabletech//operator-rs.git?branch=main#19934e0b539091e03f42a9d9ca08813a5c947e94" dependencies = [ "jiff", "k8s-openapi", @@ -3262,16 +3255,16 @@ dependencies = [ "schemars", "semver", "serde", - "serde_yaml", "snafu 0.9.2", "strum", "time", + "yaml_serde", ] [[package]] name = "stackable-telemetry" version = "0.6.5" -source = "git+https://github.com/stackabletech/operator-rs.git?tag=stackable-operator-0.119.0#ed84d456ff0b8324db3d7444659cb207564be8c9" +source = "git+https://github.com/stackabletech//operator-rs.git?branch=main#19934e0b539091e03f42a9d9ca08813a5c947e94" dependencies = [ "axum", "clap", @@ -3294,22 +3287,22 @@ dependencies = [ [[package]] name = "stackable-versioned" -version = "0.11.1" -source = "git+https://github.com/stackabletech/operator-rs.git?tag=stackable-operator-0.119.0#ed84d456ff0b8324db3d7444659cb207564be8c9" +version = "0.12.0" +source = "git+https://github.com/stackabletech//operator-rs.git?branch=main#19934e0b539091e03f42a9d9ca08813a5c947e94" dependencies = [ "kube", "schemars", "serde", "serde_json", - "serde_yaml", "snafu 0.9.2", "stackable-versioned-macros", + "yaml_serde", ] [[package]] name = "stackable-versioned-macros" -version = "0.11.1" -source = "git+https://github.com/stackabletech/operator-rs.git?tag=stackable-operator-0.119.0#ed84d456ff0b8324db3d7444659cb207564be8c9" +version = "0.12.0" +source = "git+https://github.com/stackabletech//operator-rs.git?branch=main#19934e0b539091e03f42a9d9ca08813a5c947e94" dependencies = [ "convert_case", "darling 0.24.1", @@ -3326,7 +3319,7 @@ dependencies = [ [[package]] name = "stackable-webhook" version = "0.10.0" -source = "git+https://github.com/stackabletech/operator-rs.git?tag=stackable-operator-0.119.0#ed84d456ff0b8324db3d7444659cb207564be8c9" +source = "git+https://github.com/stackabletech//operator-rs.git?branch=main#19934e0b539091e03f42a9d9ca08813a5c947e94" dependencies = [ "arc-swap", "async-trait", @@ -3915,12 +3908,6 @@ version = "0.2.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ebc1c04c71510c7f702b52b7c350734c9ff1295c464a03335b00bb84fc54f853" -[[package]] -name = "unsafe-libyaml" -version = "0.2.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "673aac59facbab8a9007c7f6108d11f63b603f7cabff99fabf650fea5c32b861" - [[package]] name = "untrusted" version = "0.9.0" @@ -4289,6 +4276,19 @@ version = "1.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2f45bb2c13fec6a6cb4c0f76a7e94839e110a14ec803ec2940777a94c347bc52" +[[package]] +name = "yaml_serde" +version = "0.10.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "33b729a08a9a6be689bbad3e2bf8015926db54b6622cc89c3a5f7dc174b9e918" +dependencies = [ + "indexmap", + "itoa", + "libyaml-rs", + "ryu", + "serde", +] + [[package]] name = "yoke" version = "0.8.3" diff --git a/Cargo.nix b/Cargo.nix index dedc17a6..90a874bc 100644 --- a/Cargo.nix +++ b/Cargo.nix @@ -5410,9 +5410,9 @@ rec { edition = "2024"; workspace_member = null; src = pkgs.fetchgit { - url = "https://github.com/stackabletech/operator-rs.git"; - rev = "ed84d456ff0b8324db3d7444659cb207564be8c9"; - sha256 = "1ra6n0mi633sipsgrli7hhxv64khhs00l448mqg61gxsjc4y02r0"; + url = "https://github.com/stackabletech//operator-rs.git"; + rev = "19934e0b539091e03f42a9d9ca08813a5c947e94"; + sha256 = "0ldyz57jf5px7fn44x4n8cfha6sjsxirdispxksghmrfwmy76jn4"; }; libName = "k8s_version"; authors = [ @@ -6143,6 +6143,19 @@ rec { }; resolvedDefaultFeatures = [ "arch" "default" ]; }; + "libyaml-rs" = rec { + crateName = "libyaml-rs"; + version = "0.3.0"; + edition = "2021"; + crateBin = []; + sha256 = "0xy7bp2dkr7i2vms63cigb087k7salh95ya4njvilf9ldzd6s4if"; + libName = "libyaml_rs"; + authors = [ + "David Tolnay " + "YAML Organization " + ]; + + }; "libz-sys" = rec { crateName = "libz-sys"; version = "1.1.29"; @@ -9816,38 +9829,6 @@ rec { } ]; - }; - "serde_yaml" = rec { - crateName = "serde_yaml"; - version = "0.9.34+deprecated"; - edition = "2021"; - sha256 = "0isba1fjyg3l6rxk156k600ilzr8fp7crv82rhal0rxz5qd1m2va"; - authors = [ - "David Tolnay " - ]; - dependencies = [ - { - name = "indexmap"; - packageId = "indexmap"; - } - { - name = "itoa"; - packageId = "itoa"; - } - { - name = "ryu"; - packageId = "ryu"; - } - { - name = "serde"; - packageId = "serde"; - } - { - name = "unsafe-libyaml"; - packageId = "unsafe-libyaml"; - } - ]; - }; "sha1" = rec { crateName = "sha1"; @@ -10375,10 +10356,6 @@ rec { name = "serde_json"; packageId = "serde_json"; } - { - name = "serde_yaml"; - packageId = "serde_yaml"; - } { name = "snafu"; packageId = "snafu 0.9.2"; @@ -10402,6 +10379,10 @@ rec { name = "tracing"; packageId = "tracing"; } + { + name = "yaml_serde"; + packageId = "yaml_serde"; + } ]; buildDependencies = [ { @@ -10415,15 +10396,15 @@ rec { name = "rstest"; packageId = "rstest"; } - { - name = "serde_yaml"; - packageId = "serde_yaml"; - } { name = "stackable-operator"; packageId = "stackable-operator"; features = [ "crds" "webhook" "test-support" ]; } + { + name = "yaml_serde"; + packageId = "yaml_serde"; + } ]; }; @@ -10433,9 +10414,9 @@ rec { edition = "2024"; workspace_member = null; src = pkgs.fetchgit { - url = "https://github.com/stackabletech/operator-rs.git"; - rev = "ed84d456ff0b8324db3d7444659cb207564be8c9"; - sha256 = "1ra6n0mi633sipsgrli7hhxv64khhs00l448mqg61gxsjc4y02r0"; + url = "https://github.com/stackabletech//operator-rs.git"; + rev = "19934e0b539091e03f42a9d9ca08813a5c947e94"; + sha256 = "0ldyz57jf5px7fn44x4n8cfha6sjsxirdispxksghmrfwmy76jn4"; }; libName = "stackable_certs"; authors = [ @@ -10532,13 +10513,13 @@ rec { }; "stackable-operator" = rec { crateName = "stackable-operator"; - version = "0.119.0"; + version = "0.120.0"; edition = "2024"; workspace_member = null; src = pkgs.fetchgit { - url = "https://github.com/stackabletech/operator-rs.git"; - rev = "ed84d456ff0b8324db3d7444659cb207564be8c9"; - sha256 = "1ra6n0mi633sipsgrli7hhxv64khhs00l448mqg61gxsjc4y02r0"; + url = "https://github.com/stackabletech//operator-rs.git"; + rev = "19934e0b539091e03f42a9d9ca08813a5c947e94"; + sha256 = "0ldyz57jf5px7fn44x4n8cfha6sjsxirdispxksghmrfwmy76jn4"; }; libName = "stackable_operator"; authors = [ @@ -10640,10 +10621,6 @@ rec { name = "serde_json"; packageId = "serde_json"; } - { - name = "serde_yaml"; - packageId = "serde_yaml"; - } { name = "sha2"; packageId = "sha2"; @@ -10713,6 +10690,10 @@ rec { name = "xml"; packageId = "xml"; } + { + name = "yaml_serde"; + packageId = "yaml_serde"; + } ]; features = { "certs" = [ "dep:stackable-certs" ]; @@ -10735,9 +10716,9 @@ rec { edition = "2024"; workspace_member = null; src = pkgs.fetchgit { - url = "https://github.com/stackabletech/operator-rs.git"; - rev = "ed84d456ff0b8324db3d7444659cb207564be8c9"; - sha256 = "1ra6n0mi633sipsgrli7hhxv64khhs00l448mqg61gxsjc4y02r0"; + url = "https://github.com/stackabletech//operator-rs.git"; + rev = "19934e0b539091e03f42a9d9ca08813a5c947e94"; + sha256 = "0ldyz57jf5px7fn44x4n8cfha6sjsxirdispxksghmrfwmy76jn4"; }; procMacro = true; libName = "stackable_operator_derive"; @@ -10770,9 +10751,9 @@ rec { edition = "2024"; workspace_member = null; src = pkgs.fetchgit { - url = "https://github.com/stackabletech/operator-rs.git"; - rev = "ed84d456ff0b8324db3d7444659cb207564be8c9"; - sha256 = "1ra6n0mi633sipsgrli7hhxv64khhs00l448mqg61gxsjc4y02r0"; + url = "https://github.com/stackabletech//operator-rs.git"; + rev = "19934e0b539091e03f42a9d9ca08813a5c947e94"; + sha256 = "0ldyz57jf5px7fn44x4n8cfha6sjsxirdispxksghmrfwmy76jn4"; }; libName = "stackable_shared"; authors = [ @@ -10810,10 +10791,6 @@ rec { packageId = "serde"; features = [ "derive" ]; } - { - name = "serde_yaml"; - packageId = "serde_yaml"; - } { name = "snafu"; packageId = "snafu 0.9.2"; @@ -10828,6 +10805,10 @@ rec { packageId = "time"; optional = true; } + { + name = "yaml_serde"; + packageId = "yaml_serde"; + } ]; devDependencies = [ { @@ -10851,9 +10832,9 @@ rec { edition = "2024"; workspace_member = null; src = pkgs.fetchgit { - url = "https://github.com/stackabletech/operator-rs.git"; - rev = "ed84d456ff0b8324db3d7444659cb207564be8c9"; - sha256 = "1ra6n0mi633sipsgrli7hhxv64khhs00l448mqg61gxsjc4y02r0"; + url = "https://github.com/stackabletech//operator-rs.git"; + rev = "19934e0b539091e03f42a9d9ca08813a5c947e94"; + sha256 = "0ldyz57jf5px7fn44x4n8cfha6sjsxirdispxksghmrfwmy76jn4"; }; libName = "stackable_telemetry"; authors = [ @@ -10957,13 +10938,13 @@ rec { }; "stackable-versioned" = rec { crateName = "stackable-versioned"; - version = "0.11.1"; + version = "0.12.0"; edition = "2024"; workspace_member = null; src = pkgs.fetchgit { - url = "https://github.com/stackabletech/operator-rs.git"; - rev = "ed84d456ff0b8324db3d7444659cb207564be8c9"; - sha256 = "1ra6n0mi633sipsgrli7hhxv64khhs00l448mqg61gxsjc4y02r0"; + url = "https://github.com/stackabletech//operator-rs.git"; + rev = "19934e0b539091e03f42a9d9ca08813a5c947e94"; + sha256 = "0ldyz57jf5px7fn44x4n8cfha6sjsxirdispxksghmrfwmy76jn4"; }; libName = "stackable_versioned"; authors = [ @@ -10990,10 +10971,6 @@ rec { name = "serde_json"; packageId = "serde_json"; } - { - name = "serde_yaml"; - packageId = "serde_yaml"; - } { name = "snafu"; packageId = "snafu 0.9.2"; @@ -11002,18 +10979,22 @@ rec { name = "stackable-versioned-macros"; packageId = "stackable-versioned-macros"; } + { + name = "yaml_serde"; + packageId = "yaml_serde"; + } ]; }; "stackable-versioned-macros" = rec { crateName = "stackable-versioned-macros"; - version = "0.11.1"; + version = "0.12.0"; edition = "2024"; workspace_member = null; src = pkgs.fetchgit { - url = "https://github.com/stackabletech/operator-rs.git"; - rev = "ed84d456ff0b8324db3d7444659cb207564be8c9"; - sha256 = "1ra6n0mi633sipsgrli7hhxv64khhs00l448mqg61gxsjc4y02r0"; + url = "https://github.com/stackabletech//operator-rs.git"; + rev = "19934e0b539091e03f42a9d9ca08813a5c947e94"; + sha256 = "0ldyz57jf5px7fn44x4n8cfha6sjsxirdispxksghmrfwmy76jn4"; }; procMacro = true; libName = "stackable_versioned_macros"; @@ -11075,9 +11056,9 @@ rec { edition = "2024"; workspace_member = null; src = pkgs.fetchgit { - url = "https://github.com/stackabletech/operator-rs.git"; - rev = "ed84d456ff0b8324db3d7444659cb207564be8c9"; - sha256 = "1ra6n0mi633sipsgrli7hhxv64khhs00l448mqg61gxsjc4y02r0"; + url = "https://github.com/stackabletech//operator-rs.git"; + rev = "19934e0b539091e03f42a9d9ca08813a5c947e94"; + sha256 = "0ldyz57jf5px7fn44x4n8cfha6sjsxirdispxksghmrfwmy76jn4"; }; libName = "stackable_webhook"; authors = [ @@ -13171,18 +13152,6 @@ rec { }; resolvedDefaultFeatures = [ "default" ]; }; - "unsafe-libyaml" = rec { - crateName = "unsafe-libyaml"; - version = "0.2.11"; - edition = "2021"; - crateBin = []; - sha256 = "0qdq69ffl3v5pzx9kzxbghzn0fzn266i1xn70y88maybz9csqfk7"; - libName = "unsafe_libyaml"; - authors = [ - "David Tolnay " - ]; - - }; "untrusted" = rec { crateName = "untrusted"; version = "0.9.0"; @@ -15060,6 +15029,45 @@ rec { ]; }; + "yaml_serde" = rec { + crateName = "yaml_serde"; + version = "0.10.7"; + edition = "2021"; + sha256 = "0679p5sc2zaz7afchb32nradn9jr07w2ngmdpf4ycswsiah2kdrk"; + authors = [ + "YAML Organization " + ]; + dependencies = [ + { + name = "indexmap"; + packageId = "indexmap"; + usesDefaultFeatures = false; + } + { + name = "itoa"; + packageId = "itoa"; + } + { + name = "libyaml-rs"; + packageId = "libyaml-rs"; + } + { + name = "ryu"; + packageId = "ryu"; + } + { + name = "serde"; + packageId = "serde"; + usesDefaultFeatures = false; + features = [ "alloc" ]; + } + ]; + features = { + "default" = [ "std" ]; + "std" = [ "serde/std" "indexmap/std" ]; + }; + resolvedDefaultFeatures = [ "default" "std" ]; + }; "yoke" = rec { crateName = "yoke"; version = "0.8.3"; diff --git a/Cargo.toml b/Cargo.toml index 82802776..83997078 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -13,7 +13,7 @@ repository = "https://github.com/stackabletech/airflow-operator" stackable-operator = { git = "https://github.com/stackabletech/operator-rs.git", features = [ "crds", "webhook", -], tag = "stackable-operator-0.119.0" } +], tag = "stackable-operator-0.120.0" } anyhow = "1.0" built = { version = "0.8", features = ["chrono", "git2"] } @@ -26,12 +26,12 @@ rstest = "0.26" semver = "1.0" serde = { version = "1.0", features = ["derive"] } serde_json = "1.0" -serde_yaml = "0.9" +yaml_serde = "0.10" snafu = "0.9" strum = { version = "0.28", features = ["derive"] } tokio = { version = "1.53", features = ["full"] } tracing = "0.1" [patch."https://github.com/stackabletech/operator-rs.git"] -# stackable-operator = { git = "https://github.com/stackabletech//operator-rs.git", branch = "main" } +stackable-operator = { git = "https://github.com/stackabletech//operator-rs.git", branch = "main" } # stackable-operator = { path = "../operator-rs/crates/stackable-operator" } diff --git a/crate-hashes.json b/crate-hashes.json index 2046087d..3295a68b 100644 --- a/crate-hashes.json +++ b/crate-hashes.json @@ -1,11 +1,11 @@ { - "git+https://github.com/stackabletech/operator-rs.git?tag=stackable-operator-0.119.0#k8s-version@0.1.3": "1ra6n0mi633sipsgrli7hhxv64khhs00l448mqg61gxsjc4y02r0", - "git+https://github.com/stackabletech/operator-rs.git?tag=stackable-operator-0.119.0#stackable-certs@0.4.1": "1ra6n0mi633sipsgrli7hhxv64khhs00l448mqg61gxsjc4y02r0", - "git+https://github.com/stackabletech/operator-rs.git?tag=stackable-operator-0.119.0#stackable-operator-derive@0.3.1": "1ra6n0mi633sipsgrli7hhxv64khhs00l448mqg61gxsjc4y02r0", - "git+https://github.com/stackabletech/operator-rs.git?tag=stackable-operator-0.119.0#stackable-operator@0.119.0": "1ra6n0mi633sipsgrli7hhxv64khhs00l448mqg61gxsjc4y02r0", - "git+https://github.com/stackabletech/operator-rs.git?tag=stackable-operator-0.119.0#stackable-shared@0.1.2": "1ra6n0mi633sipsgrli7hhxv64khhs00l448mqg61gxsjc4y02r0", - "git+https://github.com/stackabletech/operator-rs.git?tag=stackable-operator-0.119.0#stackable-telemetry@0.6.5": "1ra6n0mi633sipsgrli7hhxv64khhs00l448mqg61gxsjc4y02r0", - "git+https://github.com/stackabletech/operator-rs.git?tag=stackable-operator-0.119.0#stackable-versioned-macros@0.11.1": "1ra6n0mi633sipsgrli7hhxv64khhs00l448mqg61gxsjc4y02r0", - "git+https://github.com/stackabletech/operator-rs.git?tag=stackable-operator-0.119.0#stackable-versioned@0.11.1": "1ra6n0mi633sipsgrli7hhxv64khhs00l448mqg61gxsjc4y02r0", - "git+https://github.com/stackabletech/operator-rs.git?tag=stackable-operator-0.119.0#stackable-webhook@0.10.0": "1ra6n0mi633sipsgrli7hhxv64khhs00l448mqg61gxsjc4y02r0" + "git+https://github.com/stackabletech//operator-rs.git?branch=main#k8s-version@0.1.3": "0ldyz57jf5px7fn44x4n8cfha6sjsxirdispxksghmrfwmy76jn4", + "git+https://github.com/stackabletech//operator-rs.git?branch=main#stackable-certs@0.4.1": "0ldyz57jf5px7fn44x4n8cfha6sjsxirdispxksghmrfwmy76jn4", + "git+https://github.com/stackabletech//operator-rs.git?branch=main#stackable-operator-derive@0.3.1": "0ldyz57jf5px7fn44x4n8cfha6sjsxirdispxksghmrfwmy76jn4", + "git+https://github.com/stackabletech//operator-rs.git?branch=main#stackable-operator@0.120.0": "0ldyz57jf5px7fn44x4n8cfha6sjsxirdispxksghmrfwmy76jn4", + "git+https://github.com/stackabletech//operator-rs.git?branch=main#stackable-shared@0.1.2": "0ldyz57jf5px7fn44x4n8cfha6sjsxirdispxksghmrfwmy76jn4", + "git+https://github.com/stackabletech//operator-rs.git?branch=main#stackable-telemetry@0.6.5": "0ldyz57jf5px7fn44x4n8cfha6sjsxirdispxksghmrfwmy76jn4", + "git+https://github.com/stackabletech//operator-rs.git?branch=main#stackable-versioned-macros@0.12.0": "0ldyz57jf5px7fn44x4n8cfha6sjsxirdispxksghmrfwmy76jn4", + "git+https://github.com/stackabletech//operator-rs.git?branch=main#stackable-versioned@0.12.0": "0ldyz57jf5px7fn44x4n8cfha6sjsxirdispxksghmrfwmy76jn4", + "git+https://github.com/stackabletech//operator-rs.git?branch=main#stackable-webhook@0.10.0": "0ldyz57jf5px7fn44x4n8cfha6sjsxirdispxksghmrfwmy76jn4" } \ No newline at end of file diff --git a/rust/operator-binary/Cargo.toml b/rust/operator-binary/Cargo.toml index 3e4f5b9d..46221b82 100644 --- a/rust/operator-binary/Cargo.toml +++ b/rust/operator-binary/Cargo.toml @@ -20,7 +20,7 @@ indoc.workspace = true semver.workspace = true serde.workspace = true serde_json.workspace = true -serde_yaml.workspace = true +yaml_serde.workspace = true snafu.workspace = true strum.workspace = true tokio.workspace = true @@ -31,5 +31,5 @@ built.workspace = true [dev-dependencies] rstest.workspace = true -serde_yaml.workspace = true +yaml_serde.workspace = true stackable-operator = { workspace = true, features = ["test-support"] } diff --git a/rust/operator-binary/src/airflow_controller.rs b/rust/operator-binary/src/airflow_controller.rs index fd7b701e..86add49d 100644 --- a/rust/operator-binary/src/airflow_controller.rs +++ b/rust/operator-binary/src/airflow_controller.rs @@ -158,7 +158,7 @@ mod tests { /// API, and because the spec is invalid, before the [`DeserializeGuard`] is unwrapped. #[test] fn reconcile_exits_early_for_deleted_cluster() { - let airflow = serde_yaml::from_str( + let airflow = yaml_serde::from_str( r#" apiVersion: airflow.stackable.tech/v1alpha2 kind: AirflowCluster diff --git a/rust/operator-binary/src/controller/build/mod.rs b/rust/operator-binary/src/controller/build/mod.rs index c9fb0cee..376eaed4 100644 --- a/rust/operator-binary/src/controller/build/mod.rs +++ b/rust/operator-binary/src/controller/build/mod.rs @@ -304,7 +304,7 @@ pub(crate) mod test_support { pub fn validated_cluster_with( executor_key: &str, executor_config: &str, - patch: impl FnOnce(&mut serde_yaml::Value), + patch: impl FnOnce(&mut yaml_serde::Value), ) -> ValidatedCluster { let cluster_yaml = r#" apiVersion: airflow.stackable.tech/v1alpha2 @@ -338,20 +338,20 @@ pub(crate) mod test_support { "#; // The executor block is inserted into the parsed document rather than spliced into the // YAML text, so the fixture does not depend on matching the template's indentation. - let mut cluster_value: serde_yaml::Value = - serde_yaml::from_str(cluster_yaml).expect("the test CR is valid YAML"); + let mut cluster_value: yaml_serde::Value = + yaml_serde::from_str(cluster_yaml).expect("the test CR is valid YAML"); cluster_value["spec"] .as_mapping_mut() .expect("the test CR has a spec mapping") .insert( executor_key.into(), - serde_yaml::from_str(executor_config).expect("the executor config is valid YAML"), + yaml_serde::from_str(executor_config).expect("the executor config is valid YAML"), ); patch(&mut cluster_value); let cluster: v1alpha2::AirflowCluster = - serde_yaml::with::singleton_map_recursive::deserialize(cluster_value) + yaml_serde::with::singleton_map_recursive::deserialize(cluster_value) .expect("the test CR deserialises"); validate_cluster(&cluster, "oci.stackable.tech/sdp", dereferenced_objects()) @@ -374,9 +374,9 @@ pub(crate) mod test_support { /// A Celery-executor cluster whose webserver trusts the given reverse proxies. pub fn cluster_with_trusted_proxies(trusted_proxies: &[&str]) -> ValidatedCluster { - let trusted_proxies: Vec = trusted_proxies + let trusted_proxies: Vec = trusted_proxies .iter() - .map(|proxy| serde_yaml::Value::String((*proxy).to_owned())) + .map(|proxy| yaml_serde::Value::String((*proxy).to_owned())) .collect(); validated_cluster_with( @@ -388,9 +388,9 @@ pub(crate) mod test_support { .expect("the webservers role is a mapping") .insert( "roleConfig".into(), - serde_yaml::Value::Mapping(serde_yaml::Mapping::from_iter([( - serde_yaml::Value::String("trustedProxies".to_owned()), - serde_yaml::Value::Sequence(trusted_proxies), + yaml_serde::Value::Mapping(yaml_serde::Mapping::from_iter([( + yaml_serde::Value::String("trustedProxies".to_owned()), + yaml_serde::Value::Sequence(trusted_proxies), )])), ); }, @@ -652,24 +652,24 @@ mod tests { /// Builds a 2.x Celery-executor cluster whose webserver trusts the given reverse proxies. fn cluster_with_trusted_proxies_on_airflow_2x(trusted_proxies: &[&str]) -> ValidatedCluster { - let trusted_proxies: Vec = trusted_proxies + let trusted_proxies: Vec = trusted_proxies .iter() - .map(|proxy| serde_yaml::Value::String((*proxy).to_owned())) + .map(|proxy| yaml_serde::Value::String((*proxy).to_owned())) .collect(); validated_cluster_with( "celeryExecutors", "{config: {}, roleGroups: {}}", move |cluster| { - cluster["spec"]["image"]["productVersion"] = serde_yaml::Value::from("2.9.3"); + cluster["spec"]["image"]["productVersion"] = yaml_serde::Value::from("2.9.3"); cluster["spec"]["webservers"] .as_mapping_mut() .expect("the webservers role is a mapping") .insert( "roleConfig".into(), - serde_yaml::Value::Mapping(serde_yaml::Mapping::from_iter([( - serde_yaml::Value::String("trustedProxies".to_owned()), - serde_yaml::Value::Sequence(trusted_proxies.clone()), + yaml_serde::Value::Mapping(yaml_serde::Mapping::from_iter([( + yaml_serde::Value::String("trustedProxies".to_owned()), + yaml_serde::Value::Sequence(trusted_proxies.clone()), )])), ); }, @@ -729,7 +729,7 @@ mod tests { .expect("clusterConfig is a mapping") .insert( "volumeMounts".into(), - serde_yaml::from_str(volume_mounts).expect("valid volumeMounts YAML"), + yaml_serde::from_str(volume_mounts).expect("valid volumeMounts YAML"), ); }) } diff --git a/rust/operator-binary/src/controller/build/properties/webserver_config.rs b/rust/operator-binary/src/controller/build/properties/webserver_config.rs index 8a68d30c..74092f67 100644 --- a/rust/operator-binary/src/controller/build/properties/webserver_config.rs +++ b/rust/operator-binary/src/controller/build/properties/webserver_config.rs @@ -457,9 +457,9 @@ mod tests { caCert: secretClass: openldap-tls "#; - let deserializer = serde_yaml::Deserializer::from_str(ldap_provider_yaml); + let deserializer = yaml_serde::Deserializer::from_str(ldap_provider_yaml); let ldap_provider: ldap::v1alpha1::AuthenticationProvider = - serde_yaml::with::singleton_map_recursive::deserialize(deserializer).unwrap(); + yaml_serde::with::singleton_map_recursive::deserialize(deserializer).unwrap(); let authentication_config = AirflowClientAuthenticationDetailsResolved { authentication_classes_resolved: vec![AirflowAuthenticationClassResolved::Ldap { @@ -521,9 +521,9 @@ mod tests { provider_hint: Keycloak " ); - let deserializer = serde_yaml::Deserializer::from_str(&oidc_provider_yaml1); + let deserializer = yaml_serde::Deserializer::from_str(&oidc_provider_yaml1); let oidc_provider1: oidc::v1alpha1::AuthenticationProvider = - serde_yaml::with::singleton_map_recursive::deserialize(deserializer).unwrap(); + yaml_serde::with::singleton_map_recursive::deserialize(deserializer).unwrap(); let oidc_provider_yaml2 = r#" hostname: my.keycloak2.server @@ -532,9 +532,9 @@ mod tests { - openid provider_hint: Keycloak "#; - let deserializer = serde_yaml::Deserializer::from_str(oidc_provider_yaml2); + let deserializer = yaml_serde::Deserializer::from_str(oidc_provider_yaml2); let oidc_provider2: oidc::v1alpha1::AuthenticationProvider = - serde_yaml::with::singleton_map_recursive::deserialize(deserializer).unwrap(); + yaml_serde::with::singleton_map_recursive::deserialize(deserializer).unwrap(); let authentication_config = AirflowClientAuthenticationDetailsResolved { authentication_classes_resolved: vec![ diff --git a/rust/operator-binary/src/controller/build/resource/executor.rs b/rust/operator-binary/src/controller/build/resource/executor.rs index 1c062434..9309e0f5 100644 --- a/rust/operator-binary/src/controller/build/resource/executor.rs +++ b/rust/operator-binary/src/controller/build/resource/executor.rs @@ -56,7 +56,7 @@ pub enum Error { }, #[snafu(display("pod template serialization"))] - PodTemplateSerde { source: serde_yaml::Error }, + PodTemplateSerde { source: yaml_serde::Error }, #[snafu(display("failed to build shared pod resources"))] Pod { @@ -202,7 +202,7 @@ pub fn build_executor_template_config_map( ) .add_data( TEMPLATE_NAME, - serde_yaml::to_string(&pod_template).context(PodTemplateSerdeSnafu)?, + yaml_serde::to_string(&pod_template).context(PodTemplateSerdeSnafu)?, ); Ok(cm_builder diff --git a/rust/operator-binary/src/controller/mod.rs b/rust/operator-binary/src/controller/mod.rs index f6e0db0b..1fc09a5d 100644 --- a/rust/operator-binary/src/controller/mod.rs +++ b/rust/operator-binary/src/controller/mod.rs @@ -661,8 +661,8 @@ mod tests { config: {{}} "}; - let deserializer = serde_yaml::Deserializer::from_str(&cluster); - serde_yaml::with::singleton_map_recursive::deserialize(deserializer) + let deserializer = yaml_serde::Deserializer::from_str(&cluster); + yaml_serde::with::singleton_map_recursive::deserialize(deserializer) .expect("the test CR deserialises") } } diff --git a/rust/operator-binary/src/controller/validate.rs b/rust/operator-binary/src/controller/validate.rs index bfe7a5f0..a0875a23 100644 --- a/rust/operator-binary/src/controller/validate.rs +++ b/rust/operator-binary/src/controller/validate.rs @@ -504,8 +504,8 @@ mod tests { kubernetesExecutors: config: {} "#; - let deserializer = serde_yaml::Deserializer::from_str(cluster_yaml); - serde_yaml::with::singleton_map_recursive::deserialize(deserializer).unwrap() + let deserializer = yaml_serde::Deserializer::from_str(cluster_yaml); + yaml_serde::with::singleton_map_recursive::deserialize(deserializer).unwrap() } #[test] @@ -599,9 +599,9 @@ mod tests { kubernetesExecutors: config: {} "#; - let deserializer = serde_yaml::Deserializer::from_str(cluster_yaml); + let deserializer = yaml_serde::Deserializer::from_str(cluster_yaml); let result: Result = - serde_yaml::with::singleton_map_recursive::deserialize(deserializer); + yaml_serde::with::singleton_map_recursive::deserialize(deserializer); assert!( result.is_err(), "a `null` configOverrides value should be rejected: values are typed as `String`" @@ -686,9 +686,9 @@ mod tests { kubernetesExecutors: config: {} "#; - let deserializer = serde_yaml::Deserializer::from_str(cluster_yaml); + let deserializer = yaml_serde::Deserializer::from_str(cluster_yaml); let cluster: v1alpha2::AirflowCluster = - serde_yaml::with::singleton_map_recursive::deserialize(deserializer).unwrap(); + yaml_serde::with::singleton_map_recursive::deserialize(deserializer).unwrap(); let role = cluster .get_role(&AirflowRole::Webserver) .expect("webserver role"); diff --git a/rust/operator-binary/src/crd/affinity.rs b/rust/operator-binary/src/crd/affinity.rs index bc5f1e3c..89b7fc3d 100644 --- a/rust/operator-binary/src/crd/affinity.rs +++ b/rust/operator-binary/src/crd/affinity.rs @@ -138,9 +138,9 @@ mod tests { replicas: 1 "; - let deserializer = serde_yaml::Deserializer::from_str(cluster); + let deserializer = yaml_serde::Deserializer::from_str(cluster); let airflow: v1alpha2::AirflowCluster = - serde_yaml::with::singleton_map_recursive::deserialize(deserializer).unwrap(); + yaml_serde::with::singleton_map_recursive::deserialize(deserializer).unwrap(); let resolved_role = airflow .get_role(&role) @@ -269,9 +269,9 @@ mod tests { kubernetesExecutors: {} "; - let deserializer = serde_yaml::Deserializer::from_str(cluster); + let deserializer = yaml_serde::Deserializer::from_str(cluster); let airflow: v1alpha2::AirflowCluster = - serde_yaml::with::singleton_map_recursive::deserialize(deserializer).unwrap(); + yaml_serde::with::singleton_map_recursive::deserialize(deserializer).unwrap(); let expected: StackableAffinity = StackableAffinity { node_affinity: None, diff --git a/rust/operator-binary/src/crd/authentication.rs b/rust/operator-binary/src/crd/authentication.rs index d77f147e..333d1594 100644 --- a/rust/operator-binary/src/crd/authentication.rs +++ b/rust/operator-binary/src/crd/authentication.rs @@ -384,7 +384,7 @@ mod tests { assert_eq!( AirflowClientAuthenticationDetailsResolved { authentication_classes_resolved: vec![AirflowAuthenticationClassResolved::Ldap { - provider: serde_yaml::from_str("hostname: my.ldap.server").unwrap() + provider: yaml_serde::from_str("hostname: my.ldap.server").unwrap() }], user_registration: false, user_registration_role: "Gamma".into(), @@ -910,7 +910,7 @@ mod tests { fn deserialize_airflow_client_authentication_details( input: &str, ) -> Vec { - serde_yaml::from_str(input) + yaml_serde::from_str(input) .expect("The definition of the authentication configuration should be valid.") } @@ -921,10 +921,10 @@ mod tests { if input.is_empty() { Vec::new() } else { - let deserializer = serde_yaml::Deserializer::from_str(input); + let deserializer = yaml_serde::Deserializer::from_str(input); deserializer .map(|d| { - serde_yaml::with::singleton_map_recursive::deserialize(d) + yaml_serde::with::singleton_map_recursive::deserialize(d) .expect("The definition of the AuthenticationClass should be valid.") }) .collect() diff --git a/rust/operator-binary/src/crd/mod.rs b/rust/operator-binary/src/crd/mod.rs index 2a5eb9f2..3c29e5aa 100644 --- a/rust/operator-binary/src/crd/mod.rs +++ b/rust/operator-binary/src/crd/mod.rs @@ -1079,9 +1079,9 @@ mod tests { config: {} "; - let deserializer = serde_yaml::Deserializer::from_str(cluster); + let deserializer = yaml_serde::Deserializer::from_str(cluster); let cluster: v1alpha2::AirflowCluster = - serde_yaml::with::singleton_map_recursive::deserialize(deserializer).unwrap(); + yaml_serde::with::singleton_map_recursive::deserialize(deserializer).unwrap(); let resolved_airflow_image: ResolvedProductImage = cluster .spec @@ -1110,7 +1110,7 @@ mod tests { #[test] fn webserver_role_config_defaults_to_no_trusted_proxies() { let role_config: v1alpha2::WebserverRoleConfig = - serde_yaml::from_str("listenerClass: external-stable") + yaml_serde::from_str("listenerClass: external-stable") .expect("the role config deserialises"); assert!(role_config.trusted_proxies.is_empty()); @@ -1118,7 +1118,7 @@ mod tests { #[test] fn webserver_role_config_accepts_trusted_proxies() { - let role_config: v1alpha2::WebserverRoleConfig = serde_yaml::from_str( + let role_config: v1alpha2::WebserverRoleConfig = yaml_serde::from_str( " trustedProxies: - 10.244.0.0/16 @@ -1187,7 +1187,7 @@ mod tests { .expect("the test CR has a spec mapping") .insert( "dagProcessors".into(), - serde_yaml::from_str("{config: {}, roleGroups: {default: {config: {}}}}") + yaml_serde::from_str("{config: {}, roleGroups: {default: {config: {}}}}") .expect("the dag-processor role is valid YAML"), ); }); From fa7b4c3032276f584276d65845b8f6a381d88911 Mon Sep 17 00:00:00 2001 From: Andrew Kenworthy Date: Wed, 14 Oct 2026 11:04:56 +0200 Subject: [PATCH 2/5] changelog --- CHANGELOG.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 5a74769c..b0a19cad 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -53,6 +53,7 @@ - Bump stackable-operator to 0.119.0 ([#868]). - Docs: remove Spark submit/monitor classes and refer to demo usage instead ([#870]). - test: Bump vector-aggregator to 0.58.0 ([#876]). +- Replace the unmaintained `serde_yaml` with `yaml_serde` ([#879]). ### Fixed @@ -90,6 +91,7 @@ [#870]: https://github.com/stackabletech/airflow-operator/pull/870 [#872]: https://github.com/stackabletech/airflow-operator/pull/872 [#876]: https://github.com/stackabletech/airflow-operator/pull/876 +[#879]: https://github.com/stackabletech/airflow-operator/pull/879 ## [26.7.0] - 2026-07-21 From 3dec3b587dcda85e629812380586b925cae506ce Mon Sep 17 00:00:00 2001 From: Andrew Kenworthy Date: Wed, 14 Oct 2026 12:01:37 +0200 Subject: [PATCH 3/5] bump to op-rs 0.121 --- Cargo.lock | 28 ++++++++++----------- Cargo.nix | 64 +++++++++++++++++++++++------------------------ Cargo.toml | 4 +-- crate-hashes.json | 18 ++++++------- 4 files changed, 57 insertions(+), 57 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 9025622e..96cb3826 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1705,8 +1705,8 @@ dependencies = [ [[package]] name = "k8s-version" -version = "0.1.3" -source = "git+https://github.com/stackabletech//operator-rs.git?branch=main#19934e0b539091e03f42a9d9ca08813a5c947e94" +version = "0.1.4" +source = "git+https://github.com/stackabletech/operator-rs.git?tag=stackable-operator-0.121.0#433ac4fe45418d39631e683fac74cb49e11911f6" dependencies = [ "darling 0.24.1", "regex", @@ -3168,7 +3168,7 @@ dependencies = [ [[package]] name = "stackable-certs" version = "0.4.1" -source = "git+https://github.com/stackabletech//operator-rs.git?branch=main#19934e0b539091e03f42a9d9ca08813a5c947e94" +source = "git+https://github.com/stackabletech/operator-rs.git?tag=stackable-operator-0.121.0#433ac4fe45418d39631e683fac74cb49e11911f6" dependencies = [ "const-oid", "ecdsa", @@ -3191,8 +3191,8 @@ dependencies = [ [[package]] name = "stackable-operator" -version = "0.120.0" -source = "git+https://github.com/stackabletech//operator-rs.git?branch=main#19934e0b539091e03f42a9d9ca08813a5c947e94" +version = "0.121.0" +source = "git+https://github.com/stackabletech/operator-rs.git?tag=stackable-operator-0.121.0#433ac4fe45418d39631e683fac74cb49e11911f6" dependencies = [ "base64 0.23.1", "clap", @@ -3236,7 +3236,7 @@ dependencies = [ [[package]] name = "stackable-operator-derive" version = "0.3.1" -source = "git+https://github.com/stackabletech//operator-rs.git?branch=main#19934e0b539091e03f42a9d9ca08813a5c947e94" +source = "git+https://github.com/stackabletech/operator-rs.git?tag=stackable-operator-0.121.0#433ac4fe45418d39631e683fac74cb49e11911f6" dependencies = [ "darling 0.24.1", "proc-macro2", @@ -3246,8 +3246,8 @@ dependencies = [ [[package]] name = "stackable-shared" -version = "0.1.2" -source = "git+https://github.com/stackabletech//operator-rs.git?branch=main#19934e0b539091e03f42a9d9ca08813a5c947e94" +version = "0.2.0" +source = "git+https://github.com/stackabletech/operator-rs.git?tag=stackable-operator-0.121.0#433ac4fe45418d39631e683fac74cb49e11911f6" dependencies = [ "jiff", "k8s-openapi", @@ -3264,7 +3264,7 @@ dependencies = [ [[package]] name = "stackable-telemetry" version = "0.6.5" -source = "git+https://github.com/stackabletech//operator-rs.git?branch=main#19934e0b539091e03f42a9d9ca08813a5c947e94" +source = "git+https://github.com/stackabletech/operator-rs.git?tag=stackable-operator-0.121.0#433ac4fe45418d39631e683fac74cb49e11911f6" dependencies = [ "axum", "clap", @@ -3287,8 +3287,8 @@ dependencies = [ [[package]] name = "stackable-versioned" -version = "0.12.0" -source = "git+https://github.com/stackabletech//operator-rs.git?branch=main#19934e0b539091e03f42a9d9ca08813a5c947e94" +version = "0.13.0" +source = "git+https://github.com/stackabletech/operator-rs.git?tag=stackable-operator-0.121.0#433ac4fe45418d39631e683fac74cb49e11911f6" dependencies = [ "kube", "schemars", @@ -3301,8 +3301,8 @@ dependencies = [ [[package]] name = "stackable-versioned-macros" -version = "0.12.0" -source = "git+https://github.com/stackabletech//operator-rs.git?branch=main#19934e0b539091e03f42a9d9ca08813a5c947e94" +version = "0.13.0" +source = "git+https://github.com/stackabletech/operator-rs.git?tag=stackable-operator-0.121.0#433ac4fe45418d39631e683fac74cb49e11911f6" dependencies = [ "convert_case", "darling 0.24.1", @@ -3319,7 +3319,7 @@ dependencies = [ [[package]] name = "stackable-webhook" version = "0.10.0" -source = "git+https://github.com/stackabletech//operator-rs.git?branch=main#19934e0b539091e03f42a9d9ca08813a5c947e94" +source = "git+https://github.com/stackabletech/operator-rs.git?tag=stackable-operator-0.121.0#433ac4fe45418d39631e683fac74cb49e11911f6" dependencies = [ "arc-swap", "async-trait", diff --git a/Cargo.nix b/Cargo.nix index 90a874bc..94293b63 100644 --- a/Cargo.nix +++ b/Cargo.nix @@ -5406,13 +5406,13 @@ rec { }; "k8s-version" = rec { crateName = "k8s-version"; - version = "0.1.3"; + version = "0.1.4"; edition = "2024"; workspace_member = null; src = pkgs.fetchgit { - url = "https://github.com/stackabletech//operator-rs.git"; - rev = "19934e0b539091e03f42a9d9ca08813a5c947e94"; - sha256 = "0ldyz57jf5px7fn44x4n8cfha6sjsxirdispxksghmrfwmy76jn4"; + url = "https://github.com/stackabletech/operator-rs.git"; + rev = "433ac4fe45418d39631e683fac74cb49e11911f6"; + sha256 = "1dax2l1ghd609k19z4kznpnk5v40xbl84qwwxlfvwjamvf7jj6mm"; }; libName = "k8s_version"; authors = [ @@ -10414,9 +10414,9 @@ rec { edition = "2024"; workspace_member = null; src = pkgs.fetchgit { - url = "https://github.com/stackabletech//operator-rs.git"; - rev = "19934e0b539091e03f42a9d9ca08813a5c947e94"; - sha256 = "0ldyz57jf5px7fn44x4n8cfha6sjsxirdispxksghmrfwmy76jn4"; + url = "https://github.com/stackabletech/operator-rs.git"; + rev = "433ac4fe45418d39631e683fac74cb49e11911f6"; + sha256 = "1dax2l1ghd609k19z4kznpnk5v40xbl84qwwxlfvwjamvf7jj6mm"; }; libName = "stackable_certs"; authors = [ @@ -10513,13 +10513,13 @@ rec { }; "stackable-operator" = rec { crateName = "stackable-operator"; - version = "0.120.0"; + version = "0.121.0"; edition = "2024"; workspace_member = null; src = pkgs.fetchgit { - url = "https://github.com/stackabletech//operator-rs.git"; - rev = "19934e0b539091e03f42a9d9ca08813a5c947e94"; - sha256 = "0ldyz57jf5px7fn44x4n8cfha6sjsxirdispxksghmrfwmy76jn4"; + url = "https://github.com/stackabletech/operator-rs.git"; + rev = "433ac4fe45418d39631e683fac74cb49e11911f6"; + sha256 = "1dax2l1ghd609k19z4kznpnk5v40xbl84qwwxlfvwjamvf7jj6mm"; }; libName = "stackable_operator"; authors = [ @@ -10716,9 +10716,9 @@ rec { edition = "2024"; workspace_member = null; src = pkgs.fetchgit { - url = "https://github.com/stackabletech//operator-rs.git"; - rev = "19934e0b539091e03f42a9d9ca08813a5c947e94"; - sha256 = "0ldyz57jf5px7fn44x4n8cfha6sjsxirdispxksghmrfwmy76jn4"; + url = "https://github.com/stackabletech/operator-rs.git"; + rev = "433ac4fe45418d39631e683fac74cb49e11911f6"; + sha256 = "1dax2l1ghd609k19z4kznpnk5v40xbl84qwwxlfvwjamvf7jj6mm"; }; procMacro = true; libName = "stackable_operator_derive"; @@ -10747,13 +10747,13 @@ rec { }; "stackable-shared" = rec { crateName = "stackable-shared"; - version = "0.1.2"; + version = "0.2.0"; edition = "2024"; workspace_member = null; src = pkgs.fetchgit { - url = "https://github.com/stackabletech//operator-rs.git"; - rev = "19934e0b539091e03f42a9d9ca08813a5c947e94"; - sha256 = "0ldyz57jf5px7fn44x4n8cfha6sjsxirdispxksghmrfwmy76jn4"; + url = "https://github.com/stackabletech/operator-rs.git"; + rev = "433ac4fe45418d39631e683fac74cb49e11911f6"; + sha256 = "1dax2l1ghd609k19z4kznpnk5v40xbl84qwwxlfvwjamvf7jj6mm"; }; libName = "stackable_shared"; authors = [ @@ -10832,9 +10832,9 @@ rec { edition = "2024"; workspace_member = null; src = pkgs.fetchgit { - url = "https://github.com/stackabletech//operator-rs.git"; - rev = "19934e0b539091e03f42a9d9ca08813a5c947e94"; - sha256 = "0ldyz57jf5px7fn44x4n8cfha6sjsxirdispxksghmrfwmy76jn4"; + url = "https://github.com/stackabletech/operator-rs.git"; + rev = "433ac4fe45418d39631e683fac74cb49e11911f6"; + sha256 = "1dax2l1ghd609k19z4kznpnk5v40xbl84qwwxlfvwjamvf7jj6mm"; }; libName = "stackable_telemetry"; authors = [ @@ -10938,13 +10938,13 @@ rec { }; "stackable-versioned" = rec { crateName = "stackable-versioned"; - version = "0.12.0"; + version = "0.13.0"; edition = "2024"; workspace_member = null; src = pkgs.fetchgit { - url = "https://github.com/stackabletech//operator-rs.git"; - rev = "19934e0b539091e03f42a9d9ca08813a5c947e94"; - sha256 = "0ldyz57jf5px7fn44x4n8cfha6sjsxirdispxksghmrfwmy76jn4"; + url = "https://github.com/stackabletech/operator-rs.git"; + rev = "433ac4fe45418d39631e683fac74cb49e11911f6"; + sha256 = "1dax2l1ghd609k19z4kznpnk5v40xbl84qwwxlfvwjamvf7jj6mm"; }; libName = "stackable_versioned"; authors = [ @@ -10988,13 +10988,13 @@ rec { }; "stackable-versioned-macros" = rec { crateName = "stackable-versioned-macros"; - version = "0.12.0"; + version = "0.13.0"; edition = "2024"; workspace_member = null; src = pkgs.fetchgit { - url = "https://github.com/stackabletech//operator-rs.git"; - rev = "19934e0b539091e03f42a9d9ca08813a5c947e94"; - sha256 = "0ldyz57jf5px7fn44x4n8cfha6sjsxirdispxksghmrfwmy76jn4"; + url = "https://github.com/stackabletech/operator-rs.git"; + rev = "433ac4fe45418d39631e683fac74cb49e11911f6"; + sha256 = "1dax2l1ghd609k19z4kznpnk5v40xbl84qwwxlfvwjamvf7jj6mm"; }; procMacro = true; libName = "stackable_versioned_macros"; @@ -11056,9 +11056,9 @@ rec { edition = "2024"; workspace_member = null; src = pkgs.fetchgit { - url = "https://github.com/stackabletech//operator-rs.git"; - rev = "19934e0b539091e03f42a9d9ca08813a5c947e94"; - sha256 = "0ldyz57jf5px7fn44x4n8cfha6sjsxirdispxksghmrfwmy76jn4"; + url = "https://github.com/stackabletech/operator-rs.git"; + rev = "433ac4fe45418d39631e683fac74cb49e11911f6"; + sha256 = "1dax2l1ghd609k19z4kznpnk5v40xbl84qwwxlfvwjamvf7jj6mm"; }; libName = "stackable_webhook"; authors = [ diff --git a/Cargo.toml b/Cargo.toml index 83997078..65512fb4 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -13,7 +13,7 @@ repository = "https://github.com/stackabletech/airflow-operator" stackable-operator = { git = "https://github.com/stackabletech/operator-rs.git", features = [ "crds", "webhook", -], tag = "stackable-operator-0.120.0" } +], tag = "stackable-operator-0.121.0" } anyhow = "1.0" built = { version = "0.8", features = ["chrono", "git2"] } @@ -33,5 +33,5 @@ tokio = { version = "1.53", features = ["full"] } tracing = "0.1" [patch."https://github.com/stackabletech/operator-rs.git"] -stackable-operator = { git = "https://github.com/stackabletech//operator-rs.git", branch = "main" } +# stackable-operator = { git = "https://github.com/stackabletech//operator-rs.git", branch = "main" } # stackable-operator = { path = "../operator-rs/crates/stackable-operator" } diff --git a/crate-hashes.json b/crate-hashes.json index 3295a68b..36499215 100644 --- a/crate-hashes.json +++ b/crate-hashes.json @@ -1,11 +1,11 @@ { - "git+https://github.com/stackabletech//operator-rs.git?branch=main#k8s-version@0.1.3": "0ldyz57jf5px7fn44x4n8cfha6sjsxirdispxksghmrfwmy76jn4", - "git+https://github.com/stackabletech//operator-rs.git?branch=main#stackable-certs@0.4.1": "0ldyz57jf5px7fn44x4n8cfha6sjsxirdispxksghmrfwmy76jn4", - "git+https://github.com/stackabletech//operator-rs.git?branch=main#stackable-operator-derive@0.3.1": "0ldyz57jf5px7fn44x4n8cfha6sjsxirdispxksghmrfwmy76jn4", - "git+https://github.com/stackabletech//operator-rs.git?branch=main#stackable-operator@0.120.0": "0ldyz57jf5px7fn44x4n8cfha6sjsxirdispxksghmrfwmy76jn4", - "git+https://github.com/stackabletech//operator-rs.git?branch=main#stackable-shared@0.1.2": "0ldyz57jf5px7fn44x4n8cfha6sjsxirdispxksghmrfwmy76jn4", - "git+https://github.com/stackabletech//operator-rs.git?branch=main#stackable-telemetry@0.6.5": "0ldyz57jf5px7fn44x4n8cfha6sjsxirdispxksghmrfwmy76jn4", - "git+https://github.com/stackabletech//operator-rs.git?branch=main#stackable-versioned-macros@0.12.0": "0ldyz57jf5px7fn44x4n8cfha6sjsxirdispxksghmrfwmy76jn4", - "git+https://github.com/stackabletech//operator-rs.git?branch=main#stackable-versioned@0.12.0": "0ldyz57jf5px7fn44x4n8cfha6sjsxirdispxksghmrfwmy76jn4", - "git+https://github.com/stackabletech//operator-rs.git?branch=main#stackable-webhook@0.10.0": "0ldyz57jf5px7fn44x4n8cfha6sjsxirdispxksghmrfwmy76jn4" + "git+https://github.com/stackabletech/operator-rs.git?tag=stackable-operator-0.121.0#k8s-version@0.1.4": "1dax2l1ghd609k19z4kznpnk5v40xbl84qwwxlfvwjamvf7jj6mm", + "git+https://github.com/stackabletech/operator-rs.git?tag=stackable-operator-0.121.0#stackable-certs@0.4.1": "1dax2l1ghd609k19z4kznpnk5v40xbl84qwwxlfvwjamvf7jj6mm", + "git+https://github.com/stackabletech/operator-rs.git?tag=stackable-operator-0.121.0#stackable-operator-derive@0.3.1": "1dax2l1ghd609k19z4kznpnk5v40xbl84qwwxlfvwjamvf7jj6mm", + "git+https://github.com/stackabletech/operator-rs.git?tag=stackable-operator-0.121.0#stackable-operator@0.121.0": "1dax2l1ghd609k19z4kznpnk5v40xbl84qwwxlfvwjamvf7jj6mm", + "git+https://github.com/stackabletech/operator-rs.git?tag=stackable-operator-0.121.0#stackable-shared@0.2.0": "1dax2l1ghd609k19z4kznpnk5v40xbl84qwwxlfvwjamvf7jj6mm", + "git+https://github.com/stackabletech/operator-rs.git?tag=stackable-operator-0.121.0#stackable-telemetry@0.6.5": "1dax2l1ghd609k19z4kznpnk5v40xbl84qwwxlfvwjamvf7jj6mm", + "git+https://github.com/stackabletech/operator-rs.git?tag=stackable-operator-0.121.0#stackable-versioned-macros@0.13.0": "1dax2l1ghd609k19z4kznpnk5v40xbl84qwwxlfvwjamvf7jj6mm", + "git+https://github.com/stackabletech/operator-rs.git?tag=stackable-operator-0.121.0#stackable-versioned@0.13.0": "1dax2l1ghd609k19z4kznpnk5v40xbl84qwwxlfvwjamvf7jj6mm", + "git+https://github.com/stackabletech/operator-rs.git?tag=stackable-operator-0.121.0#stackable-webhook@0.10.0": "1dax2l1ghd609k19z4kznpnk5v40xbl84qwwxlfvwjamvf7jj6mm" } \ No newline at end of file From a240c4a93ebcb746b644a7e0e5b1ff7155ed886b Mon Sep 17 00:00:00 2001 From: Andrew Kenworthy Date: Wed, 14 Oct 2026 14:29:30 +0200 Subject: [PATCH 4/5] review feeback --- CHANGELOG.md | 3 ++- Cargo.toml | 2 +- .../build/properties/webserver_config.rs | 10 ++++------ rust/operator-binary/src/controller/mod.rs | 5 ++--- rust/operator-binary/src/controller/validate.rs | 16 +++++++--------- rust/operator-binary/src/crd/affinity.rs | 11 +++++------ rust/operator-binary/src/crd/mod.rs | 6 ++---- 7 files changed, 23 insertions(+), 30 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index b0a19cad..b3012c3e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -50,10 +50,11 @@ typed fields instead of maps keyed by role, and only the webserver carries a listener class, a group listener and trusted proxies, so those are no longer optional fields that four of the five roles leave unset ([#867]). -- Bump stackable-operator to 0.119.0 ([#868]). +- Bump stackable-operator to 0.121.0 ([#868], [#879]). - Docs: remove Spark submit/monitor classes and refer to demo usage instead ([#870]). - test: Bump vector-aggregator to 0.58.0 ([#876]). - Replace the unmaintained `serde_yaml` with `yaml_serde` ([#879]). +- All pods now set `securityContext.seccompProfile.type` to `RuntimeDefault` ([#879]). ### Fixed diff --git a/Cargo.toml b/Cargo.toml index 65512fb4..c21ba08e 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -26,11 +26,11 @@ rstest = "0.26" semver = "1.0" serde = { version = "1.0", features = ["derive"] } serde_json = "1.0" -yaml_serde = "0.10" snafu = "0.9" strum = { version = "0.28", features = ["derive"] } tokio = { version = "1.53", features = ["full"] } tracing = "0.1" +yaml_serde = "0.10" [patch."https://github.com/stackabletech/operator-rs.git"] # stackable-operator = { git = "https://github.com/stackabletech//operator-rs.git", branch = "main" } diff --git a/rust/operator-binary/src/controller/build/properties/webserver_config.rs b/rust/operator-binary/src/controller/build/properties/webserver_config.rs index 74092f67..bf5f0f49 100644 --- a/rust/operator-binary/src/controller/build/properties/webserver_config.rs +++ b/rust/operator-binary/src/controller/build/properties/webserver_config.rs @@ -399,6 +399,7 @@ mod tests { use stackable_operator::{ crd::authentication::{ldap, oidc}, shared::time::Duration, + utils::yaml_from_str_singleton_map, }; use super::build_airflow_config; @@ -457,9 +458,8 @@ mod tests { caCert: secretClass: openldap-tls "#; - let deserializer = yaml_serde::Deserializer::from_str(ldap_provider_yaml); let ldap_provider: ldap::v1alpha1::AuthenticationProvider = - yaml_serde::with::singleton_map_recursive::deserialize(deserializer).unwrap(); + yaml_from_str_singleton_map(ldap_provider_yaml).unwrap(); let authentication_config = AirflowClientAuthenticationDetailsResolved { authentication_classes_resolved: vec![AirflowAuthenticationClassResolved::Ldap { @@ -521,9 +521,8 @@ mod tests { provider_hint: Keycloak " ); - let deserializer = yaml_serde::Deserializer::from_str(&oidc_provider_yaml1); let oidc_provider1: oidc::v1alpha1::AuthenticationProvider = - yaml_serde::with::singleton_map_recursive::deserialize(deserializer).unwrap(); + yaml_from_str_singleton_map(&oidc_provider_yaml1).unwrap(); let oidc_provider_yaml2 = r#" hostname: my.keycloak2.server @@ -532,9 +531,8 @@ mod tests { - openid provider_hint: Keycloak "#; - let deserializer = yaml_serde::Deserializer::from_str(oidc_provider_yaml2); let oidc_provider2: oidc::v1alpha1::AuthenticationProvider = - yaml_serde::with::singleton_map_recursive::deserialize(deserializer).unwrap(); + yaml_from_str_singleton_map(oidc_provider_yaml2).unwrap(); let authentication_config = AirflowClientAuthenticationDetailsResolved { authentication_classes_resolved: vec![ diff --git a/rust/operator-binary/src/controller/mod.rs b/rust/operator-binary/src/controller/mod.rs index 1fc09a5d..85da59f0 100644 --- a/rust/operator-binary/src/controller/mod.rs +++ b/rust/operator-binary/src/controller/mod.rs @@ -556,6 +556,7 @@ impl HasUid for ValidatedCluster { #[cfg(test)] mod tests { use indoc::formatdoc; + use stackable_operator::utils::yaml_from_str_singleton_map; use super::*; use crate::controller::{ @@ -661,8 +662,6 @@ mod tests { config: {{}} "}; - let deserializer = yaml_serde::Deserializer::from_str(&cluster); - yaml_serde::with::singleton_map_recursive::deserialize(deserializer) - .expect("the test CR deserialises") + yaml_from_str_singleton_map(&cluster).expect("the test CR deserialises") } } diff --git a/rust/operator-binary/src/controller/validate.rs b/rust/operator-binary/src/controller/validate.rs index a0875a23..9a42e257 100644 --- a/rust/operator-binary/src/controller/validate.rs +++ b/rust/operator-binary/src/controller/validate.rs @@ -439,7 +439,10 @@ mod tests { use std::collections::BTreeMap; use rstest::rstest; - use stackable_operator::v2::builder::pod::container::{EnvVarName, EnvVarSet}; + use stackable_operator::{ + utils::yaml_from_str_singleton_map, + v2::builder::pod::container::{EnvVarName, EnvVarSet}, + }; use super::{Error, validate_cluster, validate_role_group}; use crate::{ @@ -504,8 +507,7 @@ mod tests { kubernetesExecutors: config: {} "#; - let deserializer = yaml_serde::Deserializer::from_str(cluster_yaml); - yaml_serde::with::singleton_map_recursive::deserialize(deserializer).unwrap() + yaml_from_str_singleton_map(cluster_yaml).unwrap() } #[test] @@ -599,9 +601,7 @@ mod tests { kubernetesExecutors: config: {} "#; - let deserializer = yaml_serde::Deserializer::from_str(cluster_yaml); - let result: Result = - yaml_serde::with::singleton_map_recursive::deserialize(deserializer); + let result: Result = yaml_from_str_singleton_map(cluster_yaml); assert!( result.is_err(), "a `null` configOverrides value should be rejected: values are typed as `String`" @@ -686,9 +686,7 @@ mod tests { kubernetesExecutors: config: {} "#; - let deserializer = yaml_serde::Deserializer::from_str(cluster_yaml); - let cluster: v1alpha2::AirflowCluster = - yaml_serde::with::singleton_map_recursive::deserialize(deserializer).unwrap(); + let cluster: v1alpha2::AirflowCluster = yaml_from_str_singleton_map(cluster_yaml).unwrap(); let role = cluster .get_role(&AirflowRole::Webserver) .expect("webserver role"); diff --git a/rust/operator-binary/src/crd/affinity.rs b/rust/operator-binary/src/crd/affinity.rs index 89b7fc3d..5cf73b6b 100644 --- a/rust/operator-binary/src/crd/affinity.rs +++ b/rust/operator-binary/src/crd/affinity.rs @@ -83,6 +83,7 @@ mod tests { }, kube::ResourceExt, role_utils::GenericRoleConfig, + utils::yaml_from_str_singleton_map, v2::role_utils::{GenericCommonConfig, with_validated_config}, }; @@ -96,6 +97,8 @@ mod tests { #[case(AirflowRole::Scheduler)] #[case(AirflowRole::Webserver)] fn test_affinity_defaults(#[case] role: AirflowRole) { + use stackable_operator::utils::yaml_from_str_singleton_map; + let cluster = " apiVersion: airflow.stackable.tech/v1alpha2 kind: AirflowCluster @@ -138,9 +141,7 @@ mod tests { replicas: 1 "; - let deserializer = yaml_serde::Deserializer::from_str(cluster); - let airflow: v1alpha2::AirflowCluster = - yaml_serde::with::singleton_map_recursive::deserialize(deserializer).unwrap(); + let airflow: v1alpha2::AirflowCluster = yaml_from_str_singleton_map(cluster).unwrap(); let resolved_role = airflow .get_role(&role) @@ -269,9 +270,7 @@ mod tests { kubernetesExecutors: {} "; - let deserializer = yaml_serde::Deserializer::from_str(cluster); - let airflow: v1alpha2::AirflowCluster = - yaml_serde::with::singleton_map_recursive::deserialize(deserializer).unwrap(); + let airflow: v1alpha2::AirflowCluster = yaml_from_str_singleton_map(cluster).unwrap(); let expected: StackableAffinity = StackableAffinity { node_affinity: None, diff --git a/rust/operator-binary/src/crd/mod.rs b/rust/operator-binary/src/crd/mod.rs index 3c29e5aa..c209c7e9 100644 --- a/rust/operator-binary/src/crd/mod.rs +++ b/rust/operator-binary/src/crd/mod.rs @@ -1011,7 +1011,7 @@ fn default_resources(role: &AirflowRole) -> ResourcesFragment Date: Wed, 14 Oct 2026 14:33:29 +0200 Subject: [PATCH 5/5] missed sorting --- rust/operator-binary/Cargo.toml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/rust/operator-binary/Cargo.toml b/rust/operator-binary/Cargo.toml index 46221b82..e89de743 100644 --- a/rust/operator-binary/Cargo.toml +++ b/rust/operator-binary/Cargo.toml @@ -20,16 +20,16 @@ indoc.workspace = true semver.workspace = true serde.workspace = true serde_json.workspace = true -yaml_serde.workspace = true snafu.workspace = true strum.workspace = true tokio.workspace = true tracing.workspace = true +yaml_serde.workspace = true [build-dependencies] built.workspace = true [dev-dependencies] rstest.workspace = true -yaml_serde.workspace = true stackable-operator = { workspace = true, features = ["test-support"] } +yaml_serde.workspace = true