diff --git a/Cargo.lock b/Cargo.lock index 8dd0f944b3..4134f640f9 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -40,16 +40,32 @@ dependencies = [ "tokio-util 0.2.0", ] +[[package]] +name = "actix-codec" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "78d1833b3838dbe990df0f1f87baf640cf6146e898166afe401839d1b001e570" +dependencies = [ + "bitflags", + "bytes", + "futures-core", + "futures-sink", + "log", + "pin-project", + "tokio", + "tokio-util 0.3.1", +] + [[package]] name = "actix-connect" version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c95cc9569221e9802bf4c377f6c18b90ef10227d787611decf79fd47d2a8e76c" dependencies = [ - "actix-codec", + "actix-codec 0.2.0", "actix-rt", "actix-service", - "actix-utils", + "actix-utils 1.0.6", "derive_more", "either", "futures", @@ -103,13 +119,13 @@ version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c16664cc4fdea8030837ad5a845eb231fb93fc3c5c171edfefb52fad92ce9019" dependencies = [ - "actix-codec", + "actix-codec 0.2.0", "actix-connect", "actix-rt", "actix-service", "actix-threadpool", "actix-tls", - "actix-utils", + "actix-utils 1.0.6", "base64 0.11.0", "bitflags", "brotli2", @@ -157,9 +173,9 @@ dependencies = [ [[package]] name = "actix-router" -version = "0.2.4" +version = "0.2.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9d7a10ca4d94e8c8e7a87c5173aba1b97ba9a6563ca02b0e1cd23531093d3ec8" +checksum = "bbd1f7dbda1645bf7da33554db60891755f6c01c1b2169e2f4c492098d30c235" dependencies = [ "bytestring", "http", @@ -185,14 +201,14 @@ dependencies = [ [[package]] name = "actix-server" -version = "1.0.3" +version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e6d74b464215a473c973a2d7d03a69cc10f4ce1f4b38a7659c5193dc5c675630" +checksum = "45407e6e672ca24784baa667c5d32ef109ccdd8d5e0b5ebb9ef8a67f4dfb708e" dependencies = [ - "actix-codec", + "actix-codec 0.3.0", "actix-rt", "actix-service", - "actix-utils", + "actix-utils 2.0.0", "futures-channel", "futures-util", "log", @@ -248,10 +264,10 @@ version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a4e5b4faaf105e9a6d389c606c298dcdb033061b00d532af9df56ff3a54995a8" dependencies = [ - "actix-codec", + "actix-codec 0.2.0", "actix-rt", "actix-service", - "actix-utils", + "actix-utils 1.0.6", "derive_more", "either", "futures", @@ -270,7 +286,7 @@ version = "1.0.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fcf8f5631bf01adec2267808f00e228b761c60c0584cc9fa0b5364f41d147f4e" dependencies = [ - "actix-codec", + "actix-codec 0.2.0", "actix-rt", "actix-service", "bitflags", @@ -282,13 +298,33 @@ dependencies = [ "slab", ] +[[package]] +name = "actix-utils" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2e9022dec56632d1d7979e59af14f0597a28a830a9c1c7fec8b2327eb9f16b5a" +dependencies = [ + "actix-codec 0.3.0", + "actix-rt", + "actix-service", + "bitflags", + "bytes", + "either", + "futures-channel", + "futures-sink", + "futures-util", + "log", + "pin-project", + "slab", +] + [[package]] name = "actix-web" version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3158e822461040822f0dbf1735b9c2ce1f95f93b651d7a7aded00b1efbb1f635" dependencies = [ - "actix-codec", + "actix-codec 0.2.0", "actix-http", "actix-macros", "actix-router", @@ -298,7 +334,7 @@ dependencies = [ "actix-testing", "actix-threadpool", "actix-tls", - "actix-utils", + "actix-utils 1.0.6", "actix-web-codegen", "awc", "bytes", @@ -421,9 +457,9 @@ dependencies = [ [[package]] name = "async-trait" -version = "0.1.37" +version = "0.1.40" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "caae68055714ff28740f310927e04f2eba76ff580b16fb18ed90073ee71646f7" +checksum = "687c230d85c0a52504709705fc8a53e4a692b83a2184f03dae73e38e1e93a783" dependencies = [ "proc-macro2", "quote", @@ -449,9 +485,9 @@ checksum = "1d49d90015b3c36167a20fe2810c5cd875ad504b39cff3d4eae7977e6b7c1cb2" [[package]] name = "autocfg" -version = "1.0.0" +version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f8aac770f1885fd7e387acedd76065302551364496e46b3dd00860b2f8359b9d" +checksum = "cdb031dd78e28731d87d56cc8ffef4a8f36ca26c38fe2de700543e627f8a464a" [[package]] name = "awc" @@ -459,7 +495,7 @@ version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d7601d4d1d7ef2335d6597a41b5fe069f6ab799b85f53565ab390e7b7065aac5" dependencies = [ - "actix-codec", + "actix-codec 0.2.0", "actix-http", "actix-rt", "actix-service", @@ -677,9 +713,9 @@ dependencies = [ [[package]] name = "cc" -version = "1.0.58" +version = "1.0.60" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f9a06fb2e53271d7c279ec1efea6ab691c35a2ae67ec0d91d7acec0caf13b518" +checksum = "ef611cc68ff783f18535d77ddd080185275713d852c4f5cbb6122c462a7a825c" [[package]] name = "cfg-if" @@ -689,13 +725,15 @@ checksum = "4785bdd1c96b2a846b2bd7cc02e86b6b3dbf14e7e53446c4f54c92a361040822" [[package]] name = "chrono" -version = "0.4.13" +version = "0.4.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c74d84029116787153e02106bf53e66828452a4b325cc8652b788b5967c0a0b6" +checksum = "7b05acab8a90ff05c15f407779397ff10ed4049bbe086d47cd7c95817207ad81" dependencies = [ + "libc", "num-integer", "num-traits", "time", + "winapi 0.3.9", ] [[package]] @@ -875,12 +913,12 @@ dependencies = [ [[package]] name = "crossbeam-channel" -version = "0.4.3" +version = "0.4.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "09ee0cc8804d5393478d743b035099520087a5186f3b93fa58cec08fa62407b6" +checksum = "b153fe7cbef478c567df0f972e02e6d736db11affe43dfc9c56a9374d1adfb87" dependencies = [ - "cfg-if", "crossbeam-utils", + "maybe-uninit", ] [[package]] @@ -900,7 +938,7 @@ version = "0.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "058ed274caafc1f60c4997b5fc07bf7dc7cca454af7c6e81edffe5f33f70dace" dependencies = [ - "autocfg 1.0.0", + "autocfg 1.0.1", "cfg-if", "crossbeam-utils", "lazy_static", @@ -926,16 +964,16 @@ version = "0.7.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c3c7c73a2d1e9fc0886a08b93e98eb643461230d5f1925e4036204d5f2e261a8" dependencies = [ - "autocfg 1.0.0", + "autocfg 1.0.1", "cfg-if", "lazy_static", ] [[package]] name = "delay" -version = "0.2.0" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6eb11c569f9e41ce743746d5995ba75531d13e4f9763db6f4061e25d46fb9758" +checksum = "da251be9c00cade565f17c1ce87232ad626e32c506774288ca4970094642693d" [[package]] name = "derivative" @@ -950,9 +988,9 @@ dependencies = [ [[package]] name = "derive_more" -version = "0.99.9" +version = "0.99.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "298998b1cf6b5b2c8a7b023dfd45821825ce3ba8a8af55c921a0e734e4653f76" +checksum = "1dcfabdab475c16a93d669dddfc393027803e347d09663f524447f642fbb84ba" dependencies = [ "proc-macro2", "quote", @@ -986,6 +1024,7 @@ dependencies = [ "humanize-rs", "ic-agent", "ic-types", + "ic-utils", "indicatif", "lazy-init", "lazy_static", @@ -1126,9 +1165,9 @@ checksum = "134951f4028bdadb9b84baf4232681efbf277da25144b9b0ad65df75946c422b" [[package]] name = "either" -version = "1.6.0" +version = "1.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cd56b59865bce947ac5958779cfa508f6c3b9497cc762b7e24a12d11ccde2c4f" +checksum = "e78d4f1cc4ae33bbfc157ed5d5a5ef3bc29227303d595861deb238fcec4e9457" [[package]] name = "ena" @@ -1147,9 +1186,9 @@ checksum = "a357d28ed41a50f9c765dbfe56cbc04a64e53e5fc58ba79fbc34c10ef3df831f" [[package]] name = "encoding_rs" -version = "0.8.23" +version = "0.8.24" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e8ac63f94732332f44fe654443c46f6375d1939684c17b0afb6cb56b0456e171" +checksum = "a51b8cf747471cb9499b6d59e59b0444f4c90eba8968c4e44874e92b5b64ace2" dependencies = [ "cfg-if", ] @@ -1248,9 +1287,9 @@ checksum = "37ab347416e802de484e4d03c7316c48f1ecb56574dfd4a46a80f173ce1de04d" [[package]] name = "flate2" -version = "1.0.16" +version = "1.0.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "68c90b0fc46cf89d227cc78b40e494ff81287a92dd07631e5af0d06fe3cf885e" +checksum = "766d0e77a2c1502169d4a93ff3b8c15a71fd946cd0126309752104e5f3c46d94" dependencies = [ "cfg-if", "crc32fast", @@ -1460,13 +1499,13 @@ dependencies = [ [[package]] name = "getrandom" -version = "0.1.14" +version = "0.1.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7abc8dd8451921606d809ba32e95b6111925cd2906060d2dcc29c070220503eb" +checksum = "fc587bc0ec293155d5bfa6b9891ec18a1e330c234f896ea47fbada4cadbe47e6" dependencies = [ "cfg-if", "libc", - "wasi", + "wasi 0.9.0+wasi-snapshot-preview1", ] [[package]] @@ -1502,12 +1541,9 @@ checksum = "d36fab90f82edc3c747f9d438e06cf0a491055896f2a279638bb5beed6c40177" [[package]] name = "hashbrown" -version = "0.8.2" +version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e91b62f79061a0bc2e046024cb7ba44b08419ed238ecbd9adbd787434b9e8c25" -dependencies = [ - "autocfg 1.0.0", -] +checksum = "00d63df3d41950fb462ed38308eea019113ad1508da725bbedcd0fa5a85ef5f7" [[package]] name = "heck" @@ -1520,9 +1556,9 @@ dependencies = [ [[package]] name = "hermit-abi" -version = "0.1.15" +version = "0.1.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3deed196b6e7f9e44a2ae8d94225d80302d81208b1bb673fd21fe634645c85a9" +checksum = "4c30f6d0bc6b00693347368a67d41b58f2fb851215ff1da49e90fe2c5c667151" dependencies = [ "libc", ] @@ -1581,6 +1617,12 @@ version = "1.3.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cd179ae861f0c2e53da70d892f5f3029f9594be0c41dc5269cd371691b1dc2f9" +[[package]] +name = "httpdate" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "494b4d60369511e7dea41cf646832512a94e542f68bb9c49e54518e0f468eb47" + [[package]] name = "humanize-rs" version = "0.1.5" @@ -1598,9 +1640,9 @@ dependencies = [ [[package]] name = "hyper" -version = "0.13.7" +version = "0.13.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3e68a8dd9716185d9e64ea473ea6ef63529252e3e27623295a0378a19665d5eb" +checksum = "2f3afcfae8af5ad0576a31e768415edb627824129e8e5a29b8bfccb2f234e835" dependencies = [ "bytes", "futures-channel", @@ -1610,10 +1652,10 @@ dependencies = [ "http", "http-body", "httparse", + "httpdate", "itoa", "pin-project", "socket2", - "time", "tokio", "tower-service", "tracing", @@ -1630,9 +1672,9 @@ dependencies = [ "futures-util", "hyper", "log", - "rustls 0.18.0", + "rustls 0.18.1", "tokio", - "tokio-rustls 0.14.0", + "tokio-rustls 0.14.1", "webpki", ] @@ -1652,13 +1694,12 @@ dependencies = [ [[package]] name = "ic-agent" version = "0.1.0" -source = "git+ssh://git@github.com/dfinity-lab/agent-rust.git?branch=next#9d611f08cb55923fc6ff5bf0136e8f4b848dd2cc" +source = "git+https://github.com/dfinity/agent-rs.git?branch=next#191dca1c38cf7eebfb177f242063592223c87976" dependencies = [ "async-trait", "base32", "base64 0.12.3", "byteorder", - "candid", "delay", "hex", "ic-types", @@ -1668,7 +1709,7 @@ dependencies = [ "rand 0.7.3", "reqwest", "ring", - "rustls 0.18.0", + "rustls 0.18.1", "serde", "serde_bytes", "serde_cbor", @@ -1679,8 +1720,8 @@ dependencies = [ [[package]] name = "ic-types" -version = "0.1.1" -source = "git+ssh://git@github.com/dfinity-lab/agent-rust.git?branch=next#23972ef6eb8ccbab8bcdb3cfa384f8db231eb01f" +version = "0.1.2" +source = "git+https://github.com/dfinity/agent-rs.git?branch=next#191dca1c38cf7eebfb177f242063592223c87976" dependencies = [ "base32", "crc32fast", @@ -1689,6 +1730,20 @@ dependencies = [ "thiserror", ] +[[package]] +name = "ic-utils" +version = "0.1.0" +source = "git+https://github.com/dfinity/agent-rs.git?branch=next#191dca1c38cf7eebfb177f242063592223c87976" +dependencies = [ + "async-trait", + "candid", + "delay", + "ic-agent", + "ic-types", + "serde", + "thiserror", +] + [[package]] name = "idna" version = "0.2.0" @@ -1702,11 +1757,11 @@ dependencies = [ [[package]] name = "indexmap" -version = "1.5.1" +version = "1.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "86b45e59b16c76b11bf9738fd5d38879d3bd28ad292d7b313608becb17ae2df9" +checksum = "55e2e4c765aa53a0424761bf9f41aa7a6ac1efa87238f59560640e27fca028f2" dependencies = [ - "autocfg 1.0.0", + "autocfg 1.0.1", "hashbrown", ] @@ -1744,9 +1799,12 @@ dependencies = [ [[package]] name = "instant" -version = "0.1.6" +version = "0.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b141fdc7836c525d4d594027d318c84161ca17aaf8113ab1f81ab93ae897485" +checksum = "63312a18f7ea8760cdd0a7c5aac1a619752a246b833545e3e36d1f81f7cd9e66" +dependencies = [ + "cfg-if", +] [[package]] name = "iovec" @@ -1792,9 +1850,9 @@ checksum = "dc6f3ad7b9d11a0c00842ff8de1b60ee58661048eb8049ed33c73594f359d7e6" [[package]] name = "js-sys" -version = "0.3.44" +version = "0.3.45" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "85a7e2c92a4804dd459b86c339278d0fe87cf93757fae222c3fa3ae75458bc73" +checksum = "ca059e81d9486668f12d455a4ea6daa600bd408134cd17e3d3fb5a32d1f016f8" dependencies = [ "wasm-bindgen", ] @@ -1811,9 +1869,9 @@ dependencies = [ [[package]] name = "lalrpop" -version = "0.19.0" +version = "0.19.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d6f55673d283313791404be21209bb433f128f7e5c451986df107eb5fdbd68d2" +checksum = "60fb56191fb8ed5311597e5750debe6779c9fdb487dbaa5ff302592897d7a2c8" dependencies = [ "ascii-canvas", "atty", @@ -1836,9 +1894,9 @@ dependencies = [ [[package]] name = "lalrpop-util" -version = "0.19.0" +version = "0.19.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f7e88f15a7d31dfa8fb607986819039127f0161058a3b248a146142d276cbd28" +checksum = "6771161eff561647fad8bb7e745e002c304864fb8f436b52b30acda51fca4408" [[package]] name = "language-tags" @@ -1872,9 +1930,9 @@ checksum = "3576a87f2ba00f6f106fdfcd16db1d698d648a26ad8e0573cad8537c3c362d2a" [[package]] name = "libc" -version = "0.2.74" +version = "0.2.77" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a2f02823cf78b754822df5f7f268fb59822e7296276d3e069d8e8cb26a14bd10" +checksum = "f2f96b10ec2560088a8e76961b00d47107b3a625fecb76dedb29ee7ccbf98235" [[package]] name = "libflate" @@ -1980,11 +2038,11 @@ checksum = "3728d817d99e5ac407411fa471ff9800a778d88a24685968b36824eaf4bee400" [[package]] name = "memoffset" -version = "0.5.5" +version = "0.5.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c198b026e1bbf08a937e94c6c60f9ec4a2267f5b0d2eec9c1b21b061ce2be55f" +checksum = "043175f069eda7b85febe4a74abbaeff828d9f8b448515d3151a14a3542811aa" dependencies = [ - "autocfg 1.0.0", + "autocfg 1.0.1", ] [[package]] @@ -2005,11 +2063,12 @@ dependencies = [ [[package]] name = "miniz_oxide" -version = "0.4.0" +version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "be0f75932c1f6cfae3c04000e40114adf955636e19040f9c0a2c380702aa1c7f" +checksum = "c60c0dfe32c10b43a144bad8fc83538c52f58302c92300ea7ec7bf7b38d5a7b9" dependencies = [ "adler", + "autocfg 1.0.1", ] [[package]] @@ -2131,9 +2190,9 @@ dependencies = [ [[package]] name = "net2" -version = "0.2.34" +version = "0.2.35" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2ba7c918ac76704fb42afcbbb43891e72731f3dcca3bef2a19786297baf14af7" +checksum = "3ebc3ec692ed7c9a255596c67808dee269f64655d8baf7b4f0638e51ba1d6853" dependencies = [ "cfg-if", "libc", @@ -2186,7 +2245,7 @@ version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b7f3fc75e3697059fb1bc465e3d8cca6cf92f56854f201158b3f9c77d5a3cfa0" dependencies = [ - "autocfg 1.0.0", + "autocfg 1.0.1", "num-integer", "num-traits", ] @@ -2197,7 +2256,7 @@ version = "0.1.43" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8d59457e662d541ba17869cf51cf177c0b5f0cbf476c66bdc90bf1edac4f875b" dependencies = [ - "autocfg 1.0.0", + "autocfg 1.0.1", "num-traits", ] @@ -2207,7 +2266,7 @@ version = "0.2.12" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ac267bcc07f48ee5f8935ab0d24f316fb722d7a1292e2913f0cc196b29ffd611" dependencies = [ - "autocfg 1.0.0", + "autocfg 1.0.1", ] [[package]] @@ -2256,9 +2315,9 @@ checksum = "1ab52be62400ca80aa00285d25253d7f7c437b7375c4de678f5405d3afe82ca5" [[package]] name = "once_cell" -version = "1.4.0" +version = "1.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b631f7e854af39a1739f401cf34a8a013dfe09eac4fa4dba91e9768bd28168d" +checksum = "260e51e7efe62b592207e9e13a68e43692a7a279171d6ba57abd208bf23645ad" [[package]] name = "opaque-debug" @@ -2298,7 +2357,7 @@ version = "0.9.58" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a842db4709b604f0fe5d1170ae3565899be2ad3d9cbc72dedc789ac0511f78de" dependencies = [ - "autocfg 1.0.0", + "autocfg 1.0.1", "cc", "libc", "pkg-config", @@ -2357,9 +2416,9 @@ dependencies = [ [[package]] name = "paste" -version = "1.0.0" +version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f6ddc8e145de01d9180ac7b78b9676f95a9c2447f6a88b2c2a04702211bc5d71" +checksum = "0520af26d4cf99643dbbe093a61507922b57232d9978d8491fdc8f7b44573c8c" [[package]] name = "pem" @@ -2448,9 +2507,9 @@ checksum = "d36492546b6af1463394d46f0c834346f31548646f6ba10849802c9c9a27ac33" [[package]] name = "ppv-lite86" -version = "0.2.8" +version = "0.2.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "237a5ed80e274dbc66f86bd59c1e25edc039660be53194b5fe0a482e0f2612ea" +checksum = "c36fa947111f5c62a733b652544dd0016a43ce89619538a8ef92724a6f501a20" [[package]] name = "precomputed-hash" @@ -2544,9 +2603,9 @@ checksum = "eba180dafb9038b050a4c280019bbedf9f2467b61e5d892dcad585bb57aadc5a" [[package]] name = "proc-macro2" -version = "1.0.19" +version = "1.0.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "04f5f085b5d71e2188cb8271e5da0161ad52c3f227a661a3c135fdf28e258b12" +checksum = "e4b93dba1818d32e781f9d008edd577bab215e83ef50e8a1ddf1ad301b19a09f" dependencies = [ "unicode-xid", ] @@ -2735,11 +2794,11 @@ dependencies = [ [[package]] name = "rayon" -version = "1.3.1" +version = "1.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "62f02856753d04e03e26929f820d0a0a337ebe71f849801eea335d464b349080" +checksum = "cfd016f0c045ad38b5251be2c9c0ab806917f82da4d36b2a327e5166adad9270" dependencies = [ - "autocfg 1.0.0", + "autocfg 1.0.1", "crossbeam-deque", "either", "rayon-core", @@ -2747,12 +2806,12 @@ dependencies = [ [[package]] name = "rayon-core" -version = "1.7.1" +version = "1.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e92e15d89083484e11353891f1af602cc661426deb9564c298b270c726973280" +checksum = "e8c4fec834fb6e6d2dd5eece3c7b432a52f0ba887cf40e595190c4107edc08bf" dependencies = [ + "crossbeam-channel", "crossbeam-deque", - "crossbeam-queue", "crossbeam-utils", "lazy_static", "num_cpus", @@ -2775,9 +2834,9 @@ checksum = "41cc0f7e4d5d4544e8861606a285bb08d3e70712ccc7d2b84d7c0ccfaf4b05ce" [[package]] name = "redox_users" -version = "0.3.4" +version = "0.3.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "09b23093265f8d200fa7b4c2c76297f47e681c655f6f1285a8780d6a022f7431" +checksum = "de0737333e7a9502c789a36d7c7fa6092a49895d4faa31ca5df163857ded2e9d" dependencies = [ "getrandom", "redox_syscall", @@ -2813,9 +2872,9 @@ dependencies = [ [[package]] name = "reqwest" -version = "0.10.7" +version = "0.10.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "12427a5577082c24419c9c417db35cfeb65962efc7675bb6b0d5f1f9d315bfe6" +checksum = "e9eaa17ac5d7b838b7503d118fa16ad88f440498bf9ffe5424e621f93190d61e" dependencies = [ "base64 0.12.3", "bytes", @@ -2836,12 +2895,12 @@ dependencies = [ "native-tls", "percent-encoding", "pin-project-lite", - "rustls 0.18.0", + "rustls 0.18.1", "serde", "serde_json", "serde_urlencoded", "tokio", - "tokio-rustls 0.14.0", + "tokio-rustls 0.14.1", "tokio-tls", "url", "wasm-bindgen", @@ -2884,11 +2943,11 @@ checksum = "cabe4fa914dec5870285fa7f71f602645da47c486e68486d2b4ceb4a343e90ac" [[package]] name = "rust-argon2" -version = "0.7.0" +version = "0.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2bc8af4bda8e1ff4932523b94d3dd20ee30a87232323eda55903ffd71d2fb017" +checksum = "9dab61250775933275e84053ac235621dfb739556d5c54a2f2e9313b7cf43a19" dependencies = [ - "base64 0.11.0", + "base64 0.12.3", "blake2b_simd", "constant_time_eq", "crossbeam-utils", @@ -2915,9 +2974,9 @@ dependencies = [ [[package]] name = "rustls" -version = "0.18.0" +version = "0.18.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cac94b333ee2aac3284c5b8a1b7fb4dd11cba88c244e3fe33cdbd047af0eb693" +checksum = "5d1126dcf58e93cee7d098dbda643b5f92ed724f1f6a63007c1116eed6700c81" dependencies = [ "base64 0.12.3", "log", @@ -3019,9 +3078,9 @@ checksum = "388a1df253eca08550bef6c72392cfe7c30914bf41df5269b68cbd6ff8f570a3" [[package]] name = "serde" -version = "1.0.115" +version = "1.0.116" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e54c9a88f2da7238af84b5101443f0c0d0a3bbdc455e34a5c9497b1903ed55d5" +checksum = "96fe57af81d28386a513cbc6858332abc6117cfdb5999647c6444b8f43a370a5" dependencies = [ "serde_derive", ] @@ -3047,9 +3106,9 @@ dependencies = [ [[package]] name = "serde_derive" -version = "1.0.115" +version = "1.0.116" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "609feed1d0a73cc36a0182a840a9b37b4a82f0b1150369f0536a9e3f2a31dc48" +checksum = "f630a6370fd8e457873b4bd2ffdae75408bc291ba72be773772a4c2a065d9ae8" dependencies = [ "proc-macro2", "quote", @@ -3198,9 +3257,9 @@ checksum = "fbee7696b84bbf3d89a1c2eccff0850e3047ed46bfcd2e92c29a2d074d57e252" [[package]] name = "socket2" -version = "0.3.12" +version = "0.3.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "03088793f677dce356f3ccc2edb1b314ad191ab702a5de3faf49304f7e104918" +checksum = "b1fa70dc5c8104ec096f4fe7ede7a221d35ae13dcd19ba1ad9a81d2cab9a1c44" dependencies = [ "cfg-if", "libc", @@ -3241,9 +3300,9 @@ checksum = "6446ced80d6c486436db5c078dde11a9f73d42b57fb273121e160b84f63d894c" [[package]] name = "syn" -version = "1.0.38" +version = "1.0.41" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e69abc24912995b3038597a7a593be5053eb0fb44f3cc5beec0deb421790c1f4" +checksum = "6690e3e9f692504b941dc6c3b188fd28df054f7fb8469ab40680df52fdcc842b" dependencies = [ "proc-macro2", "quote", @@ -3283,9 +3342,9 @@ checksum = "f764005d11ee5f36500a149ace24e00e3da98b0158b3e2d53a7495660d3f4d60" [[package]] name = "tar" -version = "0.4.29" +version = "0.4.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c8a4c1d0bee3230179544336c15eefb563cf0302955d962e456542323e8c2e8a" +checksum = "489997b7557e9a43e192c527face4feacc78bfbe6eed67fd55c4c9e381cba290" dependencies = [ "filetime", "libc", @@ -3405,19 +3464,20 @@ dependencies = [ [[package]] name = "time" -version = "0.1.43" +version = "0.1.44" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ca8a50ef2360fbd1eeb0ecd46795a87a19024eb4b53c5dc916ca1fd95fe62438" +checksum = "6db9e6914ab8b1ae1c260a4ae7a49b6c5611b40328a735b21862567685e73255" dependencies = [ "libc", + "wasi 0.10.0+wasi-snapshot-preview1", "winapi 0.3.9", ] [[package]] name = "tinyvec" -version = "0.3.3" +version = "0.3.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "53953d2d3a5ad81d9f844a32f14ebb121f50b650cd59d0ee2a07cf13c617efed" +checksum = "238ce071d267c5710f9d31451efec16c5ee22de34df17cc05e56cbc92e967117" [[package]] name = "tokio" @@ -3465,12 +3525,12 @@ dependencies = [ [[package]] name = "tokio-rustls" -version = "0.14.0" +version = "0.14.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "228139ddd4fea3fa345a29233009635235833e52807af7ea6448ead03890d6a9" +checksum = "e12831b255bcfa39dc0436b01e19fea231a37db570686c06ee72c423479f889a" dependencies = [ "futures-core", - "rustls 0.18.0", + "rustls 0.18.1", "tokio", "webpki", ] @@ -3541,9 +3601,9 @@ dependencies = [ [[package]] name = "tracing-core" -version = "0.1.14" +version = "0.1.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "db63662723c316b43ca36d833707cc93dff82a02ba3d7e354f342682cc8b3545" +checksum = "5bcf46c1f1f06aeea2d6b81f3c863d0930a596c86ad1920d4e5bad6dd1d7119a" dependencies = [ "lazy_static", ] @@ -3770,11 +3830,17 @@ version = "0.9.0+wasi-snapshot-preview1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cccddf32554fecc6acb585f82a32a72e28b48f8c4c1883ddfeeeaa96f7d8e519" +[[package]] +name = "wasi" +version = "0.10.0+wasi-snapshot-preview1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1a143597ca7c7793eff794def352d41792a93c481eb1042423ff7ff72ba2c31f" + [[package]] name = "wasm-bindgen" -version = "0.2.67" +version = "0.2.68" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f0563a9a4b071746dd5aedbc3a28c6fe9be4586fb3fbadb67c400d4f53c6b16c" +checksum = "1ac64ead5ea5f05873d7c12b545865ca2b8d28adfc50a49b84770a3a97265d42" dependencies = [ "cfg-if", "serde", @@ -3784,9 +3850,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-backend" -version = "0.2.67" +version = "0.2.68" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bc71e4c5efa60fb9e74160e89b93353bc24059999c0ae0fb03affc39770310b0" +checksum = "f22b422e2a757c35a73774860af8e112bff612ce6cb604224e8e47641a9e4f68" dependencies = [ "bumpalo", "lazy_static", @@ -3799,9 +3865,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-futures" -version = "0.4.17" +version = "0.4.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "95f8d235a77f880bcef268d379810ea6c0af2eacfa90b1ad5af731776e0c4699" +checksum = "b7866cab0aa01de1edf8b5d7936938a7e397ee50ce24119aef3e1eaa3b6171da" dependencies = [ "cfg-if", "js-sys", @@ -3811,9 +3877,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro" -version = "0.2.67" +version = "0.2.68" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "97c57cefa5fa80e2ba15641578b44d36e7a64279bc5ed43c6dbaf329457a2ed2" +checksum = "6b13312a745c08c469f0b292dd2fcd6411dba5f7160f593da6ef69b64e407038" dependencies = [ "quote", "wasm-bindgen-macro-support", @@ -3821,9 +3887,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.67" +version = "0.2.68" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "841a6d1c35c6f596ccea1f82504a192a60378f64b3bb0261904ad8f2f5657556" +checksum = "f249f06ef7ee334cc3b8ff031bfc11ec99d00f34d86da7498396dc1e3b1498fe" dependencies = [ "proc-macro2", "quote", @@ -3834,9 +3900,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-shared" -version = "0.2.67" +version = "0.2.68" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "93b162580e34310e5931c4b792560108b10fd14d64915d7fff8ff00180e70092" +checksum = "1d649a3145108d7d3fbcde896a468d1bd636791823c9921135218ad89be08307" [[package]] name = "wasmparser" @@ -3846,9 +3912,9 @@ checksum = "8b4eab1d9971d0803729cba3617b56eb04fcb4bd25361cb63880ed41a42f20d5" [[package]] name = "web-sys" -version = "0.3.44" +version = "0.3.45" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dda38f4e5ca63eda02c059d243aa25b5f35ab98451e518c51612cd0f1bd19a47" +checksum = "4bf6ef87ad7ae8008e15a355ce696bed26012b7caa21605188cfd8214ab51e2d" dependencies = [ "js-sys", "wasm-bindgen", diff --git a/Cargo.toml b/Cargo.toml index eaa1d3163d..74b1de61e5 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -3,5 +3,20 @@ members = [ "src/dfx", ] -[patch.crates-io] -ic-types = { git = "ssh://git@github.com/dfinity-lab/agent-rust.git", branch = "next", version = "0.1.1" } +[patch.crates-io.ic-agent] +version = "0.1.0" +git = "https://github.com/dfinity/agent-rs.git" +branch = "next" +rev = "191dca1c38cf7eebfb177f242063592223c87976" + +[patch.crates-io.ic-types] +version = "0.1.2" +git = "https://github.com/dfinity/agent-rs.git" +branch = "next" +rev = "191dca1c38cf7eebfb177f242063592223c87976" + +[patch.crates-io.ic-utils] +version = "0.1.0" +git = "https://github.com/dfinity/agent-rs.git" +branch = "next" +rev = "191dca1c38cf7eebfb177f242063592223c87976" diff --git a/dfx.nix b/dfx.nix index 2901302b4e..6cad2f7cff 100644 --- a/dfx.nix +++ b/dfx.nix @@ -26,6 +26,11 @@ let cargoTestCommands = _: [ ''cargo $cargo_options test $cargo_test_options --workspace'' ]; + override = attrs: { + preConfigure = (attrs.preConfigure or "") + '' + unset SDKROOT + ''; + }; }; # set DFX_ASSETS for the builds and shells @@ -85,6 +90,9 @@ let # Set environment variable for debug version. export DFX_TIMESTAMP_DEBUG_MODE_ONLY=$(date +%s) + + # the presence of this var breaks brotli-sys compilation + unset SDKROOT ''; }; }; diff --git a/src/dfx/Cargo.toml b/src/dfx/Cargo.toml index 2315760ccd..27b2865577 100644 --- a/src/dfx/Cargo.toml +++ b/src/dfx/Cargo.toml @@ -26,7 +26,7 @@ chrono = "0.4.9" clap = "2.33.0" console = "0.7.7" crossbeam = "0.7.3" -delay = "0.2.0" +delay = "0.3.0" dialoguer = "0.6.2" erased-serde = "0.3.10" flate2 = "1.0.11" @@ -68,16 +68,21 @@ wasmparser = "0.45.0" [dependencies.ic-agent] version = "0.1.0" -git = "ssh://git@github.com/dfinity-lab/agent-rust.git" +git = "https://github.com/dfinity/agent-rs.git" branch = "next" -rev = "9d611f08cb55923fc6ff5bf0136e8f4b848dd2cc" +rev = "191dca1c38cf7eebfb177f242063592223c87976" [dependencies.ic-types] -version = "0.1.1" -git = "ssh://git@github.com/dfinity-lab/agent-rust.git" +version = "0.1.2" +git = "https://github.com/dfinity/agent-rs.git" branch = "next" -rev = "9d611f08cb55923fc6ff5bf0136e8f4b848dd2cc" +rev = "191dca1c38cf7eebfb177f242063592223c87976" +[dependencies.ic-utils] +version = "0.1.0" +git = "https://github.com/dfinity/agent-rs.git" +branch = "next" +rev = "191dca1c38cf7eebfb177f242063592223c87976" [dev-dependencies] env_logger = "0.6" diff --git a/src/dfx/src/commands/canister/call.rs b/src/dfx/src/commands/canister/call.rs index 1298f14c0e..0bcc0995c4 100644 --- a/src/dfx/src/commands/canister/call.rs +++ b/src/dfx/src/commands/canister/call.rs @@ -133,8 +133,12 @@ pub fn exec(env: &dyn Environment, args: &ArgMatches<'_>) -> DfxResult { let timeout = expiry_duration(); if is_query { - let blob = - runtime.block_on(agent.query_raw(&canister_id, method_name, &arg_value, None))?; + let blob = runtime.block_on( + agent + .query(&canister_id, method_name) + .with_arg(&arg_value) + .call(), + )?; print_idl_blob(&blob, output_type, &method_type) .map_err(|e| DfxError::InvalidData(format!("Invalid IDL blob: {}", e)))?; } else if args.is_present("async") { diff --git a/src/dfx/src/commands/canister/delete.rs b/src/dfx/src/commands/canister/delete.rs index b63ee656b6..750f24a8a2 100644 --- a/src/dfx/src/commands/canister/delete.rs +++ b/src/dfx/src/commands/canister/delete.rs @@ -6,7 +6,9 @@ use crate::lib::waiter::waiter_with_timeout; use crate::util::expiry_duration; use clap::{App, Arg, ArgMatches, SubCommand}; -use ic_agent::{Agent, ManagementCanister}; +use ic_agent::Agent; +use ic_utils::call::AsyncCall; +use ic_utils::interfaces::ManagementCanister; use slog::info; use std::time::Duration; use tokio::runtime::Runtime; @@ -36,7 +38,7 @@ async fn delete_canister( canister_name: &str, timeout: Duration, ) -> DfxResult { - let mgr = ManagementCanister::new(agent); + let mgr = ManagementCanister::create(agent); let log = env.get_logger(); let mut canister_id_store = CanisterIdStore::for_env(env)?; let canister_id = canister_id_store.get(canister_name)?; @@ -47,9 +49,9 @@ async fn delete_canister( canister_id.to_text(), ); - mgr.delete_canister(waiter_with_timeout(timeout), &canister_id) - .await - .map_err(DfxError::from)?; + mgr.delete_canister(&canister_id) + .call_and_wait(waiter_with_timeout(timeout)) + .await?; canister_id_store.remove(canister_name)?; diff --git a/src/dfx/src/commands/canister/install.rs b/src/dfx/src/commands/canister/install.rs index db037701e4..f98dd492fe 100644 --- a/src/dfx/src/commands/canister/install.rs +++ b/src/dfx/src/commands/canister/install.rs @@ -8,8 +8,8 @@ use crate::util::{blob_from_arguments, expiry_duration, get_candid_init_type}; use clap::{App, Arg, ArgMatches, SubCommand}; use humanize_rs::bytes::{Bytes, Unit}; -use ic_agent::{ComputeAllocation, InstallMode, MemoryAllocation}; +use ic_utils::interfaces::management_canister::{ComputeAllocation, InstallMode, MemoryAllocation}; use std::convert::TryFrom; use std::str::FromStr; use tokio::runtime::Runtime; @@ -160,7 +160,7 @@ pub fn exec(env: &dyn Environment, args: &ArgMatches<'_>) -> DfxResult { &canister_info, &install_args, compute_allocation, - mode.clone(), + mode, memory_allocation, timeout, ))?; diff --git a/src/dfx/src/commands/canister/request_status.rs b/src/dfx/src/commands/canister/request_status.rs index bf47b55d35..b137a53cce 100644 --- a/src/dfx/src/commands/canister/request_status.rs +++ b/src/dfx/src/commands/canister/request_status.rs @@ -6,7 +6,8 @@ use crate::util::clap::validators; use crate::util::{expiry_duration, print_idl_blob}; use clap::{App, Arg, ArgMatches, SubCommand}; use delay::Waiter; -use ic_agent::{AgentError, Replied, RequestId, RequestStatusResponse}; +use ic_agent::agent::{Replied, RequestStatusResponse}; +use ic_agent::{AgentError, RequestId}; use std::str::FromStr; use tokio::runtime::Runtime; diff --git a/src/dfx/src/commands/canister/start.rs b/src/dfx/src/commands/canister/start.rs index bdda4b8642..76e6048c5e 100644 --- a/src/dfx/src/commands/canister/start.rs +++ b/src/dfx/src/commands/canister/start.rs @@ -6,7 +6,9 @@ use crate::lib::waiter::waiter_with_timeout; use crate::util::expiry_duration; use clap::{App, Arg, ArgMatches, SubCommand}; -use ic_agent::{Agent, ManagementCanister}; +use ic_agent::Agent; +use ic_utils::call::AsyncCall; +use ic_utils::interfaces::ManagementCanister; use slog::info; use std::time::Duration; use tokio::runtime::Runtime; @@ -36,7 +38,7 @@ async fn start_canister( canister_name: &str, timeout: Duration, ) -> DfxResult { - let mgr = ManagementCanister::new(agent); + let mgr = ManagementCanister::create(agent); let log = env.get_logger(); let canister_id_store = CanisterIdStore::for_env(env)?; let canister_id = canister_id_store.get(canister_name)?; @@ -48,7 +50,8 @@ async fn start_canister( canister_id.to_text(), ); - mgr.start_canister(waiter_with_timeout(timeout), &canister_id) + mgr.start_canister(&canister_id) + .call_and_wait(waiter_with_timeout(timeout)) .await .map_err(DfxError::from)?; diff --git a/src/dfx/src/commands/canister/status.rs b/src/dfx/src/commands/canister/status.rs index 536aa5bc86..129d680d8c 100644 --- a/src/dfx/src/commands/canister/status.rs +++ b/src/dfx/src/commands/canister/status.rs @@ -6,7 +6,9 @@ use crate::lib::waiter::waiter_with_timeout; use crate::util::expiry_duration; use clap::{App, Arg, ArgMatches, SubCommand}; -use ic_agent::{Agent, ManagementCanister}; +use ic_agent::Agent; +use ic_utils::call::AsyncCall; +use ic_utils::interfaces::ManagementCanister; use slog::info; use std::time::Duration; use tokio::runtime::Runtime; @@ -36,15 +38,15 @@ async fn canister_status( canister_name: &str, timeout: Duration, ) -> DfxResult { - let mgr = ManagementCanister::new(agent); + let mgr = ManagementCanister::create(agent); let log = env.get_logger(); let canister_id_store = CanisterIdStore::for_env(env)?; let canister_id = canister_id_store.get(canister_name)?; - let status = mgr - .canister_status(waiter_with_timeout(timeout), &canister_id) - .await - .map_err(DfxError::from)?; + let (status,) = mgr + .canister_status(&canister_id) + .call_and_wait(waiter_with_timeout(timeout)) + .await?; info!(log, "Canister {}'s status is {}.", canister_name, status); Ok(()) diff --git a/src/dfx/src/commands/canister/stop.rs b/src/dfx/src/commands/canister/stop.rs index 69208cb876..46b8d677d6 100644 --- a/src/dfx/src/commands/canister/stop.rs +++ b/src/dfx/src/commands/canister/stop.rs @@ -6,7 +6,9 @@ use crate::lib::waiter::waiter_with_timeout; use crate::util::expiry_duration; use clap::{App, Arg, ArgMatches, SubCommand}; -use ic_agent::{Agent, ManagementCanister}; +use ic_agent::Agent; +use ic_utils::call::AsyncCall; +use ic_utils::interfaces::ManagementCanister; use slog::info; use std::time::Duration; use tokio::runtime::Runtime; @@ -36,7 +38,7 @@ async fn stop_canister( canister_name: &str, timeout: Duration, ) -> DfxResult { - let mgr = ManagementCanister::new(agent); + let mgr = ManagementCanister::create(agent); let log = env.get_logger(); let canister_id_store = CanisterIdStore::for_env(env)?; let canister_id = canister_id_store.get(canister_name)?; @@ -48,9 +50,9 @@ async fn stop_canister( canister_id.to_text(), ); - mgr.stop_canister(waiter_with_timeout(timeout), &canister_id) - .await - .map_err(DfxError::from)?; + mgr.stop_canister(&canister_id) + .call_and_wait(waiter_with_timeout(timeout)) + .await?; Ok(()) } diff --git a/src/dfx/src/commands/identity/principal.rs b/src/dfx/src/commands/identity/principal.rs index a8a7d429a3..80dd3fed09 100644 --- a/src/dfx/src/commands/identity/principal.rs +++ b/src/dfx/src/commands/identity/principal.rs @@ -3,6 +3,7 @@ use crate::lib::error::DfxResult; use crate::lib::identity::identity_manager::IdentityManager; use crate::lib::message::UserMessage; use clap::{App, ArgMatches, SubCommand}; +use ic_agent::Identity; pub fn construct() -> App<'static, 'static> { SubCommand::with_name("get-principal").about(UserMessage::GetPrincipalId.to_str()) @@ -10,7 +11,7 @@ pub fn construct() -> App<'static, 'static> { pub fn exec(env: &dyn Environment, _args: &ArgMatches<'_>) -> DfxResult { let identity = IdentityManager::new(env)?.instantiate_selected_identity()?; - let principal_id = identity.sender()?; + let principal_id = identity.as_ref().sender()?; println!("{}", principal_id.to_text()); Ok(()) } diff --git a/src/dfx/src/commands/start.rs b/src/dfx/src/commands/start.rs index 997942ee9d..d5ad3a6091 100644 --- a/src/dfx/src/commands/start.rs +++ b/src/dfx/src/commands/start.rs @@ -12,7 +12,7 @@ use crossbeam::channel::{Receiver, Sender}; use crossbeam::unbounded; use delay::{Delay, Waiter}; use futures::executor::block_on; -use ic_agent::{Agent, AgentConfig}; +use ic_agent::Agent; use indicatif::{ProgressBar, ProgressDrawTarget}; use std::fs; use std::io::{Error, ErrorKind}; @@ -51,10 +51,7 @@ pub fn construct() -> App<'static, 'static> { fn ping_and_wait(frontend_url: &str) -> DfxResult { let mut runtime = Runtime::new().expect("Unable to create a runtime"); - let agent = Agent::new(AgentConfig { - url: frontend_url.to_string(), - ..AgentConfig::default() - })?; + let agent = Agent::builder().with_url(frontend_url).build()?; // wait for frontend to come up let mut waiter = Delay::builder() diff --git a/src/dfx/src/lib/environment.rs b/src/dfx/src/lib/environment.rs index 456b390973..5a80d64bd6 100644 --- a/src/dfx/src/lib/environment.rs +++ b/src/dfx/src/lib/environment.rs @@ -6,7 +6,7 @@ use crate::lib::identity::identity_manager::IdentityManager; use crate::lib::network::network_descriptor::NetworkDescriptor; use crate::lib::progress_bar::ProgressBar; -use ic_agent::{Agent, AgentConfig, Identity}; +use ic_agent::{Agent, Identity}; use semver::Version; use slog::{Logger, Record}; use std::collections::BTreeMap; @@ -409,22 +409,19 @@ impl ic_agent::PasswordManager for AgentClient { } } -fn create_agent( - logger: Logger, - url: &str, - identity: Box, - timeout: Duration, -) -> Option { +fn create_agent(logger: Logger, url: &str, identity: Box, timeout: Duration) -> Option +where + I: Identity + Send + Sync + 'static, +{ AgentClient::new(logger, url.to_string()) .ok() .and_then(|executor| { - Agent::new(AgentConfig { - url: url.to_string(), - identity, - password_manager: Some(Box::new(executor)), - ingress_expiry_duration: Some(timeout), - ..AgentConfig::default() - }) - .ok() + Agent::builder() + .with_url(url) + .with_boxed_identity(identity) + .with_password_manager(executor) + .with_ingress_expiry(Some(timeout)) + .build() + .ok() }) } diff --git a/src/dfx/src/lib/error/identity.rs b/src/dfx/src/lib/error/identity.rs index 25b8527c14..195f7ed0fb 100644 --- a/src/dfx/src/lib/error/identity.rs +++ b/src/dfx/src/lib/error/identity.rs @@ -30,5 +30,5 @@ pub enum IdentityErrorKind { CannotFindUserHomeDirectory(), #[error("An error occurred while reading {1}: {0}")] - AgentPemError(ic_agent::PemError, PathBuf), + AgentPemError(ic_agent::identity::PemError, PathBuf), } diff --git a/src/dfx/src/lib/identity/identity_manager.rs b/src/dfx/src/lib/identity/identity_manager.rs index 91fa3d9b35..8adcd6dc61 100644 --- a/src/dfx/src/lib/identity/identity_manager.rs +++ b/src/dfx/src/lib/identity/identity_manager.rs @@ -1,7 +1,8 @@ use crate::lib::config::get_config_dfx_dir_path; use crate::lib::environment::Environment; use crate::lib::error::{DfxError, DfxResult, IdentityErrorKind}; -use ic_agent::{BasicIdentity, Identity}; +use ic_agent::identity::BasicIdentity; +use ic_agent::Identity; use pem::{encode, Pem}; use ring::{rand, signature}; use serde::{Deserialize, Serialize}; @@ -63,14 +64,11 @@ impl IdentityManager { } /// Create an Identity instance for use with an Agent - pub fn instantiate_selected_identity(&self) -> DfxResult> { + pub fn instantiate_selected_identity(&self) -> DfxResult> { let pem_path = self.get_selected_identity_pem_path(); - let basic = BasicIdentity::from_pem_file(&pem_path).map_err(|e| { - DfxError::IdentityError(IdentityErrorKind::AgentPemError(e, pem_path.clone())) - })?; - - let b: Box = Box::new(basic); - Ok(b) + Ok(Box::new(BasicIdentity::from_pem_file(&pem_path).map_err( + |e| DfxError::IdentityError(IdentityErrorKind::AgentPemError(e, pem_path.clone())), + )?)) } /// Create a new identity (name -> generated key) diff --git a/src/dfx/src/lib/operations/canister/create_canister.rs b/src/dfx/src/lib/operations/canister/create_canister.rs index f4dd3a430b..f1032d4e95 100644 --- a/src/dfx/src/lib/operations/canister/create_canister.rs +++ b/src/dfx/src/lib/operations/canister/create_canister.rs @@ -4,7 +4,8 @@ use crate::lib::models::canister_id_store::CanisterIdStore; use crate::lib::provider::get_network_context; use crate::lib::waiter::waiter_with_timeout; -use ic_agent::ManagementCanister; +use ic_utils::call::AsyncCall; +use ic_utils::interfaces::ManagementCanister; use slog::info; use std::format; use std::time::Duration; @@ -39,13 +40,16 @@ pub fn create_canister(env: &dyn Environment, canister_name: &str, timeout: Dura Ok(()) } None => { - let mgr = ManagementCanister::new( + let mgr = ManagementCanister::create( env.get_agent() .ok_or(DfxError::CommandMustBeRunInAProject)?, ); let mut runtime = Runtime::new().expect("Unable to create a runtime"); - let cid = runtime.block_on(mgr.create_canister(waiter_with_timeout(timeout)))?; + let (cid,) = runtime.block_on( + mgr.create_canister() + .call_and_wait(waiter_with_timeout(timeout)), + )?; let canister_id = cid.to_text(); info!( log, diff --git a/src/dfx/src/lib/operations/canister/deploy_canisters.rs b/src/dfx/src/lib/operations/canister/deploy_canisters.rs index 656ae78455..0f32db39b2 100644 --- a/src/dfx/src/lib/operations/canister/deploy_canisters.rs +++ b/src/dfx/src/lib/operations/canister/deploy_canisters.rs @@ -7,7 +7,8 @@ use crate::lib::models::canister::CanisterPool; use crate::lib::models::canister_id_store::CanisterIdStore; use crate::lib::operations::canister::create_canister; use crate::lib::operations::canister::install_canister; -use ic_agent::{AgentError, InstallMode}; +use ic_agent::AgentError; +use ic_utils::interfaces::management_canister::InstallMode; use slog::{info, warn}; use std::time::Duration; use tokio::runtime::Runtime; diff --git a/src/dfx/src/lib/operations/canister/install_canister.rs b/src/dfx/src/lib/operations/canister/install_canister.rs index ad6965dd8c..3ad3637691 100644 --- a/src/dfx/src/lib/operations/canister/install_canister.rs +++ b/src/dfx/src/lib/operations/canister/install_canister.rs @@ -4,9 +4,10 @@ use crate::lib::error::{DfxError, DfxResult}; use crate::lib::installers::assets::post_install_store_assets; use crate::lib::waiter::waiter_with_timeout; -use ic_agent::{ - Agent, CanisterAttributes, ComputeAllocation, InstallMode, ManagementCanister, MemoryAllocation, -}; +use ic_agent::Agent; +use ic_utils::call::AsyncCall; +use ic_utils::interfaces::management_canister::*; +use ic_utils::interfaces::ManagementCanister; use slog::info; use std::time::Duration; @@ -21,7 +22,7 @@ pub async fn install_canister( memory_allocation: Option, timeout: Duration, ) -> DfxResult { - let mgr = ManagementCanister::new(agent); + let mgr = ManagementCanister::create(agent); let log = env.get_logger(); let canister_id = canister_info.get_canister_id().map_err(|_| { DfxError::CannotFindBuildOutputForCanister(canister_info.get_name().to_owned()) @@ -39,19 +40,26 @@ pub async fn install_canister( .expect("Cannot get WASM output path."); let wasm = std::fs::read(wasm_path)?; - mgr.install_code( - waiter_with_timeout(timeout), - &canister_id, - mode, - &wasm, - args, - &CanisterAttributes { - compute_allocation, - memory_allocation, - }, - ) - .await - .map_err(DfxError::from)?; + let install_builder = mgr + .install_code(&canister_id, &wasm) + .with_raw_arg(args.to_vec()) + .with_mode(mode); + + let install_builder = if let Some(ca) = compute_allocation { + install_builder.with_compute_allocation(ca) + } else { + install_builder + }; + let install_builder = if let Some(ma) = memory_allocation { + install_builder.with_memory_allocation(ma) + } else { + install_builder + }; + + install_builder + .build()? + .call_and_wait(waiter_with_timeout(timeout)) + .await?; if canister_info.get_type() == "assets" { post_install_store_assets(&canister_info, &agent, timeout).await?;