From 743b54d42ed76380d065f9156cbff688efa3c785 Mon Sep 17 00:00:00 2001 From: Lars Francke Date: Fri, 20 Aug 2021 12:27:42 +0200 Subject: [PATCH] CLI handling for CRDs, dep updates, diagnostic startup information --- Cargo.lock | 256 +++++++++++++++++++++---------- crd/Cargo.toml | 8 +- crd/src/bin/generate_crds.rs | 10 -- deploy/crd/kafkacluster.crd.yaml | 2 +- operator/Cargo.toml | 6 +- operator/src/lib.rs | 14 +- server/Cargo.toml | 10 +- server/build.rs | 11 ++ server/src/main.rs | 47 +++++- 9 files changed, 246 insertions(+), 118 deletions(-) delete mode 100644 crd/src/bin/generate_crds.rs create mode 100644 server/build.rs diff --git a/Cargo.lock b/Cargo.lock index 91a33fab..3d5e5624 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -76,9 +76,20 @@ checksum = "904dfeac50f3cdaba28fc6f57fdcddb75f49ed61346676a78c4ffe55877802fd" [[package]] name = "bitflags" -version = "1.2.1" +version = "1.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cf1de2fe8c75bc145a2f577add951f8134889b4795d47466a54a5c846d691693" +checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" + +[[package]] +name = "built" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4f346b6890a0dfa7266974910e7df2d5088120dd54721b9b0e5aae1ae5e05715" +dependencies = [ + "cargo-lock", + "chrono", + "git2", +] [[package]] name = "bumpalo" @@ -92,11 +103,26 @@ version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b700ce4376041dcd0a327fd0097c41095743c4c8af8887265942faf1100bd040" +[[package]] +name = "cargo-lock" +version = "7.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7fb04b88bd5b2036e30704f95c6ee16f3b5ca3b4ca307da2889d9006648e5c88" +dependencies = [ + "semver", + "serde", + "toml", + "url", +] + [[package]] name = "cc" version = "1.0.69" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e70cc2f62c6ce1868963827bd677764c62d07c3d9a3e1fb1177ee1a9ab199eb2" +dependencies = [ + "jobserver", +] [[package]] name = "cfg-if" @@ -135,9 +161,9 @@ dependencies = [ [[package]] name = "const_format" -version = "0.2.14" +version = "0.2.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c75ea7d6aeb2ebd1ee24f7b7e1b23242ef5a56b3a693733b99bfbe5ef31d0306" +checksum = "49aad96768495418a04c9349327f32f2cd7e9bf8ac6b142534466048721c8ff5" dependencies = [ "const_format_proc_macros", ] @@ -479,6 +505,19 @@ dependencies = [ "wasi", ] +[[package]] +name = "git2" +version = "0.13.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "659cd14835e75b64d9dba5b660463506763cf0aa6cb640aeeb0e98d841093490" +dependencies = [ + "bitflags", + "libc", + "libgit2-sys", + "log", + "url", +] + [[package]] name = "hashbrown" version = "0.11.2" @@ -516,9 +555,9 @@ dependencies = [ [[package]] name = "http-body" -version = "0.4.2" +version = "0.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "60daa14be0e0786db0f03a9e57cb404c9d756eed2b6c62b9ea98ec5743ec75a9" +checksum = "399c583b2979440c60be0821a6199eca73bc3c8dcd9d070d75ac726e2c6186e5" dependencies = [ "bytes", "http", @@ -527,9 +566,9 @@ dependencies = [ [[package]] name = "httparse" -version = "1.4.1" +version = "1.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f3a87b616e37e93c22fb19bcd386f02f3af5ea98a25670ad0fce773de23c5e68" +checksum = "acd94fdbe1d4ff688b67b04eee2e17bd50995534a61539e45adfefb45e5e5503" [[package]] name = "httpdate" @@ -539,9 +578,9 @@ checksum = "6456b8a6c8f33fee7d958fcd1b60d55b11940a79e63ae87013e6d22e26034440" [[package]] name = "hyper" -version = "0.14.10" +version = "0.14.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7728a72c4c7d72665fde02204bcbd93b247721025b222ef78606f14513e0fd03" +checksum = "0b61cf2d1aebcf6e6352c97b81dc2244ca29194be1b276f5d8ad5c6330fffb11" dependencies = [ "bytes", "futures-channel", @@ -655,11 +694,20 @@ dependencies = [ "regex", ] +[[package]] +name = "jobserver" +version = "0.1.24" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "af25a77299a7f711a01975c35a6a424eb6862092cc2d6c72c4ed6cbc56dfc1fa" +dependencies = [ + "libc", +] + [[package]] name = "js-sys" -version = "0.3.51" +version = "0.3.53" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "83bdfbace3a0e81a4253f73b49e960b053e396a11012cbd49b9b74d6a2b67062" +checksum = "e4bf49d50e2961077d9c99f4b7997d770a1114f087c3c2e0069b36c13fc2979d" dependencies = [ "wasm-bindgen", ] @@ -702,9 +750,9 @@ dependencies = [ [[package]] name = "kube" -version = "0.57.0" +version = "0.58.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8152fba26129a09bf30179092753b399760a305a218b8bc558f9a2087b5c1d70" +checksum = "21d3c79fb97a822a63ce9422f7302484748032c808954898ba248705e99ea110" dependencies = [ "base64", "bytes", @@ -724,7 +772,7 @@ dependencies = [ "kube-derive", "openssl", "pem", - "pin-project 1.0.7", + "pin-project 1.0.8", "rustls", "rustls-pemfile", "serde", @@ -742,9 +790,9 @@ dependencies = [ [[package]] name = "kube-core" -version = "0.57.0" +version = "0.58.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "36b767df01404bb99fb75ac2ceded28ce34c30fdcffbb4346e2c44d30756bfba" +checksum = "ffbce0d890efc42abb31e974419e25a643a97ab7c6b3b9498bda686d10b55f8d" dependencies = [ "form_urlencoded", "http", @@ -757,9 +805,9 @@ dependencies = [ [[package]] name = "kube-derive" -version = "0.57.0" +version = "0.58.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b6d0e5489859d9430689f64e69cacc9bf8cb68556f436c73a6a308d4e256b7a0" +checksum = "95a28be5ca4f233b5dd872f426fdc75d6765c34576b590c44564982c05fdb400" dependencies = [ "darling", "proc-macro2", @@ -770,21 +818,24 @@ dependencies = [ [[package]] name = "kube-runtime" -version = "0.57.0" +version = "0.58.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f8358421de932e06d0521700fc8ecfc7058c95509e0770d2da88be78cd737c07" +checksum = "a4f034d330a0849e1603e285389e3f0ed93b9a86017d46e851c9e49e6d0b99e2" dependencies = [ "dashmap", "derivative", "futures", + "json-patch", "k8s-openapi", "kube", - "pin-project 1.0.7", + "pin-project 1.0.8", "serde", + "serde_json", "smallvec", "snafu", "tokio", "tokio-util", + "tracing", ] [[package]] @@ -795,9 +846,33 @@ checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" [[package]] name = "libc" -version = "0.2.98" +version = "0.2.99" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "320cfe77175da3a483efed4bc0adc1968ca050b098ce4f2f1c13a56626128790" +checksum = "a7f823d141fe0a24df1e23b4af4e3c7ba9e5966ec514ea068c93024aa7deb765" + +[[package]] +name = "libgit2-sys" +version = "0.12.22+1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "89c53ac117c44f7042ad8d8f5681378dfbc6010e49ec2c0d1f11dfedc7a4a1c3" +dependencies = [ + "cc", + "libc", + "libz-sys", + "pkg-config", +] + +[[package]] +name = "libz-sys" +version = "1.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "de5435b8549c16d423ed0c03dbaafe57cf6c3344744f1242520d59c9d8ecec66" +dependencies = [ + "cc", + "libc", + "pkg-config", + "vcpkg", +] [[package]] name = "linked-hash-map" @@ -825,15 +900,15 @@ dependencies = [ [[package]] name = "matches" -version = "0.1.8" +version = "0.1.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7ffc5c5338469d4d3ea17d269fa8ea3512ad247247c30bd2df69e68309ed0a08" +checksum = "a3e378b66a060d48947b590737b30a1be76706c8dd7b8ba0f2fe3989c68a853f" [[package]] name = "memchr" -version = "2.4.0" +version = "2.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b16bd47d9e329435e309c58469fe0791c2d0d1ba96ec0954152a5ae2b04387dc" +checksum = "308cc39be01b73d0d18f82a0e7b2a3df85245f84af96fdddc5d202d27e47b86a" [[package]] name = "mio" @@ -859,9 +934,9 @@ dependencies = [ [[package]] name = "native-tls" -version = "0.2.7" +version = "0.2.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b8d96b2e1c8da3957d58100b09f102c6d9cfdfced01b7ec5a8974044bb09dbd4" +checksum = "48ba9f7719b5a0f42f338907614285fb5fd70e53858141f69898a1fb7203b24d" dependencies = [ "lazy_static", "libc", @@ -921,9 +996,9 @@ checksum = "692fcb63b64b1758029e0a96ee63e049ce8c5948587f2f7208df04625e5f6b56" [[package]] name = "openssl" -version = "0.10.35" +version = "0.10.36" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "549430950c79ae24e6d02e0b7404534ecf311d94cc9f861e9e4020187d13d885" +checksum = "8d9facdb76fec0b73c406f125d44d86fdad818d66fef0531eec9233ca425ff4a" dependencies = [ "bitflags", "cfg-if", @@ -941,9 +1016,9 @@ checksum = "28988d872ab76095a6e6ac88d99b54fd267702734fd7ffe610ca27f533ddb95a" [[package]] name = "openssl-sys" -version = "0.9.65" +version = "0.9.66" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a7907e3bfa08bb85105209cdfcb6c63d109f8f6c1ed6ca318fff5c1853fbc1d" +checksum = "1996d2d305e561b70d1ee0c53f1542833f4e1ac6ce9a6708b6ff2738ca67dc82" dependencies = [ "autocfg", "cc", @@ -989,11 +1064,11 @@ dependencies = [ [[package]] name = "pin-project" -version = "1.0.7" +version = "1.0.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c7509cc106041c40a4518d2af7a61530e1eed0e6285296a3d8c5472806ccc4a4" +checksum = "576bc800220cc65dac09e99e97b08b358cfab6e17078de8dc5fee223bd2d0c08" dependencies = [ - "pin-project-internal 1.0.7", + "pin-project-internal 1.0.8", ] [[package]] @@ -1009,9 +1084,9 @@ dependencies = [ [[package]] name = "pin-project-internal" -version = "1.0.7" +version = "1.0.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "48c950132583b500556b1efd71d45b319029f2b71518d979fcc208e16b42426f" +checksum = "6e8fe8163d14ce7f0cdac2e040116f22eac817edabff0be91e8aff7e9accf389" dependencies = [ "proc-macro2", "quote", @@ -1056,9 +1131,9 @@ checksum = "bc881b2c22681370c6a780e47af9840ef841837bc98118431d4e1868bd0c1086" [[package]] name = "proc-macro2" -version = "1.0.27" +version = "1.0.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f0d8caf72986c1a598726adc988bb5984792ef84f5ee5aa50209145ee8077038" +checksum = "5c7ed8b8c7b886ea3ed7dde405212185f423ab44682667c8c6dd14aa1d9f6612" dependencies = [ "unicode-xid", ] @@ -1129,9 +1204,9 @@ dependencies = [ [[package]] name = "redox_syscall" -version = "0.2.9" +version = "0.2.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5ab49abadf3f9e1c4bc499e8845e152ad87d2ad2d30371841171169e9d75feee" +checksum = "8383f39639269cde97d255a32bdb68c047337295414940c68bdd30c2e13203ff" dependencies = [ "bitflags", ] @@ -1327,9 +1402,12 @@ dependencies = [ [[package]] name = "semver" -version = "1.0.3" +version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f3aac57ee7f3272d8395c6e4f502f434f0e289fcd62876f70daa008c20dcabe" +checksum = "568a8e6258aa33c13358f81fd834adb854c6f7c9468520910a9b1e8fac068012" +dependencies = [ + "serde", +] [[package]] name = "serde" @@ -1386,9 +1464,9 @@ dependencies = [ [[package]] name = "serde_yaml" -version = "0.8.17" +version = "0.8.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "15654ed4ab61726bf918a39cb8d98a2e2995b002387807fa6ba58fdf7f59bb23" +checksum = "039ba818c784248423789eec090aab9fb566c7b94d6ebbfa1814a9fd52c8afb2" dependencies = [ "dtoa", "linked-hash-map", @@ -1398,9 +1476,9 @@ dependencies = [ [[package]] name = "sharded-slab" -version = "0.1.1" +version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "79c719719ee05df97490f80a45acfc99e5a30ce98a1e4fb67aee422745ae14e3" +checksum = "740223c51853f3145fe7c90360d2d4232f2b62e3449489c207eccde818979982" dependencies = [ "lazy_static", ] @@ -1416,9 +1494,9 @@ dependencies = [ [[package]] name = "slab" -version = "0.4.3" +version = "0.4.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f173ac3d1a7e3b28003f40de0b5ce7fe2710f9b9dc3fc38664cebee46b3b6527" +checksum = "c307a32c1c5c437f38c7fd45d753050587732ba8628319fbdf12a7e289ccc590" [[package]] name = "smallvec" @@ -1451,9 +1529,9 @@ dependencies = [ [[package]] name = "socket2" -version = "0.4.0" +version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9e3dfc207c526015c632472a77be09cf1b6e46866581aecae5cc38fb4235dea2" +checksum = "765f090f0e423d2b55843402a07915add955e7d60657db13707a159727326cad" dependencies = [ "libc", "winapi", @@ -1511,6 +1589,9 @@ dependencies = [ name = "stackable-kafka-operator-server" version = "0.1.0-nightly" dependencies = [ + "built", + "clap", + "k8s-openapi", "stackable-kafka-crd", "stackable-kafka-operator", "stackable-operator", @@ -1521,7 +1602,7 @@ dependencies = [ [[package]] name = "stackable-opa-crd" version = "0.1.0-nightly" -source = "git+https://github.com/stackabletech/opa-operator.git?branch=main#ac920c7221b362c85dd9cc69e40060f78d3fc32a" +source = "git+https://github.com/stackabletech/opa-operator.git?branch=main#5acbab145272cc7a6cb405bf46c724ec25a3a1c9" dependencies = [ "k8s-openapi", "kube", @@ -1541,7 +1622,7 @@ dependencies = [ [[package]] name = "stackable-operator" version = "0.1.0-nightly" -source = "git+https://github.com/stackabletech/operator-rs.git?branch=main#7fe4205b667fb5975041f20104357f9bdec7e4bc" +source = "git+https://github.com/stackabletech/operator-rs.git?branch=main#ed04ff725de4167ca70857431eded3209d9caf20" dependencies = [ "async-trait", "backoff", @@ -1573,7 +1654,7 @@ dependencies = [ [[package]] name = "stackable-zookeeper-crd" version = "0.1.0-nightly" -source = "git+https://github.com/stackabletech/zookeeper-operator.git?branch=main#a27b48401b255fd084258dc012f7cbbbe1aac56d" +source = "git+https://github.com/stackabletech/zookeeper-operator.git?branch=main#19bcfc5b9c3c2ade40338b41f30c5e4d52362f30" dependencies = [ "k8s-openapi", "kube", @@ -1621,9 +1702,9 @@ dependencies = [ [[package]] name = "syn" -version = "1.0.73" +version = "1.0.74" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f71489ff30030d2ae598524f61326b902466f72a0fb1a8564c001cc63425bcc7" +checksum = "1873d832550d4588c3dbc20f01361ab00bfe741048f71e3fecf145a7cc18b29c" dependencies = [ "proc-macro2", "quote", @@ -1695,9 +1776,9 @@ dependencies = [ [[package]] name = "tinyvec" -version = "1.2.0" +version = "1.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b5220f05bb7de7f3f53c7c065e1199b3172696fe2db9f9c4d8ad9b4ee74c342" +checksum = "848a1e1181b9f6753b5e96a092749e29b11d19ede67dfbbd6c7dc7e0f49b5338" dependencies = [ "tinyvec_macros", ] @@ -1782,6 +1863,15 @@ dependencies = [ "tokio", ] +[[package]] +name = "toml" +version = "0.5.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a31142970826733df8241ef35dc040ef98c679ab14d7c3e54d827099b3acecaa" +dependencies = [ + "serde", +] + [[package]] name = "tower" version = "0.4.8" @@ -1790,7 +1880,7 @@ checksum = "f60422bc7fefa2f3ec70359b8ff1caff59d785877eb70595904605bcc412470f" dependencies = [ "futures-core", "futures-util", - "pin-project 1.0.7", + "pin-project 1.0.8", "tokio", "tokio-util", "tower-layer", @@ -1804,12 +1894,13 @@ version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0b7b56efe69aa0ad2b5da6b942e57ea9f6fe683b7a314d4ff48662e2c8838de1" dependencies = [ + "base64", "bytes", "futures-core", "futures-util", "http", "http-body", - "pin-project 1.0.7", + "pin-project 1.0.8", "tower-layer", "tower-service", "tracing", @@ -1853,9 +1944,9 @@ dependencies = [ [[package]] name = "tracing-core" -version = "0.1.18" +version = "0.1.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a9ff14f98b1a4b289c6248a023c1c2fa1491062964e9fed67ab29c4e4da4a052" +checksum = "2ca517f43f0fb96e0c3072ed5c275fe5eece87e8cb52f4a77b69226d3b1c9df8" dependencies = [ "lazy_static", ] @@ -1866,7 +1957,7 @@ version = "0.2.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "97d095ae15e245a057c8e8451bab9b3ee1e1f68e9ba2b4fbc18d0ac5237835f2" dependencies = [ - "pin-project 1.0.7", + "pin-project 1.0.8", "tracing", ] @@ -1893,9 +1984,9 @@ dependencies = [ [[package]] name = "tracing-subscriber" -version = "0.2.19" +version = "0.2.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ab69019741fca4d98be3c62d2b75254528b5432233fd8a4d2739fec20278de48" +checksum = "b9cbe87a2fa7e35900ce5de20220a582a9483a7063811defce79d7cbd59d4cfe" dependencies = [ "ansi_term 0.12.1", "chrono", @@ -1930,12 +2021,9 @@ checksum = "59547bce71d9c38b83d9c0e92b6066c4253371f15005def0c30d9657f50c7642" [[package]] name = "unicode-bidi" -version = "0.3.5" +version = "0.3.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eeb8be209bb1c96b7c177c7420d26e04eccacb0eeae6b980e35fcb74678107e0" -dependencies = [ - "matches", -] +checksum = "246f4c42e67e7a4e3c6106ff716a5d067d4132a642840b242e357e468a2a0085" [[package]] name = "unicode-normalization" @@ -2021,9 +2109,9 @@ checksum = "1a143597ca7c7793eff794def352d41792a93c481eb1042423ff7ff72ba2c31f" [[package]] name = "wasm-bindgen" -version = "0.2.74" +version = "0.2.76" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d54ee1d4ed486f78874278e63e4069fc1ab9f6a18ca492076ffb90c5eb2997fd" +checksum = "8ce9b1b516211d33767048e5d47fa2a381ed8b76fc48d2ce4aa39877f9f183e0" dependencies = [ "cfg-if", "wasm-bindgen-macro", @@ -2031,9 +2119,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-backend" -version = "0.2.74" +version = "0.2.76" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3b33f6a0694ccfea53d94db8b2ed1c3a8a4c86dd936b13b9f0a15ec4a451b900" +checksum = "cfe8dc78e2326ba5f845f4b5bf548401604fa20b1dd1d365fb73b6c1d6364041" dependencies = [ "bumpalo", "lazy_static", @@ -2046,9 +2134,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro" -version = "0.2.74" +version = "0.2.76" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "088169ca61430fe1e58b8096c24975251700e7b1f6fd91cc9d59b04fb9b18bd4" +checksum = "44468aa53335841d9d6b6c023eaab07c0cd4bddbcfdee3e2bb1e8d2cb8069fef" dependencies = [ "quote", "wasm-bindgen-macro-support", @@ -2056,9 +2144,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.74" +version = "0.2.76" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "be2241542ff3d9f241f5e2cb6dd09b37efe786df8851c54957683a49f0987a97" +checksum = "0195807922713af1e67dc66132c7328206ed9766af3858164fb583eedc25fbad" dependencies = [ "proc-macro2", "quote", @@ -2069,15 +2157,15 @@ dependencies = [ [[package]] name = "wasm-bindgen-shared" -version = "0.2.74" +version = "0.2.76" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d7cff876b8f18eed75a66cf49b65e7f967cb354a7aa16003fb55dbfd25b44b4f" +checksum = "acdb075a845574a1fa5f09fd77e43f7747599301ea3417a9fbffdeedfc1f4a29" [[package]] name = "web-sys" -version = "0.3.51" +version = "0.3.53" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e828417b379f3df7111d3a2a9e5753706cae29c41f7c4029ee9fd77f3e09e582" +checksum = "224b2f6b67919060055ef1a67807367c2066ed520c3862cc013d26cf893a783c" dependencies = [ "js-sys", "wasm-bindgen", diff --git a/crd/Cargo.toml b/crd/Cargo.toml index ea1a6405..22e7f056 100644 --- a/crd/Cargo.toml +++ b/crd/Cargo.toml @@ -11,9 +11,9 @@ stackable-opa-crd = { git = "https://github.com/stackabletech/opa-operator.git", stackable-operator = { git = "https://github.com/stackabletech/operator-rs.git", branch = "main" } stackable-zookeeper-crd = { git = "https://github.com/stackabletech/zookeeper-operator.git", branch = "main"} -k8s-openapi = { version = "0.12", default-features = false, features = ["v1_20"] } -kube = { version = "0.57", default-features = false, features = ["jsonpatch", "derive"] } -kube-runtime = "0.57" +k8s-openapi = { version = "0.12", default-features = false } +kube = { version = "0.58", default-features = false, features = ["jsonpatch", "derive"] } +kube-runtime = "0.58" schemars = "0.8" serde = { version = "1.0", features = ["derive"] } serde_json = "1.0" # Needed by the CustomResource annotation @@ -22,7 +22,7 @@ strum = "0.21" strum_macros = "0.21" [dev-dependencies] -k8s-openapi = { version = "0.12", default-features = false, features = ["v1_20"] } +k8s-openapi = { version = "0.12", default-features = false, features = ["v1_21"] } serde_yaml = "0.8" rstest = "0.11" diff --git a/crd/src/bin/generate_crds.rs b/crd/src/bin/generate_crds.rs deleted file mode 100644 index 60aa3286..00000000 --- a/crd/src/bin/generate_crds.rs +++ /dev/null @@ -1,10 +0,0 @@ -use stackable_kafka_crd::KafkaCluster; -use stackable_operator::crd::CustomResourceExt; - -fn main() { - let target_file = "deploy/crd/kafkacluster.crd.yaml"; - match KafkaCluster::write_yaml_schema(target_file) { - Ok(_) => println!("Wrote CRD to [{}]", target_file), - Err(err) => println!("Could not write CRD to [{}]: {:?}", target_file, err), - } -} diff --git a/deploy/crd/kafkacluster.crd.yaml b/deploy/crd/kafkacluster.crd.yaml index b142cb84..9b4fa483 100644 --- a/deploy/crd/kafkacluster.crd.yaml +++ b/deploy/crd/kafkacluster.crd.yaml @@ -90,6 +90,7 @@ spec: replicas: format: uint16 minimum: 0.0 + nullable: true type: integer selector: description: A label selector is a label query over a set of resources. The result of matchLabels and matchExpressions are ANDed. An empty label selector matches all objects. A null label selector matches no objects. @@ -122,7 +123,6 @@ spec: type: object type: object required: - - replicas - selector type: object type: object diff --git a/operator/Cargo.toml b/operator/Cargo.toml index 0ec73d82..5b56cb88 100644 --- a/operator/Cargo.toml +++ b/operator/Cargo.toml @@ -15,9 +15,9 @@ stackable-zookeeper-crd = { git = "https://github.com/stackabletech/zookeeper-op async-trait = "0.1" futures = "0.3" -k8s-openapi = { version = "0.12", default-features = false, features = ["v1_20"] } -kube = { version = "0.57", default-features = false, features = ["jsonpatch"] } -kube-runtime = "0.57" +k8s-openapi = { version = "0.12", default-features = false } +kube = { version = "0.58", default-features = false, features = ["jsonpatch"] } +kube-runtime = "0.58" serde = { version = "1.0", features = ["derive"] } serde_json = "1.0" strum = "0.21" diff --git a/operator/src/lib.rs b/operator/src/lib.rs index c7508faa..376df515 100644 --- a/operator/src/lib.rs +++ b/operator/src/lib.rs @@ -20,6 +20,7 @@ use stackable_operator::builder::{ use stackable_operator::client::Client; use stackable_operator::controller::{Controller, ControllerStrategy, ReconciliationState}; use stackable_operator::error::OperatorResult; +use stackable_operator::k8s_utils; use stackable_operator::labels::{ build_common_labels_for_all_managed_resources, get_recommended_labels, APP_COMPONENT_LABEL, APP_INSTANCE_LABEL, APP_MANAGED_BY_LABEL, APP_NAME_LABEL, APP_VERSION_LABEL, @@ -36,7 +37,6 @@ use stackable_operator::role_utils::{ find_nodes_that_fit_selectors, get_role_and_group_labels, list_eligible_nodes_for_role_and_group, EligibleNodesForRoleAndGroup, }; -use stackable_operator::{cli, k8s_utils}; use stackable_zookeeper_crd::util::ZookeeperConnectionInformation; use std::collections::{BTreeMap, HashMap}; use std::future::Future; @@ -552,7 +552,7 @@ pub fn validated_product_config( ) } -pub async fn create_controller(client: Client) -> OperatorResult<()> { +pub async fn create_controller(client: Client, product_config_path: &str) -> OperatorResult<()> { let kafka_api: Api = client.get_all_api(); let pods_api: Api = client.get_all_api(); let config_maps_api: Api = client.get_all_api(); @@ -561,15 +561,7 @@ pub async fn create_controller(client: Client) -> OperatorResult<()> { .owns(pods_api, ListParams::default()) .owns(config_maps_api, ListParams::default()); - let product_config_path = cli::product_config_path( - "kafka-operator", - vec![ - "deploy/config-spec/properties.yaml", - "/etc/stackable/kafka-operator/config-spec/properties.yaml", - ], - )?; - - let product_config = ProductConfigManager::from_yaml_file(&product_config_path).unwrap(); + let product_config = ProductConfigManager::from_yaml_file(product_config_path).unwrap(); let strategy = KafkaStrategy::new(product_config); diff --git a/server/Cargo.toml b/server/Cargo.toml index b22e3c77..e70d0cb6 100644 --- a/server/Cargo.toml +++ b/server/Cargo.toml @@ -1,19 +1,27 @@ [package] authors = ["Lars Francke "] -description = "Stackable Operator for Apache Kafka - The main binary" +description = "Stackable Operator for Apache Kafka" edition = "2018" license = "OSL-3.0" name = "stackable-kafka-operator-server" version = "0.1.0-nightly" +build = "build.rs" [dependencies] stackable-kafka-crd = { path = "../crd" } stackable-kafka-operator = { path = "../operator" } stackable-operator = { git = "https://github.com/stackabletech/operator-rs.git", branch = "main" } +clap = "2.33" +k8s-openapi = { version = "0.12", default-features = false, features = ["v1_21"] } tokio = { version = "1.10", features = ["macros", "rt-multi-thread"] } tracing = "0.1" +[build-dependencies] +built = { version = "0.5", features = ["chrono", "git2"] } +stackable-operator = { git = "https://github.com/stackabletech/operator-rs.git", branch = "main" } +stackable-kafka-crd = { path = "../crd" } + [package.metadata.deb] maintainer-scripts = "packaging/debian/" systemd-units = { enable = false } diff --git a/server/build.rs b/server/build.rs new file mode 100644 index 00000000..cb1d3aa5 --- /dev/null +++ b/server/build.rs @@ -0,0 +1,11 @@ +use stackable_kafka_crd::KafkaCluster; +use stackable_operator::crd::CustomResourceExt; +use stackable_operator::error::OperatorResult; + +fn main() -> OperatorResult<()> { + built::write_built_file().expect("Failed to acquire build-time information"); + + KafkaCluster::write_yaml_schema("../deploy/crd/kafkacluster.crd.yaml")?; + + Ok(()) +} diff --git a/server/src/main.rs b/server/src/main.rs index 0d0c3b7f..f7355b40 100644 --- a/server/src/main.rs +++ b/server/src/main.rs @@ -1,7 +1,13 @@ +use clap::{crate_version, App, AppSettings, SubCommand}; use stackable_kafka_crd::KafkaCluster; use stackable_operator::crd::CustomResourceExt; -use stackable_operator::{client, error}; -use tracing::{error, info}; +use stackable_operator::{cli, client, error}; +use tracing::error; + +mod built_info { + // The file has been placed there by the build script. + include!(concat!(env!("OUT_DIR"), "/built.rs")); +} const FIELD_MANAGER: &str = "kafka.stackable.tech"; @@ -9,7 +15,40 @@ const FIELD_MANAGER: &str = "kafka.stackable.tech"; async fn main() -> Result<(), error::Error> { stackable_operator::logging::initialize_logging("KAFKA_OPERATOR_LOG"); - info!("Starting Stackable Operator for Apache Kafka"); + stackable_operator::utils::print_startup_string( + built_info::PKG_DESCRIPTION, + built_info::PKG_VERSION, + built_info::GIT_VERSION, + built_info::TARGET, + built_info::BUILT_TIME_UTC, + built_info::RUSTC_VERSION, + ); + + // Handle CLI arguments + let matches = App::new(built_info::PKG_DESCRIPTION) + .author("Stackable GmbH - info@stackable.de") + .about(built_info::PKG_DESCRIPTION) + .version(crate_version!()) + .arg(cli::generate_productconfig_arg()) + .subcommand( + SubCommand::with_name("crd") + .setting(AppSettings::ArgRequiredElseHelp) + .subcommand(cli::generate_crd_subcommand::()), + ) + .get_matches(); + + if let ("crd", Some(subcommand)) = matches.subcommand() { + if cli::handle_crd_subcommand::(subcommand)? { + return Ok(()); + }; + } + + let paths = vec![ + "deploy/config-spec/properties.yaml", + "/etc/stackable/kafka-operator/config-spec/properties.yaml", + ]; + let product_config_path = cli::handle_productconfig_arg(&matches, paths)?; + let client = client::create_client(Some(FIELD_MANAGER.to_string())).await?; if let Err(error) = stackable_operator::crd::wait_until_crds_present( @@ -23,6 +62,6 @@ async fn main() -> Result<(), error::Error> { return Err(error); }; - stackable_kafka_operator::create_controller(client).await?; + stackable_kafka_operator::create_controller(client, &product_config_path).await?; Ok(()) }