From 7b0933d57907c550825806f519b4e8799db544b3 Mon Sep 17 00:00:00 2001 From: clux Date: Tue, 8 Jul 2025 10:21:23 +0100 Subject: [PATCH 1/3] Use pinned k8s-openapi and kube for schemars 1 Signed-off-by: clux --- Cargo.lock | 47 +++++++++++++++++++++++++++++++---------------- Cargo.toml | 13 +++++++------ yaml/crd.yaml | 4 +++- 3 files changed, 41 insertions(+), 23 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 23b4e67..720de69 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1502,8 +1502,7 @@ dependencies = [ [[package]] name = "k8s-openapi" version = "0.25.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aa60a41b57ae1a0a071af77dbcf89fc9819cfe66edaf2beeb204c34459dcf0b2" +source = "git+https://github.com/Arnavion/k8s-openapi.git?rev=e9a9eaf#e9a9eaf672cf700ee78bd6f267fefc5efa571c7a" dependencies = [ "base64 0.22.1", "chrono", @@ -1514,8 +1513,7 @@ dependencies = [ [[package]] name = "kube" version = "1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "778f98664beaf4c3c11372721e14310d1ae00f5e2d9aabcf8906c881aa4e9f51" +source = "git+https://github.com/kube-rs/kube.git?rev=06e843bf026d0838dca159433e8af8268b6cc0bf#06e843bf026d0838dca159433e8af8268b6cc0bf" dependencies = [ "k8s-openapi", "kube-client", @@ -1527,8 +1525,7 @@ dependencies = [ [[package]] name = "kube-client" version = "1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7cb276b85b6e94ded00ac8ea2c68fcf4697ea0553cb25fddc35d4a0ab718db8d" +source = "git+https://github.com/kube-rs/kube.git?rev=06e843bf026d0838dca159433e8af8268b6cc0bf#06e843bf026d0838dca159433e8af8268b6cc0bf" dependencies = [ "base64 0.22.1", "bytes", @@ -1564,8 +1561,7 @@ dependencies = [ [[package]] name = "kube-core" version = "1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e3c56ff45deb0031f2a476017eed60c06872251f271b8387ad8020b8fef60960" +source = "git+https://github.com/kube-rs/kube.git?rev=06e843bf026d0838dca159433e8af8268b6cc0bf#06e843bf026d0838dca159433e8af8268b6cc0bf" dependencies = [ "chrono", "derive_more", @@ -1583,8 +1579,7 @@ dependencies = [ [[package]] name = "kube-derive" version = "1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "079fc8c1c397538628309cfdee20696ebdcc26745f9fb17f89b78782205bd995" +source = "git+https://github.com/kube-rs/kube.git?rev=06e843bf026d0838dca159433e8af8268b6cc0bf#06e843bf026d0838dca159433e8af8268b6cc0bf" dependencies = [ "darling", "proc-macro2", @@ -1597,8 +1592,7 @@ dependencies = [ [[package]] name = "kube-runtime" version = "1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2f1326e946fadf6248febdf8a1c001809c3899ccf48cb9768cbc536b741040dc" +source = "git+https://github.com/kube-rs/kube.git?rev=06e843bf026d0838dca159433e8af8268b6cc0bf#06e843bf026d0838dca159433e8af8268b6cc0bf" dependencies = [ "ahash", "async-broadcast", @@ -2135,6 +2129,26 @@ dependencies = [ "bitflags", ] +[[package]] +name = "ref-cast" +version = "1.0.24" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4a0ae411dbe946a674d89546582cea4ba2bb8defac896622d6496f14c23ba5cf" +dependencies = [ + "ref-cast-impl", +] + +[[package]] +name = "ref-cast-impl" +version = "1.0.24" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1165225c21bff1f3bbce98f5a1f889949bc902d3575308cc7b0de30b4f6d27c7" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + [[package]] name = "regex" version = "1.11.1" @@ -2297,12 +2311,13 @@ dependencies = [ [[package]] name = "schemars" -version = "0.8.22" +version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3fbf2ae1b8bc8e02df939598064d22402220cd5bbcca1c76f7d6a310974d5615" +checksum = "82d20c4491bc164fa2f6c5d44565947a52ad80b9505d8e36f8d54c27c739fcd0" dependencies = [ "chrono", "dyn-clone", + "ref-cast", "schemars_derive", "serde", "serde_json", @@ -2310,9 +2325,9 @@ dependencies = [ [[package]] name = "schemars_derive" -version = "0.8.22" +version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "32e265784ad618884abaea0600a9adf15393368d840e0222d101a072f3f7534d" +checksum = "33d020396d1d138dc19f1165df7545479dcd58d93810dc5d646a16e55abefa80" dependencies = [ "proc-macro2", "quote", diff --git a/Cargo.toml b/Cargo.toml index 5e3db04..92c4d58 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -29,8 +29,9 @@ telemetry = ["opentelemetry-otlp"] actix-web = "4.11.0" futures = "0.3.31" tokio = { version = "1.46.1", features = ["macros", "rt-multi-thread"] } -k8s-openapi = { version = "0.25.0", features = ["latest"] } -schemars = { version = "0.8.22", features = ["chrono"] } +#k8s-openapi = { version = "0.25.0", features = ["latest"] } +k8s-openapi = { git = "https://github.com/Arnavion/k8s-openapi.git", rev = "e9a9eaf", features=["latest"] } +schemars = { version = "1", features = ["chrono04"] } serde = { version = "1.0.219", features = ["derive"] } serde_json = "1.0.140" serde_yaml = "0.9.25" @@ -53,10 +54,10 @@ tower-test = "0.4.0" [dependencies.kube] features = ["runtime", "client", "derive"] -version = "1.1.0" +# version = "1.1.0" # testing new releases - ignore -# git = "https://github.com/kube-rs/kube.git" +git = "https://github.com/kube-rs/kube.git" # branch = "main" -#rev = "19b90ad3a4dbc83e1dd742847c7707333259b1bb" -#path = "../kube/kube" +rev = "06e843bf026d0838dca159433e8af8268b6cc0bf" +# path = "../kube/kube" diff --git a/yaml/crd.yaml b/yaml/crd.yaml index 4437c28..b0b2b8f 100644 --- a/yaml/crd.yaml +++ b/yaml/crd.yaml @@ -23,7 +23,9 @@ spec: description: |- Generate the Kubernetes wrapper struct `Document` from our Spec and Status struct - This provides a hook for generating the CRD yaml (in crdgen.rs) NB: CustomResource generates a pub struct Document here To query for documents.kube.rs with kube, use Api. + This provides a hook for generating the CRD yaml (in crdgen.rs) + NB: CustomResource generates a pub struct Document here + To query for documents.kube.rs with kube, use Api. properties: content: type: string From b5e5b97800b64e9f85f99e9dadd1e14c74382cd4 Mon Sep 17 00:00:00 2001 From: clux Date: Tue, 8 Jul 2025 10:22:52 +0100 Subject: [PATCH 2/3] bump edition Signed-off-by: clux --- Cargo.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Cargo.toml b/Cargo.toml index 92c4d58..38d519d 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -2,7 +2,7 @@ name = "controller" version = "0.16.0" authors = ["clux "] -edition = "2021" +edition = "2024" default-run = "controller" license = "Apache-2.0" publish = false From c5d30a17516261d60e6489c807176ac1e3ad2d85 Mon Sep 17 00:00:00 2001 From: clux Date: Tue, 8 Jul 2025 10:26:04 +0100 Subject: [PATCH 3/3] fmt Signed-off-by: clux --- src/controller.rs | 10 +++++----- src/fixtures.rs | 4 ++-- src/main.rs | 4 ++-- src/telemetry.rs | 4 ++-- 4 files changed, 11 insertions(+), 11 deletions(-) diff --git a/src/controller.rs b/src/controller.rs index a22b577..fb2f5a6 100644 --- a/src/controller.rs +++ b/src/controller.rs @@ -1,16 +1,16 @@ -use crate::{telemetry, Error, Metrics, Result}; +use crate::{Error, Metrics, Result, telemetry}; use chrono::{DateTime, Utc}; use futures::StreamExt; use kube::{ + CustomResource, Resource, api::{Api, ListParams, Patch, PatchParams, ResourceExt}, client::Client, runtime::{ controller::{Action, Controller}, events::{Event, EventType, Recorder, Reporter}, - finalizer::{finalizer, Event as Finalizer}, + finalizer::{Event as Finalizer, finalizer}, watcher::Config, }, - CustomResource, Resource, }; use schemars::JsonSchema; use serde::{Deserialize, Serialize}; @@ -233,9 +233,9 @@ pub async fn run(state: State) { // Mock tests relying on fixtures.rs and its primitive apiserver mocks #[cfg(test)] mod test { - use super::{error_policy, reconcile, Context, Document}; + use super::{Context, Document, error_policy, reconcile}; use crate::{ - fixtures::{timeout_after_1s, Scenario}, + fixtures::{Scenario, timeout_after_1s}, metrics::ErrorLabels, }; use std::sync::Arc; diff --git a/src/fixtures.rs b/src/fixtures.rs index 5147152..f46fa1d 100644 --- a/src/fixtures.rs +++ b/src/fixtures.rs @@ -1,8 +1,8 @@ //! Helper methods only available for tests -use crate::{Context, Document, DocumentSpec, DocumentStatus, Result, DOCUMENT_FINALIZER}; +use crate::{Context, DOCUMENT_FINALIZER, Document, DocumentSpec, DocumentStatus, Result}; use assert_json_diff::assert_json_include; use http::{Request, Response}; -use kube::{client::Body, runtime::events::Recorder, Client, Resource, ResourceExt}; +use kube::{Client, Resource, ResourceExt, client::Body, runtime::events::Recorder}; use std::sync::Arc; impl Document { diff --git a/src/main.rs b/src/main.rs index b572ffe..43ee9be 100644 --- a/src/main.rs +++ b/src/main.rs @@ -1,6 +1,6 @@ #![allow(unused_imports, unused_variables)] -use actix_web::{get, middleware, web::Data, App, HttpRequest, HttpResponse, HttpServer, Responder}; -pub use controller::{self, telemetry, State}; +use actix_web::{App, HttpRequest, HttpResponse, HttpServer, Responder, get, middleware, web::Data}; +pub use controller::{self, State, telemetry}; #[get("/metrics")] async fn metrics(c: Data, _req: HttpRequest) -> impl Responder { diff --git a/src/telemetry.rs b/src/telemetry.rs index 20fdce4..ef24082 100644 --- a/src/telemetry.rs +++ b/src/telemetry.rs @@ -1,7 +1,7 @@ #![allow(unused_imports)] // some used only for telemetry feature use opentelemetry::trace::{TraceId, TracerProvider}; -use opentelemetry_sdk::{runtime, trace as sdktrace, trace::Config, Resource}; -use tracing_subscriber::{prelude::*, EnvFilter, Registry}; +use opentelemetry_sdk::{Resource, runtime, trace as sdktrace, trace::Config}; +use tracing_subscriber::{EnvFilter, Registry, prelude::*}; /// Fetch an opentelemetry::trace::TraceId as hex through the full tracing stack pub fn get_trace_id() -> TraceId {