diff --git a/CHANGELOG.md b/CHANGELOG.md index f68e608e..1ac675c9 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,8 +4,13 @@ All notable changes to this project will be documented in this file. ## [Unreleased] -## [0.1.0] - 2021-12-06 +### Changed + +- Migrated to StatefulSet rather than direct Pod management ([#59]). +[#59]: https://github.com/stackabletech/druid-operator/pull/59 + +## [0.1.0] - 2021-12-06 ### Changed diff --git a/Cargo.lock b/Cargo.lock index d5d3119f..4c2d5868 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -3,21 +3,27 @@ version = 3 [[package]] -name = "aho-corasick" -version = "0.7.18" +name = "addr2line" +version = "0.17.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e37cfd5e7657ada45f742d6e99ca5788580b5c529dc78faf11ece6dc702656f" +checksum = "b9ecd88a8c8378ca913a680cd98f0f13ac67383d35993f86c90a70e3f137816b" dependencies = [ - "memchr", + "gimli", ] [[package]] -name = "ansi_term" -version = "0.11.0" +name = "adler" +version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ee49baf6cb617b853aa8d93bf420db2383fab46d314482ca2803b40d5fde979b" +checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe" + +[[package]] +name = "aho-corasick" +version = "0.7.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e37cfd5e7657ada45f742d6e99ca5788580b5c529dc78faf11ece6dc702656f" dependencies = [ - "winapi", + "memchr", ] [[package]] @@ -26,14 +32,20 @@ version = "0.12.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d52a9bb7ec0cf484c551830a7ce27bd20d67eac647e1befb56b0be4ee39a55d2" dependencies = [ - "winapi", + "winapi 0.3.9", ] +[[package]] +name = "anyhow" +version = "1.0.51" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b26702f315f53b6071259e15dd9d64528213b44d61de1ec926eca7715d62203" + [[package]] name = "async-trait" -version = "0.1.51" +version = "0.1.52" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "44318e776df68115a881de9a8fd1b9e53368d7a4a5ce4cc48517da3393233a5e" +checksum = "061a7acccaa286c011ddc30970520b98fa40e00c9d644633fb26b5fc63a265e3" dependencies = [ "proc-macro2", "quote", @@ -48,7 +60,7 @@ checksum = "d9b39be18770d11421cdb1b9947a45dd3f37e93092cbf377614828a319d5fee8" dependencies = [ "hermit-abi", "libc", - "winapi", + "winapi 0.3.9", ] [[package]] @@ -68,6 +80,21 @@ dependencies = [ "rand", ] +[[package]] +name = "backtrace" +version = "0.3.63" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "321629d8ba6513061f26707241fa9bc89524ff1cd7a915a97ef0c62c666ce1b6" +dependencies = [ + "addr2line", + "cc", + "cfg-if 1.0.0", + "libc", + "miniz_oxide", + "object", + "rustc-demangle", +] + [[package]] name = "base64" version = "0.13.0" @@ -91,6 +118,22 @@ dependencies = [ "git2", ] +[[package]] +name = "byteorder" +version = "1.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "14c189c53d098945499cdfa7ecc63567cf3886b3332b312a5b4585d8d3a6a610" + +[[package]] +name = "bytes" +version = "0.4.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "206fdffcfa2df7cbe15601ef46c813fce0965eb3286db6b56c583b814b51c81c" +dependencies = [ + "byteorder", + "iovec", +] + [[package]] name = "bytes" version = "1.1.0" @@ -103,7 +146,7 @@ version = "7.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7fb04b88bd5b2036e30704f95c6ee16f3b5ca3b4ca307da2889d9006648e5c88" dependencies = [ - "semver", + "semver 1.0.4", "serde", "toml", "url", @@ -111,13 +154,19 @@ dependencies = [ [[package]] name = "cc" -version = "1.0.71" +version = "1.0.72" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "79c2681d6594606957bbb8631c4b90a7fcaaa72cdb714743a437b156d6a7eedd" +checksum = "22a9137b95ea06864e018375b72adfb7db6e6f68cfc8df5a04d00288050485ee" dependencies = [ "jobserver", ] +[[package]] +name = "cfg-if" +version = "0.1.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4785bdd1c96b2a846b2bd7cc02e86b6b3dbf14e7e53446c4f54c92a361040822" + [[package]] name = "cfg-if" version = "1.0.0" @@ -135,16 +184,16 @@ dependencies = [ "num-traits", "serde", "time", - "winapi", + "winapi 0.3.9", ] [[package]] name = "clap" -version = "2.33.3" +version = "2.34.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "37e58ac78573c40708d45522f0d80fa2f01cc4f9b4e2bf749807255454312002" +checksum = "a0610544180c38b88101fecf2dd634b174a62eef6946f84dfc6a7127512b381c" dependencies = [ - "ansi_term 0.11.0", + "ansi_term", "atty", "bitflags", "strsim 0.8.0", @@ -153,6 +202,15 @@ dependencies = [ "vec_map", ] +[[package]] +name = "cloudabi" +version = "0.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ddfc5b9aa5d4507acaf872de71051dfd0e309860e88966e1051e462a077aac4f" +dependencies = [ + "bitflags", +] + [[package]] name = "const_format" version = "0.2.22" @@ -189,11 +247,59 @@ version = "0.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5827cebf4670468b8772dd191856768aedcb1b0278a04f989f7766351917b9dc" +[[package]] +name = "crossbeam-deque" +version = "0.7.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c20ff29ded3204c5106278a81a38f4b482636ed4fa1e6cfbeef193291beb29ed" +dependencies = [ + "crossbeam-epoch", + "crossbeam-utils", + "maybe-uninit", +] + +[[package]] +name = "crossbeam-epoch" +version = "0.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "058ed274caafc1f60c4997b5fc07bf7dc7cca454af7c6e81edffe5f33f70dace" +dependencies = [ + "autocfg", + "cfg-if 0.1.10", + "crossbeam-utils", + "lazy_static", + "maybe-uninit", + "memoffset", + "scopeguard", +] + +[[package]] +name = "crossbeam-queue" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "774ba60a54c213d409d5353bda12d49cd68d14e45036a285234c8d6f91f92570" +dependencies = [ + "cfg-if 0.1.10", + "crossbeam-utils", + "maybe-uninit", +] + +[[package]] +name = "crossbeam-utils" +version = "0.7.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c3c7c73a2d1e9fc0886a08b93e98eb643461230d5f1925e4036204d5f2e261a8" +dependencies = [ + "autocfg", + "cfg-if 0.1.10", + "lazy_static", +] + [[package]] name = "darling" -version = "0.13.0" +version = "0.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "757c0ded2af11d8e739c4daea1ac623dd1624b06c844cf3f5a39f1bdbd99bb12" +checksum = "d0d720b8683f8dd83c65155f0530560cba68cd2bf395f6513a483caee57ff7f4" dependencies = [ "darling_core", "darling_macro", @@ -201,9 +307,9 @@ dependencies = [ [[package]] name = "darling_core" -version = "0.13.0" +version = "0.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2c34d8efb62d0c2d7f60ece80f75e5c63c1588ba68032740494b0b9a996466e3" +checksum = "7a340f241d2ceed1deb47ae36c4144b2707ec7dd0b649f894cb39bb595986324" dependencies = [ "fnv", "ident_case", @@ -215,9 +321,9 @@ dependencies = [ [[package]] name = "darling_macro" -version = "0.13.0" +version = "0.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ade7bff147130fe5e6d39f089c6bd49ec0250f35d70b2eebf72afdfc919f15cc" +checksum = "72c41b3b7352feb3211a0d743dc5700a4e3b60f51bd2b368892d1e0f9a95f44b" dependencies = [ "darling_core", "quote", @@ -230,7 +336,7 @@ version = "4.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e77a43b28d0668df09411cb0bc9a8c2adc40f9a048afe863e05fd43251e8e39c" dependencies = [ - "cfg-if", + "cfg-if 1.0.0", "num_cpus", ] @@ -251,7 +357,7 @@ version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b98cf8ebf19c3d1b223e151f99a4f9f0690dca41414773390fc824184ac833e1" dependencies = [ - "cfg-if", + "cfg-if 1.0.0", "dirs-sys-next", ] @@ -263,7 +369,7 @@ checksum = "4ebda144c4fe02d1f7ea1a7d9641b6fc6b580adcfa024ae48797ecdeb6825b4d" dependencies = [ "libc", "redox_users", - "winapi", + "winapi 0.3.9", ] [[package]] @@ -272,12 +378,6 @@ version = "0.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fea41bba32d969b513997752735605054bc0dfa92b4c56bf1189f2e174be7a10" -[[package]] -name = "dtoa" -version = "0.4.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "56899898ce76aaf4a0f24d914c97ea6ed976d42fec6ad33fcbb0a1103e07b2b0" - [[package]] name = "duplicate" version = "0.3.0" @@ -364,6 +464,28 @@ version = "0.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a246d82be1c9d791c5dfde9a2bd045fc3cbba3fa2b11ad558f27d01712f00569" +[[package]] +name = "failure" +version = "0.1.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d32e9bd16cc02eae7db7ef620b392808b89f6a5e16bb3497d159c6b92a0f4f86" +dependencies = [ + "backtrace", + "failure_derive", +] + +[[package]] +name = "failure_derive" +version = "0.1.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aa4da3c766cd7a0db8242e326e9e4e081edd567072893ed320008189715366a4" +dependencies = [ + "proc-macro2", + "quote", + "syn", + "synstructure", +] + [[package]] name = "fnv" version = "1.0.7" @@ -395,6 +517,28 @@ dependencies = [ "percent-encoding", ] +[[package]] +name = "fuchsia-zircon" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2e9763c69ebaae630ba35f74888db465e49e259ba1bc0eda7d06f4a067615d82" +dependencies = [ + "bitflags", + "fuchsia-zircon-sys", +] + +[[package]] +name = "fuchsia-zircon-sys" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3dcaa9ae7725d12cdb85b3ad99a434db70b468c09ded17e012d86b5c1010f7a7" + +[[package]] +name = "futures" +version = "0.1.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3a471a38ef8ed83cd6e40aa59c1ffe17db6855c18e3604d9c4ed8c08ebc28678" + [[package]] name = "futures" version = "0.3.17" @@ -475,6 +619,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "36568465210a3a6ee45e1f165136d68671471a501e632e9a98d96872222b5481" dependencies = [ "autocfg", + "futures 0.1.31", "futures-channel", "futures-core", "futures-io", @@ -495,16 +640,22 @@ version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7fcd999463524c52659517fe2cea98493cfe485d10565e7b0fb07dbba7ad2753" dependencies = [ - "cfg-if", + "cfg-if 1.0.0", "libc", "wasi", ] +[[package]] +name = "gimli" +version = "0.26.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "78cc372d058dcf6d5ecd98510e7fbc9e5aec4d21de70f65fea8fecebcd881bd4" + [[package]] name = "git2" -version = "0.13.23" +version = "0.13.25" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2a8057932925d3a9d9e4434ea016570d37420ddb1ceed45a174d577f24ed6700" +checksum = "f29229cc1b24c0e6062f6e742aa3e256492a5323365e5ed3413599f8a5eff7d6" dependencies = [ "bitflags", "libc", @@ -543,9 +694,9 @@ version = "0.2.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1323096b05d41827dadeaee54c9981958c0f94e670bc94ed80037d1a7b8b186b" dependencies = [ - "bytes", + "bytes 1.1.0", "fnv", - "itoa", + "itoa 0.4.8", ] [[package]] @@ -554,11 +705,17 @@ version = "0.4.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1ff4f84919677303da5f147645dbea6b1881f368d03ac84e1dc09031ebd7b2c6" dependencies = [ - "bytes", + "bytes 1.1.0", "http", "pin-project-lite", ] +[[package]] +name = "http-range-header" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0bfe8eed0a9285ef776bb792479ea3834e8b94e13d615c2f66d03dd50a435a29" + [[package]] name = "httparse" version = "1.5.1" @@ -567,17 +724,17 @@ checksum = "acd94fdbe1d4ff688b67b04eee2e17bd50995534a61539e45adfefb45e5e5503" [[package]] name = "httpdate" -version = "1.0.1" +version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6456b8a6c8f33fee7d958fcd1b60d55b11940a79e63ae87013e6d22e26034440" +checksum = "c4a1e36c821dbe04574f602848a19f742f4fb3c98d40449f11bcad18d6b17421" [[package]] name = "hyper" -version = "0.14.14" +version = "0.14.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2b91bb1f221b6ea1f1e4371216b70f40748774c2fb5971b450c07773fb92d26b" +checksum = "b7ec3e62bdc98a2f0393a5048e4c30ef659440ea6e0e572965103e72bd836f55" dependencies = [ - "bytes", + "bytes 1.1.0", "futures-channel", "futures-core", "futures-util", @@ -585,10 +742,10 @@ dependencies = [ "http-body", "httparse", "httpdate", - "itoa", + "itoa 0.4.8", "pin-project-lite", "socket2", - "tokio", + "tokio 1.15.0", "tower-service", "tracing", "want", @@ -602,7 +759,7 @@ checksum = "bbb958482e8c7be4bc3cf272a766a2b0bf1a6755e7a6ae777f017a31d11b13b1" dependencies = [ "hyper", "pin-project-lite", - "tokio", + "tokio 1.15.0", "tokio-io-timeout", ] @@ -612,10 +769,10 @@ version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d6183ddfa99b85da61a140bea0efc93fdf56ceaa041b37d553518030827f9905" dependencies = [ - "bytes", + "bytes 1.1.0", "hyper", "native-tls", - "tokio", + "tokio 1.15.0", "tokio-native-tls", ] @@ -661,7 +818,16 @@ version = "0.1.12" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7a5bbe824c507c5da5956355e86a746d82e0e1464f65d862cc5e71da70e94b2c" dependencies = [ - "cfg-if", + "cfg-if 1.0.0", +] + +[[package]] +name = "iovec" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b2b3ea6ff95e175473f8ffe6a7eb7c00d054240321b84c57051175fe3c1e075e" +dependencies = [ + "libc", ] [[package]] @@ -670,6 +836,12 @@ version = "0.4.8" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b71991ff56294aa922b450139ee08b3bfc70982c6b2c7562771375cf73542dd4" +[[package]] +name = "itoa" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1aab8fc367588b89dcee83ab0fd66b72b50b72fa1904d7095045ace2b0c81c35" + [[package]] name = "java-properties" version = "1.4.0" @@ -719,7 +891,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4f8de9873b904e74b3533f77493731ee26742418077503683db44e1b3c54aa5c" dependencies = [ "base64", - "bytes", + "bytes 1.1.0", "chrono", "schemars", "serde", @@ -727,11 +899,21 @@ dependencies = [ "serde_json", ] +[[package]] +name = "kernel32-sys" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7507624b29483431c0ba2d82aece8ca6cdba9382bff4ddd0f7490560c056098d" +dependencies = [ + "winapi 0.2.8", + "winapi-build", +] + [[package]] name = "kube" -version = "0.63.2" +version = "0.65.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "75e877325e5540a3041b519bd7ee27a858691f9f816cf533d652cbb33cbfea45" +checksum = "9ec231e9ec9e84789f9eb414d1ac40ce6c90d0517fb272a335b4233f2e272b1e" dependencies = [ "k8s-openapi", "kube-client", @@ -742,16 +924,16 @@ dependencies = [ [[package]] name = "kube-client" -version = "0.63.2" +version = "0.65.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bb8e1a36f17c63e263ba0ffa2c0658de315c75decad983d83aaeafeda578cc78" +checksum = "95dddb1fcced906d79cdae530ff39079c2d3772b2d623088fdbebe610bfa8217" dependencies = [ "base64", - "bytes", + "bytes 1.1.0", "chrono", "dirs-next", "either", - "futures", + "futures 0.3.17", "http", "http-body", "hyper", @@ -762,12 +944,12 @@ dependencies = [ "kube-core", "openssl", "pem", - "pin-project 1.0.8", + "pin-project", "serde", "serde_json", "serde_yaml", "thiserror", - "tokio", + "tokio 1.15.0", "tokio-native-tls", "tokio-util", "tower", @@ -777,9 +959,9 @@ dependencies = [ [[package]] name = "kube-core" -version = "0.63.2" +version = "0.65.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a91e572d244436fbc0d0b5a4829d96b9d623e08eb6b5d1e80418c1fab10b162a" +checksum = "c52b6ab05d160691083430f6f431707a4e05b64903f2ffa0095ee5efde759117" dependencies = [ "chrono", "form_urlencoded", @@ -794,9 +976,9 @@ dependencies = [ [[package]] name = "kube-derive" -version = "0.63.2" +version = "0.65.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2034f57f3db36978ef366f45f1e263e623d9a6a8fcc6a6b1ef8879a213e1d2c4" +checksum = "b98ff3d647085c6c025083efad0435890867f4bea042fc62d408ab3aeb1cdf66" dependencies = [ "darling", "proc-macro2", @@ -807,22 +989,22 @@ dependencies = [ [[package]] name = "kube-runtime" -version = "0.63.2" +version = "0.65.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6018cf8410f9d460be3a3ac35deef63b71c860c368016d7bf6871994343728b4" +checksum = "406280d56304bc79b37af7f78e0d9719a4eebc3f46e5e79663154874b7696a48" dependencies = [ "dashmap", "derivative", - "futures", + "futures 0.3.17", "json-patch", "k8s-openapi", "kube-client", - "pin-project 1.0.8", + "pin-project", "serde", "serde_json", - "smallvec", - "snafu", - "tokio", + "smallvec 1.7.0", + "thiserror", + "tokio 1.15.0", "tokio-util", "tracing", ] @@ -835,15 +1017,15 @@ checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" [[package]] name = "libc" -version = "0.2.106" +version = "0.2.112" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a60553f9a9e039a333b4e9b20573b9e9b9c0bb3a11e201ccc48ef4283456d673" +checksum = "1b03d17f364a3a042d5e5d46b053bbbf82c92c9430c592dd4c064dc6ee997125" [[package]] name = "libgit2-sys" -version = "0.12.24+1.3.0" +version = "0.12.26+1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ddbd6021eef06fb289a8f54b3c2acfdd85ff2a585dfbb24b8576325373d2152c" +checksum = "19e1c899248e606fbfe68dcb31d8b0176ebab833b103824af31bddf4b7457494" dependencies = [ "cc", "libc", @@ -869,13 +1051,31 @@ version = "0.5.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7fb9b38af92608140b86b693604b9ffcc5824240a484d1ecd4795bacb2fe88f3" +[[package]] +name = "lock_api" +version = "0.3.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c4da24a77a3d8a6d4862d95f72e6fdb9c09a643ecdb402d754004a557f2bec75" +dependencies = [ + "scopeguard", +] + +[[package]] +name = "lock_api" +version = "0.4.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "712a4d093c9976e24e7dbca41db895dabcbac38eb5f4045393d17a95bdfb1109" +dependencies = [ + "scopeguard", +] + [[package]] name = "log" version = "0.4.14" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "51b9bbe6c47d51fc3e1a9b945965946b4c44142ab8792c50835a980d362c2710" dependencies = [ - "cfg-if", + "cfg-if 1.0.0", ] [[package]] @@ -893,12 +1093,56 @@ version = "0.1.9" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a3e378b66a060d48947b590737b30a1be76706c8dd7b8ba0f2fe3989c68a853f" +[[package]] +name = "maybe-uninit" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "60302e4db3a61da70c0cb7991976248362f30319e88850c487b9b95bbf059e00" + [[package]] name = "memchr" version = "2.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "308cc39be01b73d0d18f82a0e7b2a3df85245f84af96fdddc5d202d27e47b86a" +[[package]] +name = "memoffset" +version = "0.5.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "043175f069eda7b85febe4a74abbaeff828d9f8b448515d3151a14a3542811aa" +dependencies = [ + "autocfg", +] + +[[package]] +name = "miniz_oxide" +version = "0.4.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a92518e98c078586bc6c934028adcca4c92a53d6a958196de835170a01d84e4b" +dependencies = [ + "adler", + "autocfg", +] + +[[package]] +name = "mio" +version = "0.6.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4afd66f5b91bf2a3bc13fad0e21caedac168ca4c707504e75585648ae80e4cc4" +dependencies = [ + "cfg-if 0.1.10", + "fuchsia-zircon", + "fuchsia-zircon-sys", + "iovec", + "kernel32-sys", + "libc", + "log", + "miow 0.2.2", + "net2", + "slab", + "winapi 0.2.8", +] + [[package]] name = "mio" version = "0.7.14" @@ -907,9 +1151,32 @@ checksum = "8067b404fe97c70829f082dec8bcf4f71225d7eaea1d8645349cb76fa06205cc" dependencies = [ "libc", "log", - "miow", + "miow 0.3.7", "ntapi", - "winapi", + "winapi 0.3.9", +] + +[[package]] +name = "mio-uds" +version = "0.6.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "afcb699eb26d4332647cc848492bbc15eafb26f08d0304550d5aa1f612e066f0" +dependencies = [ + "iovec", + "libc", + "mio 0.6.23", +] + +[[package]] +name = "miow" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ebd808424166322d4a38da87083bfddd3ac4c131334ed55856112eb06d46944d" +dependencies = [ + "kernel32-sys", + "net2", + "winapi 0.2.8", + "ws2_32-sys", ] [[package]] @@ -918,7 +1185,7 @@ version = "0.3.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b9f1c5b025cda876f66ef43a113f91ebc9f4ccef34843000e0adf6ebbab84e21" dependencies = [ - "winapi", + "winapi 0.3.9", ] [[package]] @@ -939,13 +1206,24 @@ dependencies = [ "tempfile", ] +[[package]] +name = "net2" +version = "0.2.37" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "391630d12b68002ae1e25e8f974306474966550ad82dac6886fb8910c19568ae" +dependencies = [ + "cfg-if 0.1.10", + "libc", + "winapi 0.3.9", +] + [[package]] name = "ntapi" version = "0.3.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3f6bb902e437b6d86e03cce10a7e2af662292c5dfef23b65899ea3ac9354ad44" dependencies = [ - "winapi", + "winapi 0.3.9", ] [[package]] @@ -977,11 +1255,20 @@ dependencies = [ "libc", ] +[[package]] +name = "object" +version = "0.27.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "67ac1d3f9a1d3616fd9a60c8d74296f22406a238b6a72f5cc1e6f314df4ffbf9" +dependencies = [ + "memchr", +] + [[package]] name = "once_cell" -version = "1.8.0" +version = "1.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "692fcb63b64b1758029e0a96ee63e049ce8c5948587f2f7208df04625e5f6b56" +checksum = "da32515d9f6e6e489d7bc9d84c71b060db7247dc035bbe44eac88cf87486d8d5" [[package]] name = "openssl" @@ -990,7 +1277,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0c7ae222234c30df141154f159066c5093ff73b63204dcda7121eb082fc56a95" dependencies = [ "bitflags", - "cfg-if", + "cfg-if 1.0.0", "foreign-types", "libc", "once_cell", @@ -1005,9 +1292,9 @@ checksum = "28988d872ab76095a6e6ac88d99b54fd267702734fd7ffe610ca27f533ddb95a" [[package]] name = "openssl-sys" -version = "0.9.70" +version = "0.9.72" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c6517987b3f8226b5da3661dad65ff7f300cc59fb5ea8333ca191fc65fde3edf" +checksum = "7e46109c383602735fa0a2e48dd2b7c892b048e1bf69e5c3b1d804b7d9c203cb" dependencies = [ "autocfg", "cc", @@ -1026,49 +1313,80 @@ dependencies = [ ] [[package]] -name = "pem" -version = "0.8.3" +name = "parking_lot" +version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fd56cbd21fea48d0c440b41cd69c589faacade08c992d9a54e471b79d0fd13eb" +checksum = "f842b1982eb6c2fe34036a4fbfb06dd185a3f5c8edfaacdf7d1ea10b07de6252" dependencies = [ - "base64", - "once_cell", - "regex", + "lock_api 0.3.4", + "parking_lot_core 0.6.2", + "rustc_version 0.2.3", ] [[package]] -name = "percent-encoding" -version = "2.1.0" +name = "parking_lot" +version = "0.11.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d4fd5641d01c8f18a23da7b6fe29298ff4b55afcccdf78973b24cf3175fee32e" +checksum = "7d17b78036a60663b797adeaee46f5c9dfebb86948d1255007a1d6be0271ff99" +dependencies = [ + "instant", + "lock_api 0.4.5", + "parking_lot_core 0.8.5", +] [[package]] -name = "pin-project" -version = "0.4.28" +name = "parking_lot_core" +version = "0.6.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "918192b5c59119d51e0cd221f4d49dde9112824ba717369e903c97d076083d0f" +checksum = "b876b1b9e7ac6e1a74a6da34d25c42e17e8862aa409cbbbdcfc8d86c6f3bc62b" dependencies = [ - "pin-project-internal 0.4.28", + "cfg-if 0.1.10", + "cloudabi", + "libc", + "redox_syscall 0.1.57", + "rustc_version 0.2.3", + "smallvec 0.6.14", + "winapi 0.3.9", ] [[package]] -name = "pin-project" -version = "1.0.8" +name = "parking_lot_core" +version = "0.8.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "576bc800220cc65dac09e99e97b08b358cfab6e17078de8dc5fee223bd2d0c08" +checksum = "d76e8e1493bcac0d2766c42737f34458f1c8c50c0d23bcb24ea953affb273216" dependencies = [ - "pin-project-internal 1.0.8", + "cfg-if 1.0.0", + "instant", + "libc", + "redox_syscall 0.2.10", + "smallvec 1.7.0", + "winapi 0.3.9", ] [[package]] -name = "pin-project-internal" -version = "0.4.28" +name = "pem" +version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3be26700300be6d9d23264c73211d8190e755b6b5ca7a1b28230025511b52a5e" +checksum = "06673860db84d02a63942fa69cd9543f2624a5df3aea7f33173048fa7ad5cf1a" dependencies = [ - "proc-macro2", - "quote", - "syn", + "base64", + "once_cell", + "regex", +] + +[[package]] +name = "percent-encoding" +version = "2.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d4fd5641d01c8f18a23da7b6fe29298ff4b55afcccdf78973b24cf3175fee32e" + +[[package]] +name = "pin-project" +version = "1.0.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "576bc800220cc65dac09e99e97b08b358cfab6e17078de8dc5fee223bd2d0c08" +dependencies = [ + "pin-project-internal", ] [[package]] @@ -1096,9 +1414,9 @@ checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" [[package]] name = "pkg-config" -version = "0.3.22" +version = "0.3.24" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "12295df4f294471248581bc09bef3c38a5e46f1e36d6a37353621a0c6c357e1f" +checksum = "58893f751c9b0412871a09abd62ecd2a00298c6c83befa223ef98c52aef40cbe" [[package]] name = "ppv-lite86" @@ -1144,22 +1462,22 @@ checksum = "bc881b2c22681370c6a780e47af9840ef841837bc98118431d4e1868bd0c1086" [[package]] name = "proc-macro2" -version = "1.0.32" +version = "1.0.34" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ba508cc11742c0dc5c1659771673afbab7a0efab23aa17e854cbab0837ed0b43" +checksum = "2f84e92c0f7c9d58328b85a78557813e4bd845130db68d7184635344399423b1" dependencies = [ "unicode-xid", ] [[package]] name = "product-config" -version = "0.2.0" -source = "git+https://github.com/stackabletech/product-config.git?tag=0.2.0#e32e33d9094e09b1af29045e05a4ab17c511cedb" +version = "0.3.0" +source = "git+https://github.com/stackabletech/product-config.git?tag=0.3.0#602e7b8e1c235dd93fb3289662c1200eaa1a83db" dependencies = [ "java-properties", "regex", "schemars", - "semver", + "semver 1.0.4", "serde", "serde_json", "serde_yaml", @@ -1216,6 +1534,12 @@ dependencies = [ "rand_core", ] +[[package]] +name = "redox_syscall" +version = "0.1.57" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "41cc0f7e4d5d4544e8861606a285bb08d3e70712ccc7d2b84d7c0ccfaf4b05ce" + [[package]] name = "redox_syscall" version = "0.2.10" @@ -1232,7 +1556,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "528532f3d801c87aec9def2add9ca802fe569e44a544afe633765267840abe64" dependencies = [ "getrandom", - "redox_syscall", + "redox_syscall 0.2.10", ] [[package]] @@ -1267,7 +1591,7 @@ version = "0.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3acd125665422973a33ac9d3dd2df85edad0f4ae9b00dafb1a05e43a9f5ef8e7" dependencies = [ - "winapi", + "winapi 0.3.9", ] [[package]] @@ -1276,27 +1600,48 @@ version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2288c66aeafe3b2ed227c981f364f9968fa952ef0b30e84ada4486e7ee24d00a" dependencies = [ - "cfg-if", + "cfg-if 1.0.0", "proc-macro2", "quote", - "rustc_version", + "rustc_version 0.4.0", "syn", ] +[[package]] +name = "rustc-demangle" +version = "0.1.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7ef03e0a2b150c7a90d01faf6254c9c48a41e95fb2a8c2ac1c6f0d2b9aefc342" + +[[package]] +name = "rustc_version" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "138e3e0acb6c9fb258b19b67cb8abd63c00679d2851805ea151465464fe9030a" +dependencies = [ + "semver 0.9.0", +] + [[package]] name = "rustc_version" version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bfa0f585226d2e68097d4f95d113b15b83a82e819ab25717ec0590d9584ef366" dependencies = [ - "semver", + "semver 1.0.4", ] +[[package]] +name = "rustversion" +version = "1.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f2cc38e8fa666e2de3c4aba7edeb5ffc5246c1c2ed0e3d17e560aeeba736b23f" + [[package]] name = "ryu" -version = "1.0.5" +version = "1.0.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "71d301d4193d031abdd79ff7e3dd721168a9572ef3fe51a1517aba235bd8f86e" +checksum = "73b4b750c782965c211b42f022f59af1fbceabdd026623714f104152f1ec149f" [[package]] name = "schannel" @@ -1305,14 +1650,14 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8f05ba609c234e60bee0d547fe94a4c7e9da733d1c962cf6e59efa4cd9c8bc75" dependencies = [ "lazy_static", - "winapi", + "winapi 0.3.9", ] [[package]] name = "schemars" -version = "0.8.6" +version = "0.8.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d7a48d098c2a7fdf5740b19deb1181b4fb8a9e68e03ae517c14cde04b5725409" +checksum = "c6b5a3c80cea1ab61f4260238409510e814e38b4b563c06044edf91e7dc070e3" dependencies = [ "dyn-clone", "schemars_derive", @@ -1322,9 +1667,9 @@ dependencies = [ [[package]] name = "schemars_derive" -version = "0.8.6" +version = "0.8.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4a9ea2a613fe4cd7118b2bb101a25d8ae6192e1975179b67b2f17afd11e70ac8" +checksum = "41ae4dce13e8614c46ac3c38ef1c0d668b101df6ac39817aebdaa26642ddae9b" dependencies = [ "proc-macro2", "quote", @@ -1332,6 +1677,12 @@ dependencies = [ "syn", ] +[[package]] +name = "scopeguard" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d29ab0c6d3fc0ee92fe66e2d99f700eab17a8d57d1c1d3b748380fb20baa78cd" + [[package]] name = "security-framework" version = "2.4.2" @@ -1355,6 +1706,15 @@ dependencies = [ "libc", ] +[[package]] +name = "semver" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d7eb9ef2c18661902cc47e535f9bc51b78acd254da71d375c2f6720d9a40403" +dependencies = [ + "semver-parser", +] + [[package]] name = "semver" version = "1.0.4" @@ -1364,11 +1724,17 @@ dependencies = [ "serde", ] +[[package]] +name = "semver-parser" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "388a1df253eca08550bef6c72392cfe7c30914bf41df5269b68cbd6ff8f570a3" + [[package]] name = "serde" -version = "1.0.130" +version = "1.0.132" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f12d06de37cf59146fbdecab66aa99f9fe4f78722e3607577a5375d66bd0c913" +checksum = "8b9875c23cf305cd1fd7eb77234cbb705f21ea6a72c637a5c6db5fe4b8e7f008" dependencies = [ "serde_derive", ] @@ -1385,9 +1751,9 @@ dependencies = [ [[package]] name = "serde_derive" -version = "1.0.130" +version = "1.0.132" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d7bc1a1ab1961464eae040d96713baa5a724a8152c1222492465b54322ec508b" +checksum = "ecc0db5cb2556c0e558887d9bbdcf6ac4471e83ff66cf696e5419024d1606276" dependencies = [ "proc-macro2", "quote", @@ -1407,24 +1773,24 @@ dependencies = [ [[package]] name = "serde_json" -version = "1.0.68" +version = "1.0.73" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0f690853975602e1bfe1ccbf50504d67174e3bcf340f23b5ea9992e0587a52d8" +checksum = "bcbd0344bc6533bc7ec56df11d42fb70f1b912351c0825ccb7211b59d8af7cf5" dependencies = [ "indexmap", - "itoa", + "itoa 1.0.1", "ryu", "serde", ] [[package]] name = "serde_yaml" -version = "0.8.21" +version = "0.8.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d8c608a35705a5d3cdc9fbe403147647ff34b921f8e833e49306df898f9b20af" +checksum = "a4a521f2940385c165a24ee286aa8599633d162077a54bdcae2a6fd5a7bfa7a0" dependencies = [ - "dtoa", "indexmap", + "ryu", "serde", "yaml-rust", ] @@ -1453,6 +1819,15 @@ version = "0.4.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9def91fd1e018fe007022791f865d0ccc9b3a0d5001e01aabb8b40e46000afb5" +[[package]] +name = "smallvec" +version = "0.6.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b97fcaeba89edba30f044a10c6a3cc39df9c3f17d7cd829dd1446cab35f890e0" +dependencies = [ + "maybe-uninit", +] + [[package]] name = "smallvec" version = "1.7.0" @@ -1466,8 +1841,6 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "eab12d3c261b2308b0d80c26fffb58d17eba81a4be97890101f416b478c79ca7" dependencies = [ "doc-comment", - "futures-core", - "pin-project 0.4.28", "snafu-derive", ] @@ -1489,7 +1862,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5dc90fe6c7be1a323296982db1836d1ea9e47b6839496dde9a541bc496df3516" dependencies = [ "libc", - "winapi", + "winapi 0.3.9", ] [[package]] @@ -1499,14 +1872,13 @@ dependencies = [ "duplicate", "indoc", "rstest", - "semver", + "semver 1.0.4", "serde", "serde_json", "serde_yaml", "stackable-operator", - "stackable-zookeeper-crd", - "strum", - "strum_macros", + "strum 0.22.0", + "strum_macros 0.22.0", "thiserror", "tracing", ] @@ -1515,45 +1887,42 @@ dependencies = [ name = "stackable-druid-operator" version = "0.2.0-nightly" dependencies = [ - "async-trait", - "futures", - "rstest", - "serde", - "serde_json", - "stackable-druid-crd", - "stackable-operator", - "stackable-zookeeper-crd", - "strum", - "strum_macros", - "thiserror", - "tracing", -] - -[[package]] -name = "stackable-druid-operator-binary" -version = "0.2.0-nightly" -dependencies = [ + "anyhow", "built", "clap", + "failure", + "fnv", + "futures 0.3.17", + "pin-project", + "semver 1.0.4", + "serde", + "serde_json", + "serde_yaml", + "snafu", "stackable-druid-crd", - "stackable-druid-operator", "stackable-operator", - "tokio", + "structopt", + "strum 0.22.0", + "strum_macros 0.22.0", + "tokio 0.1.22", + "tokio 1.15.0", + "tokio-executor", "tracing", ] [[package]] name = "stackable-operator" -version = "0.4.0" -source = "git+https://github.com/stackabletech/operator-rs.git?tag=0.4.0#50c3ee9564b1d3eb9d6e43c5e87c2102afbacc27" +version = "0.6.0" +source = "git+https://github.com/stackabletech/operator-rs.git?tag=0.6.0#80a91d3de3b5fe4384d30a5adbb122288098f619" dependencies = [ "async-trait", "backoff", "chrono", "clap", "const_format", + "derivative", "either", - "futures", + "futures 0.3.17", "json-patch", "k8s-openapi", "kube", @@ -1565,32 +1934,17 @@ dependencies = [ "serde", "serde_json", "serde_yaml", - "strum", - "strum_macros", + "structopt", + "strum 0.23.0", + "strum_macros 0.23.1", "thiserror", - "tokio", + "tokio 1.15.0", "tracing", "tracing-futures", "tracing-subscriber", "uuid", ] -[[package]] -name = "stackable-zookeeper-crd" -version = "0.5.0" -source = "git+https://github.com/stackabletech/zookeeper-operator.git?tag=0.5.0#45ebcca59ee128af363d0266b83cd3c05a6659a9" -dependencies = [ - "duplicate", - "semver", - "serde", - "serde_json", - "stackable-operator", - "strum", - "strum_macros", - "thiserror", - "tracing", -] - [[package]] name = "strsim" version = "0.8.0" @@ -1603,12 +1957,42 @@ version = "0.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "73473c0e59e6d5812c5dfe2a064a6444949f089e20eec9a2e5506596494e4623" +[[package]] +name = "structopt" +version = "0.3.25" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "40b9788f4202aa75c240ecc9c15c65185e6a39ccdeb0fd5d008b98825464c87c" +dependencies = [ + "clap", + "lazy_static", + "structopt-derive", +] + +[[package]] +name = "structopt-derive" +version = "0.4.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dcb5ae327f9cc13b68763b5749770cb9e048a99bd9dfdfa58d0cf05d5f64afe0" +dependencies = [ + "heck", + "proc-macro-error", + "proc-macro2", + "quote", + "syn", +] + [[package]] name = "strum" version = "0.22.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f7ac893c7d471c8a21f31cfe213ec4f6d9afeed25537c772e08ef3f005f8729e" +[[package]] +name = "strum" +version = "0.23.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cae14b91c7d11c9a851d3fbc80a963198998c2a64eec840477fa92d8ce9b70bb" + [[package]] name = "strum_macros" version = "0.22.0" @@ -1621,29 +2005,54 @@ dependencies = [ "syn", ] +[[package]] +name = "strum_macros" +version = "0.23.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5bb0dc7ee9c15cea6199cde9a127fa16a4c5819af85395457ad72d68edc85a38" +dependencies = [ + "heck", + "proc-macro2", + "quote", + "rustversion", + "syn", +] + [[package]] name = "syn" -version = "1.0.81" +version = "1.0.82" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f2afee18b8beb5a596ecb4a2dce128c719b4ba399d34126b9e4396e3f9860966" +checksum = "8daf5dd0bb60cbd4137b1b587d2fc0ae729bc07cf01cd70b36a1ed5ade3b9d59" dependencies = [ "proc-macro2", "quote", "unicode-xid", ] +[[package]] +name = "synstructure" +version = "0.12.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f36bdaa60a83aca3921b5259d5400cbf5e90fc51931376a9bd4a0eb79aa7210f" +dependencies = [ + "proc-macro2", + "quote", + "syn", + "unicode-xid", +] + [[package]] name = "tempfile" version = "3.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "dac1c663cfc93810f88aed9b8941d48cabf856a1b111c29a40439018d870eb22" dependencies = [ - "cfg-if", + "cfg-if 1.0.0", "libc", "rand", - "redox_syscall", + "redox_syscall 0.2.10", "remove_dir_all", - "winapi", + "winapi 0.3.9", ] [[package]] @@ -1692,14 +2101,14 @@ checksum = "6db9e6914ab8b1ae1c260a4ae7a49b6c5611b40328a735b21862567685e73255" dependencies = [ "libc", "wasi", - "winapi", + "winapi 0.3.9", ] [[package]] name = "tinyvec" -version = "1.5.0" +version = "1.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f83b2a3d4d9091d0abd7eba4dc2710b1718583bd4d8992e2190720ea38f391f7" +checksum = "2c1c1d5a42b6245520c249549ec267180beaffcc0615401ac8e31853d4b6d8d2" dependencies = [ "tinyvec_macros", ] @@ -1712,19 +2121,98 @@ checksum = "cda74da7e1a664f795bb1f8a87ec406fb89a02522cf6e50620d016add6dbbf5c" [[package]] name = "tokio" -version = "1.14.0" +version = "0.1.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "70e992e41e0d2fb9f755b37446f20900f64446ef54874f40a60c78f021ac6144" +checksum = "5a09c0b5bb588872ab2f09afa13ee6e9dac11e10a0ec9e8e3ba39a5a5d530af6" dependencies = [ - "autocfg", + "bytes 0.4.12", + "futures 0.1.31", + "mio 0.6.23", + "num_cpus", + "tokio-codec", + "tokio-current-thread", + "tokio-executor", + "tokio-fs", + "tokio-io", + "tokio-reactor", + "tokio-sync", + "tokio-tcp", + "tokio-threadpool", + "tokio-timer", + "tokio-udp", + "tokio-uds", +] + +[[package]] +name = "tokio" +version = "1.15.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fbbf1c778ec206785635ce8ad57fe52b3009ae9e0c9f574a728f3049d3e55838" +dependencies = [ + "bytes 1.1.0", "libc", - "mio", + "memchr", + "mio 0.7.14", "num_cpus", "once_cell", + "parking_lot 0.11.2", "pin-project-lite", "signal-hook-registry", "tokio-macros", - "winapi", + "winapi 0.3.9", +] + +[[package]] +name = "tokio-codec" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "25b2998660ba0e70d18684de5d06b70b70a3a747469af9dea7618cc59e75976b" +dependencies = [ + "bytes 0.4.12", + "futures 0.1.31", + "tokio-io", +] + +[[package]] +name = "tokio-current-thread" +version = "0.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b1de0e32a83f131e002238d7ccde18211c0a5397f60cbfffcb112868c2e0e20e" +dependencies = [ + "futures 0.1.31", + "tokio-executor", +] + +[[package]] +name = "tokio-executor" +version = "0.1.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fb2d1b8f4548dbf5e1f7818512e9c406860678f29c300cdf0ebac72d1a3a1671" +dependencies = [ + "crossbeam-utils", + "futures 0.1.31", +] + +[[package]] +name = "tokio-fs" +version = "0.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "297a1206e0ca6302a0eed35b700d292b275256f596e2f3fea7729d5e629b6ff4" +dependencies = [ + "futures 0.1.31", + "tokio-io", + "tokio-threadpool", +] + +[[package]] +name = "tokio-io" +version = "0.1.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "57fc868aae093479e3131e3d165c93b1c7474109d13c90ec0dda2a1bbfff0674" +dependencies = [ + "bytes 0.4.12", + "futures 0.1.31", + "log", ] [[package]] @@ -1734,14 +2222,14 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "90c49f106be240de154571dd31fbe48acb10ba6c6dd6f6517ad603abffa42de9" dependencies = [ "pin-project-lite", - "tokio", + "tokio 1.15.0", ] [[package]] name = "tokio-macros" -version = "1.6.0" +version = "1.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c9efc1aba077437943f7515666aa2b882dfabfbfdf89c819ea75a8d6e9eaba5e" +checksum = "b557f72f448c511a979e2564e55d74e6c4432fc96ff4f6241bc6bded342643b7" dependencies = [ "proc-macro2", "quote", @@ -1755,7 +2243,112 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f7d995660bd2b7f8c1568414c1126076c13fbb725c40112dc0120b78eb9b717b" dependencies = [ "native-tls", - "tokio", + "tokio 1.15.0", +] + +[[package]] +name = "tokio-reactor" +version = "0.1.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09bc590ec4ba8ba87652da2068d150dcada2cfa2e07faae270a5e0409aa51351" +dependencies = [ + "crossbeam-utils", + "futures 0.1.31", + "lazy_static", + "log", + "mio 0.6.23", + "num_cpus", + "parking_lot 0.9.0", + "slab", + "tokio-executor", + "tokio-io", + "tokio-sync", +] + +[[package]] +name = "tokio-sync" +version = "0.1.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "edfe50152bc8164fcc456dab7891fa9bf8beaf01c5ee7e1dd43a397c3cf87dee" +dependencies = [ + "fnv", + "futures 0.1.31", +] + +[[package]] +name = "tokio-tcp" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "98df18ed66e3b72e742f185882a9e201892407957e45fbff8da17ae7a7c51f72" +dependencies = [ + "bytes 0.4.12", + "futures 0.1.31", + "iovec", + "mio 0.6.23", + "tokio-io", + "tokio-reactor", +] + +[[package]] +name = "tokio-threadpool" +version = "0.1.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "df720b6581784c118f0eb4310796b12b1d242a7eb95f716a8367855325c25f89" +dependencies = [ + "crossbeam-deque", + "crossbeam-queue", + "crossbeam-utils", + "futures 0.1.31", + "lazy_static", + "log", + "num_cpus", + "slab", + "tokio-executor", +] + +[[package]] +name = "tokio-timer" +version = "0.2.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "93044f2d313c95ff1cb7809ce9a7a05735b012288a888b62d4434fd58c94f296" +dependencies = [ + "crossbeam-utils", + "futures 0.1.31", + "slab", + "tokio-executor", +] + +[[package]] +name = "tokio-udp" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e2a0b10e610b39c38b031a2fcab08e4b82f16ece36504988dcbd81dbba650d82" +dependencies = [ + "bytes 0.4.12", + "futures 0.1.31", + "log", + "mio 0.6.23", + "tokio-codec", + "tokio-io", + "tokio-reactor", +] + +[[package]] +name = "tokio-uds" +version = "0.2.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ab57a4ac4111c8c9dbcf70779f6fc8bc35ae4b2454809febac840ad19bd7e4e0" +dependencies = [ + "bytes 0.4.12", + "futures 0.1.31", + "iovec", + "libc", + "log", + "mio 0.6.23", + "mio-uds", + "tokio-codec", + "tokio-io", + "tokio-reactor", ] [[package]] @@ -1764,13 +2357,13 @@ version = "0.6.9" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9e99e1983e5d376cd8eb4b66604d2e99e79f5bd988c3055891dcd8c9e2604cc0" dependencies = [ - "bytes", + "bytes 1.1.0", "futures-core", "futures-sink", "log", "pin-project-lite", "slab", - "tokio", + "tokio 1.15.0", ] [[package]] @@ -1784,15 +2377,15 @@ dependencies = [ [[package]] name = "tower" -version = "0.4.10" +version = "0.4.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c00e500fff5fa1131c866b246041a6bf96da9c965f8fe4128cb1421f23e93c00" +checksum = "5651b5f6860a99bd1adb59dbfe1db8beb433e73709d9032b413a77e2fb7c066a" dependencies = [ "futures-core", "futures-util", - "pin-project 1.0.8", + "pin-project", "pin-project-lite", - "tokio", + "tokio 1.15.0", "tokio-util", "tower-layer", "tower-service", @@ -1801,17 +2394,19 @@ dependencies = [ [[package]] name = "tower-http" -version = "0.1.1" +version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b7b56efe69aa0ad2b5da6b942e57ea9f6fe683b7a314d4ff48662e2c8838de1" +checksum = "39ee603d6e665ecc7e0f8d479eedb4626bd4726f0ee6119cee5b3a6bf184cac0" dependencies = [ "base64", - "bytes", + "bitflags", + "bytes 1.1.0", "futures-core", "futures-util", "http", "http-body", - "pin-project 1.0.8", + "http-range-header", + "pin-project-lite", "tower-layer", "tower-service", "tracing", @@ -1835,7 +2430,7 @@ version = "0.1.29" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "375a639232caf30edfc78e8d89b2d4c375515393e7af7e16f01cd96917fb2105" dependencies = [ - "cfg-if", + "cfg-if 1.0.0", "log", "pin-project-lite", "tracing-attributes", @@ -1868,7 +2463,7 @@ version = "0.2.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "97d095ae15e245a057c8e8451bab9b3ee1e1f68e9ba2b4fbc18d0ac5237835f2" dependencies = [ - "pin-project 1.0.8", + "pin-project", "tracing", ] @@ -1885,16 +2480,16 @@ dependencies = [ [[package]] name = "tracing-subscriber" -version = "0.3.1" +version = "0.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "80a4ddde70311d8da398062ecf6fc2c309337de6b0f77d6c27aff8d53f6fca52" +checksum = "245da694cc7fc4729f3f418b304cb57789f1bed2a78c575407ab8a23f53cb4d3" dependencies = [ - "ansi_term 0.12.1", + "ansi_term", "lazy_static", "matchers", "regex", "sharded-slab", - "smallvec", + "smallvec 1.7.0", "thread_local", "tracing", "tracing-core", @@ -2010,6 +2605,12 @@ version = "0.10.0+wasi-snapshot-preview1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1a143597ca7c7793eff794def352d41792a93c481eb1042423ff7ff72ba2c31f" +[[package]] +name = "winapi" +version = "0.2.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "167dc9d6949a9b857f3451275e911c3f44255842c1f7a76f33c55103a909087a" + [[package]] name = "winapi" version = "0.3.9" @@ -2020,6 +2621,12 @@ dependencies = [ "winapi-x86_64-pc-windows-gnu", ] +[[package]] +name = "winapi-build" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2d315eee3b34aca4797b2da6b13ed88266e6d612562a0c46390af8299fc699bc" + [[package]] name = "winapi-i686-pc-windows-gnu" version = "0.4.0" @@ -2032,6 +2639,16 @@ version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" +[[package]] +name = "ws2_32-sys" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d59cefebd0c892fa2dd6de581e937301d8552cb44489cdff035c6187cb63fa5e" +dependencies = [ + "winapi 0.2.8", + "winapi-build", +] + [[package]] name = "xml-rs" version = "0.8.4" diff --git a/Cargo.toml b/Cargo.toml index 29e1dfaa..9915447f 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,5 +1,5 @@ [workspace] members = [ - "rust/crd", "rust/operator", "rust/operator-binary" + "rust/crd", "rust/operator-binary" ] diff --git a/README.md b/README.md index e2376071..3b598d1a 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,9 @@ # Stackable Operator for Apache Druid + +[![Build Actions Status](https://ci.stackable.tech/job/Druid%20Operator%20Integration%20Tests/badge/icon?subject=Integration%20Tests)](https://ci.stackable.tech/job/Druid%20Operator%20Integration%20Tests) + This is a Kubernetes Operator to manage Druid clusters. It is written by https://www.stackable.de[Stackable] in Rust. -The docs can be found in the `docs` subdirectory, and they are published together with docs for all other Stackable products at https://docs.stackable.tech. \ No newline at end of file +The *docs* can be found in the `docs` subdirectory, and they are published together with docs for all other Stackable products at https://docs.stackable.tech. diff --git a/deploy/crd/druidcluster.crd.yaml b/deploy/crd/druidcluster.crd.yaml index c5f103c9..26620fb2 100644 --- a/deploy/crd/druidcluster.crd.yaml +++ b/deploy/crd/druidcluster.crd.yaml @@ -635,22 +635,21 @@ spec: required: - credentialsSecret type: object + stopped: + description: "Emergency stop button, if `true` then all pods are stopped without affecting configuration (as setting `replicas` to `0` would)" + nullable: true + type: boolean version: - enum: - - 0.22.0 + description: Desired Druid version type: string zookeeperReference: - description: Contains all necessary information identify a Stackable managed ZooKeeper ensemble and build a connection string for it. The main purpose for this struct is for other operators that need to reference a ZooKeeper ensemble to use in their CRDs. This has the benefit of keeping references to Zookeeper ensembles consistent throughout the entire stack. properties: - chroot: - nullable: true - type: string - name: + configMapName: type: string namespace: type: string required: - - name + - configMapName - namespace type: object required: @@ -666,93 +665,6 @@ spec: type: object status: nullable: true - properties: - clusterExecutionStatus: - description: Signals the current status of the cluster - enum: - - Stopped - - Running - nullable: true - type: string - conditions: - items: - description: Condition contains details for one aspect of the current state of this API Resource. - properties: - lastTransitionTime: - description: "lastTransitionTime is the last time the condition transitioned from one status to another. This should be when the underlying condition changed. If that is not known, then using the time when the API field changed is acceptable." - format: date-time - type: string - message: - description: message is a human readable message indicating details about the transition. This may be an empty string. - type: string - observedGeneration: - description: "observedGeneration represents the .metadata.generation that the condition was set based upon. For instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date with respect to the current state of the instance." - format: int64 - type: integer - reason: - description: "reason contains a programmatic identifier indicating the reason for the condition's last transition. Producers of specific condition types may define expected values and meanings for this field, and whether the values are considered a guaranteed API. The value should be a CamelCase string. This field may not be empty." - type: string - status: - description: "status of the condition, one of True, False, Unknown." - type: string - type: - description: type of condition in CamelCase or in foo.example.com/CamelCase. - type: string - required: - - lastTransitionTime - - message - - reason - - status - - type - type: object - type: array - currentCommand: - nullable: true - properties: - kind: - type: string - name: - type: string - namespace: - type: string - uid: - type: string - required: - - kind - - name - - namespace - - uid - type: object - history: - nullable: true - properties: - mapping: - additionalProperties: - properties: - name: - type: string - required: - - name - type: object - type: object - required: - - mapping - type: object - version: - description: The version of the product provided by the operator. Split into current and target version in order track upgrading and downgrading progress. - nullable: true - properties: - current: - enum: - - 0.22.0 - nullable: true - type: string - target: - enum: - - 0.22.0 - nullable: true - type: string - type: object type: object required: - spec diff --git a/deploy/crd/restart.crd.yaml b/deploy/crd/restart.crd.yaml deleted file mode 100644 index fe9606f9..00000000 --- a/deploy/crd/restart.crd.yaml +++ /dev/null @@ -1,64 +0,0 @@ ---- -apiVersion: apiextensions.k8s.io/v1 -kind: CustomResourceDefinition -metadata: - name: restarts.command.druid.stackable.tech -spec: - group: command.druid.stackable.tech - names: - categories: [] - kind: Restart - plural: restarts - shortNames: [] - singular: restart - scope: Namespaced - versions: - - additionalPrinterColumns: [] - name: v1alpha1 - schema: - openAPIV3Schema: - description: "Auto-generated derived type for RestartCommandSpec via `CustomResource`" - properties: - spec: - properties: - name: - type: string - roles: - items: - enum: - - Coordinator - - Broker - - Historical - - MiddleManager - - Router - type: string - nullable: true - type: array - rolling: - type: boolean - required: - - name - - rolling - type: object - status: - nullable: true - properties: - finishedAt: - description: Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers. - format: date-time - nullable: true - type: string - startedAt: - description: Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers. - format: date-time - nullable: true - type: string - type: object - required: - - spec - title: Restart - type: object - served: true - storage: true - subresources: - status: {} diff --git a/deploy/crd/start.crd.yaml b/deploy/crd/start.crd.yaml deleted file mode 100644 index ceabc8a7..00000000 --- a/deploy/crd/start.crd.yaml +++ /dev/null @@ -1,64 +0,0 @@ ---- -apiVersion: apiextensions.k8s.io/v1 -kind: CustomResourceDefinition -metadata: - name: starts.command.druid.stackable.tech -spec: - group: command.druid.stackable.tech - names: - categories: [] - kind: Start - plural: starts - shortNames: [] - singular: start - scope: Namespaced - versions: - - additionalPrinterColumns: [] - name: v1alpha1 - schema: - openAPIV3Schema: - description: "Auto-generated derived type for StartCommandSpec via `CustomResource`" - properties: - spec: - properties: - name: - type: string - roles: - items: - enum: - - Coordinator - - Broker - - Historical - - MiddleManager - - Router - type: string - nullable: true - type: array - rolling: - type: boolean - required: - - name - - rolling - type: object - status: - nullable: true - properties: - finishedAt: - description: Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers. - format: date-time - nullable: true - type: string - startedAt: - description: Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers. - format: date-time - nullable: true - type: string - type: object - required: - - spec - title: Start - type: object - served: true - storage: true - subresources: - status: {} diff --git a/deploy/crd/stop.crd.yaml b/deploy/crd/stop.crd.yaml deleted file mode 100644 index 1392aa3a..00000000 --- a/deploy/crd/stop.crd.yaml +++ /dev/null @@ -1,64 +0,0 @@ ---- -apiVersion: apiextensions.k8s.io/v1 -kind: CustomResourceDefinition -metadata: - name: stops.command.druid.stackable.tech -spec: - group: command.druid.stackable.tech - names: - categories: [] - kind: Stop - plural: stops - shortNames: [] - singular: stop - scope: Namespaced - versions: - - additionalPrinterColumns: [] - name: v1alpha1 - schema: - openAPIV3Schema: - description: "Auto-generated derived type for StopCommandSpec via `CustomResource`" - properties: - spec: - properties: - name: - type: string - roles: - items: - enum: - - Coordinator - - Broker - - Historical - - MiddleManager - - Router - type: string - nullable: true - type: array - rolling: - type: boolean - required: - - name - - rolling - type: object - status: - nullable: true - properties: - finishedAt: - description: Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers. - format: date-time - nullable: true - type: string - startedAt: - description: Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers. - format: date-time - nullable: true - type: string - type: object - required: - - spec - title: Stop - type: object - served: true - storage: true - subresources: - status: {} diff --git a/docs/modules/ROOT/pages/installation.adoc b/docs/modules/ROOT/pages/installation.adoc index 53d13726..51f6c70e 100644 --- a/docs/modules/ROOT/pages/installation.adoc +++ b/docs/modules/ROOT/pages/installation.adoc @@ -2,9 +2,27 @@ There are two ways to run the Apache Druid Operator: -1. As a Docker container +1. Using Helm -2. Build from source. This is documented in xref:building.adoc[Building the Operator]. +2. As a Docker container + +3. Build from source. This is documented in xref:building.adoc[Building the Operator]. + +== Helm + +Helm allows you to download and deploy Stackable operators on Kubernetes and is by far the easiest installation method. First ensure that you have installed the Stackable Operators Helm repository: +[source,bash] +---- +$ helm repo add stackable https://repo.stackable.tech/repository/helm-stable/ +---- + +Then install the Stackable Operator for Apache Superset +[source,bash] +---- +$ helm install druid-operator stackable/druid-operator +---- + +Helm will deploy the operator in a Kubernetes container and apply the CRDs for the Apache Druid service. You are now ready to deploy Apache Druid in Kubernetes. == Docker @@ -16,8 +34,20 @@ This Operator is published as a Docker image: docker.stackable.tech/stackable/druid-operator ---- +When installing manually with Docker you will need to install the Stackable CRDs for Apache Druid in your Kubernetes environment. These are available on the https://github.com/stackabletech/druid-operator/tree/main/deploy/crd[Stackable GitHub repository] +for this operator. +[source] +---- +$ kubectl apply -f druidcluster.crd.yaml +---- + To run it straight from Docker you can use this command: [source,bash] ---- -docker run -e DRUID_OPERATOR_LOG=trace -e KUBECONFIG=/root/.kube/k3s.yaml --mount type=bind,source="$HOME/.kube/k3s.yaml",target="/root/.kube/k3s.yaml" -it docker.stackable.tech/stackable/druid-operator:latest +docker run \ + --name druid-operator \ + --network host \ + --env KUBECONFIG=/home/stackable/.kube/config \ + --mount type=bind,source="$HOME/.kube/config",target="/home/stackable/.kube/config" \ + docker.stackable.tech/stackable/druid-operator:latest ---- diff --git a/docs/modules/ROOT/pages/usage.adoc b/docs/modules/ROOT/pages/usage.adoc index 45e4ba95..7c64233d 100644 --- a/docs/modules/ROOT/pages/usage.adoc +++ b/docs/modules/ROOT/pages/usage.adoc @@ -13,11 +13,11 @@ Please refer to the https://github.com/stackabletech/zookeeper-operator[Zookeepe Druid requires a MySQL or Postgres database. -For testing purposes, you can spin up a PostgreSQL database with the bitnami PostgreSQL helm chart. Add the bitname repository: +For testing purposes, you can spin up a PostgreSQL database with the bitnami PostgreSQL helm chart. Add the bitnami repository: helm repo add bitnami https://charts.bitnami.com/bitnami -And setup the Postgres database: +And set up the Postgres database: helm install druid bitnami/postgresql \ --set postgresqlUsername=druid \ @@ -30,7 +30,7 @@ With the prerequisites fulfilled, the CRD for this operator must be created: kubectl apply -f /etc/stackable/druid-operator/crd -Then a cluster can be deployed using the example below. Replace `` with the actual ip address and make sure you have *exactly one node* labeled with `nodeType=druid-data` as used in the deep storage selector. Having more than one data node is not supported when using local storage. +Then a cluster can be deployed using the example below. Make sure you have *exactly one node* labeled with `nodeType=druid-data` as used in the deep storage selector. Having more than one data node is not supported when using local storage. cat </druid - host: + connString: jdbc:postgresql://druid-postgresql/druid + host: druid-postgresql # this is the name of the Postgres service port: 5432 user: druid password: druid @@ -91,11 +89,7 @@ spec: metricsPort: 9195 replicas: 1 -The Router is hosting the web UI, to be able to access the web interface you need to forward port 8888 first: - - kubectl port-forward --namespace default po/ 8888:8888 - -Now open `http://localhost:8888` in your browser and follow the https://druid.apache.org/docs/latest/tutorials/index.html#step-4-load-data[druid documentation] on how to load and query sample data. +The Router is hosting the web UI, a `NodePort` service is created by the operator to access the web UI. Connect to the `simple-router` `NodePort` service and follow the https://druid.apache.org/docs/latest/tutorials/index.html#step-4-load-data[druid documentation] on how to load and query sample data. For monitoring purposes, Prometheus metrics are exposed on `metricsPort`. Similarly to the web UI above, you need to expose the corresponding port for the group you want to monitor. diff --git a/examples/simple-druid-cluster-derby.yaml b/examples/derby/druidcluster.yaml similarity index 98% rename from examples/simple-druid-cluster-derby.yaml rename to examples/derby/druidcluster.yaml index 03062b43..88f52b25 100644 --- a/examples/simple-druid-cluster-derby.yaml +++ b/examples/derby/druidcluster.yaml @@ -5,8 +5,8 @@ metadata: spec: version: 0.22.0 zookeeperReference: + configMapName: simple namespace: default - name: simple metadataStorageDatabase: dbType: derby connString: jdbc:derby://localhost:1527/var/druid/metadata.db;create=true diff --git a/examples/router-service.yaml b/examples/derby/router-service.yaml similarity index 100% rename from examples/router-service.yaml rename to examples/derby/router-service.yaml diff --git a/examples/derby/zookeepercluster.yaml b/examples/derby/zookeepercluster.yaml new file mode 100644 index 00000000..c415336c --- /dev/null +++ b/examples/derby/zookeepercluster.yaml @@ -0,0 +1,18 @@ +apiVersion: zookeeper.stackable.tech/v1alpha1 +kind: ZookeeperCluster +metadata: + name: simple +spec: + version: 3.5.8 + servers: + roleGroups: + default: + selector: + matchLabels: + kubernetes.io/os: linux + replicas: 1 + # Here you can set the Stackable supported configuration parameters + # See the documentation for a full list of the available configuration parameters + config: + metricsPort: 9505 + dataDir: /stackable/data diff --git a/examples/psql-s3/.gitignore b/examples/psql-s3/.gitignore new file mode 100644 index 00000000..9fa0dc31 --- /dev/null +++ b/examples/psql-s3/.gitignore @@ -0,0 +1 @@ +s3-credentials.yaml \ No newline at end of file diff --git a/examples/psql-s3/README.md b/examples/psql-s3/README.md new file mode 100644 index 00000000..47d82369 --- /dev/null +++ b/examples/psql-s3/README.md @@ -0,0 +1,11 @@ +A PostgreSQL database is required, you can spin up a PostgreSQL database with the bitnami PostgreSQL helm chart. +Add the bitname repository: + + helm repo add bitnami https://charts.bitnami.com/bitnami + +And setup the Postgres database: + + helm install druid bitnami/postgresql \ + --set postgresqlUsername=druid \ + --set postgresqlPassword=druid \ + --set postgresqlDatabase=druid \ No newline at end of file diff --git a/examples/simple-druid-cluster-psql-s3.yaml b/examples/psql-s3/druidcluster.yaml similarity index 91% rename from examples/simple-druid-cluster-psql-s3.yaml rename to examples/psql-s3/druidcluster.yaml index 1e0c5f07..9fa3bf3a 100644 --- a/examples/simple-druid-cluster-psql-s3.yaml +++ b/examples/psql-s3/druidcluster.yaml @@ -5,12 +5,12 @@ metadata: spec: version: 0.22.0 zookeeperReference: + configMapName: simple namespace: default - name: simple metadataStorageDatabase: dbType: postgresql - connString: jdbc:postgresql://10.244.4.3/druid - host: 10.244.4.3 + connString: jdbc:postgresql://druid-postgresql/druid + host: druid-postgresql port: 5432 user: druid password: druid @@ -19,7 +19,7 @@ spec: credentialsSecret: s3-credentials # this needs to be deployed additionally deepStorage: storageType: s3 - bucket: druid-deepstorage + bucket: druid-deepstorage2 baseKey: storage # this is optional; deep storage can also be at the root of the bucket brokers: roleGroups: diff --git a/examples/s3-credentials.yaml b/examples/psql-s3/s3-credentials.yaml.example similarity index 100% rename from examples/s3-credentials.yaml rename to examples/psql-s3/s3-credentials.yaml.example diff --git a/examples/psql-s3/zookeepercluster.yaml b/examples/psql-s3/zookeepercluster.yaml new file mode 100644 index 00000000..c415336c --- /dev/null +++ b/examples/psql-s3/zookeepercluster.yaml @@ -0,0 +1,18 @@ +apiVersion: zookeeper.stackable.tech/v1alpha1 +kind: ZookeeperCluster +metadata: + name: simple +spec: + version: 3.5.8 + servers: + roleGroups: + default: + selector: + matchLabels: + kubernetes.io/os: linux + replicas: 1 + # Here you can set the Stackable supported configuration parameters + # See the documentation for a full list of the available configuration parameters + config: + metricsPort: 9505 + dataDir: /stackable/data diff --git a/examples/psql/README.md b/examples/psql/README.md new file mode 100644 index 00000000..47d82369 --- /dev/null +++ b/examples/psql/README.md @@ -0,0 +1,11 @@ +A PostgreSQL database is required, you can spin up a PostgreSQL database with the bitnami PostgreSQL helm chart. +Add the bitname repository: + + helm repo add bitnami https://charts.bitnami.com/bitnami + +And setup the Postgres database: + + helm install druid bitnami/postgresql \ + --set postgresqlUsername=druid \ + --set postgresqlPassword=druid \ + --set postgresqlDatabase=druid \ No newline at end of file diff --git a/examples/simple-druid-cluster-psql.yaml b/examples/psql/druidcluster.yaml similarity index 92% rename from examples/simple-druid-cluster-psql.yaml rename to examples/psql/druidcluster.yaml index e85b5756..2d6586e5 100644 --- a/examples/simple-druid-cluster-psql.yaml +++ b/examples/psql/druidcluster.yaml @@ -5,12 +5,12 @@ metadata: spec: version: 0.22.0 zookeeperReference: + configMapName: simple namespace: default - name: simple metadataStorageDatabase: dbType: postgresql - connString: jdbc:postgresql://10.96.62.135/druid - host: 10.96.62.135 + connString: jdbc:postgresql://druid-postgresql/druid + host: druid-postgresql port: 5432 user: druid password: druid diff --git a/examples/psql/router-service.yaml b/examples/psql/router-service.yaml new file mode 100644 index 00000000..9c7cf9dd --- /dev/null +++ b/examples/psql/router-service.yaml @@ -0,0 +1,13 @@ +apiVersion: v1 +kind: Service +metadata: + name: druid-router +spec: + type: NodePort + selector: + app.kubernetes.io/name: druid + app.kubernetes.io/component: router + ports: + - port: 8888 + targetPort: 8888 + nodePort: 30888 diff --git a/examples/psql/zookeepercluster.yaml b/examples/psql/zookeepercluster.yaml new file mode 100644 index 00000000..c415336c --- /dev/null +++ b/examples/psql/zookeepercluster.yaml @@ -0,0 +1,18 @@ +apiVersion: zookeeper.stackable.tech/v1alpha1 +kind: ZookeeperCluster +metadata: + name: simple +spec: + version: 3.5.8 + servers: + roleGroups: + default: + selector: + matchLabels: + kubernetes.io/os: linux + replicas: 1 + # Here you can set the Stackable supported configuration parameters + # See the documentation for a full list of the available configuration parameters + config: + metricsPort: 9505 + dataDir: /stackable/data diff --git a/examples/restart.command.example.yaml b/examples/restart.command.example.yaml deleted file mode 100644 index 5ff265ac..00000000 --- a/examples/restart.command.example.yaml +++ /dev/null @@ -1,7 +0,0 @@ -apiVersion: command.druid.stackable.tech/v1alpha1 -kind: Restart -metadata: - generateName: druid-cluster-command-restart- -spec: - name: "simple" - rolling: true \ No newline at end of file diff --git a/examples/start.command.example.yaml b/examples/start.command.example.yaml deleted file mode 100644 index 15dbf177..00000000 --- a/examples/start.command.example.yaml +++ /dev/null @@ -1,7 +0,0 @@ -apiVersion: command.druid.stackable.tech/v1alpha1 -kind: Start -metadata: - generateName: druid-cluster-command-start- -spec: - name: "simple" - rolling: true \ No newline at end of file diff --git a/examples/stop.command.example.yaml b/examples/stop.command.example.yaml deleted file mode 100644 index 5e711aff..00000000 --- a/examples/stop.command.example.yaml +++ /dev/null @@ -1,7 +0,0 @@ -apiVersion: command.druid.stackable.tech/v1alpha1 -kind: Stop -metadata: - generateName: druid-cluster-command-stop- -spec: - name: "simple" - rolling: true \ No newline at end of file diff --git a/packaging/buildrpm.sh b/packaging/buildrpm.sh deleted file mode 100755 index 1faeef48..00000000 --- a/packaging/buildrpm.sh +++ /dev/null @@ -1,99 +0,0 @@ -#!/usr/bin/env bash -set -e - -# ============= -# This file is automatically generated from the templates in stackabletech/operator-templating -# DON'T MANUALLY EDIT THIS FILE -# ============= - - -# This script creates an RPM package containing the binary created by this Cargo project. -# The script is not universally applicable, since it makes a few assumptions about the project structure: -# 1. The RPM scaffolding needs to be provided in `packaging/rpm` -# 2. The binary to be packaged needs to be created in target/release - -# The script takes two arguments: -# 1. the name of the rust crate that should be built and which produces the binary that should be packaged -# 2. the name of the binary which this crate produces - this is also used as the name of the RPM package that this script -# creates - this parameter is optional and will default to 1. if not specified - -# Check if one parameter was specified - we'll use this as the name parameter for all files -# This allows us to reuse the script across all operators -if [ -z $1 ]; then - echo "This script requires the project name to be specified as the first parameter!" - exit 1 -fi - -export WORKSPACE_NAME=$(basename $(pwd)) - -export PACKAGE_NAME=$1 - -# If a second parameter is specified this is used as the binary name, otherwise the first parameter -# is assumed to also specify the binary name -if [ -z $2 ]; then - export BINARY_FILE_NAME=$PACKAGE_NAME -else - export BINARY_FILE_NAME=$2 -fi - -BINARY_FILE_PATH=target/release/$BINARY_FILE_NAME - -# The package description is parsed from the output of `cargo metadata` by using jq. -# We need to look up the package with a select statement to match the name from an array of packages -# The name is passed into jq as a jq variable, as no substitution would take place within the single -# quotes of the jq expression. -export PACKAGE_DESCRIPTION=$(~/.cargo/bin/cargo metadata --format-version 1| jq --arg NAME "$PACKAGE_NAME" '.packages[] | select(.name == $NAME) | .description') -if [ -z "$PACKAGE_DESCRIPTION" ]; then - echo "Unable to parse package description from output of `cargo metadata`, cannot build RPM without this field!" - exit 2 -fi -echo - -# Check that we are being called from the main directory and the release build process has been run -if [ ! -f $BINARY_FILE_PATH ]; then - echo "Binary file not found at [$BINARY_FILE_PATH] - this script should be called from the root directory of the repository and 'cargo build --release' needs to have run before calling this script!" - exit 3 -fi - -echo Cleaning up prior build attempts -rm -rf target/rpm - -# Parse the version and release strings from the PKGID reported by Cargo -# This is in the form Path#Projectname:version, which we parse by repeated calls to awk with different separators -# This could most definitely be improved, but works for now -export VERSION_STRING=$(~/.cargo/bin/cargo pkgid --manifest-path rust/operator-binary/Cargo.toml | awk -F'#' '{print $2}' | awk -F':' '{print $2}') -echo version: ${VERSION_STRING} - -export PACKAGE_VERSION=$(echo ${VERSION_STRING} | awk -F '-' '{print $1}') - -# Any suffix like '-nightly' is split out into the release here, as - is not an allowed character in rpm versions -# The final release will look like 0.suffix or 0 if no suffix is specified. -export PACKAGE_RELEASE="0$(echo ${VERSION_STRING} | awk -F '-' '{ if ($2 != "") print "."$2;}')" - -echo Defined workspace name: [${WORKSPACE_NAME}] -echo Defined package name: [${PACKAGE_NAME}] -echo Defined binary name: [${BINARY_FILE_NAME}] -echo Defined package version: [${PACKAGE_VERSION}] -echo Defined package release: [${PACKAGE_RELEASE}] -echo Defined package description: [${PACKAGE_DESCRIPTION}] - -RPM_SCAFFOLDING_DIR=target/rpm/SOURCES/${BINARY_FILE_NAME}-${PACKAGE_VERSION} - -echo Creating directory scaffolding for RPM : ${RPM_SCAFFOLDING_DIR} -mkdir -p ${RPM_SCAFFOLDING_DIR} - -cp -r packaging/rpm/SOURCES/${BINARY_FILE_NAME}-VERSION/* ${RPM_SCAFFOLDING_DIR}/ -cp -r packaging/rpm/SPECS target/rpm/ - -# Copy assets to the specified locations -echo Running copy_assets.py in $(pwd) - -~/.cargo/bin/cargo metadata --format-version 1| $(dirname $0)/copy_assets.py ${PACKAGE_NAME} ${RPM_SCAFFOLDING_DIR} - -echo Creating tar archive -pushd target/rpm/SOURCES -tar czvf ${BINARY_FILE_NAME}-${PACKAGE_VERSION}.tar.gz ${BINARY_FILE_NAME}-${PACKAGE_VERSION} -popd - -echo Running rpmbuild -rpmbuild --define "_topdir `pwd`/target/rpm" -v -ba target/rpm/SPECS/${BINARY_FILE_NAME}.spec diff --git a/packaging/copy_assets.py b/packaging/copy_assets.py deleted file mode 100755 index 899b5ef8..00000000 --- a/packaging/copy_assets.py +++ /dev/null @@ -1,83 +0,0 @@ -#!/bin/env python3 - -# ============= -# This file is automatically generated from the templates in stackabletech/operator-templating -# DON'T MANUALLY EDIT THIS FILE -# ============= - -# -# Reads the output of $(cargo metadata) from standard input and copies the assets as specified in the deb section -# to the specified . -# -# Usage: cargo metadata --format-version 1 | copy_assety.py -# -# Options: -# package-name: As present in $(cargo metadata) -# destination: The root of the folder where the assets are copied. This directory will be created if -# it doesn't exist already. -# -import sys -import json -import shutil -import os -import os.path - - -def assets(package_name, cargo_metadata): - for package in filter(lambda cargo_package: cargo_package['name'] == package_name, cargo_metadata['packages']): - return package['metadata']['deb']['assets'] - - -def copy_assets(root, assets): - """ - assets is a list of lists. Each enclosed list has three elements: (source, destination_folder, destination_file_mod) - - Example json: - "assets": [ - [ - "../target/release/stackable-zookeeper-operator", - "opt/stackable/zookeeper-operator/", - "755" - ], - [ - "../deploy/crd/zookeepercluster.crd.yaml", - "etc/stackable/zookeeper-operator/crd/", - "644" - ], - [ - "../deploy/config-spec/properties.yaml", - "etc/stackable/zookeeper-operator/config-spec/", - "644" - ] - ] - """ - for asset_def in assets: - source = asset_def[0][6:] ### remove the leading ../ - dest = asset_def[1] - dest_mod = int(asset_def[2], 8) - - ### build the destination file name - absolute_dest = os.path.join(root, dest, os.path.basename(source)) - ### create destination directory if doesn't exist already - os.makedirs(os.path.dirname(absolute_dest), mode=0o755, exist_ok=True) - print("Copying {} to {}".format(source, absolute_dest)) - shutil.copyfile(source, absolute_dest) - os.chmod(absolute_dest, dest_mod) - - -def main(args): - if len(args) != 3: - raise ValueError("Usage: copy_assets.py ") - - package_name = args[1] - destination = args[2] - - if not os.path.isdir(destination): - raise ValueError("Destination is not a directory: {}".format(destination)) - - cargo_deb_metadata = json.load(sys.stdin) - cargo_deb_assets = assets(package_name, cargo_deb_metadata) - copy_assets(destination, cargo_deb_assets) - -if __name__ == '__main__': - main(sys.argv) diff --git a/packaging/debian/stackable-druid-operator.service b/packaging/debian/stackable-druid-operator.service deleted file mode 100644 index ae4ba5ab..00000000 --- a/packaging/debian/stackable-druid-operator.service +++ /dev/null @@ -1,13 +0,0 @@ -[Unit] -Description=Stackable Operator for Apache Druid -Before= -After=network.target -[Service] -User=root -ExecStart=/opt/stackable/druid-operator/stackable-druid-operator -Restart=on-abort -StandardOutput=journal -StandardError=journal -Environment="DRUID_OPERATOR_LOG=info" -[Install] -WantedBy=multi-user.target diff --git a/packaging/debian/stackable-hive-operator.service b/packaging/debian/stackable-hive-operator.service deleted file mode 100644 index fbfe48c5..00000000 --- a/packaging/debian/stackable-hive-operator.service +++ /dev/null @@ -1,13 +0,0 @@ -[Unit] -Description=Stackable Operator for Apache Hive -Before= -After=network.target -[Service] -User=root -ExecStart=/opt/stackable/hive-operator/stackable-hive-operator -Restart=on-abort -StandardOutput=journal -StandardError=journal -Environment="HIVE_OPERATOR_LOG=info" -[Install] -WantedBy=multi-user.target diff --git a/packaging/rpm/SOURCES/stackable-druid-operator-VERSION/usr/lib/systemd/system/stackable-druid-operator.service b/packaging/rpm/SOURCES/stackable-druid-operator-VERSION/usr/lib/systemd/system/stackable-druid-operator.service deleted file mode 100644 index ae4ba5ab..00000000 --- a/packaging/rpm/SOURCES/stackable-druid-operator-VERSION/usr/lib/systemd/system/stackable-druid-operator.service +++ /dev/null @@ -1,13 +0,0 @@ -[Unit] -Description=Stackable Operator for Apache Druid -Before= -After=network.target -[Service] -User=root -ExecStart=/opt/stackable/druid-operator/stackable-druid-operator -Restart=on-abort -StandardOutput=journal -StandardError=journal -Environment="DRUID_OPERATOR_LOG=info" -[Install] -WantedBy=multi-user.target diff --git a/packaging/rpm/SPECS/stackable-druid-operator.spec b/packaging/rpm/SPECS/stackable-druid-operator.spec deleted file mode 100644 index a7fc672c..00000000 --- a/packaging/rpm/SPECS/stackable-druid-operator.spec +++ /dev/null @@ -1,62 +0,0 @@ -# ============= -# This file is automatically generated from the templates in stackabletech/operator-templating -# DON'T MANUALLY EDIT THIS FILE -# ============= -%define __spec_install_post %{nil} -%define __os_install_post %{_dbpath}/brp-compress -%define debug_package %{nil} -%define _servicedir /usr/lib/systemd/system -%define _version %{getenv:PACKAGE_VERSION} -%define _release %{getenv:PACKAGE_RELEASE} -%define _name %{getenv:BINARY_FILE_NAME} -%define _description %{getenv:PACKAGE_DESCRIPTION} -%define _bindir /opt/stackable/%{getenv:WORKSPACE_NAME} -%define _productconfigdir /etc/stackable/%{getenv:WORKSPACE_NAME}/config-spec -%define _crddir /etc/stackable/%{getenv:WORKSPACE_NAME}/crd - -Name: %{_name} -Summary: %{_description} -Version: %{_version} -Release: %{_release}%{?dist} -License: OSL 3.0 -Group: Applications/System -Source0: %{name}-%{version}.tar.gz - -BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root - -%description -%{summary} - -%prep -%setup -q - -%install -rm -rf %{buildroot} -mkdir -p %{buildroot} -cp -a * %{buildroot} - -%post -systemctl daemon-reload - -%preun -if [ $1 == 0 ]; then #uninstall - systemctl unmask %{name}.service - systemctl stop %{name}.service - systemctl disable %{name}.service -fi - -%postun -if [ $1 == 0 ]; then #uninstall - systemctl daemon-reload - systemctl reset-failed -fi - -%clean -rm -rf %{buildroot} - -%files -%defattr(-,root,root,-) -%{_bindir}/* -%{_servicedir}/%{name}.service -%{_productconfigdir}/* -%{_crddir}/* diff --git a/rust/crd/Cargo.toml b/rust/crd/Cargo.toml index 8469cfcc..4f771d57 100644 --- a/rust/crd/Cargo.toml +++ b/rust/crd/Cargo.toml @@ -1,15 +1,14 @@ [package] -authors = ["Lars Francke "] +authors = ["Stackable GmbH "] description = "Contains the druid CRD structs and utilities" -edition = "2018" +edition = "2021" license = "OSL-3.0" name = "stackable-druid-crd" repository = "https://github.com/stackabletech/druid-operator" version = "0.2.0-nightly" [dependencies] -stackable-operator = { git = "https://github.com/stackabletech/operator-rs.git", tag = "0.4.0" } -stackable-zookeeper-crd = { git = "https://github.com/stackabletech/zookeeper-operator.git", tag = "0.5.0" } +stackable-operator = { git = "https://github.com/stackabletech/operator-rs.git", tag = "0.6.0" } duplicate = "0.3.0" semver = "1.0" @@ -24,8 +23,3 @@ tracing = "0.1" indoc = "1.0" rstest = "0.11" serde_yaml = "0.8" - -[features] -# default = ["native-tls"] -# native-tls = ["kube/native-tls"] -# rustls-tls = ["kube/rustls-tls"] diff --git a/rust/crd/src/commands.rs b/rust/crd/src/commands.rs deleted file mode 100644 index afc9736d..00000000 --- a/rust/crd/src/commands.rs +++ /dev/null @@ -1,145 +0,0 @@ -use crate::DruidRole; -use duplicate::duplicate; -use serde::{Deserialize, Serialize}; -use serde_json::json; -use serde_json::Value; -use stackable_operator::command::{CanBeRolling, HasRoles}; -use stackable_operator::command_controller::Command; -use stackable_operator::k8s_openapi::apimachinery::pkg::apis::meta::v1::Time; -use stackable_operator::k8s_openapi::chrono::Utc; -use stackable_operator::kube::CustomResource; -use stackable_operator::schemars::{self, JsonSchema}; - -#[derive(Clone, CustomResource, Debug, Deserialize, Eq, JsonSchema, PartialEq, Serialize)] -#[kube( - group = "command.druid.stackable.tech", - version = "v1alpha1", - kind = "Restart", - plural = "restarts", - namespaced, - kube_core = "stackable_operator::kube::core", - k8s_openapi = "stackable_operator::k8s_openapi", - schemars = "stackable_operator::schemars" -)] -#[kube(status = "CommandStatus")] -#[serde(rename_all = "camelCase")] -pub struct RestartCommandSpec { - pub name: String, - pub rolling: bool, - pub roles: Option>, -} - -#[derive(Clone, CustomResource, Debug, Deserialize, Eq, JsonSchema, PartialEq, Serialize)] -#[kube( - group = "command.druid.stackable.tech", - version = "v1alpha1", - kind = "Start", - plural = "starts", - namespaced, - kube_core = "stackable_operator::kube::core", - k8s_openapi = "stackable_operator::k8s_openapi", - schemars = "stackable_operator::schemars" -)] -#[kube(status = "CommandStatus")] -#[serde(rename_all = "camelCase")] -pub struct StartCommandSpec { - pub name: String, - pub rolling: bool, - pub roles: Option>, -} - -#[derive(Clone, CustomResource, Debug, Deserialize, Eq, JsonSchema, PartialEq, Serialize)] -#[kube( - group = "command.druid.stackable.tech", - version = "v1alpha1", - kind = "Stop", - plural = "stops", - namespaced, - kube_core = "stackable_operator::kube::core", - k8s_openapi = "stackable_operator::k8s_openapi", - schemars = "stackable_operator::schemars" -)] -#[kube(status = "CommandStatus")] -#[serde(rename_all = "camelCase")] -pub struct StopCommandSpec { - pub name: String, - pub rolling: bool, - pub roles: Option>, -} - -#[derive(Clone, Debug, Default, Deserialize, Serialize, JsonSchema)] -#[serde(rename_all = "camelCase")] -pub struct CommandStatus { - #[serde(skip_serializing_if = "Option::is_none")] - pub started_at: Option