diff --git a/edgelet/Cargo.lock b/edgelet/Cargo.lock index e19839d3956..d1b56220f4d 100644 --- a/edgelet/Cargo.lock +++ b/edgelet/Cargo.lock @@ -1,37 +1,33 @@ # This file is automatically @generated by Cargo. # It is not intended for manual editing. -version = 3 +version = 4 [[package]] -name = "addr2line" -version = "0.20.0" +name = "adler2" +version = "2.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f4fa78e18c64fce05e902adecd7a5eed15a5e0a3439f7b0e169f0252214865e3" -dependencies = [ - "gimli", -] +checksum = "320119579fcad9c21884f5c4861d16174d0e06250625266f50fe6898340abefa" [[package]] -name = "adler" -version = "1.0.2" +name = "ahash" +version = "0.7.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe" +checksum = "891477e0c6a8957309ee5c45a6368af3ae14bb510732d2684ffa19af310920f9" +dependencies = [ + "getrandom 0.2.17", + "once_cell", + "version_check", +] [[package]] name = "aho-corasick" -version = "1.0.4" +version = "1.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6748e8def348ed4d14996fa801f4122cd763fff530258cdc03f64b25f89d3a5a" +checksum = "ddd31a130427c27518df266943a5308ed92d4b226cc639f5a8f1002816174301" dependencies = [ "memchr", ] -[[package]] -name = "android-tzdata" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e999941b234f3131b00bc13c22d06e8c5ff726d1b6318ac7eb276997bbb4fef0" - [[package]] name = "android_system_properties" version = "0.1.5" @@ -43,70 +39,83 @@ dependencies = [ [[package]] name = "anstream" -version = "0.3.2" +version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0ca84f3628370c59db74ee214b3263d58f9aadd9b4fe7e711fd87dc452b7f163" +checksum = "824a212faf96e9acacdbd09febd34438f8f711fb84e09a8916013cd7815ca28d" dependencies = [ "anstyle", "anstyle-parse", "anstyle-query", "anstyle-wincon", "colorchoice", - "is-terminal", + "is_terminal_polyfill", "utf8parse", ] [[package]] name = "anstyle" -version = "1.0.1" +version = "1.0.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3a30da5c5f2d5e72842e00bcb57657162cdabef0931f40e2deb9b4140440cecd" +checksum = "940b3a0ca603d1eade50a4846a2afffd5ef57a9feac2c0e2ec2e14f9ead76000" [[package]] name = "anstyle-parse" -version = "0.2.1" +version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "938874ff5980b03a87c5524b3ae5b59cf99b1d6bc836848df7bc5ada9643c333" +checksum = "52ce7f38b242319f7cabaa6813055467063ecdc9d355bbb4ce0c68908cd8130e" dependencies = [ "utf8parse", ] [[package]] name = "anstyle-query" -version = "1.0.0" +version = "1.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5ca11d4be1bab0c8bc8734a9aa7bf4ee8316d462a08c6ac5052f888fef5b494b" +checksum = "40c48f72fd53cd289104fc64099abca73db4166ad86ea0b4341abe65af83dadc" dependencies = [ "windows-sys", ] [[package]] name = "anstyle-wincon" -version = "1.0.2" +version = "3.0.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c677ab05e09154296dd37acecd46420c17b9713e8366facafa8fc0885167cf4c" +checksum = "291e6a250ff86cd4a820112fb8898808a366d8f9f58ce16d1f538353ad55747d" dependencies = [ "anstyle", + "once_cell_polyfill", "windows-sys", ] [[package]] name = "anyhow" -version = "1.0.74" +version = "1.0.102" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f202df86484c868dbad7eaa557ef785d5c66295e41b460ef922eca0723b842c" + +[[package]] +name = "arrayvec" +version = "0.7.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8c6f84b74db2535ebae81eede2f39b947dcbf01d093ae5f791e5dd414a1bf289" +checksum = "7c02d123df017efcdfbd739ef81735b36c5ba83ec3c59c80a9d7ecc718f92e50" [[package]] name = "async-trait" -version = "0.1.73" +version = "0.1.89" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bc00ceb34980c03614e35a3a4e218276a0a824e911d07651cd0d858a51e8c0f0" +checksum = "9035ad2d096bed7955a320ee7e2230574d28fd3c3a0f186cbea1ff3c7eed5dbb" dependencies = [ "proc-macro2", "quote", - "syn 2.0.28", + "syn 2.0.117", ] +[[package]] +name = "atomic-waker" +version = "1.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1505bd5d3d116872e7271a6d4e16d81d0c8570876c8de68093a09ac269d8aac0" + [[package]] name = "atty" version = "0.2.14" @@ -120,18 +129,17 @@ dependencies = [ [[package]] name = "autocfg" -version = "1.1.0" +version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" +checksum = "c08606f8c3cbf4ce6ec8e28fb0014a2c086708fe954eaa885384a6165172e7e8" [[package]] name = "aziot-cert-client-async" version = "0.1.0" -source = "git+https://github.com/Azure/iot-identity-service?branch=main#07597261e30832b3f7d8f54589f369823838e992" +source = "git+https://github.com/arsing/iot-identity-service?branch=rustup#cc0379190fa9b6d5744d9b6c3bf0ae6e8ab1bac5" dependencies = [ "aziot-cert-common-http", "aziot-key-common", - "http", "http-common", "hyper", "percent-encoding", @@ -140,7 +148,7 @@ dependencies = [ [[package]] name = "aziot-cert-common-http" version = "0.1.0" -source = "git+https://github.com/Azure/iot-identity-service?branch=main#07597261e30832b3f7d8f54589f369823838e992" +source = "git+https://github.com/arsing/iot-identity-service?branch=rustup#cc0379190fa9b6d5744d9b6c3bf0ae6e8ab1bac5" dependencies = [ "aziot-key-common", "serde", @@ -149,7 +157,7 @@ dependencies = [ [[package]] name = "aziot-certd-config" version = "0.1.0" -source = "git+https://github.com/Azure/iot-identity-service?branch=main#07597261e30832b3f7d8f54589f369823838e992" +source = "git+https://github.com/arsing/iot-identity-service?branch=rustup#cc0379190fa9b6d5744d9b6c3bf0ae6e8ab1bac5" dependencies = [ "cert-renewal", "hex", @@ -168,8 +176,7 @@ dependencies = [ "aziot-identity-client-async", "aziot-identity-common", "aziot-identity-common-http", - "base64 0.21.2", - "chrono", + "base64", "clap", "edgelet-core", "edgelet-docker", @@ -192,21 +199,19 @@ dependencies = [ [[package]] name = "aziot-identity-client-async" version = "0.1.0" -source = "git+https://github.com/Azure/iot-identity-service?branch=main#07597261e30832b3f7d8f54589f369823838e992" +source = "git+https://github.com/arsing/iot-identity-service?branch=rustup#cc0379190fa9b6d5744d9b6c3bf0ae6e8ab1bac5" dependencies = [ "aziot-cert-common-http", "aziot-identity-common", "aziot-identity-common-http", - "http", "http-common", - "hyper", "percent-encoding", ] [[package]] name = "aziot-identity-common" version = "0.1.0" -source = "git+https://github.com/Azure/iot-identity-service?branch=main#07597261e30832b3f7d8f54589f369823838e992" +source = "git+https://github.com/arsing/iot-identity-service?branch=rustup#cc0379190fa9b6d5744d9b6c3bf0ae6e8ab1bac5" dependencies = [ "aziot-key-common", "http-common", @@ -217,12 +222,10 @@ dependencies = [ [[package]] name = "aziot-identity-common-http" version = "0.1.0" -source = "git+https://github.com/Azure/iot-identity-service?branch=main#07597261e30832b3f7d8f54589f369823838e992" +source = "git+https://github.com/arsing/iot-identity-service?branch=rustup#cc0379190fa9b6d5744d9b6c3bf0ae6e8ab1bac5" dependencies = [ "aziot-cert-common-http", "aziot-identity-common", - "aziot-key-common", - "http-common", "serde", "serde_json", ] @@ -230,7 +233,7 @@ dependencies = [ [[package]] name = "aziot-identityd-config" version = "0.1.0" -source = "git+https://github.com/Azure/iot-identity-service?branch=main#07597261e30832b3f7d8f54589f369823838e992" +source = "git+https://github.com/arsing/iot-identity-service?branch=rustup#cc0379190fa9b6d5744d9b6c3bf0ae6e8ab1bac5" dependencies = [ "aziot-identity-common", "cert-renewal", @@ -245,7 +248,7 @@ dependencies = [ [[package]] name = "aziot-key-client" version = "0.1.0" -source = "git+https://github.com/Azure/iot-identity-service?branch=main#07597261e30832b3f7d8f54589f369823838e992" +source = "git+https://github.com/arsing/iot-identity-service?branch=rustup#cc0379190fa9b6d5744d9b6c3bf0ae6e8ab1bac5" dependencies = [ "aziot-key-common", "aziot-key-common-http", @@ -260,20 +263,18 @@ dependencies = [ [[package]] name = "aziot-key-client-async" version = "0.1.0" -source = "git+https://github.com/Azure/iot-identity-service?branch=main#07597261e30832b3f7d8f54589f369823838e992" +source = "git+https://github.com/arsing/iot-identity-service?branch=rustup#cc0379190fa9b6d5744d9b6c3bf0ae6e8ab1bac5" dependencies = [ "aziot-key-common", "aziot-key-common-http", - "http", "http-common", - "hyper", "percent-encoding", ] [[package]] name = "aziot-key-common" version = "0.1.0" -source = "git+https://github.com/Azure/iot-identity-service?branch=main#07597261e30832b3f7d8f54589f369823838e992" +source = "git+https://github.com/arsing/iot-identity-service?branch=rustup#cc0379190fa9b6d5744d9b6c3bf0ae6e8ab1bac5" dependencies = [ "serde", ] @@ -281,7 +282,7 @@ dependencies = [ [[package]] name = "aziot-key-common-http" version = "0.1.0" -source = "git+https://github.com/Azure/iot-identity-service?branch=main#07597261e30832b3f7d8f54589f369823838e992" +source = "git+https://github.com/arsing/iot-identity-service?branch=rustup#cc0379190fa9b6d5744d9b6c3bf0ae6e8ab1bac5" dependencies = [ "aziot-key-common", "http-common", @@ -291,11 +292,11 @@ dependencies = [ [[package]] name = "aziot-key-openssl-engine" version = "0.1.0" -source = "git+https://github.com/Azure/iot-identity-service?branch=main#07597261e30832b3f7d8f54589f369823838e992" +source = "git+https://github.com/arsing/iot-identity-service?branch=rustup#cc0379190fa9b6d5744d9b6c3bf0ae6e8ab1bac5" dependencies = [ "aziot-key-client", "aziot-key-common", - "base64 0.21.2", + "base64", "foreign-types-shared", "log", "openssl", @@ -309,7 +310,7 @@ dependencies = [ [[package]] name = "aziot-keyd-config" version = "0.1.0" -source = "git+https://github.com/Azure/iot-identity-service?branch=main#07597261e30832b3f7d8f54589f369823838e992" +source = "git+https://github.com/arsing/iot-identity-service?branch=rustup#cc0379190fa9b6d5744d9b6c3bf0ae6e8ab1bac5" dependencies = [ "http-common", "libc", @@ -319,7 +320,7 @@ dependencies = [ [[package]] name = "aziot-keys-common" version = "0.1.0" -source = "git+https://github.com/Azure/iot-identity-service?branch=main#07597261e30832b3f7d8f54589f369823838e992" +source = "git+https://github.com/arsing/iot-identity-service?branch=rustup#cc0379190fa9b6d5744d9b6c3bf0ae6e8ab1bac5" dependencies = [ "pkcs11", "serde", @@ -329,7 +330,7 @@ dependencies = [ [[package]] name = "aziot-tpmd-config" version = "0.1.0" -source = "git+https://github.com/Azure/iot-identity-service?branch=main#07597261e30832b3f7d8f54589f369823838e992" +source = "git+https://github.com/arsing/iot-identity-service?branch=rustup#cc0379190fa9b6d5744d9b6c3bf0ae6e8ab1bac5" dependencies = [ "http-common", "serde", @@ -338,7 +339,7 @@ dependencies = [ [[package]] name = "aziotctl-common" version = "0.1.0" -source = "git+https://github.com/Azure/iot-identity-service?branch=main#07597261e30832b3f7d8f54589f369823838e992" +source = "git+https://github.com/arsing/iot-identity-service?branch=rustup#cc0379190fa9b6d5744d9b6c3bf0ae6e8ab1bac5" dependencies = [ "anyhow", "aziot-certd-config", @@ -346,7 +347,7 @@ dependencies = [ "aziot-keyd-config", "aziot-keys-common", "aziot-tpmd-config", - "base64 0.21.2", + "base64", "cert-renewal", "http-common", "log", @@ -358,94 +359,140 @@ dependencies = [ ] [[package]] -name = "backtrace" -version = "0.3.68" +name = "base64" +version = "0.22.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6" + +[[package]] +name = "bitflags" +version = "2.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c4512299f36f043ab09a583e57bceb5a5aab7a73db1805848e8fef3c9e8c78b3" + +[[package]] +name = "bitvec" +version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4319208da049c43661739c5fade2ba182f09d1dc2299b32298d3a31692b17e12" +checksum = "1bc2832c24239b0141d5674bb9174f9d68a8b5b3f2753311927c172ca46f7e9c" dependencies = [ - "addr2line", - "cc", - "cfg-if 1.0.0", - "libc", - "miniz_oxide", - "object", - "rustc-demangle", + "funty", + "radium", + "tap", + "wyz", ] [[package]] -name = "base64" -version = "0.13.1" +name = "block-buffer" +version = "0.10.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9e1b586273c5702936fe7b7d6896644d8be71e6314cfe09d3167c95f712589e8" +checksum = "3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71" +dependencies = [ + "generic-array", +] [[package]] -name = "base64" -version = "0.21.2" +name = "block-buffer" +version = "0.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "604178f6c5c21f02dc555784810edfb88d34ac2c73b2eae109655649ee73ce3d" +checksum = "cdd35008169921d80bc60d3d0ab416eecb028c4cd653352907921d95084790be" +dependencies = [ + "hybrid-array", +] [[package]] -name = "bitflags" -version = "1.3.2" +name = "borsh" +version = "1.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" +checksum = "cfd1e3f8955a5d7de9fab72fc8373fade9fb8a703968cb200ae3dc6cf08e185a" +dependencies = [ + "borsh-derive", + "bytes", + "cfg_aliases", +] [[package]] -name = "bitflags" -version = "2.4.0" +name = "borsh-derive" +version = "1.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b4682ae6287fcf752ecaabbfcc7b6f9b72aa33933dc23a554d853aea8eea8635" +checksum = "bfcfdc083699101d5a7965e49925975f2f55060f94f9a05e7187be95d530ca59" +dependencies = [ + "once_cell", + "proc-macro-crate", + "proc-macro2", + "quote", + "syn 2.0.117", +] [[package]] -name = "block-buffer" -version = "0.10.4" +name = "bs58" +version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71" +checksum = "bf88ba1141d185c399bee5288d850d63b8369520c1eafc32a0430b5b6c287bf4" dependencies = [ - "generic-array", + "tinyvec", ] [[package]] name = "bumpalo" -version = "3.13.0" +version = "3.20.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a3e2c3daef883ecc1b5d58c15adae93470a91d425f3532ba1695849656af3fc1" +checksum = "5d20789868f4b01b2f2caec9f5c4e0213b41e3e5702a50157d699ae31ced2fcb" [[package]] name = "byte-unit" -version = "4.0.19" +version = "5.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "da78b32057b8fdfc352504708feeba7216dcd65a2c9ab02978cbd288d1279b6c" +checksum = "8c6d47a4e2961fb8721bcfc54feae6455f2f64e7054f9bc67e875f0e77f4c58d" dependencies = [ + "rust_decimal", + "schemars 1.2.1", "serde", "utf8-width", ] [[package]] -name = "byteorder" -version = "1.4.3" +name = "bytecheck" +version = "0.6.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "23cdc57ce23ac53c931e88a43d06d070a6fd142f2617be5855eb75efc9beb1c2" +dependencies = [ + "bytecheck_derive", + "ptr_meta", + "simdutf8", +] + +[[package]] +name = "bytecheck_derive" +version = "0.6.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "14c189c53d098945499cdfa7ecc63567cf3886b3332b312a5b4585d8d3a6a610" +checksum = "3db406d29fbcd95542e92559bed4d8ad92636d1ca8b3b72ede10b4bcc010e659" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] [[package]] name = "bytes" -version = "1.4.0" +version = "1.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "89b2fd2a0dcf38d7971e2194b6b6eebab45ae01067456a7fd93d5547a61b70be" +checksum = "1e748733b7cbc798e1434b6ac524f0c1ff2ab456fe201501e6497c8417a4fc33" [[package]] name = "cc" -version = "1.0.82" +version = "1.2.62" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "305fe645edc1442a0fa8b6726ba61d422798d37a52e12eaecf4b022ebbb88f01" +checksum = "a1dce859f0832a7d088c4f1119888ab94ef4b5d6795d1ce05afb7fe159d79f98" dependencies = [ - "libc", + "find-msvc-tools", + "shlex", ] [[package]] name = "cert-renewal" version = "0.1.0" -source = "git+https://github.com/Azure/iot-identity-service?branch=main#07597261e30832b3f7d8f54589f369823838e992" +source = "git+https://github.com/arsing/iot-identity-service?branch=rustup#cc0379190fa9b6d5744d9b6c3bf0ae6e8ab1bac5" dependencies = [ "async-trait", "chrono", @@ -464,24 +511,39 @@ checksum = "4785bdd1c96b2a846b2bd7cc02e86b6b3dbf14e7e53446c4f54c92a361040822" [[package]] name = "cfg-if" -version = "1.0.0" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9330f8b2ff13f34540b44e946ef35111825727b38d33286ef986142615121801" + +[[package]] +name = "cfg_aliases" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "613afe47fcd5fac7ccf1db93babcb082c5994d996f20b8b159f2ad1658eb5724" + +[[package]] +name = "chacha20" +version = "0.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" +checksum = "6f8d983286843e49675a4b7a2d174efe136dc93a18d69130dd18198a6c167601" +dependencies = [ + "cfg-if 1.0.4", + "cpufeatures 0.3.0", + "rand_core 0.10.1", +] [[package]] name = "chrono" -version = "0.4.26" +version = "0.4.44" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ec837a71355b28f6556dbd569b37b3f363091c0bd4b2e735674521b4c5fd9bc5" +checksum = "c673075a2e0e5f4a1dde27ce9dee1ea4558c7ffe648f576438a20ca1d2acc4b0" dependencies = [ - "android-tzdata", "iana-time-zone", "js-sys", "num-traits", "serde", - "time 0.1.45", "wasm-bindgen", - "winapi", + "windows-link", ] [[package]] @@ -495,142 +557,120 @@ dependencies = [ [[package]] name = "clap" -version = "4.3.21" +version = "4.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c27cdf28c0f604ba3f512b0c9a409f8de8513e4816705deb0498b627e7c3a3fd" +checksum = "1ddb117e43bbf7dacf0a4190fef4d345b9bad68dfc649cb349e7d17d28428e51" dependencies = [ "clap_builder", ] [[package]] name = "clap_builder" -version = "4.3.21" +version = "4.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "08a9f1ab5e9f01a9b81f202e8562eb9a10de70abf9eaeac1be465c28b75aa4aa" +checksum = "714a53001bf66416adb0e2ef5ac857140e7dc3a0c48fb28b2f10762fc4b5069f" dependencies = [ "anstream", "anstyle", "clap_lex", - "once_cell", "strsim", ] [[package]] name = "clap_lex" -version = "0.5.0" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2da6da31387c7e4ef160ffab6d5e7f00c42626fe39aea70a7b0f1773f7dd6c1b" +checksum = "c8d4a3bb8b1e0c1050499d1815f5ab16d04f0959b233085fb31653fbfc9d98f9" [[package]] name = "colorchoice" -version = "1.0.0" +version = "1.0.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "acbf1af155f9b9ef647e42cdc158db4b64a1b61f743629225fde6f3e0be2a7c7" +checksum = "1d07550c9036bf2ae0c684c4297d503f838287c83c53686d05370d0e139ae570" [[package]] name = "config" -version = "0.13.3" +version = "0.15.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d379af7f68bfc21714c6c7dea883544201741d2ce8274bb12fa54f89507f52a7" +checksum = "8e68cfe19cd7d23ffde002c24ffa5cda73931913ef394d5eaaa32037dc940c0c" dependencies = [ - "async-trait", - "lazy_static", - "nom", "pathdiff", - "serde", + "serde_core", + "winnow", ] [[package]] name = "config-common" version = "0.1.0" -source = "git+https://github.com/Azure/iot-identity-service?branch=main#07597261e30832b3f7d8f54589f369823838e992" +source = "git+https://github.com/arsing/iot-identity-service?branch=rustup#cc0379190fa9b6d5744d9b6c3bf0ae6e8ab1bac5" dependencies = [ "serde", "toml", ] [[package]] -name = "core-foundation-sys" -version = "0.8.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e496a50fda8aacccc86d7529e2c1e0892dbd0f898a6b5645b5561b89c3210efa" - -[[package]] -name = "cpufeatures" -version = "0.2.9" +name = "const-oid" +version = "0.10.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a17b76ff3a4162b0b27f354a0c87015ddad39d35f9c0c36607a3bdd175dde1f1" -dependencies = [ - "libc", -] +checksum = "a6ef517f0926dd24a1582492c791b6a4818a4d94e789a334894aa15b0d12f55c" [[package]] -name = "crc32fast" -version = "1.3.2" +name = "core-foundation-sys" +version = "0.8.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b540bd8bc810d3885c6ea91e2018302f68baba2129ab3e88f32389ee9370880d" -dependencies = [ - "cfg-if 1.0.0", -] +checksum = "773648b94d0e5d620f64f280777445740e61fe701025087ec8b57f45c791888b" [[package]] -name = "crossbeam-channel" -version = "0.5.8" +name = "cpufeatures" +version = "0.2.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a33c2bf77f2df06183c3aa30d1e96c0695a313d4f9c453cc3762a6db39f99200" +checksum = "59ed5838eebb26a2bb2e58f6d5b5316989ae9d08bab10e0e6d103e656d1b0280" dependencies = [ - "cfg-if 1.0.0", - "crossbeam-utils", + "libc", ] [[package]] -name = "crossbeam-deque" -version = "0.8.3" +name = "cpufeatures" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ce6fd6f855243022dcecf8702fef0c297d4338e226845fe067f6341ad9fa0cef" +checksum = "8b2a41393f66f16b0823bb79094d54ac5fbd34ab292ddafb9a0456ac9f87d201" dependencies = [ - "cfg-if 1.0.0", - "crossbeam-epoch", - "crossbeam-utils", + "libc", ] [[package]] -name = "crossbeam-epoch" -version = "0.9.15" +name = "crc32fast" +version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ae211234986c545741a7dc064309f67ee1e5ad243d0e48335adc0484d960bcc7" +checksum = "9481c1c90cbf2ac953f07c8d4a58aa3945c425b7185c9154d67a65e4230da511" dependencies = [ - "autocfg", - "cfg-if 1.0.0", - "crossbeam-utils", - "memoffset 0.9.0", - "scopeguard", + "cfg-if 1.0.4", ] [[package]] -name = "crossbeam-utils" -version = "0.8.16" +name = "crypto-common" +version = "0.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5a22b2d63d4d1dc0b7f1b6b2747dd0088008a9be28b6ddf0b1e7d335e3037294" +checksum = "78c8292055d1c1df0cce5d180393dc8cce0abec0a7102adb6c7b1eef6016d60a" dependencies = [ - "cfg-if 1.0.0", + "generic-array", + "typenum", ] [[package]] name = "crypto-common" -version = "0.1.6" +version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3" +checksum = "77727bb15fa921304124b128af125e7e3b968275d1b108b379190264f4423710" dependencies = [ - "generic-array", - "typenum", + "hybrid-array", ] [[package]] name = "darling" -version = "0.20.3" +version = "0.23.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0209d94da627ab5605dcccf08bb18afa5009cfbef48d8a8b7d7bdbc79be25c5e" +checksum = "25ae13da2f202d56bd7f91c25fba009e7717a1e4a1cc98a76d844b65ae912e9d" dependencies = [ "darling_core", "darling_macro", @@ -638,59 +678,78 @@ dependencies = [ [[package]] name = "darling_core" -version = "0.20.3" +version = "0.23.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "177e3443818124b357d8e76f53be906d60937f0d3a90773a664fa63fa253e621" +checksum = "9865a50f7c335f53564bb694ef660825eb8610e0a53d3e11bf1b0d3df31e03b0" dependencies = [ - "fnv", "ident_case", "proc-macro2", "quote", "strsim", - "syn 2.0.28", + "syn 2.0.117", ] [[package]] name = "darling_macro" -version = "0.20.3" +version = "0.23.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "836a9bbc7ad63342d6d6e7b815ccab164bc77a2d95d84bc3117a8c0d5c98e2d5" +checksum = "ac3984ec7bd6cfa798e62b4a642426a5be0e68f9401cfc2a01e3fa9ea2fcdb8d" dependencies = [ "darling_core", "quote", - "syn 2.0.28", + "syn 2.0.117", ] [[package]] -name = "dashmap" -version = "5.5.0" +name = "deranged" +version = "0.5.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6943ae99c34386c84a470c499d3414f66502a41340aa895406e0d2e4a207b91d" +checksum = "7cd812cc2bc1d69d4764bd80df88b4317eaef9e773c75226407d9bc0876b211c" dependencies = [ - "cfg-if 1.0.0", - "hashbrown 0.14.0", - "lock_api", - "once_cell", - "parking_lot_core", + "powerfmt", + "serde_core", ] [[package]] -name = "deranged" -version = "0.3.7" +name = "digest" +version = "0.10.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7684a49fb1af197853ef7b2ee694bc1f5b4179556f1e5710e1760c5db6f5e929" +checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292" dependencies = [ - "serde", + "block-buffer 0.10.4", + "crypto-common 0.1.7", ] [[package]] name = "digest" -version = "0.10.7" +version = "0.11.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292" +checksum = "f1dd6dbb5841937940781866fa1281a1ff7bd3bf827091440879f9994983d5c2" +dependencies = [ + "block-buffer 0.12.0", + "const-oid", + "crypto-common 0.2.1", +] + +[[package]] +name = "dispatch2" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e0e367e4e7da84520dedcac1901e4da967309406d1e51017ae1abfb97adbd38" +dependencies = [ + "bitflags", + "objc2", +] + +[[package]] +name = "displaydoc" +version = "0.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0" dependencies = [ - "block-buffer", - "crypto-common", + "proc-macro2", + "quote", + "syn 2.0.117", ] [[package]] @@ -698,15 +757,23 @@ name = "docker" version = "0.1.0" dependencies = [ "anyhow", + "bytes", "edgelet-test-utils", + "http-body-util", "hyper", + "hyper-util", "serde", - "serde_derive", "serde_json", "tokio", "url", ] +[[package]] +name = "dyn-clone" +version = "1.0.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d0881ea181b1df73ff77ffaaf9c7544ecc11e82fba9b5f27b262a3c73a332555" + [[package]] name = "edgelet-core" version = "0.1.0" @@ -718,7 +785,6 @@ dependencies = [ "edgelet-settings", "humantime", "hyper", - "lazy_static", "log", "nix", "num_cpus", @@ -735,16 +801,17 @@ version = "0.1.0" dependencies = [ "anyhow", "async-trait", - "base64 0.21.2", + "base64", "chrono", "docker", "edgelet-core", "edgelet-settings", "edgelet-utils", - "futures", + "futures-util", "hex", "http-common", "hyper", + "hyper-util", "log", "nix", "serde", @@ -790,6 +857,7 @@ dependencies = [ "edgelet-test-utils", "futures-util", "http", + "http-body-util", "http-common", "hyper", "libc", @@ -821,15 +889,16 @@ dependencies = [ "aziot-key-common", "aziot-key-common-http", "aziot-key-openssl-engine", - "base64 0.21.2", + "base64", + "bytes", "cert-renewal", "chrono", "edgelet-core", "edgelet-http", "edgelet-settings", "edgelet-test-utils", - "futures-util", "http", + "http-body-util", "http-common", "hyper", "libc", @@ -871,7 +940,6 @@ dependencies = [ "docker", "http-common", "humantime-serde", - "lazy_static", "serde", "serde_json", "test-case", @@ -890,9 +958,11 @@ dependencies = [ "edgelet-settings", "http", "hyper", + "hyper-util", "nix", "serde", "tokio", + "tower-service", ] [[package]] @@ -901,81 +971,81 @@ version = "0.1.0" dependencies = [ "config", "serde", - "serde_derive", "thiserror", "yaml-rust", ] [[package]] -name = "either" -version = "1.9.0" +name = "env_filter" +version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a26ae43d7bcc3b814de94796a5e736d4029efb0ee900c12e2d54c993ad1a1e07" +checksum = "32e90c2accc4b07a8456ea0debdc2e7587bdd890680d71173a15d4ae604f6eef" +dependencies = [ + "log", + "regex", +] [[package]] name = "env_logger" -version = "0.10.0" +version = "0.11.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "85cdab6a89accf66733ad5a1693a4dcced6aeff64602b634530dd73c1f3ee9f0" +checksum = "0621c04f2196ac3f488dd583365b9c09be011a4ab8b9f37248ffcc8f6198b56a" dependencies = [ - "humantime", - "is-terminal", + "anstream", + "anstyle", + "env_filter", + "jiff", "log", - "regex", - "termcolor", ] [[package]] name = "equivalent" -version = "1.0.1" +version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5" +checksum = "877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f" [[package]] name = "erased-serde" -version = "0.3.28" +version = "0.4.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "da96524cc884f6558f1769b6c46686af2fe8e8b4cd253bd5a3cdba8181b8e070" +checksum = "d2add8a07dd6a8d93ff627029c51de145e12686fbc36ecb298ac22e74cf02dec" dependencies = [ "serde", + "serde_core", + "typeid", ] [[package]] name = "errno" -version = "0.3.2" +version = "0.3.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6b30f669a7961ef1631673d2766cc92f52d64f7ef354d4fe0ddfd30ed52f0f4f" +checksum = "39cab71617ae0d63f51a36d69f866391735b51691dbda63cf6f96d042b63efeb" dependencies = [ - "errno-dragonfly", "libc", "windows-sys", ] [[package]] -name = "errno-dragonfly" -version = "0.1.2" +name = "find-msvc-tools" +version = "0.1.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aa68f1b12764fab894d2755d2518754e71b4fd80ecfb822714a1206c2aab39bf" -dependencies = [ - "cc", - "libc", -] +checksum = "5baebc0774151f905a1a2cc41989300b1e6fbb29aff0ceffa1064fdd3088d582" [[package]] name = "flate2" -version = "1.0.27" +version = "1.1.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c6c98ee8095e9d1dcbf2fcc6d95acccb90d1c81db1e44725c6a984b1dbdfb010" +checksum = "843fba2746e448b37e26a819579957415c8cef339bf08564fe8b7ddbd959573c" dependencies = [ - "crc32fast", "miniz_oxide", + "zlib-rs", ] [[package]] -name = "fnv" -version = "1.0.7" +name = "foldhash" +version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" +checksum = "d9c4f5dac5e15c24eb999c26181a6ca40b39fe946cbe4c263c7209467bc83af2" [[package]] name = "foreign-types" @@ -994,99 +1064,72 @@ checksum = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b" [[package]] name = "form_urlencoded" -version = "1.2.0" +version = "1.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a62bc1cf6f830c2ec14a513a9fb124d0a213a629668a4186f329db21fe045652" +checksum = "cb4cb245038516f5f85277875cdaa4f7d2c9a0fa0468de06ed190163b1581fcf" dependencies = [ "percent-encoding", ] [[package]] -name = "futures" -version = "0.3.28" +name = "funty" +version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "23342abe12aba583913b2e62f22225ff9c950774065e4bfb61a19cd9770fec40" -dependencies = [ - "futures-channel", - "futures-core", - "futures-executor", - "futures-io", - "futures-sink", - "futures-task", - "futures-util", -] +checksum = "e6d5a32815ae3f33302d95fdcb2ce17862f8c65363dcfd29360480ba1001fc9c" [[package]] name = "futures-channel" -version = "0.3.28" +version = "0.3.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "955518d47e09b25bbebc7a18df10b81f0c766eaf4c4f1cccef2fca5f2a4fb5f2" +checksum = "07bbe89c50d7a535e539b8c17bc0b49bdb77747034daa8087407d655f3f7cc1d" dependencies = [ "futures-core", - "futures-sink", ] [[package]] name = "futures-core" -version = "0.3.28" +version = "0.3.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4bca583b7e26f571124fe5b7561d49cb2868d79116cfa0eefce955557c6fee8c" +checksum = "7e3450815272ef58cec6d564423f6e755e25379b217b0bc688e295ba24df6b1d" [[package]] name = "futures-executor" -version = "0.3.28" +version = "0.3.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ccecee823288125bd88b4d7f565c9e58e41858e47ab72e8ea2d64e93624386e0" +checksum = "baf29c38818342a3b26b5b923639e7b1f4a61fc5e76102d4b1981c6dc7a7579d" dependencies = [ "futures-core", "futures-task", "futures-util", ] -[[package]] -name = "futures-io" -version = "0.3.28" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4fff74096e71ed47f8e023204cfd0aa1289cd54ae5430a9523be060cdb849964" - [[package]] name = "futures-macro" -version = "0.3.28" +version = "0.3.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "89ca545a94061b6365f2c7355b4b32bd20df3ff95f02da9329b34ccc3bd6ee72" +checksum = "e835b70203e41293343137df5c0664546da5745f82ec9b84d40be8336958447b" dependencies = [ "proc-macro2", "quote", - "syn 2.0.28", + "syn 2.0.117", ] -[[package]] -name = "futures-sink" -version = "0.3.28" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f43be4fe21a13b9781a69afa4985b0f6ee0e1afab2c6f454a8cf30e2b2237b6e" - [[package]] name = "futures-task" -version = "0.3.28" +version = "0.3.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "76d3d132be6c0e6aa1534069c705a74a5997a356c0dc2f86a47765e5617c5b65" +checksum = "037711b3d59c33004d3856fbdc83b99d4ff37a24768fa1be9ce3538a1cde4393" [[package]] name = "futures-util" -version = "0.3.28" +version = "0.3.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26b01e40b772d54cf6c6d721c1d1abd0647a0106a12ecaa1c186273392a69533" +checksum = "389ca41296e6190b48053de0321d02a77f32f8a5d2461dd38762c0593805c6d6" dependencies = [ - "futures-channel", "futures-core", - "futures-io", "futures-macro", - "futures-sink", "futures-task", - "memchr", "pin-project-lite", - "pin-utils", "slab", ] @@ -1102,41 +1145,60 @@ dependencies = [ [[package]] name = "getrandom" -version = "0.2.10" +version = "0.2.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "be4136b2a15dd319360be1c07d9933517ccf0be8f16bf62a3bee4f0d618df427" +checksum = "ff2abc00be7fca6ebc474524697ae276ad847ad0a6b3faa4bcb027e9a4614ad0" dependencies = [ - "cfg-if 1.0.0", + "cfg-if 1.0.4", "libc", - "wasi 0.11.0+wasi-snapshot-preview1", + "wasi", ] [[package]] -name = "gimli" -version = "0.27.3" +name = "getrandom" +version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b6c80984affa11d98d1b88b66ac8853f143217b399d3c74116778ff8fdb4ed2e" +checksum = "0de51e6874e94e7bf76d726fc5d13ba782deca734ff60d5bb2fb2607c7406555" +dependencies = [ + "cfg-if 1.0.4", + "libc", + "r-efi", + "rand_core 0.10.1", + "wasip2", + "wasip3", +] [[package]] name = "hashbrown" version = "0.12.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888" +dependencies = [ + "ahash", +] + +[[package]] +name = "hashbrown" +version = "0.15.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9229cfe53dfd69f0609a49f65461bd93001ea1ef889cd5529dd176593f5338a1" +dependencies = [ + "foldhash", +] [[package]] name = "hashbrown" -version = "0.14.0" +version = "0.17.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2c6201b9ff9fd90a5a3bac2e56a830d0caa509576f0e503818ee82c181b3437a" +checksum = "ed5909b6e89a2db4456e54cd5f673791d7eca6732202bbf2a9cc504fe2f9b84a" [[package]] name = "headers" -version = "0.3.8" +version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f3e372db8e5c0d213e0cd0b9be18be2aca3d44cf2fe30a9d46a65581cd454584" +checksum = "b3314d5adb5d94bcdf56771f2e50dbbc80bb4bdf88967526706205ac9eff24eb" dependencies = [ - "base64 0.13.1", - "bitflags 1.3.2", + "base64", "bytes", "headers-core", "http", @@ -1147,13 +1209,19 @@ dependencies = [ [[package]] name = "headers-core" -version = "0.2.0" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e7f66481bfee273957b1f20485a4ff3362987f85b2c236580d81b4eb7a326429" +checksum = "54b4a22553d4242c49fddb9ba998a99962b5cc6f22cb5a3482bec22522403ce4" dependencies = [ "http", ] +[[package]] +name = "heck" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea" + [[package]] name = "hermit-abi" version = "0.1.19" @@ -1165,9 +1233,9 @@ dependencies = [ [[package]] name = "hermit-abi" -version = "0.3.2" +version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "443144c8cdadd93ebf52ddb4056d257f5b52c04d3c804e657d19eb73fc33668b" +checksum = "fc0fef456e4baa96da950455cd02c081ca953b141298e41db3fc7e36b1da849c" [[package]] name = "hex" @@ -1177,58 +1245,73 @@ checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70" [[package]] name = "http" -version = "0.2.9" +version = "1.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bd6effc99afb63425aff9b05836f029929e345a6148a14b7ecd5ab67af944482" +checksum = "e3ba2a386d7f85a81f119ad7498ebe444d2e22c2af0b86b069416ace48b3311a" dependencies = [ "bytes", - "fnv", "itoa", ] [[package]] name = "http-body" -version = "0.4.5" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1efedce1fb8e6913f23e0c92de8e62cd5b772a67e7b3946df930a62566c93184" +dependencies = [ + "bytes", + "http", +] + +[[package]] +name = "http-body-util" +version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d5f38f16d184e36f2408a55281cd658ecbd3ca05cce6d6510a176eca393e26d1" +checksum = "b021d93e26becf5dc7e1b75b1bed1fd93124b374ceb73f43d4d4eafec896a64a" dependencies = [ "bytes", + "futures-core", "http", + "http-body", "pin-project-lite", ] [[package]] name = "http-common" version = "0.1.0" -source = "git+https://github.com/Azure/iot-identity-service?branch=main#07597261e30832b3f7d8f54589f369823838e992" +source = "git+https://github.com/arsing/iot-identity-service?branch=rustup#cc0379190fa9b6d5744d9b6c3bf0ae6e8ab1bac5" dependencies = [ "async-trait", - "base64 0.21.2", + "base64", + "bytes", "futures-util", "headers", "http", + "http-body", + "http-body-util", "hyper", "hyper-openssl", - "hyper-proxy", + "hyper-proxy2", + "hyper-util", "libc", "log", "nix", "openssl", "openssl-sys", "percent-encoding", - "rand", + "rand 0.10.1", "serde", "serde_json", "tokio", - "tracing", + "tower-service", "url", ] [[package]] name = "httparse" -version = "1.8.0" +version = "1.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d897f394bad6a705d5f4104762e116a75639e470d80901eed05a860a95cb1904" +checksum = "6dbf3de79e51f3d586ab4cb9d5c3e2c14aa28ed23d180cf89b4df0454a69cc87" [[package]] name = "httpdate" @@ -1238,9 +1321,9 @@ checksum = "df3b46402a9d5adb4c86a0cf463f42e19994e3ee891101b1841f30a545cb49a9" [[package]] name = "humantime" -version = "2.1.0" +version = "2.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9a3a5bfb195931eeb336b2a7b4d761daec841b97f947d34394601737a7bba5e4" +checksum = "135b12329e5e3ce057a9f972339ea52bc954fe1e9358ef27f95e89716fbc5424" [[package]] name = "humantime-serde" @@ -1252,76 +1335,107 @@ dependencies = [ "serde", ] +[[package]] +name = "hybrid-array" +version = "0.4.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9155a582abd142abc056962c29e3ce5ff2ad5469f4246b537ed42c5deba857da" +dependencies = [ + "typenum", +] + [[package]] name = "hyper" -version = "0.14.27" +version = "1.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ffb1cfd654a8219eaef89881fdb3bb3b1cdc5fa75ded05d6933b2b382e395468" +checksum = "6299f016b246a94207e63da54dbe807655bf9e00044f73ded42c3ac5305fbcca" dependencies = [ + "atomic-waker", "bytes", "futures-channel", "futures-core", - "futures-util", "http", "http-body", "httparse", "httpdate", "itoa", "pin-project-lite", - "socket2 0.4.9", + "smallvec", "tokio", - "tower-service", - "tracing", "want", ] [[package]] name = "hyper-openssl" -version = "0.9.2" +version = "0.10.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d6ee5d7a8f718585d1c3c61dfde28ef5b0bb14734b4db13f5ada856cdc6c612b" +checksum = "527d4d619ca2c2aafa31ec139a3d1d60bf557bf7578a1f20f743637eccd9ca19" dependencies = [ "http", "hyper", + "hyper-util", "linked_hash_set", "once_cell", "openssl", "openssl-sys", "parking_lot", - "tokio", - "tokio-openssl", + "pin-project", "tower-layer", + "tower-service", ] [[package]] -name = "hyper-proxy" -version = "0.9.1" +name = "hyper-proxy2" +version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ca815a891b24fdfb243fa3239c86154392b0953ee584aa1a2a1f66d20cbe75cc" +checksum = "9043b7b23fb0bc4a1c7014c27b50a4fc42cc76206f71d34fc0dfe5b28ddc3faf" dependencies = [ "bytes", - "futures", + "futures-util", "headers", "http", "hyper", + "hyper-util", "openssl", + "pin-project-lite", "tokio", "tokio-openssl", "tower-service", ] +[[package]] +name = "hyper-util" +version = "0.1.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "96547c2556ec9d12fb1578c4eaf448b04993e7fb79cbaad930a656880a6bdfa0" +dependencies = [ + "bytes", + "futures-channel", + "futures-util", + "http", + "http-body", + "hyper", + "libc", + "pin-project-lite", + "socket2", + "tokio", + "tower-service", + "tracing", +] + [[package]] name = "iana-time-zone" -version = "0.1.57" +version = "0.1.65" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2fad5b825842d2b38bd206f3e81d6957625fd7f0a361e345c30e01a0ae2dd613" +checksum = "e31bc9ad994ba00e440a8aa5c9ef0ec67d5cb5e5cb0cc7f8b744a35b389cc470" dependencies = [ "android_system_properties", "core-foundation-sys", "iana-time-zone-haiku", "js-sys", + "log", "wasm-bindgen", - "windows", + "windows-core", ] [[package]] @@ -1333,6 +1447,94 @@ dependencies = [ "cc", ] +[[package]] +name = "icu_collections" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2984d1cd16c883d7935b9e07e44071dca8d917fd52ecc02c04d5fa0b5a3f191c" +dependencies = [ + "displaydoc", + "potential_utf", + "utf8_iter", + "yoke", + "zerofrom", + "zerovec", +] + +[[package]] +name = "icu_locale_core" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "92219b62b3e2b4d88ac5119f8904c10f8f61bf7e95b640d25ba3075e6cac2c29" +dependencies = [ + "displaydoc", + "litemap", + "tinystr", + "writeable", + "zerovec", +] + +[[package]] +name = "icu_normalizer" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c56e5ee99d6e3d33bd91c5d85458b6005a22140021cc324cea84dd0e72cff3b4" +dependencies = [ + "icu_collections", + "icu_normalizer_data", + "icu_properties", + "icu_provider", + "smallvec", + "zerovec", +] + +[[package]] +name = "icu_normalizer_data" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "da3be0ae77ea334f4da67c12f149704f19f81d1adf7c51cf482943e84a2bad38" + +[[package]] +name = "icu_properties" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bee3b67d0ea5c2cca5003417989af8996f8604e34fb9ddf96208a033901e70de" +dependencies = [ + "icu_collections", + "icu_locale_core", + "icu_properties_data", + "icu_provider", + "zerotrie", + "zerovec", +] + +[[package]] +name = "icu_properties_data" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e2bbb201e0c04f7b4b3e14382af113e17ba4f63e2c9d2ee626b720cbce54a14" + +[[package]] +name = "icu_provider" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "139c4cf31c8b5f33d7e199446eff9c1e02decfc2f0eec2c8d71f65befa45b421" +dependencies = [ + "displaydoc", + "icu_locale_core", + "writeable", + "yoke", + "zerofrom", + "zerotrie", + "zerovec", +] + +[[package]] +name = "id-arena" +version = "2.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3d3067d79b975e8844ca9eb072e16b31c3c1c36928edf9c6789548c524d0d954" + [[package]] name = "ident_case" version = "1.0.1" @@ -1341,12 +1543,23 @@ checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39" [[package]] name = "idna" -version = "0.4.0" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3b0875f23caa03898994f6ddc501886a45c7d3d62d04d2d90788d47be1b1e4de" +dependencies = [ + "idna_adapter", + "smallvec", + "utf8_iter", +] + +[[package]] +name = "idna_adapter" +version = "1.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7d20d6b07bfbc108882d88ed8e37d39636dcc260e15e30c45e6ba089610b917c" +checksum = "cb68373c0d6620ef8105e855e7745e18b0d00d3bdb07fb532e434244cdb9a714" dependencies = [ - "unicode-bidi", - "unicode-normalization", + "icu_normalizer", + "icu_properties", ] [[package]] @@ -1362,12 +1575,14 @@ dependencies = [ [[package]] name = "indexmap" -version = "2.0.0" +version = "2.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d5477fe2230a79769d8dc68e0eabf5437907c0457a5614a9e8dddb67f65eb65d" +checksum = "d466e9454f08e4a911e14806c24e16fba1b4c121d1ea474396f396069cf949d9" dependencies = [ "equivalent", - "hashbrown 0.14.0", + "hashbrown 0.17.1", + "serde", + "serde_core", ] [[package]] @@ -1384,9 +1599,8 @@ dependencies = [ "aziot-identityd-config", "aziot-keyd-config", "aziot-keys-common", - "aziot-tpmd-config", "aziotctl-common", - "base64 0.21.2", + "base64", "byte-unit", "bytes", "cert-renewal", @@ -1394,7 +1608,6 @@ dependencies = [ "chrono-humanize", "clap", "config", - "config-common", "docker", "edgelet-core", "edgelet-http", @@ -1402,10 +1615,10 @@ dependencies = [ "edgelet-utils", "erased-serde", "hex", + "http-body-util", "http-common", "hyper", - "lazy_static", - "libc", + "hyper-util", "log", "nix", "regex", @@ -1423,42 +1636,64 @@ dependencies = [ ] [[package]] -name = "is-terminal" -version = "0.4.9" +name = "is_terminal_polyfill" +version = "1.70.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a6cb138bb79a146c1bd460005623e142ef0181e3d0219cb493e02f7d08a35695" + +[[package]] +name = "itoa" +version = "1.0.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f42a60cbdf9a97f5d2305f08a87dc4e09308d1276d28c869c684d7777685682" + +[[package]] +name = "jiff" +version = "0.2.24" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cb0889898416213fab133e1d33a0e5858a48177452750691bde3666d0fdbaf8b" +checksum = "f00b5dbd620d61dfdcb6007c9c1f6054ebd75319f163d886a9055cec1155073d" dependencies = [ - "hermit-abi 0.3.2", - "rustix", - "windows-sys", + "jiff-static", + "log", + "portable-atomic", + "portable-atomic-util", + "serde_core", ] [[package]] -name = "itoa" -version = "1.0.9" +name = "jiff-static" +version = "0.2.24" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "af150ab688ff2122fcef229be89cb50dd66af9e01a4ff320cc137eecc9bacc38" +checksum = "e000de030ff8022ea1da3f466fbb0f3a809f5e51ed31f6dd931c35181ad8e6d7" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.117", +] [[package]] name = "js-sys" -version = "0.3.64" +version = "0.3.98" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c5f195fe497f702db0f318b07fdd68edb16955aed830df8363d837542f8f935a" +checksum = "67df7112613f8bfd9150013a0314e196f4800d3201ae742489d999db2f979f08" dependencies = [ + "cfg-if 1.0.4", + "futures-util", + "once_cell", "wasm-bindgen", ] [[package]] -name = "lazy_static" -version = "1.4.0" +name = "leb128fmt" +version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" +checksum = "09edd9e8b54e49e587e4f6295a7d29c3ea94d469cb40ab8ca70b288248a81db2" [[package]] name = "libc" -version = "0.2.153" +version = "0.2.186" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c198f91728a82281a64e1f4f9eeb25d82cb32a5de251c6bd1b5154d63a8e7bd" +checksum = "68ab91017fe16c622486840e4c83c9a37afeff978bd239b5293d61ece587de66" [[package]] name = "linked-hash-map" @@ -1468,39 +1703,38 @@ checksum = "0717cef1bc8b636c6e1c1bbdefc09e6322da8a9321966e8928ef80d20f7f770f" [[package]] name = "linked_hash_set" -version = "0.1.4" +version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "47186c6da4d81ca383c7c47c1bfc80f4b95f4720514d860a5407aaf4233f9588" +checksum = "984fb35d06508d1e69fc91050cceba9c0b748f983e6739fa2c7a9237154c52c8" dependencies = [ "linked-hash-map", ] [[package]] -name = "linux-raw-sys" -version = "0.4.5" +name = "litemap" +version = "0.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "57bcfdad1b858c2db7c38303a6d2ad4dfaf5eb53dfeb0910128b2c26d6158503" +checksum = "92daf443525c4cce67b150400bc2316076100ce0b3686209eb8cf3c31612e6f0" [[package]] name = "lock_api" -version = "0.4.10" +version = "0.4.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c1cc9717a20b1bb222f333e6a92fd32f7d8a18ddc5a3191a11af45dcbf4dcd16" +checksum = "224399e74b87b5f3557511d98dff8b14089b3dadafcab6bb93eab67d3aace965" dependencies = [ - "autocfg", "scopeguard", ] [[package]] name = "log" -version = "0.4.20" +version = "0.4.29" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b5e6163cb8c49088c2c36f57875e58ccd8c87c7427f7fbd50ea6710b2f3f2e8f" +checksum = "5e5032e24019045c762d3c0f28f5b6b8bbf38563a65908389bf7978758920897" [[package]] name = "logger" version = "0.1.0" -source = "git+https://github.com/Azure/iot-identity-service?branch=main#07597261e30832b3f7d8f54589f369823838e992" +source = "git+https://github.com/arsing/iot-identity-service?branch=rustup#cc0379190fa9b6d5744d9b6c3bf0ae6e8ab1bac5" dependencies = [ "env_logger", "log", @@ -1508,24 +1742,15 @@ dependencies = [ [[package]] name = "memchr" -version = "2.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2dffe52ecf27772e601905b7522cb4ef790d2cc203488bbd0e2fe85fcb74566d" - -[[package]] -name = "memoffset" -version = "0.7.1" +version = "2.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5de893c32cde5f383baa4c04c5d6dbdd735cfd4a794b0debdb2bb1b421da5ff4" -dependencies = [ - "autocfg", -] +checksum = "f8ca58f447f06ed17d5fc4043ce1b10dd205e060fb3ce5b979b8ed8e59ff3f79" [[package]] name = "memoffset" -version = "0.9.0" +version = "0.9.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5a634b1c61a95585bd15607c6ab0c4e5b226e695ff2800ba0cdccddf208c406c" +checksum = "488016bfae457b036d996092f6cb448677611ce4449e970ceaf42695203f218a" dependencies = [ "autocfg", ] @@ -1536,110 +1761,153 @@ version = "0.3.17" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a" -[[package]] -name = "minimal-lexical" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a" - [[package]] name = "miniz_oxide" -version = "0.7.1" +version = "0.8.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e7810e0be55b428ada41041c41f32c9f1a42817901b4ccf45fa3d4b6561e74c7" +checksum = "1fa76a2c86f704bdb222d66965fb3d63269ce38518b83cb0575fca855ebb6316" dependencies = [ - "adler", + "adler2", + "simd-adler32", ] [[package]] name = "mio" -version = "0.8.11" +version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a4a650543ca06a924e8b371db273b2756685faae30f8487da1b56505a8f78b0c" +checksum = "50b7e5b27aa02a74bac8c3f23f448f8d87ff11f92d3aac1a6ed369ee08cc56c1" dependencies = [ "libc", - "wasi 0.11.0+wasi-snapshot-preview1", + "wasi", "windows-sys", ] [[package]] name = "nix" -version = "0.26.2" +version = "0.31.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bfdda3d196821d6af13126e40375cdf7da646a96114af134d5f417a9a1dc8e1a" +checksum = "cf20d2fde8ff38632c426f1165ed7436270b44f199fc55284c38276f9db47c3d" dependencies = [ - "bitflags 1.3.2", - "cfg-if 1.0.0", + "bitflags", + "cfg-if 1.0.4", + "cfg_aliases", "libc", - "memoffset 0.7.1", - "pin-utils", - "static_assertions", + "memoffset", ] [[package]] -name = "nom" -version = "7.1.3" +name = "ntapi" +version = "0.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d273983c5a657a70a3e8f2a01329822f3b8c8172b73826411a55751e404a0a4a" +checksum = "c3b335231dfd352ffb0f8017f3b6027a4917f7df785ea2143d8af2adc66980ae" dependencies = [ - "memchr", - "minimal-lexical", + "winapi", ] [[package]] -name = "ntapi" -version = "0.4.1" +name = "num-conv" +version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e8a3895c6391c39d7fe7ebc444a87eb2991b2a0bc718fdabd071eec617fc68e4" -dependencies = [ - "winapi", -] +checksum = "c6673768db2d862beb9b39a78fdcb1a69439615d5794a1be50caa9bc92c81967" [[package]] name = "num-traits" -version = "0.2.16" +version = "0.2.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f30b0abd723be7e2ffca1272140fac1a2f084c77ec3e123c192b66af1ee9e6c2" +checksum = "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841" dependencies = [ "autocfg", ] [[package]] name = "num_cpus" -version = "1.16.0" +version = "1.17.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4161fcb6d602d4d2081af7c3a45852d875a03dd337a6bfdd6e06407b61342a43" +checksum = "91df4bbde75afed763b708b7eee1e8e7651e02d97f6d5dd763e89367e957b23b" dependencies = [ - "hermit-abi 0.3.2", + "hermit-abi 0.5.2", "libc", ] [[package]] -name = "object" -version = "0.31.1" +name = "objc2" +version = "0.6.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8bda667d9f2b5051b8833f59f3bf748b28ef54f850f4fcb389a252aa383866d1" +checksum = "3a12a8ed07aefc768292f076dc3ac8c48f3781c8f2d5851dd3d98950e8c5a89f" dependencies = [ - "memchr", + "objc2-encode", +] + +[[package]] +name = "objc2-core-foundation" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2a180dd8642fa45cdb7dd721cd4c11b1cadd4929ce112ebd8b9f5803cc79d536" +dependencies = [ + "bitflags", + "dispatch2", + "objc2", +] + +[[package]] +name = "objc2-encode" +version = "4.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ef25abbcd74fb2609453eb695bd2f860d389e457f67dc17cafc8b8cbc89d0c33" + +[[package]] +name = "objc2-foundation" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e3e0adef53c21f888deb4fa59fc59f7eb17404926ee8a6f59f5df0fd7f9f3272" +dependencies = [ + "bitflags", + "objc2", +] + +[[package]] +name = "objc2-io-kit" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "33fafba39597d6dc1fb709123dfa8289d39406734be322956a69f0931c73bb15" +dependencies = [ + "libc", + "objc2-core-foundation", +] + +[[package]] +name = "objc2-open-directory" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bb82bed227edf5201dfedf072bba4015a33d3d4a98519837295a90f0a23f676d" +dependencies = [ + "objc2", + "objc2-core-foundation", + "objc2-foundation", ] [[package]] name = "once_cell" -version = "1.18.0" +version = "1.21.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9f7c3e4beb33f85d45ae3e3a1792185706c8e16d043238c593331cc7cd313b50" + +[[package]] +name = "once_cell_polyfill" +version = "1.70.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dd8b5dd2ae5ed71462c540258bedcb51965123ad7e7ccf4b9a8cafaa4a63576d" +checksum = "384b8ab6d37215f3c5301a95a4accb5d64aa607f1fcb26a11b5303878451b4fe" [[package]] name = "openssl" -version = "0.10.56" +version = "0.10.79" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "729b745ad4a5575dd06a3e1af1414bd330ee561c01b3899eb584baeaa8def17e" +checksum = "bf0b434746ee2832f4f0baf10137e1cabb18cbe6912c69e2e33263c45250f542" dependencies = [ - "bitflags 1.3.2", - "cfg-if 1.0.0", + "bitflags", + "cfg-if 1.0.4", "foreign-types", "libc", - "once_cell", "openssl-macros", "openssl-sys", ] @@ -1647,7 +1915,7 @@ dependencies = [ [[package]] name = "openssl-build" version = "0.1.0" -source = "git+https://github.com/Azure/iot-identity-service?branch=main#07597261e30832b3f7d8f54589f369823838e992" +source = "git+https://github.com/arsing/iot-identity-service?branch=rustup#cc0379190fa9b6d5744d9b6c3bf0ae6e8ab1bac5" dependencies = [ "cc", ] @@ -1671,14 +1939,14 @@ checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c" dependencies = [ "proc-macro2", "quote", - "syn 2.0.28", + "syn 2.0.117", ] [[package]] name = "openssl-sys" -version = "0.9.91" +version = "0.9.115" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "866b5f16f90776b9bb8dc1e1802ac6f0513de3a7a7465867bfbc563dc737faac" +checksum = "158fe5b292746440aa6e7a7e690e55aeb72d41505e2804c23c6973ad0e9c9781" dependencies = [ "cc", "libc", @@ -1689,7 +1957,7 @@ dependencies = [ [[package]] name = "openssl-sys2" version = "0.1.0" -source = "git+https://github.com/Azure/iot-identity-service?branch=main#07597261e30832b3f7d8f54589f369823838e992" +source = "git+https://github.com/arsing/iot-identity-service?branch=rustup#cc0379190fa9b6d5744d9b6c3bf0ae6e8ab1bac5" dependencies = [ "openssl-build", "openssl-sys", @@ -1698,7 +1966,7 @@ dependencies = [ [[package]] name = "openssl2" version = "0.1.0" -source = "git+https://github.com/Azure/iot-identity-service?branch=main#07597261e30832b3f7d8f54589f369823838e992" +source = "git+https://github.com/arsing/iot-identity-service?branch=rustup#cc0379190fa9b6d5744d9b6c3bf0ae6e8ab1bac5" dependencies = [ "foreign-types", "foreign-types-shared", @@ -1710,9 +1978,9 @@ dependencies = [ [[package]] name = "parking_lot" -version = "0.12.1" +version = "0.12.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3742b2c103b9f06bc9fff0a37ff4912935851bee6d36f3c02bcc755bcfec228f" +checksum = "93857453250e3077bd71ff98b6a65ea6621a19bb0f559a85248955ac12c45a1a" dependencies = [ "lock_api", "parking_lot_core", @@ -1720,48 +1988,61 @@ dependencies = [ [[package]] name = "parking_lot_core" -version = "0.9.8" +version = "0.9.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "93f00c865fe7cabf650081affecd3871070f26767e7b2070a3ffae14c654b447" +checksum = "2621685985a2ebf1c516881c026032ac7deafcda1a2c9b7850dc81e3dfcb64c1" dependencies = [ - "cfg-if 1.0.0", + "cfg-if 1.0.4", "libc", "redox_syscall", "smallvec", - "windows-targets", + "windows-link", ] [[package]] name = "pathdiff" -version = "0.2.1" +version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8835116a5c179084a830efb3adc117ab007512b535bc1a21c991d3b32a6b44dd" +checksum = "df94ce210e5bc13cb6651479fa48d14f601d9858cfe0467f43ae157023b938d3" [[package]] name = "percent-encoding" -version = "2.3.0" +version = "2.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9b2a4787296e9989611394c33f193f676704af1686e70b8f8033ab5ba9a35a94" +checksum = "9b4f627cb1b25917193a259e49bdad08f671f8d9708acfd5fe0a8c1455d87220" [[package]] -name = "pin-project-lite" -version = "0.2.12" +name = "pin-project" +version = "1.1.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "12cc1b0bf1727a77a54b6654e7b5f1af8604923edc8b81885f8ec92f9e3f0a05" +checksum = "cbf0d9e68100b3a7989b4901972f265cd542e560a3a8a724e1e20322f4d06ce9" +dependencies = [ + "pin-project-internal", +] [[package]] -name = "pin-utils" -version = "0.1.0" +name = "pin-project-internal" +version = "1.1.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a990e22f43e84855daf260dded30524ef4a9021cc7541c26540500a50b624389" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.117", +] + +[[package]] +name = "pin-project-lite" +version = "0.2.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" +checksum = "a89322df9ebe1c1578d689c92318e070967d1042b512afbe49518723f4e6d5cd" [[package]] name = "pkcs11" version = "0.1.0" -source = "git+https://github.com/Azure/iot-identity-service?branch=main#07597261e30832b3f7d8f54589f369823838e992" +source = "git+https://github.com/arsing/iot-identity-service?branch=rustup#cc0379190fa9b6d5744d9b6c3bf0ae6e8ab1bac5" dependencies = [ "foreign-types-shared", - "lazy_static", "libc", "openssl", "openssl-build", @@ -1775,71 +2056,142 @@ dependencies = [ [[package]] name = "pkcs11-sys" version = "0.1.0" -source = "git+https://github.com/Azure/iot-identity-service?branch=main#07597261e30832b3f7d8f54589f369823838e992" +source = "git+https://github.com/arsing/iot-identity-service?branch=rustup#cc0379190fa9b6d5744d9b6c3bf0ae6e8ab1bac5" [[package]] name = "pkg-config" -version = "0.3.27" +version = "0.3.33" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "19f132c84eca552bf34cab8ec81f1c1dcc229b811638f9d283dceabe58c5569e" + +[[package]] +name = "portable-atomic" +version = "1.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26072860ba924cbfa98ea39c8c19b4dd6a4a25423dbdf219c1eca91aa0cf6964" +checksum = "c33a9471896f1c69cecef8d20cbe2f7accd12527ce60845ff44c153bb2a21b49" + +[[package]] +name = "portable-atomic-util" +version = "0.2.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c2a106d1259c23fac8e543272398ae0e3c0b8d33c88ed73d0cc71b0f1d902618" +dependencies = [ + "portable-atomic", +] + +[[package]] +name = "potential_utf" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0103b1cef7ec0cf76490e969665504990193874ea05c85ff9bab8b911d0a0564" +dependencies = [ + "zerovec", +] + +[[package]] +name = "powerfmt" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "439ee305def115ba05938db6eb1644ff94165c5ab5e9420d1c1bcedbba909391" [[package]] name = "ppv-lite86" -version = "0.2.17" +version = "0.2.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6de" +checksum = "85eae3c4ed2f50dcfe72643da4befc30deadb458a9b590d720cde2f2b1e97da9" +dependencies = [ + "zerocopy", +] [[package]] -name = "proc-macro-error" -version = "1.0.4" +name = "prettyplease" +version = "0.2.37" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "da25490ff9892aab3fcf7c36f08cfb902dd3e71ca0f9f9517bea02a73a5ce38c" +checksum = "479ca8adacdd7ce8f1fb39ce9ecccbfe93a3f1344b3d0d97f20bc0196208f62b" dependencies = [ - "proc-macro-error-attr", "proc-macro2", - "quote", - "syn 1.0.109", - "version_check", + "syn 2.0.117", ] [[package]] -name = "proc-macro-error-attr" -version = "1.0.4" +name = "proc-macro-crate" +version = "3.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a1be40180e52ecc98ad80b184934baf3d0d29f979574e439af5a55274b35f869" +checksum = "e67ba7e9b2b56446f1d419b1d807906278ffa1a658a8a5d8a39dcb1f5a78614f" dependencies = [ - "proc-macro2", - "quote", - "version_check", + "toml_edit", ] [[package]] name = "proc-macro2" -version = "1.0.66" +version = "1.0.106" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "18fb31db3f9bddb2ea821cde30a9f70117e3f119938b5ee630b7403aa6e2ead9" +checksum = "8fd00f0bb2e90d81d1044c2b32617f68fcb9fa3bb7640c23e9c748e53fb30934" dependencies = [ "unicode-ident", ] +[[package]] +name = "ptr_meta" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0738ccf7ea06b608c10564b31debd4f5bc5e197fc8bfe088f68ae5ce81e7a4f1" +dependencies = [ + "ptr_meta_derive", +] + +[[package]] +name = "ptr_meta_derive" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "16b845dbfca988fa33db069c0e230574d15a3088f147a87b64c7589eb662c9ac" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + [[package]] name = "quote" -version = "1.0.32" +version = "1.0.45" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "50f3b39ccfb720540debaa0164757101c08ecb8d326b15358ce76a62c7e85965" +checksum = "41f2619966050689382d2b44f664f4bc593e129785a36d6ee376ddf37259b924" dependencies = [ "proc-macro2", ] +[[package]] +name = "r-efi" +version = "6.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f8dcc9c7d52a811697d2151c701e0d08956f92b0e24136cf4cf27b57a6a0d9bf" + +[[package]] +name = "radium" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc33ff2d4973d518d823d61aa239014831e521c75da58e3df4840d3f47749d09" + [[package]] name = "rand" -version = "0.8.5" +version = "0.8.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" +checksum = "5ca0ecfa931c29007047d1bc58e623ab12e5590e8c7cc53200d5202b69266d8a" dependencies = [ "libc", "rand_chacha", - "rand_core", + "rand_core 0.6.4", +] + +[[package]] +name = "rand" +version = "0.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d2e8e8bcc7961af1fdac401278c6a831614941f6164ee3bf4ce61b7edb162207" +dependencies = [ + "chacha20", + "getrandom 0.4.2", + "rand_core 0.10.1", ] [[package]] @@ -1849,7 +2201,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88" dependencies = [ "ppv-lite86", - "rand_core", + "rand_core 0.6.4", ] [[package]] @@ -1858,45 +2210,49 @@ version = "0.6.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" dependencies = [ - "getrandom", + "getrandom 0.2.17", ] [[package]] -name = "rayon" -version = "1.7.0" +name = "rand_core" +version = "0.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "63b8176103e19a2643978565ca18b50549f6101881c443590420e4dc998a3c69" + +[[package]] +name = "redox_syscall" +version = "0.5.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1d2df5196e37bcc87abebc0053e20787d73847bb33134a69841207dd0a47f03b" +checksum = "ed2bf2547551a7053d6fdfafda3f938979645c44812fbfcda098faae3f1a362d" dependencies = [ - "either", - "rayon-core", + "bitflags", ] [[package]] -name = "rayon-core" -version = "1.11.0" +name = "ref-cast" +version = "1.0.25" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4b8f95bd6966f5c87776639160a66bd8ab9895d9d4ab01ddba9fc60661aebe8d" +checksum = "f354300ae66f76f1c85c5f84693f0ce81d747e2c3f21a45fef496d89c960bf7d" dependencies = [ - "crossbeam-channel", - "crossbeam-deque", - "crossbeam-utils", - "num_cpus", + "ref-cast-impl", ] [[package]] -name = "redox_syscall" -version = "0.3.5" +name = "ref-cast-impl" +version = "1.0.25" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "567664f262709473930a4bf9e51bf2ebf3348f2e748ccc50dea20646858f8f29" +checksum = "b7186006dcb21920990093f30e3dea63b7d6e977bf1256be20c3563a5db070da" dependencies = [ - "bitflags 1.3.2", + "proc-macro2", + "quote", + "syn 2.0.117", ] [[package]] name = "regex" -version = "1.9.3" +version = "1.12.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "81bc1d4caf89fac26a70747fe603c130093b53c773888797a6329091246d651a" +checksum = "e10754a14b9137dd7b1e3e5b0493cc9171fdd105e0ab477f51b72e7f3ac0e276" dependencies = [ "aho-corasick", "memchr", @@ -1906,9 +2262,9 @@ dependencies = [ [[package]] name = "regex-automata" -version = "0.3.6" +version = "0.4.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fed1ceff11a1dddaee50c9dc8e4938bd106e9d89ae372f192311e7da498e3b69" +checksum = "6e1dd4122fc1595e8162618945476892eefca7b88c52820e74af6262213cae8f" dependencies = [ "aho-corasick", "memchr", @@ -1917,217 +2273,321 @@ dependencies = [ [[package]] name = "regex-syntax" -version = "0.7.4" +version = "0.8.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e5ea92a5b6195c6ef2a0295ea818b312502c6fc94dde986c5553242e18fd4ce2" +checksum = "dc897dd8d9e8bd1ed8cdad82b5966c3e0ecae09fb1907d58efaa013543185d0a" [[package]] -name = "rustc-demangle" -version = "0.1.23" +name = "rend" +version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d626bb9dae77e28219937af045c257c28bfd3f69333c512553507f5f9798cb76" +checksum = "71fe3824f5629716b1589be05dacd749f6aa084c87e00e016714a8cdfccc997c" +dependencies = [ + "bytecheck", +] [[package]] -name = "rustix" -version = "0.38.8" +name = "rkyv" +version = "0.7.46" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "19ed4fa021d81c8392ce04db050a3da9a60299050b7ae1cf482d862b54a7218f" +checksum = "2297bf9c81a3f0dc96bc9521370b88f054168c29826a75e89c55ff196e7ed6a1" dependencies = [ - "bitflags 2.4.0", - "errno", - "libc", - "linux-raw-sys", - "windows-sys", + "bitvec", + "bytecheck", + "bytes", + "hashbrown 0.12.3", + "ptr_meta", + "rend", + "rkyv_derive", + "seahash", + "tinyvec", + "uuid", ] [[package]] -name = "ryu" -version = "1.0.15" +name = "rkyv_derive" +version = "0.7.46" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1ad4cc8da4ef723ed60bced201181d83791ad433213d8c24efffda1eec85d741" +checksum = "84d7b42d4b8d06048d3ac8db0eb31bcb942cbeb709f0b5f2b2ebde398d3038f5" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] [[package]] -name = "scopeguard" -version = "1.2.0" +name = "rust_decimal" +version = "1.42.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0c5108e3d4d903e21aac27f12ba5377b6b34f9f44b325e4894c7924169d06995" +dependencies = [ + "arrayvec", + "borsh", + "bytes", + "num-traits", + "rand 0.8.6", + "rkyv", + "serde", + "serde_json", + "wasm-bindgen", +] + +[[package]] +name = "rustversion" +version = "1.0.22" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b39cdef0fa800fc44525c84ccb54a029961a8215f9619753635a9c0d2538d46d" + +[[package]] +name = "scc" +version = "2.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "46e6f046b7fef48e2660c57ed794263155d713de679057f2d0c169bfc6e756cc" +dependencies = [ + "sdd", +] + +[[package]] +name = "schemars" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4cd191f9397d57d581cddd31014772520aa448f65ef991055d7f61582c65165f" +dependencies = [ + "dyn-clone", + "ref-cast", + "serde", + "serde_json", +] + +[[package]] +name = "schemars" +version = "1.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a2b42f36aa1cd011945615b92222f6bf73c599a102a300334cd7f8dbeec726cc" +dependencies = [ + "dyn-clone", + "ref-cast", + "serde", + "serde_json", +] + +[[package]] +name = "scopeguard" +version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" +[[package]] +name = "sdd" +version = "3.0.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "490dcfcbfef26be6800d11870ff2df8774fa6e86d047e3e8c8a76b25655e41ca" + +[[package]] +name = "seahash" +version = "4.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1c107b6f4780854c8b126e228ea8869f4d7b71260f962fefb57b996b8959ba6b" + [[package]] name = "semver" -version = "1.0.22" +version = "1.0.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "92d43fe69e652f3df9bdc2b85b2854a0825b86e4fb76bc44d945137d053639ca" +checksum = "8a7852d02fc848982e0c167ef163aaff9cd91dc640ba85e263cb1ce46fae51cd" [[package]] name = "serde" -version = "1.0.183" +version = "1.0.228" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9a8e94ea7f378bd32cbbd37198a4a91436180c5bb472411e48b5ec2e2124ae9e" +dependencies = [ + "serde_core", + "serde_derive", +] + +[[package]] +name = "serde_core" +version = "1.0.228" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "32ac8da02677876d532745a130fc9d8e6edfa81a269b107c5b00829b91d8eb3c" +checksum = "41d385c7d4ca58e59fc732af25c3983b67ac852c1a25000afe1175de458b67ad" dependencies = [ "serde_derive", ] [[package]] name = "serde_derive" -version = "1.0.183" +version = "1.0.228" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aafe972d60b0b9bee71a91b92fee2d4fb3c9d7e8f6b179aa99f27203d99a4816" +checksum = "d540f220d3187173da220f885ab66608367b6574e925011a9353e4badda91d79" dependencies = [ "proc-macro2", "quote", - "syn 2.0.28", + "syn 2.0.117", ] [[package]] name = "serde_json" -version = "1.0.105" +version = "1.0.149" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "693151e1ac27563d6dbcec9dee9fbd5da8539b20fa14ad3752b2e6d363ace360" +checksum = "83fc039473c5595ace860d8c4fafa220ff474b3fc6bfdb4293327f1a37e94d86" dependencies = [ "itoa", - "ryu", + "memchr", "serde", + "serde_core", + "zmij", ] [[package]] name = "serde_spanned" -version = "0.6.3" +version = "1.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "96426c9936fd7a0124915f9185ea1d20aa9445cc9821142f0a73bc9207a2e186" +checksum = "6662b5879511e06e8999a8a235d848113e942c9124f211511b16466ee2995f26" dependencies = [ - "serde", + "serde_core", ] [[package]] name = "serde_with" -version = "2.3.3" +version = "3.20.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "07ff71d2c147a7b57362cead5e22f772cd52f6ab31cfcd9edcd7f6aeb2a0afbe" +checksum = "e72c1c2cb7b223fafb600a619537a871c2818583d619401b785e7c0b746ccde2" dependencies = [ - "base64 0.13.1", + "base64", + "bs58", "chrono", "hex", "indexmap 1.9.3", - "serde", + "indexmap 2.14.0", + "schemars 0.9.0", + "schemars 1.2.1", + "serde_core", "serde_json", "serde_with_macros", - "time 0.3.25", + "time", ] [[package]] name = "serde_with_macros" -version = "2.3.3" +version = "3.20.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "881b6f881b17d13214e5d494c939ebab463d01264ce1811e9d4ac3a882e7695f" +checksum = "b90c488738ecb4fb0262f41f43bc40efc5868d9fb744319ddf5f5317f417bfac" dependencies = [ "darling", "proc-macro2", "quote", - "syn 2.0.28", + "syn 2.0.117", ] [[package]] name = "serial_test" -version = "1.0.0" +version = "3.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "538c30747ae860d6fb88330addbbd3e0ddbe46d662d032855596d8a8ca260611" +checksum = "911bd979bf1070a3f3aa7b691a3b3e9968f339ceeec89e08c280a8a22207a32f" dependencies = [ - "dashmap", - "futures", - "lazy_static", + "futures-executor", + "futures-util", "log", + "once_cell", "parking_lot", + "scc", "serial_test_derive", ] [[package]] name = "serial_test_derive" -version = "1.0.0" +version = "3.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "079a83df15f85d89a68d64ae1238f142f172b1fa915d0d76b26a7cba1b659a69" +checksum = "0a7d91949b85b0d2fb687445e448b40d322b6b3e4af6b44a29b21d9a5f33e6d9" dependencies = [ "proc-macro2", "quote", - "syn 1.0.109", + "syn 2.0.117", ] [[package]] name = "sha1" -version = "0.10.5" +version = "0.10.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f04293dc80c3993519f2d7f6f511707ee7094fe0c6d3406feb330cdb3540eba3" +checksum = "e3bf829a2d51ab4a5ddf1352d8470c140cadc8301b2ae1789db023f01cedd6ba" dependencies = [ - "cfg-if 1.0.0", - "cpufeatures", - "digest", + "cfg-if 1.0.4", + "cpufeatures 0.2.17", + "digest 0.10.7", ] [[package]] name = "sha2" -version = "0.10.7" +version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "479fb9d862239e610720565ca91403019f2f00410f1864c5aa7479b950a76ed8" +checksum = "446ba717509524cb3f22f17ecc096f10f4822d76ab5c0b9822c5f9c284e825f4" dependencies = [ - "cfg-if 1.0.0", - "cpufeatures", - "digest", + "cfg-if 1.0.4", + "cpufeatures 0.3.0", + "digest 0.11.3", ] +[[package]] +name = "shlex" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" + [[package]] name = "signal-hook-registry" -version = "1.4.1" +version = "1.4.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d8229b473baa5980ac72ef434c4415e70c4b5e71b423043adb4ba059f89c99a1" +checksum = "c4db69cba1110affc0e9f7bcd48bbf87b3f4fc7c61fc9155afd4c469eb3d6c1b" dependencies = [ + "errno", "libc", ] [[package]] -name = "slab" -version = "0.4.8" +name = "simd-adler32" +version = "0.3.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6528351c9bc8ab22353f9d776db39a20288e8d6c37ef8cfe3317cf875eecfc2d" -dependencies = [ - "autocfg", -] +checksum = "703d5c7ef118737c72f1af64ad2f6f8c5e1921f818cdcb97b8fe6fc69bf66214" [[package]] -name = "smallvec" -version = "1.11.0" +name = "simdutf8" +version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "62bb4feee49fdd9f707ef802e22365a35de4b7b299de4763d44bfea899442ff9" +checksum = "e3a9fe34e3e7a50316060351f37187a3f546bce95496156754b601a5fa71b76e" [[package]] -name = "socket2" -version = "0.4.9" +name = "slab" +version = "0.4.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "64a4a911eed85daf18834cfaa86a79b7d266ff93ff5ba14005426219480ed662" -dependencies = [ - "libc", - "winapi", -] +checksum = "0c790de23124f9ab44544d7ac05d60440adc586479ce501c1d6d7da3cd8c9cf5" + +[[package]] +name = "smallvec" +version = "1.15.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "67b1b7a3b5fe4f1376887184045fcf45c69e92af734b7aaddc05fb777b6fbd03" [[package]] name = "socket2" -version = "0.5.3" +version = "0.6.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2538b18701741680e0322a2302176d3253a35388e2e62f172f64f4f16605f877" +checksum = "3a766e1110788c36f4fa1c2b71b387a7815aa65f88ce0229841826633d93723e" dependencies = [ "libc", "windows-sys", ] [[package]] -name = "static_assertions" -version = "1.1.0" +name = "stable_deref_trait" +version = "1.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f" +checksum = "6ce2be8dc25455e1f91df71bfa12ad37d7af1092ae736f3a6cd0e37bc7810596" [[package]] name = "strsim" -version = "0.10.0" +version = "0.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "73473c0e59e6d5812c5dfe2a064a6444949f089e20eec9a2e5506596494e4623" +checksum = "7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f" [[package]] name = "support-bundle" @@ -2137,8 +2597,8 @@ dependencies = [ "chrono", "edgelet-core", "edgelet-settings", - "futures", - "hyper", + "futures-util", + "http-body", "thiserror", "tokio", "zip", @@ -2157,83 +2617,111 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.28" +version = "2.0.117" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "04361975b3f5e348b2189d8dc55bc942f278b2d482a6a0365de5bdd62d351567" +checksum = "e665b8803e7b1d2a727f4023456bbbbe74da67099c585258af0ad9c5013b9b99" dependencies = [ "proc-macro2", "quote", "unicode-ident", ] +[[package]] +name = "synstructure" +version = "0.13.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "728a70f3dbaf5bab7f0c4b1ac8d7ae5ea60a4b5549c8a5914361c99147a709d2" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.117", +] + [[package]] name = "sysinfo" -version = "0.28.4" +version = "0.39.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b4c2f3ca6693feb29a89724516f016488e9aafc7f37264f898593ee4b942f31b" +checksum = "a4deba334e1190ba7cb498327affa11e5ece10d26a30ab2f27fcf09504b8d8b6" dependencies = [ - "cfg-if 1.0.0", - "core-foundation-sys", "libc", + "memchr", "ntapi", - "once_cell", - "rayon", - "winapi", + "objc2-core-foundation", + "objc2-io-kit", + "objc2-open-directory", + "windows", ] [[package]] name = "tabwriter" -version = "1.2.1" +version = "1.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "36205cfc997faadcc4b0b87aaef3fbedafe20d38d4959a7ca6ff803564051111" +checksum = "fce91f2f0ec87dff7e6bcbbeb267439aa1188703003c6055193c821487400432" dependencies = [ "unicode-width", ] +[[package]] +name = "tap" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "55937e1799185b12863d447f42597ed69d9928686b8d88a1df17376a097d8369" + [[package]] name = "termcolor" -version = "1.2.0" +version = "1.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "be55cf8942feac5c765c2c993422806843c9a9a45d4d5c407ad6dd2ea95eb9b6" +checksum = "06794f8f6c5c898b3275aebefa6b8a1cb24cd2c6c79397ab15774837a0bc5755" dependencies = [ "winapi-util", ] [[package]] name = "test-case" -version = "2.2.2" +version = "3.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "21d6cf5a7dffb3f9dceec8e6b8ca528d9bd71d36c9f074defb548ce161f598c0" +checksum = "eb2550dd13afcd286853192af8601920d959b14c401fcece38071d53bf0768a8" dependencies = [ "test-case-macros", ] +[[package]] +name = "test-case-core" +version = "3.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "adcb7fd841cd518e279be3d5a3eb0636409487998a4aff22f3de87b81e88384f" +dependencies = [ + "cfg-if 1.0.4", + "proc-macro2", + "quote", + "syn 2.0.117", +] + [[package]] name = "test-case-macros" -version = "2.2.2" +version = "3.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e45b7bf6e19353ddd832745c8fcf77a17a93171df7151187f26623f2b75b5b26" +checksum = "5c89e72a01ed4c579669add59014b9a524d609c0c88c6a585ce37485879f6ffb" dependencies = [ - "cfg-if 1.0.0", - "proc-macro-error", "proc-macro2", "quote", - "syn 1.0.109", + "syn 2.0.117", + "test-case-core", ] [[package]] name = "test-common" version = "0.1.0" -source = "git+https://github.com/Azure/iot-identity-service?branch=main#07597261e30832b3f7d8f54589f369823838e992" +source = "git+https://github.com/arsing/iot-identity-service?branch=rustup#cc0379190fa9b6d5744d9b6c3bf0ae6e8ab1bac5" dependencies = [ "aziot-identity-common", "aziot-identity-common-http", "aziot-key-client", "aziot-key-common", - "futures-core", "futures-util", "http-common", "hyper", + "hyper-util", "openssl", "serde_json", "tokio", @@ -2242,68 +2730,70 @@ dependencies = [ [[package]] name = "thiserror" -version = "1.0.46" +version = "2.0.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d9207952ae1a003f42d3d5e892dac3c6ba42aa6ac0c79a6a91a2b5cb4253e75c" +checksum = "4288b5bcbc7920c07a1149a35cf9590a2aa808e0bc1eafaade0b80947865fbc4" dependencies = [ "thiserror-impl", ] [[package]] name = "thiserror-impl" -version = "1.0.46" +version = "2.0.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f1728216d3244de4f14f14f8c15c79be1a7c67867d28d69b719690e2a19fb445" +checksum = "ebc4ee7f67670e9b64d05fa4253e753e016c6c95ff35b89b7941d6b856dec1d5" dependencies = [ "proc-macro2", "quote", - "syn 2.0.28", -] - -[[package]] -name = "time" -version = "0.1.45" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1b797afad3f312d1c66a56d11d0316f916356d11bd158fbc6ca6389ff6bf805a" -dependencies = [ - "libc", - "wasi 0.10.0+wasi-snapshot-preview1", - "winapi", + "syn 2.0.117", ] [[package]] name = "time" -version = "0.3.25" +version = "0.3.47" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b0fdd63d58b18d663fbdf70e049f00a22c8e42be082203be7f26589213cd75ea" +checksum = "743bd48c283afc0388f9b8827b976905fb217ad9e647fae3a379a9283c4def2c" dependencies = [ "deranged", "itoa", - "serde", + "num-conv", + "powerfmt", + "serde_core", "time-core", "time-macros", ] [[package]] name = "time-core" -version = "0.1.1" +version = "0.1.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7300fbefb4dadc1af235a9cef3737cea692a9d97e1b9cbcd4ebdae6f8868e6fb" +checksum = "7694e1cfe791f8d31026952abf09c69ca6f6fa4e1a1229e18988f06a04a12dca" [[package]] name = "time-macros" -version = "0.2.11" +version = "0.2.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eb71511c991639bb078fd5bf97757e03914361c48100d52878b8e52b46fb92cd" +checksum = "2e70e4c5a0e0a8a4823ad65dfe1a6930e4f4d756dcd9dd7939022b5e8c501215" dependencies = [ + "num-conv", "time-core", ] +[[package]] +name = "tinystr" +version = "0.8.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c8323304221c2a851516f22236c5722a72eaa19749016521d6dff0824447d96d" +dependencies = [ + "displaydoc", + "zerovec", +] + [[package]] name = "tinyvec" -version = "1.6.0" +version = "1.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "87cc5ceb3875bb20c2890005a4e226a4651264a5c75edb2421b52861a0a0cb50" +checksum = "3e61e67053d25a4e82c844e8424039d9745781b3fc4f32b8d55ed50f5f667ef3" dependencies = [ "tinyvec_macros", ] @@ -2316,41 +2806,38 @@ checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" [[package]] name = "tokio" -version = "1.31.0" +version = "1.52.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "40de3a2ba249dcb097e01be5e67a5ff53cf250397715a071a81543e8a832a920" +checksum = "8fc7f01b389ac15039e4dc9531aa973a135d7a4135281b12d7c1bc79fd57fffe" dependencies = [ - "backtrace", "bytes", "libc", "mio", - "num_cpus", "parking_lot", "pin-project-lite", "signal-hook-registry", - "socket2 0.5.3", + "socket2", "tokio-macros", "windows-sys", ] [[package]] name = "tokio-macros" -version = "2.1.0" +version = "2.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "630bdcf245f78637c13ec01ffae6187cca34625e8c63150d424b59e55af2675e" +checksum = "385a6cb71ab9ab790c5fe8d67f1645e6c450a7ce006a33de03daa956cf70a496" dependencies = [ "proc-macro2", "quote", - "syn 2.0.28", + "syn 2.0.117", ] [[package]] name = "tokio-openssl" -version = "0.6.3" +version = "0.6.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c08f9ffb7809f1b20c1b398d92acf4cc719874b3b2b2d9ea2f09b4a80350878a" +checksum = "59df6849caa43bb7567f9a36f863c447d95a11d5903c9cc334ba32576a27eadd" dependencies = [ - "futures-util", "openssl", "openssl-sys", "tokio", @@ -2358,145 +2845,168 @@ dependencies = [ [[package]] name = "toml" -version = "0.7.6" +version = "1.1.2+spec-1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c17e963a819c331dcacd7ab957d80bc2b9a9c1e71c804826d2f283dd65306542" +checksum = "81f3d15e84cbcd896376e6730314d59fb5a87f31e4b038454184435cd57defee" dependencies = [ - "serde", + "indexmap 2.14.0", + "serde_core", "serde_spanned", "toml_datetime", - "toml_edit", + "toml_parser", + "toml_writer", + "winnow", ] [[package]] name = "toml_datetime" -version = "0.6.3" +version = "1.1.1+spec-1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7cda73e2f1397b1262d6dfdcef8aafae14d1de7748d66822d3bfeeb6d03e5e4b" +checksum = "3165f65f62e28e0115a00b2ebdd37eb6f3b641855f9d636d3cd4103767159ad7" dependencies = [ - "serde", + "serde_core", ] [[package]] name = "toml_edit" -version = "0.19.14" +version = "0.25.11+spec-1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f8123f27e969974a3dfba720fdb560be359f57b44302d280ba72e76a74480e8a" +checksum = "0b59c4d22ed448339746c59b905d24568fcbb3ab65a500494f7b8c3e97739f2b" dependencies = [ - "indexmap 2.0.0", - "serde", - "serde_spanned", + "indexmap 2.14.0", "toml_datetime", + "toml_parser", "winnow", ] +[[package]] +name = "toml_parser" +version = "1.1.2+spec-1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a2abe9b86193656635d2411dc43050282ca48aa31c2451210f4202550afb7526" +dependencies = [ + "winnow", +] + +[[package]] +name = "toml_writer" +version = "1.1.1+spec-1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "756daf9b1013ebe47a8776667b466417e2d4c5679d441c26230efd9ef78692db" + [[package]] name = "tower-layer" -version = "0.3.2" +version = "0.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c20c8dbed6283a09604c3e69b4b7eeb54e298b8a600d4d5ecb5ad39de609f1d0" +checksum = "121c2a6cda46980bb0fcd1647ffaf6cd3fc79a013de288782836f6df9c48780e" [[package]] name = "tower-service" -version = "0.3.2" +version = "0.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b6bc1c9ce2b5135ac7f93c72918fc37feb872bdc6a5533a8b85eb4b86bfdae52" +checksum = "8df9b6e13f2d32c91b9bd719c00d1958837bc7dec474d94952798cc8e69eeec3" [[package]] name = "tracing" -version = "0.1.37" +version = "0.1.44" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8ce8c33a8d48bd45d624a6e523445fd21ec13d3653cd51f681abf67418f54eb8" +checksum = "63e71662fa4b2a2c3a26f570f037eb95bb1f85397f3cd8076caed2f026a6d100" dependencies = [ - "cfg-if 1.0.0", - "log", "pin-project-lite", - "tracing-attributes", "tracing-core", ] -[[package]] -name = "tracing-attributes" -version = "0.1.26" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f4f31f56159e98206da9efd823404b79b6ef3143b4a7ab76e67b1751b25a4ab" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.28", -] - [[package]] name = "tracing-core" -version = "0.1.31" +version = "0.1.36" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0955b8137a1df6f1a2e9a37d8a6656291ff0297c1a97c24e0d8425fe2312f79a" +checksum = "db97caf9d906fbde555dd62fa95ddba9eecfd14cb388e4f491a66d74cd5fb79a" dependencies = [ "once_cell", ] [[package]] name = "try-lock" -version = "0.2.4" +version = "0.2.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3528ecfd12c466c6f163363caf2d02a71161dd5e1cc6ae7b34207ea2d42d81ed" +checksum = "e421abadd41a4225275504ea4d6566923418b7f05506fbc9c0fe86ba7396114b" [[package]] -name = "typenum" -version = "1.16.0" +name = "typed-path" +version = "0.12.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "497961ef93d974e23eb6f433eb5fe1b7930b659f06d12dec6fc44a8f554c0bba" +checksum = "8e28f89b80c87b8fb0cf04ab448d5dd0dd0ade2f8891bae878de66a75a28600e" [[package]] -name = "unicode-bidi" -version = "0.3.13" +name = "typeid" +version = "1.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "92888ba5573ff080736b3648696b70cafad7d250551175acbaa4e0385b3e1460" +checksum = "bc7d623258602320d5c55d1bc22793b57daff0ec7efc270ea7d55ce1d5f5471c" [[package]] -name = "unicode-ident" -version = "1.0.11" +name = "typenum" +version = "1.20.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "301abaae475aa91687eb82514b328ab47a211a533026cb25fc3e519b86adfc3c" +checksum = "40ce102ab67701b8526c123c1bab5cbe42d7040ccfd0f64af1a385808d2f43de" [[package]] -name = "unicode-normalization" -version = "0.1.22" +name = "unicode-ident" +version = "1.0.24" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c5713f0fc4b5db668a2ac63cdb7bb4469d8c9fed047b1d0292cc7b0ce2ba921" -dependencies = [ - "tinyvec", -] +checksum = "e6e4313cd5fcd3dad5cafa179702e2b244f760991f45397d14d4ebf38247da75" [[package]] name = "unicode-width" -version = "0.1.10" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b4ac048d71ede7ee76d585517add45da530660ef4390e49b098733c6e897f254" + +[[package]] +name = "unicode-xid" +version = "0.2.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c0edd1e5b14653f783770bce4a4dabb4a5108a5370a5f5d8cfe8710c361f6c8b" +checksum = "ebc1c04c71510c7f702b52b7c350734c9ff1295c464a03335b00bb84fc54f853" [[package]] name = "url" -version = "2.4.0" +version = "2.5.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "50bff7831e19200a85b17131d085c25d7811bc4e186efdaf54bbd132994a88cb" +checksum = "ff67a8a4397373c3ef660812acab3268222035010ab8680ec4215f38ba3d0eed" dependencies = [ "form_urlencoded", "idna", "percent-encoding", "serde", + "serde_derive", ] [[package]] name = "utf8-width" -version = "0.1.6" +version = "0.1.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1292c0d970b54115d14f2492fe0170adf21d68a1de108eebc51c1df4f346a091" + +[[package]] +name = "utf8_iter" +version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5190c9442dcdaf0ddd50f37420417d219ae5261bbf5db120d0f9bab996c9cba1" +checksum = "b6c140620e7ffbb22c2dee59cafe6084a59b5ffc27a8859a5f0d494b5d52b6be" [[package]] name = "utf8parse" -version = "0.2.1" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "06abde3611657adf66d383f00b093d7faecc7fa57071cce2578660c9f1010821" + +[[package]] +name = "uuid" +version = "1.23.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "711b9620af191e0cdc7468a8d14e709c3dcdb115b36f838e601583af800a370a" +checksum = "ddd74a9687298c6858e9b88ec8935ec45d22e8fd5e6394fa1bd4e99a87789c76" +dependencies = [ + "js-sys", + "wasm-bindgen", +] [[package]] name = "vcpkg" @@ -2506,9 +3016,9 @@ checksum = "accd4ea62f7bb7a82fe23066fb0957d48ef677f6eeb8215f372f52e48bb32426" [[package]] name = "version_check" -version = "0.9.4" +version = "0.9.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f" +checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a" [[package]] name = "want" @@ -2521,46 +3031,46 @@ dependencies = [ [[package]] name = "wasi" -version = "0.10.0+wasi-snapshot-preview1" +version = "0.11.1+wasi-snapshot-preview1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1a143597ca7c7793eff794def352d41792a93c481eb1042423ff7ff72ba2c31f" +checksum = "ccf3ec651a847eb01de73ccad15eb7d99f80485de043efb2f370cd654f4ea44b" [[package]] -name = "wasi" -version = "0.11.0+wasi-snapshot-preview1" +name = "wasip2" +version = "1.0.3+wasi-0.2.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" +checksum = "20064672db26d7cdc89c7798c48a0fdfac8213434a1186e5ef29fd560ae223d6" +dependencies = [ + "wit-bindgen 0.57.1", +] [[package]] -name = "wasm-bindgen" -version = "0.2.87" +name = "wasip3" +version = "0.4.0+wasi-0.3.0-rc-2026-01-06" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7706a72ab36d8cb1f80ffbf0e071533974a60d0a308d01a5d0375bf60499a342" +checksum = "5428f8bf88ea5ddc08faddef2ac4a67e390b88186c703ce6dbd955e1c145aca5" dependencies = [ - "cfg-if 1.0.0", - "wasm-bindgen-macro", + "wit-bindgen 0.51.0", ] [[package]] -name = "wasm-bindgen-backend" -version = "0.2.87" +name = "wasm-bindgen" +version = "0.2.121" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5ef2b6d3c510e9625e5fe6f509ab07d66a760f0885d858736483c32ed7809abd" +checksum = "49ace1d07c165b0864824eee619580c4689389afa9dc9ed3a4c75040d82e6790" dependencies = [ - "bumpalo", - "log", + "cfg-if 1.0.4", "once_cell", - "proc-macro2", - "quote", - "syn 2.0.28", + "rustversion", + "wasm-bindgen-macro", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-macro" -version = "0.2.87" +version = "0.2.121" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dee495e55982a3bd48105a7b947fd2a9b4a8ae3010041b9e0faab3f9cd028f1d" +checksum = "8e68e6f4afd367a562002c05637acb8578ff2dea1943df76afb9e83d177c8578" dependencies = [ "quote", "wasm-bindgen-macro-support", @@ -2568,22 +3078,59 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.87" +version = "0.2.121" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "54681b18a46765f095758388f2d0cf16eb8d4169b639ab575a8f5693af210c7b" +checksum = "d95a9ec35c64b2a7cb35d3fead40c4238d0940c86d107136999567a4703259f2" dependencies = [ + "bumpalo", "proc-macro2", "quote", - "syn 2.0.28", - "wasm-bindgen-backend", + "syn 2.0.117", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-shared" -version = "0.2.87" +version = "0.2.121" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c4e0100b01e9f0d03189a92b96772a1fb998639d981193d7dbab487302513441" +dependencies = [ + "unicode-ident", +] + +[[package]] +name = "wasm-encoder" +version = "0.244.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "990065f2fe63003fe337b932cfb5e3b80e0b4d0f5ff650e6985b1048f62c8319" +dependencies = [ + "leb128fmt", + "wasmparser", +] + +[[package]] +name = "wasm-metadata" +version = "0.244.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bb0e353e6a2fbdc176932bbaab493762eb1255a7900fe0fea1a2f96c296cc909" +dependencies = [ + "anyhow", + "indexmap 2.14.0", + "wasm-encoder", + "wasmparser", +] + +[[package]] +name = "wasmparser" +version = "0.244.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ca6ad05a4870b2bf5fe995117d3728437bd27d7cd5f06f13c17443ef369775a1" +checksum = "47b807c72e1bac69382b3a6fb3dbe8ea4c0ed87ff5629b8685ae6b9a611028fe" +dependencies = [ + "bitflags", + "hashbrown 0.15.5", + "indexmap 2.14.0", + "semver", +] [[package]] name = "winapi" @@ -2603,11 +3150,11 @@ checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" [[package]] name = "winapi-util" -version = "0.1.5" +version = "0.1.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "70ec6ce85bb158151cae5e5c87f95a8e97d2c0c4b001223f33a334e3ce5de178" +checksum = "c2a7b1c03c876122aa43f3020e6c3c3ee5c05081c9a00739faf7503aeba10d22" dependencies = [ - "winapi", + "windows-sys", ] [[package]] @@ -2618,88 +3165,241 @@ checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" [[package]] name = "windows" -version = "0.48.0" +version = "0.62.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e686886bc078bc1b0b600cac0147aadb815089b6e4da64016cbd754b6342700f" +checksum = "527fadee13e0c05939a6a05d5bd6eec6cd2e3dbd648b9f8e447c6518133d8580" dependencies = [ - "windows-targets", + "windows-collections", + "windows-core", + "windows-future", + "windows-numerics", ] [[package]] -name = "windows-sys" -version = "0.48.0" +name = "windows-collections" +version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9" +checksum = "23b2d95af1a8a14a3c7367e1ed4fc9c20e0a26e79551b1454d72583c97cc6610" dependencies = [ - "windows-targets", + "windows-core", ] [[package]] -name = "windows-targets" -version = "0.48.2" +name = "windows-core" +version = "0.62.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d1eeca1c172a285ee6c2c84c341ccea837e7c01b12fbb2d0fe3c9e550ce49ec8" +checksum = "b8e83a14d34d0623b51dce9581199302a221863196a1dde71a7663a4c2be9deb" dependencies = [ - "windows_aarch64_gnullvm", - "windows_aarch64_msvc", - "windows_i686_gnu", - "windows_i686_msvc", - "windows_x86_64_gnu", - "windows_x86_64_gnullvm", - "windows_x86_64_msvc", + "windows-implement", + "windows-interface", + "windows-link", + "windows-result", + "windows-strings", ] [[package]] -name = "windows_aarch64_gnullvm" -version = "0.48.2" +name = "windows-future" +version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b10d0c968ba7f6166195e13d593af609ec2e3d24f916f081690695cf5eaffb2f" +checksum = "e1d6f90251fe18a279739e78025bd6ddc52a7e22f921070ccdc67dde84c605cb" +dependencies = [ + "windows-core", + "windows-link", + "windows-threading", +] [[package]] -name = "windows_aarch64_msvc" -version = "0.48.2" +name = "windows-implement" +version = "0.60.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "571d8d4e62f26d4932099a9efe89660e8bd5087775a2ab5cdd8b747b811f1058" +checksum = "053e2e040ab57b9dc951b72c264860db7eb3b0200ba345b4e4c3b14f67855ddf" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.117", +] [[package]] -name = "windows_i686_gnu" -version = "0.48.2" +name = "windows-interface" +version = "0.59.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2229ad223e178db5fbbc8bd8d3835e51e566b8474bfca58d2e6150c48bb723cd" +checksum = "3f316c4a2570ba26bbec722032c4099d8c8bc095efccdc15688708623367e358" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.117", +] [[package]] -name = "windows_i686_msvc" -version = "0.48.2" +name = "windows-link" +version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "600956e2d840c194eedfc5d18f8242bc2e17c7775b6684488af3a9fff6fe3287" +checksum = "f0805222e57f7521d6a62e36fa9163bc891acd422f971defe97d64e70d0a4fe5" [[package]] -name = "windows_x86_64_gnu" -version = "0.48.2" +name = "windows-numerics" +version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ea99ff3f8b49fb7a8e0d305e5aec485bd068c2ba691b6e277d29eaeac945868a" +checksum = "6e2e40844ac143cdb44aead537bbf727de9b044e107a0f1220392177d15b0f26" +dependencies = [ + "windows-core", + "windows-link", +] [[package]] -name = "windows_x86_64_gnullvm" -version = "0.48.2" +name = "windows-result" +version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f1a05a1ece9a7a0d5a7ccf30ba2c33e3a61a30e042ffd247567d1de1d94120d" +checksum = "7781fa89eaf60850ac3d2da7af8e5242a5ea78d1a11c49bf2910bb5a73853eb5" +dependencies = [ + "windows-link", +] [[package]] -name = "windows_x86_64_msvc" -version = "0.48.2" +name = "windows-strings" +version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d419259aba16b663966e29e6d7c6ecfa0bb8425818bb96f6f1f3c3eb71a6e7b9" +checksum = "7837d08f69c77cf6b07689544538e017c1bfcf57e34b4c0ff58e6c2cd3b37091" +dependencies = [ + "windows-link", +] + +[[package]] +name = "windows-sys" +version = "0.61.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ae137229bcbd6cdf0f7b80a31df61766145077ddf49416a728b02cb3921ff3fc" +dependencies = [ + "windows-link", +] + +[[package]] +name = "windows-threading" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3949bd5b99cafdf1c7ca86b43ca564028dfe27d66958f2470940f73d86d75b37" +dependencies = [ + "windows-link", +] [[package]] name = "winnow" -version = "0.5.12" +version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "83817bbecf72c73bad717ee86820ebf286203d2e04c3951f3cd538869c897364" +checksum = "2ee1708bef14716a11bae175f579062d4554d95be2c6829f518df847b7b3fdd0" dependencies = [ "memchr", ] +[[package]] +name = "wit-bindgen" +version = "0.51.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d7249219f66ced02969388cf2bb044a09756a083d0fab1e566056b04d9fbcaa5" +dependencies = [ + "wit-bindgen-rust-macro", +] + +[[package]] +name = "wit-bindgen" +version = "0.57.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1ebf944e87a7c253233ad6766e082e3cd714b5d03812acc24c318f549614536e" + +[[package]] +name = "wit-bindgen-core" +version = "0.51.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ea61de684c3ea68cb082b7a88508a8b27fcc8b797d738bfc99a82facf1d752dc" +dependencies = [ + "anyhow", + "heck", + "wit-parser", +] + +[[package]] +name = "wit-bindgen-rust" +version = "0.51.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b7c566e0f4b284dd6561c786d9cb0142da491f46a9fbed79ea69cdad5db17f21" +dependencies = [ + "anyhow", + "heck", + "indexmap 2.14.0", + "prettyplease", + "syn 2.0.117", + "wasm-metadata", + "wit-bindgen-core", + "wit-component", +] + +[[package]] +name = "wit-bindgen-rust-macro" +version = "0.51.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0c0f9bfd77e6a48eccf51359e3ae77140a7f50b1e2ebfe62422d8afdaffab17a" +dependencies = [ + "anyhow", + "prettyplease", + "proc-macro2", + "quote", + "syn 2.0.117", + "wit-bindgen-core", + "wit-bindgen-rust", +] + +[[package]] +name = "wit-component" +version = "0.244.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9d66ea20e9553b30172b5e831994e35fbde2d165325bec84fc43dbf6f4eb9cb2" +dependencies = [ + "anyhow", + "bitflags", + "indexmap 2.14.0", + "log", + "serde", + "serde_derive", + "serde_json", + "wasm-encoder", + "wasm-metadata", + "wasmparser", + "wit-parser", +] + +[[package]] +name = "wit-parser" +version = "0.244.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ecc8ac4bc1dc3381b7f59c34f00b67e18f910c2c0f50015669dde7def656a736" +dependencies = [ + "anyhow", + "id-arena", + "indexmap 2.14.0", + "log", + "semver", + "serde", + "serde_derive", + "serde_json", + "unicode-xid", + "wasmparser", +] + +[[package]] +name = "writeable" +version = "0.6.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1ffae5123b2d3fc086436f8834ae3ab053a283cfac8fe0a0b8eaae044768a4c4" + +[[package]] +name = "wyz" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "05f360fc0b24296329c78fda852a1e9ae82de9cf7b27dae4b7f62f118f77b9ed" +dependencies = [ + "tap", +] + [[package]] name = "yaml-rust" version = "0.4.5" @@ -2709,14 +3409,137 @@ dependencies = [ "linked-hash-map", ] +[[package]] +name = "yoke" +version = "0.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "abe8c5fda708d9ca3df187cae8bfb9ceda00dd96231bed36e445a1a48e66f9ca" +dependencies = [ + "stable_deref_trait", + "yoke-derive", + "zerofrom", +] + +[[package]] +name = "yoke-derive" +version = "0.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "de844c262c8848816172cef550288e7dc6c7b7814b4ee56b3e1553f275f1858e" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.117", + "synstructure", +] + +[[package]] +name = "zerocopy" +version = "0.8.48" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eed437bf9d6692032087e337407a86f04cd8d6a16a37199ed57949d415bd68e9" +dependencies = [ + "zerocopy-derive", +] + +[[package]] +name = "zerocopy-derive" +version = "0.8.48" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "70e3cd084b1788766f53af483dd21f93881ff30d7320490ec3ef7526d203bad4" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.117", +] + +[[package]] +name = "zerofrom" +version = "0.1.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0ec05a11813ea801ff6d75110ad09cd0824ddba17dfe17128ea0d5f68e6c5272" +dependencies = [ + "zerofrom-derive", +] + +[[package]] +name = "zerofrom-derive" +version = "0.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "11532158c46691caf0f2593ea8358fed6bbf68a0315e80aae9bd41fbade684a1" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.117", + "synstructure", +] + +[[package]] +name = "zerotrie" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0f9152d31db0792fa83f70fb2f83148effb5c1f5b8c7686c3459e361d9bc20bf" +dependencies = [ + "displaydoc", + "yoke", + "zerofrom", +] + +[[package]] +name = "zerovec" +version = "0.11.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "90f911cbc359ab6af17377d242225f4d75119aec87ea711a880987b18cd7b239" +dependencies = [ + "yoke", + "zerofrom", + "zerovec-derive", +] + +[[package]] +name = "zerovec-derive" +version = "0.11.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "625dc425cab0dca6dc3c3319506e6593dcb08a9f387ea3b284dbd52a92c40555" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.117", +] + [[package]] name = "zip" -version = "0.6.6" +version = "8.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "760394e246e4c28189f19d488c058bf16f564016aefac5d32bb1f3b51d5e9261" +checksum = "2d04a6b5381502aa6087c94c669499eb1602eb9c5e8198e534de571f7154809b" dependencies = [ - "byteorder", "crc32fast", - "crossbeam-utils", "flate2", + "indexmap 2.14.0", + "memchr", + "typed-path", + "zopfli", +] + +[[package]] +name = "zlib-rs" +version = "0.6.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3be3d40e40a133f9c916ee3f9f4fa2d9d63435b5fbe1bfc6d9dae0aa0ada1513" + +[[package]] +name = "zmij" +version = "1.0.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b8848ee67ecc8aedbaf3e4122217aff892639231befc6a1b58d29fff4c2cabaa" + +[[package]] +name = "zopfli" +version = "0.8.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f05cd8797d63865425ff89b5c4a48804f35ba0ce8d125800027ad6017d2b5249" +dependencies = [ + "bumpalo", + "crc32fast", + "log", + "simd-adler32", ] diff --git a/edgelet/Cargo.toml b/edgelet/Cargo.toml index d0fdba5c808..3a9857ce6da 100644 --- a/edgelet/Cargo.toml +++ b/edgelet/Cargo.toml @@ -9,15 +9,118 @@ members = [ "edgelet-http-workload", "edgelet-image-cleanup", "edgelet-settings", + "edgelet-test-utils", "edgelet-utils", "iotedge", "support-bundle", ] resolver = "2" + +[workspace.dependencies] +anyhow = "1" +async-trait = "0.1" +atty = "0.2" + +base64 = "0.22" +byte-unit = "5" +bytes = "1" + +chrono = { version = "0.4.7", features = ["serde"] } +chrono-humanize = "0.2" + +clap = { version = "4", features = ["cargo", "env", "string"] } +config = { version = "0.15", default-features = false } + +erased-serde = "0.4" + +futures-util = "0.3" + +hex = "0.4" +http = "1" +http-body = "1" +http-body-util = "0.1" +humantime = "2" +humantime-serde = "1" +hyper = { version = "1", features = ["client", "http1", "server"] } +hyper-util = { version = "0.1", features = [ + "client", + "client-legacy", + "http1", + "service", + "tokio", +] } +hyper-openssl = { version = "0.10.1", features = ["tokio"] } + +libc = "0.2" +log = { version = "0.4", features = ["std"] } + +nix = "0.31" +num_cpus = "1.8" + +openssl = "0.10" + +percent-encoding = "2" + +regex = "1" + +semver = "1" +serde = { version = "1", features = ["derive"] } +serde_json = "1" +serial_test = "3" +sha2 = "0.11" +sysinfo = "0.39" + +tabwriter = "1" +termcolor = "1" +test-case = "3" +thiserror = "2" +tokio = { version = "1", features = [ + "macros", + "parking_lot", + "process", + "rt", + "rt-multi-thread", + "signal", + "sync", + "time", +] } +toml = "1" +tower-service = "0.3" + +url = { version = "2", features = ["serde"] } + +yaml-rust = "0.4" + +zip = { version = "8", features = ["deflate"], default-features = false } + +aziot-cert-client-async = { git = "https://github.com/arsing/iot-identity-service", branch = "rustup" } +aziot-cert-common-http = { git = "https://github.com/arsing/iot-identity-service", branch = "rustup" } +aziot-certd-config = { git = "https://github.com/arsing/iot-identity-service", branch = "rustup" } +aziot-identity-client-async = { git = "https://github.com/arsing/iot-identity-service", branch = "rustup" } +aziot-identity-common = { git = "https://github.com/arsing/iot-identity-service", branch = "rustup" } +aziot-identity-common-http = { git = "https://github.com/arsing/iot-identity-service", branch = "rustup" } +aziot-identityd-config = { git = "https://github.com/arsing/iot-identity-service", branch = "rustup" } +aziot-key-client = { git = "https://github.com/arsing/iot-identity-service", branch = "rustup" } +aziot-key-client-async = { git = "https://github.com/arsing/iot-identity-service", branch = "rustup" } +aziot-key-common = { git = "https://github.com/arsing/iot-identity-service", branch = "rustup" } +aziot-key-common-http = { git = "https://github.com/arsing/iot-identity-service", branch = "rustup" } +aziot-key-openssl-engine = { git = "https://github.com/arsing/iot-identity-service", branch = "rustup" } +aziot-keyd-config = { git = "https://github.com/arsing/iot-identity-service", branch = "rustup" } +aziot-keys-common = { git = "https://github.com/arsing/iot-identity-service", branch = "rustup" } +aziot-tpmd-config = { git = "https://github.com/arsing/iot-identity-service", branch = "rustup" } +aziotctl-common = { git = "https://github.com/arsing/iot-identity-service", branch = "rustup" } +cert-renewal = { git = "https://github.com/arsing/iot-identity-service", branch = "rustup" } +config-common = { git = "https://github.com/arsing/iot-identity-service", branch = "rustup" } +http-common = { git = "https://github.com/arsing/iot-identity-service", branch = "rustup" } +logger = { git = "https://github.com/arsing/iot-identity-service", branch = "rustup" } +test-common = { git = "https://github.com/arsing/iot-identity-service", branch = "rustup" } + + [profile.dev] panic = 'abort' + [profile.release] panic = 'abort' # Release builds will have full symbols. The packaging phase will strip symbols from binaries and diff --git a/edgelet/aziot-edged/Cargo.toml b/edgelet/aziot-edged/Cargo.toml index 297e3d415d9..41a3be1a61a 100644 --- a/edgelet/aziot-edged/Cargo.toml +++ b/edgelet/aziot-edged/Cargo.toml @@ -2,23 +2,29 @@ name = "aziot-edged" version = "0.1.0" authors = ["Azure IoT Edge Devs"] +edition = "2024" publish = false -edition = "2021" description = "The aziot-edged is the main binary for the IoT edge daemon." homepage = "https://aka.ms/iotedge" license = "MIT" + [dependencies] -base64 = "0.21" -chrono = "0.4" -clap = { version = "4", features = ["cargo", "string"] } -futures-util = "0.3" -log = "0.4" -serde_json = "1" -sha2 = "0.10" -serde = "1" -tokio = { version = "1", features = ["macros", "parking_lot", "rt-multi-thread", "signal", "sync", "time"] } -url = "2" +base64 = { workspace = true } +clap = { workspace = true } +futures-util = { workspace = true } +log = { workspace = true } +serde = { workspace = true } +serde_json = { workspace = true } +sha2 = { workspace = true } +tokio = { workspace = true } +url = { workspace = true } + +aziot-identity-client-async = { workspace = true } +aziot-identity-common = { workspace = true } +aziot-identity-common-http = { workspace = true } +http-common = { workspace = true } +logger = { workspace = true } edgelet-core = { path = "../edgelet-core" } edgelet-docker = { path = "../edgelet-docker" } @@ -27,10 +33,3 @@ edgelet-http-mgmt = { path = "../edgelet-http-mgmt" } edgelet-http-workload = { path = "../edgelet-http-workload" } edgelet-image-cleanup = { path = "../edgelet-image-cleanup" } edgelet-settings = { path = "../edgelet-settings", features = ["settings-docker"] } - -aziot-identity-client-async = { git = "https://github.com/Azure/iot-identity-service", branch = "main" } -aziot-identity-common = { git = "https://github.com/Azure/iot-identity-service", branch = "main" } -aziot-identity-common-http = { git = "https://github.com/Azure/iot-identity-service", branch = "main" } - -http-common = { git = "https://github.com/Azure/iot-identity-service", branch = "main" } -logger = { git = "https://github.com/Azure/iot-identity-service", branch = "main" } diff --git a/edgelet/aziot-edged/src/main.rs b/edgelet/aziot-edged/src/main.rs index 096d88fc1f1..9896f6445b8 100644 --- a/edgelet/aziot-edged/src/main.rs +++ b/edgelet/aziot-edged/src/main.rs @@ -11,7 +11,7 @@ mod workload_manager; use std::sync::atomic; -use edgelet_core::{module::ModuleAction, ModuleRuntime, WatchdogAction}; +use edgelet_core::{ModuleRuntime, WatchdogAction, module::ModuleAction}; use edgelet_docker::{ImagePruneData, MakeModuleRuntime}; use edgelet_image_cleanup::image_gc; use edgelet_settings::RuntimeSettings; diff --git a/edgelet/aziot-edged/src/workload_manager.rs b/edgelet/aziot-edged/src/workload_manager.rs index 648159a13eb..c845153104c 100644 --- a/edgelet/aziot-edged/src/workload_manager.rs +++ b/edgelet/aziot-edged/src/workload_manager.rs @@ -1,6 +1,6 @@ use std::collections::HashMap; -use edgelet_core::{module::ModuleAction, Error, UrlExt}; +use edgelet_core::{Error, UrlExt, module::ModuleAction}; use edgelet_settings::uri::Listen; use crate::error::Error as EdgedError; @@ -250,7 +250,10 @@ where M::Config: serde::Serialize, { if let Err(err) = shutdown_rx.await { - return Err(EdgedError::from_err("Could wait on the stop signal, workload manager will continue but not shutdown properly", err)); + return Err(EdgedError::from_err( + "Could wait on the stop signal, workload manager will continue but not shutdown properly", + err, + )); } let module_list = runtime diff --git a/edgelet/docker-rs/Cargo.toml b/edgelet/docker-rs/Cargo.toml index f2ef566db71..8f437225624 100644 --- a/edgelet/docker-rs/Cargo.toml +++ b/edgelet/docker-rs/Cargo.toml @@ -1,20 +1,24 @@ [package] -authors = ["Azure IoT Edge Devs"] -edition = "2021" name = "docker" -publish = false version = "0.1.0" +authors = ["Azure IoT Edge Devs"] +edition = "2024" +publish = false + [dependencies] -anyhow = "1" -hyper = { version = "0.14", features = ["client", "http1"] } -serde = "1" -serde_derive = "1" -serde_json = "1" -tokio = { version = "1", features = ["time"] } -url = "2" +anyhow = { workspace = true } +bytes = { workspace = true } +http-body-util = { workspace = true } +hyper = { workspace = true } +hyper-util = { workspace = true } +serde = { workspace = true } +serde_json = { workspace = true } +tokio = { workspace = true } +url = { workspace = true } + [dev-dependencies] -tokio = { version = "1", features = ["macros", "rt"] } +tokio = { workspace = true } edgelet-test-utils = { path = "../edgelet-test-utils" } diff --git a/edgelet/docker-rs/src/apis/client.rs b/edgelet/docker-rs/src/apis/client.rs index b5ec46d53fa..f01c74613a4 100644 --- a/edgelet/docker-rs/src/apis/client.rs +++ b/edgelet/docker-rs/src/apis/client.rs @@ -1,3 +1,12 @@ +use std::convert::Infallible; + +use bytes::Bytes; +use http_body_util::{BodyExt as _, combinators::BoxBody}; +use hyper::body::Incoming; +use hyper_util::{ + client::legacy::{Client, connect::Connect}, + rt::TokioExecutor, +}; use serde::Deserialize; use super::configuration::Configuration; @@ -6,7 +15,7 @@ use crate::models; type BoxFutureResult<'a, T> = std::pin::Pin> + Send + 'a>>; -#[derive(Debug, serde_derive::Deserialize)] +#[derive(Debug, serde::Deserialize)] #[cfg_attr(test, derive(PartialEq))] pub struct ApiError { #[serde(deserialize_with = "try_from_u16")] @@ -31,9 +40,9 @@ where } impl ApiError { - async fn try_from_response(value: hyper::Response) -> anyhow::Result { + async fn try_from_response(value: hyper::Response) -> anyhow::Result { let (parts, body) = value.into_parts(); - let error_bytes = hyper::body::to_bytes(body).await?; + let error_bytes = body.collect().await?.to_bytes(); let error_str = String::from_utf8(error_bytes.to_vec())?; Ok(Self { code: parts.status, @@ -54,17 +63,17 @@ impl ApiError { #[derive(Clone)] pub struct DockerApiClient { - client: hyper::Client, + client: Client>, configuration: std::sync::Arc, } impl DockerApiClient where - C: Clone + hyper::client::connect::Connect + Send + Sync + 'static, + C: Clone + Connect + Send + Sync + 'static, { pub fn new(connector: C) -> Self { Self { - client: hyper::Client::builder().build(connector), + client: Client::builder(TokioExecutor::new()).build(connector), configuration: std::sync::Arc::new(Configuration::default()), } } @@ -159,7 +168,7 @@ pub trait DockerApi { until: Option, timestamps: bool, tail: &'a str, - ) -> BoxFutureResult<'a, hyper::Body>; + ) -> BoxFutureResult<'a, Incoming>; fn network_create( &self, @@ -183,7 +192,7 @@ macro_rules! api_call { .contains("application/json"), "expected JSON Content-Type" ); - let response_bytes = ::hyper::body::to_bytes(body).await?; + let response_bytes = http_body_util::BodyExt::collect(body).await?.to_bytes(); Ok(::serde_json::from_slice::<$output>(&response_bytes)?) }}; (@inner maybe_output $response:ident => $transfer:ident $blk:block ; $($_output:ty)?) => {{ @@ -191,11 +200,11 @@ macro_rules! api_call { $blk }}; - (@inner build_request $builder:ident) => { $builder.body(::hyper::Body::empty()) }; + (@inner build_request $builder:ident) => { $builder.body(http_body_util::combinators::BoxBody::new(http_body_util::Empty::new())) }; (@inner build_request $builder:ident $body:ident $_:ty) => { $builder - .header(::hyper::header::CONTENT_TYPE, "application/json") - .body(::hyper::Body::from(::serde_json::to_string(&$body)?)) + .header(hyper::header::CONTENT_TYPE, "application/json") + .body(http_body_util::combinators::BoxBody::new(http_body_util::Full::new(serde_json::to_string(&$body)?.into()))) }; (@inner query $param:ident &$($_:lifetime)? str) => { $param }; @@ -266,7 +275,7 @@ macro_rules! api_call { impl DockerApi for DockerApiClient where - C: Clone + hyper::client::connect::Connect + Send + Sync + 'static, + C: Clone + Connect + Send + Sync + 'static, { api_call! { system_info : get "/info" -> models::SystemInfo ; @@ -390,7 +399,7 @@ where "expected JSON Content-Type" ); - let response_bytes = hyper::body::to_bytes(body).await?; + let response_bytes = body.collect().await?.to_bytes(); let mut last = serde_json::Deserializer::from_slice(&response_bytes) .into_iter::>() .last() @@ -414,7 +423,7 @@ where } api_call! { - container_logs : get "/containers/{id}/logs" -> hyper::Body ; + container_logs : get "/containers/{id}/logs" -> Incoming ; path : [ id: &'a str ] ; query : [ "follow" = (follow: bool), @@ -444,10 +453,12 @@ mod tests { serde_json::to_string(&serde_json::json!({"status":"STATUS"})).unwrap(), ); let client = DockerApiClient::new(JsonConnector::ok(&payload)); - assert!(client - .image_create("", "", "", "", "", "", "") - .await - .is_ok()); + assert!( + client + .image_create("", "", "", "", "", "", "") + .await + .is_ok() + ); } #[tokio::test] diff --git a/edgelet/docker-rs/src/lib.rs b/edgelet/docker-rs/src/lib.rs index abbb42d94da..61e20fa5c06 100644 --- a/edgelet/docker-rs/src/lib.rs +++ b/edgelet/docker-rs/src/lib.rs @@ -1,16 +1,8 @@ // Copyright (c) Microsoft. All rights reserved. -#![deny(rust_2018_idioms, warnings)] -#![allow( - dead_code, - non_snake_case, - renamed_and_removed_lints, - unused_imports, - unused_mut -)] -#![allow(clippy::all, clippy::pedantic)] -#![cfg(not(tarpaulin_include))] pub mod apis; + +#[expect(non_snake_case)] pub mod models; pub use apis::{DockerApi, DockerApiClient}; diff --git a/edgelet/docker-rs/src/models/address.rs b/edgelet/docker-rs/src/models/address.rs index 748f15fcde5..d412bd47a42 100644 --- a/edgelet/docker-rs/src/models/address.rs +++ b/edgelet/docker-rs/src/models/address.rs @@ -12,7 +12,7 @@ #[allow(unused_imports)] use serde_json::Value; -#[derive(Debug, serde_derive::Serialize, serde_derive::Deserialize)] +#[derive(Debug, serde::Serialize, serde::Deserialize)] pub struct Address { /// IP address. #[serde(rename = "Addr", skip_serializing_if = "Option::is_none")] diff --git a/edgelet/docker-rs/src/models/auth_config.rs b/edgelet/docker-rs/src/models/auth_config.rs index 2ba0aa5a747..e10624ce05c 100644 --- a/edgelet/docker-rs/src/models/auth_config.rs +++ b/edgelet/docker-rs/src/models/auth_config.rs @@ -11,7 +11,7 @@ #[allow(unused_imports)] use serde_json::Value; -#[derive(Debug, serde_derive::Serialize, serde_derive::Deserialize, Clone)] +#[derive(Debug, serde::Serialize, serde::Deserialize, Clone)] pub struct AuthConfig { #[serde(rename = "username", skip_serializing_if = "Option::is_none")] username: Option, diff --git a/edgelet/docker-rs/src/models/body.rs b/edgelet/docker-rs/src/models/body.rs index 901d97c1f6e..e8956ae609c 100644 --- a/edgelet/docker-rs/src/models/body.rs +++ b/edgelet/docker-rs/src/models/body.rs @@ -13,7 +13,7 @@ #[allow(unused_imports)] use serde_json::Value; -#[derive(Debug, serde_derive::Serialize, serde_derive::Deserialize)] +#[derive(Debug, serde::Serialize, serde::Deserialize)] pub struct Body { #[serde(rename = "Name", skip_serializing_if = "Option::is_none")] name: Option, diff --git a/edgelet/docker-rs/src/models/body_1.rs b/edgelet/docker-rs/src/models/body_1.rs index ddf2a1c57da..f86c01cb1e0 100644 --- a/edgelet/docker-rs/src/models/body_1.rs +++ b/edgelet/docker-rs/src/models/body_1.rs @@ -11,7 +11,7 @@ #[allow(unused_imports)] use serde_json::Value; -#[derive(Debug, serde_derive::Serialize, serde_derive::Deserialize)] +#[derive(Debug, serde::Serialize, serde::Deserialize)] pub struct Body1 { /// Listen address used for inter-manager communication, as well as determining the networking interface used for the VXLAN Tunnel Endpoint (VTEP). This can either be an address/port combination in the form `192.168.1.1:4567`, or an interface followed by a port number, like `eth0:4567`. If the port number is omitted, the default swarm listening port is used. #[serde(rename = "ListenAddr", skip_serializing_if = "Option::is_none")] diff --git a/edgelet/docker-rs/src/models/body_2.rs b/edgelet/docker-rs/src/models/body_2.rs index 64ea9405848..948ff8dd31f 100644 --- a/edgelet/docker-rs/src/models/body_2.rs +++ b/edgelet/docker-rs/src/models/body_2.rs @@ -11,7 +11,7 @@ #[allow(unused_imports)] use serde_json::Value; -#[derive(Debug, serde_derive::Serialize, serde_derive::Deserialize)] +#[derive(Debug, serde::Serialize, serde::Deserialize)] pub struct Body2 { /// Listen address used for inter-manager communication if the node gets promoted to manager, as well as determining the networking interface used for the VXLAN Tunnel Endpoint (VTEP). #[serde(rename = "ListenAddr", skip_serializing_if = "Option::is_none")] diff --git a/edgelet/docker-rs/src/models/body_3.rs b/edgelet/docker-rs/src/models/body_3.rs index 9612d80308a..973e0363179 100644 --- a/edgelet/docker-rs/src/models/body_3.rs +++ b/edgelet/docker-rs/src/models/body_3.rs @@ -11,7 +11,7 @@ #[allow(unused_imports)] use serde_json::Value; -#[derive(Debug, serde_derive::Serialize, serde_derive::Deserialize)] +#[derive(Debug, serde::Serialize, serde::Deserialize)] pub struct Body3 { /// The swarm's unlock key. #[serde(rename = "UnlockKey", skip_serializing_if = "Option::is_none")] diff --git a/edgelet/docker-rs/src/models/build_info.rs b/edgelet/docker-rs/src/models/build_info.rs index 829446be861..c9d469d9d8c 100644 --- a/edgelet/docker-rs/src/models/build_info.rs +++ b/edgelet/docker-rs/src/models/build_info.rs @@ -11,7 +11,7 @@ #[allow(unused_imports)] use serde_json::Value; -#[derive(Debug, serde_derive::Serialize, serde_derive::Deserialize)] +#[derive(Debug, serde::Serialize, serde::Deserialize)] pub struct BuildInfo { #[serde(rename = "id", skip_serializing_if = "Option::is_none")] id: Option, diff --git a/edgelet/docker-rs/src/models/cluster_info.rs b/edgelet/docker-rs/src/models/cluster_info.rs index b5906af0839..b9d8243821d 100644 --- a/edgelet/docker-rs/src/models/cluster_info.rs +++ b/edgelet/docker-rs/src/models/cluster_info.rs @@ -13,7 +13,7 @@ #[allow(unused_imports)] use serde_json::Value; -#[derive(Debug, serde_derive::Serialize, serde_derive::Deserialize)] +#[derive(Debug, serde::Serialize, serde::Deserialize)] pub struct ClusterInfo { /// The ID of the swarm. #[serde(rename = "ID", skip_serializing_if = "Option::is_none")] diff --git a/edgelet/docker-rs/src/models/commit.rs b/edgelet/docker-rs/src/models/commit.rs index 0eb75d456aa..2f3324394fe 100644 --- a/edgelet/docker-rs/src/models/commit.rs +++ b/edgelet/docker-rs/src/models/commit.rs @@ -13,7 +13,7 @@ #[allow(unused_imports)] use serde_json::Value; -#[derive(Debug, serde_derive::Serialize, serde_derive::Deserialize)] +#[derive(Debug, serde::Serialize, serde::Deserialize)] pub struct Commit { /// Actual commit ID of external tool. #[serde(rename = "ID", skip_serializing_if = "Option::is_none")] diff --git a/edgelet/docker-rs/src/models/config.rs b/edgelet/docker-rs/src/models/config.rs index 6dae81327ed..5a4544b4466 100644 --- a/edgelet/docker-rs/src/models/config.rs +++ b/edgelet/docker-rs/src/models/config.rs @@ -11,7 +11,7 @@ #[allow(unused_imports)] use serde_json::Value; -#[derive(Debug, serde_derive::Serialize, serde_derive::Deserialize)] +#[derive(Debug, serde::Serialize, serde::Deserialize)] pub struct Config { #[serde(rename = "ID", skip_serializing_if = "Option::is_none")] ID: Option, diff --git a/edgelet/docker-rs/src/models/config_create_body.rs b/edgelet/docker-rs/src/models/config_create_body.rs index bd1c58f6f86..98bb1daa5ba 100644 --- a/edgelet/docker-rs/src/models/config_create_body.rs +++ b/edgelet/docker-rs/src/models/config_create_body.rs @@ -11,7 +11,7 @@ #[allow(unused_imports)] use serde_json::Value; -#[derive(Debug, serde_derive::Serialize, serde_derive::Deserialize)] +#[derive(Debug, serde::Serialize, serde::Deserialize)] pub struct ConfigCreateBody { /// User-defined name of the config. #[serde(rename = "Name", skip_serializing_if = "Option::is_none")] diff --git a/edgelet/docker-rs/src/models/config_spec.rs b/edgelet/docker-rs/src/models/config_spec.rs index 6b211899469..5b6563f251d 100644 --- a/edgelet/docker-rs/src/models/config_spec.rs +++ b/edgelet/docker-rs/src/models/config_spec.rs @@ -11,7 +11,7 @@ #[allow(unused_imports)] use serde_json::Value; -#[derive(Debug, serde_derive::Serialize, serde_derive::Deserialize)] +#[derive(Debug, serde::Serialize, serde::Deserialize)] pub struct ConfigSpec { /// User-defined name of the config. #[serde(rename = "Name", skip_serializing_if = "Option::is_none")] diff --git a/edgelet/docker-rs/src/models/container.rs b/edgelet/docker-rs/src/models/container.rs index a85e614a4c8..6429d36bec0 100644 --- a/edgelet/docker-rs/src/models/container.rs +++ b/edgelet/docker-rs/src/models/container.rs @@ -11,7 +11,7 @@ #[allow(unused_imports)] use serde_json::Value; -#[derive(Debug, serde_derive::Serialize, serde_derive::Deserialize)] +#[derive(Debug, serde::Serialize, serde::Deserialize)] pub struct Container { /// The ID or name of the container to connect to the network. #[serde(rename = "Container", skip_serializing_if = "Option::is_none")] diff --git a/edgelet/docker-rs/src/models/container_1.rs b/edgelet/docker-rs/src/models/container_1.rs index dd45ffb8013..d90c4998644 100644 --- a/edgelet/docker-rs/src/models/container_1.rs +++ b/edgelet/docker-rs/src/models/container_1.rs @@ -11,7 +11,7 @@ #[allow(unused_imports)] use serde_json::Value; -#[derive(Debug, serde_derive::Serialize, serde_derive::Deserialize)] +#[derive(Debug, serde::Serialize, serde::Deserialize)] pub struct Container1 { /// The ID or name of the container to disconnect from the network. #[serde(rename = "Container", skip_serializing_if = "Option::is_none")] diff --git a/edgelet/docker-rs/src/models/container_config.rs b/edgelet/docker-rs/src/models/container_config.rs index 9696ee3bd31..71095d28242 100644 --- a/edgelet/docker-rs/src/models/container_config.rs +++ b/edgelet/docker-rs/src/models/container_config.rs @@ -13,7 +13,7 @@ #[allow(unused_imports)] use serde_json::Value; -#[derive(Debug, serde_derive::Serialize, serde_derive::Deserialize)] +#[derive(Debug, serde::Serialize, serde::Deserialize)] pub struct ContainerConfig { /// The hostname to use for the container, as a valid RFC 1123 hostname. #[serde(rename = "Hostname", skip_serializing_if = "Option::is_none")] diff --git a/edgelet/docker-rs/src/models/container_create_body.rs b/edgelet/docker-rs/src/models/container_create_body.rs index bf650f272ed..ee81397bbb7 100644 --- a/edgelet/docker-rs/src/models/container_create_body.rs +++ b/edgelet/docker-rs/src/models/container_create_body.rs @@ -36,7 +36,7 @@ use serde_json::Value; // - Otherwise if it references another type under `crate::models::`, then ensure that that type also has a `#[serde(flatten)] BTreeMap` property // and is commented out as much as possible. Also copy this devnote there for future readers. -#[derive(Debug, serde_derive::Serialize, serde_derive::Deserialize, Clone, Default)] +#[derive(Debug, serde::Serialize, serde::Deserialize, Clone, Default)] pub struct ContainerCreateBody { /// The hostname to use for the container, as a valid RFC 1123 hostname. #[serde(rename = "Hostname", skip_serializing_if = "Option::is_none")] diff --git a/edgelet/docker-rs/src/models/container_create_body_networking_config.rs b/edgelet/docker-rs/src/models/container_create_body_networking_config.rs index ddf47f417ab..8c922a11833 100644 --- a/edgelet/docker-rs/src/models/container_create_body_networking_config.rs +++ b/edgelet/docker-rs/src/models/container_create_body_networking_config.rs @@ -38,7 +38,7 @@ use serde_json::Value; // - Otherwise if it references another type under `crate::models::`, then ensure that that type also has a `#[serde(flatten)] BTreeMap` property // and is commented out as much as possible. Also copy this devnote there for future readers. -#[derive(Debug, serde_derive::Serialize, serde_derive::Deserialize, Clone)] +#[derive(Debug, serde::Serialize, serde::Deserialize, Clone)] pub struct ContainerCreateBodyNetworkingConfig { /// A mapping of network name to endpoint configuration for that network. #[serde(rename = "EndpointsConfig", skip_serializing_if = "Option::is_none")] diff --git a/edgelet/docker-rs/src/models/container_summary.rs b/edgelet/docker-rs/src/models/container_summary.rs index ca21e347026..e9ca6755ca0 100644 --- a/edgelet/docker-rs/src/models/container_summary.rs +++ b/edgelet/docker-rs/src/models/container_summary.rs @@ -11,7 +11,7 @@ #[allow(unused_imports)] use serde_json::Value; -#[derive(Debug, serde_derive::Serialize, serde_derive::Deserialize)] +#[derive(Debug, serde::Serialize, serde::Deserialize)] pub struct ContainerSummary { #[serde(rename = "Id")] id: String, @@ -248,7 +248,7 @@ impl ContainerSummary { } } -#[derive(Debug, serde_derive::Serialize, serde_derive::Deserialize)] +#[derive(Debug, serde::Serialize, serde::Deserialize)] pub struct ContainerHostConfig { #[serde(rename = "NetworkMode")] network_mode: String, @@ -275,7 +275,7 @@ impl ContainerHostConfig { } } -#[derive(Debug, serde_derive::Serialize, serde_derive::Deserialize)] +#[derive(Debug, serde::Serialize, serde::Deserialize)] pub struct ContainerNetworkSettings { #[serde(rename = "Networks")] networks: ::std::collections::HashMap, diff --git a/edgelet/docker-rs/src/models/container_summary_inner.rs b/edgelet/docker-rs/src/models/container_summary_inner.rs index 5d949a6b5eb..2f514fb5b4f 100644 --- a/edgelet/docker-rs/src/models/container_summary_inner.rs +++ b/edgelet/docker-rs/src/models/container_summary_inner.rs @@ -11,7 +11,7 @@ #[allow(unused_imports)] use serde_json::Value; -#[derive(Debug, serde_derive::Serialize, serde_derive::Deserialize)] +#[derive(Debug, serde::Serialize, serde::Deserialize)] pub struct ContainerSummaryInner { /// The ID of this container #[serde(rename = "Id", skip_serializing_if = "Option::is_none")] diff --git a/edgelet/docker-rs/src/models/container_summary_inner_host_config.rs b/edgelet/docker-rs/src/models/container_summary_inner_host_config.rs index a905b3b48d1..88f17de84f8 100644 --- a/edgelet/docker-rs/src/models/container_summary_inner_host_config.rs +++ b/edgelet/docker-rs/src/models/container_summary_inner_host_config.rs @@ -11,7 +11,7 @@ #[allow(unused_imports)] use serde_json::Value; -#[derive(Debug, serde_derive::Serialize, serde_derive::Deserialize)] +#[derive(Debug, serde::Serialize, serde::Deserialize)] pub struct ContainerSummaryInnerHostConfig { #[serde(rename = "NetworkMode", skip_serializing_if = "Option::is_none")] network_mode: Option, diff --git a/edgelet/docker-rs/src/models/container_summary_inner_network_settings.rs b/edgelet/docker-rs/src/models/container_summary_inner_network_settings.rs index a4eb1a85d62..972aca1f2fe 100644 --- a/edgelet/docker-rs/src/models/container_summary_inner_network_settings.rs +++ b/edgelet/docker-rs/src/models/container_summary_inner_network_settings.rs @@ -13,7 +13,7 @@ #[allow(unused_imports)] use serde_json::Value; -#[derive(Debug, serde_derive::Serialize, serde_derive::Deserialize)] +#[derive(Debug, serde::Serialize, serde::Deserialize)] pub struct ContainerSummaryInnerNetworkSettings { #[serde(rename = "Networks", skip_serializing_if = "Option::is_none")] networks: Option<::std::collections::HashMap>, diff --git a/edgelet/docker-rs/src/models/container_update_update.rs b/edgelet/docker-rs/src/models/container_update_update.rs index 1dad6ece97a..15d11f464cf 100644 --- a/edgelet/docker-rs/src/models/container_update_update.rs +++ b/edgelet/docker-rs/src/models/container_update_update.rs @@ -11,7 +11,7 @@ #[allow(unused_imports)] use serde_json::Value; -#[derive(Debug, serde_derive::Serialize, serde_derive::Deserialize)] +#[derive(Debug, serde::Serialize, serde::Deserialize)] pub struct ContainerUpdateUpdate { /// An integer value representing this container's relative CPU weight versus other containers. #[serde(rename = "CpuShares", skip_serializing_if = "Option::is_none")] diff --git a/edgelet/docker-rs/src/models/create_image_info.rs b/edgelet/docker-rs/src/models/create_image_info.rs index 247ad136aa4..dc944c638a7 100644 --- a/edgelet/docker-rs/src/models/create_image_info.rs +++ b/edgelet/docker-rs/src/models/create_image_info.rs @@ -11,7 +11,7 @@ #[allow(unused_imports)] use serde_json::Value; -#[derive(Debug, serde_derive::Serialize, serde_derive::Deserialize)] +#[derive(Debug, serde::Serialize, serde::Deserialize)] pub struct CreateImageInfo { #[serde(rename = "error", skip_serializing_if = "Option::is_none")] error: Option, diff --git a/edgelet/docker-rs/src/models/device_mapping.rs b/edgelet/docker-rs/src/models/device_mapping.rs index dfd91bc44b9..13bc6c1e10d 100644 --- a/edgelet/docker-rs/src/models/device_mapping.rs +++ b/edgelet/docker-rs/src/models/device_mapping.rs @@ -13,7 +13,7 @@ #[allow(unused_imports)] use serde_json::Value; -#[derive(Debug, serde_derive::Serialize, serde_derive::Deserialize, Clone)] +#[derive(Debug, serde::Serialize, serde::Deserialize, Clone)] pub struct DeviceMapping { #[serde(rename = "PathOnHost", skip_serializing_if = "Option::is_none")] path_on_host: Option, diff --git a/edgelet/docker-rs/src/models/driver.rs b/edgelet/docker-rs/src/models/driver.rs index 7aaacb715bc..086ca83c8ad 100644 --- a/edgelet/docker-rs/src/models/driver.rs +++ b/edgelet/docker-rs/src/models/driver.rs @@ -13,7 +13,7 @@ #[allow(unused_imports)] use serde_json::Value; -#[derive(Debug, serde_derive::Serialize, serde_derive::Deserialize)] +#[derive(Debug, serde::Serialize, serde::Deserialize)] pub struct Driver { /// Name of the driver. #[serde(rename = "Name")] diff --git a/edgelet/docker-rs/src/models/endpoint_ipam_config.rs b/edgelet/docker-rs/src/models/endpoint_ipam_config.rs index 89488cf44b7..d7218dda36b 100644 --- a/edgelet/docker-rs/src/models/endpoint_ipam_config.rs +++ b/edgelet/docker-rs/src/models/endpoint_ipam_config.rs @@ -13,7 +13,7 @@ #[allow(unused_imports)] use serde_json::Value; -#[derive(Debug, serde_derive::Serialize, serde_derive::Deserialize, Clone)] +#[derive(Debug, serde::Serialize, serde::Deserialize, Clone)] pub struct EndpointIpamConfig { #[serde(rename = "IPv4Address", skip_serializing_if = "Option::is_none")] i_pv4_address: Option, diff --git a/edgelet/docker-rs/src/models/endpoint_port_config.rs b/edgelet/docker-rs/src/models/endpoint_port_config.rs index 9be090a0ce9..6eaf7922675 100644 --- a/edgelet/docker-rs/src/models/endpoint_port_config.rs +++ b/edgelet/docker-rs/src/models/endpoint_port_config.rs @@ -11,7 +11,7 @@ #[allow(unused_imports)] use serde_json::Value; -#[derive(Debug, serde_derive::Serialize, serde_derive::Deserialize)] +#[derive(Debug, serde::Serialize, serde::Deserialize)] pub struct EndpointPortConfig { #[serde(rename = "Name", skip_serializing_if = "Option::is_none")] name: Option, diff --git a/edgelet/docker-rs/src/models/endpoint_settings.rs b/edgelet/docker-rs/src/models/endpoint_settings.rs index 24a42e066c2..67a803f90b4 100644 --- a/edgelet/docker-rs/src/models/endpoint_settings.rs +++ b/edgelet/docker-rs/src/models/endpoint_settings.rs @@ -38,7 +38,7 @@ use serde_json::Value; // - Otherwise if it references another type under `crate::models::`, then ensure that that type also has a `#[serde(flatten)] BTreeMap` property // and is commented out as much as possible. Also copy this devnote there for future readers. -#[derive(Debug, serde_derive::Serialize, serde_derive::Deserialize, Clone)] +#[derive(Debug, serde::Serialize, serde::Deserialize, Clone)] pub struct EndpointSettings { // #[serde(rename = "IPAMConfig", skip_serializing_if = "Option::is_none")] // ipam_config: Option, diff --git a/edgelet/docker-rs/src/models/endpoint_spec.rs b/edgelet/docker-rs/src/models/endpoint_spec.rs index c3d56be8d2b..b08a12d4320 100644 --- a/edgelet/docker-rs/src/models/endpoint_spec.rs +++ b/edgelet/docker-rs/src/models/endpoint_spec.rs @@ -13,7 +13,7 @@ #[allow(unused_imports)] use serde_json::Value; -#[derive(Debug, serde_derive::Serialize, serde_derive::Deserialize)] +#[derive(Debug, serde::Serialize, serde::Deserialize)] pub struct EndpointSpec { /// The mode of resolution to use for internal load balancing between tasks. #[serde(rename = "Mode", skip_serializing_if = "Option::is_none")] diff --git a/edgelet/docker-rs/src/models/engine_description.rs b/edgelet/docker-rs/src/models/engine_description.rs index 9b5e8180c25..72056dcb027 100644 --- a/edgelet/docker-rs/src/models/engine_description.rs +++ b/edgelet/docker-rs/src/models/engine_description.rs @@ -13,7 +13,7 @@ #[allow(unused_imports)] use serde_json::Value; -#[derive(Debug, serde_derive::Serialize, serde_derive::Deserialize)] +#[derive(Debug, serde::Serialize, serde::Deserialize)] pub struct EngineDescription { #[serde(rename = "EngineVersion", skip_serializing_if = "Option::is_none")] engine_version: Option, diff --git a/edgelet/docker-rs/src/models/engine_description_plugins.rs b/edgelet/docker-rs/src/models/engine_description_plugins.rs index fe40748586b..d95cab5e8f3 100644 --- a/edgelet/docker-rs/src/models/engine_description_plugins.rs +++ b/edgelet/docker-rs/src/models/engine_description_plugins.rs @@ -11,7 +11,7 @@ #[allow(unused_imports)] use serde_json::Value; -#[derive(Debug, serde_derive::Serialize, serde_derive::Deserialize)] +#[derive(Debug, serde::Serialize, serde::Deserialize)] pub struct EngineDescriptionPlugins { #[serde(rename = "Type", skip_serializing_if = "Option::is_none")] _type: Option, diff --git a/edgelet/docker-rs/src/models/error_detail.rs b/edgelet/docker-rs/src/models/error_detail.rs index a845be13ebe..e18538dfa53 100644 --- a/edgelet/docker-rs/src/models/error_detail.rs +++ b/edgelet/docker-rs/src/models/error_detail.rs @@ -11,7 +11,7 @@ #[allow(unused_imports)] use serde_json::Value; -#[derive(Debug, serde_derive::Serialize, serde_derive::Deserialize)] +#[derive(Debug, serde::Serialize, serde::Deserialize)] pub struct ErrorDetail { #[serde(rename = "code", skip_serializing_if = "Option::is_none")] code: Option, diff --git a/edgelet/docker-rs/src/models/error_response.rs b/edgelet/docker-rs/src/models/error_response.rs index 11f53ed48aa..9f68482fbeb 100644 --- a/edgelet/docker-rs/src/models/error_response.rs +++ b/edgelet/docker-rs/src/models/error_response.rs @@ -13,7 +13,7 @@ #[allow(unused_imports)] use serde_json::Value; -#[derive(Debug, serde_derive::Serialize, serde_derive::Deserialize)] +#[derive(Debug, serde::Serialize, serde::Deserialize)] pub struct ErrorResponse { /// The error message. #[serde(rename = "message")] diff --git a/edgelet/docker-rs/src/models/exec_config.rs b/edgelet/docker-rs/src/models/exec_config.rs index b7e797702e8..858c3a24d5c 100644 --- a/edgelet/docker-rs/src/models/exec_config.rs +++ b/edgelet/docker-rs/src/models/exec_config.rs @@ -11,7 +11,7 @@ #[allow(unused_imports)] use serde_json::Value; -#[derive(Debug, serde_derive::Serialize, serde_derive::Deserialize)] +#[derive(Debug, serde::Serialize, serde::Deserialize)] pub struct ExecConfig { /// Attach to `stdin` of the exec command. #[serde(rename = "AttachStdin", skip_serializing_if = "Option::is_none")] diff --git a/edgelet/docker-rs/src/models/exec_start_config.rs b/edgelet/docker-rs/src/models/exec_start_config.rs index bcde9a58179..6862036f8f5 100644 --- a/edgelet/docker-rs/src/models/exec_start_config.rs +++ b/edgelet/docker-rs/src/models/exec_start_config.rs @@ -11,7 +11,7 @@ #[allow(unused_imports)] use serde_json::Value; -#[derive(Debug, serde_derive::Serialize, serde_derive::Deserialize)] +#[derive(Debug, serde::Serialize, serde::Deserialize)] pub struct ExecStartConfig { /// Detach from the command. #[serde(rename = "Detach", skip_serializing_if = "Option::is_none")] diff --git a/edgelet/docker-rs/src/models/generic_resources.rs b/edgelet/docker-rs/src/models/generic_resources.rs index 593d72c7dd5..1200255894a 100644 --- a/edgelet/docker-rs/src/models/generic_resources.rs +++ b/edgelet/docker-rs/src/models/generic_resources.rs @@ -13,7 +13,7 @@ #[allow(unused_imports)] use serde_json::Value; -#[derive(Debug, serde_derive::Serialize, serde_derive::Deserialize)] +#[derive(Debug, serde::Serialize, serde::Deserialize)] pub struct GenericResources {} impl GenericResources { diff --git a/edgelet/docker-rs/src/models/generic_resources_inner.rs b/edgelet/docker-rs/src/models/generic_resources_inner.rs index bda6619fdc6..99d5dd970e5 100644 --- a/edgelet/docker-rs/src/models/generic_resources_inner.rs +++ b/edgelet/docker-rs/src/models/generic_resources_inner.rs @@ -11,7 +11,7 @@ #[allow(unused_imports)] use serde_json::Value; -#[derive(Debug, serde_derive::Serialize, serde_derive::Deserialize)] +#[derive(Debug, serde::Serialize, serde::Deserialize)] pub struct GenericResourcesInner { #[serde(rename = "NamedResourceSpec", skip_serializing_if = "Option::is_none")] named_resource_spec: Option, diff --git a/edgelet/docker-rs/src/models/generic_resources_inner_discrete_resource_spec.rs b/edgelet/docker-rs/src/models/generic_resources_inner_discrete_resource_spec.rs index 761c060eab7..6c3ba7d78a8 100644 --- a/edgelet/docker-rs/src/models/generic_resources_inner_discrete_resource_spec.rs +++ b/edgelet/docker-rs/src/models/generic_resources_inner_discrete_resource_spec.rs @@ -11,7 +11,7 @@ #[allow(unused_imports)] use serde_json::Value; -#[derive(Debug, serde_derive::Serialize, serde_derive::Deserialize)] +#[derive(Debug, serde::Serialize, serde::Deserialize)] pub struct GenericResourcesInnerDiscreteResourceSpec { #[serde(rename = "Kind", skip_serializing_if = "Option::is_none")] kind: Option, diff --git a/edgelet/docker-rs/src/models/generic_resources_inner_named_resource_spec.rs b/edgelet/docker-rs/src/models/generic_resources_inner_named_resource_spec.rs index 99cb849a48d..6fccb8ea220 100644 --- a/edgelet/docker-rs/src/models/generic_resources_inner_named_resource_spec.rs +++ b/edgelet/docker-rs/src/models/generic_resources_inner_named_resource_spec.rs @@ -11,7 +11,7 @@ #[allow(unused_imports)] use serde_json::Value; -#[derive(Debug, serde_derive::Serialize, serde_derive::Deserialize)] +#[derive(Debug, serde::Serialize, serde::Deserialize)] pub struct GenericResourcesInnerNamedResourceSpec { #[serde(rename = "Kind", skip_serializing_if = "Option::is_none")] kind: Option, diff --git a/edgelet/docker-rs/src/models/graph_driver_data.rs b/edgelet/docker-rs/src/models/graph_driver_data.rs index 978e3cb41ce..d4aa2d802fa 100644 --- a/edgelet/docker-rs/src/models/graph_driver_data.rs +++ b/edgelet/docker-rs/src/models/graph_driver_data.rs @@ -13,7 +13,7 @@ #[allow(unused_imports)] use serde_json::Value; -#[derive(Debug, serde_derive::Serialize, serde_derive::Deserialize)] +#[derive(Debug, serde::Serialize, serde::Deserialize)] pub struct GraphDriverData { #[serde(rename = "Name")] name: String, diff --git a/edgelet/docker-rs/src/models/health_config.rs b/edgelet/docker-rs/src/models/health_config.rs index 9843b9a16fa..68356c7afa3 100644 --- a/edgelet/docker-rs/src/models/health_config.rs +++ b/edgelet/docker-rs/src/models/health_config.rs @@ -13,7 +13,7 @@ #[allow(unused_imports)] use serde_json::Value; -#[derive(Debug, serde_derive::Serialize, serde_derive::Deserialize, Clone)] +#[derive(Debug, serde::Serialize, serde::Deserialize, Clone)] pub struct HealthConfig { /// The test to perform. Possible values are: - `[]` inherit healthcheck from image or parent image - `[\"NONE\"]` disable healthcheck - `[\"CMD\", args...]` exec arguments directly - `[\"CMD-SHELL\", command]` run command with system's default shell #[serde(rename = "Test", skip_serializing_if = "Option::is_none")] diff --git a/edgelet/docker-rs/src/models/host_config.rs b/edgelet/docker-rs/src/models/host_config.rs index da955e4a879..ac3a148adb8 100644 --- a/edgelet/docker-rs/src/models/host_config.rs +++ b/edgelet/docker-rs/src/models/host_config.rs @@ -38,7 +38,7 @@ use serde_json::Value; // - Otherwise if it references another type under `crate::models::`, then ensure that that type also has a `#[serde(flatten)] BTreeMap` property // and is commented out as much as possible. Also copy this devnote there for future readers. -#[derive(Debug, serde_derive::Serialize, serde_derive::Deserialize, Clone)] +#[derive(Debug, serde::Serialize, serde::Deserialize, Clone)] pub struct HostConfig { // /// An integer value representing this container's relative CPU weight versus other containers. // #[serde(rename = "CpuShares", skip_serializing_if = "Option::is_none")] diff --git a/edgelet/docker-rs/src/models/host_config_log_config.rs b/edgelet/docker-rs/src/models/host_config_log_config.rs index e5ff2ce4474..e6a3671e9d9 100644 --- a/edgelet/docker-rs/src/models/host_config_log_config.rs +++ b/edgelet/docker-rs/src/models/host_config_log_config.rs @@ -13,7 +13,7 @@ #[allow(unused_imports)] use serde_json::Value; -#[derive(Debug, serde_derive::Serialize, serde_derive::Deserialize, Clone)] +#[derive(Debug, serde::Serialize, serde::Deserialize, Clone)] pub struct HostConfigLogConfig { #[serde(rename = "Type", skip_serializing_if = "Option::is_none")] _type: Option, diff --git a/edgelet/docker-rs/src/models/host_config_port_bindings.rs b/edgelet/docker-rs/src/models/host_config_port_bindings.rs index 895c713cb54..a8a85255bf1 100644 --- a/edgelet/docker-rs/src/models/host_config_port_bindings.rs +++ b/edgelet/docker-rs/src/models/host_config_port_bindings.rs @@ -36,7 +36,7 @@ use serde_json::Value; // - Otherwise if it references another type under `crate::models::`, then ensure that that type also has a `#[serde(flatten)] BTreeMap` property // and is commented out as much as possible. Also copy this devnote there for future readers. -#[derive(Debug, serde_derive::Serialize, serde_derive::Deserialize, Clone)] +#[derive(Debug, serde::Serialize, serde::Deserialize, Clone)] pub struct HostConfigPortBindings { // /// The host IP address // #[serde(rename = "HostIp", skip_serializing_if = "Option::is_none")] diff --git a/edgelet/docker-rs/src/models/id_response.rs b/edgelet/docker-rs/src/models/id_response.rs index a61b3db1a07..15f83cccc0e 100644 --- a/edgelet/docker-rs/src/models/id_response.rs +++ b/edgelet/docker-rs/src/models/id_response.rs @@ -13,7 +13,7 @@ #[allow(unused_imports)] use serde_json::Value; -#[derive(Debug, serde_derive::Serialize, serde_derive::Deserialize)] +#[derive(Debug, serde::Serialize, serde::Deserialize)] pub struct IdResponse { /// The id of the newly created object. #[serde(rename = "Id")] diff --git a/edgelet/docker-rs/src/models/image.rs b/edgelet/docker-rs/src/models/image.rs index ce52591cbc9..a0c1e06f5ca 100644 --- a/edgelet/docker-rs/src/models/image.rs +++ b/edgelet/docker-rs/src/models/image.rs @@ -11,7 +11,7 @@ #[allow(unused_imports)] use serde_json::Value; -#[derive(Debug, serde_derive::Serialize, serde_derive::Deserialize)] +#[derive(Debug, serde::Serialize, serde::Deserialize)] pub struct Image { #[serde(rename = "Id")] id: String, diff --git a/edgelet/docker-rs/src/models/image_delete_response_item.rs b/edgelet/docker-rs/src/models/image_delete_response_item.rs index cff5faab042..ebd00e458ee 100644 --- a/edgelet/docker-rs/src/models/image_delete_response_item.rs +++ b/edgelet/docker-rs/src/models/image_delete_response_item.rs @@ -11,7 +11,7 @@ #[allow(unused_imports)] use serde_json::Value; -#[derive(Debug, serde_derive::Serialize, serde_derive::Deserialize)] +#[derive(Debug, serde::Serialize, serde::Deserialize)] pub struct ImageDeleteResponseItem { /// The image ID of an image that was untagged #[serde(rename = "Untagged", skip_serializing_if = "Option::is_none")] diff --git a/edgelet/docker-rs/src/models/image_metadata.rs b/edgelet/docker-rs/src/models/image_metadata.rs index a4509bbba3c..901e72f19f7 100644 --- a/edgelet/docker-rs/src/models/image_metadata.rs +++ b/edgelet/docker-rs/src/models/image_metadata.rs @@ -11,7 +11,7 @@ #[allow(unused_imports)] use serde_json::Value; -#[derive(Debug, serde_derive::Serialize, serde_derive::Deserialize)] +#[derive(Debug, serde::Serialize, serde::Deserialize)] pub struct ImageMetadata { #[serde(rename = "LastTagTime", skip_serializing_if = "Option::is_none")] last_tag_time: Option, diff --git a/edgelet/docker-rs/src/models/image_root_fs.rs b/edgelet/docker-rs/src/models/image_root_fs.rs index 8dc2aeaa181..369ced5008f 100644 --- a/edgelet/docker-rs/src/models/image_root_fs.rs +++ b/edgelet/docker-rs/src/models/image_root_fs.rs @@ -11,7 +11,7 @@ #[allow(unused_imports)] use serde_json::Value; -#[derive(Debug, serde_derive::Serialize, serde_derive::Deserialize)] +#[derive(Debug, serde::Serialize, serde::Deserialize)] pub struct ImageRootFs { #[serde(rename = "Type")] _type: String, diff --git a/edgelet/docker-rs/src/models/image_summary.rs b/edgelet/docker-rs/src/models/image_summary.rs index e3418005f57..5776d1226dc 100644 --- a/edgelet/docker-rs/src/models/image_summary.rs +++ b/edgelet/docker-rs/src/models/image_summary.rs @@ -12,7 +12,7 @@ use serde::{Deserialize, Deserializer}; #[allow(unused_imports)] use serde_json::Value; -#[derive(Debug, serde_derive::Serialize, serde_derive::Deserialize)] +#[derive(Debug, serde::Serialize, serde::Deserialize)] pub struct ImageSummary { #[serde(rename = "Id")] id: String, diff --git a/edgelet/docker-rs/src/models/index_info.rs b/edgelet/docker-rs/src/models/index_info.rs index bc001ddd117..e4086984c51 100644 --- a/edgelet/docker-rs/src/models/index_info.rs +++ b/edgelet/docker-rs/src/models/index_info.rs @@ -13,7 +13,7 @@ #[allow(unused_imports)] use serde_json::Value; -#[derive(Debug, serde_derive::Serialize, serde_derive::Deserialize)] +#[derive(Debug, serde::Serialize, serde::Deserialize)] pub struct IndexInfo { /// Name of the registry, such as \"docker.io\". #[serde(rename = "Name", skip_serializing_if = "Option::is_none")] diff --git a/edgelet/docker-rs/src/models/inline_response_200.rs b/edgelet/docker-rs/src/models/inline_response_200.rs index e976a79a9c9..bf055398d53 100644 --- a/edgelet/docker-rs/src/models/inline_response_200.rs +++ b/edgelet/docker-rs/src/models/inline_response_200.rs @@ -11,7 +11,7 @@ #[allow(unused_imports)] use serde_json::Value; -#[derive(Debug, serde_derive::Serialize, serde_derive::Deserialize)] +#[derive(Debug, serde::Serialize, serde::Deserialize)] pub struct InlineResponse200 { /// The ID of the container #[serde(rename = "Id", skip_serializing_if = "Option::is_none")] diff --git a/edgelet/docker-rs/src/models/inline_response_200_1.rs b/edgelet/docker-rs/src/models/inline_response_200_1.rs index ae2942669e7..160ce7a5390 100644 --- a/edgelet/docker-rs/src/models/inline_response_200_1.rs +++ b/edgelet/docker-rs/src/models/inline_response_200_1.rs @@ -11,7 +11,7 @@ #[allow(unused_imports)] use serde_json::Value; -#[derive(Debug, serde_derive::Serialize, serde_derive::Deserialize)] +#[derive(Debug, serde::Serialize, serde::Deserialize)] pub struct InlineResponse2001 { /// The ps column titles #[serde(rename = "Titles", skip_serializing_if = "Option::is_none")] diff --git a/edgelet/docker-rs/src/models/inline_response_200_10.rs b/edgelet/docker-rs/src/models/inline_response_200_10.rs index 98b85db7caf..3f1a72aff66 100644 --- a/edgelet/docker-rs/src/models/inline_response_200_10.rs +++ b/edgelet/docker-rs/src/models/inline_response_200_10.rs @@ -11,7 +11,7 @@ #[allow(unused_imports)] use serde_json::Value; -#[derive(Debug, serde_derive::Serialize, serde_derive::Deserialize)] +#[derive(Debug, serde::Serialize, serde::Deserialize)] pub struct InlineResponse20010 { /// The status of the authentication #[serde(rename = "Status")] diff --git a/edgelet/docker-rs/src/models/inline_response_200_11.rs b/edgelet/docker-rs/src/models/inline_response_200_11.rs index 3bda6af734c..59b6dba98bd 100644 --- a/edgelet/docker-rs/src/models/inline_response_200_11.rs +++ b/edgelet/docker-rs/src/models/inline_response_200_11.rs @@ -11,7 +11,7 @@ #[allow(unused_imports)] use serde_json::Value; -#[derive(Debug, serde_derive::Serialize, serde_derive::Deserialize)] +#[derive(Debug, serde::Serialize, serde::Deserialize)] pub struct InlineResponse20011 { #[serde(rename = "Version", skip_serializing_if = "Option::is_none")] version: Option, diff --git a/edgelet/docker-rs/src/models/inline_response_200_12.rs b/edgelet/docker-rs/src/models/inline_response_200_12.rs index db29f99b26f..369e167b02b 100644 --- a/edgelet/docker-rs/src/models/inline_response_200_12.rs +++ b/edgelet/docker-rs/src/models/inline_response_200_12.rs @@ -11,7 +11,7 @@ #[allow(unused_imports)] use serde_json::Value; -#[derive(Debug, serde_derive::Serialize, serde_derive::Deserialize)] +#[derive(Debug, serde::Serialize, serde::Deserialize)] pub struct InlineResponse20012 { /// The type of object emitting the event #[serde(rename = "Type", skip_serializing_if = "Option::is_none")] diff --git a/edgelet/docker-rs/src/models/inline_response_200_12_actor.rs b/edgelet/docker-rs/src/models/inline_response_200_12_actor.rs index e1818357131..1f8d84be691 100644 --- a/edgelet/docker-rs/src/models/inline_response_200_12_actor.rs +++ b/edgelet/docker-rs/src/models/inline_response_200_12_actor.rs @@ -11,7 +11,7 @@ #[allow(unused_imports)] use serde_json::Value; -#[derive(Debug, serde_derive::Serialize, serde_derive::Deserialize)] +#[derive(Debug, serde::Serialize, serde::Deserialize)] pub struct InlineResponse20012Actor { /// The ID of the object emitting the event #[serde(rename = "ID", skip_serializing_if = "Option::is_none")] diff --git a/edgelet/docker-rs/src/models/inline_response_200_13.rs b/edgelet/docker-rs/src/models/inline_response_200_13.rs index 8debd724cac..8a0363f4c88 100644 --- a/edgelet/docker-rs/src/models/inline_response_200_13.rs +++ b/edgelet/docker-rs/src/models/inline_response_200_13.rs @@ -11,7 +11,7 @@ #[allow(unused_imports)] use serde_json::Value; -#[derive(Debug, serde_derive::Serialize, serde_derive::Deserialize)] +#[derive(Debug, serde::Serialize, serde::Deserialize)] pub struct InlineResponse20013 { #[serde(rename = "LayersSize", skip_serializing_if = "Option::is_none")] layers_size: Option, diff --git a/edgelet/docker-rs/src/models/inline_response_200_14.rs b/edgelet/docker-rs/src/models/inline_response_200_14.rs index 0a65ff2f330..bfcdd52d3f8 100644 --- a/edgelet/docker-rs/src/models/inline_response_200_14.rs +++ b/edgelet/docker-rs/src/models/inline_response_200_14.rs @@ -11,7 +11,7 @@ #[allow(unused_imports)] use serde_json::Value; -#[derive(Debug, serde_derive::Serialize, serde_derive::Deserialize)] +#[derive(Debug, serde::Serialize, serde::Deserialize)] pub struct InlineResponse20014 { #[serde(rename = "ID", skip_serializing_if = "Option::is_none")] ID: Option, diff --git a/edgelet/docker-rs/src/models/inline_response_200_15.rs b/edgelet/docker-rs/src/models/inline_response_200_15.rs index e8efc0255b7..7b39f7a7af2 100644 --- a/edgelet/docker-rs/src/models/inline_response_200_15.rs +++ b/edgelet/docker-rs/src/models/inline_response_200_15.rs @@ -11,7 +11,7 @@ #[allow(unused_imports)] use serde_json::Value; -#[derive(Debug, serde_derive::Serialize, serde_derive::Deserialize)] +#[derive(Debug, serde::Serialize, serde::Deserialize)] pub struct InlineResponse20015 { /// List of volumes #[serde(rename = "Volumes")] diff --git a/edgelet/docker-rs/src/models/inline_response_200_16.rs b/edgelet/docker-rs/src/models/inline_response_200_16.rs index 8ff2138b068..dd47a78a0ee 100644 --- a/edgelet/docker-rs/src/models/inline_response_200_16.rs +++ b/edgelet/docker-rs/src/models/inline_response_200_16.rs @@ -11,7 +11,7 @@ #[allow(unused_imports)] use serde_json::Value; -#[derive(Debug, serde_derive::Serialize, serde_derive::Deserialize)] +#[derive(Debug, serde::Serialize, serde::Deserialize)] pub struct InlineResponse20016 { /// Volumes that were deleted #[serde(rename = "VolumesDeleted", skip_serializing_if = "Option::is_none")] diff --git a/edgelet/docker-rs/src/models/inline_response_200_17.rs b/edgelet/docker-rs/src/models/inline_response_200_17.rs index 22e59fcabcf..0d3d425148a 100644 --- a/edgelet/docker-rs/src/models/inline_response_200_17.rs +++ b/edgelet/docker-rs/src/models/inline_response_200_17.rs @@ -11,7 +11,7 @@ #[allow(unused_imports)] use serde_json::Value; -#[derive(Debug, serde_derive::Serialize, serde_derive::Deserialize)] +#[derive(Debug, serde::Serialize, serde::Deserialize)] pub struct InlineResponse20017 { /// Networks that were deleted #[serde(rename = "NetworksDeleted", skip_serializing_if = "Option::is_none")] diff --git a/edgelet/docker-rs/src/models/inline_response_200_18.rs b/edgelet/docker-rs/src/models/inline_response_200_18.rs index 9d5bb735cc7..a6aa9f486b5 100644 --- a/edgelet/docker-rs/src/models/inline_response_200_18.rs +++ b/edgelet/docker-rs/src/models/inline_response_200_18.rs @@ -13,7 +13,7 @@ #[allow(unused_imports)] use serde_json::Value; -#[derive(Debug, serde_derive::Serialize, serde_derive::Deserialize)] +#[derive(Debug, serde::Serialize, serde::Deserialize)] pub struct InlineResponse20018 { #[serde(rename = "Name", skip_serializing_if = "Option::is_none")] name: Option, diff --git a/edgelet/docker-rs/src/models/inline_response_200_19.rs b/edgelet/docker-rs/src/models/inline_response_200_19.rs index 31c6661cfe1..83c401778de 100644 --- a/edgelet/docker-rs/src/models/inline_response_200_19.rs +++ b/edgelet/docker-rs/src/models/inline_response_200_19.rs @@ -11,7 +11,7 @@ #[allow(unused_imports)] use serde_json::Value; -#[derive(Debug, serde_derive::Serialize, serde_derive::Deserialize)] +#[derive(Debug, serde::Serialize, serde::Deserialize)] pub struct InlineResponse20019 { /// The swarm's unlock key. #[serde(rename = "UnlockKey", skip_serializing_if = "Option::is_none")] diff --git a/edgelet/docker-rs/src/models/inline_response_200_2.rs b/edgelet/docker-rs/src/models/inline_response_200_2.rs index b6f1f77590c..7d0e45cb74a 100644 --- a/edgelet/docker-rs/src/models/inline_response_200_2.rs +++ b/edgelet/docker-rs/src/models/inline_response_200_2.rs @@ -11,7 +11,7 @@ #[allow(unused_imports)] use serde_json::Value; -#[derive(Debug, serde_derive::Serialize, serde_derive::Deserialize)] +#[derive(Debug, serde::Serialize, serde::Deserialize)] pub struct InlineResponse2002 { /// Path to file that has changed #[serde(rename = "Path")] diff --git a/edgelet/docker-rs/src/models/inline_response_200_20.rs b/edgelet/docker-rs/src/models/inline_response_200_20.rs index 640ff2fedd0..59feec21258 100644 --- a/edgelet/docker-rs/src/models/inline_response_200_20.rs +++ b/edgelet/docker-rs/src/models/inline_response_200_20.rs @@ -11,7 +11,7 @@ #[allow(unused_imports)] use serde_json::Value; -#[derive(Debug, serde_derive::Serialize, serde_derive::Deserialize)] +#[derive(Debug, serde::Serialize, serde::Deserialize)] pub struct InlineResponse20020 { #[serde(rename = "Descriptor")] descriptor: crate::models::InlineResponse20020Descriptor, diff --git a/edgelet/docker-rs/src/models/inline_response_200_20_descriptor.rs b/edgelet/docker-rs/src/models/inline_response_200_20_descriptor.rs index 869e858f71f..26ddb41d8b1 100644 --- a/edgelet/docker-rs/src/models/inline_response_200_20_descriptor.rs +++ b/edgelet/docker-rs/src/models/inline_response_200_20_descriptor.rs @@ -13,7 +13,7 @@ #[allow(unused_imports)] use serde_json::Value; -#[derive(Debug, serde_derive::Serialize, serde_derive::Deserialize)] +#[derive(Debug, serde::Serialize, serde::Deserialize)] pub struct InlineResponse20020Descriptor { #[serde(rename = "MediaType", skip_serializing_if = "Option::is_none")] media_type: Option, diff --git a/edgelet/docker-rs/src/models/inline_response_200_20_platforms.rs b/edgelet/docker-rs/src/models/inline_response_200_20_platforms.rs index a8a11249117..de7064ec113 100644 --- a/edgelet/docker-rs/src/models/inline_response_200_20_platforms.rs +++ b/edgelet/docker-rs/src/models/inline_response_200_20_platforms.rs @@ -11,7 +11,7 @@ #[allow(unused_imports)] use serde_json::Value; -#[derive(Debug, serde_derive::Serialize, serde_derive::Deserialize)] +#[derive(Debug, serde::Serialize, serde::Deserialize)] pub struct InlineResponse20020Platforms { #[serde(rename = "Architecture", skip_serializing_if = "Option::is_none")] architecture: Option, diff --git a/edgelet/docker-rs/src/models/inline_response_200_3.rs b/edgelet/docker-rs/src/models/inline_response_200_3.rs index 009206450c2..6c23ad32e36 100644 --- a/edgelet/docker-rs/src/models/inline_response_200_3.rs +++ b/edgelet/docker-rs/src/models/inline_response_200_3.rs @@ -11,7 +11,7 @@ #[allow(unused_imports)] use serde_json::Value; -#[derive(Debug, serde_derive::Serialize, serde_derive::Deserialize)] +#[derive(Debug, serde::Serialize, serde::Deserialize)] pub struct InlineResponse2003 { #[serde(rename = "Warnings", skip_serializing_if = "Option::is_none")] warnings: Option>, diff --git a/edgelet/docker-rs/src/models/inline_response_200_4.rs b/edgelet/docker-rs/src/models/inline_response_200_4.rs index 68545140e5b..e0a665fd014 100644 --- a/edgelet/docker-rs/src/models/inline_response_200_4.rs +++ b/edgelet/docker-rs/src/models/inline_response_200_4.rs @@ -11,7 +11,7 @@ #[allow(unused_imports)] use serde_json::Value; -#[derive(Debug, serde_derive::Serialize, serde_derive::Deserialize)] +#[derive(Debug, serde::Serialize, serde::Deserialize)] pub struct InlineResponse2004 { /// Exit code of the container #[serde(rename = "StatusCode")] diff --git a/edgelet/docker-rs/src/models/inline_response_200_5.rs b/edgelet/docker-rs/src/models/inline_response_200_5.rs index 2525c4dad25..bc0d9f75052 100644 --- a/edgelet/docker-rs/src/models/inline_response_200_5.rs +++ b/edgelet/docker-rs/src/models/inline_response_200_5.rs @@ -11,7 +11,7 @@ #[allow(unused_imports)] use serde_json::Value; -#[derive(Debug, serde_derive::Serialize, serde_derive::Deserialize)] +#[derive(Debug, serde::Serialize, serde::Deserialize)] pub struct InlineResponse2005 { /// Container IDs that were deleted #[serde(rename = "ContainersDeleted", skip_serializing_if = "Option::is_none")] diff --git a/edgelet/docker-rs/src/models/inline_response_200_6.rs b/edgelet/docker-rs/src/models/inline_response_200_6.rs index 33d0b472926..f2c208e17d2 100644 --- a/edgelet/docker-rs/src/models/inline_response_200_6.rs +++ b/edgelet/docker-rs/src/models/inline_response_200_6.rs @@ -11,7 +11,7 @@ #[allow(unused_imports)] use serde_json::Value; -#[derive(Debug, serde_derive::Serialize, serde_derive::Deserialize)] +#[derive(Debug, serde::Serialize, serde::Deserialize)] pub struct InlineResponse2006 { /// Disk space reclaimed in bytes #[serde(rename = "SpaceReclaimed", skip_serializing_if = "Option::is_none")] diff --git a/edgelet/docker-rs/src/models/inline_response_200_7.rs b/edgelet/docker-rs/src/models/inline_response_200_7.rs index 4444d916852..ae18a82fd88 100644 --- a/edgelet/docker-rs/src/models/inline_response_200_7.rs +++ b/edgelet/docker-rs/src/models/inline_response_200_7.rs @@ -11,7 +11,7 @@ #[allow(unused_imports)] use serde_json::Value; -#[derive(Debug, serde_derive::Serialize, serde_derive::Deserialize)] +#[derive(Debug, serde::Serialize, serde::Deserialize)] pub struct InlineResponse2007 { #[serde(rename = "Id")] id: String, diff --git a/edgelet/docker-rs/src/models/inline_response_200_8.rs b/edgelet/docker-rs/src/models/inline_response_200_8.rs index f6589de94cf..924fd48ed67 100644 --- a/edgelet/docker-rs/src/models/inline_response_200_8.rs +++ b/edgelet/docker-rs/src/models/inline_response_200_8.rs @@ -11,7 +11,7 @@ #[allow(unused_imports)] use serde_json::Value; -#[derive(Debug, serde_derive::Serialize, serde_derive::Deserialize)] +#[derive(Debug, serde::Serialize, serde::Deserialize)] pub struct InlineResponse2008 { #[serde(rename = "description", skip_serializing_if = "Option::is_none")] description: Option, diff --git a/edgelet/docker-rs/src/models/inline_response_200_9.rs b/edgelet/docker-rs/src/models/inline_response_200_9.rs index ab20d0864cf..46e2d472609 100644 --- a/edgelet/docker-rs/src/models/inline_response_200_9.rs +++ b/edgelet/docker-rs/src/models/inline_response_200_9.rs @@ -11,7 +11,7 @@ #[allow(unused_imports)] use serde_json::Value; -#[derive(Debug, serde_derive::Serialize, serde_derive::Deserialize)] +#[derive(Debug, serde::Serialize, serde::Deserialize)] pub struct InlineResponse2009 { /// Images that were deleted #[serde(rename = "ImagesDeleted", skip_serializing_if = "Option::is_none")] diff --git a/edgelet/docker-rs/src/models/inline_response_200_state.rs b/edgelet/docker-rs/src/models/inline_response_200_state.rs index f95f41a37ad..1f1a860d22b 100644 --- a/edgelet/docker-rs/src/models/inline_response_200_state.rs +++ b/edgelet/docker-rs/src/models/inline_response_200_state.rs @@ -13,7 +13,7 @@ #[allow(unused_imports)] use serde_json::Value; -#[derive(Debug, serde_derive::Serialize, serde_derive::Deserialize)] +#[derive(Debug, serde::Serialize, serde::Deserialize)] pub struct InlineResponse200State { /// The status of the container. For example, `\"running\"` or `\"exited\"`. #[serde(rename = "Status", skip_serializing_if = "Option::is_none")] diff --git a/edgelet/docker-rs/src/models/inline_response_201.rs b/edgelet/docker-rs/src/models/inline_response_201.rs index 29ecc4af1d1..26977daee32 100644 --- a/edgelet/docker-rs/src/models/inline_response_201.rs +++ b/edgelet/docker-rs/src/models/inline_response_201.rs @@ -11,7 +11,7 @@ #[allow(unused_imports)] use serde_json::Value; -#[derive(Debug, serde_derive::Serialize, serde_derive::Deserialize)] +#[derive(Debug, serde::Serialize, serde::Deserialize)] pub struct InlineResponse201 { /// The ID of the created container #[serde(rename = "Id")] diff --git a/edgelet/docker-rs/src/models/inline_response_201_1.rs b/edgelet/docker-rs/src/models/inline_response_201_1.rs index 43d958cd7f6..5d57a068b6f 100644 --- a/edgelet/docker-rs/src/models/inline_response_201_1.rs +++ b/edgelet/docker-rs/src/models/inline_response_201_1.rs @@ -11,7 +11,7 @@ #[allow(unused_imports)] use serde_json::Value; -#[derive(Debug, serde_derive::Serialize, serde_derive::Deserialize)] +#[derive(Debug, serde::Serialize, serde::Deserialize)] pub struct InlineResponse2011 { /// The ID of the created network. #[serde(rename = "Id", skip_serializing_if = "Option::is_none")] diff --git a/edgelet/docker-rs/src/models/inline_response_201_2.rs b/edgelet/docker-rs/src/models/inline_response_201_2.rs index a35bdd74203..b63e050603d 100644 --- a/edgelet/docker-rs/src/models/inline_response_201_2.rs +++ b/edgelet/docker-rs/src/models/inline_response_201_2.rs @@ -11,7 +11,7 @@ #[allow(unused_imports)] use serde_json::Value; -#[derive(Debug, serde_derive::Serialize, serde_derive::Deserialize)] +#[derive(Debug, serde::Serialize, serde::Deserialize)] pub struct InlineResponse2012 { /// The ID of the created service. #[serde(rename = "ID", skip_serializing_if = "Option::is_none")] diff --git a/edgelet/docker-rs/src/models/inline_response_201_3.rs b/edgelet/docker-rs/src/models/inline_response_201_3.rs index 54a8907a97b..a3e5a429bd1 100644 --- a/edgelet/docker-rs/src/models/inline_response_201_3.rs +++ b/edgelet/docker-rs/src/models/inline_response_201_3.rs @@ -11,7 +11,7 @@ #[allow(unused_imports)] use serde_json::Value; -#[derive(Debug, serde_derive::Serialize, serde_derive::Deserialize)] +#[derive(Debug, serde::Serialize, serde::Deserialize)] pub struct InlineResponse2013 { /// The ID of the created secret. #[serde(rename = "ID", skip_serializing_if = "Option::is_none")] diff --git a/edgelet/docker-rs/src/models/inline_response_201_4.rs b/edgelet/docker-rs/src/models/inline_response_201_4.rs index 6284b519cbd..292f38500b9 100644 --- a/edgelet/docker-rs/src/models/inline_response_201_4.rs +++ b/edgelet/docker-rs/src/models/inline_response_201_4.rs @@ -11,7 +11,7 @@ #[allow(unused_imports)] use serde_json::Value; -#[derive(Debug, serde_derive::Serialize, serde_derive::Deserialize)] +#[derive(Debug, serde::Serialize, serde::Deserialize)] pub struct InlineResponse2014 { /// The ID of the created config. #[serde(rename = "ID", skip_serializing_if = "Option::is_none")] diff --git a/edgelet/docker-rs/src/models/ipam.rs b/edgelet/docker-rs/src/models/ipam.rs index 3a1888c83b6..fa13fdbbde5 100644 --- a/edgelet/docker-rs/src/models/ipam.rs +++ b/edgelet/docker-rs/src/models/ipam.rs @@ -11,7 +11,7 @@ #[allow(unused_imports)] use serde_json::Value; -#[derive(Clone, Debug, serde_derive::Serialize, serde_derive::Deserialize)] +#[derive(Clone, Debug, serde::Serialize, serde::Deserialize)] pub struct Ipam { /// Name of the IPAM driver to use. #[serde(rename = "Driver", skip_serializing_if = "Option::is_none")] diff --git a/edgelet/docker-rs/src/models/join_tokens.rs b/edgelet/docker-rs/src/models/join_tokens.rs index 0106095c75c..a8034cb5b6e 100644 --- a/edgelet/docker-rs/src/models/join_tokens.rs +++ b/edgelet/docker-rs/src/models/join_tokens.rs @@ -13,7 +13,7 @@ #[allow(unused_imports)] use serde_json::Value; -#[derive(Debug, serde_derive::Serialize, serde_derive::Deserialize)] +#[derive(Debug, serde::Serialize, serde::Deserialize)] pub struct JoinTokens { /// The token workers can use to join the swarm. #[serde(rename = "Worker", skip_serializing_if = "Option::is_none")] diff --git a/edgelet/docker-rs/src/models/local_node_state.rs b/edgelet/docker-rs/src/models/local_node_state.rs index 32848b206b7..1fb6485441c 100644 --- a/edgelet/docker-rs/src/models/local_node_state.rs +++ b/edgelet/docker-rs/src/models/local_node_state.rs @@ -13,7 +13,7 @@ #[allow(unused_imports)] use serde_json::Value; -#[derive(Debug, serde_derive::Serialize, serde_derive::Deserialize)] +#[derive(Debug, serde::Serialize, serde::Deserialize)] pub struct LocalNodeState {} impl LocalNodeState { diff --git a/edgelet/docker-rs/src/models/manager_status.rs b/edgelet/docker-rs/src/models/manager_status.rs index a6cc1d9ab5a..b022f1047ea 100644 --- a/edgelet/docker-rs/src/models/manager_status.rs +++ b/edgelet/docker-rs/src/models/manager_status.rs @@ -13,7 +13,7 @@ #[allow(unused_imports)] use serde_json::Value; -#[derive(Debug, serde_derive::Serialize, serde_derive::Deserialize)] +#[derive(Debug, serde::Serialize, serde::Deserialize)] pub struct ManagerStatus { #[serde(rename = "Leader", skip_serializing_if = "Option::is_none")] leader: Option, diff --git a/edgelet/docker-rs/src/models/mount.rs b/edgelet/docker-rs/src/models/mount.rs index 6f1f5f3904d..358e25a8ea0 100644 --- a/edgelet/docker-rs/src/models/mount.rs +++ b/edgelet/docker-rs/src/models/mount.rs @@ -36,7 +36,7 @@ use serde_json::Value; // - Otherwise if it references another type under `crate::models::`, then ensure that that type also has a `#[serde(flatten)] BTreeMap` property // and is commented out as much as possible. Also copy this devnote there for future readers. -#[derive(Debug, serde_derive::Serialize, serde_derive::Deserialize, Clone)] +#[derive(Debug, serde::Serialize, serde::Deserialize, Clone)] pub struct Mount { /// Container path. #[serde(rename = "Target", skip_serializing_if = "Option::is_none")] diff --git a/edgelet/docker-rs/src/models/mount_bind_options.rs b/edgelet/docker-rs/src/models/mount_bind_options.rs index a6cde8a981c..81407713d58 100644 --- a/edgelet/docker-rs/src/models/mount_bind_options.rs +++ b/edgelet/docker-rs/src/models/mount_bind_options.rs @@ -13,7 +13,7 @@ #[allow(unused_imports)] use serde_json::Value; -#[derive(Debug, serde_derive::Serialize, serde_derive::Deserialize, Clone)] +#[derive(Debug, serde::Serialize, serde::Deserialize, Clone)] pub struct MountBindOptions { /// A propagation mode with the value `[r]private`, `[r]shared`, or `[r]slave`. #[serde(rename = "Propagation", skip_serializing_if = "Option::is_none")] diff --git a/edgelet/docker-rs/src/models/mount_point.rs b/edgelet/docker-rs/src/models/mount_point.rs index c47fb59117e..661456e27c9 100644 --- a/edgelet/docker-rs/src/models/mount_point.rs +++ b/edgelet/docker-rs/src/models/mount_point.rs @@ -13,7 +13,7 @@ #[allow(unused_imports)] use serde_json::Value; -#[derive(Debug, serde_derive::Serialize, serde_derive::Deserialize, Clone)] +#[derive(Debug, serde::Serialize, serde::Deserialize, Clone)] pub struct MountPoint { #[serde(rename = "Type", skip_serializing_if = "Option::is_none")] _type: Option, diff --git a/edgelet/docker-rs/src/models/mount_tmpfs_options.rs b/edgelet/docker-rs/src/models/mount_tmpfs_options.rs index 4f741f21822..ef78815081d 100644 --- a/edgelet/docker-rs/src/models/mount_tmpfs_options.rs +++ b/edgelet/docker-rs/src/models/mount_tmpfs_options.rs @@ -13,7 +13,7 @@ #[allow(unused_imports)] use serde_json::Value; -#[derive(Debug, serde_derive::Serialize, serde_derive::Deserialize, Clone)] +#[derive(Debug, serde::Serialize, serde::Deserialize, Clone)] pub struct MountTmpfsOptions { /// The size for the tmpfs mount in bytes. #[serde(rename = "SizeBytes", skip_serializing_if = "Option::is_none")] diff --git a/edgelet/docker-rs/src/models/mount_volume_options.rs b/edgelet/docker-rs/src/models/mount_volume_options.rs index 79d63b74fa2..d2ed4db3e7e 100644 --- a/edgelet/docker-rs/src/models/mount_volume_options.rs +++ b/edgelet/docker-rs/src/models/mount_volume_options.rs @@ -13,7 +13,7 @@ #[allow(unused_imports)] use serde_json::Value; -#[derive(Debug, serde_derive::Serialize, serde_derive::Deserialize, Clone)] +#[derive(Debug, serde::Serialize, serde::Deserialize, Clone)] pub struct MountVolumeOptions { /// Populate volume with data from the target. #[serde(rename = "NoCopy", skip_serializing_if = "Option::is_none")] diff --git a/edgelet/docker-rs/src/models/mount_volume_options_driver_config.rs b/edgelet/docker-rs/src/models/mount_volume_options_driver_config.rs index 6c229ea7025..10cf9230ee8 100644 --- a/edgelet/docker-rs/src/models/mount_volume_options_driver_config.rs +++ b/edgelet/docker-rs/src/models/mount_volume_options_driver_config.rs @@ -13,7 +13,7 @@ #[allow(unused_imports)] use serde_json::Value; -#[derive(Debug, serde_derive::Serialize, serde_derive::Deserialize, Clone)] +#[derive(Debug, serde::Serialize, serde::Deserialize, Clone)] pub struct MountVolumeOptionsDriverConfig { /// Name of the driver to use to create the volume. #[serde(rename = "Name", skip_serializing_if = "Option::is_none")] diff --git a/edgelet/docker-rs/src/models/network.rs b/edgelet/docker-rs/src/models/network.rs index c2426b8bc7e..d3760ed0609 100644 --- a/edgelet/docker-rs/src/models/network.rs +++ b/edgelet/docker-rs/src/models/network.rs @@ -11,7 +11,7 @@ #[allow(unused_imports)] use serde_json::Value; -#[derive(Debug, serde_derive::Serialize, serde_derive::Deserialize)] +#[derive(Debug, serde::Serialize, serde::Deserialize)] pub struct Network { #[serde(rename = "Name", skip_serializing_if = "Option::is_none")] name: Option, diff --git a/edgelet/docker-rs/src/models/network_config.rs b/edgelet/docker-rs/src/models/network_config.rs index be32a3223d0..a1243b74ed4 100644 --- a/edgelet/docker-rs/src/models/network_config.rs +++ b/edgelet/docker-rs/src/models/network_config.rs @@ -11,7 +11,7 @@ #[allow(unused_imports)] use serde_json::Value; -#[derive(Debug, serde_derive::Serialize, serde_derive::Deserialize)] +#[derive(Debug, serde::Serialize, serde::Deserialize)] pub struct NetworkConfig { /// The network's name. #[serde(rename = "Name")] diff --git a/edgelet/docker-rs/src/models/network_container.rs b/edgelet/docker-rs/src/models/network_container.rs index 1c3f9edf529..cb4f6b887db 100644 --- a/edgelet/docker-rs/src/models/network_container.rs +++ b/edgelet/docker-rs/src/models/network_container.rs @@ -11,7 +11,7 @@ #[allow(unused_imports)] use serde_json::Value; -#[derive(Debug, serde_derive::Serialize, serde_derive::Deserialize)] +#[derive(Debug, serde::Serialize, serde::Deserialize)] pub struct NetworkContainer { #[serde(rename = "Name", skip_serializing_if = "Option::is_none")] name: Option, diff --git a/edgelet/docker-rs/src/models/network_settings.rs b/edgelet/docker-rs/src/models/network_settings.rs index 537ea1542b9..9b118aaa1e8 100644 --- a/edgelet/docker-rs/src/models/network_settings.rs +++ b/edgelet/docker-rs/src/models/network_settings.rs @@ -13,7 +13,7 @@ #[allow(unused_imports)] use serde_json::Value; -#[derive(Debug, serde_derive::Serialize, serde_derive::Deserialize)] +#[derive(Debug, serde::Serialize, serde::Deserialize)] pub struct NetworkSettings { /// Name of the network'a bridge (for example, `docker0`). #[serde(rename = "Bridge", skip_serializing_if = "Option::is_none")] diff --git a/edgelet/docker-rs/src/models/node.rs b/edgelet/docker-rs/src/models/node.rs index 34cdff87b61..168c344fd0b 100644 --- a/edgelet/docker-rs/src/models/node.rs +++ b/edgelet/docker-rs/src/models/node.rs @@ -11,7 +11,7 @@ #[allow(unused_imports)] use serde_json::Value; -#[derive(Debug, serde_derive::Serialize, serde_derive::Deserialize)] +#[derive(Debug, serde::Serialize, serde::Deserialize)] pub struct Node { #[serde(rename = "ID", skip_serializing_if = "Option::is_none")] ID: Option, diff --git a/edgelet/docker-rs/src/models/node_description.rs b/edgelet/docker-rs/src/models/node_description.rs index 387fe5a0cd5..3342259fddc 100644 --- a/edgelet/docker-rs/src/models/node_description.rs +++ b/edgelet/docker-rs/src/models/node_description.rs @@ -13,7 +13,7 @@ #[allow(unused_imports)] use serde_json::Value; -#[derive(Debug, serde_derive::Serialize, serde_derive::Deserialize)] +#[derive(Debug, serde::Serialize, serde::Deserialize)] pub struct NodeDescription { #[serde(rename = "Hostname", skip_serializing_if = "Option::is_none")] hostname: Option, diff --git a/edgelet/docker-rs/src/models/node_spec.rs b/edgelet/docker-rs/src/models/node_spec.rs index c9a1de7d0a8..f7de29c1850 100644 --- a/edgelet/docker-rs/src/models/node_spec.rs +++ b/edgelet/docker-rs/src/models/node_spec.rs @@ -11,7 +11,7 @@ #[allow(unused_imports)] use serde_json::Value; -#[derive(Debug, serde_derive::Serialize, serde_derive::Deserialize)] +#[derive(Debug, serde::Serialize, serde::Deserialize)] pub struct NodeSpec { /// Name for the node. #[serde(rename = "Name", skip_serializing_if = "Option::is_none")] diff --git a/edgelet/docker-rs/src/models/node_state.rs b/edgelet/docker-rs/src/models/node_state.rs index 0f05ae35791..d0d3c64a693 100644 --- a/edgelet/docker-rs/src/models/node_state.rs +++ b/edgelet/docker-rs/src/models/node_state.rs @@ -13,7 +13,7 @@ #[allow(unused_imports)] use serde_json::Value; -#[derive(Debug, serde_derive::Serialize, serde_derive::Deserialize)] +#[derive(Debug, serde::Serialize, serde::Deserialize)] pub struct NodeState {} impl NodeState { diff --git a/edgelet/docker-rs/src/models/node_status.rs b/edgelet/docker-rs/src/models/node_status.rs index b0df54350a3..2055177f2ea 100644 --- a/edgelet/docker-rs/src/models/node_status.rs +++ b/edgelet/docker-rs/src/models/node_status.rs @@ -13,7 +13,7 @@ #[allow(unused_imports)] use serde_json::Value; -#[derive(Debug, serde_derive::Serialize, serde_derive::Deserialize)] +#[derive(Debug, serde::Serialize, serde::Deserialize)] pub struct NodeStatus { #[serde(rename = "State", skip_serializing_if = "Option::is_none")] state: Option, diff --git a/edgelet/docker-rs/src/models/object_version.rs b/edgelet/docker-rs/src/models/object_version.rs index fc8ee01d144..aad5d09b663 100644 --- a/edgelet/docker-rs/src/models/object_version.rs +++ b/edgelet/docker-rs/src/models/object_version.rs @@ -13,7 +13,7 @@ #[allow(unused_imports)] use serde_json::Value; -#[derive(Debug, serde_derive::Serialize, serde_derive::Deserialize)] +#[derive(Debug, serde::Serialize, serde::Deserialize)] pub struct ObjectVersion { #[serde(rename = "Index", skip_serializing_if = "Option::is_none")] index: Option, diff --git a/edgelet/docker-rs/src/models/peer_node.rs b/edgelet/docker-rs/src/models/peer_node.rs index 8a399ec516d..2fafcb5a56a 100644 --- a/edgelet/docker-rs/src/models/peer_node.rs +++ b/edgelet/docker-rs/src/models/peer_node.rs @@ -13,7 +13,7 @@ #[allow(unused_imports)] use serde_json::Value; -#[derive(Debug, serde_derive::Serialize, serde_derive::Deserialize)] +#[derive(Debug, serde::Serialize, serde::Deserialize)] pub struct PeerNode { /// Unique identifier of for this node in the swarm. #[serde(rename = "NodeID", skip_serializing_if = "Option::is_none")] diff --git a/edgelet/docker-rs/src/models/platform.rs b/edgelet/docker-rs/src/models/platform.rs index 3bf71774524..fd00c112f65 100644 --- a/edgelet/docker-rs/src/models/platform.rs +++ b/edgelet/docker-rs/src/models/platform.rs @@ -13,7 +13,7 @@ #[allow(unused_imports)] use serde_json::Value; -#[derive(Debug, serde_derive::Serialize, serde_derive::Deserialize)] +#[derive(Debug, serde::Serialize, serde::Deserialize)] pub struct Platform { /// Architecture represents the hardware architecture (for example, `x86_64`). #[serde(rename = "Architecture", skip_serializing_if = "Option::is_none")] diff --git a/edgelet/docker-rs/src/models/plugin.rs b/edgelet/docker-rs/src/models/plugin.rs index 61ca782d8fb..f938d1d1619 100644 --- a/edgelet/docker-rs/src/models/plugin.rs +++ b/edgelet/docker-rs/src/models/plugin.rs @@ -13,7 +13,7 @@ #[allow(unused_imports)] use serde_json::Value; -#[derive(Debug, serde_derive::Serialize, serde_derive::Deserialize)] +#[derive(Debug, serde::Serialize, serde::Deserialize)] pub struct Plugin { #[serde(rename = "Id", skip_serializing_if = "Option::is_none")] id: Option, diff --git a/edgelet/docker-rs/src/models/plugin_config.rs b/edgelet/docker-rs/src/models/plugin_config.rs index 3148abbec47..ea98be4c279 100644 --- a/edgelet/docker-rs/src/models/plugin_config.rs +++ b/edgelet/docker-rs/src/models/plugin_config.rs @@ -13,7 +13,7 @@ #[allow(unused_imports)] use serde_json::Value; -#[derive(Debug, serde_derive::Serialize, serde_derive::Deserialize)] +#[derive(Debug, serde::Serialize, serde::Deserialize)] pub struct PluginConfig { /// Docker Version used to create the plugin #[serde(rename = "DockerVersion", skip_serializing_if = "Option::is_none")] diff --git a/edgelet/docker-rs/src/models/plugin_config_args.rs b/edgelet/docker-rs/src/models/plugin_config_args.rs index 42c6dbf0935..f81fa67fce4 100644 --- a/edgelet/docker-rs/src/models/plugin_config_args.rs +++ b/edgelet/docker-rs/src/models/plugin_config_args.rs @@ -11,7 +11,7 @@ #[allow(unused_imports)] use serde_json::Value; -#[derive(Debug, serde_derive::Serialize, serde_derive::Deserialize)] +#[derive(Debug, serde::Serialize, serde::Deserialize)] pub struct PluginConfigArgs { #[serde(rename = "Name")] name: String, diff --git a/edgelet/docker-rs/src/models/plugin_config_interface.rs b/edgelet/docker-rs/src/models/plugin_config_interface.rs index 5cdbd9ea22d..89c519484e9 100644 --- a/edgelet/docker-rs/src/models/plugin_config_interface.rs +++ b/edgelet/docker-rs/src/models/plugin_config_interface.rs @@ -13,7 +13,7 @@ #[allow(unused_imports)] use serde_json::Value; -#[derive(Debug, serde_derive::Serialize, serde_derive::Deserialize)] +#[derive(Debug, serde::Serialize, serde::Deserialize)] pub struct PluginConfigInterface { #[serde(rename = "Types")] types: Vec, diff --git a/edgelet/docker-rs/src/models/plugin_config_linux.rs b/edgelet/docker-rs/src/models/plugin_config_linux.rs index 95e5fe7af73..522a80f2389 100644 --- a/edgelet/docker-rs/src/models/plugin_config_linux.rs +++ b/edgelet/docker-rs/src/models/plugin_config_linux.rs @@ -11,7 +11,7 @@ #[allow(unused_imports)] use serde_json::Value; -#[derive(Debug, serde_derive::Serialize, serde_derive::Deserialize)] +#[derive(Debug, serde::Serialize, serde::Deserialize)] pub struct PluginConfigLinux { #[serde(rename = "Capabilities")] capabilities: Vec, diff --git a/edgelet/docker-rs/src/models/plugin_config_network.rs b/edgelet/docker-rs/src/models/plugin_config_network.rs index d44a4c1c80e..cf43a8beda0 100644 --- a/edgelet/docker-rs/src/models/plugin_config_network.rs +++ b/edgelet/docker-rs/src/models/plugin_config_network.rs @@ -11,7 +11,7 @@ #[allow(unused_imports)] use serde_json::Value; -#[derive(Debug, serde_derive::Serialize, serde_derive::Deserialize)] +#[derive(Debug, serde::Serialize, serde::Deserialize)] pub struct PluginConfigNetwork { #[serde(rename = "Type")] _type: String, diff --git a/edgelet/docker-rs/src/models/plugin_config_rootfs.rs b/edgelet/docker-rs/src/models/plugin_config_rootfs.rs index 4871100f6ac..3a574a54310 100644 --- a/edgelet/docker-rs/src/models/plugin_config_rootfs.rs +++ b/edgelet/docker-rs/src/models/plugin_config_rootfs.rs @@ -11,7 +11,7 @@ #[allow(unused_imports)] use serde_json::Value; -#[derive(Debug, serde_derive::Serialize, serde_derive::Deserialize)] +#[derive(Debug, serde::Serialize, serde::Deserialize)] pub struct PluginConfigRootfs { #[serde(rename = "type", skip_serializing_if = "Option::is_none")] _type: Option, diff --git a/edgelet/docker-rs/src/models/plugin_config_user.rs b/edgelet/docker-rs/src/models/plugin_config_user.rs index e075ced93bb..8419a417e93 100644 --- a/edgelet/docker-rs/src/models/plugin_config_user.rs +++ b/edgelet/docker-rs/src/models/plugin_config_user.rs @@ -11,7 +11,7 @@ #[allow(unused_imports)] use serde_json::Value; -#[derive(Debug, serde_derive::Serialize, serde_derive::Deserialize)] +#[derive(Debug, serde::Serialize, serde::Deserialize)] pub struct PluginConfigUser { #[serde(rename = "UID", skip_serializing_if = "Option::is_none")] UID: Option, diff --git a/edgelet/docker-rs/src/models/plugin_device.rs b/edgelet/docker-rs/src/models/plugin_device.rs index 4f4e8914b60..919057abefd 100644 --- a/edgelet/docker-rs/src/models/plugin_device.rs +++ b/edgelet/docker-rs/src/models/plugin_device.rs @@ -11,7 +11,7 @@ #[allow(unused_imports)] use serde_json::Value; -#[derive(Debug, serde_derive::Serialize, serde_derive::Deserialize)] +#[derive(Debug, serde::Serialize, serde::Deserialize)] pub struct PluginDevice { #[serde(rename = "Name")] name: String, diff --git a/edgelet/docker-rs/src/models/plugin_env.rs b/edgelet/docker-rs/src/models/plugin_env.rs index 3df9edcfc49..39b03d1113d 100644 --- a/edgelet/docker-rs/src/models/plugin_env.rs +++ b/edgelet/docker-rs/src/models/plugin_env.rs @@ -11,7 +11,7 @@ #[allow(unused_imports)] use serde_json::Value; -#[derive(Debug, serde_derive::Serialize, serde_derive::Deserialize)] +#[derive(Debug, serde::Serialize, serde::Deserialize)] pub struct PluginEnv { #[serde(rename = "Name")] name: String, diff --git a/edgelet/docker-rs/src/models/plugin_interface_type.rs b/edgelet/docker-rs/src/models/plugin_interface_type.rs index 4cae1a7fbea..493604e8d39 100644 --- a/edgelet/docker-rs/src/models/plugin_interface_type.rs +++ b/edgelet/docker-rs/src/models/plugin_interface_type.rs @@ -11,7 +11,7 @@ #[allow(unused_imports)] use serde_json::Value; -#[derive(Debug, serde_derive::Serialize, serde_derive::Deserialize)] +#[derive(Debug, serde::Serialize, serde::Deserialize)] pub struct PluginInterfaceType { #[serde(rename = "Prefix")] prefix: String, diff --git a/edgelet/docker-rs/src/models/plugin_mount.rs b/edgelet/docker-rs/src/models/plugin_mount.rs index e0c6c2e5e5d..022efd16216 100644 --- a/edgelet/docker-rs/src/models/plugin_mount.rs +++ b/edgelet/docker-rs/src/models/plugin_mount.rs @@ -11,7 +11,7 @@ #[allow(unused_imports)] use serde_json::Value; -#[derive(Debug, serde_derive::Serialize, serde_derive::Deserialize)] +#[derive(Debug, serde::Serialize, serde::Deserialize)] pub struct PluginMount { #[serde(rename = "Name")] name: String, diff --git a/edgelet/docker-rs/src/models/plugin_settings.rs b/edgelet/docker-rs/src/models/plugin_settings.rs index 20270b0c9d0..f9b57c99a16 100644 --- a/edgelet/docker-rs/src/models/plugin_settings.rs +++ b/edgelet/docker-rs/src/models/plugin_settings.rs @@ -13,7 +13,7 @@ #[allow(unused_imports)] use serde_json::Value; -#[derive(Debug, serde_derive::Serialize, serde_derive::Deserialize)] +#[derive(Debug, serde::Serialize, serde::Deserialize)] pub struct PluginSettings { #[serde(rename = "Mounts")] mounts: Vec, diff --git a/edgelet/docker-rs/src/models/plugins_info.rs b/edgelet/docker-rs/src/models/plugins_info.rs index c77c6af8a17..a0611eb1604 100644 --- a/edgelet/docker-rs/src/models/plugins_info.rs +++ b/edgelet/docker-rs/src/models/plugins_info.rs @@ -13,7 +13,7 @@ #[allow(unused_imports)] use serde_json::Value; -#[derive(Debug, serde_derive::Serialize, serde_derive::Deserialize)] +#[derive(Debug, serde::Serialize, serde::Deserialize)] pub struct PluginsInfo { /// Names of available volume-drivers, and network-driver plugins. #[serde(rename = "Volume", skip_serializing_if = "Option::is_none")] diff --git a/edgelet/docker-rs/src/models/port.rs b/edgelet/docker-rs/src/models/port.rs index 2298c9b7ddb..6166e8af664 100644 --- a/edgelet/docker-rs/src/models/port.rs +++ b/edgelet/docker-rs/src/models/port.rs @@ -13,7 +13,7 @@ #[allow(unused_imports)] use serde_json::Value; -#[derive(Debug, serde_derive::Serialize, serde_derive::Deserialize)] +#[derive(Debug, serde::Serialize, serde::Deserialize)] pub struct Port { #[serde(rename = "IP", skip_serializing_if = "Option::is_none")] IP: Option, diff --git a/edgelet/docker-rs/src/models/port_binding.rs b/edgelet/docker-rs/src/models/port_binding.rs index c388a73cd82..1eabe5fb630 100644 --- a/edgelet/docker-rs/src/models/port_binding.rs +++ b/edgelet/docker-rs/src/models/port_binding.rs @@ -13,7 +13,7 @@ #[allow(unused_imports)] use serde_json::Value; -#[derive(Debug, serde_derive::Serialize, serde_derive::Deserialize)] +#[derive(Debug, serde::Serialize, serde::Deserialize)] pub struct PortBinding { /// Host IP address that the container's port is mapped to. #[serde(rename = "HostIp", skip_serializing_if = "Option::is_none")] diff --git a/edgelet/docker-rs/src/models/port_map.rs b/edgelet/docker-rs/src/models/port_map.rs index 1dab4ad919b..0f121c8477b 100644 --- a/edgelet/docker-rs/src/models/port_map.rs +++ b/edgelet/docker-rs/src/models/port_map.rs @@ -13,7 +13,7 @@ #[allow(unused_imports)] use serde_json::Value; -#[derive(Debug, serde_derive::Serialize, serde_derive::Deserialize)] +#[derive(Debug, serde::Serialize, serde::Deserialize)] pub struct PortMap {} impl PortMap { diff --git a/edgelet/docker-rs/src/models/process_config.rs b/edgelet/docker-rs/src/models/process_config.rs index 5bfd2cdb287..cb286766e30 100644 --- a/edgelet/docker-rs/src/models/process_config.rs +++ b/edgelet/docker-rs/src/models/process_config.rs @@ -11,7 +11,7 @@ #[allow(unused_imports)] use serde_json::Value; -#[derive(Debug, serde_derive::Serialize, serde_derive::Deserialize)] +#[derive(Debug, serde::Serialize, serde::Deserialize)] pub struct ProcessConfig { #[serde(rename = "privileged", skip_serializing_if = "Option::is_none")] privileged: Option, diff --git a/edgelet/docker-rs/src/models/progress_detail.rs b/edgelet/docker-rs/src/models/progress_detail.rs index ecb50b90d17..f7eccedc923 100644 --- a/edgelet/docker-rs/src/models/progress_detail.rs +++ b/edgelet/docker-rs/src/models/progress_detail.rs @@ -11,7 +11,7 @@ #[allow(unused_imports)] use serde_json::Value; -#[derive(Debug, serde_derive::Serialize, serde_derive::Deserialize)] +#[derive(Debug, serde::Serialize, serde::Deserialize)] pub struct ProgressDetail { #[serde(rename = "code", skip_serializing_if = "Option::is_none")] code: Option, diff --git a/edgelet/docker-rs/src/models/push_image_info.rs b/edgelet/docker-rs/src/models/push_image_info.rs index da198f1d2aa..cc0ca034271 100644 --- a/edgelet/docker-rs/src/models/push_image_info.rs +++ b/edgelet/docker-rs/src/models/push_image_info.rs @@ -11,7 +11,7 @@ #[allow(unused_imports)] use serde_json::Value; -#[derive(Debug, serde_derive::Serialize, serde_derive::Deserialize)] +#[derive(Debug, serde::Serialize, serde::Deserialize)] pub struct PushImageInfo { #[serde(rename = "error", skip_serializing_if = "Option::is_none")] error: Option, diff --git a/edgelet/docker-rs/src/models/reachability.rs b/edgelet/docker-rs/src/models/reachability.rs index 6e742f6c26a..7624e29c1cb 100644 --- a/edgelet/docker-rs/src/models/reachability.rs +++ b/edgelet/docker-rs/src/models/reachability.rs @@ -13,7 +13,7 @@ #[allow(unused_imports)] use serde_json::Value; -#[derive(Debug, serde_derive::Serialize, serde_derive::Deserialize)] +#[derive(Debug, serde::Serialize, serde::Deserialize)] pub struct Reachability {} impl Reachability { diff --git a/edgelet/docker-rs/src/models/registry_service_config.rs b/edgelet/docker-rs/src/models/registry_service_config.rs index 7f0313ddd01..8bf2c54222d 100644 --- a/edgelet/docker-rs/src/models/registry_service_config.rs +++ b/edgelet/docker-rs/src/models/registry_service_config.rs @@ -13,7 +13,7 @@ #[allow(unused_imports)] use serde_json::Value; -#[derive(Debug, serde_derive::Serialize, serde_derive::Deserialize)] +#[derive(Debug, serde::Serialize, serde::Deserialize)] pub struct RegistryServiceConfig { /// List of IP ranges to which nondistributable artifacts can be pushed, using the CIDR syntax [RFC 4632](https://tools.ietf.org/html/4632). Some images (for example, Windows base images) contain artifacts whose distribution is restricted by license. When these images are pushed to a registry, restricted artifacts are not included. This configuration override this behavior, and enables the daemon to push nondistributable artifacts to all registries whose resolved IP address is within the subnet described by the CIDR syntax. This option is useful when pushing images containing nondistributable artifacts to a registry on an air-gapped network so hosts on that network can pull the images without connecting to another server. > **Warning**: Nondistributable artifacts typically have restrictions > on how and where they can be distributed and shared. Only use this > feature to push artifacts to private registries and ensure that you > are in compliance with any terms that cover redistributing > nondistributable artifacts. #[serde( diff --git a/edgelet/docker-rs/src/models/resource_object.rs b/edgelet/docker-rs/src/models/resource_object.rs index d9b8a27f367..769ccc9feca 100644 --- a/edgelet/docker-rs/src/models/resource_object.rs +++ b/edgelet/docker-rs/src/models/resource_object.rs @@ -13,7 +13,7 @@ #[allow(unused_imports)] use serde_json::Value; -#[derive(Debug, serde_derive::Serialize, serde_derive::Deserialize)] +#[derive(Debug, serde::Serialize, serde::Deserialize)] pub struct ResourceObject { #[serde(rename = "NanoCPUs", skip_serializing_if = "Option::is_none")] nano_cp_us: Option, diff --git a/edgelet/docker-rs/src/models/resources.rs b/edgelet/docker-rs/src/models/resources.rs index 94ddd1572f9..dad8ef7cf52 100644 --- a/edgelet/docker-rs/src/models/resources.rs +++ b/edgelet/docker-rs/src/models/resources.rs @@ -13,7 +13,7 @@ #[allow(unused_imports)] use serde_json::Value; -#[derive(Debug, serde_derive::Serialize, serde_derive::Deserialize)] +#[derive(Debug, serde::Serialize, serde::Deserialize)] pub struct Resources { /// An integer value representing this container's relative CPU weight versus other containers. #[serde(rename = "CpuShares", skip_serializing_if = "Option::is_none")] diff --git a/edgelet/docker-rs/src/models/resources_blkio_weight_device.rs b/edgelet/docker-rs/src/models/resources_blkio_weight_device.rs index a07c02f8f64..0369e595d53 100644 --- a/edgelet/docker-rs/src/models/resources_blkio_weight_device.rs +++ b/edgelet/docker-rs/src/models/resources_blkio_weight_device.rs @@ -11,7 +11,7 @@ #[allow(unused_imports)] use serde_json::Value; -#[derive(Debug, serde_derive::Serialize, serde_derive::Deserialize, Clone)] +#[derive(Debug, serde::Serialize, serde::Deserialize, Clone)] pub struct ResourcesBlkioWeightDevice { #[serde(rename = "Path", skip_serializing_if = "Option::is_none")] path: Option, diff --git a/edgelet/docker-rs/src/models/resources_ulimits.rs b/edgelet/docker-rs/src/models/resources_ulimits.rs index e6af5d57a05..2c502efe405 100644 --- a/edgelet/docker-rs/src/models/resources_ulimits.rs +++ b/edgelet/docker-rs/src/models/resources_ulimits.rs @@ -11,7 +11,7 @@ #[allow(unused_imports)] use serde_json::Value; -#[derive(Debug, serde_derive::Serialize, serde_derive::Deserialize, Clone)] +#[derive(Debug, serde::Serialize, serde::Deserialize, Clone)] pub struct ResourcesUlimits { /// Name of ulimit #[serde(rename = "Name", skip_serializing_if = "Option::is_none")] diff --git a/edgelet/docker-rs/src/models/restart_policy.rs b/edgelet/docker-rs/src/models/restart_policy.rs index b9fb0b172bc..6afdd86ddb9 100644 --- a/edgelet/docker-rs/src/models/restart_policy.rs +++ b/edgelet/docker-rs/src/models/restart_policy.rs @@ -13,7 +13,7 @@ #[allow(unused_imports)] use serde_json::Value; -#[derive(Debug, serde_derive::Serialize, serde_derive::Deserialize, Clone)] +#[derive(Debug, serde::Serialize, serde::Deserialize, Clone)] pub struct RestartPolicy { /// - Empty string means not to restart - `always` Always restart - `unless-stopped` Restart always except when the user has manually stopped the container - `on-failure` Restart only when the container exit code is non-zero #[serde(rename = "Name", skip_serializing_if = "Option::is_none")] diff --git a/edgelet/docker-rs/src/models/runtime.rs b/edgelet/docker-rs/src/models/runtime.rs index 538bee5db23..4c954b4f0f8 100644 --- a/edgelet/docker-rs/src/models/runtime.rs +++ b/edgelet/docker-rs/src/models/runtime.rs @@ -13,7 +13,7 @@ #[allow(unused_imports)] use serde_json::Value; -#[derive(Debug, serde_derive::Serialize, serde_derive::Deserialize)] +#[derive(Debug, serde::Serialize, serde::Deserialize)] pub struct Runtime { /// Name and, optional, path, of the OCI executable binary. If the path is omitted, the daemon searches the host's `$PATH` for the binary and uses the first result. #[serde(rename = "path", skip_serializing_if = "Option::is_none")] diff --git a/edgelet/docker-rs/src/models/secret.rs b/edgelet/docker-rs/src/models/secret.rs index 150e789cc41..b6a7687fc09 100644 --- a/edgelet/docker-rs/src/models/secret.rs +++ b/edgelet/docker-rs/src/models/secret.rs @@ -11,7 +11,7 @@ #[allow(unused_imports)] use serde_json::Value; -#[derive(Debug, serde_derive::Serialize, serde_derive::Deserialize)] +#[derive(Debug, serde::Serialize, serde::Deserialize)] pub struct Secret { #[serde(rename = "ID", skip_serializing_if = "Option::is_none")] ID: Option, diff --git a/edgelet/docker-rs/src/models/secret_create_body.rs b/edgelet/docker-rs/src/models/secret_create_body.rs index 29cc9b38f1d..649913cff05 100644 --- a/edgelet/docker-rs/src/models/secret_create_body.rs +++ b/edgelet/docker-rs/src/models/secret_create_body.rs @@ -11,7 +11,7 @@ #[allow(unused_imports)] use serde_json::Value; -#[derive(Debug, serde_derive::Serialize, serde_derive::Deserialize)] +#[derive(Debug, serde::Serialize, serde::Deserialize)] pub struct SecretCreateBody { /// User-defined name of the secret. #[serde(rename = "Name", skip_serializing_if = "Option::is_none")] diff --git a/edgelet/docker-rs/src/models/secret_spec.rs b/edgelet/docker-rs/src/models/secret_spec.rs index 176170a1d5e..82aa11183d0 100644 --- a/edgelet/docker-rs/src/models/secret_spec.rs +++ b/edgelet/docker-rs/src/models/secret_spec.rs @@ -11,7 +11,7 @@ #[allow(unused_imports)] use serde_json::Value; -#[derive(Debug, serde_derive::Serialize, serde_derive::Deserialize)] +#[derive(Debug, serde::Serialize, serde::Deserialize)] pub struct SecretSpec { /// User-defined name of the secret. #[serde(rename = "Name", skip_serializing_if = "Option::is_none")] diff --git a/edgelet/docker-rs/src/models/service.rs b/edgelet/docker-rs/src/models/service.rs index 22efce89519..d62220b19d1 100644 --- a/edgelet/docker-rs/src/models/service.rs +++ b/edgelet/docker-rs/src/models/service.rs @@ -11,7 +11,7 @@ #[allow(unused_imports)] use serde_json::Value; -#[derive(Debug, serde_derive::Serialize, serde_derive::Deserialize)] +#[derive(Debug, serde::Serialize, serde::Deserialize)] pub struct Service { #[serde(rename = "ID", skip_serializing_if = "Option::is_none")] ID: Option, diff --git a/edgelet/docker-rs/src/models/service_endpoint.rs b/edgelet/docker-rs/src/models/service_endpoint.rs index dbaf5359fb1..a75e6c6207c 100644 --- a/edgelet/docker-rs/src/models/service_endpoint.rs +++ b/edgelet/docker-rs/src/models/service_endpoint.rs @@ -11,7 +11,7 @@ #[allow(unused_imports)] use serde_json::Value; -#[derive(Debug, serde_derive::Serialize, serde_derive::Deserialize)] +#[derive(Debug, serde::Serialize, serde::Deserialize)] pub struct ServiceEndpoint { #[serde(rename = "Spec", skip_serializing_if = "Option::is_none")] spec: Option, diff --git a/edgelet/docker-rs/src/models/service_endpoint_virtual_i_ps.rs b/edgelet/docker-rs/src/models/service_endpoint_virtual_i_ps.rs index ac88d1ec9ce..7747a4c01bd 100644 --- a/edgelet/docker-rs/src/models/service_endpoint_virtual_i_ps.rs +++ b/edgelet/docker-rs/src/models/service_endpoint_virtual_i_ps.rs @@ -11,7 +11,7 @@ #[allow(unused_imports)] use serde_json::Value; -#[derive(Debug, serde_derive::Serialize, serde_derive::Deserialize)] +#[derive(Debug, serde::Serialize, serde::Deserialize)] pub struct ServiceEndpointVirtualIPs { #[serde(rename = "NetworkID", skip_serializing_if = "Option::is_none")] network_id: Option, diff --git a/edgelet/docker-rs/src/models/service_spec.rs b/edgelet/docker-rs/src/models/service_spec.rs index 1e0a3ca1dd8..8f8bfdcbc0d 100644 --- a/edgelet/docker-rs/src/models/service_spec.rs +++ b/edgelet/docker-rs/src/models/service_spec.rs @@ -13,7 +13,7 @@ #[allow(unused_imports)] use serde_json::Value; -#[derive(Debug, serde_derive::Serialize, serde_derive::Deserialize)] +#[derive(Debug, serde::Serialize, serde::Deserialize)] pub struct ServiceSpec { /// Name of the service. #[serde(rename = "Name", skip_serializing_if = "Option::is_none")] diff --git a/edgelet/docker-rs/src/models/service_spec_mode.rs b/edgelet/docker-rs/src/models/service_spec_mode.rs index d5ae54e0a3e..c8b09e3bd4b 100644 --- a/edgelet/docker-rs/src/models/service_spec_mode.rs +++ b/edgelet/docker-rs/src/models/service_spec_mode.rs @@ -13,7 +13,7 @@ #[allow(unused_imports)] use serde_json::Value; -#[derive(Debug, serde_derive::Serialize, serde_derive::Deserialize)] +#[derive(Debug, serde::Serialize, serde::Deserialize)] pub struct ServiceSpecMode { #[serde(rename = "Replicated", skip_serializing_if = "Option::is_none")] replicated: Option, diff --git a/edgelet/docker-rs/src/models/service_spec_mode_replicated.rs b/edgelet/docker-rs/src/models/service_spec_mode_replicated.rs index 5d8d1462525..45ae6f24977 100644 --- a/edgelet/docker-rs/src/models/service_spec_mode_replicated.rs +++ b/edgelet/docker-rs/src/models/service_spec_mode_replicated.rs @@ -11,7 +11,7 @@ #[allow(unused_imports)] use serde_json::Value; -#[derive(Debug, serde_derive::Serialize, serde_derive::Deserialize)] +#[derive(Debug, serde::Serialize, serde::Deserialize)] pub struct ServiceSpecModeReplicated { #[serde(rename = "Replicas", skip_serializing_if = "Option::is_none")] replicas: Option, diff --git a/edgelet/docker-rs/src/models/service_spec_rollback_config.rs b/edgelet/docker-rs/src/models/service_spec_rollback_config.rs index 1980ffc11f5..fb0cf060f65 100644 --- a/edgelet/docker-rs/src/models/service_spec_rollback_config.rs +++ b/edgelet/docker-rs/src/models/service_spec_rollback_config.rs @@ -13,7 +13,7 @@ #[allow(unused_imports)] use serde_json::Value; -#[derive(Debug, serde_derive::Serialize, serde_derive::Deserialize)] +#[derive(Debug, serde::Serialize, serde::Deserialize)] pub struct ServiceSpecRollbackConfig { /// Maximum number of tasks to be rolled back in one iteration (0 means unlimited parallelism). #[serde(rename = "Parallelism", skip_serializing_if = "Option::is_none")] diff --git a/edgelet/docker-rs/src/models/service_spec_update_config.rs b/edgelet/docker-rs/src/models/service_spec_update_config.rs index 6fe442851a1..2ac4672f3b9 100644 --- a/edgelet/docker-rs/src/models/service_spec_update_config.rs +++ b/edgelet/docker-rs/src/models/service_spec_update_config.rs @@ -13,7 +13,7 @@ #[allow(unused_imports)] use serde_json::Value; -#[derive(Debug, serde_derive::Serialize, serde_derive::Deserialize)] +#[derive(Debug, serde::Serialize, serde::Deserialize)] pub struct ServiceSpecUpdateConfig { /// Maximum number of tasks to be updated in one iteration (0 means unlimited parallelism). #[serde(rename = "Parallelism", skip_serializing_if = "Option::is_none")] diff --git a/edgelet/docker-rs/src/models/service_update_response.rs b/edgelet/docker-rs/src/models/service_update_response.rs index c469cfc07a2..f337a05e57e 100644 --- a/edgelet/docker-rs/src/models/service_update_response.rs +++ b/edgelet/docker-rs/src/models/service_update_response.rs @@ -11,7 +11,7 @@ #[allow(unused_imports)] use serde_json::Value; -#[derive(Debug, serde_derive::Serialize, serde_derive::Deserialize)] +#[derive(Debug, serde::Serialize, serde::Deserialize)] pub struct ServiceUpdateResponse { /// Optional warning messages #[serde(rename = "Warnings", skip_serializing_if = "Option::is_none")] diff --git a/edgelet/docker-rs/src/models/service_update_status.rs b/edgelet/docker-rs/src/models/service_update_status.rs index 78a558ea2cf..f41343aeb77 100644 --- a/edgelet/docker-rs/src/models/service_update_status.rs +++ b/edgelet/docker-rs/src/models/service_update_status.rs @@ -13,7 +13,7 @@ #[allow(unused_imports)] use serde_json::Value; -#[derive(Debug, serde_derive::Serialize, serde_derive::Deserialize)] +#[derive(Debug, serde::Serialize, serde::Deserialize)] pub struct ServiceUpdateStatus { #[serde(rename = "State", skip_serializing_if = "Option::is_none")] state: Option, diff --git a/edgelet/docker-rs/src/models/swarm.rs b/edgelet/docker-rs/src/models/swarm.rs index add7161e8c3..dbbbd379d70 100644 --- a/edgelet/docker-rs/src/models/swarm.rs +++ b/edgelet/docker-rs/src/models/swarm.rs @@ -11,7 +11,7 @@ #[allow(unused_imports)] use serde_json::Value; -#[derive(Debug, serde_derive::Serialize, serde_derive::Deserialize)] +#[derive(Debug, serde::Serialize, serde::Deserialize)] pub struct Swarm { /// The ID of the swarm. #[serde(rename = "ID", skip_serializing_if = "Option::is_none")] diff --git a/edgelet/docker-rs/src/models/swarm_info.rs b/edgelet/docker-rs/src/models/swarm_info.rs index 5875c9b301d..b009231a3b1 100644 --- a/edgelet/docker-rs/src/models/swarm_info.rs +++ b/edgelet/docker-rs/src/models/swarm_info.rs @@ -13,7 +13,7 @@ #[allow(unused_imports)] use serde_json::Value; -#[derive(Debug, serde_derive::Serialize, serde_derive::Deserialize)] +#[derive(Debug, serde::Serialize, serde::Deserialize)] pub struct SwarmInfo { /// Unique identifier of for this node in the swarm. #[serde(rename = "NodeID", skip_serializing_if = "Option::is_none")] diff --git a/edgelet/docker-rs/src/models/swarm_spec.rs b/edgelet/docker-rs/src/models/swarm_spec.rs index cdcded1709d..268d3f94c8e 100644 --- a/edgelet/docker-rs/src/models/swarm_spec.rs +++ b/edgelet/docker-rs/src/models/swarm_spec.rs @@ -13,7 +13,7 @@ #[allow(unused_imports)] use serde_json::Value; -#[derive(Debug, serde_derive::Serialize, serde_derive::Deserialize)] +#[derive(Debug, serde::Serialize, serde::Deserialize)] pub struct SwarmSpec { /// Name of the swarm. #[serde(rename = "Name", skip_serializing_if = "Option::is_none")] diff --git a/edgelet/docker-rs/src/models/swarm_spec_ca_config.rs b/edgelet/docker-rs/src/models/swarm_spec_ca_config.rs index 728e2a48bfa..37ee402a4fd 100644 --- a/edgelet/docker-rs/src/models/swarm_spec_ca_config.rs +++ b/edgelet/docker-rs/src/models/swarm_spec_ca_config.rs @@ -13,7 +13,7 @@ #[allow(unused_imports)] use serde_json::Value; -#[derive(Debug, serde_derive::Serialize, serde_derive::Deserialize)] +#[derive(Debug, serde::Serialize, serde::Deserialize)] pub struct SwarmSpecCaConfig { /// The duration node certificates are issued for. #[serde(rename = "NodeCertExpiry", skip_serializing_if = "Option::is_none")] diff --git a/edgelet/docker-rs/src/models/swarm_spec_ca_config_external_c_as.rs b/edgelet/docker-rs/src/models/swarm_spec_ca_config_external_c_as.rs index ff1c8eb10b4..1f643b4764a 100644 --- a/edgelet/docker-rs/src/models/swarm_spec_ca_config_external_c_as.rs +++ b/edgelet/docker-rs/src/models/swarm_spec_ca_config_external_c_as.rs @@ -11,7 +11,7 @@ #[allow(unused_imports)] use serde_json::Value; -#[derive(Debug, serde_derive::Serialize, serde_derive::Deserialize)] +#[derive(Debug, serde::Serialize, serde::Deserialize)] pub struct SwarmSpecCaConfigExternalCAs { /// Protocol for communication with the external CA (currently only `cfssl` is supported). #[serde(rename = "Protocol", skip_serializing_if = "Option::is_none")] diff --git a/edgelet/docker-rs/src/models/swarm_spec_dispatcher.rs b/edgelet/docker-rs/src/models/swarm_spec_dispatcher.rs index 55a748f5e9f..a3ba1a7c956 100644 --- a/edgelet/docker-rs/src/models/swarm_spec_dispatcher.rs +++ b/edgelet/docker-rs/src/models/swarm_spec_dispatcher.rs @@ -13,7 +13,7 @@ #[allow(unused_imports)] use serde_json::Value; -#[derive(Debug, serde_derive::Serialize, serde_derive::Deserialize)] +#[derive(Debug, serde::Serialize, serde::Deserialize)] pub struct SwarmSpecDispatcher { /// The delay for an agent to send a heartbeat to the dispatcher. #[serde(rename = "HeartbeatPeriod", skip_serializing_if = "Option::is_none")] diff --git a/edgelet/docker-rs/src/models/swarm_spec_encryption_config.rs b/edgelet/docker-rs/src/models/swarm_spec_encryption_config.rs index 8a669734786..557f9582a65 100644 --- a/edgelet/docker-rs/src/models/swarm_spec_encryption_config.rs +++ b/edgelet/docker-rs/src/models/swarm_spec_encryption_config.rs @@ -13,7 +13,7 @@ #[allow(unused_imports)] use serde_json::Value; -#[derive(Debug, serde_derive::Serialize, serde_derive::Deserialize)] +#[derive(Debug, serde::Serialize, serde::Deserialize)] pub struct SwarmSpecEncryptionConfig { /// If set, generate a key and use it to lock data stored on the managers. #[serde(rename = "AutoLockManagers", skip_serializing_if = "Option::is_none")] diff --git a/edgelet/docker-rs/src/models/swarm_spec_orchestration.rs b/edgelet/docker-rs/src/models/swarm_spec_orchestration.rs index 2009a4973b8..932e7883066 100644 --- a/edgelet/docker-rs/src/models/swarm_spec_orchestration.rs +++ b/edgelet/docker-rs/src/models/swarm_spec_orchestration.rs @@ -13,7 +13,7 @@ #[allow(unused_imports)] use serde_json::Value; -#[derive(Debug, serde_derive::Serialize, serde_derive::Deserialize)] +#[derive(Debug, serde::Serialize, serde::Deserialize)] pub struct SwarmSpecOrchestration { /// The number of historic tasks to keep per instance or node. If negative, never remove completed or failed tasks. #[serde( diff --git a/edgelet/docker-rs/src/models/swarm_spec_raft.rs b/edgelet/docker-rs/src/models/swarm_spec_raft.rs index 9d8d005089e..dfdedbae27e 100644 --- a/edgelet/docker-rs/src/models/swarm_spec_raft.rs +++ b/edgelet/docker-rs/src/models/swarm_spec_raft.rs @@ -13,7 +13,7 @@ #[allow(unused_imports)] use serde_json::Value; -#[derive(Debug, serde_derive::Serialize, serde_derive::Deserialize)] +#[derive(Debug, serde::Serialize, serde::Deserialize)] pub struct SwarmSpecRaft { /// The number of log entries between snapshots. #[serde(rename = "SnapshotInterval", skip_serializing_if = "Option::is_none")] diff --git a/edgelet/docker-rs/src/models/swarm_spec_task_defaults.rs b/edgelet/docker-rs/src/models/swarm_spec_task_defaults.rs index d0d78cc0950..df006c6bd2c 100644 --- a/edgelet/docker-rs/src/models/swarm_spec_task_defaults.rs +++ b/edgelet/docker-rs/src/models/swarm_spec_task_defaults.rs @@ -13,7 +13,7 @@ #[allow(unused_imports)] use serde_json::Value; -#[derive(Debug, serde_derive::Serialize, serde_derive::Deserialize)] +#[derive(Debug, serde::Serialize, serde::Deserialize)] pub struct SwarmSpecTaskDefaults { #[serde(rename = "LogDriver", skip_serializing_if = "Option::is_none")] log_driver: Option, diff --git a/edgelet/docker-rs/src/models/swarm_spec_task_defaults_log_driver.rs b/edgelet/docker-rs/src/models/swarm_spec_task_defaults_log_driver.rs index df306eaa727..60a762a2c8c 100644 --- a/edgelet/docker-rs/src/models/swarm_spec_task_defaults_log_driver.rs +++ b/edgelet/docker-rs/src/models/swarm_spec_task_defaults_log_driver.rs @@ -13,7 +13,7 @@ #[allow(unused_imports)] use serde_json::Value; -#[derive(Debug, serde_derive::Serialize, serde_derive::Deserialize)] +#[derive(Debug, serde::Serialize, serde::Deserialize)] pub struct SwarmSpecTaskDefaultsLogDriver { /// The log driver to use as a default for new tasks. #[serde(rename = "Name", skip_serializing_if = "Option::is_none")] diff --git a/edgelet/docker-rs/src/models/system_info.rs b/edgelet/docker-rs/src/models/system_info.rs index 47e749e96ff..a5c8eac4a98 100644 --- a/edgelet/docker-rs/src/models/system_info.rs +++ b/edgelet/docker-rs/src/models/system_info.rs @@ -11,7 +11,7 @@ #[allow(unused_imports)] use serde_json::Value; -#[derive(Debug, serde_derive::Serialize, serde_derive::Deserialize)] +#[derive(Debug, serde::Serialize, serde::Deserialize)] pub struct SystemInfo { /// Unique identifier of the daemon.


> **Note**: The format of the ID itself is not part of the API, and > should not be considered stable. #[serde(rename = "ID", skip_serializing_if = "Option::is_none")] diff --git a/edgelet/docker-rs/src/models/task.rs b/edgelet/docker-rs/src/models/task.rs index 57e82701097..5b8cf94dddb 100644 --- a/edgelet/docker-rs/src/models/task.rs +++ b/edgelet/docker-rs/src/models/task.rs @@ -11,7 +11,7 @@ #[allow(unused_imports)] use serde_json::Value; -#[derive(Debug, serde_derive::Serialize, serde_derive::Deserialize)] +#[derive(Debug, serde::Serialize, serde::Deserialize)] pub struct Task { /// The ID of the task. #[serde(rename = "ID", skip_serializing_if = "Option::is_none")] diff --git a/edgelet/docker-rs/src/models/task_spec.rs b/edgelet/docker-rs/src/models/task_spec.rs index 33d003f750e..31983f2b648 100644 --- a/edgelet/docker-rs/src/models/task_spec.rs +++ b/edgelet/docker-rs/src/models/task_spec.rs @@ -13,7 +13,7 @@ #[allow(unused_imports)] use serde_json::Value; -#[derive(Debug, serde_derive::Serialize, serde_derive::Deserialize)] +#[derive(Debug, serde::Serialize, serde::Deserialize)] pub struct TaskSpec { #[serde(rename = "PluginSpec", skip_serializing_if = "Option::is_none")] plugin_spec: Option, diff --git a/edgelet/docker-rs/src/models/task_spec_container_spec.rs b/edgelet/docker-rs/src/models/task_spec_container_spec.rs index bc8c7fc8eae..ca50ea6cf9d 100644 --- a/edgelet/docker-rs/src/models/task_spec_container_spec.rs +++ b/edgelet/docker-rs/src/models/task_spec_container_spec.rs @@ -13,7 +13,7 @@ #[allow(unused_imports)] use serde_json::Value; -#[derive(Debug, serde_derive::Serialize, serde_derive::Deserialize)] +#[derive(Debug, serde::Serialize, serde::Deserialize)] pub struct TaskSpecContainerSpec { /// The image name to use for the container #[serde(rename = "Image", skip_serializing_if = "Option::is_none")] diff --git a/edgelet/docker-rs/src/models/task_spec_container_spec_configs.rs b/edgelet/docker-rs/src/models/task_spec_container_spec_configs.rs index e81b19d2b21..eca8892e071 100644 --- a/edgelet/docker-rs/src/models/task_spec_container_spec_configs.rs +++ b/edgelet/docker-rs/src/models/task_spec_container_spec_configs.rs @@ -11,7 +11,7 @@ #[allow(unused_imports)] use serde_json::Value; -#[derive(Debug, serde_derive::Serialize, serde_derive::Deserialize)] +#[derive(Debug, serde::Serialize, serde::Deserialize)] pub struct TaskSpecContainerSpecConfigs { #[serde(rename = "File", skip_serializing_if = "Option::is_none")] file: Option, diff --git a/edgelet/docker-rs/src/models/task_spec_container_spec_dns_config.rs b/edgelet/docker-rs/src/models/task_spec_container_spec_dns_config.rs index c4e4ce8776b..14ac03f44c5 100644 --- a/edgelet/docker-rs/src/models/task_spec_container_spec_dns_config.rs +++ b/edgelet/docker-rs/src/models/task_spec_container_spec_dns_config.rs @@ -13,7 +13,7 @@ #[allow(unused_imports)] use serde_json::Value; -#[derive(Debug, serde_derive::Serialize, serde_derive::Deserialize)] +#[derive(Debug, serde::Serialize, serde::Deserialize)] pub struct TaskSpecContainerSpecDnsConfig { /// The IP addresses of the name servers. #[serde(rename = "Nameservers", skip_serializing_if = "Option::is_none")] diff --git a/edgelet/docker-rs/src/models/task_spec_container_spec_file.rs b/edgelet/docker-rs/src/models/task_spec_container_spec_file.rs index 3a811ef0346..76d34bc13ad 100644 --- a/edgelet/docker-rs/src/models/task_spec_container_spec_file.rs +++ b/edgelet/docker-rs/src/models/task_spec_container_spec_file.rs @@ -13,7 +13,7 @@ #[allow(unused_imports)] use serde_json::Value; -#[derive(Debug, serde_derive::Serialize, serde_derive::Deserialize)] +#[derive(Debug, serde::Serialize, serde::Deserialize)] pub struct TaskSpecContainerSpecFile { /// Name represents the final filename in the filesystem. #[serde(rename = "Name", skip_serializing_if = "Option::is_none")] diff --git a/edgelet/docker-rs/src/models/task_spec_container_spec_file_1.rs b/edgelet/docker-rs/src/models/task_spec_container_spec_file_1.rs index 042a6037ad8..3716e4d3950 100644 --- a/edgelet/docker-rs/src/models/task_spec_container_spec_file_1.rs +++ b/edgelet/docker-rs/src/models/task_spec_container_spec_file_1.rs @@ -13,7 +13,7 @@ #[allow(unused_imports)] use serde_json::Value; -#[derive(Debug, serde_derive::Serialize, serde_derive::Deserialize)] +#[derive(Debug, serde::Serialize, serde::Deserialize)] pub struct TaskSpecContainerSpecFile1 { /// Name represents the final filename in the filesystem. #[serde(rename = "Name", skip_serializing_if = "Option::is_none")] diff --git a/edgelet/docker-rs/src/models/task_spec_container_spec_privileges.rs b/edgelet/docker-rs/src/models/task_spec_container_spec_privileges.rs index 8ddcddaa669..d6d4070dcb3 100644 --- a/edgelet/docker-rs/src/models/task_spec_container_spec_privileges.rs +++ b/edgelet/docker-rs/src/models/task_spec_container_spec_privileges.rs @@ -13,7 +13,7 @@ #[allow(unused_imports)] use serde_json::Value; -#[derive(Debug, serde_derive::Serialize, serde_derive::Deserialize)] +#[derive(Debug, serde::Serialize, serde::Deserialize)] pub struct TaskSpecContainerSpecPrivileges { #[serde(rename = "CredentialSpec", skip_serializing_if = "Option::is_none")] credential_spec: Option, diff --git a/edgelet/docker-rs/src/models/task_spec_container_spec_privileges_credential_spec.rs b/edgelet/docker-rs/src/models/task_spec_container_spec_privileges_credential_spec.rs index 7749e6080bf..3aaceedea94 100644 --- a/edgelet/docker-rs/src/models/task_spec_container_spec_privileges_credential_spec.rs +++ b/edgelet/docker-rs/src/models/task_spec_container_spec_privileges_credential_spec.rs @@ -13,7 +13,7 @@ #[allow(unused_imports)] use serde_json::Value; -#[derive(Debug, serde_derive::Serialize, serde_derive::Deserialize)] +#[derive(Debug, serde::Serialize, serde::Deserialize)] pub struct TaskSpecContainerSpecPrivilegesCredentialSpec { /// Load credential spec from this file. The file is read by the daemon, and must be present in the `CredentialSpecs` subdirectory in the docker data directory, which defaults to `C:\\ProgramData\\Docker\\` on Windows. For example, specifying `spec.json` loads `C:\\ProgramData\\Docker\\CredentialSpecs\\spec.json`.


> **Note**: `CredentialSpec.File` and `CredentialSpec.Registry` are mutually exclusive. #[serde(rename = "File", skip_serializing_if = "Option::is_none")] diff --git a/edgelet/docker-rs/src/models/task_spec_container_spec_privileges_se_linux_context.rs b/edgelet/docker-rs/src/models/task_spec_container_spec_privileges_se_linux_context.rs index 531f7826c5c..0dd2388a21e 100644 --- a/edgelet/docker-rs/src/models/task_spec_container_spec_privileges_se_linux_context.rs +++ b/edgelet/docker-rs/src/models/task_spec_container_spec_privileges_se_linux_context.rs @@ -13,7 +13,7 @@ #[allow(unused_imports)] use serde_json::Value; -#[derive(Debug, serde_derive::Serialize, serde_derive::Deserialize)] +#[derive(Debug, serde::Serialize, serde::Deserialize)] pub struct TaskSpecContainerSpecPrivilegesSeLinuxContext { /// Disable SELinux #[serde(rename = "Disable", skip_serializing_if = "Option::is_none")] diff --git a/edgelet/docker-rs/src/models/task_spec_container_spec_secrets.rs b/edgelet/docker-rs/src/models/task_spec_container_spec_secrets.rs index daa09ac1b23..430d9a692ab 100644 --- a/edgelet/docker-rs/src/models/task_spec_container_spec_secrets.rs +++ b/edgelet/docker-rs/src/models/task_spec_container_spec_secrets.rs @@ -11,7 +11,7 @@ #[allow(unused_imports)] use serde_json::Value; -#[derive(Debug, serde_derive::Serialize, serde_derive::Deserialize)] +#[derive(Debug, serde::Serialize, serde::Deserialize)] pub struct TaskSpecContainerSpecSecrets { #[serde(rename = "File", skip_serializing_if = "Option::is_none")] file: Option, diff --git a/edgelet/docker-rs/src/models/task_spec_log_driver.rs b/edgelet/docker-rs/src/models/task_spec_log_driver.rs index 287bc840a0d..edb2b0e7cfa 100644 --- a/edgelet/docker-rs/src/models/task_spec_log_driver.rs +++ b/edgelet/docker-rs/src/models/task_spec_log_driver.rs @@ -13,7 +13,7 @@ #[allow(unused_imports)] use serde_json::Value; -#[derive(Debug, serde_derive::Serialize, serde_derive::Deserialize)] +#[derive(Debug, serde::Serialize, serde::Deserialize)] pub struct TaskSpecLogDriver { #[serde(rename = "Name", skip_serializing_if = "Option::is_none")] name: Option, diff --git a/edgelet/docker-rs/src/models/task_spec_networks.rs b/edgelet/docker-rs/src/models/task_spec_networks.rs index 0087d934743..fa1c80d8a4b 100644 --- a/edgelet/docker-rs/src/models/task_spec_networks.rs +++ b/edgelet/docker-rs/src/models/task_spec_networks.rs @@ -11,7 +11,7 @@ #[allow(unused_imports)] use serde_json::Value; -#[derive(Debug, serde_derive::Serialize, serde_derive::Deserialize)] +#[derive(Debug, serde::Serialize, serde::Deserialize)] pub struct TaskSpecNetworks { #[serde(rename = "Target", skip_serializing_if = "Option::is_none")] target: Option, diff --git a/edgelet/docker-rs/src/models/task_spec_placement.rs b/edgelet/docker-rs/src/models/task_spec_placement.rs index ece9d2f9609..e74ef8f3c95 100644 --- a/edgelet/docker-rs/src/models/task_spec_placement.rs +++ b/edgelet/docker-rs/src/models/task_spec_placement.rs @@ -11,7 +11,7 @@ #[allow(unused_imports)] use serde_json::Value; -#[derive(Debug, serde_derive::Serialize, serde_derive::Deserialize)] +#[derive(Debug, serde::Serialize, serde::Deserialize)] pub struct TaskSpecPlacement { /// An array of constraints. #[serde(rename = "Constraints", skip_serializing_if = "Option::is_none")] diff --git a/edgelet/docker-rs/src/models/task_spec_placement_preferences.rs b/edgelet/docker-rs/src/models/task_spec_placement_preferences.rs index e736873d629..91a62dae163 100644 --- a/edgelet/docker-rs/src/models/task_spec_placement_preferences.rs +++ b/edgelet/docker-rs/src/models/task_spec_placement_preferences.rs @@ -11,7 +11,7 @@ #[allow(unused_imports)] use serde_json::Value; -#[derive(Debug, serde_derive::Serialize, serde_derive::Deserialize)] +#[derive(Debug, serde::Serialize, serde::Deserialize)] pub struct TaskSpecPlacementPreferences { #[serde(rename = "Spread", skip_serializing_if = "Option::is_none")] spread: Option, diff --git a/edgelet/docker-rs/src/models/task_spec_placement_spread.rs b/edgelet/docker-rs/src/models/task_spec_placement_spread.rs index 182fc1e6277..df9603f6c83 100644 --- a/edgelet/docker-rs/src/models/task_spec_placement_spread.rs +++ b/edgelet/docker-rs/src/models/task_spec_placement_spread.rs @@ -11,7 +11,7 @@ #[allow(unused_imports)] use serde_json::Value; -#[derive(Debug, serde_derive::Serialize, serde_derive::Deserialize)] +#[derive(Debug, serde::Serialize, serde::Deserialize)] pub struct TaskSpecPlacementSpread { /// label descriptor, such as engine.labels.az #[serde(rename = "SpreadDescriptor", skip_serializing_if = "Option::is_none")] diff --git a/edgelet/docker-rs/src/models/task_spec_plugin_spec.rs b/edgelet/docker-rs/src/models/task_spec_plugin_spec.rs index bbb5e5c90eb..406c9df7fc1 100644 --- a/edgelet/docker-rs/src/models/task_spec_plugin_spec.rs +++ b/edgelet/docker-rs/src/models/task_spec_plugin_spec.rs @@ -13,7 +13,7 @@ #[allow(unused_imports)] use serde_json::Value; -#[derive(Debug, serde_derive::Serialize, serde_derive::Deserialize)] +#[derive(Debug, serde::Serialize, serde::Deserialize)] pub struct TaskSpecPluginSpec { /// The name or 'alias' to use for the plugin. #[serde(rename = "Name", skip_serializing_if = "Option::is_none")] diff --git a/edgelet/docker-rs/src/models/task_spec_resources.rs b/edgelet/docker-rs/src/models/task_spec_resources.rs index 432eca8b5f3..154ac9e438a 100644 --- a/edgelet/docker-rs/src/models/task_spec_resources.rs +++ b/edgelet/docker-rs/src/models/task_spec_resources.rs @@ -13,7 +13,7 @@ #[allow(unused_imports)] use serde_json::Value; -#[derive(Debug, serde_derive::Serialize, serde_derive::Deserialize)] +#[derive(Debug, serde::Serialize, serde::Deserialize)] pub struct TaskSpecResources { /// Define resources limits. #[serde(rename = "Limits", skip_serializing_if = "Option::is_none")] diff --git a/edgelet/docker-rs/src/models/task_spec_restart_policy.rs b/edgelet/docker-rs/src/models/task_spec_restart_policy.rs index 7cb97f4ec40..1e7385cd289 100644 --- a/edgelet/docker-rs/src/models/task_spec_restart_policy.rs +++ b/edgelet/docker-rs/src/models/task_spec_restart_policy.rs @@ -13,7 +13,7 @@ #[allow(unused_imports)] use serde_json::Value; -#[derive(Debug, serde_derive::Serialize, serde_derive::Deserialize)] +#[derive(Debug, serde::Serialize, serde::Deserialize)] pub struct TaskSpecRestartPolicy { /// Condition for restart. #[serde(rename = "Condition", skip_serializing_if = "Option::is_none")] diff --git a/edgelet/docker-rs/src/models/task_state.rs b/edgelet/docker-rs/src/models/task_state.rs index 0a7f9c3b1e3..1f1cc92bc4c 100644 --- a/edgelet/docker-rs/src/models/task_state.rs +++ b/edgelet/docker-rs/src/models/task_state.rs @@ -11,7 +11,7 @@ #[allow(unused_imports)] use serde_json::Value; -#[derive(Debug, serde_derive::Serialize, serde_derive::Deserialize)] +#[derive(Debug, serde::Serialize, serde::Deserialize)] pub struct TaskState {} impl TaskState { diff --git a/edgelet/docker-rs/src/models/task_status.rs b/edgelet/docker-rs/src/models/task_status.rs index 04a65793585..b605282a8e9 100644 --- a/edgelet/docker-rs/src/models/task_status.rs +++ b/edgelet/docker-rs/src/models/task_status.rs @@ -11,7 +11,7 @@ #[allow(unused_imports)] use serde_json::Value; -#[derive(Debug, serde_derive::Serialize, serde_derive::Deserialize)] +#[derive(Debug, serde::Serialize, serde::Deserialize)] pub struct TaskStatus { #[serde(rename = "Timestamp", skip_serializing_if = "Option::is_none")] timestamp: Option, diff --git a/edgelet/docker-rs/src/models/task_status_container_status.rs b/edgelet/docker-rs/src/models/task_status_container_status.rs index 44facef2517..a2e08e44483 100644 --- a/edgelet/docker-rs/src/models/task_status_container_status.rs +++ b/edgelet/docker-rs/src/models/task_status_container_status.rs @@ -11,7 +11,7 @@ #[allow(unused_imports)] use serde_json::Value; -#[derive(Debug, serde_derive::Serialize, serde_derive::Deserialize)] +#[derive(Debug, serde::Serialize, serde::Deserialize)] pub struct TaskStatusContainerStatus { #[serde(rename = "ContainerID", skip_serializing_if = "Option::is_none")] container_id: Option, diff --git a/edgelet/docker-rs/src/models/throttle_device.rs b/edgelet/docker-rs/src/models/throttle_device.rs index b0851b53f92..7b136a069e1 100644 --- a/edgelet/docker-rs/src/models/throttle_device.rs +++ b/edgelet/docker-rs/src/models/throttle_device.rs @@ -11,7 +11,7 @@ #[allow(unused_imports)] use serde_json::Value; -#[derive(Debug, serde_derive::Serialize, serde_derive::Deserialize, Clone)] +#[derive(Debug, serde::Serialize, serde::Deserialize, Clone)] pub struct ThrottleDevice { /// Device path #[serde(rename = "Path", skip_serializing_if = "Option::is_none")] diff --git a/edgelet/docker-rs/src/models/tls_info.rs b/edgelet/docker-rs/src/models/tls_info.rs index 0916c1b4644..ea45084aba9 100644 --- a/edgelet/docker-rs/src/models/tls_info.rs +++ b/edgelet/docker-rs/src/models/tls_info.rs @@ -13,7 +13,7 @@ #[allow(unused_imports)] use serde_json::Value; -#[derive(Debug, serde_derive::Serialize, serde_derive::Deserialize)] +#[derive(Debug, serde::Serialize, serde::Deserialize)] pub struct TlsInfo { /// The root CA certificate(s) that are used to validate leaf TLS certificates #[serde(rename = "TrustRoot", skip_serializing_if = "Option::is_none")] diff --git a/edgelet/docker-rs/src/models/volume.rs b/edgelet/docker-rs/src/models/volume.rs index 4dfb4e77665..0114ed66f29 100644 --- a/edgelet/docker-rs/src/models/volume.rs +++ b/edgelet/docker-rs/src/models/volume.rs @@ -11,7 +11,7 @@ #[allow(unused_imports)] use serde_json::Value; -#[derive(Debug, serde_derive::Serialize, serde_derive::Deserialize)] +#[derive(Debug, serde::Serialize, serde::Deserialize)] pub struct Volume { /// Name of the volume. #[serde(rename = "Name")] diff --git a/edgelet/docker-rs/src/models/volume_config.rs b/edgelet/docker-rs/src/models/volume_config.rs index d4a90585f60..e69a6787a1e 100644 --- a/edgelet/docker-rs/src/models/volume_config.rs +++ b/edgelet/docker-rs/src/models/volume_config.rs @@ -11,7 +11,7 @@ #[allow(unused_imports)] use serde_json::Value; -#[derive(Debug, serde_derive::Serialize, serde_derive::Deserialize)] +#[derive(Debug, serde::Serialize, serde::Deserialize)] pub struct VolumeConfig { /// The new volume's name. If not specified, Docker generates a name. #[serde(rename = "Name", skip_serializing_if = "Option::is_none")] diff --git a/edgelet/docker-rs/src/models/volume_usage_data.rs b/edgelet/docker-rs/src/models/volume_usage_data.rs index 2c5c953721d..4b12117aac2 100644 --- a/edgelet/docker-rs/src/models/volume_usage_data.rs +++ b/edgelet/docker-rs/src/models/volume_usage_data.rs @@ -13,7 +13,7 @@ #[allow(unused_imports)] use serde_json::Value; -#[derive(Debug, serde_derive::Serialize, serde_derive::Deserialize)] +#[derive(Debug, serde::Serialize, serde::Deserialize)] pub struct VolumeUsageData { /// Amount of disk space used by the volume (in bytes). This information is only available for volumes created with the `\"local\"` volume driver. For volumes created with other volume drivers, this field is set to `-1` (\"not available\") #[serde(rename = "Size")] diff --git a/edgelet/edgelet-core/Cargo.toml b/edgelet/edgelet-core/Cargo.toml index 2bf07cc1e56..866d499adf5 100644 --- a/edgelet/edgelet-core/Cargo.toml +++ b/edgelet/edgelet-core/Cargo.toml @@ -2,24 +2,25 @@ name = "edgelet-core" version = "0.1.0" authors = ["Azure IoT Edge Devs"] +edition = "2024" publish = false -edition = "2021" + [dependencies] -anyhow = "1" -async-trait = "0.1" -chrono = { version = "0.4", features = ["serde"] } -humantime = "2" -hyper = "0.14" -lazy_static = "1.4" -log = "0.4" -nix = "0.26" -num_cpus = "1.8.0" -serde = "1" -serde_json = "1" -thiserror = "1" -tokio = { version = "1", features = ["parking_lot", "sync"] } -url = "2" +anyhow = { workspace = true } +async-trait = { workspace = true } +chrono = { workspace = true } +humantime = { workspace = true } +hyper = { workspace = true } +log = { workspace = true } +nix = { workspace = true } +num_cpus = { workspace = true } +serde = { workspace = true } +serde_json = { workspace = true } +thiserror = { workspace = true } +tokio = { workspace = true } +url = { workspace = true } + +aziotctl-common = { workspace = true } -aziotctl-common = { git = "https://github.com/Azure/iot-identity-service", branch = "main" } edgelet-settings = { path = "../edgelet-settings" } diff --git a/edgelet/edgelet-core/src/lib.rs b/edgelet/edgelet-core/src/lib.rs index f08c74a7038..c5a79deb0cc 100644 --- a/edgelet/edgelet-core/src/lib.rs +++ b/edgelet/edgelet-core/src/lib.rs @@ -1,22 +1,13 @@ // Copyright (c) Microsoft. All rights reserved. -#![deny(rust_2018_idioms, warnings)] -#![deny(clippy::all, clippy::pedantic)] -#![allow( - clippy::default_trait_access, - clippy::missing_errors_doc, - clippy::module_name_repetitions, - clippy::must_use_candidate, - clippy::too_many_lines, - clippy::use_self -)] - pub mod error; pub mod module; mod parse_since; mod virtualization; +use std::sync::LazyLock; + pub use error::Error; pub use module::{ DiskInfo, LogOptions, LogTail, Module, ModuleAction, ModuleOperation, ModuleRegistry, @@ -27,18 +18,20 @@ pub use parse_since::parse_since; use std::path::{Path, PathBuf}; -use lazy_static::lazy_static; use url::Url; -lazy_static! { - static ref VERSION: &'static str = - option_env!("VERSION").unwrap_or_else(|| include_str!("../../version.txt").trim()); - static ref VERSION_WITH_SOURCE_VERSION: String = option_env!("VERSION") - .map(|version| option_env!("BUILD_SOURCEVERSION") - .map(|sha| format!("{version} ({sha})")) - .unwrap_or_else(|| version.to_string())) - .unwrap_or_else(|| include_str!("../../version.txt").trim().to_string()); -} +static VERSION: LazyLock<&'static str> = LazyLock::new(|| { + option_env!("VERSION").unwrap_or_else(|| include_str!("../../version.txt").trim()) +}); +static VERSION_WITH_SOURCE_VERSION: LazyLock = LazyLock::new(|| { + option_env!("VERSION") + .map(|version| { + option_env!("BUILD_SOURCEVERSION") + .map(|sha| format!("{version} ({sha})")) + .unwrap_or_else(|| version.to_string()) + }) + .unwrap_or_else(|| include_str!("../../version.txt").trim().to_string()) +}); pub fn version() -> &'static str { &VERSION diff --git a/edgelet/edgelet-core/src/module.rs b/edgelet/edgelet-core/src/module.rs index db950d49aef..e0d55d15f35 100644 --- a/edgelet/edgelet-core/src/module.rs +++ b/edgelet/edgelet-core/src/module.rs @@ -7,6 +7,7 @@ use std::time::Duration; use anyhow::Context; use chrono::prelude::*; +use hyper::body::Incoming; use nix::sys::utsname::UtsName; use serde::{Deserialize, Serialize}; @@ -402,7 +403,7 @@ pub struct ProvisioningInfo { pub struct SystemResources { host_uptime: u64, process_uptime: u64, - used_cpu: f64, + used_cpu: f32, used_ram: u64, total_ram: u64, disks: Vec, @@ -413,7 +414,7 @@ impl SystemResources { pub fn new( host_uptime: u64, process_uptime: u64, - used_cpu: f64, + used_cpu: f32, used_ram: u64, total_ram: u64, disks: Vec, @@ -480,7 +481,7 @@ pub trait ModuleRuntime { async fn list(&self) -> anyhow::Result>; async fn list_with_details(&self) -> anyhow::Result>; async fn list_images(&self) -> anyhow::Result>; - async fn logs(&self, id: &str, options: &LogOptions) -> anyhow::Result; + async fn logs(&self, id: &str, options: &LogOptions) -> anyhow::Result; async fn remove_all(&self) -> anyhow::Result<()>; async fn stop_all(&self, wait_before_kill: Option) -> anyhow::Result<()>; async fn module_top(&self, id: &str) -> anyhow::Result>; diff --git a/edgelet/edgelet-core/src/parse_since.rs b/edgelet/edgelet-core/src/parse_since.rs index 1fc20ec6efc..dd74059190f 100644 --- a/edgelet/edgelet-core/src/parse_since.rs +++ b/edgelet/edgelet-core/src/parse_since.rs @@ -27,7 +27,7 @@ pub fn parse_since(since: &str) -> anyhow::Result { #[cfg(test)] mod tests { - use super::{parse_since, Duration, Local, TryInto}; + use super::{Duration, Local, TryInto, parse_since}; #[test] fn parse_rfc3339() { diff --git a/edgelet/edgelet-docker/Cargo.toml b/edgelet/edgelet-docker/Cargo.toml index f0b24d7814d..b87fdb2f38d 100644 --- a/edgelet/edgelet-docker/Cargo.toml +++ b/edgelet/edgelet-docker/Cargo.toml @@ -1,30 +1,33 @@ [package] -authors = ["Azure IoT Edge Devs"] -edition = "2021" name = "edgelet-docker" -publish = false version = "0.1.0" +authors = ["Azure IoT Edge Devs"] +edition = "2024" +publish = false + [dependencies] -anyhow = "1" -async-trait = "0.1" -base64 = "0.21" -chrono = "0.4" -futures = "0.3" -hex = "0.4" -hyper = "0.14" -log = "0.4" -nix = "0.26" -serde = "1" -serde_json = "1" -serial_test = "1" -sysinfo = "0.28" -thiserror = "1" -tokio = { version = "1", features = ["parking_lot", "sync"] } -url = "2" +anyhow = { workspace = true } +async-trait = { workspace = true } +base64 = { workspace = true } +chrono = { workspace = true } +futures-util = { workspace = true } +hex = { workspace = true } +hyper = { workspace = true } +hyper-util = { workspace = true } +log = { workspace = true } +nix = { workspace = true } +serde = { workspace = true } +serde_json = { workspace = true } +serial_test = { workspace = true } +sysinfo = { workspace = true } +thiserror = { workspace = true } +tokio = { workspace = true } +url = { workspace = true } + +http-common = { workspace = true } docker = { path = "../docker-rs" } edgelet-core = { path = "../edgelet-core" } edgelet-settings = { path = "../edgelet-settings", features = ["settings-docker"] } edgelet-utils = { path = "../edgelet-utils" } -http-common = { git = "https://github.com/Azure/iot-identity-service", branch = "main" } diff --git a/edgelet/edgelet-docker/src/image_prune_data.rs b/edgelet/edgelet-docker/src/image_prune_data.rs index c88eae61e44..ce753a4d81a 100644 --- a/edgelet/edgelet-docker/src/image_prune_data.rs +++ b/edgelet/edgelet-docker/src/image_prune_data.rs @@ -67,7 +67,11 @@ impl ImagePruneData { Ok(map) => map, Err(e) => { drop(guard); - log::warn!("Could not read image garbage collection data. Latest time of use will not be updated for image: {}. Error: {}", image_id, e); + log::warn!( + "Could not read image garbage collection data. Latest time of use will not be updated for image: {}. Error: {}", + image_id, + e + ); return Err(e); } }; @@ -121,7 +125,10 @@ impl ImagePruneData { Ok(map) => map, Err(e) => { drop(guard); - log::warn!("Could not read image garbage collection data. Image garbage collection will not prune any images. {}", e); + log::warn!( + "Could not read image garbage collection data. Image garbage collection will not prune any images. {}", + e + ); return Ok(HashMap::new()); } }; @@ -143,7 +150,10 @@ impl ImagePruneData { guard.tmp_filepath.clone(), guard.image_use_filepath.clone(), ) { - log::warn!("Failed to update image auto pruning persistence file. File will be updated on next scheduled run. {}", e); + log::warn!( + "Failed to update image auto pruning persistence file. File will be updated on next scheduled run. {}", + e + ); }; /* ============================== */ @@ -221,7 +231,7 @@ fn write_images_with_timestamp( Err(err) => { return Err(Error::FileOperation(format!( "Could not update garbage collection data {err}" - ))) + ))); } }; @@ -287,10 +297,10 @@ mod tests { use serial_test::serial; use crate::{ + ImagePruneData, image_prune_data::{ - get_images_with_timestamp, process_state, IMAGE_USE_FILENAME, TMP_FILENAME, + IMAGE_USE_FILENAME, TMP_FILENAME, get_images_with_timestamp, process_state, }, - ImagePruneData, }; use super::write_images_with_timestamp; diff --git a/edgelet/edgelet-docker/src/lib.rs b/edgelet/edgelet-docker/src/lib.rs index c7647d97399..f8353e27a5a 100644 --- a/edgelet/edgelet-docker/src/lib.rs +++ b/edgelet/edgelet-docker/src/lib.rs @@ -1,17 +1,5 @@ // Copyright (c) Microsoft. All rights reserved. -#![deny(rust_2018_idioms, warnings)] -#![deny(clippy::all, clippy::pedantic)] -#![allow( - clippy::default_trait_access, - clippy::missing_errors_doc, - clippy::missing_panics_doc, - clippy::module_name_repetitions, - clippy::must_use_candidate, - clippy::too_many_lines, - clippy::use_self -)] - // mod client; mod error; mod image_prune_data; @@ -21,7 +9,7 @@ mod runtime; pub use error::Error; pub use image_prune_data::ImagePruneData; pub use module::{DockerModule, MODULE_TYPE}; -pub use runtime::{init_client, DockerModuleRuntime}; +pub use runtime::{DockerModuleRuntime, init_client}; use tokio::sync::mpsc::UnboundedSender; diff --git a/edgelet/edgelet-docker/src/module.rs b/edgelet/edgelet-docker/src/module.rs index 5c7a6074f5a..340f48f5898 100644 --- a/edgelet/edgelet-docker/src/module.rs +++ b/edgelet/edgelet-docker/src/module.rs @@ -1,6 +1,7 @@ // Copyright (c) Microsoft. All rights reserved. use anyhow::Context; +use hyper_util::client::legacy::connect::Connect; use docker::apis::{DockerApi, DockerApiClient}; use docker::models::InlineResponse200State; @@ -89,7 +90,7 @@ pub fn runtime_state( #[async_trait::async_trait] impl Module for DockerModule where - C: Clone + hyper::client::connect::Connect + Send + Sync + 'static, + C: Clone + Connect + Send + Sync + 'static, { type Config = DockerConfig; diff --git a/edgelet/edgelet-docker/src/runtime.rs b/edgelet/edgelet-docker/src/runtime.rs index b5de9aa9b35..be30c7a3b01 100644 --- a/edgelet/edgelet-docker/src/runtime.rs +++ b/edgelet/edgelet-docker/src/runtime.rs @@ -6,9 +6,11 @@ use std::time::{Duration, SystemTime, UNIX_EPOCH}; use std::{process, str}; use anyhow::Context; -use sysinfo::{CpuExt, DiskExt, PidExt, ProcessExt, System, SystemExt}; -use tokio::sync::mpsc::UnboundedSender; +use hyper::body::Incoming; +use hyper_util::client::legacy::connect::Connect; +use sysinfo::{Disks, Process, System}; use tokio::sync::Mutex; +use tokio::sync::mpsc::UnboundedSender; use url::Url; use docker::apis::{Configuration, DockerApi, DockerApiClient}; @@ -24,7 +26,7 @@ use edgelet_utils::ensure_not_empty; use http_common::Connector; use crate::error::Error; -use crate::module::{runtime_state, DockerModule, MODULE_TYPE as DOCKER_MODULE_TYPE}; +use crate::module::{DockerModule, MODULE_TYPE as DOCKER_MODULE_TYPE, runtime_state}; use crate::{ImagePruneData, MakeModuleRuntime}; type Deserializer = &'static mut serde_json::Deserializer>; @@ -77,7 +79,7 @@ impl std::fmt::Debug for DockerModuleRuntime { #[async_trait::async_trait] impl ModuleRegistry for DockerModuleRuntime where - C: Clone + hyper::client::connect::Connect + Send + Sync + 'static, + C: Clone + Connect + Send + Sync + 'static, { type Config = DockerConfig; @@ -120,11 +122,17 @@ where match self.list_images().await { Ok(image_name_to_id) => { if image_name_to_id.is_empty() { - log::error!("No docker images present on device: {} was just pulled, but not found on device", image); + log::error!( + "No docker images present on device: {} was just pulled, but not found on device", + image + ); } else if let Some(image_id) = image_name_to_id.get(config.image()) { self.image_use_data.record_image_use_timestamp(image_id)?; } else { - log::warn!("Could not retrieve image id. {} was not added to image garbage collection list and will not be garbage collected", image); + log::warn!( + "Could not retrieve image id. {} was not added to image garbage collection list and will not be garbage collected", + image + ); } } Err(e) => log::error!("Could not get list of docker images: {}", e), @@ -295,7 +303,7 @@ fn get_ipv6_settings(network_configuration: &MobyNetwork) -> (bool, Option #[async_trait::async_trait] impl ModuleRuntime for DockerModuleRuntime where - C: Clone + hyper::client::connect::Connect + Send + Sync + 'static, + C: Clone + Connect + Send + Sync + 'static, { type Config = DockerConfig; type Module = DockerModule; @@ -600,7 +608,7 @@ where let start_time = system_resources .process(sysinfo::Pid::from_u32(process::id())) - .map(ProcessExt::start_time) + .map(Process::start_time) .unwrap_or_default(); let current_time = SystemTime::now() @@ -608,20 +616,20 @@ where .unwrap_or_default() .as_secs(); - let used_cpu = system_resources.global_cpu_info().cpu_usage(); + let used_cpu = system_resources.global_cpu_usage(); let total_memory = total_memory_bytes(&system_resources); let used_memory = used_memory_bytes(&system_resources); - let disks = system_resources - .disks() + let disks = Disks::new_with_refreshed_list() + .list() .iter() .map(|disk| { DiskInfo::new( disk.name().to_string_lossy().into_owned(), disk.available_space(), disk.total_space(), - String::from_utf8_lossy(disk.file_system()).into_owned(), - format!("{:?}", disk.type_()), + disk.file_system().to_string_lossy().into_owned(), + format!("{:?}", disk.kind()), ) }) .collect(); @@ -758,7 +766,7 @@ where Ok(result) } - async fn logs(&self, id: &str, options: &LogOptions) -> anyhow::Result { + async fn logs(&self, id: &str, options: &LogOptions) -> anyhow::Result { log::info!("Getting logs for module {}...", id); self.client @@ -788,7 +796,7 @@ where remove.push(ModuleRuntime::remove(self, module.name())); } - for result in futures::future::join_all(remove).await { + for result in futures_util::future::join_all(remove).await { if let Err(err) = result { log::warn!("Failed to remove module: {:?}", err); } @@ -805,7 +813,7 @@ where stop.push(self.stop(module.name(), wait_before_kill)); } - for result in futures::future::join_all(stop).await { + for result in futures_util::future::join_all(stop).await { if let Err(err) = result { log::warn!("Failed to stop module: {:?}", err); } @@ -904,7 +912,9 @@ fn unset_privileged( } if let Some(config) = create_options.host_config() { if config.privileged() == Some(&true) || config.cap_add().map_or(0, Vec::len) != 0 { - log::warn!("Privileged capabilities are disallowed on this device. Privileged capabilities can be used to gain root access. If a module needs to run as privileged, and you are aware of the consequences, set `allow_elevated_docker_permissions` to `true` in the config.toml and restart the service."); + log::warn!( + "Privileged capabilities are disallowed on this device. Privileged capabilities can be used to gain root access. If a module needs to run as privileged, and you are aware of the consequences, set `allow_elevated_docker_permissions` to `true` in the config.toml and restart the service." + ); let mut config = config.clone(); config.set_privileged(false); diff --git a/edgelet/edgelet-http-mgmt/Cargo.toml b/edgelet/edgelet-http-mgmt/Cargo.toml index 099585367ee..efeec31bd4b 100644 --- a/edgelet/edgelet-http-mgmt/Cargo.toml +++ b/edgelet/edgelet-http-mgmt/Cargo.toml @@ -2,36 +2,39 @@ name = "edgelet-http-mgmt" version = "0.1.0" authors = ["Azure IoT Edge Devs"] +edition = "2024" publish = false -edition = "2021" + [dependencies] -async-trait = "0.1" -futures-util = "0.3" -http = "0.2" -hyper = "0.14" -libc = "0.2" -log = "0.4" -percent-encoding = "2" -regex = "1" -serde = "1" -serde_json = "1" -tokio = { version = "1", features = ["parking_lot", "rt", "sync"] } -url = "2" +async-trait = { workspace = true } +futures-util = { workspace = true } +http = { workspace = true } +http-body-util = { workspace = true } +hyper = { workspace = true } +libc = { workspace = true } +log = { workspace = true } +percent-encoding = { workspace = true } +regex = { workspace = true } +serde = { workspace = true } +serde_json = { workspace = true } +tokio = { workspace = true } +url = { workspace = true } + +aziot-identity-client-async = { workspace = true } +aziot-identity-common = { workspace = true } +aziot-identity-common-http = { workspace = true } +http-common = { workspace = true } edgelet-core = { path = "../edgelet-core" } edgelet-http = { path = "../edgelet-http" } edgelet-settings = { path = "../edgelet-settings" } support-bundle = { path = "../support-bundle" } -aziot-identity-client-async = { git = "https://github.com/Azure/iot-identity-service", branch = "main" } -aziot-identity-common = { git = "https://github.com/Azure/iot-identity-service", branch = "main" } -aziot-identity-common-http = { git = "https://github.com/Azure/iot-identity-service", branch = "main" } - -http-common = { git = "https://github.com/Azure/iot-identity-service", branch = "main" } [dev-dependencies] -nix = "0.26" +nix = { workspace = true } + +test-common = { workspace = true } edgelet-test-utils = { path = "../edgelet-test-utils" } -test-common = { git = "https://github.com/Azure/iot-identity-service", branch = "main" } diff --git a/edgelet/edgelet-http-mgmt/src/identity/create_or_list.rs b/edgelet/edgelet-http-mgmt/src/identity/create_or_list.rs index ee3715d8bd4..8d40d3134d6 100644 --- a/edgelet/edgelet-http-mgmt/src/identity/create_or_list.rs +++ b/edgelet/edgelet-http-mgmt/src/identity/create_or_list.rs @@ -129,6 +129,8 @@ where #[cfg(test)] mod tests { + use http_body_util::BodyExt as _; + use http_common::server::Route; use edgelet_test_utils::{test_route_err, test_route_ok}; @@ -181,7 +183,7 @@ mod tests { }; let response = route.post(Some(body)).await.unwrap(); - let body = hyper::body::to_bytes(response.into_body()).await.unwrap(); + let body = response.into_body().collect().await.unwrap().to_bytes(); let response: crate::identity::Identity = serde_json::from_slice(&body).unwrap(); expected_identities.push(response); @@ -192,7 +194,7 @@ mod tests { route.client = client.clone(); let response = route.get().await.unwrap(); - let body = hyper::body::to_bytes(response.into_body()).await.unwrap(); + let body = response.into_body().collect().await.unwrap().to_bytes(); let response: super::ListIdentitiesResponse = serde_json::from_slice(&body).unwrap(); // Check that identities response contains the expected identities diff --git a/edgelet/edgelet-http-mgmt/src/identity/delete_or_update.rs b/edgelet/edgelet-http-mgmt/src/identity/delete_or_update.rs index 6fed9078d94..81f5d16e8c8 100644 --- a/edgelet/edgelet-http-mgmt/src/identity/delete_or_update.rs +++ b/edgelet/edgelet-http-mgmt/src/identity/delete_or_update.rs @@ -92,6 +92,8 @@ where #[cfg(test)] mod tests { + use http_body_util::BodyExt as _; + use http_common::server::Route; use edgelet_test_utils::{test_route_err, test_route_ok}; @@ -144,7 +146,7 @@ mod tests { route.client = client.clone(); let response = route.put(serde::de::IgnoredAny).await.unwrap(); - let body = hyper::body::to_bytes(response.into_body()).await.unwrap(); + let body = response.into_body().collect().await.unwrap().to_bytes(); let _response: crate::identity::Identity = serde_json::from_slice(&body).unwrap(); // Delete Identity diff --git a/edgelet/edgelet-http-mgmt/src/module/logs.rs b/edgelet/edgelet-http-mgmt/src/module/logs.rs index 3ef58813d82..2eb0a769338 100644 --- a/edgelet/edgelet-http-mgmt/src/module/logs.rs +++ b/edgelet/edgelet-http-mgmt/src/module/logs.rs @@ -1,5 +1,7 @@ // Copyright (c) Microsoft. All rights reserved. +use http_body_util::{BodyExt as _, combinators::BoxBody}; + pub(crate) struct Route where M: edgelet_core::ModuleRuntime + Send + Sync, @@ -72,7 +74,11 @@ where .map_err(|err| edgelet_http::error::runtime_error(&*runtime, &err))? }; - let res = http_common::server::response::chunked(hyper::StatusCode::OK, logs, "text/plain"); + let res = hyper::Response::builder() + .status(hyper::StatusCode::OK) + .header(hyper::header::CONTENT_TYPE, "text/plain") + .body(BoxBody::new(logs.map_err(Into::into))) + .expect("cannot fail to build hyper response"); Ok(res) } diff --git a/edgelet/edgelet-http-mgmt/src/system_info/support_bundle.rs b/edgelet/edgelet-http-mgmt/src/system_info/support_bundle.rs index b9f8b441e3c..d0c6ee18e52 100644 --- a/edgelet/edgelet-http-mgmt/src/system_info/support_bundle.rs +++ b/edgelet/edgelet-http-mgmt/src/system_info/support_bundle.rs @@ -120,7 +120,7 @@ where } } -struct ReadStream(Box); +struct ReadStream(Box); impl futures_util::stream::Stream for ReadStream { type Item = Result, std::io::Error>; diff --git a/edgelet/edgelet-http-workload/Cargo.toml b/edgelet/edgelet-http-workload/Cargo.toml index 97f24466f9e..197572258ec 100644 --- a/edgelet/edgelet-http-workload/Cargo.toml +++ b/edgelet/edgelet-http-workload/Cargo.toml @@ -2,49 +2,50 @@ name = "edgelet-http-workload" version = "0.1.0" authors = ["Azure IoT Edge Devs"] +edition = "2024" publish = false -edition = "2021" + [dependencies] -async-trait = "0.1" -base64 = "0.21" -chrono = "0.4" -futures-util = "0.3" -http = "0.2" -hyper = "0.14" -log = "0.4" -libc = "0.2" -openssl = "0.10" -percent-encoding = "2" -regex = "1" -serde = "1" -serde_json = "1" -tokio = { version = "1", features = ["parking_lot", "sync"] } -url = "2" +async-trait = { workspace = true } +base64 = { workspace = true } +bytes = { workspace = true } +chrono = { workspace = true } +http = { workspace = true } +http-body-util = { workspace = true } +hyper = { workspace = true } +log = { workspace = true } +libc = { workspace = true } +openssl = { workspace = true } +percent-encoding = { workspace = true } +regex = { workspace = true } +serde = { workspace = true } +serde_json = { workspace = true } +tokio = { workspace = true } +url = { workspace = true } + +aziot-cert-client-async = { workspace = true } +aziot-cert-common-http = { workspace = true } +aziot-certd-config = { workspace = true } +aziot-identity-client-async = { workspace = true } +aziot-identity-common = { workspace = true } +aziot-identity-common-http = { workspace = true } +aziot-key-client = { workspace = true } +aziot-key-client-async = { workspace = true } +aziot-key-common = { workspace = true } +aziot-key-common-http = { workspace = true } +aziot-key-openssl-engine = { workspace = true } +cert-renewal = { workspace = true } +http-common = { workspace = true } edgelet-core = { path = "../edgelet-core" } edgelet-http = { path = "../edgelet-http" } edgelet-settings = { path = "../edgelet-settings" } -aziot-key-client = { git = "https://github.com/Azure/iot-identity-service", branch = "main" } -aziot-key-client-async = { git = "https://github.com/Azure/iot-identity-service", branch = "main" } -aziot-key-common = { git = "https://github.com/Azure/iot-identity-service", branch = "main" } -aziot-key-common-http = { git = "https://github.com/Azure/iot-identity-service", branch = "main" } -aziot-key-openssl-engine = { git = "https://github.com/Azure/iot-identity-service", branch = "main" } - -aziot-cert-client-async = { git = "https://github.com/Azure/iot-identity-service", branch = "main" } -aziot-cert-common-http = { git = "https://github.com/Azure/iot-identity-service", branch = "main" } -aziot-certd-config = { git = "https://github.com/Azure/iot-identity-service", branch = "main" } - -aziot-identity-client-async = { git = "https://github.com/Azure/iot-identity-service", branch = "main" } -aziot-identity-common = { git = "https://github.com/Azure/iot-identity-service", branch = "main" } -aziot-identity-common-http = { git = "https://github.com/Azure/iot-identity-service", branch = "main" } - -cert-renewal = { git = "https://github.com/Azure/iot-identity-service", branch = "main" } -http-common = { git = "https://github.com/Azure/iot-identity-service", branch = "main" } [dev-dependencies] -nix = "0.26" +nix = { workspace = true } + +test-common = { workspace = true } edgelet-test-utils = { path = "../edgelet-test-utils" } -test-common = { git = "https://github.com/Azure/iot-identity-service", branch = "main" } diff --git a/edgelet/edgelet-http-workload/src/edge_ca.rs b/edgelet/edgelet-http-workload/src/edge_ca.rs index 083f13bfad1..3dc3cc0442f 100644 --- a/edgelet/edgelet-http-workload/src/edge_ca.rs +++ b/edgelet/edgelet-http-workload/src/edge_ca.rs @@ -280,8 +280,8 @@ pub(crate) fn keys( Ok((private_key, public_key)) } -pub(crate) fn extensions( -) -> Result, openssl::error::ErrorStack> { +pub(crate) fn extensions() +-> Result, openssl::error::ErrorStack> { let mut csr_extensions = openssl::stack::Stack::new()?; let mut key_usage = openssl::x509::extension::KeyUsage::new(); diff --git a/edgelet/edgelet-http-workload/src/module/cert/identity.rs b/edgelet/edgelet-http-workload/src/module/cert/identity.rs index f0b2ee99cdd..5a4196feb5d 100644 --- a/edgelet/edgelet-http-workload/src/module/cert/identity.rs +++ b/edgelet/edgelet-http-workload/src/module/cert/identity.rs @@ -84,8 +84,8 @@ where type PutBody = serde::de::IgnoredAny; } -fn identity_cert_extensions( -) -> Result, openssl::error::ErrorStack> { +fn identity_cert_extensions() +-> Result, openssl::error::ErrorStack> { let mut csr_extensions = openssl::stack::Stack::new()?; let mut ext_key_usage = openssl::x509::extension::ExtendedKeyUsage::new(); diff --git a/edgelet/edgelet-http-workload/src/module/cert/mod.rs b/edgelet/edgelet-http-workload/src/module/cert/mod.rs index 5f4a87f74b5..a0ddd50a2a6 100644 --- a/edgelet/edgelet-http-workload/src/module/cert/mod.rs +++ b/edgelet/edgelet-http-workload/src/module/cert/mod.rs @@ -3,6 +3,11 @@ pub(crate) mod identity; pub(crate) mod server; +use std::error::Error as StdError; + +use bytes::Bytes; +use http_body_util::combinators::BoxBody; + #[cfg(not(test))] use aziot_cert_client_async::Client as CertClient; #[cfg(not(test))] @@ -64,7 +69,10 @@ impl CertApi { common_name: String, subject_alt_names: Vec, extensions: openssl::stack::Stack, - ) -> Result, http_common::server::Error> { + ) -> Result< + hyper::Response>>, + http_common::server::Error, + > { let keys = new_keys() .map_err(|_| edgelet_http::error::server_error("failed to generate csr keys"))?; let private_key = key_to_pem(&keys.0); @@ -196,8 +204,7 @@ fn get_expiration(cert: &str) -> Result { let expiration = cert.not_after().to_string(); let expiration = chrono::NaiveDateTime::parse_from_str(&expiration, "%b %e %H:%M:%S %Y GMT") .expect("cert not_after should parse"); - let expiration = chrono::DateTime::::from_utc(expiration, chrono::Utc); - + let expiration = chrono::TimeZone::from_utc_datetime(&chrono::Utc, &expiration); Ok(expiration.to_rfc3339()) } @@ -214,6 +221,8 @@ fn key_to_pem(key: &openssl::pkey::PKey) -> String { #[cfg(test)] mod tests { + use http_body_util::BodyExt as _; + fn test_api() -> super::CertApi { let key_client = super::KeyClient::default(); let key_client = std::sync::Arc::new(tokio::sync::Mutex::new(key_client)); @@ -254,7 +263,7 @@ mod tests { .unwrap(); // Parse response - let body = hyper::body::to_bytes(response.into_body()).await.unwrap(); + let body = response.into_body().collect().await.unwrap().to_bytes(); let response: super::CertificateResponse = serde_json::from_slice(&body).unwrap(); let cert = openssl::x509::X509::from_pem(response.certificate.as_bytes()).unwrap(); diff --git a/edgelet/edgelet-http-workload/src/module/cert/server.rs b/edgelet/edgelet-http-workload/src/module/cert/server.rs index db87aec8ae8..f8185944362 100644 --- a/edgelet/edgelet-http-workload/src/module/cert/server.rs +++ b/edgelet/edgelet-http-workload/src/module/cert/server.rs @@ -115,8 +115,8 @@ where type PutBody = serde::de::IgnoredAny; } -fn server_cert_extensions( -) -> Result, openssl::error::ErrorStack> { +fn server_cert_extensions() +-> Result, openssl::error::ErrorStack> { let mut csr_extensions = openssl::stack::Stack::new()?; let mut ext_key_usage = openssl::x509::extension::ExtendedKeyUsage::new(); @@ -130,11 +130,14 @@ fn server_cert_extensions( #[cfg(test)] mod tests { - use crate::module::cert::CertificateResponse; + use http_body_util::BodyExt as _; + use http_common::server::Route; use edgelet_test_utils::{test_route_err, test_route_ok}; + use crate::module::cert::CertificateResponse; + const TEST_PATH: &str = "/modules/testModule/genid/1/certificate/server"; const MODULE_NAME: &str = "testModule"; @@ -188,12 +191,11 @@ mod tests { } let response = post(route).await.unwrap(); - let body_bytes = hyper::body::to_bytes(response.into_body()).await.unwrap(); - let cert_response = serde_json::from_str::( - &String::from_utf8(body_bytes.to_vec()).unwrap(), - ) - .unwrap() - .certificate; + let body = response.into_body().collect().await.unwrap().to_bytes(); + let cert_response = + serde_json::from_str::(&String::from_utf8(body.to_vec()).unwrap()) + .unwrap() + .certificate; let cert = openssl::x509::X509::from_pem(cert_response.as_bytes()) .map_err(|_| edgelet_http::error::server_error("failed to parse cert")); diff --git a/edgelet/edgelet-http-workload/src/module/data/decrypt.rs b/edgelet/edgelet-http-workload/src/module/data/decrypt.rs index 1083ffd7a59..92a33b88c2e 100644 --- a/edgelet/edgelet-http-workload/src/module/data/decrypt.rs +++ b/edgelet/edgelet-http-workload/src/module/data/decrypt.rs @@ -118,6 +118,8 @@ where #[cfg(test)] mod tests { + use http_body_util::BodyExt as _; + use http_common::server::Route; use edgelet_test_utils::{test_route_err, test_route_ok}; @@ -199,7 +201,7 @@ mod tests { let route = test_route_ok!(TEST_PATH); let response = route.post(Some(body)).await.unwrap(); - let body = hyper::body::to_bytes(response.into_body()).await.unwrap(); + let body = response.into_body().collect().await.unwrap().to_bytes(); let response: super::DecryptResponse = serde_json::from_slice(&body).unwrap(); base64::Engine::decode(&engine, response.plaintext).unwrap(); } diff --git a/edgelet/edgelet-http-workload/src/module/data/encrypt.rs b/edgelet/edgelet-http-workload/src/module/data/encrypt.rs index f53408960b5..da71349d414 100644 --- a/edgelet/edgelet-http-workload/src/module/data/encrypt.rs +++ b/edgelet/edgelet-http-workload/src/module/data/encrypt.rs @@ -118,6 +118,8 @@ where #[cfg(test)] mod tests { + use http_body_util::BodyExt as _; + use http_common::server::Route; use edgelet_test_utils::{test_route_err, test_route_ok}; @@ -199,7 +201,7 @@ mod tests { let route = test_route_ok!(TEST_PATH); let response = route.post(Some(body)).await.unwrap(); - let body = hyper::body::to_bytes(response.into_body()).await.unwrap(); + let body = response.into_body().collect().await.unwrap().to_bytes(); let response: super::EncryptResponse = serde_json::from_slice(&body).unwrap(); base64::Engine::decode(&engine, response.ciphertext).unwrap(); } diff --git a/edgelet/edgelet-http-workload/src/module/data/sign.rs b/edgelet/edgelet-http-workload/src/module/data/sign.rs index 6f9453ed2da..d616cb5194f 100644 --- a/edgelet/edgelet-http-workload/src/module/data/sign.rs +++ b/edgelet/edgelet-http-workload/src/module/data/sign.rs @@ -84,7 +84,7 @@ where None => { return Err(edgelet_http::error::bad_request( "missing parameter: request body", - )) + )); } }; @@ -130,7 +130,7 @@ async fn get_module_key( let identity = match identity { aziot_identity_common::Identity::Aziot(identity) => identity, aziot_identity_common::Identity::Local(_) => { - return Err(edgelet_http::error::server_error("invalid identity type")) + return Err(edgelet_http::error::server_error("invalid identity type")); } }; @@ -144,6 +144,8 @@ async fn get_module_key( #[cfg(test)] mod tests { + use http_body_util::BodyExt as _; + use http_common::server::Route; use edgelet_test_utils::{test_route_err, test_route_ok}; @@ -211,7 +213,7 @@ mod tests { let route = test_route_ok!(TEST_PATH); let response = route.post(Some(body)).await.unwrap(); - let body = hyper::body::to_bytes(response.into_body()).await.unwrap(); + let body = response.into_body().collect().await.unwrap().to_bytes(); let response: super::SignResponse = serde_json::from_slice(&body).unwrap(); base64::Engine::decode(&engine, response.digest).unwrap(); } @@ -246,9 +248,11 @@ mod tests { identities.replace_with(|identities| { identities.remove("testModule"); - assert!(identities - .insert("testModule".to_string(), identity) - .is_none()); + assert!( + identities + .insert("testModule".to_string(), identity) + .is_none() + ); identities.to_owned() }); @@ -278,9 +282,11 @@ mod tests { identity.auth = None; let identity = aziot_identity_common::Identity::Aziot(identity); - assert!(identities - .insert("testModule".to_string(), identity) - .is_none()); + assert!( + identities + .insert("testModule".to_string(), identity) + .is_none() + ); identities.to_owned() }); @@ -313,9 +319,11 @@ mod tests { let identity = aziot_identity_common::Identity::Aziot(identity); - assert!(identities - .insert("testModule".to_string(), identity) - .is_none()); + assert!( + identities + .insert("testModule".to_string(), identity) + .is_none() + ); identities.to_owned() }); diff --git a/edgelet/edgelet-http-workload/src/trust_bundle.rs b/edgelet/edgelet-http-workload/src/trust_bundle.rs index 0e490b09630..b81fd28a7e3 100644 --- a/edgelet/edgelet-http-workload/src/trust_bundle.rs +++ b/edgelet/edgelet-http-workload/src/trust_bundle.rs @@ -101,6 +101,8 @@ where #[cfg(test)] mod tests { + use http_body_util::BodyExt as _; + use http_common::server::Route; use edgelet_test_utils::{test_route_err, test_route_ok}; @@ -153,7 +155,7 @@ mod tests { } let response = route.get().await.unwrap(); - let body = hyper::body::to_bytes(response.into_body()).await.unwrap(); + let body = response.into_body().collect().await.unwrap().to_bytes(); let trust_bundle: super::TrustBundleResponse = serde_json::from_slice(&body).unwrap(); assert_eq!(expected, trust_bundle.certificate); @@ -169,7 +171,7 @@ mod tests { // Optional trust bundle: return empty string if cert doesn't exist. let route = test_route_ok!(super::MANIFEST_TRUST_BUNDLE_PATH); let response = route.get().await.unwrap(); - let body = hyper::body::to_bytes(response.into_body()).await.unwrap(); + let body = response.into_body().collect().await.unwrap().to_bytes(); let trust_bundle: super::TrustBundleResponse = serde_json::from_slice(&body).unwrap(); assert_eq!(String::new(), trust_bundle.certificate); } diff --git a/edgelet/edgelet-http/Cargo.toml b/edgelet/edgelet-http/Cargo.toml index 9124af8c2b8..d4b2a1e185e 100644 --- a/edgelet/edgelet-http/Cargo.toml +++ b/edgelet/edgelet-http/Cargo.toml @@ -2,26 +2,29 @@ name = "edgelet-http" version = "0.1.0" authors = ["Azure IoT Edge Devs"] +edition = "2024" publish = false -edition = "2021" + [dependencies] -anyhow = "1" -chrono = "0.4" -http = "0.2" -libc = "0.2" -log = "0.4" -percent-encoding = "2" -serde = { version = "1", features = ["derive"] } -serde_json = "1" -tokio = { version = "1", features = ["parking_lot", "sync"] } +anyhow = { workspace = true } +chrono = { workspace = true } +http = { workspace = true } +libc = { workspace = true } +log = { workspace = true } +percent-encoding = { workspace = true } +serde = { workspace = true } +serde_json = { workspace = true } +tokio = { workspace = true } + +http-common = { workspace = true } edgelet-core = { path = "../edgelet-core" } edgelet-settings = { path = "../edgelet-settings" } -http-common = { git = "https://github.com/Azure/iot-identity-service", branch = "main" } [dev-dependencies] -tokio = { version = "1", features = ["macros", "rt"] } +tokio = { workspace = true } + edgelet-docker = { path = "../edgelet-docker" } edgelet-test-utils = { path = "../edgelet-test-utils" } diff --git a/edgelet/edgelet-http/src/modules.rs b/edgelet/edgelet-http/src/modules.rs index 7d181dcff4a..208e6803a43 100644 --- a/edgelet/edgelet-http/src/modules.rs +++ b/edgelet/edgelet-http/src/modules.rs @@ -237,9 +237,7 @@ mod tests { #[test] fn into_module_status() { - let timestamp = chrono::NaiveDateTime::from_timestamp_opt(0, 0).unwrap(); - let timestamp = - chrono::DateTime::::from_utc(timestamp, chrono::offset::Utc); + let timestamp = chrono::DateTime::from_timestamp(0, 0).unwrap(); // Running module let status = ModuleRuntimeState::default() @@ -286,9 +284,7 @@ mod tests { Vec<(edgelet_test_utils::runtime::Module, ModuleRuntimeState)>, chrono::DateTime, ) { - let timestamp = chrono::NaiveDateTime::from_timestamp_opt(0, 0).unwrap(); - let timestamp = - chrono::DateTime::::from_utc(timestamp, chrono::offset::Utc); + let timestamp = chrono::DateTime::::from_timestamp(0, 0).unwrap(); let modules = vec![ // Running module diff --git a/edgelet/edgelet-image-cleanup/Cargo.toml b/edgelet/edgelet-image-cleanup/Cargo.toml index 602fc39052e..e2621364d94 100644 --- a/edgelet/edgelet-image-cleanup/Cargo.toml +++ b/edgelet/edgelet-image-cleanup/Cargo.toml @@ -1,19 +1,20 @@ [package] -authors = ["Azure IoT Edge Devs"] -edition = "2021" name = "edgelet-image-cleanup" -publish = false version = "0.1.0" +authors = ["Azure IoT Edge Devs"] +edition = "2024" +publish = false + [dependencies] -anyhow = "1" -chrono = "0.4" -log = "0.4" -thiserror = "1" -tokio = { version = "1", features = ["time"] } +anyhow = { workspace = true } +chrono = { workspace = true } +log = { workspace = true } +thiserror = { workspace = true } +tokio = { workspace = true } + +http-common = { workspace = true } edgelet-docker = { path = "../edgelet-docker" } edgelet-core = { path = "../edgelet-core" } edgelet-settings = { path = "../edgelet-settings" } - -http-common = { git = "https://github.com/Azure/iot-identity-service", branch = "main" } diff --git a/edgelet/edgelet-settings/Cargo.toml b/edgelet/edgelet-settings/Cargo.toml index 6621b1491a6..3035d60cae3 100644 --- a/edgelet/edgelet-settings/Cargo.toml +++ b/edgelet/edgelet-settings/Cargo.toml @@ -2,25 +2,28 @@ name = "edgelet-settings" version = "0.1.0" authors = ["Azure IoT Edge Devs"] +edition = "2024" publish = false -edition = "2021" + [dependencies] -chrono = "0.4" -serde = { version = "1", features = ["derive"] } -humantime-serde = "1.0" -url = { version = "2", features = ["serde"] } - -aziot-certd-config = { git = "https://github.com/Azure/iot-identity-service", branch = "main" } -cert-renewal = { git = "https://github.com/Azure/iot-identity-service", branch = "main" } -config-common = { git = "https://github.com/Azure/iot-identity-service", branch = "main", optional = true } +chrono = { workspace = true } +humantime-serde = { workspace = true } +serde = { workspace = true } +url = { workspace = true } + +aziot-certd-config = { workspace = true } +cert-renewal = { workspace = true } +config-common = { workspace = true, optional = true } +http-common = { workspace = true } + docker = { path = "../docker-rs", optional = true } -http-common = { git = "https://github.com/Azure/iot-identity-service", branch = "main" } + [dev-dependencies] -lazy_static = "1" -serde_json = "1" -test-case = "2" +serde_json = { workspace = true } +test-case = { workspace = true } + [features] settings-docker = ["config-common", "docker"] diff --git a/edgelet/edgelet-settings/src/docker/mod.rs b/edgelet/edgelet-settings/src/docker/mod.rs index a389fb67ccd..54535cd57ad 100644 --- a/edgelet/edgelet-settings/src/docker/mod.rs +++ b/edgelet/edgelet-settings/src/docker/mod.rs @@ -137,14 +137,12 @@ mod tests { use std::time::Duration; use super::Settings; - use crate::docker::network; - use crate::RuntimeSettings; use crate::DEFAULT_NETWORKID; + use crate::RuntimeSettings; + use crate::docker::network; // Prevents multiple tests from modifying environment variables concurrently. - lazy_static::lazy_static! { - static ref ENV_LOCK: std::sync::Mutex<()> = std::sync::Mutex::default(); - } + static ENV_LOCK: std::sync::Mutex<()> = std::sync::Mutex::new(()); static CONFIG_DIR: &str = "test-files/config.d"; @@ -161,7 +159,9 @@ mod tests { #[test] fn err_no_file() { let _env_lock = ENV_LOCK.lock().expect("env lock poisoned"); - std::env::set_var("AZIOT_EDGED_CONFIG", "garbage"); + unsafe { + std::env::set_var("AZIOT_EDGED_CONFIG", "garbage"); + } let settings = Settings::new(); assert!(settings.is_err()); } @@ -170,8 +170,10 @@ mod tests { fn err_bad_file() { let _env_lock = ENV_LOCK.lock().expect("env lock poisoned"); - std::env::set_var("AZIOT_EDGED_CONFIG", BAD_SETTINGS); - std::env::set_var("AZIOT_EDGED_CONFIG_DIR", CONFIG_DIR); + unsafe { + std::env::set_var("AZIOT_EDGED_CONFIG", BAD_SETTINGS); + std::env::set_var("AZIOT_EDGED_CONFIG_DIR", CONFIG_DIR); + } let settings = Settings::new(); assert!(settings.is_err()); @@ -181,8 +183,10 @@ mod tests { fn case_sensitive() { let _env_lock = ENV_LOCK.lock().expect("env lock poisoned"); - std::env::set_var("AZIOT_EDGED_CONFIG", GOOD_SETTINGS_CASE_SENSITIVE); - std::env::set_var("AZIOT_EDGED_CONFIG_DIR", CONFIG_DIR); + unsafe { + std::env::set_var("AZIOT_EDGED_CONFIG", GOOD_SETTINGS_CASE_SENSITIVE); + std::env::set_var("AZIOT_EDGED_CONFIG_DIR", CONFIG_DIR); + } let settings = Settings::new().unwrap(); @@ -198,8 +202,10 @@ mod tests { fn watchdog() { let _env_lock = ENV_LOCK.lock().expect("env lock poisoned"); - std::env::set_var("AZIOT_EDGED_CONFIG", GOOD_SETTINGS); - std::env::set_var("AZIOT_EDGED_CONFIG_DIR", CONFIG_DIR); + unsafe { + std::env::set_var("AZIOT_EDGED_CONFIG", GOOD_SETTINGS); + std::env::set_var("AZIOT_EDGED_CONFIG_DIR", CONFIG_DIR); + } let settings = Settings::new().unwrap(); let watchdog_settings = settings.watchdog(); @@ -210,8 +216,10 @@ mod tests { fn network_settings() { let _env_lock = ENV_LOCK.lock().expect("env lock poisoned"); - std::env::set_var("AZIOT_EDGED_CONFIG", GOOD_SETTINGS_NETWORK); - std::env::set_var("AZIOT_EDGED_CONFIG_DIR", CONFIG_DIR); + unsafe { + std::env::set_var("AZIOT_EDGED_CONFIG", GOOD_SETTINGS_NETWORK); + std::env::set_var("AZIOT_EDGED_CONFIG_DIR", CONFIG_DIR); + } let settings = Settings::new().unwrap(); let moby_runtime = settings.moby_runtime(); @@ -249,25 +257,31 @@ mod tests { fn networking_create_options() { let _env_lock = ENV_LOCK.lock().expect("env lock poisoned"); - std::env::set_var("AZIOT_EDGED_CONFIG", GOOD_SETTINGS); - std::env::set_var("AZIOT_EDGED_CONFIG_DIR", CONFIG_DIR); + unsafe { + std::env::set_var("AZIOT_EDGED_CONFIG", GOOD_SETTINGS); + std::env::set_var("AZIOT_EDGED_CONFIG_DIR", CONFIG_DIR); + } let settings = Settings::new().unwrap(); let create_options = settings.agent().config().create_options(); - assert!(create_options - .networking_config() - .unwrap() - .endpoints_config() - .unwrap() - .contains_key(DEFAULT_NETWORKID)); + assert!( + create_options + .networking_config() + .unwrap() + .endpoints_config() + .unwrap() + .contains_key(DEFAULT_NETWORKID) + ); } #[test] fn agent_labels() { let _env_lock = ENV_LOCK.lock().expect("env lock poisoned"); - std::env::set_var("AZIOT_EDGED_CONFIG", GOOD_SETTINGS); - std::env::set_var("AZIOT_EDGED_CONFIG_DIR", CONFIG_DIR); + unsafe { + std::env::set_var("AZIOT_EDGED_CONFIG", GOOD_SETTINGS); + std::env::set_var("AZIOT_EDGED_CONFIG_DIR", CONFIG_DIR); + } let settings = Settings::new().unwrap(); let create_options = settings.agent().config().create_options(); @@ -286,8 +300,10 @@ mod tests { fn image_garbage_collection() { let _env_lock = ENV_LOCK.lock().expect("env lock poisoned"); - std::env::set_var("AZIOT_EDGED_CONFIG", GOOD_SETTINGS_IMAGE_GC); - std::env::set_var("AZIOT_EDGED_CONFIG_DIR", CONFIG_DIR); + unsafe { + std::env::set_var("AZIOT_EDGED_CONFIG", GOOD_SETTINGS_IMAGE_GC); + std::env::set_var("AZIOT_EDGED_CONFIG_DIR", CONFIG_DIR); + } let settings = Settings::new().unwrap(); let image_prune_settings = settings.image_garbage_collection(); @@ -307,8 +323,10 @@ mod tests { fn image_garbage_collection_defaults() { let _env_lock = ENV_LOCK.lock().expect("env lock poisoned"); - std::env::set_var("AZIOT_EDGED_CONFIG", GOOD_SETTINGS); - std::env::set_var("AZIOT_EDGED_CONFIG_DIR", CONFIG_DIR); + unsafe { + std::env::set_var("AZIOT_EDGED_CONFIG", GOOD_SETTINGS); + std::env::set_var("AZIOT_EDGED_CONFIG_DIR", CONFIG_DIR); + } let image_gc_settings = Settings::new().unwrap().image_garbage_collection().clone(); assert!(image_gc_settings.is_enabled()); @@ -327,8 +345,10 @@ mod tests { fn content_trust_env() { let _env_lock = ENV_LOCK.lock().expect("env lock poisoned"); - std::env::set_var("AZIOT_EDGED_CONFIG", GOOD_SETTINGS_CONTENT_TRUST); - std::env::set_var("AZIOT_EDGED_CONFIG_DIR", CONFIG_DIR); + unsafe { + std::env::set_var("AZIOT_EDGED_CONFIG", GOOD_SETTINGS_CONTENT_TRUST); + std::env::set_var("AZIOT_EDGED_CONFIG_DIR", CONFIG_DIR); + } let settings = Settings::new().unwrap(); if let Some(content_trust_map) = settings @@ -357,8 +377,10 @@ mod tests { fn content_trust_env_err() { let _env_lock = ENV_LOCK.lock().expect("env lock poisoned"); - std::env::set_var("AZIOT_EDGED_CONFIG", BAD_SETTINGS_CONTENT_TRUST); - std::env::set_var("AZIOT_EDGED_CONFIG_DIR", CONFIG_DIR); + unsafe { + std::env::set_var("AZIOT_EDGED_CONFIG", BAD_SETTINGS_CONTENT_TRUST); + std::env::set_var("AZIOT_EDGED_CONFIG_DIR", CONFIG_DIR); + } let settings = Settings::new(); assert!(settings.is_err()); diff --git a/edgelet/edgelet-settings/src/lib.rs b/edgelet/edgelet-settings/src/lib.rs index 321edc414ee..71137679523 100644 --- a/edgelet/edgelet-settings/src/lib.rs +++ b/edgelet/edgelet-settings/src/lib.rs @@ -12,17 +12,17 @@ pub mod base; pub use base::module::Settings as ModuleSpec; -pub use base::{aziot, module, uri, watchdog}; pub use base::{IotedgeMaxRequests, RuntimeSettings}; +pub use base::{aziot, module, uri, watchdog}; #[cfg(feature = "settings-docker")] pub mod docker; #[cfg(feature = "settings-docker")] pub use crate::docker::{ + CONFIG_FILE_DEFAULT, Settings, config::{DockerConfig, UPSTREAM_PARENT_KEYWORD}, network::{Ipam, MobyNetwork}, runtime::{ContentTrust, MobyRuntime}, - Settings, CONFIG_FILE_DEFAULT, }; /// ID of the device CA cert in certd and private key in keyd. diff --git a/edgelet/edgelet-test-utils/Cargo.toml b/edgelet/edgelet-test-utils/Cargo.toml index 045004eff95..8013d53713b 100644 --- a/edgelet/edgelet-test-utils/Cargo.toml +++ b/edgelet/edgelet-test-utils/Cargo.toml @@ -2,21 +2,23 @@ name = "edgelet-test-utils" version = "0.1.0" authors = ["Azure IoT Edge Devs"] +edition = "2024" publish = false -edition = "2021" + [dependencies] -anyhow = "1" -async-trait = "0.1" -http = "0.2" -hyper = "0.14" -nix = "0.26" -serde = "1" -tokio = "1" +anyhow = { workspace = true } +async-trait = { workspace = true } +http = { workspace = true } +hyper = { workspace = true } +hyper-util = { workspace = true } +nix = { workspace = true } +serde = { workspace = true } +tokio = { workspace = true } +tower-service = { workspace = true } + +aziot-certd-config = { workspace = true } +cert-renewal = { workspace = true } edgelet-core = { path = "../edgelet-core" } edgelet-settings = { path = "../edgelet-settings" } - -aziot-certd-config = { git = "https://github.com/Azure/iot-identity-service", branch = "main" } - -cert-renewal = { git = "https://github.com/Azure/iot-identity-service", branch = "main" } diff --git a/edgelet/edgelet-test-utils/src/json_connector.rs b/edgelet/edgelet-test-utils/src/json_connector.rs index 69e3229f928..7237aa3ec15 100644 --- a/edgelet/edgelet-test-utils/src/json_connector.rs +++ b/edgelet/edgelet-test-utils/src/json_connector.rs @@ -4,6 +4,12 @@ use std::io::{self, Read, Write}; use std::pin::Pin; use std::task::{Context, Poll, Waker}; +use hyper_util::{ + client::legacy::connect::{Connected, Connection}, + rt::TokioIo, +}; +use tower_service::Service; + pub struct StaticStream { wrote: bool, bytes: io::Cursor>, @@ -77,9 +83,9 @@ impl tokio::io::AsyncWrite for StaticStream { } } -impl hyper::client::connect::Connection for StaticStream { - fn connected(&self) -> hyper::client::connect::Connected { - hyper::client::connect::Connected::new() +impl Connection for StaticStream { + fn connected(&self) -> Connected { + Connected::new() } } @@ -122,8 +128,8 @@ impl JsonConnector { } } -impl hyper::service::Service for JsonConnector { - type Response = StaticStream; +impl Service for JsonConnector { + type Response = TokioIo; type Error = std::convert::Infallible; type Future = std::future::Ready>; @@ -132,6 +138,6 @@ impl hyper::service::Service for JsonConnector { } fn call(&mut self, _req: hyper::Uri) -> Self::Future { - std::future::ready(Ok(StaticStream::new(self.body.clone()))) + std::future::ready(Ok(TokioIo::new(StaticStream::new(self.body.clone())))) } } diff --git a/edgelet/edgelet-test-utils/src/runtime.rs b/edgelet/edgelet-test-utils/src/runtime.rs index 60ff0a8924f..070a3ca50e6 100644 --- a/edgelet/edgelet-test-utils/src/runtime.rs +++ b/edgelet/edgelet-test-utils/src/runtime.rs @@ -1,5 +1,7 @@ // Copyright (c) Microsoft. All rights reserved. +use hyper::body::Incoming; + #[derive(Clone, Default, serde::Deserialize, serde::Serialize)] pub struct Config {} @@ -163,7 +165,7 @@ impl edgelet_core::ModuleRuntime for Runtime { &self, _id: &str, _options: &edgelet_core::LogOptions, - ) -> anyhow::Result { + ) -> anyhow::Result { unimplemented!() } diff --git a/edgelet/edgelet-utils/Cargo.toml b/edgelet/edgelet-utils/Cargo.toml index bec0f572f9d..7896219a3b7 100644 --- a/edgelet/edgelet-utils/Cargo.toml +++ b/edgelet/edgelet-utils/Cargo.toml @@ -2,14 +2,15 @@ name = "edgelet-utils" version = "0.1.0" authors = ["Azure IoT Edge Devs"] +edition = "2024" publish = false -edition = "2021" + [dependencies] -config = { version = "0.13", default-features = false } -serde = "1" -thiserror = "1" -yaml-rust = "0.4" +config = { workspace = true } +thiserror = { workspace = true } +yaml-rust = { workspace = true } + -[dev_dependencies] -serde_derive = "1.0" +[dev-dependencies] +serde = { workspace = true } diff --git a/edgelet/edgelet-utils/src/lib.rs b/edgelet/edgelet-utils/src/lib.rs index 931f3718ed0..697437ff796 100644 --- a/edgelet/edgelet-utils/src/lib.rs +++ b/edgelet/edgelet-utils/src/lib.rs @@ -1,17 +1,5 @@ // Copyright (c) Microsoft. All rights reserved. -#![deny(rust_2018_idioms, warnings)] -#![deny(clippy::all, clippy::pedantic)] -#![allow( - clippy::default_trait_access, - clippy::doc_markdown, // clippy wants the "IoT" of "IoT Hub" in a code fence - clippy::missing_errors_doc, - clippy::module_name_repetitions, - clippy::must_use_candidate, - clippy::too_many_lines, - clippy::use_self -)] - mod error; mod yaml_file_source; diff --git a/edgelet/iotedge/Cargo.toml b/edgelet/iotedge/Cargo.toml index e70c507221e..d9444f269fc 100644 --- a/edgelet/iotedge/Cargo.toml +++ b/edgelet/iotedge/Cargo.toml @@ -1,60 +1,62 @@ [package] -authors = ["Azure IoT Edge Devs"] -edition = "2021" name = "iotedge" version = "0.1.0" +authors = ["Azure IoT Edge Devs"] +edition = "2024" +publish = false description = "The iotedge tool is used to manage the IoT Edge runtime." homepage = "https://aka.ms/iotedge" license = "MIT" + [dependencies] -anyhow = "1" -async-trait = "0.1" -atty = "0.2" -base64 = "0.21" -byte-unit = "4" -bytes = "1" -chrono = { version = "0.4.7", features = ["serde"] } -chrono-humanize = "0.2" -clap = { version = "4", features = ["cargo", "env", "string"] } -config = { version = "0.13", default-features = false } -erased-serde = "0.3.12" -hex = "0.4" -hyper = "0.14" -lazy_static = "1" -libc = "0.2" -log = { version = "0.4", features = ["std"] } -nix = "0.26" -regex = "1" -semver = "1.0" -serde = { version = "1", features = ["derive"] } -serde_json = "1" -sysinfo = "0.28" -tabwriter = "1" -termcolor = "1" -thiserror = "1" -tokio = { version = "1", features = ["macros", "parking_lot", "process", "rt", "sync"] } -toml = "0.7" -url = "2" +anyhow = { workspace = true } +async-trait = { workspace = true } +atty = { workspace = true } +base64 = { workspace = true } +byte-unit = { workspace = true } +bytes = { workspace = true } +chrono = { workspace = true } +chrono-humanize = { workspace = true } +clap = { workspace = true } +config = { workspace = true } +erased-serde = { workspace = true } +hex = { workspace = true } +http-body-util = { workspace = true } +hyper = { workspace = true } +hyper-util = { workspace = true } +log = { workspace = true } +nix = { workspace = true } +regex = { workspace = true } +semver = { workspace = true } +serde = { workspace = true } +serde_json = { workspace = true } +sysinfo = { workspace = true } +tabwriter = { workspace = true } +termcolor = { workspace = true } +thiserror = { workspace = true } +tokio = { workspace = true } +toml = { workspace = true } +url = { workspace = true } + +aziot-certd-config = { workspace = true } +aziot-identity-client-async = { workspace = true } +aziot-identity-common = { workspace = true } +aziot-identity-common-http = { workspace = true } +aziot-identityd-config = { workspace = true } +aziot-keyd-config = { workspace = true } +aziot-keys-common = { workspace = true } +aziotctl-common = { workspace = true } +cert-renewal = { workspace = true } +http-common = { workspace = true } -aziot-certd-config = { git = "https://github.com/Azure/iot-identity-service", branch = "main" } -aziot-identity-client-async = { git = "https://github.com/Azure/iot-identity-service", branch = "main" } -aziot-identity-common = { git = "https://github.com/Azure/iot-identity-service", branch = "main" } -aziot-identity-common-http = { git = "https://github.com/Azure/iot-identity-service", branch = "main" } -aziot-identityd-config = { git = "https://github.com/Azure/iot-identity-service", branch = "main" } -aziot-keyd-config = { git = "https://github.com/Azure/iot-identity-service", branch = "main" } -aziot-keys-common = { git = "https://github.com/Azure/iot-identity-service", branch = "main" } -aziot-tpmd-config = { git = "https://github.com/Azure/iot-identity-service", branch = "main" } -aziotctl-common = { git = "https://github.com/Azure/iot-identity-service", branch = "main" } -cert-renewal = { git = "https://github.com/Azure/iot-identity-service", branch = "main" } -config-common = { git = "https://github.com/Azure/iot-identity-service", branch = "main" } docker = { path = "../docker-rs" } edgelet-core = { path = "../edgelet-core" } edgelet-http = { path = "../edgelet-http" } edgelet-settings = { path = "../edgelet-settings", features = ["settings-docker"] } edgelet-utils = { path = "../edgelet-utils" } -http-common = { git = "https://github.com/Azure/iot-identity-service", branch = "main" } support-bundle = { path = "../support-bundle" } + [features] snapctl = ["aziotctl-common/snapctl", "support-bundle/snapctl"] diff --git a/edgelet/iotedge/src/check/additional_info.rs b/edgelet/iotedge/src/check/additional_info.rs index f69df1a7c7b..6e260a39323 100644 --- a/edgelet/iotedge/src/check/additional_info.rs +++ b/edgelet/iotedge/src/check/additional_info.rs @@ -1,10 +1,8 @@ use std::env::consts::ARCH; use std::str; -#[cfg(unix)] -use byte_unit::{Byte, ByteUnit}; -#[cfg(unix)] -use sysinfo::{DiskExt, SystemExt}; +use byte_unit::{Byte, Unit, UnitType}; +use sysinfo::{Disk, Disks}; /// Additional info for the JSON output of `iotedge check` #[derive(Clone, Debug, serde::Serialize)] @@ -51,7 +49,6 @@ pub(super) struct OsInfo { } impl OsInfo { - #[cfg(unix)] pub(super) fn new() -> Self { use std::fs::File; use std::io::{BufRead, BufReader}; @@ -91,7 +88,6 @@ impl OsInfo { } } -#[cfg(unix)] fn parse_os_release_line(line: &str) -> Option<(&str, &str)> { let line = line.trim(); @@ -127,22 +123,20 @@ struct SystemInfo { impl SystemInfo { fn new() -> Self { - #[cfg(unix)] - { - let mut system = sysinfo::System::new(); - system.refresh_all(); - SystemInfo { - total_ram: pretty_kbyte(system.total_memory()), - used_ram: pretty_kbyte(system.used_memory()), - total_swap: pretty_kbyte(system.total_swap()), - used_swap: pretty_kbyte(system.used_swap()), - - disks: system.disks().iter().map(DiskInfo::new).collect(), - } + let mut system = sysinfo::System::new(); + system.refresh_all(); + SystemInfo { + total_ram: pretty_kbyte(system.total_memory()), + used_ram: pretty_kbyte(system.used_memory()), + total_swap: pretty_kbyte(system.total_swap()), + used_swap: pretty_kbyte(system.used_swap()), + + disks: Disks::new_with_refreshed_list() + .list() + .iter() + .map(DiskInfo::new) + .collect(), } - - #[cfg(not(unix))] - return SystemInfo::default(); } } @@ -156,15 +150,11 @@ struct DiskInfo { file_type: String, } -#[cfg(unix)] impl DiskInfo { - fn new(disk: &T) -> Self - where - T: DiskExt, - { + fn new(disk: &Disk) -> Self { let available_space = disk.available_space(); let total_space = disk.total_space(); - #[allow(clippy::cast_precision_loss)] + #[expect(clippy::cast_precision_loss)] let percent_free = format!( "{:.1}%", available_space as f64 / total_space as f64 * 100.0 @@ -173,23 +163,23 @@ impl DiskInfo { DiskInfo { name: disk.name().to_string_lossy().into_owned(), percent_free, - available_space: Byte::from_bytes(u128::from(available_space)) - .get_appropriate_unit(true) - .format(2), - total_space: Byte::from_bytes(u128::from(total_space)) - .get_appropriate_unit(true) - .format(2), - file_system: String::from_utf8_lossy(disk.file_system()).into_owned(), - file_type: format!("{:?}", disk.type_()), + available_space: format!( + "{:.2}", + Byte::from_u64(available_space).get_appropriate_unit(UnitType::Binary) + ), + total_space: format!( + "{:.2}", + Byte::from_u64(total_space).get_appropriate_unit(UnitType::Binary) + ), + file_system: disk.file_system().to_string_lossy().into_owned(), + file_type: format!("{:?}", disk.kind()), } } } -#[cfg(unix)] fn pretty_kbyte(bytes: u64) -> String { - #[allow(clippy::cast_precision_loss)] - match Byte::from_unit(bytes as f64, ByteUnit::B) { - Ok(b) => b.get_appropriate_unit(true).format(2), - Err(err) => format!("could not parse bytes value: {err:?}"), + match Byte::from_u64_with_unit(bytes, Unit::KiB) { + Some(b) => format!("{:.2}", b.get_appropriate_unit(UnitType::Binary)), + None => format!("could not parse bytes value: {bytes} KiB too large for u64"), } } diff --git a/edgelet/iotedge/src/check/checks/aziot_edged_version.rs b/edgelet/iotedge/src/check/checks/aziot_edged_version.rs index 4eb2428fd10..67988e77ab9 100644 --- a/edgelet/iotedge/src/check/checks/aziot_edged_version.rs +++ b/edgelet/iotedge/src/check/checks/aziot_edged_version.rs @@ -1,6 +1,9 @@ use std::time::Duration; -use anyhow::{anyhow, Context}; +use anyhow::{Context, anyhow}; +use bytes::Bytes; +use http_body_util::{BodyExt as _, Empty}; +use hyper_util::{client::legacy::Client, rt::TokioExecutor}; use regex::Regex; use semver::Version; @@ -49,7 +52,8 @@ impl AziotEdgedVersion { let connector = http_common::MaybeProxyConnector::new(proxy, None, &[]) .context("could not initialize HTTP connector")?; - let client: hyper::Client<_, hyper::Body> = hyper::Client::builder().build(connector); + let client: Client<_, Empty> = + Client::builder(TokioExecutor::new()).build(connector); let mut uri: hyper::Uri = Self::URI .parse() @@ -99,9 +103,12 @@ impl AziotEdgedVersion { } hyper::StatusCode::OK => { - let body = hyper::body::aggregate(res.into_body()) + let body = res + .into_body() + .collect() .await - .context("could not read HTTP response")?; + .context("could not read HTTP response")? + .aggregate(); let body = serde_json::from_reader(hyper::body::Buf::reader(body)) .context("could not read HTTP response")?; break body; @@ -111,7 +118,7 @@ impl AziotEdgedVersion { return Err(Error::FetchLatestVersions( FetchLatestVersionsReason::ResponseStatusCode(status_code), ) - .into()) + .into()); } } }; @@ -214,13 +221,12 @@ impl AziotEdgedVersion { check.additional_info.aziot_edged_version = Some(actual_version.clone()); if actual_version != expected_version { - return Ok(CheckResult::Warning( - anyhow!( + return Ok(CheckResult::Warning(anyhow!( "Installed IoT Edge daemon has version {} but {} is the latest stable version available.\n\ Please see https://aka.ms/iotedge-update-runtime for update instructions.", - actual_version, expected_version, - ), - )); + actual_version, + expected_version, + ))); } Ok(CheckResult::Ok) diff --git a/edgelet/iotedge/src/check/checks/connect_management_uri.rs b/edgelet/iotedge/src/check/checks/connect_management_uri.rs index 95eaec4abe2..508b00ddfb1 100644 --- a/edgelet/iotedge/src/check/checks/connect_management_uri.rs +++ b/edgelet/iotedge/src/check/checks/connect_management_uri.rs @@ -1,7 +1,7 @@ use std::borrow::Cow; use std::ffi::{OsStr, OsString}; -use anyhow::{anyhow, Context}; +use anyhow::{Context, anyhow}; use edgelet_core::{self, UrlExt}; use edgelet_settings::RuntimeSettings; @@ -68,32 +68,41 @@ impl ConnectManagementUri { args.push(Cow::Owned(format!("{name}={value}").into())); } - match (connect_management_uri.scheme(), listen_management_uri.scheme()) { - ("http", "http") => (), - - ("unix", "unix" | "fd") => { - args.push(Cow::Borrowed(OsStr::new("-v"))); - - let socket_path = - connect_management_uri.to_uds_file_path() - .context("Could not parse connect.management_uri: does not represent a valid file path")?; - - let socket_path = - socket_path.to_str() - .ok_or_else(|| anyhow!("Could not parse connect.management_uri: file path is not valid utf-8"))?; - - args.push(Cow::Owned(format!("{socket_path}:{socket_path}").into())); - }, - - (scheme1, scheme2) if scheme1 != scheme2 => return Err(anyhow!( - "configuration has invalid combination of schemes for connect.management_uri ({:?}) and listen.management_uri ({:?})", - scheme1, scheme2, - )), - - (scheme, _) => return Err(anyhow!( - "Could not parse connect.management_uri: scheme {} is invalid", scheme, - )), - } + match ( + connect_management_uri.scheme(), + listen_management_uri.scheme(), + ) { + ("http", "http") => (), + + ("unix", "unix" | "fd") => { + args.push(Cow::Borrowed(OsStr::new("-v"))); + + let socket_path = connect_management_uri.to_uds_file_path().context( + "Could not parse connect.management_uri: does not represent a valid file path", + )?; + + let socket_path = socket_path.to_str().ok_or_else(|| { + anyhow!("Could not parse connect.management_uri: file path is not valid utf-8") + })?; + + args.push(Cow::Owned(format!("{socket_path}:{socket_path}").into())); + } + + (scheme1, scheme2) if scheme1 != scheme2 => { + return Err(anyhow!( + "configuration has invalid combination of schemes for connect.management_uri ({:?}) and listen.management_uri ({:?})", + scheme1, + scheme2, + )); + } + + (scheme, _) => { + return Err(anyhow!( + "Could not parse connect.management_uri: scheme {} is invalid", + scheme, + )); + } + } args.extend(vec![ Cow::Borrowed(OsStr::new(&diagnostics_image_name)), diff --git a/edgelet/iotedge/src/check/checks/container_connect_upstream.rs b/edgelet/iotedge/src/check/checks/container_connect_upstream.rs index 2decb8df63f..8dbfae4df83 100644 --- a/edgelet/iotedge/src/check/checks/container_connect_upstream.rs +++ b/edgelet/iotedge/src/check/checks/container_connect_upstream.rs @@ -3,26 +3,23 @@ use edgelet_settings::RuntimeSettings; use serde::Deserialize; use crate::check::{ - upstream_protocol_port::UpstreamProtocolPort, Check, CheckResult, Checker, CheckerMeta, + Check, CheckResult, Checker, CheckerMeta, upstream_protocol_port::UpstreamProtocolPort, }; pub(crate) fn get_host_container_upstream_tests() -> Vec> { vec![ - #[cfg(unix)] make_check( "container-default-connect-upstream-amqp", "container on the default network can connect to upstream AMQP port", UpstreamProtocolPort::Amqp, false, ), - #[cfg(unix)] make_check( "container-default-connect-upstream-https", "container on the default network can connect to upstream HTTPS / WebSockets port", UpstreamProtocolPort::Https, false, ), - #[cfg(unix)] make_check( "container-default-connect-upstream-mqtt", "container on the default network can connect to upstream MQTT port", diff --git a/edgelet/iotedge/src/check/checks/container_engine_dns.rs b/edgelet/iotedge/src/check/checks/container_engine_dns.rs index 83afaabef36..38f2e049863 100644 --- a/edgelet/iotedge/src/check/checks/container_engine_dns.rs +++ b/edgelet/iotedge/src/check/checks/container_engine_dns.rs @@ -27,8 +27,7 @@ impl Checker for ContainerEngineDns { impl ContainerEngineDns { fn inner_execute(&mut self, check: &mut Check) -> anyhow::Result { - const MESSAGE: &str = - "Container engine is not configured with DNS server setting, which may impact connectivity to IoT Hub.\n\ + const MESSAGE: &str = "Container engine is not configured with DNS server setting, which may impact connectivity to IoT Hub.\n\ Please see https://aka.ms/iotedge-prod-checklist-dns for best practices.\n\ You can ignore this warning if you are setting DNS server per module in the Edge deployment."; diff --git a/edgelet/iotedge/src/check/checks/container_engine_ipv6.rs b/edgelet/iotedge/src/check/checks/container_engine_ipv6.rs index fd10c9fa052..6fff216394d 100644 --- a/edgelet/iotedge/src/check/checks/container_engine_ipv6.rs +++ b/edgelet/iotedge/src/check/checks/container_engine_ipv6.rs @@ -29,8 +29,7 @@ impl Checker for ContainerEngineIPv6 { impl ContainerEngineIPv6 { fn inner_execute(&mut self, check: &mut Check) -> anyhow::Result { - const MESSAGE: &str = - "Container engine is not configured for IPv6 communication.\n\ + const MESSAGE: &str = "Container engine is not configured for IPv6 communication.\n\ Please see https://aka.ms/iotedge-docker-ipv6 for a guide on how to enable IPv6 support."; let is_edge_ipv6_configured = check.settings.as_ref().map_or(false, |settings| { @@ -58,7 +57,7 @@ impl ContainerEngineIPv6 { Err(err.context(MESSAGE)) } else { Ok(CheckResult::Ignored) - } + }; } }; let daemon_config: DaemonConfig = serde_json::from_reader(daemon_config_file) diff --git a/edgelet/iotedge/src/check/checks/container_engine_logrotate.rs b/edgelet/iotedge/src/check/checks/container_engine_logrotate.rs index d4fdf4e037f..3deb7704a45 100644 --- a/edgelet/iotedge/src/check/checks/container_engine_logrotate.rs +++ b/edgelet/iotedge/src/check/checks/container_engine_logrotate.rs @@ -1,6 +1,6 @@ use std::fs::File; -use anyhow::{anyhow, Context}; +use anyhow::{Context, anyhow}; use crate::check::{Check, CheckResult, Checker, CheckerMeta}; @@ -26,8 +26,7 @@ impl Checker for ContainerEngineLogrotate { impl ContainerEngineLogrotate { fn inner_execute(&mut self, check: &mut Check) -> anyhow::Result { - const MESSAGE: &str = - "Container engine is not configured to rotate module logs which may cause it run out of disk space.\n\ + const MESSAGE: &str = "Container engine is not configured to rotate module logs which may cause it run out of disk space.\n\ Please see https://aka.ms/iotedge-prod-checklist-logs for best practices.\n\ You can ignore this warning if you are setting log policy per module in the Edge deployment."; diff --git a/edgelet/iotedge/src/check/checks/parent_hostname.rs b/edgelet/iotedge/src/check/checks/parent_hostname.rs index c1de166bbca..5c043e8efee 100644 --- a/edgelet/iotedge/src/check/checks/parent_hostname.rs +++ b/edgelet/iotedge/src/check/checks/parent_hostname.rs @@ -43,7 +43,7 @@ impl ParentHostname { // For example, the IoT Hub C# SDK cannot connect to a hostname that contains an `_`. if !aziotctl_common::is_rfc_1035_valid(config_parent_hostname) { return Ok(CheckResult::Warning(anyhow!( - "configuration has parent_hostname {} which does not comply with RFC 1035.\n\ + "configuration has parent_hostname {} which does not comply with RFC 1035.\n\ \n\ - Hostname must be between 1 and 255 octets inclusive.\n\ - Each label in the hostname (component separated by \".\") must be between 1 and 63 octets inclusive.\n\ @@ -51,8 +51,8 @@ impl ParentHostname { and must contain only ASCII alphanumeric characters or hyphens (a-z, A-Z, 0-9, \"-\").\n\ \n\ Not complying with RFC 1035 may cause errors during the TLS handshake with modules and downstream devices.", - config_parent_hostname, - ))); + config_parent_hostname, + ))); } if !aziotctl_common::check_length_for_local_issuer(config_parent_hostname) { diff --git a/edgelet/iotedge/src/check/checks/proxy_settings.rs b/edgelet/iotedge/src/check/checks/proxy_settings.rs index 484fe1e5273..bd24fe7a665 100644 --- a/edgelet/iotedge/src/check/checks/proxy_settings.rs +++ b/edgelet/iotedge/src/check/checks/proxy_settings.rs @@ -8,8 +8,7 @@ impl Checker for ProxySettings { fn meta(&self) -> CheckerMeta { CheckerMeta { id: "proxy-settings", - description: - "proxy settings are consistent in aziot-edged, aziot-identityd, moby daemon and config.toml", + description: "proxy settings are consistent in aziot-edged, aziot-identityd, moby daemon and config.toml", } } @@ -48,13 +47,12 @@ impl ProxySettings { CheckResult::Ok } else { CheckResult::Warning(anyhow::anyhow!( - "The proxy setting for IoT Edge Agent {:?}, IoT Edge Daemon {:?}, IoT Identity Daemon {:?}, and Moby {:?} may need to be identical.", - edge_agent_proxy_uri, - edge_daemon_proxy_uri, - identity_daemon_proxy_uri, - moby_proxy_uri - ) - ) + "The proxy setting for IoT Edge Agent {:?}, IoT Edge Daemon {:?}, IoT Identity Daemon {:?}, and Moby {:?} may need to be identical.", + edge_agent_proxy_uri, + edge_daemon_proxy_uri, + identity_daemon_proxy_uri, + moby_proxy_uri + )) } } } diff --git a/edgelet/iotedge/src/check/checks/storage_mounted_from_host.rs b/edgelet/iotedge/src/check/checks/storage_mounted_from_host.rs index f05c313f007..ed76dc32af5 100644 --- a/edgelet/iotedge/src/check/checks/storage_mounted_from_host.rs +++ b/edgelet/iotedge/src/check/checks/storage_mounted_from_host.rs @@ -1,6 +1,9 @@ //! Note: Keep in sync with Microsoft.Azure.Devices.Edge.Agent.Service.Program.GetStoragePath and Microsoft.Azure.Devices.Edge.Hub.Service.DependencyManager.GetStoragePath -use std::path::{Path, PathBuf}; +use std::{ + path::{Path, PathBuf}, + sync::LazyLock, +}; use anyhow::Context; use regex::Regex; @@ -70,11 +73,10 @@ async fn storage_mounted_from_host<'a>( storage_directory_out: &'a mut Option, container_directories_out: &'a mut Option>, ) -> anyhow::Result { - lazy_static::lazy_static! { - static ref STORAGE_FOLDER_ENV_VAR_KEY_REGEX: Regex = - Regex::new("(?i)^storagefolder=(.*)") - .expect("This hard-coded regex is expected to be valid."); - } + static STORAGE_FOLDER_ENV_VAR_KEY_REGEX: LazyLock = LazyLock::new(|| { + Regex::new("(?i)^storagefolder=(.*)") + .expect("This hard-coded regex is expected to be valid.") + }); let Some(docker_host_arg) = &check.docker_host_arg else { return Ok(CheckResult::Skipped); diff --git a/edgelet/iotedge/src/check/checks/up_to_date_config.rs b/edgelet/iotedge/src/check/checks/up_to_date_config.rs index 3e69b627f3f..9b6191bafe2 100644 --- a/edgelet/iotedge/src/check/checks/up_to_date_config.rs +++ b/edgelet/iotedge/src/check/checks/up_to_date_config.rs @@ -1,4 +1,4 @@ -use aziotctl_common::check_last_modified::{check_last_modified, LastModifiedError}; +use aziotctl_common::check_last_modified::{LastModifiedError, check_last_modified}; use crate::check::{Check, CheckResult, Checker, CheckerMeta}; diff --git a/edgelet/iotedge/src/check/checks/well_formed_config.rs b/edgelet/iotedge/src/check/checks/well_formed_config.rs index eb5b3baccbf..0ff6c68d79e 100644 --- a/edgelet/iotedge/src/check/checks/well_formed_config.rs +++ b/edgelet/iotedge/src/check/checks/well_formed_config.rs @@ -1,6 +1,6 @@ use std::fs::File; -use edgelet_settings::{Settings, CONFIG_FILE_DEFAULT, UPSTREAM_PARENT_KEYWORD}; +use edgelet_settings::{CONFIG_FILE_DEFAULT, Settings, UPSTREAM_PARENT_KEYWORD}; use crate::check::{Check, CheckResult, Checker, CheckerMeta}; use crate::error::Error; diff --git a/edgelet/iotedge/src/check/mod.rs b/edgelet/iotedge/src/check/mod.rs index 4e814e4c932..7732ffb9512 100644 --- a/edgelet/iotedge/src/check/mod.rs +++ b/edgelet/iotedge/src/check/mod.rs @@ -532,9 +532,14 @@ impl Check { id: "(aziot-identity-service-error)".into(), description: format!( "aziot-identity-service checks unavailable - could not communicate with '{}' binary.", - &self.aziot_bin.to_str().expect("aziot_bin should be valid UTF-8") + &self + .aziot_bin + .to_str() + .expect("aziot_bin should be valid UTF-8") + ), + result: CheckResult::Failed( + anyhow::Error::from(err).context(Error::Aziot), ), - result: CheckResult::Failed(anyhow::Error::from(err).context(Error::Aziot)), additional_info: serde_json::Value::Null, }, self.verbose, @@ -707,11 +712,9 @@ fn get_local_service_proxy_setting(svc_name: &str) -> Option { mod tests { use edgelet_settings::docker::Settings; - use super::{checks::ProxySettings, checks::WellFormedConfig, Check, CheckResult, Checker}; + use super::{Check, CheckResult, Checker, checks::ProxySettings, checks::WellFormedConfig}; - lazy_static::lazy_static! { - static ref ENV_LOCK: tokio::sync::Mutex<()> = Default::default(); - } + static ENV_LOCK: tokio::sync::Mutex<()> = tokio::sync::Mutex::const_new(()); enum MobyProxyState { Set, @@ -758,28 +761,30 @@ mod tests { EdgeAgentProxyState::NotSet => "sample_settings.toml", }; - // Unset var to make sure we have a clean start - std::env::remove_var("AZIOT_EDGED_CONFIG"); - std::env::remove_var("AZIOT_EDGED_CONFIG_DIR"); - - // Set proxy for IoT Edge Agent in config.toml - std::env::set_var( - "AZIOT_EDGED_CONFIG", - format!( - "{}/../edgelet-settings/test-files/{}", - env!("CARGO_MANIFEST_DIR"), - config_toml_filename, - ), - ); + unsafe { + // Unset var to make sure we have a clean start + std::env::remove_var("AZIOT_EDGED_CONFIG"); + std::env::remove_var("AZIOT_EDGED_CONFIG_DIR"); - std::env::set_var( - "AZIOT_EDGED_CONFIG_DIR", - format!( - "{}/../edgelet-settings/test-files/{}", - env!("CARGO_MANIFEST_DIR"), - "config.d", - ), - ); + // Set proxy for IoT Edge Agent in config.toml + std::env::set_var( + "AZIOT_EDGED_CONFIG", + format!( + "{}/../edgelet-settings/test-files/{}", + env!("CARGO_MANIFEST_DIR"), + config_toml_filename, + ), + ); + + std::env::set_var( + "AZIOT_EDGED_CONFIG_DIR", + format!( + "{}/../edgelet-settings/test-files/{}", + env!("CARGO_MANIFEST_DIR"), + "config.d", + ), + ); + } // Create an empty check let mut check = super::Check::new( @@ -837,8 +842,10 @@ mod tests { } } - std::env::remove_var("AZIOT_EDGED_CONFIG"); - std::env::remove_var("AZIOT_EDGED_CONFIG_DIR"); + unsafe { + std::env::remove_var("AZIOT_EDGED_CONFIG"); + std::env::remove_var("AZIOT_EDGED_CONFIG_DIR"); + } } #[tokio::test] @@ -846,14 +853,16 @@ mod tests { for filename in &["sample_settings.toml", "sample_settings.tg.filepaths.toml"] { let _env_lock = ENV_LOCK.lock().await; - std::env::set_var( - "AZIOT_EDGED_CONFIG", - format!( - "{}/../edgelet-settings/test-files/{}", - env!("CARGO_MANIFEST_DIR"), - filename, - ), - ); + unsafe { + std::env::set_var( + "AZIOT_EDGED_CONFIG", + format!( + "{}/../edgelet-settings/test-files/{}", + env!("CARGO_MANIFEST_DIR"), + filename, + ), + ); + } let mut check = Check::new( "daemon.json".into(), // unused for this test @@ -883,14 +892,16 @@ mod tests { let _env_lock = ENV_LOCK.lock().await; - std::env::set_var( - "AZIOT_EDGED_CONFIG", - format!( - "{}/../edgelet-settings/test-files/{}", - env!("CARGO_MANIFEST_DIR"), - filename, - ), - ); + unsafe { + std::env::set_var( + "AZIOT_EDGED_CONFIG", + format!( + "{}/../edgelet-settings/test-files/{}", + env!("CARGO_MANIFEST_DIR"), + filename, + ), + ); + } let mut check = Check::new( "daemon.json".into(), // unused for this test @@ -919,12 +930,16 @@ mod tests { // grab an env lock since we are going to be mucking with the environment. let _env_lock = ENV_LOCK.lock().await; - // unset var to make sure we have a clean start - std::env::remove_var("AZIOT_EDGED_CONFIG"); - // Setup the https_proxy environment var let env_proxy_uri1 = "https://environment1:123"; - std::env::set_var("https_proxy", env_proxy_uri1); + + unsafe { + // unset var to make sure we have a clean start + std::env::remove_var("AZIOT_EDGED_CONFIG"); + + std::env::set_var("https_proxy", env_proxy_uri1); + } + let proxy_uri = super::get_proxy_uri(Option::None); // Validate that the uri is picked up from the environment. assert!( @@ -932,14 +947,16 @@ mod tests { "Unable to get proxy_uri from the environment" ); assert_eq!( - proxy_uri.unwrap(), - env_proxy_uri1.to_string(), - "proxy _uri fetched from the environment var \"https_proxy\" did not match expected value: '{env_proxy_uri1};" - ); + proxy_uri.unwrap(), + env_proxy_uri1.to_string(), + "proxy _uri fetched from the environment var \"https_proxy\" did not match expected value: '{env_proxy_uri1};" + ); // Setup the HTTPS_PROXY environment var let env_proxy_uri2 = "https://environment2:123"; - std::env::set_var("HTTPS_PROXY", env_proxy_uri2); + unsafe { + std::env::set_var("HTTPS_PROXY", env_proxy_uri2); + } let proxy_uri = super::get_proxy_uri(Option::None); // Validate that the uri is picked up from the environment. assert!( @@ -952,15 +969,17 @@ mod tests { "proxy _uri fetched from the environment var \"HTTPS_PROXY\" did not match expected value: '{env_proxy_uri2};" ); - // Point to a test config - std::env::set_var( - "AZIOT_EDGED_CONFIG", - format!( - "{}/../edgelet-settings/test-files/{}", - env!("CARGO_MANIFEST_DIR"), - "sample_settings_with_proxy_uri.toml", - ), - ); + unsafe { + // Point to a test config + std::env::set_var( + "AZIOT_EDGED_CONFIG", + format!( + "{}/../edgelet-settings/test-files/{}", + env!("CARGO_MANIFEST_DIR"), + "sample_settings_with_proxy_uri.toml", + ), + ); + } // Get proxy_uri again let config_proxy_uri = "https://config:123"; @@ -990,10 +1009,12 @@ mod tests { "proxy_uri fetched from the config did not match expected value: \'{parm_proxy_uri}\'", ); - // clean up the env - std::env::remove_var("AZIOT_EDGED_CONFIG"); - std::env::remove_var("HTTPS_PROXY"); - std::env::remove_var("https_proxy"); + unsafe { + // clean up the env + std::env::remove_var("AZIOT_EDGED_CONFIG"); + std::env::remove_var("HTTPS_PROXY"); + std::env::remove_var("https_proxy"); + } } #[tokio::test] diff --git a/edgelet/iotedge/src/client.rs b/edgelet/iotedge/src/client.rs index 3e2b4290ce9..e4332b1559a 100644 --- a/edgelet/iotedge/src/client.rs +++ b/edgelet/iotedge/src/client.rs @@ -1,7 +1,9 @@ use std::{collections::HashMap, time::Duration}; use anyhow::Context; -use hyper::Uri; +use bytes::Bytes; +use http_body_util::Empty; +use hyper::{Uri, body::Incoming}; use url::Url; use edgelet_core::{ @@ -121,7 +123,7 @@ impl ModuleRuntime for MgmtClient { unimplemented!() } - async fn logs(&self, id: &str, options: &LogOptions) -> anyhow::Result { + async fn logs(&self, id: &str, options: &LogOptions) -> anyhow::Result { let uri = { let mut query = ::url::form_urlencoded::Serializer::new(String::new()); query @@ -141,7 +143,7 @@ impl ModuleRuntime for MgmtClient { let req = hyper::Request::builder() .method(hyper::Method::GET) .uri(uri) - .body(hyper::Body::empty()) + .body(Empty::::new()) .expect("could not build hyper::Request"); let client = self.connector.clone().into_client(); let resp = client.request(req).await.context(Error::ModuleRuntime)?; diff --git a/edgelet/iotedge/src/config/apply.rs b/edgelet/iotedge/src/config/apply.rs index b4ac16d3cdf..cc3d2101deb 100644 --- a/edgelet/iotedge/src/config/apply.rs +++ b/edgelet/iotedge/src/config/apply.rs @@ -126,7 +126,9 @@ pub async fn execute(config: &Path) -> Result<(), std::borrow::Cow<'static, str> } if let Some(preloaded_master_encryption_key_bytes) = preloaded_master_encryption_key_bytes { - println!("Note: Imported master encryption key will be written to /var/secrets/aziot/keyd/imported-master-encryption-key"); + println!( + "Note: Imported master encryption key will be written to /var/secrets/aziot/keyd/imported-master-encryption-key" + ); common_config::create_dir_all("/var/secrets/aziot/keyd", &aziotks_user, 0o0700) .map_err(|err| format!("{err:?}"))?; @@ -215,8 +217,6 @@ async fn execute_inner( allow_elevated_docker_permissions, auto_reprovisioning_mode, imported_master_encryption_key, - #[cfg(contenttrust)] - manifest_trust_bundle_cert: _, additional_info, iotedge_max_requests, aziot, diff --git a/edgelet/iotedge/src/config/import/mod.rs b/edgelet/iotedge/src/config/import/mod.rs index 8e2f4266e27..181ae1ea44d 100644 --- a/edgelet/iotedge/src/config/import/mod.rs +++ b/edgelet/iotedge/src/config/import/mod.rs @@ -71,8 +71,7 @@ To reconfigure IoT Edge, run: let old_master_encryption_key_path = { // libiothsm derived the filenames for encryption keys from their alias (see `normalize_alias_file_path`) // so the name of the master encryption key can be hard-coded. - const OLD_MASTER_ENCRYPTION_KEY_PATH: &str = - "/var/lib/iotedge/hsm/enc_keys/edgelet-masterWt5mT2xpO72EPKlt2Tt0Sq4uJCrMvfl2rzzKRB3pnyo_.enc.key"; + const OLD_MASTER_ENCRYPTION_KEY_PATH: &str = "/var/lib/iotedge/hsm/enc_keys/edgelet-masterWt5mT2xpO72EPKlt2Tt0Sq4uJCrMvfl2rzzKRB3pnyo_.enc.key"; let old_master_encryption_key_path = Path::new(OLD_MASTER_ENCRYPTION_KEY_PATH); if old_master_encryption_key_path.is_file() { @@ -115,7 +114,7 @@ fn execute_inner( return Err(format!( "there is no old config at {old_config_file_display} available to migrate" ) - .into()) + .into()); } _ => return Err(format!("could not open {old_config_file_display}: {err}").into()), }, @@ -132,7 +131,7 @@ fn execute_inner( match old_config.and_then(config::Config::try_deserialize) { Ok(old_config) => old_config, Err(err) => { - return Err(format!("could not parse {old_config_file_display}: {err}").into()) + return Err(format!("could not parse {old_config_file_display}: {err}").into()); } } }; @@ -304,7 +303,7 @@ fn execute_inner( ), old_config::ProvisioningType::External(_) => { - return Err("external provisioning is not supported.".into()) + return Err("external provisioning is not supported.".into()); } }; @@ -366,9 +365,6 @@ fn execute_inner( imported_master_encryption_key: old_master_encryption_key_path, - #[cfg(contenttrust)] - manifest_trust_bundle_cert: None, - additional_info: None, iotedge_max_requests: Default::default(), diff --git a/edgelet/iotedge/src/config/import/old_config/provisioning.rs b/edgelet/iotedge/src/config/import/old_config/provisioning.rs index 1e033b9adb2..566f6a385f5 100644 --- a/edgelet/iotedge/src/config/import/old_config/provisioning.rs +++ b/edgelet/iotedge/src/config/import/old_config/provisioning.rs @@ -18,6 +18,7 @@ pub(crate) struct Provisioning { pub(crate) enum ProvisioningType { Manual(Manual), Dps(Dps), + #[allow(dead_code)] External(External), } @@ -44,8 +45,8 @@ impl<'de> serde::Deserialize<'de> for Manual { let authentication = match (value.device_connection_string, value.authentication) { (Some(_), Some(_)) => { return Err(serde::de::Error::custom( - "Only one of provisioning.device_connection_string or provisioning.authentication must be set in the config.yaml.", - )); + "Only one of provisioning.device_connection_string or provisioning.authentication must be set in the config.yaml.", + )); } (Some(device_connection_string), None) => ManualAuthMethod::DeviceConnectionString( device_connection_string diff --git a/edgelet/iotedge/src/config/mp.rs b/edgelet/iotedge/src/config/mp.rs index 36970177fe5..1f978d73a5c 100644 --- a/edgelet/iotedge/src/config/mp.rs +++ b/edgelet/iotedge/src/config/mp.rs @@ -42,9 +42,6 @@ To reconfigure IoT Edge, run: imported_master_encryption_key: None, - #[cfg(contenttrust)] - manifest_trust_bundle_cert: None, - additional_info: None, iotedge_max_requests: Default::default(), diff --git a/edgelet/iotedge/src/config/super_config.rs b/edgelet/iotedge/src/config/super_config.rs index 59d79e81682..d96cdcb9966 100644 --- a/edgelet/iotedge/src/config/super_config.rs +++ b/edgelet/iotedge/src/config/super_config.rs @@ -30,10 +30,6 @@ pub struct Config { #[serde(skip_serializing_if = "Option::is_none")] pub imported_master_encryption_key: Option, - #[serde(skip_serializing_if = "Option::is_none")] - #[cfg(contenttrust)] - pub manifest_trust_bundle_cert: Option, - #[serde(skip_serializing_if = "Option::is_none")] pub additional_info: Option, diff --git a/edgelet/iotedge/src/lib.rs b/edgelet/iotedge/src/lib.rs index 278fa667b4d..feb3fa99398 100644 --- a/edgelet/iotedge/src/lib.rs +++ b/edgelet/iotedge/src/lib.rs @@ -1,22 +1,5 @@ // Copyright (c) Microsoft. All rights reserved. -#![deny(rust_2018_idioms, warnings)] -#![deny(clippy::all, clippy::pedantic)] -#![allow( - clippy::default_trait_access, - clippy::let_and_return, - clippy::let_unit_value, - clippy::missing_errors_doc, - clippy::missing_panics_doc, - clippy::module_name_repetitions, - clippy::must_use_candidate, - clippy::similar_names, - clippy::too_many_arguments, - clippy::too_many_lines, - clippy::type_complexity, - clippy::use_self -)] - use serde::Deserialize; mod check; diff --git a/edgelet/iotedge/src/list.rs b/edgelet/iotedge/src/list.rs index c94321b4df4..cfe844cdd89 100644 --- a/edgelet/iotedge/src/list.rs +++ b/edgelet/iotedge/src/list.rs @@ -11,8 +11,8 @@ use tabwriter::TabWriter; use edgelet_core::{Module, ModuleRuntime, ModuleStatus as ModuleStatusEnum}; use edgelet_http::ModuleStatus; -use crate::error::Error; use crate::MgmtModule; +use crate::error::Error; pub struct List { runtime: M, diff --git a/edgelet/iotedge/src/main.rs b/edgelet/iotedge/src/main.rs index 79788bd5fbb..9a8379ddb89 100644 --- a/edgelet/iotedge/src/main.rs +++ b/edgelet/iotedge/src/main.rs @@ -1,9 +1,5 @@ // Copyright (c) Microsoft. All rights reserved. -#![deny(rust_2018_idioms, warnings)] -#![deny(clippy::all, clippy::pedantic)] -#![allow(clippy::let_unit_value, clippy::similar_names)] - use std::ffi::OsString; use std::io; use std::path::PathBuf; @@ -11,10 +7,10 @@ use std::process; use anyhow::Context; use clap::builder::TypedValueParser; -use clap::{crate_description, crate_name, Arg, Command}; +use clap::{Arg, Command, crate_description, crate_name}; use url::Url; -use edgelet_core::{parse_since, LogOptions, LogTail}; +use edgelet_core::{LogOptions, LogTail, parse_since}; use support_bundle::OutputLocation; use iotedge::{ diff --git a/edgelet/iotedge/src/support_bundle.rs b/edgelet/iotedge/src/support_bundle.rs index abf4084b76d..2b7824decc4 100644 --- a/edgelet/iotedge/src/support_bundle.rs +++ b/edgelet/iotedge/src/support_bundle.rs @@ -5,7 +5,7 @@ use std::io::{copy, stdout}; use anyhow::Context; use edgelet_core::{LogOptions, ModuleRuntime}; -use support_bundle::{make_bundle, OutputLocation}; +use support_bundle::{OutputLocation, make_bundle}; use crate::error::Error; diff --git a/edgelet/iotedge/src/system.rs b/edgelet/iotedge/src/system.rs index 0091761b8ba..36d1ba471f0 100644 --- a/edgelet/iotedge/src/system.rs +++ b/edgelet/iotedge/src/system.rs @@ -1,12 +1,10 @@ // Copyright (c) Microsoft. All rights reserved. -use std::ffi::OsStr; - -use lazy_static::lazy_static; +use std::{ffi::OsStr, sync::LazyLock}; use aziotctl_common::system::{ - get_status, get_system_logs as logs, restart, set_log_level as log_level, stop, - ServiceDefinition, + ServiceDefinition, get_status, get_system_logs as logs, restart, set_log_level as log_level, + stop, }; #[cfg(not(feature = "snapctl"))] @@ -18,51 +16,45 @@ use aziot_identity_common_http::ApiVersion; use crate::error::Error; #[cfg(feature = "snapctl")] -lazy_static! { - static ref IOTEDGED: ServiceDefinition = { - ServiceDefinition { - service: "snap.azure-iot-edge.aziot-edged.service", - sockets: &[], - } - }; - static ref DOCKERPROXY: ServiceDefinition = { - ServiceDefinition { - service: "snap.azure-iot-edge.docker-proxy.service", - sockets: &[], - } - }; - static ref SERVICE_DEFINITIONS: Vec<&'static ServiceDefinition> = - [&*DOCKERPROXY, &*IOTEDGED].into_iter().collect(); -} +static IOTEDGED: LazyLock = LazyLock::new(|| ServiceDefinition { + service: "snap.azure-iot-edge.aziot-edged.service", + sockets: &[], +}); +#[cfg(feature = "snapctl")] +static DOCKERPROXY: LazyLock = LazyLock::new(|| ServiceDefinition { + service: "snap.azure-iot-edge.docker-proxy.service", + sockets: &[], +}); +#[cfg(feature = "snapctl")] +static SERVICE_DEFINITIONS: LazyLock> = + LazyLock::new(|| vec![&DOCKERPROXY, &IOTEDGED]); #[cfg(not(feature = "snapctl"))] -lazy_static! { - static ref IOTEDGED: ServiceDefinition = { - // If IOTEDGE_LISTEN_MANAGEMENT_URI isn't set at compile-time, assume socket activation is being used. - // - // This doesn't matter for released packages since those always have IOTEDGE_LISTEN_MANAGEMENT_URI set. - // It's only useful for non-package builds. - let uses_socket_activation = option_env!("IOTEDGE_LISTEN_MANAGEMENT_URI").map_or(true, |value| value.starts_with("fd://")); - - let sockets: &'static [&'static str] = - if uses_socket_activation { - &["aziot-edged.mgmt.socket", "aziot-edged.workload.socket"] - } - else { - &[] - }; - - ServiceDefinition { - service: "aziot-edged.service", - sockets, - } +static IOTEDGED: LazyLock = LazyLock::new(|| { + // If IOTEDGE_LISTEN_MANAGEMENT_URI isn't set at compile-time, assume socket activation is being used. + // + // This doesn't matter for released packages since those always have IOTEDGE_LISTEN_MANAGEMENT_URI set. + // It's only useful for non-package builds. + let uses_socket_activation = option_env!("IOTEDGE_LISTEN_MANAGEMENT_URI") + .map_or(true, |value| value.starts_with("fd://")); + + let sockets: &'static [&'static str] = if uses_socket_activation { + &["aziot-edged.mgmt.socket", "aziot-edged.workload.socket"] + } else { + &[] }; - static ref SERVICE_DEFINITIONS: Vec<&'static ServiceDefinition> = - std::iter::once(&*IOTEDGED) - .chain(IS_SERVICES.iter().copied()) - .collect(); -} + ServiceDefinition { + service: "aziot-edged.service", + sockets, + } +}); + +static SERVICE_DEFINITIONS: LazyLock> = LazyLock::new(|| { + std::iter::once(&*IOTEDGED) + .chain(IS_SERVICES.iter().copied()) + .collect() +}); pub struct System; diff --git a/edgelet/support-bundle/Cargo.toml b/edgelet/support-bundle/Cargo.toml index 39fb60f9af8..9af2417da09 100644 --- a/edgelet/support-bundle/Cargo.toml +++ b/edgelet/support-bundle/Cargo.toml @@ -1,20 +1,23 @@ [package] -authors = ["Azure IoT Edge Devs"] -edition = "2021" name = "support-bundle" version = "0.1.0" +authors = ["Azure IoT Edge Devs"] +edition = "2024" +publish = false + [dependencies] -anyhow = "1" -chrono = "0.4" -futures = "0.3" -hyper = { version = "0.14", features = ["stream"] } -thiserror = "1" -tokio = { version = "1", features = ["process", "time"] } -zip = { version = "0.6", features = ["deflate"], default-features = false } +anyhow = { workspace = true } +chrono = { workspace = true } +futures-util = { workspace = true } +http-body = { workspace = true } +thiserror = { workspace = true } +tokio = { workspace = true } +zip = { workspace = true } edgelet-core = { path = "../edgelet-core" } -edgelet-settings = {path = "../edgelet-settings" } +edgelet-settings = { path = "../edgelet-settings" } + [features] snapctl = [] diff --git a/edgelet/support-bundle/src/lib.rs b/edgelet/support-bundle/src/lib.rs index bed607ef233..3db67d5f50f 100644 --- a/edgelet/support-bundle/src/lib.rs +++ b/edgelet/support-bundle/src/lib.rs @@ -1,9 +1,5 @@ // Copyright (c) Microsoft. All rights reserved. -#![deny(rust_2018_idioms, warnings)] -#![deny(clippy::all, clippy::pedantic)] -#![allow(clippy::module_name_repetitions)] - mod error; mod runtime_util; mod shell_util; @@ -11,4 +7,4 @@ mod support_bundle; pub use crate::error::Error; pub use crate::runtime_util::write_logs; -pub use crate::support_bundle::{make_bundle, OutputLocation}; +pub use crate::support_bundle::{OutputLocation, make_bundle}; diff --git a/edgelet/support-bundle/src/runtime_util.rs b/edgelet/support-bundle/src/runtime_util.rs index 227f07611fc..111596fa0e1 100644 --- a/edgelet/support-bundle/src/runtime_util.rs +++ b/edgelet/support-bundle/src/runtime_util.rs @@ -1,9 +1,9 @@ // Copyright (c) Microsoft. All rights reserved. -use std::io::Write; +use std::io::{self, Write}; use anyhow::Context; -use futures::TryStreamExt; +use http_body::Body as _; use edgelet_core::{LogOptions, Module, ModuleRuntime}; @@ -45,7 +45,14 @@ pub async fn write_logs( .await .context(Error::Write)?; - while let Some(bytes) = logs.try_next().await.context(Error::Write)? { + while let Some(frame) = + futures_util::future::poll_fn(|cx| std::pin::Pin::new(&mut logs).poll_frame(cx)).await + { + let bytes = frame + .context(Error::Write)? + .into_data() + .map_err(|_| io::Error::from(io::ErrorKind::UnexpectedEof)) + .context(Error::Write)?; // First 4 bytes represent stderr vs stdout, we currently don't display differently based on that. // Next 4 bytes represent length of chunk, rust already encodes this information in the slice. if bytes.len() > 8 { diff --git a/edgelet/support-bundle/src/shell_util.rs b/edgelet/support-bundle/src/shell_util.rs index 6c374e1a62e..55ebb145b7b 100644 --- a/edgelet/support-bundle/src/shell_util.rs +++ b/edgelet/support-bundle/src/shell_util.rs @@ -1,11 +1,11 @@ // Copyright (c) Microsoft. All rights reserved. -use chrono::{DateTime, NaiveDateTime, Utc}; +use chrono::{DateTime, Utc}; use std::io::{Seek, Write}; use tokio::process::Command; use anyhow::Context; -use zip::{write::FileOptions, ZipWriter}; +use zip::{ZipWriter, write::FileOptions}; use crate::error::Error; use edgelet_core::LogOptions; @@ -48,7 +48,7 @@ pub async fn write_check( pub async fn write_inspect( module_name: &str, zip_writer: &mut ZipWriter, - file_options: &FileOptions, + file_options: &FileOptions<'_, ()>, verbose: bool, ) -> anyhow::Result<()> where @@ -118,7 +118,7 @@ pub async fn get_docker_networks() -> Result, Error> { pub async fn write_network_inspect( network_name: &str, zip_writer: &mut ZipWriter, - file_options: &FileOptions, + file_options: &FileOptions<'_, ()>, verbose: bool, ) -> anyhow::Result<()> where @@ -170,20 +170,18 @@ pub async fn write_system_log( unit: &str, log_options: &LogOptions, zip_writer: &mut ZipWriter, - file_options: &FileOptions, + file_options: &FileOptions<'_, ()>, verbose: bool, ) -> anyhow::Result<()> where W: Write + Seek, { print_verbose(format!("Getting system logs for {name}").as_str(), verbose); - let timestamp = NaiveDateTime::from_timestamp_opt(log_options.since().into(), 0) - .ok_or(Error::SupportBundle)?; - let since_time: DateTime = DateTime::from_utc(timestamp, Utc); + let since_time: DateTime = + DateTime::from_timestamp(log_options.since().into(), 0).ok_or(Error::SupportBundle)?; let until_time: Option> = log_options .until() - .and_then(|until| NaiveDateTime::from_timestamp_opt(until.into(), 0)) - .map(|until| DateTime::from_utc(until, Utc)); + .and_then(|until| DateTime::from_timestamp(until.into(), 0)); let command = { let mut command = Command::new("journalctl"); diff --git a/edgelet/support-bundle/src/support_bundle.rs b/edgelet/support-bundle/src/support_bundle.rs index 37fee5081ee..2ff9d7a25cf 100644 --- a/edgelet/support-bundle/src/support_bundle.rs +++ b/edgelet/support-bundle/src/support_bundle.rs @@ -5,7 +5,7 @@ use std::io::{Cursor, Read, Seek, SeekFrom, Write}; use std::path::PathBuf; use anyhow::Context; -use zip::{write::FileOptions, CompressionMethod, ZipWriter}; +use zip::{CompressionMethod, ZipWriter, write::FileOptions}; use edgelet_core::{LogOptions, ModuleRuntime}; @@ -44,14 +44,14 @@ pub async fn make_bundle( verbose: bool, iothub_hostname: Option, runtime: &impl ModuleRuntime, -) -> anyhow::Result<(Box, u64)> { +) -> anyhow::Result<(Box, u64)> { match output_location { OutputLocation::File(location) => { let buffer = File::create(&location).context(Error::SupportBundle)?; - let mut zip_writer = ZipWriter::new(buffer); + let zip_writer = ZipWriter::new(buffer); let (reader, size) = write_all( - &mut zip_writer, + zip_writer, log_options, include_ms_only, verbose, @@ -64,10 +64,10 @@ pub async fn make_bundle( } OutputLocation::Memory => { let buffer = Box::new(Cursor::new(Vec::new())); - let mut zip_writer = ZipWriter::new(buffer); + let zip_writer = ZipWriter::new(buffer); let (reader, size) = write_all( - &mut zip_writer, + zip_writer, log_options, include_ms_only, verbose, @@ -82,7 +82,7 @@ pub async fn make_bundle( } async fn write_all( - mut zip_writer: &mut ZipWriter, + mut zip_writer: ZipWriter, log_options: LogOptions, include_ms_only: bool, verbose: bool, @@ -113,17 +113,25 @@ where write_logs(runtime, &module_name, &log_options, &mut zip_writer).await?; // write module inspect - write_inspect(&module_name, zip_writer, &file_options, verbose).await?; + write_inspect(&module_name, &mut zip_writer, &file_options, verbose).await?; } // Get all docker network inspects for network_name in get_docker_networks().await? { - write_network_inspect(&network_name, zip_writer, &file_options, verbose).await?; + write_network_inspect(&network_name, &mut zip_writer, &file_options, verbose).await?; } // Get logs for system modules for (name, unit) in SYSTEM_MODULES { - write_system_log(name, unit, &log_options, zip_writer, &file_options, verbose).await?; + write_system_log( + name, + unit, + &log_options, + &mut zip_writer, + &file_options, + verbose, + ) + .await?; } // Finilize buffer and set cursur to 0 for reading. diff --git a/rust-toolchain.toml b/rust-toolchain.toml index 50fa4928b96..4933b3ba170 100644 --- a/rust-toolchain.toml +++ b/rust-toolchain.toml @@ -1,2 +1,2 @@ [toolchain] -channel = "1.73" +channel = "1.95"