diff --git a/Cargo.lock b/Cargo.lock index 8ded64b9bb6..bf606853d4c 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -65,7 +65,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e01ed3140b2f8d422c68afa1ed2e85d996ea619c988ac834d255db32138655cb" dependencies = [ "quote", - "syn 2.0.59", + "syn 2.0.63", ] [[package]] @@ -103,7 +103,7 @@ dependencies = [ "futures-core", "futures-util", "mio", - "socket2 0.5.6", + "socket2 0.5.7", "tokio", "tracing 0.1.40", ] @@ -164,7 +164,7 @@ dependencies = [ "serde_json", "serde_urlencoded", "smallvec", - "socket2 0.5.6", + "socket2 0.5.7", "time", "url", ] @@ -178,7 +178,7 @@ dependencies = [ "actix-router", "proc-macro2", "quote", - "syn 2.0.59", + "syn 2.0.63", ] [[package]] @@ -256,47 +256,48 @@ dependencies = [ [[package]] name = "anstream" -version = "0.6.13" +version = "0.6.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d96bd03f33fe50a863e394ee9718a706f988b9079b20c3784fb726e7678b62fb" +checksum = "418c75fa768af9c03be99d17643f93f79bbba589895012a80e3452a19ddda15b" dependencies = [ "anstyle", "anstyle-parse", "anstyle-query", "anstyle-wincon", "colorchoice", + "is_terminal_polyfill", "utf8parse", ] [[package]] name = "anstyle" -version = "1.0.6" +version = "1.0.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8901269c6307e8d93993578286ac0edf7f195079ffff5ebdeea6a59ffb7e36bc" +checksum = "038dfcf04a5feb68e9c60b21c9625a54c2c0616e79b72b0fd87075a056ae1d1b" [[package]] name = "anstyle-parse" -version = "0.2.3" +version = "0.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c75ac65da39e5fe5ab759307499ddad880d724eed2f6ce5b5e8a26f4f387928c" +checksum = "c03a11a9034d92058ceb6ee011ce58af4a9bf61491aa7e1e59ecd24bd40d22d4" dependencies = [ "utf8parse", ] [[package]] name = "anstyle-query" -version = "1.0.2" +version = "1.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e28923312444cdd728e4738b3f9c9cac739500909bb3d3c94b43551b16517648" +checksum = "a64c907d4e79225ac72e2a354c9ce84d50ebb4586dee56c82b3ee73004f537f5" dependencies = [ "windows-sys 0.52.0", ] [[package]] name = "anstyle-wincon" -version = "3.0.2" +version = "3.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1cd54b81ec8d6180e24654d0b371ad22fc3dd083b6ff8ba325b72e00c87660a7" +checksum = "61a38449feb7068f52bb06c12759005cf459ee52bb4adc1d5a7c4322d716fb19" dependencies = [ "anstyle", "windows-sys 0.52.0", @@ -304,9 +305,9 @@ dependencies = [ [[package]] name = "anyhow" -version = "1.0.82" +version = "1.0.83" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f538837af36e6f6a9be0faa67f9a314f8119e4e4b5867c6ab40ed60360142519" +checksum = "25bdb32cbbdce2b519a9cd7df3a678443100e265d5e25ca763b7572a5104f5f3" [[package]] name = "apple-bundles" @@ -372,7 +373,7 @@ dependencies = [ "scroll", "security-framework", "security-framework-sys", - "semver 1.0.22", + "semver 1.0.23", "serde", "serde_json", "serde_yaml", @@ -501,7 +502,7 @@ checksum = "7378575ff571966e99a744addeff0bff98b8ada0dedf1956d59e634db95eaac1" dependencies = [ "proc-macro2", "quote", - "syn 2.0.59", + "syn 2.0.63", "synstructure 0.13.1", ] @@ -524,7 +525,7 @@ checksum = "7b18050c2cd6fe86c3a76584ef5e0baf286d038cda203eb6223df2cc413565f7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.59", + "syn 2.0.63", ] [[package]] @@ -556,7 +557,7 @@ checksum = "c6fa2087f2753a7da8cc1c0dbfcf89579dd57458e36769de5ac750b4671737ca" dependencies = [ "proc-macro2", "quote", - "syn 2.0.59", + "syn 2.0.63", ] [[package]] @@ -570,9 +571,9 @@ dependencies = [ [[package]] name = "autocfg" -version = "1.2.0" +version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f1fdabc7756949593fe60f30ec81974b613357de856987752631dea1e3394c80" +checksum = "0c4b4d0bd25bd0b74681c0ad21497610ce1b7c91b1022cd21c80c6fbdd9476b0" [[package]] name = "axum" @@ -681,9 +682,9 @@ checksum = "9d297deb1925b89f2ccc13d7635fa0714f12c87adce1c75356b39ca9b7178567" [[package]] name = "base64" -version = "0.22.0" +version = "0.22.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9475866fec1451be56a3c2400fd081ff546538961565ccb5b7142cbd22bc7a51" +checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6" [[package]] name = "base64ct" @@ -988,12 +989,13 @@ dependencies = [ [[package]] name = "cc" -version = "1.0.94" +version = "1.0.97" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "17f6e324229dc011159fcc089755d1e2e216a90d43a7dea6853ca740b84f35e7" +checksum = "099a5357d84c4c61eb35fc8eafa9a79a902c2f76911e5747ced4e032edd8d9b4" dependencies = [ "jobserver", "libc", + "once_cell", ] [[package]] @@ -1109,7 +1111,7 @@ dependencies = [ "heck 0.5.0", "proc-macro2", "quote", - "syn 2.0.59", + "syn 2.0.63", ] [[package]] @@ -1120,9 +1122,9 @@ checksum = "98cc8fbded0c607b7ba9dd60cd98df59af97e84d24e49c8557331cfc26d301ce" [[package]] name = "colorchoice" -version = "1.0.0" +version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "acbf1af155f9b9ef647e42cdc158db4b64a1b61f743629225fde6f3e0be2a7c7" +checksum = "0b6a852b24ab71dffc585bcb46eaf7959d175cb865a7152e35b348d1b2960422" [[package]] name = "console" @@ -1392,7 +1394,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "edb49164822f3ee45b17acd4a208cfc1251410cf0cad9a833234c9890774dd9f" dependencies = [ "quote", - "syn 2.0.59", + "syn 2.0.63", ] [[package]] @@ -1425,7 +1427,7 @@ checksum = "f46882e17999c6cc590af592290432be3bce0428cb0d5f8b6715e4dc7b383eb3" dependencies = [ "proc-macro2", "quote", - "syn 2.0.59", + "syn 2.0.63", ] [[package]] @@ -1449,7 +1451,7 @@ dependencies = [ "proc-macro2", "quote", "strsim 0.10.0", - "syn 2.0.59", + "syn 2.0.63", ] [[package]] @@ -1460,7 +1462,7 @@ checksum = "a668eda54683121533a393014d8692171709ff57a7d61f187b6e782719f8933f" dependencies = [ "darling_core", "quote", - "syn 2.0.59", + "syn 2.0.63", ] [[package]] @@ -1470,7 +1472,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "978747c1d849a7d2ee5e8adc0159961c48fb7e5db2f06af6723b80123bb53856" dependencies = [ "cfg-if", - "hashbrown 0.14.3", + "hashbrown 0.14.5", "lock_api", "once_cell", "parking_lot_core", @@ -1478,9 +1480,9 @@ dependencies = [ [[package]] name = "data-encoding" -version = "2.5.0" +version = "2.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7e962a19be5cfc3f3bf6dd8f61eb50107f356ad6270fbb3ed41476571db78be5" +checksum = "e8566979429cf69b49a5c740c60791108e86440e8be149bbea4fe54d2c32d6e2" [[package]] name = "der" @@ -1546,7 +1548,7 @@ dependencies = [ "darling", "proc-macro2", "quote", - "syn 2.0.59", + "syn 2.0.63", ] [[package]] @@ -1556,7 +1558,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "206868b8242f27cecce124c19fd88157fbd0dd334df2587f36417bafbc85097b" dependencies = [ "derive_builder_core", - "syn 2.0.59", + "syn 2.0.63", ] [[package]] @@ -1674,7 +1676,7 @@ checksum = "487585f4d0c6655fe74905e2504d8ad6908e4db67f744eb140876906c2f3175d" dependencies = [ "proc-macro2", "quote", - "syn 2.0.59", + "syn 2.0.63", ] [[package]] @@ -1791,7 +1793,7 @@ dependencies = [ "once_cell", "proc-macro2", "quote", - "syn 2.0.59", + "syn 2.0.63", ] [[package]] @@ -1826,9 +1828,9 @@ dependencies = [ [[package]] name = "errno" -version = "0.3.8" +version = "0.3.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a258e46cdc063eb8519c00b9fc845fc47bcfca4130e2f08e88665ceda8474245" +checksum = "534c5cf6194dfab3db3242765c03bbe257cf92f22b38f6bc0c58d59108a820ba" dependencies = [ "libc", "windows-sys 0.52.0", @@ -1877,9 +1879,9 @@ dependencies = [ [[package]] name = "fastrand" -version = "2.0.2" +version = "2.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "658bd65b1cf4c852a3cc96f18a8ce7b5640f6b703f905c7d74532294c2a63984" +checksum = "9fc0510504f03c51ada170672ac806f1f105a88aa97a5281117e1ddc3368e51a" [[package]] name = "ff" @@ -1893,15 +1895,15 @@ dependencies = [ [[package]] name = "fiat-crypto" -version = "0.2.7" +version = "0.2.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c007b1ae3abe1cb6f85a16305acd418b7ca6343b953633fee2b76d8f108b830f" +checksum = "38793c55593b33412e3ae40c2c9781ffaa6f438f6f8c10f24e71846fbd7ae01e" [[package]] name = "figment" -version = "0.10.17" +version = "0.10.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "752eb150770d6f51eb24d60e3ff84a2c24ccc5e5b3b0f550917ce5ec77c13fe4" +checksum = "d032832d74006f99547004d49410a4b4218e4c33382d56ca3ff89df74f86b953" dependencies = [ "atomic", "pear", @@ -1926,7 +1928,7 @@ checksum = "1ee447700ac8aa0b2f2bd7bc4462ad686ba06baa6727ac149a2d6277f0d240fd" dependencies = [ "cfg-if", "libc", - "redox_syscall", + "redox_syscall 0.4.1", "windows-sys 0.52.0", ] @@ -1949,9 +1951,9 @@ dependencies = [ [[package]] name = "flate2" -version = "1.0.28" +version = "1.0.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "46303f565772937ffe1d394a4fac6f411c6013172fadde9dcdb1e147a086940e" +checksum = "5f54427cfd1c7829e2a139fcefea601bf088ebca651d2bf53ebc600eac295dae" dependencies = [ "crc32fast", "miniz_oxide", @@ -2093,7 +2095,7 @@ checksum = "87750cf4b7a4c0625b1529e4c543c2182106e4dedc60a2a6455e00d212c489ac" dependencies = [ "proc-macro2", "quote", - "syn 2.0.59", + "syn 2.0.63", ] [[package]] @@ -2145,9 +2147,9 @@ dependencies = [ [[package]] name = "getrandom" -version = "0.2.14" +version = "0.2.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "94b22e06ecb0110981051723910cbf0b5f5e09a2062dd7663334ee79a9d1286c" +checksum = "c4567c8db10ae91089c99af84c68c38da3ec2f087c3f82960bcdbf3656b6f4d7" dependencies = [ "cfg-if", "libc", @@ -2204,9 +2206,9 @@ dependencies = [ [[package]] name = "goblin" -version = "0.8.0" +version = "0.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bb07a4ffed2093b118a525b1d8f5204ae274faed5604537caf7135d0f18d9887" +checksum = "1b363a30c165f666402fe6a3024d3bec7ebc898f96a4a23bd1c99f8dbf3f4f47" dependencies = [ "log", "plain", @@ -2251,9 +2253,9 @@ checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888" [[package]] name = "hashbrown" -version = "0.14.3" +version = "0.14.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "290f1a1d9242c78d09ce40a5e87e7554ee637af1351968159f4952f028f75604" +checksum = "e5274423e17b7c9fc20b6e7e208532f9b19825d82dfd615708b70edd83df41f1" dependencies = [ "ahash", "allocator-api2", @@ -2461,7 +2463,7 @@ dependencies = [ "httpdate", "itoa", "pin-project-lite", - "socket2 0.5.6", + "socket2 0.5.7", "tokio", "tower-service", "tracing 0.1.40", @@ -2513,7 +2515,7 @@ dependencies = [ "http 0.2.12", "hyper 0.14.28", "log", - "rustls 0.21.10", + "rustls 0.21.12", "rustls-native-certs 0.6.3", "tokio", "tokio-rustls 0.24.1", @@ -2660,7 +2662,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "168fb715dda47215e360912c096649d23d58bf392ac62f73919e831745e40f26" dependencies = [ "equivalent", - "hashbrown 0.14.3", + "hashbrown 0.14.5", ] [[package]] @@ -2707,7 +2709,7 @@ version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b58db92f96b720de98181bbbe63c831e87005ab460c1bf306eb2622b4707997f" dependencies = [ - "socket2 0.5.6", + "socket2 0.5.7", "widestring", "windows-sys 0.48.0", "winreg", @@ -2764,6 +2766,12 @@ dependencies = [ "winapi", ] +[[package]] +name = "is_terminal_polyfill" +version = "1.70.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f8478577c03552c21db0e2724ffb8986a5ce7af88107e6be5d2ee6e158c12800" + [[package]] name = "issue1317" version = "3.100.1" @@ -2780,9 +2788,9 @@ dependencies = [ name = "issue1776" version = "3.100.1" dependencies = [ - "errno 0.3.8", + "errno 0.3.9", "libc", - "socket2 0.5.6", + "socket2 0.5.7", ] [[package]] @@ -2790,7 +2798,7 @@ name = "issue1776portnot53" version = "3.100.1" dependencies = [ "libc", - "socket2 0.5.6", + "socket2 0.5.7", ] [[package]] @@ -2824,9 +2832,9 @@ checksum = "49f1f14873335454500d59611f1cf4a4b0f786f9ac11f4312a78e4cf2566695b" [[package]] name = "jobserver" -version = "0.1.30" +version = "0.1.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "685a7d121ee3f65ae4fddd72b25a04bb36b6af81bc0828f7d5434c0fe60fa3a2" +checksum = "d2b099aaa34a9751c5bf0878add70444e1ed2dd73f347be99003d4577277de6e" dependencies = [ "libc", ] @@ -2842,14 +2850,13 @@ dependencies = [ [[package]] name = "json-patch" -version = "1.2.0" +version = "1.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "55ff1e1486799e3f64129f8ccad108b38290df9cd7015cd31bed17239f0789d6" +checksum = "ec9ad60d674508f3ca8f380a928cfe7b096bc729c4e2dbfe3852bc45da3ab30b" dependencies = [ "serde", "serde_json", "thiserror", - "treediff", ] [[package]] @@ -2900,9 +2907,9 @@ dependencies = [ [[package]] name = "konst" -version = "0.3.8" +version = "0.3.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8d712a8c49d4274f8d8a5cf61368cb5f3c143d149882b1a2918129e53395fdb0" +checksum = "50a0ba6de5f7af397afff922f22c149ff605c766cd3269cf6c1cd5e466dbe3b9" dependencies = [ "const_panic", "konst_kernel", @@ -2911,9 +2918,9 @@ dependencies = [ [[package]] name = "konst_kernel" -version = "0.3.8" +version = "0.3.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dac6ea8c376b6e208a81cf39b8e82bebf49652454d98a4829e907dac16ef1790" +checksum = "be0a455a1719220fd6adf756088e1c69a85bf14b6a9e24537a5cc04f503edb2b" dependencies = [ "typewit", ] @@ -2921,7 +2928,7 @@ dependencies = [ [[package]] name = "kube" version = "0.87.1" -source = "git+https://github.com/metalbear-co/kube#823c45038d97ee020bff992c50c10deb9469ea8f" +source = "git+https://github.com/metalbear-co/kube?branch=fix_mb#95a6dc8a4e76c2f3e7829ffefdb154547bbccfa2" dependencies = [ "k8s-openapi", "kube-client", @@ -2933,7 +2940,7 @@ dependencies = [ [[package]] name = "kube-client" version = "0.87.1" -source = "git+https://github.com/metalbear-co/kube#823c45038d97ee020bff992c50c10deb9469ea8f" +source = "git+https://github.com/metalbear-co/kube?branch=fix_mb#95a6dc8a4e76c2f3e7829ffefdb154547bbccfa2" dependencies = [ "base64 0.21.7", "bytes", @@ -2955,7 +2962,7 @@ dependencies = [ "pem 3.0.4", "pin-project", "rand", - "rustls 0.21.10", + "rustls 0.21.12", "rustls-pemfile 1.0.4", "secrecy", "serde", @@ -2973,7 +2980,7 @@ dependencies = [ [[package]] name = "kube-core" version = "0.87.1" -source = "git+https://github.com/metalbear-co/kube#823c45038d97ee020bff992c50c10deb9469ea8f" +source = "git+https://github.com/metalbear-co/kube?branch=fix_mb#95a6dc8a4e76c2f3e7829ffefdb154547bbccfa2" dependencies = [ "chrono", "form_urlencoded", @@ -2990,26 +2997,26 @@ dependencies = [ [[package]] name = "kube-derive" version = "0.87.1" -source = "git+https://github.com/metalbear-co/kube#823c45038d97ee020bff992c50c10deb9469ea8f" +source = "git+https://github.com/metalbear-co/kube?branch=fix_mb#95a6dc8a4e76c2f3e7829ffefdb154547bbccfa2" dependencies = [ "darling", "proc-macro2", "quote", "serde_json", - "syn 2.0.59", + "syn 2.0.63", ] [[package]] name = "kube-runtime" version = "0.87.1" -source = "git+https://github.com/metalbear-co/kube#823c45038d97ee020bff992c50c10deb9469ea8f" +source = "git+https://github.com/metalbear-co/kube?branch=fix_mb#95a6dc8a4e76c2f3e7829ffefdb154547bbccfa2" dependencies = [ "ahash", "async-trait", "backoff", "derivative", "futures", - "hashbrown 0.14.3", + "hashbrown 0.14.5", "json-patch", "k8s-openapi", "kube-client", @@ -3047,9 +3054,9 @@ checksum = "830d08ce1d1d941e6b30645f1a0eb5643013d835ce3779a5fc208261dbe10f55" [[package]] name = "libc" -version = "0.2.153" +version = "0.2.154" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c198f91728a82281a64e1f4f9eeb25d82cb32a5de251c6bd1b5154d63a8e7bd" +checksum = "ae743338b92ff9146ce83992f766a31066a91a8c84a45e0e9f21e7cf6de6d346" [[package]] name = "libloading" @@ -3118,9 +3125,9 @@ checksum = "4d873d7c67ce09b42110d801813efbc9364414e356be9935700d368351657487" [[package]] name = "lock_api" -version = "0.4.11" +version = "0.4.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3c168f8615b12bc01f9c17e2eb0cc07dcae1940121185446edc3744920e8ef45" +checksum = "07af8b9cdd281b7915f413fa73f29ebd5d55d0d3f0155584dade1ff18cea1b17" dependencies = [ "autocfg", "scopeguard", @@ -3197,7 +3204,7 @@ dependencies = [ "glob", "rand", "regex", - "syn 2.0.59", + "syn 2.0.63", "thiserror", "tracing 0.1.40", "tracing-subscriber", @@ -3256,7 +3263,7 @@ checksum = "49e7bc1560b95a3c4a25d03de42fe76ca718ab92d1a22a55b9b4cf67b3ae635c" dependencies = [ "proc-macro2", "quote", - "syn 2.0.59", + "syn 2.0.63", ] [[package]] @@ -3344,10 +3351,10 @@ dependencies = [ "rand", "regex", "reqwest", - "semver 1.0.22", + "semver 1.0.23", "serde", "serde_json", - "socket2 0.5.6", + "socket2 0.5.7", "thiserror", "tokio", "tokio-util", @@ -3392,10 +3399,10 @@ dependencies = [ "rawsocket", "rcgen", "regex", - "semver 1.0.22", + "semver 1.0.23", "serde", "serde_json", - "socket2 0.5.6", + "socket2 0.5.7", "streammap-ext", "test_bin", "thiserror", @@ -3542,7 +3549,7 @@ dependencies = [ "mirrord-protocol", "rand", "regex", - "rstest 0.17.0", + "rstest 0.19.0", "serde", "serde_json", "shellexpand", @@ -3566,13 +3573,13 @@ dependencies = [ "chrono", "ctor", "dashmap", - "errno 0.3.8", + "errno 0.3.9", "exec", "fancy-regex", "flaky_test", "frida-gum", "futures", - "hashbrown 0.14.3", + "hashbrown 0.14.5", "http-body 1.0.0-rc.2", "hyper 1.0.0-rc.4", "itertools", @@ -3591,10 +3598,10 @@ dependencies = [ "os_info", "rand", "regex", - "rstest 0.17.0", + "rstest 0.19.0", "serde", "serde_json", - "socket2 0.5.6", + "socket2 0.5.7", "streammap-ext", "syscalls", "test-cdylib", @@ -3624,7 +3631,7 @@ version = "3.100.1" dependencies = [ "proc-macro2", "proc-macro2-diagnostics", - "semver 1.0.22", + "semver 1.0.23", "syn 1.0.109", ] @@ -3652,7 +3659,7 @@ dependencies = [ "reqwest", "rstest 0.18.2", "schemars", - "semver 1.0.22", + "semver 1.0.23", "serde", "serde_json", "serde_yaml", @@ -3686,9 +3693,9 @@ dependencies = [ "libc", "mirrord-macros", "nix 0.24.3", - "semver 1.0.22", + "semver 1.0.23", "serde", - "socket2 0.5.6", + "socket2 0.5.7", "thiserror", "tracing 0.1.40", "trust-dns-resolver", @@ -3835,11 +3842,10 @@ dependencies = [ [[package]] name = "num-bigint" -version = "0.4.4" +version = "0.4.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "608e7659b5c3d7cba262d894801b9ec9d00de989e8a82bd4bef91d08da45cdc0" +checksum = "c165a9ab64cf766f73521c0dd2cfdff64f488b8f0b3e621face3462d3db536d7" dependencies = [ - "autocfg", "num-integer", "num-traits", ] @@ -3898,9 +3904,9 @@ dependencies = [ [[package]] name = "num-iter" -version = "0.1.44" +version = "0.1.45" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d869c01cc0c455284163fd0092f1f93835385ccab5a98a0dcc497b2f8bf055a9" +checksum = "1429034a0490724d0075ebb2bc9e875d6503c3cf69e235a8941aa757d83ef5bf" dependencies = [ "autocfg", "num-integer", @@ -3920,9 +3926,9 @@ dependencies = [ [[package]] name = "num-traits" -version = "0.2.18" +version = "0.2.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "da0df0e5185db44f69b44f26786fe401b6c293d1907744beaa7fa62b2e5a517a" +checksum = "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841" dependencies = [ "autocfg", "libm", @@ -3952,7 +3958,7 @@ checksum = "a6a622008b6e321afc04970976f62ee297fdbaa6f95318ca343e3eebb9648441" dependencies = [ "crc32fast", "flate2", - "hashbrown 0.14.3", + "hashbrown 0.14.5", "indexmap 2.2.6", "memchr", "ruzstd", @@ -4073,9 +4079,9 @@ dependencies = [ [[package]] name = "parking_lot" -version = "0.12.1" +version = "0.12.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3742b2c103b9f06bc9fff0a37ff4912935851bee6d36f3c02bcc755bcfec228f" +checksum = "7e4af0ca4f6caed20e900d564c242b8e5d4903fdacf31d3daf527b66fe6f42fb" dependencies = [ "lock_api", "parking_lot_core", @@ -4083,31 +4089,31 @@ dependencies = [ [[package]] name = "parking_lot_core" -version = "0.9.9" +version = "0.9.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4c42a9226546d68acdd9c0a280d17ce19bfe27a46bf68784e4066115788d008e" +checksum = "1e401f977ab385c9e4e3ab30627d6f26d00e2c73eef317493c4ec6d468726cf8" dependencies = [ "cfg-if", "libc", - "redox_syscall", + "redox_syscall 0.5.1", "smallvec", - "windows-targets 0.48.5", + "windows-targets 0.52.5", ] [[package]] name = "parse-zoneinfo" -version = "0.3.0" +version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c705f256449c60da65e11ff6626e0c16a0a0b96aaa348de61376b249bc340f41" +checksum = "1f2a05b18d44e2957b88f96ba460715e295bc1d7510468a2f3d3b44535d26c24" dependencies = [ "regex", ] [[package]] name = "paste" -version = "1.0.14" +version = "1.0.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "de3145af08024dea9fa9914f381a17b8fc6034dfb00f3a84013f7ff43f29ed4c" +checksum = "57c0d7b74b563b49d38dae00a0c37d4d6de9b432382b2892f0574ddcae73fd0a" [[package]] name = "pear" @@ -4129,7 +4135,7 @@ dependencies = [ "proc-macro2", "proc-macro2-diagnostics", "quote", - "syn 2.0.59", + "syn 2.0.63", ] [[package]] @@ -4163,7 +4169,7 @@ version = "3.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8e459365e590736a54c3fa561947c84837534b8e9af6fc5bf781307e82658fae" dependencies = [ - "base64 0.22.0", + "base64 0.22.1", "serde", ] @@ -4184,9 +4190,9 @@ checksum = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e" [[package]] name = "pest" -version = "2.7.9" +version = "2.7.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "311fb059dee1a7b802f036316d790138c613a4e8b180c822e3925a662e9f0c95" +checksum = "560131c633294438da9f7c4b08189194b20946c8274c6b9e38881a7874dc8ee8" dependencies = [ "memchr", "thiserror", @@ -4195,9 +4201,9 @@ dependencies = [ [[package]] name = "pest_derive" -version = "2.7.9" +version = "2.7.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f73541b156d32197eecda1a4014d7f868fd2bcb3c550d5386087cfba442bf69c" +checksum = "26293c9193fbca7b1a3bf9b79dc1e388e927e6cacaa78b4a3ab705a1d3d41459" dependencies = [ "pest", "pest_generator", @@ -4205,22 +4211,22 @@ dependencies = [ [[package]] name = "pest_generator" -version = "2.7.9" +version = "2.7.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c35eeed0a3fab112f75165fdc026b3913f4183133f19b49be773ac9ea966e8bd" +checksum = "3ec22af7d3fb470a85dd2ca96b7c577a1eb4ef6f1683a9fe9a8c16e136c04687" dependencies = [ "pest", "pest_meta", "proc-macro2", "quote", - "syn 2.0.59", + "syn 2.0.63", ] [[package]] name = "pest_meta" -version = "2.7.9" +version = "2.7.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2adbf29bb9776f28caece835398781ab24435585fe0d4dc1374a61db5accedca" +checksum = "d7a240022f37c361ec1878d646fc5b7d7c4d28d5946e1a80ad5a7a4f4ca0bdcd" dependencies = [ "once_cell", "pest", @@ -4229,9 +4235,9 @@ dependencies = [ [[package]] name = "petgraph" -version = "0.6.4" +version = "0.6.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e1d3afd2628e69da2be385eb6f2fd57c8ac7977ceeff6dc166ff1657b0e386a9" +checksum = "b4c5cc86750666a3ed20bdaf5ca2a0344f9c67674cae0515bec2da16fbaa47db" dependencies = [ "fixedbitset", "indexmap 2.2.6", @@ -4292,7 +4298,7 @@ checksum = "2f38a4412a78282e09a2cf38d195ea5420d15ba0602cb375210efbc877243965" dependencies = [ "proc-macro2", "quote", - "syn 2.0.59", + "syn 2.0.63", ] [[package]] @@ -4558,9 +4564,9 @@ dependencies = [ [[package]] name = "proc-macro2" -version = "1.0.80" +version = "1.0.82" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a56dea16b0a29e94408b9aa5e2940a4eedbd128a1ba20e8f7ae60fd3d465af0e" +checksum = "8ad3d49ab951a01fbaafe34f2ec74122942fe18a3f9814c3268f1bb72042131b" dependencies = [ "unicode-ident", ] @@ -4573,7 +4579,7 @@ checksum = "af066a9c399a26e020ada66a034357a868728e72cd426f3adcd35f80d88d88c8" dependencies = [ "proc-macro2", "quote", - "syn 2.0.59", + "syn 2.0.63", "version_check", "yansi", ] @@ -4739,7 +4745,7 @@ dependencies = [ "ipnetwork", "libc", "nix 0.26.4", - "socket2 0.5.6", + "socket2 0.5.7", "tokio", ] @@ -4788,7 +4794,7 @@ dependencies = [ name = "recv_from" version = "0.1.0" dependencies = [ - "socket2 0.5.6", + "socket2 0.5.7", ] [[package]] @@ -4800,6 +4806,15 @@ dependencies = [ "bitflags 1.3.2", ] +[[package]] +name = "redox_syscall" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "469052894dcb553421e483e4209ee581a45100d31b4018de03e5a7ad86374a7e" +dependencies = [ + "bitflags 2.5.0", +] + [[package]] name = "redox_users" version = "0.4.5" @@ -4857,9 +4872,9 @@ checksum = "adad44e29e4c806119491a7f06f03de4d1af22c3a680dd47f1e6e179439d1f56" [[package]] name = "relative-path" -version = "1.9.2" +version = "1.9.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e898588f33fdd5b9420719948f9f2a32c922a246964576f71ba7f24f80610fbc" +checksum = "ba39f3699c378cd8970968dcbff9c43159ea4cfbd88d43c00b22f2ef10a435d2" [[package]] name = "reqwest" @@ -4884,7 +4899,7 @@ dependencies = [ "once_cell", "percent-encoding", "pin-project-lite", - "rustls 0.21.10", + "rustls 0.21.12", "rustls-native-certs 0.6.3", "rustls-pemfile 1.0.4", "serde", @@ -4988,6 +5003,18 @@ dependencies = [ "rustc_version", ] +[[package]] +name = "rstest" +version = "0.19.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9d5316d2a1479eeef1ea21e7f9ddc67c191d497abc8fc3ba2467857abbb68330" +dependencies = [ + "futures", + "futures-timer", + "rstest_macros 0.19.0", + "rustc_version", +] + [[package]] name = "rstest_macros" version = "0.17.0" @@ -5015,7 +5042,24 @@ dependencies = [ "regex", "relative-path", "rustc_version", - "syn 2.0.59", + "syn 2.0.63", + "unicode-ident", +] + +[[package]] +name = "rstest_macros" +version = "0.19.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "04a9df72cc1f67020b0d63ad9bfe4a323e459ea7eb68e03bd9824db49f9a4c25" +dependencies = [ + "cfg-if", + "glob", + "proc-macro2", + "quote", + "regex", + "relative-path", + "rustc_version", + "syn 2.0.63", "unicode-ident", ] @@ -5050,9 +5094,9 @@ dependencies = [ [[package]] name = "rustc-demangle" -version = "0.1.23" +version = "0.1.24" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d626bb9dae77e28219937af045c257c28bfd3f69333c512553507f5f9798cb76" +checksum = "719b953e2095829ee67db738b3bfa9fa368c94900df327b3f07fe6e794d2fe1f" [[package]] name = "rustc-hash" @@ -5066,7 +5110,7 @@ version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bfa0f585226d2e68097d4f95d113b15b83a82e819ab25717ec0590d9584ef366" dependencies = [ - "semver 1.0.22", + "semver 1.0.23", ] [[package]] @@ -5080,12 +5124,12 @@ dependencies = [ [[package]] name = "rustix" -version = "0.38.32" +version = "0.38.34" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "65e04861e65f21776e67888bfbea442b3642beaa0138fdb1dd7a84a52dffdb89" +checksum = "70dc5ec042f7a43c4a73241207cecc9873a06d45debb38b329f8541d85c2730f" dependencies = [ "bitflags 2.5.0", - "errno 0.3.8", + "errno 0.3.9", "libc", "linux-raw-sys", "windows-sys 0.52.0", @@ -5093,9 +5137,9 @@ dependencies = [ [[package]] name = "rustls" -version = "0.21.10" +version = "0.21.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f9d5a6813c0759e4609cd494e8e725babae6a2ca7b62a5536a13daaec6fcb7ba" +checksum = "3f56a14d1f48b391359b22f731fd4bd7e43c97f3c50eee276f3aa09c94784d3e" dependencies = [ "log", "ring 0.17.8", @@ -5105,14 +5149,14 @@ dependencies = [ [[package]] name = "rustls" -version = "0.22.3" +version = "0.22.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "99008d7ad0bbbea527ec27bddbc0e432c5b87d8175178cee68d2eec9c4a1813c" +checksum = "bf4ef73721ac7bcd79b2b315da7779d8fc09718c6b3d2d1b2d94850eb8c18432" dependencies = [ "log", "ring 0.17.8", "rustls-pki-types", - "rustls-webpki 0.102.2", + "rustls-webpki 0.102.3", "subtle", "zeroize", ] @@ -5157,15 +5201,15 @@ version = "2.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "29993a25686778eb88d4189742cd713c9bce943bc54251a33509dc63cbacf73d" dependencies = [ - "base64 0.22.0", + "base64 0.22.1", "rustls-pki-types", ] [[package]] name = "rustls-pki-types" -version = "1.4.1" +version = "1.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ecd36cc4259e3e4514335c4a138c6b43171a8d61d8f5c9348f9fc7529416f247" +checksum = "976295e77ce332211c0d24d92c0e83e50f5c5f046d11082cea19f3df13a3562d" [[package]] name = "rustls-webpki" @@ -5179,9 +5223,9 @@ dependencies = [ [[package]] name = "rustls-webpki" -version = "0.102.2" +version = "0.102.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "faaa0a62740bedb9b2ef5afa303da42764c012f743917351dc9a237ea1663610" +checksum = "f3bce581c0dd41bce533ce695a1437fa16a7ab5ac3ccfa99fe1a620a7885eabf" dependencies = [ "ring 0.17.8", "rustls-pki-types", @@ -5190,9 +5234,9 @@ dependencies = [ [[package]] name = "rustversion" -version = "1.0.15" +version = "1.0.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "80af6f9131f277a45a3fba6ce8e2258037bb0477a67e610d3c1fe046ab31de47" +checksum = "092474d1a01ea8278f69e6a358998405fae5b8b963ddaeb2b0b04a128bf1dfb0" [[package]] name = "ruzstd" @@ -5207,9 +5251,9 @@ dependencies = [ [[package]] name = "ryu" -version = "1.0.17" +version = "1.0.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e86697c916019a8588c99b5fac3cead74ec0b4b819707a682fd4d23fa0ce1ba1" +checksum = "f3cb5ba0dc43242ce17de99c180e96db90b235b8a9fdc9543c96d2209116bd9f" [[package]] name = "same-file" @@ -5239,9 +5283,9 @@ dependencies = [ [[package]] name = "schemars" -version = "0.8.16" +version = "0.8.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "45a28f4c49489add4ce10783f7911893516f15afe45d015608d41faca6bc4d29" +checksum = "fc6e7ed6919cb46507fb01ff1654309219f62b4d603822501b0b80d42f6f21ef" dependencies = [ "chrono", "dyn-clone", @@ -5252,14 +5296,14 @@ dependencies = [ [[package]] name = "schemars_derive" -version = "0.8.16" +version = "0.8.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c767fd6fa65d9ccf9cf026122c1b555f2ef9a4f0cea69da4d7dbc3e258d30967" +checksum = "185f2b7aa7e02d418e453790dde16890256bbd2bcd04b7dc5348811052b53f49" dependencies = [ "proc-macro2", "quote", "serde_derive_internals", - "syn 1.0.109", + "syn 2.0.63", ] [[package]] @@ -5285,7 +5329,7 @@ checksum = "7f81c2fde025af7e69b1d1420531c8a8811ca898919db177141a85313b1cb932" dependencies = [ "proc-macro2", "quote", - "syn 2.0.59", + "syn 2.0.63", ] [[package]] @@ -5324,11 +5368,11 @@ dependencies = [ [[package]] name = "security-framework" -version = "2.10.0" +version = "2.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "770452e37cad93e0a50d5abc3990d2bc351c36d0328f86cefec2f2fb206eaef6" +checksum = "c627723fd09706bacdb5cf41499e95098555af3c3c29d014dc3c458ef6be11c0" dependencies = [ - "bitflags 1.3.2", + "bitflags 2.5.0", "core-foundation", "core-foundation-sys", "libc", @@ -5337,9 +5381,9 @@ dependencies = [ [[package]] name = "security-framework-sys" -version = "2.10.0" +version = "2.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "41f3cc463c0ef97e11c3461a9d3787412d30e8e7eb907c79180c4a57bf7c04ef" +checksum = "317936bbbd05227752583946b9e66d7ce3b489f84e11a94a510b4437fef407d7" dependencies = [ "core-foundation-sys", "libc", @@ -5357,9 +5401,9 @@ dependencies = [ [[package]] name = "semver" -version = "1.0.22" +version = "1.0.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "92d43fe69e652f3df9bdc2b85b2854a0825b86e4fb76bc44d945137d053639ca" +checksum = "61697e0a1c7e512e84a621326239844a24d8207b4669b41bc18b32ea5cbf988b" dependencies = [ "serde", ] @@ -5372,9 +5416,9 @@ checksum = "388a1df253eca08550bef6c72392cfe7c30914bf41df5269b68cbd6ff8f570a3" [[package]] name = "serde" -version = "1.0.197" +version = "1.0.201" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3fb1c873e1b9b056a4dc4c0c198b24c3ffa059243875552b2bd0933b1aee4ce2" +checksum = "780f1cebed1629e4753a1a38a3c72d30b97ec044f0aef68cb26650a3c5cf363c" dependencies = [ "serde_derive", ] @@ -5403,31 +5447,31 @@ dependencies = [ [[package]] name = "serde_derive" -version = "1.0.197" +version = "1.0.201" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7eb0b34b42edc17f6b7cac84a52a1c5f0e1bb2227e997ca9011ea3dd34e8610b" +checksum = "c5e405930b9796f1c00bee880d03fc7e0bb4b9a11afc776885ffe84320da2865" dependencies = [ "proc-macro2", "quote", - "syn 2.0.59", + "syn 2.0.63", ] [[package]] name = "serde_derive_internals" -version = "0.26.0" +version = "0.29.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "85bf8229e7920a9f636479437026331ce11aa132b4dde37d121944a44d6e5f3c" +checksum = "330f01ce65a3a5fe59a60c82f3c9a024b573b8a6e875bd233fe5f934e71d54e3" dependencies = [ "proc-macro2", "quote", - "syn 1.0.109", + "syn 2.0.63", ] [[package]] name = "serde_json" -version = "1.0.116" +version = "1.0.117" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3e17db7126d17feb94eb3fad46bf1a96b034e8aacbc2e775fe81505f8b0b2813" +checksum = "455182ea6142b14f93f4bc5320a2b31c1f266b66a4a5c858b013302a5d8cbfc3" dependencies = [ "itoa", "ryu", @@ -5452,7 +5496,7 @@ checksum = "6c64451ba24fc7a6a2d60fc75dd9c83c90903b19028d4eff35e88fc1e86564e9" dependencies = [ "proc-macro2", "quote", - "syn 2.0.59", + "syn 2.0.63", ] [[package]] @@ -5558,9 +5602,9 @@ checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" [[package]] name = "signal-hook-registry" -version = "1.4.1" +version = "1.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d8229b473baa5980ac72ef434c4415e70c4b5e71b423043adb4ba059f89c99a1" +checksum = "a9e9e0b4211b72e7b8b6e85c807d36c212bdb33ea8587f7569562a84df5465b1" dependencies = [ "libc", ] @@ -5653,9 +5697,9 @@ dependencies = [ [[package]] name = "socket2" -version = "0.5.6" +version = "0.5.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "05ffd9c0a93b7543e062e759284fcf5f5e3b098501104bfbdde4d404db792871" +checksum = "ce305eb0b4296696835b71df73eb912e0f1ffd2556a501fcede6e0c50349191c" dependencies = [ "libc", "windows-sys 0.52.0", @@ -5769,9 +5813,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.59" +version = "2.0.63" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4a6531ffc7b071655e4ce2e04bd464c4830bb585a61cabb96cf808f05172615a" +checksum = "bf5be731623ca1a1fb7d8be6f261a3be6d3e2337b8a1f97be944d020c8fcb704" dependencies = [ "proc-macro2", "quote", @@ -5804,7 +5848,7 @@ checksum = "c8af7666ab7b6390ab78131fb5b0fce11d6b7a6951602017c35fa82800708971" dependencies = [ "proc-macro2", "quote", - "syn 2.0.59", + "syn 2.0.63", ] [[package]] @@ -5986,22 +6030,22 @@ dependencies = [ [[package]] name = "thiserror" -version = "1.0.58" +version = "1.0.60" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "03468839009160513471e86a034bb2c5c0e4baae3b43f79ffc55c4a5427b3297" +checksum = "579e9083ca58dd9dcf91a9923bb9054071b9ebbd800b342194c9feb0ee89fc18" dependencies = [ "thiserror-impl", ] [[package]] name = "thiserror-impl" -version = "1.0.58" +version = "1.0.60" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c61f3ba182994efc43764a46c018c347bc492c79f024e705f46567b418f6d4f7" +checksum = "e2470041c06ec3ac1ab38d0356a6119054dedaea53e12fbefc0de730a1c08524" dependencies = [ "proc-macro2", "quote", - "syn 2.0.59", + "syn 2.0.63", ] [[package]] @@ -6083,7 +6127,7 @@ dependencies = [ "parking_lot", "pin-project-lite", "signal-hook-registry", - "socket2 0.5.6", + "socket2 0.5.7", "tokio-macros", "windows-sys 0.48.0", ] @@ -6106,7 +6150,7 @@ checksum = "5b8a1e28f2deaa14e508979454cb3a223b10b938b45af148bc0986de36f1923b" dependencies = [ "proc-macro2", "quote", - "syn 2.0.59", + "syn 2.0.63", ] [[package]] @@ -6126,7 +6170,7 @@ version = "0.24.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c28327cf380ac148141087fbfb9de9d7bd4e84ab5d2c28fbc911d753de8a7081" dependencies = [ - "rustls 0.21.10", + "rustls 0.21.12", "tokio", ] @@ -6136,7 +6180,7 @@ version = "0.25.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "775e0c0f0adb3a2f22a00c4745d728b479985fc15ee7ca6a2608388c5569860f" dependencies = [ - "rustls 0.22.3", + "rustls 0.22.4", "rustls-pki-types", "tokio", ] @@ -6190,9 +6234,9 @@ dependencies = [ [[package]] name = "tokio-util" -version = "0.7.10" +version = "0.7.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5419f34732d9eb6ee4c3578b7989078579b7f039cbbb9ca2c4da015749371e15" +checksum = "9cf6b47b3771c49ac75ad09a6162f53ad4b8088b76ac60e8ec1455b31a189fe1" dependencies = [ "bytes", "futures-core", @@ -6200,7 +6244,6 @@ dependencies = [ "pin-project-lite", "slab", "tokio", - "tracing 0.1.40", ] [[package]] @@ -6235,9 +6278,9 @@ dependencies = [ [[package]] name = "toml_edit" -version = "0.22.9" +version = "0.22.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8e40bb779c5187258fd7aad0eb68cb8706a0a81fa712fbea808ab43c4b8374c4" +checksum = "d3328d4f68a705b2a4498da1d580585d39a6510f98318a2cec3018a7ec61ddef" dependencies = [ "indexmap 2.2.6", "serde", @@ -6406,7 +6449,7 @@ checksum = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.59", + "syn 2.0.63", ] [[package]] @@ -6469,15 +6512,6 @@ dependencies = [ "tracing-serde", ] -[[package]] -name = "treediff" -version = "4.0.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4d127780145176e2b5d16611cc25a900150e86e9fd79d3bde6ff3a37359c9cb5" -dependencies = [ - "serde_json", -] - [[package]] name = "trust-dns-proto" version = "0.22.0" @@ -6582,7 +6616,7 @@ dependencies = [ "httparse", "log", "rand", - "rustls 0.22.3", + "rustls 0.22.4", "rustls-native-certs 0.7.0", "rustls-pki-types", "sha1", @@ -6716,9 +6750,9 @@ dependencies = [ [[package]] name = "unicode-width" -version = "0.1.11" +version = "0.1.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e51733f11c9c4f72aa0c160008246859e340b00807569a0da0e7a1079b27ba85" +checksum = "68f5e5f3158ecfd4b8ff6fe086db7c8467a2dfdac97fe420f2b7c4aa97af66d6" [[package]] name = "unicode-xid" @@ -6874,7 +6908,7 @@ dependencies = [ "once_cell", "proc-macro2", "quote", - "syn 2.0.59", + "syn 2.0.63", "wasm-bindgen-shared", ] @@ -6908,7 +6942,7 @@ checksum = "e94f17b526d0a461a191c78ea52bbce64071ed5c04c9ffe424dcb38f74171bb7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.59", + "syn 2.0.63", "wasm-bindgen-backend", "wasm-bindgen-shared", ] @@ -6953,7 +6987,7 @@ version = "1.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a44ab49fad634e88f55bf8f9bb3abd2f27d7204172a112c7c9987e01c1c94ea9" dependencies = [ - "redox_syscall", + "redox_syscall 0.4.1", "wasite", "web-sys", ] @@ -6988,11 +7022,11 @@ checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" [[package]] name = "winapi-util" -version = "0.1.6" +version = "0.1.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f29e6f9198ba0d26b4c9f07dbe6f9ed633e1f3d5b8b414090084349e46a52596" +checksum = "4d4cc384e1e73b93bafa6fb4f1df8c41695c8a91cf9c4c64358067d15a7b6c6b" dependencies = [ - "winapi", + "windows-sys 0.52.0", ] [[package]] @@ -7151,9 +7185,9 @@ checksum = "bec47e5bfd1bff0eeaf6d8b485cc1074891a197ab4225d504cb7a1ab88b02bf0" [[package]] name = "winnow" -version = "0.6.6" +version = "0.6.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f0c976aaaa0e1f90dbb21e9587cdaf1d9679a1cde8875c0d6bd83ab96a208352" +checksum = "c3c52e9c97a68071b23e836c9380edae937f17b9c4667bd021973efc689f618d" dependencies = [ "memchr", ] @@ -7299,22 +7333,22 @@ dependencies = [ [[package]] name = "zerocopy" -version = "0.7.32" +version = "0.7.34" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "74d4d3961e53fa4c9a25a8637fc2bfaf2595b3d3ae34875568a5cf64787716be" +checksum = "ae87e3fcd617500e5d106f0380cf7b77f3c6092aae37191433159dda23cfb087" dependencies = [ "zerocopy-derive", ] [[package]] name = "zerocopy-derive" -version = "0.7.32" +version = "0.7.34" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9ce1b18ccd8e73a9321186f97e46f9f04b778851177567b1975109d26a08d2a6" +checksum = "15e934569e47891f7d9411f1a451d947a60e000ab3bd24fbb970f000387d1b3b" dependencies = [ "proc-macro2", "quote", - "syn 2.0.59", + "syn 2.0.63", ] [[package]] @@ -7334,7 +7368,7 @@ checksum = "ce36e65b0d2999d2aafac989fb249189a141aee1f53c612c1f37d72631959f69" dependencies = [ "proc-macro2", "quote", - "syn 2.0.59", + "syn 2.0.63", ] [[package]] diff --git a/Cargo.toml b/Cargo.toml index 7db728f4a63..e092999282a 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -54,7 +54,7 @@ futures = "0.3" thiserror = "1" k8s-openapi = { version = "0.20", features = ["v1_24"] } reqwest = { version = "0.11", default-features = false, features = ["blocking", "rustls-tls-native-roots", "json", "socks"] } -kube = { git = "https://github.com/metalbear-co/kube", default-features = false, features = ["runtime", "derive", "client", "ws", "rustls-tls", "oidc", "socks5", "http_proxy"] } +kube = { git = "https://github.com/metalbear-co/kube", default-features = false, features = ["runtime", "derive", "client", "ws", "rustls-tls", "oidc", "socks5", "http_proxy"], branch = "fix_mb" } trust-dns-resolver = { version = "0.22", features = ["serde-config", "tokio-runtime"] } tokio-util = { version = "0.7", features = ["net", "codec"] } rand = "0.8" diff --git a/changelog.d/1959.changed.md b/changelog.d/1959.changed.md new file mode 100644 index 00000000000..14e5ba90fe9 --- /dev/null +++ b/changelog.d/1959.changed.md @@ -0,0 +1 @@ +Use operator to list targets to avoid inconsistencies \ No newline at end of file diff --git a/mirrord-schema.json b/mirrord-schema.json index 1757b8ec530..65c0bd41765 100644 --- a/mirrord-schema.json +++ b/mirrord-schema.json @@ -1211,7 +1211,6 @@ }, "path": { "description": " Path is optional so that it can also be specified via env var instead of via conf file, but it is not optional in a resulting [`TargetConfig`] object - either there is a path, or the target configuration is `None`.", - "default": null, "anyOf": [ { "$ref": "#/definitions/Target" diff --git a/mirrord/cli/src/main.rs b/mirrord/cli/src/main.rs index 890503cb679..ca3084f9cec 100644 --- a/mirrord/cli/src/main.rs +++ b/mirrord/cli/src/main.rs @@ -1,5 +1,6 @@ #![feature(let_chains)] #![feature(lazy_cell)] +#![feature(try_blocks)] #![warn(clippy::indexing_slicing)] use std::{collections::HashMap, time::Duration}; @@ -21,6 +22,7 @@ use miette::JSONReportHandler; use mirrord_analytics::{AnalyticsError, AnalyticsReporter, CollectAnalytics, Reporter}; use mirrord_config::{ config::{ConfigContext, MirrordConfig}, + target::TargetDisplay, LayerConfig, LayerFileConfig, }; use mirrord_kube::{ @@ -30,6 +32,7 @@ use mirrord_kube::{ }, error::KubeApiError, }; +use mirrord_operator::client::OperatorApi; use mirrord_progress::{Progress, ProgressTracker}; use operator::operator_command; use semver::Version; @@ -336,36 +339,19 @@ where .unwrap_or_else(|_| Vec::new().into_iter()) } -/// Lists all possible target paths for pods. -/// Example: ```[ -/// "pod/metalbear-deployment-85c754c75f-982p5", -/// "pod/nginx-deployment-66b6c48dd5-dc9wk", -/// "pod/py-serv-deployment-5c57fbdc98-pdbn4/container/py-serv", -/// ]``` -async fn print_pod_targets(args: &ListTargetArgs) -> Result<()> { - let (accept_invalid_certificates, kubeconfig, namespace, kube_context) = if let Some(config) = - &args.config_file - { - let mut cfg_context = ConfigContext::default(); - let layer_config = LayerFileConfig::from_path(config)?.generate_config(&mut cfg_context)?; - if !layer_config.use_proxy { - remove_proxy_env(); - } - ( - layer_config.accept_invalid_certificates, - layer_config.kubeconfig, - layer_config.target.namespace, - layer_config.kube_context, - ) - } else { - (false, None, None, None) - }; +async fn list_pods(layer_config: &LayerConfig, args: &ListTargetArgs) -> Result> { + let client = create_kube_api( + layer_config.accept_invalid_certificates, + layer_config.kubeconfig.clone(), + layer_config.kube_context.clone(), + ) + .await + .map_err(CliError::KubernetesApiFailed)?; - let client = create_kube_api(accept_invalid_certificates, kubeconfig, kube_context) - .await - .map_err(CliError::KubernetesApiFailed)?; - - let namespace = args.namespace.as_deref().or(namespace.as_deref()); + let namespace = args + .namespace + .as_deref() + .or(layer_config.target.namespace.as_deref()); let (pods, deployments, rollouts) = futures::try_join!( get_kube_pods(namespace, &client), @@ -373,7 +359,7 @@ async fn print_pod_targets(args: &ListTargetArgs) -> Result<()> { get_kube_rollouts(namespace, &client) )?; - let mut target_vector = pods + Ok(pods .iter() .flat_map(|(pod, containers)| { if containers.len() == 1 { @@ -387,11 +373,73 @@ async fn print_pod_targets(args: &ListTargetArgs) -> Result<()> { }) .chain(deployments.map(|deployment| format!("deployment/{deployment}"))) .chain(rollouts.map(|rollout| format!("rollout/{rollout}"))) - .collect::>(); + .collect::>()) +} + +/// Lists all possible target paths. +/// Tries to use operator if available, otherwise falls back to k8s API (if operator isn't +/// explicitly true). Example: ```[ +/// "pod/metalbear-deployment-85c754c75f-982p5", +/// "pod/nginx-deployment-66b6c48dd5-dc9wk", +/// "pod/py-serv-deployment-5c57fbdc98-pdbn4/container/py-serv", +/// "deployment/nginx-deployment" +/// "deployment/nginx-deployment/container/nginx" +/// "rollout/nginx-rollout" +/// ]``` +async fn print_targets(args: &ListTargetArgs) -> Result<()> { + let mut layer_config = if let Some(config) = &args.config_file { + let mut cfg_context = ConfigContext::default(); + LayerFileConfig::from_path(config)?.generate_config(&mut cfg_context)? + } else { + LayerConfig::from_env()? + }; + + if let Some(namespace) = &args.namespace { + layer_config.target.namespace = Some(namespace.clone()); + }; + + if !layer_config.use_proxy { + remove_proxy_env(); + } + + // Try operator first if relevant + let mut targets = match &layer_config.operator { + Some(true) | None => { + let operator_targets = try { + let operator_api = OperatorApi::new(&layer_config).await?; + operator_api.list_targets().await? + }; + match operator_targets { + Ok(targets) => { + // adjust format to match non-operator output + targets + .iter() + .filter_map(|target_crd| { + let target = target_crd.spec.target.as_ref()?; + if let Some(container) = target.container_name() { + if !SKIP_NAMES.contains(container.as_str()) { + return None; + } + } + Some(format!("{target}")) + }) + .collect::>() + } + Err(e) => { + if layer_config.operator.is_some() { + error!(?e, "Operator is enabled but failed to list targets"); + return Err(e); + } + list_pods(&layer_config, args).await? + } + } + } + Some(false) => list_pods(&layer_config, args).await?, + }; - target_vector.sort(); + targets.sort(); - let json_obj = json!(target_vector); + let json_obj = json!(targets); println!("{json_obj}"); Ok(()) } @@ -427,7 +475,7 @@ fn main() -> miette::Result<()> { false, )?; } - Commands::ListTargets(args) => print_pod_targets(&args).await?, + Commands::ListTargets(args) => print_targets(&args).await?, Commands::Operator(args) => operator_command(*args).await?, Commands::ExtensionExec(args) => { extension_exec(*args, watch).await?; diff --git a/mirrord/config/src/target.rs b/mirrord/config/src/target.rs index 8ed7129ddb6..492085fcc9d 100644 --- a/mirrord/config/src/target.rs +++ b/mirrord/config/src/target.rs @@ -253,7 +253,7 @@ impl Target { } } -trait TargetDisplay { +pub trait TargetDisplay { fn target_type(&self) -> &str; fn target_name(&self) -> &str; @@ -306,6 +306,34 @@ impl fmt::Display for Target { } } +impl TargetDisplay for Target { + fn target_type(&self) -> &str { + match self { + Target::Deployment(x) => x.target_type(), + Target::Pod(x) => x.target_type(), + Target::Rollout(x) => x.target_type(), + Target::Targetless => "targetless", + } + } + + fn target_name(&self) -> &str { + match self { + Target::Deployment(x) => x.target_name(), + Target::Pod(x) => x.target_name(), + Target::Rollout(x) => x.target_name(), + Target::Targetless => "targetless", + } + } + + fn container_name(&self) -> Option<&String> { + match self { + Target::Deployment(x) => x.container_name(), + Target::Pod(x) => x.container_name(), + Target::Rollout(x) => x.container_name(), + Target::Targetless => None, + } + } +} /// /// Mirror the pod specified by [`PodTarget::pod`]. #[derive(Serialize, Deserialize, Clone, Eq, PartialEq, Hash, Debug, JsonSchema)] diff --git a/mirrord/operator/src/client.rs b/mirrord/operator/src/client.rs index 677b1731333..57c76eb9747 100644 --- a/mirrord/operator/src/client.rs +++ b/mirrord/operator/src/client.rs @@ -7,7 +7,10 @@ use base64::{engine::general_purpose, Engine as _}; use chrono::{DateTime, Utc}; use futures::{SinkExt, StreamExt}; use http::request::Request; -use kube::{api::PostParams, Api, Client, Resource}; +use kube::{ + api::{ListParams, PostParams}, + Api, Client, Resource, +}; use mirrord_analytics::{AnalyticsHash, AnalyticsOperatorProperties, Reporter}; use mirrord_auth::{ certificate::Certificate, @@ -51,6 +54,7 @@ pub enum OperatorOperation { CopyingTarget, GettingStatus, SessionManagement, + ListingTargets, } impl Display for OperatorOperation { @@ -62,6 +66,7 @@ impl Display for OperatorOperation { Self::CopyingTarget => "copying target", Self::GettingStatus => "getting status", Self::SessionManagement => "session management", + Self::ListingTargets => "listing targets", }; f.write_str(as_str) @@ -374,7 +379,7 @@ impl OperatorApi { operator_api.connect_target(session_information).await } - async fn new(config: &LayerConfig) -> Result { + pub async fn new(config: &LayerConfig) -> Result { let target_config = config.target.clone(); let on_concurrent_steal = config.feature.network.incoming.on_concurrent_steal; @@ -613,6 +618,19 @@ impl OperatorApi { operation: OperatorOperation::CopyingTarget, }) } + + /// List targets using the operator + #[tracing::instrument(level = "trace", skip(self), ret)] + pub async fn list_targets(&self) -> Result> { + self.target_api + .list(&ListParams::default()) + .await + .map_err(|error| OperatorApiError::KubeError { + error, + operation: OperatorOperation::ListingTargets, + }) + .map(|list| list.items) + } } #[derive(Error, Debug)] diff --git a/tests/src/cli/sanity.rs b/tests/src/cli/sanity.rs index 7786b12c860..1d6cffbfeb9 100644 --- a/tests/src/cli/sanity.rs +++ b/tests/src/cli/sanity.rs @@ -99,7 +99,7 @@ mod cli { #[tokio::test(flavor = "multi_thread", worker_threads = 2)] pub async fn mirrord_ls(#[future] service: KubeService) { let service = service.await; - let mut process = run_ls(None, None).await; + let mut process = run_ls::(None, None).await; let res = process.wait().await; assert!(res.success()); let stdout = process.get_stdout().await; diff --git a/tests/src/operator.rs b/tests/src/operator.rs index bcccea48431..a494c46a017 100644 --- a/tests/src/operator.rs +++ b/tests/src/operator.rs @@ -2,4 +2,5 @@ mod concurrent_steal; mod policies; +mod sanity; mod setup; diff --git a/tests/src/operator/sanity.rs b/tests/src/operator/sanity.rs new file mode 100644 index 00000000000..982de037b32 --- /dev/null +++ b/tests/src/operator/sanity.rs @@ -0,0 +1,27 @@ +#![cfg(test)] +#![cfg(feature = "operator")] +use std::time::Duration; + +use regex::Regex; +use rstest::rstest; + +use crate::utils::{config_dir, run_ls, run_verify_config, service, KubeService}; + +/// Tests for the `mirrord ls` command with operator +#[rstest] +#[tokio::test(flavor = "multi_thread", worker_threads = 2)] +pub async fn mirrord_ls(#[future] service: KubeService) { + let service = service.await; + let mut process = run_ls::(None, None).await; + let res = process.wait().await; + assert!(res.success()); + let stdout = process.get_stdout().await; + let targets: Vec = serde_json::from_str(&stdout).unwrap(); + let re = Regex::new(r"^(pod|deployment)/.+(/container/.+)?$").unwrap(); + targets + .iter() + .for_each(|output| assert!(re.is_match(output))); + assert!(targets + .iter() + .any(|output| output.starts_with(&format!("pod/{}", service.name)))); +} diff --git a/tests/src/utils.rs b/tests/src/utils.rs index 0ef37e2e801..d0097bd643e 100644 --- a/tests/src/utils.rs +++ b/tests/src/utils.rs @@ -509,7 +509,10 @@ pub async fn run_exec( } /// Runs `mirrord ls` command and asserts if the json matches the expected format -pub async fn run_ls(args: Option>, namespace: Option<&str>) -> TestProcess { +pub async fn run_ls( + args: Option>, + namespace: Option<&str>, +) -> TestProcess { let mut mirrord_args = vec!["ls"]; if let Some(args) = args { mirrord_args.extend(args); @@ -518,7 +521,12 @@ pub async fn run_ls(args: Option>, namespace: Option<&str>) -> TestPro mirrord_args.extend(vec!["--namespace", namespace]); } - run_mirrord(mirrord_args, Default::default()).await + let mut env = HashMap::new(); + if USE_OPERATOR { + env.insert("MIRRORD_OPERATOR_ENABLE", "true"); + }; + + run_mirrord(mirrord_args, env).await } /// Runs `mirrord verify-config [--ide] "/path/config.json"`.