From b3118a7a68baa12bba27f0b5bc0aa550e46f721a Mon Sep 17 00:00:00 2001 From: Pierre Mavro Date: Mon, 7 Jun 2021 21:24:53 +0200 Subject: [PATCH] feat: connected AWS helm level 1 to 3 --- Cargo.lock | 1183 ++++++++--------- Cargo.toml | 22 +- lib/aws/bootstrap/chart_values/pleco.yaml | 20 + lib/aws/bootstrap/eks-master-cluster.j2.tf | 2 +- .../bootstrap/helm-alertmanager-discord.tf | 50 - .../bootstrap/helm-aws-iam-eks-user-mapper.tf | 61 +- lib/aws/bootstrap/helm-aws-limits-exporter.tf | 65 - .../bootstrap/helm-aws-node-term-handler.tf | 63 - lib/aws/bootstrap/helm-aws-vpc-cni.j2.tf | 119 -- lib/aws/bootstrap/helm-calico.tf | 18 - lib/aws/bootstrap/helm-cert-manager.j2.tf | 158 --- .../bootstrap/helm-cluster-autoscaler.j2.tf | 106 +- lib/aws/bootstrap/helm-coredns-config.j2.tf | 61 - lib/aws/bootstrap/helm-external-dns.tf | 40 - lib/aws/bootstrap/helm-grafana.j2.tf | 59 +- lib/aws/bootstrap/helm-loki.j2.tf | 74 +- lib/aws/bootstrap/helm-metrics-server.tf | 38 - lib/aws/bootstrap/helm-nginx-ingress.tf | 67 - .../bootstrap/helm-prometheus-adapter.j2.tf | 60 - .../bootstrap/helm-prometheus-operator.j2.tf | 131 -- lib/aws/bootstrap/helm-promtail.j2.tf | 50 - lib/aws/bootstrap/helm-q-storage-class.tf | 17 - lib/aws/bootstrap/helm-qovery-agent.tf | 110 -- lib/aws/bootstrap/helm-qovery-engine.j2.tf | 131 -- lib/aws/bootstrap/helper.j2.sh | 74 +- lib/aws/bootstrap/qovery-tf-config.j2.tf | 26 +- lib/aws/bootstrap/tf-default-vars.j2.tf | 11 +- .../qovery-agent/templates/deployment.yaml | 1 + .../aws/kubernetes/helm_charts.rs | 554 +++++--- src/cloud_provider/aws/kubernetes/mod.rs | 92 +- src/cloud_provider/helm.rs | 103 +- src/cloud_provider/kubernetes.rs | 3 + src/cloud_provider/mod.rs | 1 + src/cloud_provider/qovery.rs | 56 + src/cmd/helm.rs | 136 +- src/cmd/kubectl.rs | 1 - src/cmd/structs.rs | 24 +- src/dns_provider/cloudflare.rs | 4 + src/dns_provider/mod.rs | 4 + test_utilities/Cargo.lock | 159 +-- test_utilities/src/aws.rs | 15 +- test_utilities/src/utilities.rs | 8 +- tests/aws/aws_environment.rs | 1 - tests/aws/aws_kubernetes.rs | 8 +- 44 files changed, 1398 insertions(+), 2588 deletions(-) create mode 100644 lib/aws/bootstrap/chart_values/pleco.yaml delete mode 100644 lib/aws/bootstrap/helm-alertmanager-discord.tf delete mode 100644 lib/aws/bootstrap/helm-aws-limits-exporter.tf delete mode 100644 lib/aws/bootstrap/helm-aws-node-term-handler.tf delete mode 100644 lib/aws/bootstrap/helm-aws-vpc-cni.j2.tf delete mode 100644 lib/aws/bootstrap/helm-calico.tf delete mode 100644 lib/aws/bootstrap/helm-cert-manager.j2.tf delete mode 100644 lib/aws/bootstrap/helm-coredns-config.j2.tf delete mode 100644 lib/aws/bootstrap/helm-external-dns.tf delete mode 100644 lib/aws/bootstrap/helm-metrics-server.tf delete mode 100644 lib/aws/bootstrap/helm-prometheus-adapter.j2.tf delete mode 100644 lib/aws/bootstrap/helm-prometheus-operator.j2.tf delete mode 100644 lib/aws/bootstrap/helm-promtail.j2.tf delete mode 100644 lib/aws/bootstrap/helm-q-storage-class.tf delete mode 100644 lib/aws/bootstrap/helm-qovery-agent.tf delete mode 100644 lib/aws/bootstrap/helm-qovery-engine.j2.tf create mode 100644 src/cloud_provider/qovery.rs diff --git a/Cargo.lock b/Cargo.lock index 1bcebc00..a4734e23 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2,24 +2,24 @@ # It is not intended for manual editing. [[package]] name = "addr2line" -version = "0.15.2" +version = "0.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e7a2e47a1fbe209ee101dd6d61285226744c6c8d3c21c8dc878ba6cb9f467f3a" +checksum = "1b6a2d3371669ab3ca9797670853d61402b03d0b4b9ebf33d677dfa720203072" dependencies = [ "gimli", ] [[package]] name = "adler" -version = "1.0.2" +version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe" +checksum = "ee2a4ec343196209d6594e19543ae87a39f96d5534d7174822a3ad825dd6ed7e" [[package]] name = "aho-corasick" -version = "0.7.18" +version = "0.7.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e37cfd5e7657ada45f742d6e99ca5788580b5c529dc78faf11ece6dc702656f" +checksum = "b476ce7103678b0c6d3d395dbbae31d48ff910bd28be979ba5d48c6351131d0d" dependencies = [ "memchr", ] @@ -34,14 +34,20 @@ dependencies = [ ] [[package]] -name = "async-trait" -version = "0.1.50" +name = "arc-swap" +version = "0.4.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b98e84bbb4cbcdd97da190ba0c58a1bb0de2c1fdf67d159e192ed766aeca722" +checksum = "4d25d88fd6b8041580a654f9d0c581a047baee2b3efee13275f2fc392fc75034" + +[[package]] +name = "async-trait" +version = "0.1.41" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b246867b8b3b6ae56035f1eb1ed557c1d8eae97f0d53696138a50fa0e3a3b8c0" dependencies = [ - "proc-macro2 1.0.27", - "quote 1.0.9", - "syn 1.0.72", + "proc-macro2 1.0.24", + "quote 1.0.7", + "syn 1.0.48", ] [[package]] @@ -58,12 +64,11 @@ checksum = "cdb031dd78e28731d87d56cc8ffef4a8f36ca26c38fe2de700543e627f8a464a" [[package]] name = "backtrace" -version = "0.3.60" +version = "0.3.53" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b7815ea54e4d821e791162e078acbebfd6d8c8939cd559c9335dceb1c8ca7282" +checksum = "707b586e0e2f247cbde68cdd2c3ce69ea7b7be43e1c5b426e37c9319c4b9838e" dependencies = [ "addr2line", - "cc", "cfg-if 1.0.0", "libc", "miniz_oxide", @@ -73,9 +78,9 @@ dependencies = [ [[package]] name = "base-x" -version = "0.2.8" +version = "0.2.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a4521f3e3d031370679b3b140beb36dfe4801b09ac77e30c61941f97df3ef28b" +checksum = "1b20b618342cf9891c292c4f5ac2cde7287cc5c87e87e9c769d617793607dec1" [[package]] name = "base64" @@ -113,7 +118,7 @@ dependencies = [ "block-padding", "byte-tools", "byteorder", - "generic-array 0.12.4", + "generic-array 0.12.3", ] [[package]] @@ -136,18 +141,18 @@ dependencies = [ [[package]] name = "bstr" -version = "0.2.16" +version = "0.2.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "90682c8d613ad3373e66de8c6411e0ae2ab2571e879d2efbf73558cc66f21279" +checksum = "473fc6b38233f9af7baa94fb5852dca389e3d95b8e21c8e3719301462c5d9faf" dependencies = [ "memchr", ] [[package]] name = "bumpalo" -version = "3.7.0" +version = "3.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c59e7af012c713f529e7a3ee57ce9b31ddd858d4b512923602f74608b009631" +checksum = "2e8c087f005730276d1096a652e92a8bacee2e2472bcc9715a74d2bec38b5820" [[package]] name = "byte-tools" @@ -157,9 +162,9 @@ checksum = "e3b5ca7a04898ad4bcd41c90c5285445ff5b791899bb1b0abdd2a2aa791211d7" [[package]] name = "byteorder" -version = "1.4.3" +version = "1.3.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "14c189c53d098945499cdfa7ecc63567cf3886b3332b312a5b4585d8d3a6a610" +checksum = "08c48aae112d48ed9f069b33538ea9e3e90aa263cfa3d1c24309612b1f7472de" [[package]] name = "bytes" @@ -186,9 +191,9 @@ checksum = "b700ce4376041dcd0a327fd0097c41095743c4c8af8887265942faf1100bd040" [[package]] name = "cc" -version = "1.0.68" +version = "1.0.61" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4a72c244c1ff497a746a7e1fb3d14bd08420ecda70c8f25c7112f2781652d787" +checksum = "ed67cbde08356238e75fc4656be4749481eeffb09e19f320a25237d5221c985d" dependencies = [ "jobserver", ] @@ -240,9 +245,9 @@ dependencies = [ [[package]] name = "cmd_lib" -version = "1.0.13" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "666f45b62f64689a336f2a321372522cbbbb773906bb59bdfd73de8e2ecbe8fd" +checksum = "c7114bcaf989b09f9fb057b7d7c81491bc1558e8a67bd49bf7f682318d8a6501" dependencies = [ "cmd_lib_macros", "faccess", @@ -253,21 +258,21 @@ dependencies = [ [[package]] name = "cmd_lib_macros" -version = "1.0.13" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "57c5c8e82ba6eb3a9692a201a463bb3f1d043271483d45c6df700d10fe3a453d" +checksum = "356fd654e9a433e730a826d4e01ea2414ab122ca8a5374eadf6c43a6090f8dd3" dependencies = [ "proc-macro-error", - "proc-macro2 1.0.27", - "quote 1.0.9", - "syn 1.0.72", + "proc-macro2 1.0.24", + "quote 1.0.7", + "syn 1.0.48", ] [[package]] name = "const_fn" -version = "0.4.8" +version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f92cfa0fd5690b3cf8c1ef2cabbd9b7ef22fa53cf5e1f92b05103f6d5d1cf6e7" +checksum = "ce90df4c658c62f12d78f7508cf92f9173e5184a539c10bfe54a3107b3ffd0f2" [[package]] name = "cookie" @@ -299,14 +304,20 @@ dependencies = [ [[package]] name = "core-foundation" -version = "0.9.1" +version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0a89e2ae426ea83155dccf10c0fa6b1463ef6d5fcb44cee0b224a408fa640a62" +checksum = "57d24c7a13c43e870e37c1556b74555437870a04514f7685f5b354e090567171" dependencies = [ - "core-foundation-sys", + "core-foundation-sys 0.7.0", "libc", ] +[[package]] +name = "core-foundation-sys" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b3a71ab494c0b5b860bdc8407ae08978052417070c2ced38573a9157ad75b8ac" + [[package]] name = "core-foundation-sys" version = "0.8.2" @@ -314,13 +325,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ea221b5284a47e40033bf9b66f35f984ec0ea2931eb03505246cd27a963f981b" [[package]] -name = "cpufeatures" -version = "0.1.4" +name = "cpuid-bool" +version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ed00c67cb5d0a7d64a44f6ad2668db7e7530311dd53ea79bcd4fb022c64911c8" -dependencies = [ - "libc", -] +checksum = "8aebca1129a03dc6dc2b127edd729435bbc4a37e1d5f4d7513165089ceb02634" [[package]] name = "crc32fast" @@ -333,12 +341,12 @@ dependencies = [ [[package]] name = "crossbeam-channel" -version = "0.5.1" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "06ed27e177f16d65f0f0c22a213e17c696ace5dd64b14258b52f9417ccb52db4" +checksum = "dca26ee1f8d361640700bde38b2c37d8c22b3ce2d360e1fc1c74ea4b0aa7d775" dependencies = [ "cfg-if 1.0.0", - "crossbeam-utils 0.8.5", + "crossbeam-utils 0.8.2", ] [[package]] @@ -359,8 +367,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "94af6efb46fef72616855b036a624cf27ba656ffc9be1b9a3c931cfc7749a9a9" dependencies = [ "cfg-if 1.0.0", - "crossbeam-epoch 0.9.5", - "crossbeam-utils 0.8.5", + "crossbeam-epoch 0.9.2", + "crossbeam-utils 0.8.2", ] [[package]] @@ -380,14 +388,15 @@ dependencies = [ [[package]] name = "crossbeam-epoch" -version = "0.9.5" +version = "0.9.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4ec02e091aa634e2c3ada4a392989e7c3116673ef0ac5b72232439094d73b7fd" +checksum = "d60ab4a8dba064f2fbb5aa270c28da5cf4bbd0e72dae1140a6b0353a779dbe00" dependencies = [ "cfg-if 1.0.0", - "crossbeam-utils 0.8.5", + "crossbeam-utils 0.8.2", "lazy_static", - "memoffset 0.6.4", + "loom 0.4.0", + "memoffset 0.6.1", "scopeguard", ] @@ -415,12 +424,14 @@ dependencies = [ [[package]] name = "crossbeam-utils" -version = "0.8.5" +version = "0.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d82cfc11ce7f2c3faef78d8a684447b40d503d9681acebed6cb728d45940c4db" +checksum = "bae8f328835f8f5a6ceb6a7842a7f2d0c03692adb5c889347235d59194731fe3" dependencies = [ + "autocfg 1.0.1", "cfg-if 1.0.0", "lazy_static", + "loom 0.4.0", ] [[package]] @@ -435,24 +446,24 @@ dependencies = [ [[package]] name = "curl" -version = "0.4.38" +version = "0.4.34" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "003cb79c1c6d1c93344c7e1201bb51c2148f24ec2bd9c253709d6b2efb796515" +checksum = "e268162af1a5fe89917ae25ba3b0a77c8da752bdc58e7dbb4f15b91fbd33756e" dependencies = [ "curl-sys", "libc", "openssl-probe", "openssl-sys", "schannel", - "socket2 0.4.0", + "socket2 0.3.15", "winapi 0.3.9", ] [[package]] name = "curl-sys" -version = "0.4.44+curl-7.77.0" +version = "0.4.38+curl-7.73.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4b6d85e9322b193f117c966e79c2d6929ec08c02f339f950044aba12e20bbaf1" +checksum = "498ecfb4f59997fd40023d62a9f1e506e768b2baeb59a1d311eb9751cdcd7e3f" dependencies = [ "cc", "libc", @@ -463,12 +474,6 @@ dependencies = [ "winapi 0.3.9", ] -[[package]] -name = "data-encoding" -version = "2.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3ee2393c4a91429dffb4bedf19f4d6abf27d8a732c8ce4980305d782e5426d57" - [[package]] name = "deunicode" version = "0.4.3" @@ -481,7 +486,7 @@ version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f3d0c8c8752312f9713efd397ff63acb9f85585afbf179282e720e7704954dd5" dependencies = [ - "generic-array 0.12.4", + "generic-array 0.12.3", ] [[package]] @@ -567,9 +572,9 @@ checksum = "fea41bba32d969b513997752735605054bc0dfa92b4c56bf1189f2e174be7a10" [[package]] name = "dtoa" -version = "0.4.8" +version = "0.4.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "56899898ce76aaf4a0f24d914c97ea6ed976d42fec6ad33fcbb0a1103e07b2b0" +checksum = "134951f4028bdadb9b84baf4232681efbf277da25144b9b0ad65df75946c422b" [[package]] name = "either" @@ -579,11 +584,11 @@ checksum = "e78d4f1cc4ae33bbfc157ed5d5a5ef3bc29227303d595861deb238fcec4e9457" [[package]] name = "encoding_rs" -version = "0.8.28" +version = "0.8.24" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "80df024fbc5ac80f87dfef0d9f5209a252f2a497f7f42944cff24d8253cac065" +checksum = "a51b8cf747471cb9499b6d59e59b0444f4c90eba8968c4e44874e92b5b64ace2" dependencies = [ - "cfg-if 1.0.0", + "cfg-if 0.1.10", ] [[package]] @@ -593,9 +598,18 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7c5f0096a91d210159eceb2ff5e1c4da18388a170e1e3ce948aac9c8fdbbf595" dependencies = [ "heck", - "proc-macro2 1.0.27", - "quote 1.0.9", - "syn 1.0.72", + "proc-macro2 1.0.24", + "quote 1.0.7", + "syn 1.0.48", +] + +[[package]] +name = "error-chain" +version = "0.12.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2d2f06b9cac1506ece98fe3231e3cc9c4410ec3d5b1f24ae1c8946f0742cdefc" +dependencies = [ + "version_check", ] [[package]] @@ -625,9 +639,9 @@ version = "0.1.8" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "aa4da3c766cd7a0db8242e326e9e4e081edd567072893ed320008189715366a4" dependencies = [ - "proc-macro2 1.0.27", - "quote 1.0.9", - "syn 1.0.72", + "proc-macro2 1.0.24", + "quote 1.0.7", + "syn 1.0.48", "synstructure", ] @@ -639,13 +653,13 @@ checksum = "e88a8acf291dafb59c2d96e8f59828f3838bb1a70398823ade51a84de6a6deed" [[package]] name = "filetime" -version = "0.2.14" +version = "0.2.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1d34cfa13a63ae058bfa601fe9e313bbdb3746427c1459185464ce0fcf62e1e8" +checksum = "3ed85775dcc68644b5c950ac06a2b23768d3bc9390464151aaf27136998dcf9e" dependencies = [ - "cfg-if 1.0.0", + "cfg-if 0.1.10", "libc", - "redox_syscall 0.2.8", + "redox_syscall 0.1.57", "winapi 0.3.9", ] @@ -716,15 +730,15 @@ checksum = "3dcaa9ae7725d12cdb85b3ad99a434db70b468c09ded17e012d86b5c1010f7a7" [[package]] name = "futures" -version = "0.1.31" +version = "0.1.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3a471a38ef8ed83cd6e40aa59c1ffe17db6855c18e3604d9c4ed8c08ebc28678" +checksum = "4c7e4c2612746b0df8fed4ce0c69156021b704c9aefa360311c04e6e9e002eed" [[package]] name = "futures" -version = "0.3.15" +version = "0.3.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0e7e43a803dae2fa37c1f6a8fe121e1f7bf9548b4dfc0522a42f34145dadfc27" +checksum = "95314d38584ffbfda215621d723e0a3906f032e03ae5551e650058dac83d4797" dependencies = [ "futures-channel", "futures-core", @@ -737,9 +751,9 @@ dependencies = [ [[package]] name = "futures-channel" -version = "0.3.15" +version = "0.3.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e682a68b29a882df0545c143dc3646daefe80ba479bcdede94d5a703de2871e2" +checksum = "0448174b01148032eed37ac4aed28963aaaa8cfa93569a08e5b479bbc6c2c151" dependencies = [ "futures-core", "futures-sink", @@ -747,9 +761,9 @@ dependencies = [ [[package]] name = "futures-core" -version = "0.3.15" +version = "0.3.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0402f765d8a89a26043b889b26ce3c4679d268fa6bb22cd7c6aad98340e179d1" +checksum = "18eaa56102984bed2c88ea39026cff3ce3b4c7f508ca970cedf2450ea10d4e46" [[package]] name = "futures-cpupool" @@ -757,15 +771,15 @@ version = "0.1.8" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ab90cde24b3319636588d0c35fe03b1333857621051837ed769faefb4c2162e4" dependencies = [ - "futures 0.1.31", + "futures 0.1.30", "num_cpus", ] [[package]] name = "futures-executor" -version = "0.3.15" +version = "0.3.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "badaa6a909fac9e7236d0620a2f57f7664640c56575b71a7552fbd68deafab79" +checksum = "f5f8e0c9258abaea85e78ebdda17ef9666d390e987f006be6080dfe354b708cb" dependencies = [ "futures-core", "futures-task", @@ -774,42 +788,43 @@ dependencies = [ [[package]] name = "futures-io" -version = "0.3.15" +version = "0.3.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "acc499defb3b348f8d8f3f66415835a9131856ff7714bf10dadfc4ec4bdb29a1" +checksum = "6e1798854a4727ff944a7b12aa999f58ce7aa81db80d2dfaaf2ba06f065ddd2b" [[package]] name = "futures-macro" -version = "0.3.15" +version = "0.3.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a4c40298486cdf52cc00cd6d6987892ba502c7656a16a4192a9992b1ccedd121" +checksum = "e36fccf3fc58563b4a14d265027c627c3b665d7fed489427e88e7cc929559efe" dependencies = [ - "autocfg 1.0.1", "proc-macro-hack", - "proc-macro2 1.0.27", - "quote 1.0.9", - "syn 1.0.72", + "proc-macro2 1.0.24", + "quote 1.0.7", + "syn 1.0.48", ] [[package]] name = "futures-sink" -version = "0.3.15" +version = "0.3.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a57bead0ceff0d6dde8f465ecd96c9338121bb7717d3e7b108059531870c4282" +checksum = "0e3ca3f17d6e8804ae5d3df7a7d35b2b3a6fe89dac84b31872720fc3060a0b11" [[package]] name = "futures-task" -version = "0.3.15" +version = "0.3.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8a16bef9fc1a4dddb5bee51c989e3fbba26569cbb0e31f5b303c184e3dd33dae" +checksum = "96d502af37186c4fef99453df03e374683f8a1eec9dcc1e66b3b82dc8278ce3c" +dependencies = [ + "once_cell", +] [[package]] name = "futures-util" -version = "0.3.15" +version = "0.3.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "feb5c238d27e2bf94ffdfd27b2c29e3df4a68c4193bb6427384259e2bf191967" +checksum = "abcb44342f62e6f3e8ac427b8aa815f724fd705dfad060b18ac7866c15bb8e34" dependencies = [ - "autocfg 1.0.1", "futures-channel", "futures-core", "futures-io", @@ -817,7 +832,7 @@ dependencies = [ "futures-sink", "futures-task", "memchr", - "pin-project-lite 0.2.6", + "pin-project 1.0.1", "pin-utils", "proc-macro-hack", "proc-macro-nested", @@ -831,10 +846,23 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8f5f3913fa0bfe7ee1fd8248b6b9f42a5af4b9d65ec2dd2c3c26132b950ecfc2" [[package]] -name = "generic-array" -version = "0.12.4" +name = "generator" +version = "0.6.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ffdf9f34f1447443d37393cc6c2b8313aebddcd96906caf34e54c68d8e57d7bd" +checksum = "8cdc09201b2e8ca1b19290cf7e65de2246b8e91fb6874279722189c4de7b94dc" +dependencies = [ + "cc", + "libc", + "log", + "rustc_version", + "winapi 0.3.9", +] + +[[package]] +name = "generic-array" +version = "0.12.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c68f0274ae0e023facc3c97b2e00f076be70e254bc851d972503b328db79b2ec" dependencies = [ "typenum", ] @@ -861,20 +889,20 @@ dependencies = [ [[package]] name = "getrandom" -version = "0.1.16" +version = "0.1.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8fc3cb4d91f53b50155bdcfd23f6a4c39ae1969c2ae85982b135750cccaf5fce" +checksum = "fc587bc0ec293155d5bfa6b9891ec18a1e330c234f896ea47fbada4cadbe47e6" dependencies = [ - "cfg-if 1.0.0", + "cfg-if 0.1.10", "libc", "wasi 0.9.0+wasi-snapshot-preview1", ] [[package]] name = "getrandom" -version = "0.2.3" +version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7fcd999463524c52659517fe2cea98493cfe485d10565e7b0fb07dbba7ad2753" +checksum = "c9495705279e7140bf035dde1f6e750c162df8b625267cd52cc44e0b156732c8" dependencies = [ "cfg-if 1.0.0", "libc", @@ -894,9 +922,9 @@ dependencies = [ [[package]] name = "gimli" -version = "0.24.0" +version = "0.22.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0e4075386626662786ddb0ec9081e7c7eeb1ba31951f447ca780ef9f5d568189" +checksum = "aaf91faf136cb47367fa430cd46e37a788775e7fa104f8b4bcb3861dc389b724" [[package]] name = "git2" @@ -910,7 +938,7 @@ dependencies = [ "log", "openssl-probe", "openssl-sys", - "url 2.2.2", + "url 2.2.1", ] [[package]] @@ -946,7 +974,7 @@ dependencies = [ "byteorder", "bytes 0.4.12", "fnv", - "futures 0.1.31", + "futures 0.1.30", "http 0.1.21", "indexmap", "log", @@ -966,34 +994,15 @@ dependencies = [ "futures-core", "futures-sink", "futures-util", - "http 0.2.4", + "http 0.2.1", "indexmap", "slab", - "tokio 0.2.25", - "tokio-util 0.3.1", + "tokio 0.2.22", + "tokio-util", "tracing", "tracing-futures", ] -[[package]] -name = "h2" -version = "0.3.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "825343c4eef0b63f541f8903f395dc5beb362a979b5799a84062527ef1e37726" -dependencies = [ - "bytes 1.0.1", - "fnv", - "futures-core", - "futures-sink", - "futures-util", - "http 0.2.4", - "indexmap", - "slab", - "tokio 1.6.1", - "tokio-util 0.6.7", - "tracing", -] - [[package]] name = "hashbrown" version = "0.9.1" @@ -1002,44 +1011,44 @@ checksum = "d7afe4a420e3fe79967a00898cc1f4db7c8a49a9333a29f8a4bd76a253d5cd04" [[package]] name = "hashicorp_vault" -version = "2.1.0" +version = "2.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3cd636b56a3e214f65bc9fec3217c3add72a424740162643267892149e992eb2" +checksum = "be1f396a370640749cd445ea9657afdb90a10e820b9c57e6d886d290386f9bff" dependencies = [ "base64 0.12.3", "chrono", "log", "quick-error", - "reqwest 0.10.10", + "reqwest 0.10.8", "serde", "serde_derive", "serde_json", - "url 2.2.2", + "url 2.2.1", ] [[package]] name = "heck" -version = "0.3.3" +version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6d621efb26863f0e9924c6ac577e8275e5e6b77455db64ffa6c65c904e9e132c" +checksum = "20564e78d53d2bb135c343b3f47714a56af2061f1c928fdb541dc7b9fdd94205" dependencies = [ "unicode-segmentation", ] [[package]] name = "hermit-abi" -version = "0.1.18" +version = "0.1.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "322f4de77956e22ed0e5032c359a0f1273f1f7f0d79bfa3b8ffbc730d7fbcc5c" +checksum = "5aca5565f760fb5b220e499d72710ed156fdb74e631659e99377d9ebfbd13ae8" dependencies = [ "libc", ] [[package]] name = "hex" -version = "0.4.3" +version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70" +checksum = "644f9158b2f133fd50f5fb3242878846d9eb792e445c893805ff0e3824006e35" [[package]] name = "hmac" @@ -1075,11 +1084,11 @@ dependencies = [ [[package]] name = "http" -version = "0.2.4" +version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "527e8c9ac747e28542699a951517aa9a6945af506cd1f2e1b53a576c17b6cc11" +checksum = "28d569972648b2c512421b5f2a405ad6ac9666547189d0c5477a3f200f3e02f9" dependencies = [ - "bytes 1.0.1", + "bytes 0.5.6", "fnv", "itoa", ] @@ -1091,7 +1100,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6741c859c1b2463a423a1dbce98d418e6c3c3fc720fb0d45528657320920292d" dependencies = [ "bytes 0.4.12", - "futures 0.1.31", + "futures 0.1.30", "http 0.1.21", "tokio-buf", ] @@ -1103,25 +1112,25 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "13d5ff830006f7646652e057693569bfe0d51760c0085a071769d142a205111b" dependencies = [ "bytes 0.5.6", - "http 0.2.4", + "http 0.2.1", ] [[package]] name = "http-body" -version = "0.4.2" +version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "60daa14be0e0786db0f03a9e57cb404c9d756eed2b6c62b9ea98ec5743ec75a9" +checksum = "5dfb77c123b4e2f72a2069aeae0b4b4949cc7e966df277813fc16347e7549737" dependencies = [ "bytes 1.0.1", - "http 0.2.4", + "http 0.2.1", "pin-project-lite 0.2.6", ] [[package]] name = "httparse" -version = "1.4.1" +version = "1.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f3a87b616e37e93c22fb19bcd386f02f3af5ea98a25670ad0fce773de23c5e68" +checksum = "4a1ce40d6fc9764887c2fdc7305c3dcc429ba11ff981c1509416afd5697e4437" [[package]] name = "httpdate" @@ -1131,24 +1140,24 @@ checksum = "494b4d60369511e7dea41cf646832512a94e542f68bb9c49e54518e0f468eb47" [[package]] name = "httpdate" -version = "1.0.1" +version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6456b8a6c8f33fee7d958fcd1b60d55b11940a79e63ae87013e6d22e26034440" +checksum = "05842d0d43232b23ccb7060ecb0f0626922c21f30012e97b767b30afd4a5d4b9" [[package]] name = "humansize" -version = "1.1.1" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "02296996cb8796d7c6e3bc2d9211b7802812d36999a51bb754123ead7d37d026" +checksum = "b6cab2627acfc432780848602f3f558f7e9dd427352224b0d9324025796d2a5e" [[package]] name = "hyper" -version = "0.12.36" +version = "0.12.35" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c843caf6296fc1f93444735205af9ed4e109a539005abb2564ae1d6fad34c52" +checksum = "9dbe6ed1438e1f8ad955a4701e9a944938e9519f6888d12d8558b645e247d5f6" dependencies = [ "bytes 0.4.12", - "futures 0.1.31", + "futures 0.1.30", "futures-cpupool", "h2 0.1.26", "http 0.1.21", @@ -1173,23 +1182,23 @@ dependencies = [ [[package]] name = "hyper" -version = "0.13.10" +version = "0.13.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8a6f157065790a3ed2f88679250419b5cdd96e714a0d65f7797fd337186e96bb" +checksum = "2f3afcfae8af5ad0576a31e768415edb627824129e8e5a29b8bfccb2f234e835" dependencies = [ "bytes 0.5.6", "futures-channel", "futures-core", "futures-util", "h2 0.2.7", - "http 0.2.4", + "http 0.2.1", "http-body 0.3.1", "httparse", "httpdate 0.3.2", "itoa", - "pin-project", - "socket2 0.3.19", - "tokio 0.2.25", + "pin-project 0.4.27", + "socket2 0.3.15", + "tokio 0.2.22", "tower-service", "tracing", "want 0.3.0", @@ -1197,23 +1206,22 @@ dependencies = [ [[package]] name = "hyper" -version = "0.14.9" +version = "0.14.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "07d6baa1b441335f3ce5098ac421fb6547c46dda735ca1bc6d0153c838f9dd83" +checksum = "1e5f105c494081baa3bf9e200b279e27ec1623895cd504c7dbef8d0b080fcf54" dependencies = [ "bytes 1.0.1", "futures-channel", "futures-core", "futures-util", - "h2 0.3.3", - "http 0.2.4", - "http-body 0.4.2", + "http 0.2.1", + "http-body 0.4.1", "httparse", - "httpdate 1.0.1", + "httpdate 1.0.0", "itoa", - "pin-project-lite 0.2.6", + "pin-project 1.0.1", "socket2 0.4.0", - "tokio 1.6.1", + "tokio 1.5.0", "tower-service", "tracing", "want 0.3.0", @@ -1226,8 +1234,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3a800d6aa50af4b5850b2b0f659625ce9504df908e9733b635720483be26174f" dependencies = [ "bytes 0.4.12", - "futures 0.1.31", - "hyper 0.12.36", + "futures 0.1.30", + "hyper 0.12.35", "native-tls", "tokio-io", ] @@ -1239,9 +1247,9 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d979acc56dcb5b8dddba3917601745e877576475aa046df3226eabdecef78eed" dependencies = [ "bytes 0.5.6", - "hyper 0.13.10", + "hyper 0.13.8", "native-tls", - "tokio 0.2.25", + "tokio 0.2.22", "tokio-tls", ] @@ -1252,9 +1260,9 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d6183ddfa99b85da61a140bea0efc93fdf56ceaa041b37d553518030827f9905" dependencies = [ "bytes 1.0.1", - "hyper 0.14.9", + "hyper 0.14.7", "native-tls", - "tokio 1.6.1", + "tokio 1.5.0", "tokio-native-tls", ] @@ -1271,9 +1279,9 @@ dependencies = [ [[package]] name = "idna" -version = "0.2.3" +version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "418a0a6fab821475f634efe3ccc45c013f742efe03d853e8d3355d5cb850ecf8" +checksum = "02e2673c30ee86b5b96a9cb52ad15718aa1f966f5ab9ad54a8b95d5ca33120a9" dependencies = [ "matches", "unicode-bidi", @@ -1282,11 +1290,11 @@ dependencies = [ [[package]] name = "ignore" -version = "0.4.17" +version = "0.4.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b287fb45c60bb826a0dc68ff08742b9d88a2fea13d6e0c286b3172065aaf878c" +checksum = "22dcbf2a4a289528dbef21686354904e1c694ac642610a9bff9e7df730d9ec72" dependencies = [ - "crossbeam-utils 0.8.5", + "crossbeam-utils 0.7.2", "globset", "lazy_static", "log", @@ -1300,9 +1308,9 @@ dependencies = [ [[package]] name = "indexmap" -version = "1.6.2" +version = "1.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "824845a0bf897a9042383849b02c1bc219c2383772efcd5c6f9766fa4b81aef3" +checksum = "55e2e4c765aa53a0424761bf9f41aa7a6ac1efa87238f59560640e27fca028f2" dependencies = [ "autocfg 1.0.1", "hashbrown", @@ -1332,7 +1340,7 @@ version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f7e2f18aece9709094573a9f24f483c4f65caa4298e2f7ae1b71cc65d853fad7" dependencies = [ - "socket2 0.3.19", + "socket2 0.3.15", "widestring", "winapi 0.3.9", "winreg 0.6.2", @@ -1346,33 +1354,33 @@ checksum = "47be2f14c678be2fdcab04ab1171db51b2762ce6f0a8ee87c8dd4a04ed216135" [[package]] name = "itertools" -version = "0.10.0" +version = "0.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "37d572918e350e82412fe766d24b15e6682fb2ed2bbe018280caa810397cb319" +checksum = "69ddb889f9d0d08a67338271fa9b62996bc788c7796a5c18cf057420aaed5eaf" dependencies = [ "either", ] [[package]] name = "itoa" -version = "0.4.7" +version = "0.4.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dd25036021b0de88a0aff6b850051563c6516d0bf53f8638938edbb9de732736" +checksum = "dc6f3ad7b9d11a0c00842ff8de1b60ee58661048eb8049ed33c73594f359d7e6" [[package]] name = "jobserver" -version = "0.1.22" +version = "0.1.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "972f5ae5d1cb9c6ae417789196c803205313edde988685da5e3aae0827b9e7fd" +checksum = "5c71313ebb9439f74b00d9d2dcec36440beaf57a6aa0623068441dd7cd81a7f2" dependencies = [ "libc", ] [[package]] name = "js-sys" -version = "0.3.51" +version = "0.3.45" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "83bdfbace3a0e81a4253f73b49e960b053e396a11012cbd49b9b74d6a2b67062" +checksum = "ca059e81d9486668f12d455a4ea6daa600bd408134cd17e3d3fb5a32d1f016f8" dependencies = [ "wasm-bindgen", ] @@ -1395,9 +1403,9 @@ checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" [[package]] name = "libc" -version = "0.2.95" +version = "0.2.86" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "789da6d93f1b866ffe175afc5322a4d76c038605a1c3319bb57b06967ca98a36" +checksum = "b7282d924be3275cec7f6756ff4121987bc6481325397dde6ba3e7802b1a8b1c" [[package]] name = "libgit2-sys" @@ -1415,9 +1423,9 @@ dependencies = [ [[package]] name = "libssh2-sys" -version = "0.2.21" +version = "0.2.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e0186af0d8f171ae6b9c4c90ec51898bad5d08a2d5e470903a50d9ad8959cbee" +checksum = "ca46220853ba1c512fc82826d0834d87b06bcd3c2a42241b7de72f3d2fe17056" dependencies = [ "cc", "libc", @@ -1429,9 +1437,9 @@ dependencies = [ [[package]] name = "libz-sys" -version = "1.1.3" +version = "1.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "de5435b8549c16d423ed0c03dbaafe57cf6c3344744f1242520d59c9d8ecec66" +checksum = "602113192b08db8f38796c4e85c39e960c145965140e918018bcde1952429655" dependencies = [ "cc", "libc", @@ -1441,9 +1449,9 @@ dependencies = [ [[package]] name = "linked-hash-map" -version = "0.5.4" +version = "0.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7fb9b38af92608140b86b693604b9ffcc5824240a484d1ecd4795bacb2fe88f3" +checksum = "8dd5a6d5999d9907cda8ed67bbd137d3af8085216c2ac62de5be860bd41f304a" [[package]] name = "lock_api" @@ -1465,11 +1473,35 @@ dependencies = [ [[package]] name = "log" -version = "0.4.14" +version = "0.4.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "51b9bbe6c47d51fc3e1a9b945965946b4c44142ab8792c50835a980d362c2710" +checksum = "4fabed175da42fed1fa0746b0ea71f412aa9d35e76e95e59b192c64b9dc2bf8b" +dependencies = [ + "cfg-if 0.1.10", +] + +[[package]] +name = "loom" +version = "0.3.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a0e8460f2f2121162705187214720353c517b97bdfb3494c0b1e33d83ebe4bed" +dependencies = [ + "cfg-if 0.1.10", + "generator", + "scoped-tls", + "serde", + "serde_json", +] + +[[package]] +name = "loom" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d44c73b4636e497b4917eb21c33539efa3816741a2d3ff26c6316f1b529481a4" dependencies = [ "cfg-if 1.0.0", + "generator", + "scoped-tls", ] [[package]] @@ -1522,9 +1554,9 @@ checksum = "490cc448043f947bae3cbee9c203358d62dbee0db12107a74be5c30ccfd09771" [[package]] name = "memchr" -version = "2.4.0" +version = "2.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b16bd47d9e329435e309c58469fe0791c2d0d1ba96ec0954152a5ae2b04387dc" +checksum = "3728d817d99e5ac407411fa471ff9800a778d88a24685968b36824eaf4bee400" [[package]] name = "memoffset" @@ -1537,9 +1569,9 @@ dependencies = [ [[package]] name = "memoffset" -version = "0.6.4" +version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "59accc507f1338036a0477ef61afdae33cde60840f4dfe481319ce3ad116ddf9" +checksum = "157b4208e3059a8f9e78d559edc658e13df41410cb3ae03979c83130067fdd87" dependencies = [ "autocfg 1.0.1", ] @@ -1562,9 +1594,9 @@ dependencies = [ [[package]] name = "miniz_oxide" -version = "0.4.4" +version = "0.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a92518e98c078586bc6c934028adcca4c92a53d6a958196de835170a01d84e4b" +checksum = "0f2d26ec3309788e423cfbf68ad1800f061638098d76a83681af979dc4eda19d" dependencies = [ "adler", "autocfg 1.0.1", @@ -1572,9 +1604,9 @@ dependencies = [ [[package]] name = "mio" -version = "0.6.23" +version = "0.6.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4afd66f5b91bf2a3bc13fad0e21caedac168ca4c707504e75585648ae80e4cc4" +checksum = "fce347092656428bc8eaf6201042cb551b8d67855af7374542a92a0fbfcac430" dependencies = [ "cfg-if 0.1.10", "fuchsia-zircon", @@ -1583,7 +1615,7 @@ dependencies = [ "kernel32-sys", "libc", "log", - "miow 0.2.2", + "miow 0.2.1", "net2", "slab", "winapi 0.2.8", @@ -1604,9 +1636,9 @@ dependencies = [ [[package]] name = "miow" -version = "0.2.2" +version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ebd808424166322d4a38da87083bfddd3ac4c131334ed55856112eb06d46944d" +checksum = "8c1f2f3b1cf331de6896aabf6e9d55dca90356cc9960cca7eaaf408a355ae919" dependencies = [ "kernel32-sys", "net2", @@ -1625,9 +1657,9 @@ dependencies = [ [[package]] name = "native-tls" -version = "0.2.7" +version = "0.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b8d96b2e1c8da3957d58100b09f102c6d9cfdfced01b7ec5a8974044bb09dbd4" +checksum = "2b0d88c06fe90d5ee94048ba40409ef1d9315d86f6f38c2efdaad4fb50c58b2d" dependencies = [ "lazy_static", "libc", @@ -1643,9 +1675,9 @@ dependencies = [ [[package]] name = "net2" -version = "0.2.37" +version = "0.2.35" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "391630d12b68002ae1e25e8f974306474966550ad82dac6886fb8910c19568ae" +checksum = "3ebc3ec692ed7c9a255596c67808dee269f64655d8baf7b4f0638e51ba1d6853" dependencies = [ "cfg-if 0.1.10", "libc", @@ -1676,9 +1708,9 @@ dependencies = [ [[package]] name = "num-integer" -version = "0.1.44" +version = "0.1.43" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d2cc698a63b549a70bc047073d2949cce27cd1c7b0a4a862d08a8031bc2801db" +checksum = "8d59457e662d541ba17869cf51cf177c0b5f0cbf476c66bdc90bf1edac4f875b" dependencies = [ "autocfg 1.0.1", "num-traits", @@ -1686,9 +1718,9 @@ dependencies = [ [[package]] name = "num-traits" -version = "0.2.14" +version = "0.2.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9a64b1ec5cda2586e284722486d802acf1f7dbdc623e2bfc57e65ca1cd099290" +checksum = "ac267bcc07f48ee5f8935ab0d24f316fb722d7a1292e2913f0cc196b29ffd611" dependencies = [ "autocfg 1.0.1", ] @@ -1705,12 +1737,9 @@ dependencies = [ [[package]] name = "object" -version = "0.25.2" +version = "0.21.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f8bc1d42047cf336f0f939c99e97183cf31551bf0f2865a2ec9c8d91fd4ffb5e" -dependencies = [ - "memchr", -] +checksum = "37fd5004feb2ce328a52b0b3d01dbf4ffff72583493900ed15f22d4111c51693" [[package]] name = "once_cell" @@ -1732,29 +1761,29 @@ checksum = "624a8340c38c1b80fd549087862da4ba43e08858af025b236e509b6649fc13d5" [[package]] name = "openssl" -version = "0.10.34" +version = "0.10.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6d7830286ad6a3973c0f1d9b73738f69c76b739301d0229c4b96501695cbe4c8" +checksum = "8d575eff3665419f9b83678ff2815858ad9d11567e082f5ac1814baba4e2bcb4" dependencies = [ "bitflags", - "cfg-if 1.0.0", + "cfg-if 0.1.10", "foreign-types", + "lazy_static", "libc", - "once_cell", "openssl-sys", ] [[package]] name = "openssl-probe" -version = "0.1.4" +version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "28988d872ab76095a6e6ac88d99b54fd267702734fd7ffe610ca27f533ddb95a" +checksum = "77af24da69f9d9341038eba93a073b1fdaaa1b788221b00a69bce9e762cb32de" [[package]] name = "openssl-sys" -version = "0.9.63" +version = "0.9.58" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b6b0d6fb7d80f877617dfcb014e605e2b5ab2fb0afdf27935219bb6bd984cb98" +checksum = "a842db4709b604f0fe5d1170ae3565899be2ad3d9cbc72dedc789ac0511f78de" dependencies = [ "autocfg 1.0.1", "cc", @@ -1792,7 +1821,7 @@ checksum = "6d7744ac029df22dca6284efe4e898991d28e3085c706c972bcd7da4a27a15eb" dependencies = [ "instant", "lock_api 0.4.4", - "parking_lot_core 0.8.3", + "parking_lot_core 0.8.2", ] [[package]] @@ -1806,21 +1835,21 @@ dependencies = [ "libc", "redox_syscall 0.1.57", "rustc_version", - "smallvec 0.6.14", + "smallvec 0.6.13", "winapi 0.3.9", ] [[package]] name = "parking_lot_core" -version = "0.8.3" +version = "0.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fa7a782938e745763fe6907fc6ba86946d72f49fe7e21de074e08128a99fb018" +checksum = "9ccb628cad4f84851442432c60ad8e1f607e29752d0bf072cbd0baf28aa34272" dependencies = [ "cfg-if 1.0.0", "instant", "libc", - "redox_syscall 0.2.8", - "smallvec 1.6.1", + "redox_syscall 0.1.57", + "smallvec 1.5.0", "winapi 0.3.9", ] @@ -1872,9 +1901,9 @@ checksum = "99b8db626e31e5b81787b9783425769681b347011cc59471e33ea46d2ea0cf55" dependencies = [ "pest", "pest_meta", - "proc-macro2 1.0.27", - "quote 1.0.9", - "syn 1.0.72", + "proc-macro2 1.0.24", + "quote 1.0.7", + "syn 1.0.48", ] [[package]] @@ -1890,29 +1919,49 @@ dependencies = [ [[package]] name = "pin-project" -version = "1.0.7" +version = "0.4.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c7509cc106041c40a4518d2af7a61530e1eed0e6285296a3d8c5472806ccc4a4" +checksum = "2ffbc8e94b38ea3d2d8ba92aea2983b503cd75d0888d75b86bb37970b5698e15" dependencies = [ - "pin-project-internal", + "pin-project-internal 0.4.27", +] + +[[package]] +name = "pin-project" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ee41d838744f60d959d7074e3afb6b35c7456d0f61cad38a24e35e6553f73841" +dependencies = [ + "pin-project-internal 1.0.1", ] [[package]] name = "pin-project-internal" -version = "1.0.7" +version = "0.4.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "48c950132583b500556b1efd71d45b319029f2b71518d979fcc208e16b42426f" +checksum = "65ad2ae56b6abe3a1ee25f15ee605bacadb9a764edaba9c2bf4103800d4a1895" dependencies = [ - "proc-macro2 1.0.27", - "quote 1.0.9", - "syn 1.0.72", + "proc-macro2 1.0.24", + "quote 1.0.7", + "syn 1.0.48", +] + +[[package]] +name = "pin-project-internal" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "81a4ffa594b66bff340084d4081df649a7dc049ac8d7fc458d8e628bfbbb2f86" +dependencies = [ + "proc-macro2 1.0.24", + "quote 1.0.7", + "syn 1.0.48", ] [[package]] name = "pin-project-lite" -version = "0.1.12" +version = "0.1.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "257b64915a082f7811703966789728173279bdebb956b143dbcd23f6f970a777" +checksum = "c917123afa01924fc84bb20c4c03f004d9c38e5127e3c039bbf7f4b9c76a2f6b" [[package]] name = "pin-project-lite" @@ -1934,9 +1983,9 @@ checksum = "3831453b3449ceb48b6d9c7ad7c96d5ea673e9b470a1dc578c2ce6521230884c" [[package]] name = "ppv-lite86" -version = "0.2.10" +version = "0.2.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ac74c624d6b2d21f425f752262f42188365d7b8ff1aff74c82e45136510a4857" +checksum = "c36fa947111f5c62a733b652544dd0016a43ce89619538a8ef92724a6f501a20" [[package]] name = "proc-macro-error" @@ -1945,9 +1994,9 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "da25490ff9892aab3fcf7c36f08cfb902dd3e71ca0f9f9517bea02a73a5ce38c" dependencies = [ "proc-macro-error-attr", - "proc-macro2 1.0.27", - "quote 1.0.9", - "syn 1.0.72", + "proc-macro2 1.0.24", + "quote 1.0.7", + "syn 1.0.48", "version_check", ] @@ -1957,22 +2006,22 @@ version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a1be40180e52ecc98ad80b184934baf3d0d29f979574e439af5a55274b35f869" dependencies = [ - "proc-macro2 1.0.27", - "quote 1.0.9", + "proc-macro2 1.0.24", + "quote 1.0.7", "version_check", ] [[package]] name = "proc-macro-hack" -version = "0.5.19" +version = "0.5.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dbf0c48bc1d91375ae5c3cd81e3722dff1abcf81a30960240640d223f59fe0e5" +checksum = "99c605b9a0adc77b7211c6b1f722dcb613d68d66859a44f3d485a6da332b0598" [[package]] name = "proc-macro-nested" -version = "0.1.7" +version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bc881b2c22681370c6a780e47af9840ef841837bc98118431d4e1868bd0c1086" +checksum = "eba180dafb9038b050a4c280019bbedf9f2467b61e5d892dcad585bb57aadc5a" [[package]] name = "proc-macro2" @@ -1985,21 +2034,24 @@ dependencies = [ [[package]] name = "proc-macro2" -version = "1.0.27" +version = "1.0.24" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f0d8caf72986c1a598726adc988bb5984792ef84f5ee5aa50209145ee8077038" +checksum = "1e0704ee1a7e00d7bb417d0770ea303c1bccbabf0ef1667dae92b5967f5f8a71" dependencies = [ - "unicode-xid 0.2.2", + "unicode-xid 0.2.1", ] [[package]] name = "publicsuffix" -version = "1.5.6" +version = "1.5.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "95b4ce31ff0a27d93c8de1849cf58162283752f065a90d508f1105fa6c9a213f" +checksum = "3bbaa49075179162b49acac1c6aa45fb4dafb5f13cf6794276d77bc7fd95757b" dependencies = [ - "idna 0.2.3", - "url 2.2.2", + "error-chain", + "idna 0.2.0", + "lazy_static", + "regex", + "url 2.2.1", ] [[package]] @@ -2012,13 +2064,13 @@ dependencies = [ "digitalocean", "dirs", "flate2", - "futures 0.3.15", + "futures 0.3.7", "gethostname", "git2", "itertools", "lazy_static", - "rand 0.8.3", - "reqwest 0.11.3", + "rand 0.7.3", + "reqwest 0.10.8", "retry", "rusoto_core", "rusoto_credential", @@ -2038,7 +2090,7 @@ dependencies = [ "tera", "test-utilities", "timeout-readwrite", - "tokio 1.6.1", + "tokio 1.5.0", "tracing", "tracing-subscriber", "trust-dns-resolver", @@ -2062,11 +2114,11 @@ dependencies = [ [[package]] name = "quote" -version = "1.0.9" +version = "1.0.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c3d0b9745dc2debf507c8422de05d7226cc1f0644216dfdfead988f9b1ab32a7" +checksum = "aa563d17ecb180e500da1cfd2b028310ac758de548efdd203e18f283af693f37" dependencies = [ - "proc-macro2 1.0.27", + "proc-macro2 1.0.24", ] [[package]] @@ -2117,7 +2169,7 @@ version = "0.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6a6b1679d49b24bbfe0c803429aa1874472f50d9b363131f0e89fc356b544d03" dependencies = [ - "getrandom 0.1.16", + "getrandom 0.1.15", "libc", "rand_chacha 0.2.2", "rand_core 0.5.1", @@ -2187,7 +2239,7 @@ version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "90bde5296fc891b0cef12a6d03ddccc162ce7b2aff54160af9338f8d40df6d19" dependencies = [ - "getrandom 0.1.16", + "getrandom 0.1.15", ] [[package]] @@ -2196,7 +2248,7 @@ version = "0.6.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "34cf66eb183df1c5876e2dcf6b13d57340741e8dc255b48e40a26de954d06ae7" dependencies = [ - "getrandom 0.2.3", + "getrandom 0.2.2", ] [[package]] @@ -2281,9 +2333,9 @@ dependencies = [ [[package]] name = "rayon" -version = "1.5.1" +version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c06aca804d41dbc8ba42dfd964f0d01334eceb64314b9ecf7c5fad5188a06d90" +checksum = "8b0d8e0819fadc20c74ea8373106ead0600e3a67ef1fe8da56e39b9ae7275674" dependencies = [ "autocfg 1.0.1", "crossbeam-deque 0.8.0", @@ -2293,13 +2345,13 @@ dependencies = [ [[package]] name = "rayon-core" -version = "1.9.1" +version = "1.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d78120e2c850279833f1dd3582f730c4ab53ed95aeaaaa862a2a5c71b1656d8e" +checksum = "9ab346ac5921dc62ffa9f89b7a773907511cdfa5490c572ae9be1be33e8afa4a" dependencies = [ "crossbeam-channel", "crossbeam-deque 0.8.0", - "crossbeam-utils 0.8.5", + "crossbeam-utils 0.8.2", "lazy_static", "num_cpus", ] @@ -2334,35 +2386,37 @@ version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "528532f3d801c87aec9def2add9ca802fe569e44a544afe633765267840abe64" dependencies = [ - "getrandom 0.2.3", + "getrandom 0.2.2", "redox_syscall 0.2.8", ] [[package]] name = "regex" -version = "1.5.4" +version = "1.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d07a8629359eb56f1e2fb1652bb04212c072a87ba68546a04065d525673ac461" +checksum = "8963b85b8ce3074fecffde43b4b0dded83ce2f367dc8d363afc56679f3ee820b" dependencies = [ "aho-corasick", "memchr", "regex-syntax", + "thread_local", ] [[package]] name = "regex-automata" -version = "0.1.10" +version = "0.1.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6c230d73fb8d8c1b9c0b3135c5142a8acee3a0558fb8db5cf1cb65f8d7862132" +checksum = "ae1ded71d66a4a97f5e961fd0cb25a5f366a42a41570d16a763a69c092c26ae4" dependencies = [ + "byteorder", "regex-syntax", ] [[package]] name = "regex-syntax" -version = "0.6.25" +version = "0.6.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f497285884f3fcff424ffc933e56d7cbca511def0c9831a7f9b5f6153e3cc89b" +checksum = "8cab7a364d15cde1e505267766a2d3c4e22a843e1a601f0fa7564c0f82ced11c" [[package]] name = "remove_dir_all" @@ -2385,9 +2439,9 @@ dependencies = [ "cookie_store", "encoding_rs", "flate2", - "futures 0.1.31", + "futures 0.1.30", "http 0.1.21", - "hyper 0.12.36", + "hyper 0.12.35", "hyper-tls 0.3.2", "log", "mime", @@ -2409,18 +2463,18 @@ dependencies = [ [[package]] name = "reqwest" -version = "0.10.10" +version = "0.10.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0718f81a8e14c4dbb3b34cf23dc6aaf9ab8a0dfec160c534b3dbca1aaa21f47c" +checksum = "e9eaa17ac5d7b838b7503d118fa16ad88f440498bf9ffe5424e621f93190d61e" dependencies = [ - "base64 0.13.0", + "base64 0.12.3", "bytes 0.5.6", "encoding_rs", "futures-core", "futures-util", - "http 0.2.4", + "http 0.2.1", "http-body 0.3.1", - "hyper 0.13.10", + "hyper 0.13.8", "hyper-tls 0.4.3", "ipnet", "js-sys", @@ -2430,46 +2484,12 @@ dependencies = [ "mime_guess", "native-tls", "percent-encoding 2.1.0", - "pin-project-lite 0.2.6", + "pin-project-lite 0.1.11", "serde", - "serde_urlencoded 0.7.0", - "tokio 0.2.25", + "serde_urlencoded 0.6.1", + "tokio 0.2.22", "tokio-tls", - "url 2.2.2", - "wasm-bindgen", - "wasm-bindgen-futures", - "web-sys", - "winreg 0.7.0", -] - -[[package]] -name = "reqwest" -version = "0.11.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2296f2fac53979e8ccbc4a1136b25dcefd37be9ed7e4a1f6b05a6029c84ff124" -dependencies = [ - "base64 0.13.0", - "bytes 1.0.1", - "encoding_rs", - "futures-core", - "futures-util", - "http 0.2.4", - "http-body 0.4.2", - "hyper 0.14.9", - "hyper-tls 0.5.0", - "ipnet", - "js-sys", - "lazy_static", - "log", - "mime", - "native-tls", - "percent-encoding 2.1.0", - "pin-project-lite 0.2.6", - "serde", - "serde_urlencoded 0.7.0", - "tokio 1.6.1", - "tokio-native-tls", - "url 2.2.2", + "url 2.2.1", "wasm-bindgen", "wasm-bindgen-futures", "web-sys", @@ -2505,9 +2525,9 @@ dependencies = [ "base64 0.13.0", "bytes 1.0.1", "crc32fast", - "futures 0.3.15", - "http 0.2.4", - "hyper 0.14.9", + "futures 0.3.7", + "http 0.2.1", + "hyper 0.14.7", "hyper-tls 0.5.0", "lazy_static", "log", @@ -2516,7 +2536,7 @@ dependencies = [ "rustc_version", "serde", "serde_json", - "tokio 1.6.1", + "tokio 1.5.0", "xml-rs", ] @@ -2529,12 +2549,12 @@ dependencies = [ "async-trait", "chrono", "dirs-next", - "futures 0.3.15", - "hyper 0.14.9", + "futures 0.3.7", + "hyper 0.14.7", "serde", "serde_json", "shlex", - "tokio 1.6.1", + "tokio 1.5.0", "zeroize", ] @@ -2546,7 +2566,7 @@ checksum = "0f26af40f36409cb8fae3069690f78f638f747b55c7b90f338d5ed36016b0cda" dependencies = [ "async-trait", "bytes 1.0.1", - "futures 0.3.15", + "futures 0.3.7", "rusoto_core", "serde", "serde_json", @@ -2560,7 +2580,7 @@ checksum = "3ab222491e156f033926d40c663d57a6b60a5c5ec94e696e66f52a0c64d20dbf" dependencies = [ "async-trait", "bytes 1.0.1", - "futures 0.3.15", + "futures 0.3.7", "rusoto_core", "serde", "serde_json", @@ -2574,7 +2594,7 @@ checksum = "91d7e1e577d4102a9d80d5eafc0547064d3e8817d094f00e95ae45d03ae3accb" dependencies = [ "async-trait", "bytes 1.0.1", - "futures 0.3.15", + "futures 0.3.7", "rusoto_core", "serde", "serde_derive", @@ -2589,7 +2609,7 @@ checksum = "0268b898abed79c59f8468c4991d0f97ed0925049db228cff623ecac44c5b3a6" dependencies = [ "async-trait", "bytes 1.0.1", - "futures 0.3.15", + "futures 0.3.7", "rusoto_core", "serde_urlencoded 0.6.1", "xml-rs", @@ -2603,7 +2623,7 @@ checksum = "abc3f56f14ccf91f880b9a9c2d0556d8523e8c155041c54db155b384a1dd1119" dependencies = [ "async-trait", "bytes 1.0.1", - "futures 0.3.15", + "futures 0.3.7", "rusoto_core", "xml-rs", ] @@ -2616,11 +2636,11 @@ checksum = "5486e6b1673ab3e0ba1ded284fb444845fe1b7f41d13989a54dd60f62a7b2baa" dependencies = [ "base64 0.13.0", "bytes 1.0.1", - "futures 0.3.15", + "futures 0.3.7", "hex", "hmac", - "http 0.2.4", - "hyper 0.14.9", + "http 0.2.1", + "hyper 0.14.7", "log", "md5", "percent-encoding 2.1.0", @@ -2629,8 +2649,8 @@ dependencies = [ "rustc_version", "serde", "sha2", - "time 0.2.26", - "tokio 1.6.1", + "time 0.2.23", + "tokio 1.5.0", ] [[package]] @@ -2642,7 +2662,7 @@ dependencies = [ "async-trait", "bytes 1.0.1", "chrono", - "futures 0.3.15", + "futures 0.3.7", "rusoto_core", "serde_urlencoded 0.6.1", "xml-rs", @@ -2663,9 +2683,9 @@ dependencies = [ [[package]] name = "rustc-demangle" -version = "0.1.19" +version = "0.1.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "410f7acf3cb3a44527c5d9546bad4bf4e6c460915d5f9f2fc524498bfe8f70ce" +checksum = "6e3bad0ee36814ca07d7968269dd4b7ec89ec2da10c4bb613928d3077083c232" [[package]] name = "rustc-serialize" @@ -2707,6 +2727,12 @@ dependencies = [ "winapi 0.3.9", ] +[[package]] +name = "scoped-tls" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ea6a9290e3c9cf0f18145ef7ffa62d68ee0bf5fcd651017e586dc7fd5da448c2" + [[package]] name = "scopeguard" version = "1.1.0" @@ -2715,24 +2741,24 @@ checksum = "d29ab0c6d3fc0ee92fe66e2d99f700eab17a8d57d1c1d3b748380fb20baa78cd" [[package]] name = "security-framework" -version = "2.3.1" +version = "0.4.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "23a2ac85147a3a11d77ecf1bc7166ec0b92febfa4461c37944e180f319ece467" +checksum = "64808902d7d99f78eaddd2b4e2509713babc3dc3c85ad6f4c447680f3c01e535" dependencies = [ "bitflags", "core-foundation", - "core-foundation-sys", + "core-foundation-sys 0.7.0", "libc", "security-framework-sys", ] [[package]] name = "security-framework-sys" -version = "2.3.0" +version = "0.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7e4effb91b4b8b6fb7732e670b6cee160278ff8e6bf485c7805d9e319d76e284" +checksum = "17bf11d99252f512695eb468de5516e5cf75455521e69dfe343f3b74e4748405" dependencies = [ - "core-foundation-sys", + "core-foundation-sys 0.7.0", "libc", ] @@ -2753,29 +2779,29 @@ checksum = "388a1df253eca08550bef6c72392cfe7c30914bf41df5269b68cbd6ff8f570a3" [[package]] name = "serde" -version = "1.0.126" +version = "1.0.117" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ec7505abeacaec74ae4778d9d9328fe5a5d04253220a85c4ee022239fc996d03" +checksum = "b88fa983de7720629c9387e9f517353ed404164b1e482c970a90c1a4aaf7dc1a" dependencies = [ "serde_derive", ] [[package]] name = "serde_derive" -version = "1.0.126" +version = "1.0.117" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "963a7dbc9895aeac7ac90e74f34a5d5261828f79df35cbed41e10189d3804d43" +checksum = "cbd1ae72adb44aab48f325a02444a5fc079349a8d804c1fc922aed3f7454c74e" dependencies = [ - "proc-macro2 1.0.27", - "quote 1.0.9", - "syn 1.0.72", + "proc-macro2 1.0.24", + "quote 1.0.7", + "syn 1.0.48", ] [[package]] name = "serde_json" -version = "1.0.64" +version = "1.0.59" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "799e97dc9fdae36a5c8b8f2cae9ce2ee9fdce2058c57a93e6099d919fd982f79" +checksum = "dcac07dbffa1c65e7f816ab9eba78eb142c6d44410f4eeba1e26e4f5dfa56b95" dependencies = [ "itoa", "ryu", @@ -2803,19 +2829,7 @@ dependencies = [ "dtoa", "itoa", "serde", - "url 2.2.2", -] - -[[package]] -name = "serde_urlencoded" -version = "0.7.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "edfa57a7f8d9c1d260a549e7224100f6c43d43f9103e06dd8b4095a9b2b43ce9" -dependencies = [ - "form_urlencoded", - "itoa", - "ryu", - "serde", + "url 2.2.1", ] [[package]] @@ -2838,24 +2852,25 @@ checksum = "2579985fda508104f7587689507983eadd6a6e84dd35d6d115361f530916fa0d" [[package]] name = "sha2" -version = "0.9.5" +version = "0.9.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b362ae5752fd2137731f9fa25fd4d9058af34666ca1966fb969119cc35719f12" +checksum = "2933378ddfeda7ea26f48c555bdad8bb446bf8a3d17832dc83e380d444cfb8c1" dependencies = [ "block-buffer 0.9.0", - "cfg-if 1.0.0", - "cpufeatures", + "cfg-if 0.1.10", + "cpuid-bool", "digest 0.9.0", "opaque-debug 0.3.0", ] [[package]] name = "sharded-slab" -version = "0.1.1" +version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "79c719719ee05df97490f80a45acfc99e5a30ce98a1e4fb67aee422745ae14e3" +checksum = "7b4921be914e16899a80adefb821f8ddb7974e3f1250223575a44ed994882127" dependencies = [ "lazy_static", + "loom 0.3.6", ] [[package]] @@ -2866,18 +2881,19 @@ checksum = "7fdf1b9db47230893d76faad238fd6097fd6d6a9245cd7a4d90dbd639536bbd2" [[package]] name = "signal-hook-registry" -version = "1.4.0" +version = "1.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e51e73328dc4ac0c7ccbda3a494dfa03df1de2f46018127f60c693f2648455b0" +checksum = "a3e12110bc539e657a646068aaf5eb5b63af9d0c1f7b29c97113fad80e15f035" dependencies = [ + "arc-swap", "libc", ] [[package]] name = "slab" -version = "0.4.3" +version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f173ac3d1a7e3b28003f40de0b5ce7fe2710f9b9dc3fc38664cebee46b3b6527" +checksum = "c111b5bd5695e56cffe5129854aa230b39c93a305372fdbb2668ca2394eea9f8" [[package]] name = "slug" @@ -2890,27 +2906,28 @@ dependencies = [ [[package]] name = "smallvec" -version = "0.6.14" +version = "0.6.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b97fcaeba89edba30f044a10c6a3cc39df9c3f17d7cd829dd1446cab35f890e0" +checksum = "f7b0758c52e15a8b5e3691eae6cc559f08eee9406e548a4477ba4e67770a82b6" dependencies = [ "maybe-uninit", ] [[package]] name = "smallvec" -version = "1.6.1" +version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fe0f37c9e8f3c5a4a66ad655a93c74daac4ad00c441533bf5c6e7990bb42604e" +checksum = "7acad6f34eb9e8a259d3283d1e8c1d34d7415943d4895f65cc73813c7396fc85" [[package]] name = "socket2" -version = "0.3.19" +version = "0.3.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "122e570113d28d773067fab24266b66753f6ea915758651696b6e35e49f88d6e" +checksum = "b1fa70dc5c8104ec096f4fe7ede7a221d35ae13dcd19ba1ad9a81d2cab9a1c44" dependencies = [ - "cfg-if 1.0.0", + "cfg-if 0.1.10", "libc", + "redox_syscall 0.1.57", "winapi 0.3.9", ] @@ -2926,9 +2943,9 @@ dependencies = [ [[package]] name = "standback" -version = "0.2.17" +version = "0.2.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e113fb6f3de07a243d434a56ec6f186dfd51cb08448239fe7bcae73f87ff28ff" +checksum = "f4e0831040d2cf2bdfd51b844be71885783d489898a192f254ae25d57cce725c" dependencies = [ "version_check", ] @@ -2953,11 +2970,11 @@ version = "0.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c87a60a40fccc84bef0652345bbbbbe20a605bf5d0ce81719fc476f5c03b50ef" dependencies = [ - "proc-macro2 1.0.27", - "quote 1.0.9", + "proc-macro2 1.0.24", + "quote 1.0.7", "serde", "serde_derive", - "syn 1.0.72", + "syn 1.0.48", ] [[package]] @@ -2967,13 +2984,13 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "58fa5ff6ad0d98d1ffa8cb115892b6e69d67799f6763e162a1c9db421dc22e11" dependencies = [ "base-x", - "proc-macro2 1.0.27", - "quote 1.0.9", + "proc-macro2 1.0.24", + "quote 1.0.7", "serde", "serde_derive", "serde_json", "sha1", - "syn 1.0.72", + "syn 1.0.48", ] [[package]] @@ -2993,9 +3010,9 @@ dependencies = [ [[package]] name = "subtle" -version = "2.4.0" +version = "2.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e81da0851ada1f3e9d4312c704aa4f8806f0f9d69faaf8df2f3464b4a9437c2" +checksum = "343f3f510c2915908f155e94f17220b19ccfacf2a64a2a5d8004f2c3e311e7fd" [[package]] name = "syn" @@ -3010,13 +3027,13 @@ dependencies = [ [[package]] name = "syn" -version = "1.0.72" +version = "1.0.48" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a1e8cdbefb79a9a5a65e0db8b47b723ee907b7c7f8496c76a1770b5c310bab82" +checksum = "cc371affeffc477f42a221a1e4297aedcea33d47d19b61455588bd9d8f6b19ac" dependencies = [ - "proc-macro2 1.0.27", - "quote 1.0.9", - "unicode-xid 0.2.2", + "proc-macro2 1.0.24", + "quote 1.0.7", + "unicode-xid 0.2.1", ] [[package]] @@ -3025,20 +3042,20 @@ version = "0.12.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b834f2d66f734cb897113e34aaff2f1ab4719ca946f9a7358dba8f8064148701" dependencies = [ - "proc-macro2 1.0.27", - "quote 1.0.9", - "syn 1.0.72", - "unicode-xid 0.2.2", + "proc-macro2 1.0.24", + "quote 1.0.7", + "syn 1.0.48", + "unicode-xid 0.2.1", ] [[package]] name = "sysinfo" -version = "0.18.2" +version = "0.16.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d404aefa651a24a7f2a1190fec9fb6380ba84ac511a6fefad79eb0e63d39a97d" +checksum = "6c280c91abd1aed2e36be1bc8f56fbc7a2acbb2b58fbcac9641510179cc72dd9" dependencies = [ "cfg-if 1.0.0", - "core-foundation-sys", + "core-foundation-sys 0.8.2", "doc-comment", "libc", "ntapi", @@ -3070,14 +3087,14 @@ dependencies = [ [[package]] name = "tempfile" -version = "3.2.0" +version = "3.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dac1c663cfc93810f88aed9b8941d48cabf856a1b111c29a40439018d870eb22" +checksum = "7a6e24d9338a0a5be79593e2fa15a648add6138caa803e2d5bc782c371732ca9" dependencies = [ - "cfg-if 1.0.0", + "cfg-if 0.1.10", "libc", - "rand 0.8.3", - "redox_syscall 0.2.8", + "rand 0.7.3", + "redox_syscall 0.1.57", "remove_dir_all", "winapi 0.3.9", ] @@ -3115,43 +3132,43 @@ dependencies = [ "hashicorp_vault", "qovery-engine", "rand 0.7.3", - "reqwest 0.10.10", + "reqwest 0.10.8", "retry", "serde", "serde_derive", "serde_json", - "time 0.2.26", + "time 0.2.23", "tracing", "tracing-subscriber", ] [[package]] name = "thiserror" -version = "1.0.25" +version = "1.0.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fa6f76457f59514c7eeb4e59d891395fab0b2fd1d40723ae737d64153392e9c6" +checksum = "318234ffa22e0920fe9a40d7b8369b5f649d490980cf7aadcf1eb91594869b42" dependencies = [ "thiserror-impl", ] [[package]] name = "thiserror-impl" -version = "1.0.25" +version = "1.0.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8a36768c0fbf1bb15eca10defa29526bda730a2376c2ab4393ccfa16fb1a318d" +checksum = "cae2447b6282786c3493999f40a9be2a6ad20cb8bd268b0a0dbf5a065535c0ab" dependencies = [ - "proc-macro2 1.0.27", - "quote 1.0.9", - "syn 1.0.72", + "proc-macro2 1.0.24", + "quote 1.0.7", + "syn 1.0.48", ] [[package]] name = "thread_local" -version = "1.1.3" +version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8018d24e04c95ac8790716a5987d0fec4f8b27249ffa0f7d33f1369bdfb88cbd" +checksum = "d40c6d1b69745a6ec6fb1ca717914848da4b44ae29d9b3080cbee91d72a69b14" dependencies = [ - "once_cell", + "lazy_static", ] [[package]] @@ -3167,9 +3184,9 @@ dependencies = [ [[package]] name = "time" -version = "0.2.26" +version = "0.2.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "08a8cbfbf47955132d0202d1662f49b2423ae35862aee471f3ba4b133358f372" +checksum = "bcdaeea317915d59b2b4cd3b5efcd156c309108664277793f5351700c02ce98b" dependencies = [ "const_fn", "libc", @@ -3197,10 +3214,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e5c3be1edfad6027c69f5491cf4cb310d1a71ecd6af742788c6ff8bced86b8fa" dependencies = [ "proc-macro-hack", - "proc-macro2 1.0.27", - "quote 1.0.9", + "proc-macro2 1.0.24", + "quote 1.0.7", "standback", - "syn 1.0.72", + "syn 1.0.48", ] [[package]] @@ -3214,18 +3231,9 @@ dependencies = [ [[package]] name = "tinyvec" -version = "1.2.0" +version = "0.3.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b5220f05bb7de7f3f53c7c065e1199b3172696fe2db9f9c4d8ad9b4ee74c342" -dependencies = [ - "tinyvec_macros", -] - -[[package]] -name = "tinyvec_macros" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cda74da7e1a664f795bb1f8a87ec406fb89a02522cf6e50620d016add6dbbf5c" +checksum = "238ce071d267c5710f9d31451efec16c5ee22de34df17cc05e56cbc92e967117" [[package]] name = "tokio" @@ -3234,8 +3242,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5a09c0b5bb588872ab2f09afa13ee6e9dac11e10a0ec9e8e3ba39a5a5d530af6" dependencies = [ "bytes 0.4.12", - "futures 0.1.31", - "mio 0.6.23", + "futures 0.1.30", + "mio 0.6.22", "num_cpus", "tokio-current-thread", "tokio-executor", @@ -3248,9 +3256,9 @@ dependencies = [ [[package]] name = "tokio" -version = "0.2.25" +version = "0.2.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6703a273949a90131b290be1fe7b039d0fc884aa1935860dfcbe056f28cd8092" +checksum = "5d34ca54d84bf2b5b4d7d31e901a8464f7b60ac145a284fba25ceb801f2ddccd" dependencies = [ "bytes 0.5.6", "fnv", @@ -3258,17 +3266,17 @@ dependencies = [ "iovec", "lazy_static", "memchr", - "mio 0.6.23", + "mio 0.6.22", "num_cpus", - "pin-project-lite 0.1.12", + "pin-project-lite 0.1.11", "slab", ] [[package]] name = "tokio" -version = "1.6.1" +version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0a38d31d7831c6ed7aad00aa4c12d9375fd225a6dd77da1d25b707346319a975" +checksum = "83f0c8e7c0addab50b663055baf787d0af7f413a46e6e7fb9559a4e4db7137a5" dependencies = [ "autocfg 1.0.1", "bytes 1.0.1", @@ -3292,7 +3300,7 @@ checksum = "8fb220f46c53859a4b7ec083e41dec9778ff0b1851c0942b211edb89e0ccdc46" dependencies = [ "bytes 0.4.12", "either", - "futures 0.1.31", + "futures 0.1.30", ] [[package]] @@ -3301,7 +3309,7 @@ version = "0.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b1de0e32a83f131e002238d7ccde18211c0a5397f60cbfffcb112868c2e0e20e" dependencies = [ - "futures 0.1.31", + "futures 0.1.30", "tokio-executor", ] @@ -3312,7 +3320,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fb2d1b8f4548dbf5e1f7818512e9c406860678f29c300cdf0ebac72d1a3a1671" dependencies = [ "crossbeam-utils 0.7.2", - "futures 0.1.31", + "futures 0.1.30", ] [[package]] @@ -3322,19 +3330,19 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "57fc868aae093479e3131e3d165c93b1c7474109d13c90ec0dda2a1bbfff0674" dependencies = [ "bytes 0.4.12", - "futures 0.1.31", + "futures 0.1.30", "log", ] [[package]] name = "tokio-macros" -version = "1.2.0" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c49e3df43841dafb86046472506755d8501c5615673955f6aa17181125d13c37" +checksum = "caf7b11a536f46a809a8a9f0bb4237020f70ecbf115b842360afb127ea2fda57" dependencies = [ - "proc-macro2 1.0.27", - "quote 1.0.9", - "syn 1.0.72", + "proc-macro2 1.0.24", + "quote 1.0.7", + "syn 1.0.48", ] [[package]] @@ -3344,7 +3352,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f7d995660bd2b7f8c1568414c1126076c13fbb725c40112dc0120b78eb9b717b" dependencies = [ "native-tls", - "tokio 1.6.1", + "tokio 1.5.0", ] [[package]] @@ -3354,10 +3362,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "09bc590ec4ba8ba87652da2068d150dcada2cfa2e07faae270a5e0409aa51351" dependencies = [ "crossbeam-utils 0.7.2", - "futures 0.1.31", + "futures 0.1.30", "lazy_static", "log", - "mio 0.6.23", + "mio 0.6.22", "num_cpus", "parking_lot 0.9.0", "slab", @@ -3373,7 +3381,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "edfe50152bc8164fcc456dab7891fa9bf8beaf01c5ee7e1dd43a397c3cf87dee" dependencies = [ "fnv", - "futures 0.1.31", + "futures 0.1.30", ] [[package]] @@ -3383,9 +3391,9 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "98df18ed66e3b72e742f185882a9e201892407957e45fbff8da17ae7a7c51f72" dependencies = [ "bytes 0.4.12", - "futures 0.1.31", + "futures 0.1.30", "iovec", - "mio 0.6.23", + "mio 0.6.22", "tokio-io", "tokio-reactor", ] @@ -3399,7 +3407,7 @@ dependencies = [ "crossbeam-deque 0.7.3", "crossbeam-queue", "crossbeam-utils 0.7.2", - "futures 0.1.31", + "futures 0.1.30", "lazy_static", "log", "num_cpus", @@ -3414,7 +3422,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "93044f2d313c95ff1cb7809ce9a7a05735b012288a888b62d4434fd58c94f296" dependencies = [ "crossbeam-utils 0.7.2", - "futures 0.1.31", + "futures 0.1.30", "slab", "tokio-executor", ] @@ -3426,7 +3434,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9a70f4fcd7b3b24fb194f837560168208f669ca8cb70d0c4b862944452396343" dependencies = [ "native-tls", - "tokio 0.2.25", + "tokio 0.2.22", ] [[package]] @@ -3439,78 +3447,64 @@ dependencies = [ "futures-core", "futures-sink", "log", - "pin-project-lite 0.1.12", - "tokio 0.2.25", -] - -[[package]] -name = "tokio-util" -version = "0.6.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1caa0b0c8d94a049db56b5acf8cba99dc0623aab1b26d5b5f5e2d945846b3592" -dependencies = [ - "bytes 1.0.1", - "futures-core", - "futures-sink", - "log", - "pin-project-lite 0.2.6", - "tokio 1.6.1", + "pin-project-lite 0.1.11", + "tokio 0.2.22", ] [[package]] name = "tower-service" -version = "0.3.1" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "360dfd1d6d30e05fda32ace2c8c70e9c0a9da713275777f5a4dbb8a1893930c6" +checksum = "e987b6bf443f4b5b3b6f38704195592cca41c5bb7aedd3c3693c7081f8289860" [[package]] name = "tracing" -version = "0.1.26" +version = "0.1.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "09adeb8c97449311ccd28a427f96fb563e7fd31aabf994189879d9da2394b89d" +checksum = "b0987850db3733619253fe60e17cb59b82d37c7e6c0236bb81e4d6b87c879f27" dependencies = [ - "cfg-if 1.0.0", + "cfg-if 0.1.10", "log", - "pin-project-lite 0.2.6", + "pin-project-lite 0.1.11", "tracing-attributes", "tracing-core", ] [[package]] name = "tracing-attributes" -version = "0.1.15" +version = "0.1.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c42e6fa53307c8a17e4ccd4dc81cf5ec38db9209f59b222210375b54ee40d1e2" +checksum = "80e0ccfc3378da0cce270c946b676a376943f5cd16aeba64568e7939806f4ada" dependencies = [ - "proc-macro2 1.0.27", - "quote 1.0.9", - "syn 1.0.72", + "proc-macro2 1.0.24", + "quote 1.0.7", + "syn 1.0.48", ] [[package]] name = "tracing-core" -version = "0.1.18" +version = "0.1.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a9ff14f98b1a4b289c6248a023c1c2fa1491062964e9fed67ab29c4e4da4a052" +checksum = "f50de3927f93d202783f4513cda820ab47ef17f624b03c096e86ef00c67e6b5f" dependencies = [ "lazy_static", ] [[package]] name = "tracing-futures" -version = "0.2.5" +version = "0.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "97d095ae15e245a057c8e8451bab9b3ee1e1f68e9ba2b4fbc18d0ac5237835f2" +checksum = "ab7bb6f14721aa00656086e9335d363c5c8747bae02ebe32ea2c7dece5689b4c" dependencies = [ - "pin-project", + "pin-project 0.4.27", "tracing", ] [[package]] name = "tracing-log" -version = "0.1.2" +version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a6923477a48e41c1951f1999ef8bb5a3023eb723ceadafe78ffb65dc366761e3" +checksum = "5e0f8c7178e13481ff6765bd169b33e8d554c5d2bbede5e32c356194be02b9b9" dependencies = [ "lazy_static", "log", @@ -3529,9 +3523,9 @@ dependencies = [ [[package]] name = "tracing-subscriber" -version = "0.2.18" +version = "0.2.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aa5553bf0883ba7c9cbe493b085c29926bd41b66afc31ff72cf17ff4fb60dcd5" +checksum = "a1fa8f0c8f4c594e4fc9debc1990deab13238077271ba84dd853d54902ee3401" dependencies = [ "ansi_term", "chrono", @@ -3541,7 +3535,7 @@ dependencies = [ "serde", "serde_json", "sharded-slab", - "smallvec 1.6.1", + "smallvec 1.5.0", "thread_local", "tracing", "tracing-core", @@ -3551,46 +3545,41 @@ dependencies = [ [[package]] name = "trust-dns-proto" -version = "0.20.3" +version = "0.19.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ad0d7f5db438199a6e2609debe3f69f808d074e0a2888ee0bccb45fe234d03f4" +checksum = "53861fcb288a166aae4c508ae558ed18b53838db728d4d310aad08270a7d4c2b" dependencies = [ "async-trait", - "cfg-if 1.0.0", - "data-encoding", + "backtrace", "enum-as-inner", - "futures-channel", - "futures-io", - "futures-util", - "idna 0.2.3", - "ipnet", + "futures 0.3.7", + "idna 0.2.0", "lazy_static", "log", - "rand 0.8.3", - "smallvec 1.6.1", + "rand 0.7.3", + "smallvec 1.5.0", "thiserror", - "tinyvec", - "tokio 1.6.1", - "url 2.2.2", + "tokio 0.2.22", + "url 2.2.1", ] [[package]] name = "trust-dns-resolver" -version = "0.20.3" +version = "0.19.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f6ad17b608a64bd0735e67bde16b0636f8aa8591f831a25d18443ed00a699770" +checksum = "6759e8efc40465547b0dfce9500d733c65f969a4cbbfbe3ccf68daaa46ef179e" dependencies = [ - "cfg-if 1.0.0", - "futures-util", + "backtrace", + "cfg-if 0.1.10", + "futures 0.3.7", "ipconfig", "lazy_static", "log", "lru-cache", - "parking_lot 0.11.1", "resolv-conf", - "smallvec 1.6.1", + "smallvec 1.5.0", "thiserror", - "tokio 1.6.1", + "tokio 0.2.22", "trust-dns-proto", ] @@ -3611,9 +3600,9 @@ dependencies = [ [[package]] name = "typenum" -version = "1.13.0" +version = "1.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "879f6906492a7cd215bfa4cf595b600146ccfac0c79bcbd1f3000162af5e8b06" +checksum = "373c8a200f9e67a0c95e62a4f52fbf80c23b4381c05a17845531982fa99e6b33" [[package]] name = "ucd-trie" @@ -3682,18 +3671,18 @@ dependencies = [ [[package]] name = "unicode-bidi" -version = "0.3.5" +version = "0.3.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eeb8be209bb1c96b7c177c7420d26e04eccacb0eeae6b980e35fcb74678107e0" +checksum = "49f2bd0c6468a8230e1db229cff8029217cf623c767ea5d60bfbd42729ea54d5" dependencies = [ "matches", ] [[package]] name = "unicode-normalization" -version = "0.1.19" +version = "0.1.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d54590932941a9e9266f0832deed84ebe1bf2e4c9e4a3554d393d18f5e854bf9" +checksum = "6fb19cf769fa8c6a80a162df694621ebeb4dafb606470b2b2fce0be40a98a977" dependencies = [ "tinyvec", ] @@ -3712,9 +3701,9 @@ checksum = "fc72304796d0818e357ead4e000d19c9c174ab23dc11093ac919054d20a6a7fc" [[package]] name = "unicode-xid" -version = "0.2.2" +version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8ccb82d61f80a663efe1f787a51b16b5a51e3314d6ac365b08639f52387b33f3" +checksum = "f7fe0bb3479651439c9112f72b6c505038574c9fbb575ed1bf3b797fa39dd564" [[package]] name = "url" @@ -3729,12 +3718,12 @@ dependencies = [ [[package]] name = "url" -version = "2.2.2" +version = "2.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a507c383b2d33b5fc35d1861e77e6b383d158b2da5e14fe51b83dfedf6fd578c" +checksum = "9ccd964113622c8e9322cfac19eb1004a07e636c545f325da085d5cdde6f1f8b" dependencies = [ "form_urlencoded", - "idna 0.2.3", + "idna 0.2.0", "matches", "percent-encoding 2.1.0", ] @@ -3760,15 +3749,15 @@ dependencies = [ [[package]] name = "vcpkg" -version = "0.2.13" +version = "0.2.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "025ce40a007e1907e58d5bc1a594def78e5573bb0b1160bc389634e8f12e4faa" +checksum = "6454029bf181f092ad1b853286f23e2c507d8e8194d01d92da4a55c274a5508c" [[package]] name = "version_check" -version = "0.9.3" +version = "0.9.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5fecdca9a5291cc2b8dcf7dc02453fee791a280f3743cb0905f8822ae463b3fe" +checksum = "b5a972e5669d67ba988ce3dc826706fb0a8b01471c088cb0b6110b805cc36aed" [[package]] name = "void" @@ -3793,7 +3782,7 @@ version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b6395efa4784b027708f7451087e647ec73cc74f5d9bc2e418404248d679a230" dependencies = [ - "futures 0.1.31", + "futures 0.1.30", "log", "try-lock", ] @@ -3822,11 +3811,11 @@ checksum = "1a143597ca7c7793eff794def352d41792a93c481eb1042423ff7ff72ba2c31f" [[package]] name = "wasm-bindgen" -version = "0.2.74" +version = "0.2.68" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d54ee1d4ed486f78874278e63e4069fc1ab9f6a18ca492076ffb90c5eb2997fd" +checksum = "1ac64ead5ea5f05873d7c12b545865ca2b8d28adfc50a49b84770a3a97265d42" dependencies = [ - "cfg-if 1.0.0", + "cfg-if 0.1.10", "serde", "serde_json", "wasm-bindgen-macro", @@ -3834,26 +3823,26 @@ dependencies = [ [[package]] name = "wasm-bindgen-backend" -version = "0.2.74" +version = "0.2.68" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3b33f6a0694ccfea53d94db8b2ed1c3a8a4c86dd936b13b9f0a15ec4a451b900" +checksum = "f22b422e2a757c35a73774860af8e112bff612ce6cb604224e8e47641a9e4f68" dependencies = [ "bumpalo", "lazy_static", "log", - "proc-macro2 1.0.27", - "quote 1.0.9", - "syn 1.0.72", + "proc-macro2 1.0.24", + "quote 1.0.7", + "syn 1.0.48", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-futures" -version = "0.4.24" +version = "0.4.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5fba7978c679d53ce2d0ac80c8c175840feb849a161664365d1287b41f2e67f1" +checksum = "b7866cab0aa01de1edf8b5d7936938a7e397ee50ce24119aef3e1eaa3b6171da" dependencies = [ - "cfg-if 1.0.0", + "cfg-if 0.1.10", "js-sys", "wasm-bindgen", "web-sys", @@ -3861,38 +3850,38 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro" -version = "0.2.74" +version = "0.2.68" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "088169ca61430fe1e58b8096c24975251700e7b1f6fd91cc9d59b04fb9b18bd4" +checksum = "6b13312a745c08c469f0b292dd2fcd6411dba5f7160f593da6ef69b64e407038" dependencies = [ - "quote 1.0.9", + "quote 1.0.7", "wasm-bindgen-macro-support", ] [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.74" +version = "0.2.68" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "be2241542ff3d9f241f5e2cb6dd09b37efe786df8851c54957683a49f0987a97" +checksum = "f249f06ef7ee334cc3b8ff031bfc11ec99d00f34d86da7498396dc1e3b1498fe" dependencies = [ - "proc-macro2 1.0.27", - "quote 1.0.9", - "syn 1.0.72", + "proc-macro2 1.0.24", + "quote 1.0.7", + "syn 1.0.48", "wasm-bindgen-backend", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-shared" -version = "0.2.74" +version = "0.2.68" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d7cff876b8f18eed75a66cf49b65e7f967cb354a7aa16003fb55dbfd25b44b4f" +checksum = "1d649a3145108d7d3fbcde896a468d1bd636791823c9921135218ad89be08307" [[package]] name = "web-sys" -version = "0.3.51" +version = "0.3.45" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e828417b379f3df7111d3a2a9e5753706cae29c41f7c4029ee9fd77f3e09e582" +checksum = "4bf6ef87ad7ae8008e15a355ce696bed26012b7caa21605188cfd8214ab51e2d" dependencies = [ "js-sys", "wasm-bindgen", @@ -3992,6 +3981,6 @@ checksum = "b07db065a5cf61a7e4ba64f29e67db906fb1787316516c4e6e5ff0fea1efcd8a" [[package]] name = "zeroize" -version = "1.3.0" +version = "1.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4756f7db3f7b5574938c3eb1c117038b8e07f95ee6718c0efad4ac21508f1efd" +checksum = "05f33972566adbd2d3588b0491eb94b98b43695c4ef897903470ede4f3f5a28a" diff --git a/Cargo.toml b/Cargo.toml index c5f99689..f1c1b922 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -16,11 +16,11 @@ base64 = "0.13.0" dirs = "3.0.2" rust-crypto = "0.2.36" retry = "1.2.1" -trust-dns-resolver = "0.20.3" -rand = "0.8.3" +trust-dns-resolver = "0.19.6" +rand = "0.7.3" gethostname = "0.2.1" -reqwest = { version = "0.11.3", features = ["blocking"] } -futures = "0.3.15" +reqwest = { version = "0.10.8", features = ["blocking"] } +futures = "0.3" timeout-readwrite = "0.3.1" lazy_static = "1.4.0" @@ -31,23 +31,23 @@ flate2 = "1.0.20" # tar gz tar = "0.4.35" # logger -tracing = "0.1.26" -tracing-subscriber = "0.2.18" +tracing = "0.1" +tracing-subscriber = "0.2" # Docker deps # shiplift = "0.6.0" # Filesystem -sysinfo = "0.18.2" +sysinfo = "0.16.4" # Jinja2 tera = "1.10.0" # Json -serde = "1.0.126" -serde_json = "1.0.64" -serde_derive = "1.0.126" +serde = "1.0.114" +serde_json = "1.0.57" +serde_derive = "1.0" # AWS deps -tokio = { version = "1.6.1", features = ["full"] } +tokio = { version = "1.5.0", features = ["full"] } rusoto_core = "0.46.0" rusoto_sts = "0.46.0" rusoto_credential = "0.46.0" diff --git a/lib/aws/bootstrap/chart_values/pleco.yaml b/lib/aws/bootstrap/chart_values/pleco.yaml new file mode 100644 index 00000000..78a4b962 --- /dev/null +++ b/lib/aws/bootstrap/chart_values/pleco.yaml @@ -0,0 +1,20 @@ +enabledFeatures: + disableDryRun: true + checkInterval: 120 + kubernetes: "in" + awsRegions: + - eu-west-3 + - us-east-2 + rds: true + documentdb: true + elasticache: true + eks: true + elb: true + ebs: true + vpc: true + s3: true + kms: true + cloudwatchLogs: true + iam: true + sshKeys: true + ecr: true \ No newline at end of file diff --git a/lib/aws/bootstrap/eks-master-cluster.j2.tf b/lib/aws/bootstrap/eks-master-cluster.j2.tf index 37eb65e6..cd0f6766 100644 --- a/lib/aws/bootstrap/eks-master-cluster.j2.tf +++ b/lib/aws/bootstrap/eks-master-cluster.j2.tf @@ -21,7 +21,7 @@ resource "aws_cloudwatch_log_group" "eks_cloudwatch_log_group" { } resource "aws_eks_cluster" "eks_cluster" { - name = "qovery-${var.kubernetes_cluster_id}" + name = var.kubernetes_cluster_name role_arn = aws_iam_role.eks_cluster.arn version = var.eks_k8s_versions.masters diff --git a/lib/aws/bootstrap/helm-alertmanager-discord.tf b/lib/aws/bootstrap/helm-alertmanager-discord.tf deleted file mode 100644 index 0e3e5bc1..00000000 --- a/lib/aws/bootstrap/helm-alertmanager-discord.tf +++ /dev/null @@ -1,50 +0,0 @@ -//resource "helm_release" "alertmanager_discord" { -// name = "alertmanager-discord" -// chart = "common/charts/alertmanager-discord" -// namespace = "prometheus" -// create_namespace = true -// atomic = true -// max_history = 50 -// -// set { -// name = "replicaCount" -// value = "1" -// } -// -// # Interrupt channel -// set { -// name = "application.environmentVariables.DISCORD_WEBHOOK" -// value = var.discord_api_key -// } -// -// set { -// name = "resources.limits.cpu" -// value = "50m" -// } -// -// set { -// name = "resources.requests.cpu" -// value = "50m" -// } -// -// set { -// name = "resources.limits.memory" -// value = "50Mi" -// } -// -// set { -// name = "resources.requests.memory" -// value = "50Mi" -// } -// -// set { -// name = "forced_upgrade" -// value = var.forced_upgrade -// } -// -// depends_on = [ -// aws_eks_cluster.eks_cluster, -// helm_release.aws_vpc_cni, -// helm_release.cluster_autoscaler, -// ] -//} \ No newline at end of file diff --git a/lib/aws/bootstrap/helm-aws-iam-eks-user-mapper.tf b/lib/aws/bootstrap/helm-aws-iam-eks-user-mapper.tf index 4a8e9610..ca777451 100644 --- a/lib/aws/bootstrap/helm-aws-iam-eks-user-mapper.tf +++ b/lib/aws/bootstrap/helm-aws-iam-eks-user-mapper.tf @@ -31,63 +31,4 @@ resource "aws_iam_user_policy" "iam_eks_user_mapper" { ] } EOF -} - -//resource "helm_release" "iam_eks_user_mapper" { -// name = "iam-eks-user-mapper" -// chart = "charts/iam-eks-user-mapper" -// namespace = "kube-system" -// atomic = true -// max_history = 50 -// -// set { -// name = "aws.accessKey" -// value = aws_iam_access_key.iam_eks_user_mapper.id -// } -// -// set { -// name = "aws.secretKey" -// value = aws_iam_access_key.iam_eks_user_mapper.secret -// } -// -// set { -// name = "aws.region" -// value = var.region -// } -// -// set { -// name = "syncIamGroup" -// value = "Admins" -// } -// -// # Limits -// set { -// name = "resources.limits.cpu" -// value = "20m" -// } -// -// set { -// name = "resources.requests.cpu" -// value = "10m" -// } -// -// set { -// name = "resources.limits.memory" -// value = "32Mi" -// } -// -// set { -// name = "resources.requests.memory" -// value = "32Mi" -// } -// -// set { -// name = "forced_upgrade" -// value = var.forced_upgrade -// } -// -// depends_on = [ -// aws_eks_cluster.eks_cluster, -// helm_release.aws_vpc_cni, -// ] -//} +} \ No newline at end of file diff --git a/lib/aws/bootstrap/helm-aws-limits-exporter.tf b/lib/aws/bootstrap/helm-aws-limits-exporter.tf deleted file mode 100644 index c3b4cbd0..00000000 --- a/lib/aws/bootstrap/helm-aws-limits-exporter.tf +++ /dev/null @@ -1,65 +0,0 @@ -// temporary removed as we need to check the business support first before deploying it -// otherwise it crashes all the time -//resource "aws_iam_user" "iam_aws_limits_exporter" { -// name = "qovery-aws-limits-exporter-${var.kubernetes_cluster_id}" -// -// tags = local.tags_eks -//} -// -//resource "aws_iam_access_key" "iam_aws_limits_exporter" { -// user = aws_iam_user.iam_aws_limits_exporter.name -//} -// -//resource "aws_iam_user_policy" "iam_aws_limits_exporter" { -// name = aws_iam_user.iam_aws_limits_exporter.name -// user = aws_iam_user.iam_aws_limits_exporter.name -// -// policy = <&1 | grep -ic 'No resources found')" == "0" ] ; then - exit 0 - fi - - for kind in daemonSet clusterRole clusterRoleBinding serviceAccount; do - echo "setting annotations and labels on $kind/aws-node" - kubectl -n kube-system annotate --overwrite $kind aws-node meta.helm.sh/release-name=aws-vpc-cni - kubectl -n kube-system annotate --overwrite $kind aws-node meta.helm.sh/release-namespace=kube-system - kubectl -n kube-system label --overwrite $kind aws-node app.kubernetes.io/managed-by=Helm - done - exit 0 -} - -function get_engine_version_to_use() { ## get the engine version for a given cluster. Args: token, api_fqdn, cluster_id - ENGINE_VERSION_CONTROLLER_TOKEN=$1 - API_FQDN=$2 - CLUSTER_ID=$3 - API_URL="https://$API_FQDN/api/v1/engine-version" - - curl -s -H "X-Qovery-Signature: $ENGINE_VERSION_CONTROLLER_TOKEN" "$API_URL?type=cluster&clusterId=$CLUSTER_ID" && exit 0 -} - -function get_agent_version_to_use() { ## get the agent version for a given cluster. Args: token, api_fqdn, cluster_id - AGENT_VERSION_CONTROLLER_TOKEN=$1 - API_FQDN=$2 - CLUSTER_ID=$3 - API_URL="https://$API_FQDN/api/v1/agent-version" - - curl -s -H "X-Qovery-Signature: $AGENT_VERSION_CONTROLLER_TOKEN" "$API_URL?type=cluster&clusterId=$CLUSTER_ID" && exit 0 -} - case $1 in - get_engine_version_to_use) - check_args 3 - get_engine_version_to_use "$2" "$3" "$4" - ;; - get_agent_version_to_use) - check_args 3 - get_agent_version_to_use "$2" "$3" "$4" - ;; get_connection_details) get_connection_details ;; - is_cni_old_installed_version) - is_cni_old_installed_version - ;; - enable_cni_managed_by_helm) - enable_cni_managed_by_helm - ;; *) help exit 1 ;; -esac - -# If ok return nothing -echo "{}" +esac \ No newline at end of file diff --git a/lib/aws/bootstrap/qovery-tf-config.j2.tf b/lib/aws/bootstrap/qovery-tf-config.j2.tf index 5bb0ac05..fb362bab 100644 --- a/lib/aws/bootstrap/qovery-tf-config.j2.tf +++ b/lib/aws/bootstrap/qovery-tf-config.j2.tf @@ -1,35 +1,15 @@ locals { qovery_tf_config = <, + kubernetes_config: &Path, + envs: &[(String, String)], ) -> Result>>, SimpleError> { let chart_prefix = match chart_prefix_path { None => "./", Some(x) => x, }; + let chart_path = |x: &str| -> String { format!("{}/{}", &chart_prefix, x) }; let content_file = File::open(&qovery_terraform_config_file)?; let reader = BufReader::new(content_file); let qovery_terraform_config: AwsQoveryTerraformConfig = match serde_json::from_reader(reader) { @@ -75,25 +78,25 @@ pub fn aws_helm_charts( let prometheus_namespace = HelmChartNamespaces::Prometheus; let loki_namespace = HelmChartNamespaces::Logging; - let loki_service_name = "loki".to_string(); + let loki_kube_dns_prefix = format!("loki.{}.svc", get_chart_namespace(loki_namespace)); // Qovery storage class let q_storage_class = CommonChart { chart_info: ChartInfo { name: "q-storageclass".to_string(), - path: format!("{}/charts/q-storageclass", &chart_prefix), + path: chart_path("/charts/q-storageclass"), ..Default::default() }, }; - let aws_vpc_cni_chart = AwsVpcCniChart { + let mut aws_vpc_cni_chart = AwsVpcCniChart { chart_info: ChartInfo { - name: "aws-node".to_string(), - path: format!("{}/charts/aws-vpc-cni", &chart_prefix), + name: "aws-vpc-cni".to_string(), + path: chart_path("charts/aws-vpc-cni"), values: vec![ ChartSetValue { key: "image.region".to_string(), - value: qovery_terraform_config.region.clone(), + value: chart_config_prerequisites.region.clone(), }, ChartSetValue { key: "image.pullPolicy".to_string(), @@ -103,35 +106,47 @@ pub fn aws_helm_charts( key: "crd.create".to_string(), value: "false".to_string(), }, + // label ENIs ChartSetValue { key: "env.CLUSTER_NAME".to_string(), - value: qovery_terraform_config.cluster_name.clone(), + value: chart_config_prerequisites.cluster_name.clone(), }, + // number of total IP addresses that the daemon should attempt to allocate for pod assignment on the node (init phase) ChartSetValue { key: "env.MINIMUM_IP_TARGET".to_string(), value: "60".to_string(), }, + // number of free IP addresses that the daemon should attempt to keep available for pod assignment on the node ChartSetValue { key: "env.WARM_IP_TARGET".to_string(), value: "10".to_string(), }, + // maximum number of ENIs that will be attached to the node (k8s recommend to avoid going over 100) ChartSetValue { key: "env.MAX_ENI".to_string(), value: "100".to_string(), }, ChartSetValue { key: "resources.requests.cpu".to_string(), - value: "50".to_string(), + value: "50m".to_string(), }, ], ..Default::default() }, }; + let is_cni_old_installed_version = match aws_vpc_cni_chart.is_cni_old_installed_version(kubernetes_config, &envs) { + Ok(x) => x, + Err(e) => return Err(e), + }; + aws_vpc_cni_chart.chart_info.values.push(ChartSetValue { + key: "originalMatchLabels".to_string(), + value: is_cni_old_installed_version.to_string(), + }); let aws_iam_eks_user_mapper = CommonChart { chart_info: ChartInfo { name: "iam-eks-user-mapper".to_string(), - path: "charts/iam-eks-user-mapper".to_string(), + path: chart_path("charts/iam-eks-user-mapper"), values: vec![ ChartSetValue { key: "aws.accessKey".to_string(), @@ -143,7 +158,7 @@ pub fn aws_helm_charts( }, ChartSetValue { key: "image.region".to_string(), - value: qovery_terraform_config.region.clone(), + value: chart_config_prerequisites.region.clone(), }, ChartSetValue { key: "syncIamGroup".to_string(), @@ -174,7 +189,7 @@ pub fn aws_helm_charts( let aws_node_term_handler = CommonChart { chart_info: ChartInfo { name: "aws-node-term-handler".to_string(), - path: "charts/aws-node-termination-handler".to_string(), + path: chart_path("charts/aws-node-termination-handler"), values: vec![ ChartSetValue { key: "nameOverride".to_string(), @@ -217,7 +232,7 @@ pub fn aws_helm_charts( let aws_calico = CommonChart { chart_info: ChartInfo { name: "calico".to_string(), - path: "charts/aws-calico".to_string(), + path: chart_path("charts/aws-calico"), ..Default::default() }, }; @@ -225,19 +240,19 @@ pub fn aws_helm_charts( let cluster_autoscaler = CommonChart { chart_info: ChartInfo { name: "cluster-autoscaler".to_string(), - path: "common/charts/cluster-autoscaler".to_string(), + path: chart_path("common/charts/cluster-autoscaler"), values: vec![ ChartSetValue { key: "cloudProvider".to_string(), - value: "aws".to_string(), + value: chart_config_prerequisites.cloud_provider.clone(), }, ChartSetValue { key: "awsRegion".to_string(), - value: qovery_terraform_config.region.clone(), + value: chart_config_prerequisites.region.clone(), }, ChartSetValue { key: "autoDiscovery.clusterName".to_string(), - value: qovery_terraform_config.cluster_name.clone(), + value: chart_config_prerequisites.cluster_name.clone(), }, ChartSetValue { key: "awsAccessKeyID".to_string(), @@ -260,7 +275,7 @@ pub fn aws_helm_charts( // observability ChartSetValue { key: "serviceMonitor.enabled".to_string(), - value: qovery_terraform_config.feature_flag_metrics_history.clone(), + value: chart_config_prerequisites.ff_metrics_history_enabled.to_string(), }, ChartSetValue { key: "serviceMonitor.namespace".to_string(), @@ -291,15 +306,17 @@ pub fn aws_helm_charts( let coredns_config = CoreDNSConfigChart { chart_info: ChartInfo { name: "coredns".to_string(), - path: format!("{}/charts/coredns-config", &chart_prefix), + path: chart_path("/charts/coredns-config"), values: vec![ ChartSetValue { key: "managed_dns".to_string(), - value: qovery_terraform_config.managed_dns_resolvers_terraform_format.clone(), + value: chart_config_prerequisites.managed_dns_helm_format.clone(), }, ChartSetValue { key: "managed_dns_resolvers".to_string(), - value: qovery_terraform_config.managed_dns_resolvers_terraform_format, + value: chart_config_prerequisites + .managed_dns_resolvers_terraform_format + .clone(), }, ], ..Default::default() @@ -309,8 +326,8 @@ pub fn aws_helm_charts( let external_dns = CommonChart { chart_info: ChartInfo { name: "externaldns".to_string(), - path: "common/charts/external-dns".to_string(), - values_files: vec!["chart_values/external-dns.yaml".to_string()], + path: chart_path("common/charts/external-dns"), + values_files: vec![chart_path("chart_values/external-dns.yaml")], values: vec![ // resources limits ChartSetValue { @@ -337,12 +354,13 @@ pub fn aws_helm_charts( let promtail = CommonChart { chart_info: ChartInfo { name: "promtail".to_string(), - path: "common/charts/promtail".to_string(), - namespace: loki_namespace, + path: chart_path("common/charts/promtail"), + // because of priorityClassName, we need to add it to kube-system + namespace: HelmChartNamespaces::KubeSystem, values: vec![ ChartSetValue { key: "loki.serviceName".to_string(), - value: loki_service_name.clone(), + value: loki_kube_dns_prefix.clone(), }, // it's mandatory to get this class to ensure paused infra will behave properly on restore ChartSetValue { @@ -374,9 +392,9 @@ pub fn aws_helm_charts( let loki = CommonChart { chart_info: ChartInfo { name: "loki".to_string(), - path: "common/charts/loki".to_string(), + path: chart_path("common/charts/loki"), namespace: loki_namespace, - values_files: vec!["chart_values/loki.yaml".to_string()], + values_files: vec![chart_path("chart_values/loki.yaml")], values: vec![ ChartSetValue { key: "config.storage_config.aws.s3".to_string(), @@ -384,7 +402,7 @@ pub fn aws_helm_charts( }, ChartSetValue { key: "config.storage_config.aws.region".to_string(), - value: qovery_terraform_config.region.clone(), + value: chart_config_prerequisites.region.clone(), }, ChartSetValue { key: "aws_iam_loki_storage_key".to_string(), @@ -423,12 +441,12 @@ pub fn aws_helm_charts( let mut prometheus_operator = CommonChart { chart_info: ChartInfo { name: "prometheus-operator".to_string(), - path: "common/charts/prometheus-operator".to_string(), - namespace: HelmChartNamespaces::Logging, + path: chart_path("/common/charts/prometheus-operator"), + namespace: prometheus_namespace, // high timeout because on bootstrap, it's one of the biggest dependencies and on upgrade, it can takes time // to upgrade because of the CRD and the number of elements it has to deploy timeout: "480".to_string(), - values_files: vec!["chart_values/prometheus_operator.yaml".to_string()], + values_files: vec![chart_path("chart_values/prometheus_operator.yaml")], values: vec![ ChartSetValue { key: "nameOverride".to_string(), @@ -510,7 +528,7 @@ pub fn aws_helm_charts( ..Default::default() }, }; - if &qovery_terraform_config.test_cluster == "true" { + if chart_config_prerequisites.test_cluster { prometheus_operator.chart_info.values.push(ChartSetValue { key: "defaultRules.config".to_string(), value: "{}".to_string(), @@ -520,8 +538,8 @@ pub fn aws_helm_charts( let prometheus_adapter = CommonChart { chart_info: ChartInfo { name: "prometheus-adapter".to_string(), - path: "common/charts/prometheus-adapter".to_string(), - namespace: HelmChartNamespaces::Logging, + path: chart_path("common/charts/prometheus-adapter"), + namespace: prometheus_namespace, values: vec![ ChartSetValue { key: "metricsRelistInterval".to_string(), @@ -567,7 +585,7 @@ pub fn aws_helm_charts( let metric_server = CommonChart { chart_info: ChartInfo { name: "metrics-server".to_string(), - path: "common/charts/metrics-server".to_string(), + path: chart_path("common/charts/metrics-server"), values: vec![ ChartSetValue { key: "resources.limits.cpu".to_string(), @@ -590,13 +608,84 @@ pub fn aws_helm_charts( }, }; - // todo: add custom datasource to values_file + let kube_state_metrics = CommonChart { + chart_info: ChartInfo { + name: "kube-state-metrics".to_string(), + namespace: HelmChartNamespaces::Prometheus, + path: chart_path("common/charts/kube-state-metrics"), + values: vec![ + ChartSetValue { + key: "prometheus.monitor.enabled".to_string(), + value: "true".to_string(), + }, + ChartSetValue { + key: "resources.limits.cpu".to_string(), + value: "75m".to_string(), + }, + ChartSetValue { + key: "resources.requests.cpu".to_string(), + value: "75m".to_string(), + }, + ChartSetValue { + key: "resources.limits.memory".to_string(), + value: "128Mi".to_string(), + }, + ChartSetValue { + key: "resources.requests.memory".to_string(), + value: "128Mi".to_string(), + }, + ], + ..Default::default() + }, + }; + + let grafana_datasources = format!( + " +datasources: + datasources.yaml: + apiVersion: 1 + datasources: + - name: Prometheus + type: prometheus + url: \"http://prometheus-operator-prometheus:9090\" + access: proxy + isDefault: true + - name: PromLoki + type: prometheus + url: \"http://{}.{}.svc:3100/loki\" + access: proxy + isDefault: false + - name: Loki + type: loki + url: \"http://{}.{}.svc:3100\" + - name: Cloudwatch + type: cloudwatch + jsonData: + authType: keys + defaultRegion: {} + secureJsonData: + accessKey: '{}' + secretKey: '{}' + ", + &loki.chart_info.name, + get_chart_namespace(loki_namespace), + &loki.chart_info.name, + get_chart_namespace(loki_namespace), + chart_config_prerequisites.region, + qovery_terraform_config.aws_iam_cloudwatch_key, + qovery_terraform_config.aws_iam_cloudwatch_secret, + ); + let grafana = CommonChart { chart_info: ChartInfo { name: "grafana".to_string(), - path: "common/charts/grafana".to_string(), + path: chart_path("common/charts/grafana"), namespace: prometheus_namespace, - values_files: vec!["chart_values/grafana.yaml".to_string()], + values_files: vec![chart_path("chart_values/grafana.yaml")], + yaml_files_content: vec![ChartValuesGenerated { + filename: "grafana_generated.yaml".to_string(), + yaml_content: grafana_datasources, + }], ..Default::default() }, }; @@ -604,9 +693,9 @@ pub fn aws_helm_charts( let cert_manager = CommonChart { chart_info: ChartInfo { name: "cert-manager".to_string(), - path: "common/charts/cert-manager".to_string(), + path: chart_path("common/charts/cert-manager"), namespace: HelmChartNamespaces::CertManager, - values_files: vec!["chart_values/cert-manager.yaml".to_string()], + values_files: vec![chart_path("chart_values/cert-manager.yaml")], values: vec![ ChartSetValue { key: "installCRDs".to_string(), @@ -624,7 +713,7 @@ pub fn aws_helm_charts( }, ChartSetValue { key: "prometheus.servicemonitor.enabled".to_string(), - value: qovery_terraform_config.feature_flag_metrics_history.clone(), + value: chart_config_prerequisites.ff_metrics_history_enabled.to_string(), }, ChartSetValue { key: "prometheus.servicemonitor.prometheusInstance".to_string(), @@ -689,48 +778,48 @@ pub fn aws_helm_charts( let mut cert_manager_config = CommonChart { chart_info: ChartInfo { name: "cert-manager-configs".to_string(), - path: "common/charts/cert-manager-configs".to_string(), + path: chart_path("common/charts/cert-manager-configs"), namespace: HelmChartNamespaces::CertManager, values: vec![ ChartSetValue { key: "externalDnsProvider".to_string(), - value: qovery_terraform_config.external_dns_provider.clone(), + value: chart_config_prerequisites.external_dns_provider.clone(), }, ChartSetValue { key: "acme.letsEncrypt.emailReport".to_string(), - value: qovery_terraform_config.dns_email_report, + value: chart_config_prerequisites.dns_email_report.clone(), }, ChartSetValue { key: "acme.letsEncrypt.acmeUrl".to_string(), - value: qovery_terraform_config.acme_server_url, + value: chart_config_prerequisites.acme_url.clone(), }, ChartSetValue { key: "managedDns".to_string(), - value: qovery_terraform_config.managed_dns_domains_terraform_format, + value: chart_config_prerequisites.managed_dns_helm_format.clone(), }, ], ..Default::default() }, }; - if &qovery_terraform_config.external_dns_provider == "cloudflare" { + if chart_config_prerequisites.external_dns_provider == "cloudflare" { cert_manager_config.chart_info.values.push(ChartSetValue { - key: "cloudflare_api_token".to_string(), - value: qovery_terraform_config.cloudflare_api_token, + key: "provider.cloudflare.apiToken".to_string(), + value: chart_config_prerequisites.cloudflare_api_token.clone(), }); cert_manager_config.chart_info.values.push(ChartSetValue { - key: "cloudflare_email".to_string(), - value: qovery_terraform_config.cloudflare_email, + key: "provider.cloudflare.email".to_string(), + value: chart_config_prerequisites.cloudflare_email.clone(), }) } let nginx_ingress = CommonChart { chart_info: ChartInfo { name: "nginx-ingress".to_string(), - path: "common/charts/nginx-ingress".to_string(), + path: chart_path("common/charts/nginx-ingress"), namespace: HelmChartNamespaces::NginxIngress, // Because of NLB, svc can take some time to start timeout: "300".to_string(), - values_files: vec!["chart_values/nginx-ingress.yaml".to_string()], + values_files: vec![chart_path("chart_values/nginx-ingress.yaml")], values: vec![ // Controller resources limits ChartSetValue { @@ -771,19 +860,19 @@ pub fn aws_helm_charts( }, }; - // todo: add missing parameters let pleco = CommonChart { chart_info: ChartInfo { name: "pleco".to_string(), - path: "common/charts/pleco".to_string(), + path: chart_path("common/charts/pleco"), + values_files: vec![chart_path("chart_values/pleco.yaml")], values: vec![ ChartSetValue { key: "environmentVariables.AWS_ACCESS_KEY_ID".to_string(), - value: qovery_terraform_config.aws_access_key_id, + value: chart_config_prerequisites.aws_access_key_id.clone(), }, ChartSetValue { key: "environmentVariables.AWS_SECRET_ACCESS_KEY".to_string(), - value: qovery_terraform_config.aws_secret_access_key, + value: chart_config_prerequisites.aws_secret_access_key.clone(), }, ChartSetValue { key: "environmentVariables.LOG_LEVEL".to_string(), @@ -794,16 +883,29 @@ pub fn aws_helm_charts( }, }; + let qovery_agent_version: QoveryAgent = match get_qovery_app_version( + QoveryAppName::Agent, + &chart_config_prerequisites.infra_options.agent_version_controller_token, + &chart_config_prerequisites.infra_options.qovery_api_url, + &chart_config_prerequisites.cluster_id, + ) { + Ok(x) => x, + Err(e) => { + return Err(SimpleError { + kind: SimpleErrorKind::Other, + message: Some(format!("Qovery agent version couldn't be retrieved. {}", e)), + }) + } + }; let qovery_agent = CommonChart { chart_info: ChartInfo { name: "qovery-agent".to_string(), - path: "common/charts/qovery-agent".to_string(), + path: chart_path("common/charts/qovery-agent"), namespace: HelmChartNamespaces::Qovery, values: vec![ - // todo: directly get version from the engine, not from terraform helper ChartSetValue { key: "image.tag".to_string(), - value: qovery_terraform_config.qovery_agent_version, + value: qovery_agent_version.version, }, ChartSetValue { key: "replicaCount".to_string(), @@ -811,35 +913,34 @@ pub fn aws_helm_charts( }, ChartSetValue { key: "environmentVariables.NATS_HOST_URL".to_string(), - value: qovery_terraform_config.nats_host_url.clone(), + value: chart_config_prerequisites.infra_options.qovery_nats_url.to_string(), }, ChartSetValue { key: "environmentVariables.NATS_USERNAME".to_string(), - value: qovery_terraform_config.nats_username.clone(), + value: chart_config_prerequisites.infra_options.qovery_nats_user.to_string(), }, ChartSetValue { key: "environmentVariables.NATS_PASSWORD".to_string(), - value: qovery_terraform_config.nats_password.clone(), + value: chart_config_prerequisites + .infra_options + .qovery_nats_password + .to_string(), }, ChartSetValue { key: "environmentVariables.LOKI_URL".to_string(), - value: format!( - "http://{}.{}.svc.cluster.local:3100", - loki_service_name, - get_chart_namespace(loki_namespace) - ), + value: format!("http://{}.cluster.local:3100", loki_kube_dns_prefix), }, ChartSetValue { key: "environmentVariables.CLOUD_REGION".to_string(), - value: qovery_terraform_config.region.clone(), + value: chart_config_prerequisites.region.clone(), }, ChartSetValue { key: "environmentVariables.CLOUD_PROVIDER".to_string(), - value: qovery_terraform_config.cloud_provider.clone(), + value: chart_config_prerequisites.cloud_provider.clone(), }, ChartSetValue { key: "environmentVariables.KUBERNETES_ID".to_string(), - value: qovery_terraform_config.cluster_id, + value: chart_config_prerequisites.cluster_id.clone(), }, // resources limits ChartSetValue { @@ -863,16 +964,29 @@ pub fn aws_helm_charts( }, }; + let qovery_engine_version: QoveryEngine = match get_qovery_app_version( + QoveryAppName::Engine, + &chart_config_prerequisites.infra_options.engine_version_controller_token, + &chart_config_prerequisites.infra_options.qovery_api_url, + &chart_config_prerequisites.cluster_id, + ) { + Ok(x) => x, + Err(e) => { + return Err(SimpleError { + kind: SimpleErrorKind::Other, + message: Some(format!("Qovery engine version couldn't be retrieved. {}", e)), + }) + } + }; let qovery_engine = CommonChart { chart_info: ChartInfo { name: "qovery-engine".to_string(), - path: "common/charts/qovery-engine".to_string(), + path: chart_path("common/charts/qovery-engine"), namespace: HelmChartNamespaces::Qovery, values: vec![ - // todo: directly get version from the engine, not from terraform ChartSetValue { key: "image.tag".to_string(), - value: qovery_terraform_config.qovery_engine_version, + value: qovery_engine_version.version, }, // need kubernetes 1.18, should be well tested before activating it ChartSetValue { @@ -888,28 +1002,31 @@ pub fn aws_helm_charts( value: "aws-ebs-gp2-0".to_string(), }, ChartSetValue { - key: "environmentVariables.NATS_HOST_URL".to_string(), - value: qovery_terraform_config.nats_host_url, + key: "environmentVariables.QOVERY_NATS_URL".to_string(), + value: chart_config_prerequisites.infra_options.qovery_nats_url.to_string(), }, ChartSetValue { - key: "environmentVariables.NATS_USERNAME".to_string(), - value: qovery_terraform_config.nats_username, + key: "environmentVariables.QOVERY_NATS_USER".to_string(), + value: chart_config_prerequisites.infra_options.qovery_nats_user.to_string(), }, ChartSetValue { - key: "environmentVariables.NATS_PASSWORD".to_string(), - value: qovery_terraform_config.nats_password, + key: "environmentVariables.QOVERY_NATS_PASSWORD".to_string(), + value: chart_config_prerequisites + .infra_options + .qovery_nats_password + .to_string(), }, ChartSetValue { key: "environmentVariables.ORGANIZATION".to_string(), - value: qovery_terraform_config.organization_id, + value: chart_config_prerequisites.organization_id.clone(), }, ChartSetValue { key: "environmentVariables.CLOUD_PROVIDER".to_string(), - value: qovery_terraform_config.cloud_provider, + value: chart_config_prerequisites.cloud_provider.clone(), }, ChartSetValue { key: "environmentVariables.REGION".to_string(), - value: qovery_terraform_config.region, + value: chart_config_prerequisites.region.clone(), }, ChartSetValue { key: "environmentVariables.LIB_ROOT_DIR".to_string(), @@ -921,36 +1038,36 @@ pub fn aws_helm_charts( }, // engine resources limits ChartSetValue { - key: "resources.limits.cpu".to_string(), + key: "engineResources.limits.cpu".to_string(), value: "1".to_string(), }, ChartSetValue { - key: "resources.requests.cpu".to_string(), + key: "engineResources.requests.cpu".to_string(), value: "500m".to_string(), }, ChartSetValue { - key: "resources.limits.memory".to_string(), + key: "engineResources.limits.memory".to_string(), value: "512Mi".to_string(), }, ChartSetValue { - key: "resources.requests.memory".to_string(), + key: "engineResources.requests.memory".to_string(), value: "512Mi".to_string(), }, // build resources limits ChartSetValue { - key: "resources.limits.cpu".to_string(), + key: "buildResources.limits.cpu".to_string(), value: "1".to_string(), }, ChartSetValue { - key: "resources.requests.cpu".to_string(), + key: "buildResources.requests.cpu".to_string(), value: "500m".to_string(), }, ChartSetValue { - key: "resources.limits.memory".to_string(), + key: "buildResources.limits.memory".to_string(), value: "4Gi".to_string(), }, ChartSetValue { - key: "resources.requests.memory".to_string(), + key: "buildResources.requests.memory".to_string(), value: "4Gi".to_string(), }, ], @@ -968,41 +1085,38 @@ pub fn aws_helm_charts( let mut level_2: Vec> = vec![]; let mut level_3: Vec> = vec![ - // Box::new(cluster_autoscaler), - // Box::new(aws_iam_eks_user_mapper), - // Box::new(aws_calico), + Box::new(cluster_autoscaler), + Box::new(aws_iam_eks_user_mapper), + Box::new(aws_calico), ]; let mut level_4: Vec> = vec![ - // Box::new(metric_server), - // Box::new(aws_node_term_handler), - // Box::new(external_dns), + Box::new(metric_server), + Box::new(aws_node_term_handler), + Box::new(external_dns), ]; - let level_5: Vec> = vec![ - // Box::new(nginx_ingress), Box::new(cert_manager), Box::new(pleco) - ]; + let level_5: Vec> = vec![Box::new(nginx_ingress), Box::new(cert_manager), Box::new(pleco)]; let mut level_6: Vec> = vec![ - // Box::new(cert_manager_config), - // Box::new(qovery_agent), - // Box::new(qovery_engine), + Box::new(cert_manager_config), + Box::new(qovery_agent), + Box::new(qovery_engine), ]; - // if &qovery_terraform_config.feature_flag_metrics_history == "true" { - // level_2.push(Box::new(prometheus_operator)); - // level_4.push(Box::new(prometheus_adapter)); - // } - // if &qovery_terraform_config.feature_flag_log_history == "true" { - // level_3.push(Box::new(promtail)); - // level_4.push(Box::new(loki)); - // } - // - // if &qovery_terraform_config.feature_flag_metrics_history == "true" - // || &qovery_terraform_config.feature_flag_log_history == "true" - // { - // level_6.push(Box::new(grafana)) - // }; + if chart_config_prerequisites.ff_metrics_history_enabled { + level_2.push(Box::new(prometheus_operator)); + level_4.push(Box::new(prometheus_adapter)); + level_4.push(Box::new(kube_state_metrics)); + } + if chart_config_prerequisites.ff_log_history_enabled { + level_3.push(Box::new(promtail)); + level_4.push(Box::new(loki)); + } + + if chart_config_prerequisites.ff_metrics_history_enabled || chart_config_prerequisites.ff_log_history_enabled { + level_6.push(Box::new(grafana)) + }; Ok(vec![level_1, level_2, level_3, level_4, level_5, level_6]) } @@ -1030,53 +1144,66 @@ impl HelmChart for AwsVpcCniChart { for kind in kinds { info!("setting annotations and labels on {}/aws-node", &kind); - kubectl_exec_with_output( - vec![ - "-n", - "kube-system", - "annotate", - "--overwrite", - kind, - "aws-node", - format!("meta.helm.sh/release-name={}", self.chart_info.name).as_str(), - ], - environment_variables.clone(), - |_| {}, - |_| {}, - ); - kubectl_exec_with_output( - vec![ - "-n", - "kube-system", - "annotate", - "--overwrite", - kind, - "aws-node", - "meta.helm.sh/release-namespace=kube-system", - ], - environment_variables.clone(), - |_| {}, - |_| {}, - ); - kubectl_exec_with_output( - vec![ - "-n", - "kube-system", - "label", - "--overwrite", - kind, - "aws-node", - "app.kubernetes.io/managed-by=Helm", - ], - environment_variables.clone(), - |_| {}, - |_| {}, - ); + let steps = || -> Result<(), SimpleError> { + kubectl_exec_with_output( + vec![ + "-n", + "kube-system", + "annotate", + "--overwrite", + kind, + "aws-node", + format!("meta.helm.sh/release-name={}", self.chart_info.name).as_str(), + ], + environment_variables.clone(), + |_| {}, + |_| {}, + )?; + kubectl_exec_with_output( + vec![ + "-n", + "kube-system", + "annotate", + "--overwrite", + kind, + "aws-node", + "meta.helm.sh/release-namespace=kube-system", + ], + environment_variables.clone(), + |_| {}, + |_| {}, + )?; + kubectl_exec_with_output( + vec![ + "-n", + "kube-system", + "label", + "--overwrite", + kind, + "aws-node", + "app.kubernetes.io/managed-by=Helm", + ], + environment_variables.clone(), + |_| {}, + |_| {}, + )?; + Ok(()) + }; + + if let Err(e) = steps() { + return Err(SimpleError { + kind: SimpleErrorKind::Other, + message: Some(format!( + "error while adding annotations for AWS VPC CNI. {:?}", + e.message + )), + }); + } } info!("AWS CNI successfully deployed"); // sleep in order to be sure the daemonset is updated - sleep(Duration::from_secs(20)) + sleep(Duration::from_secs(30)) } false => info!("AWS CNI is already supported by Helm, nothing to do"), }; @@ -1086,6 +1213,51 @@ impl HelmChart for AwsVpcCniChart { } impl AwsVpcCniChart { + // this is required to know if we need to keep old annotation/labels values or not + fn is_cni_old_installed_version( + &self, + kubernetes_config: &Path, + envs: &[(String, String)], + ) -> Result { + let environment_variables = envs.iter().map(|x| (x.0.as_str(), x.1.as_str())).collect(); + + match kubectl_exec_get_daemonset( + kubernetes_config, + "aws-node", + self.namespace().as_str(), + None, + environment_variables, + ) { + Ok(x) => { + if x.spec.is_none() { + return Err(SimpleError { + kind: SimpleErrorKind::Other, + message: Some(format!( + "spec was not found in json output while looking at daemonset {}", + &self.chart_info.name + )), + }); + } + + match x.spec.unwrap().selector.match_labels.k8s_app { + Some(x) if x == "aws-node" => Ok(true), + _ => Ok(false), + } + } + Err(e) => { + let msg = format!( + "error while getting daemonset info for chart {}, won't deploy CNI chart. {:?}", + &self.chart_info.name, e + ); + error!("{}", &msg); + Err(SimpleError { + kind: SimpleErrorKind::Other, + message: Some(msg), + }) + } + } + } + fn enable_cni_managed_by_helm(&self, kubernetes_config: &Path, envs: &[(String, String)]) -> bool { let environment_variables = envs.iter().map(|x| (x.0.as_str(), x.1.as_str())).collect(); @@ -1097,7 +1269,7 @@ impl AwsVpcCniChart { environment_variables, ) { Ok(x) => { - if x.items.is_empty() { + if x.items.is_some() && x.items.unwrap().is_empty() { true } else { false @@ -1105,7 +1277,7 @@ impl AwsVpcCniChart { } Err(e) => { error!( - "error while getting daemonset info for chart {}, won't deploy CNI cahrt. {:?}", + "error while getting daemonset info for chart {}, won't deploy CNI chart. {:?}", &self.chart_info.name, e ); false diff --git a/src/cloud_provider/aws/kubernetes/mod.rs b/src/cloud_provider/aws/kubernetes/mod.rs index 2c213a1d..8703c65b 100644 --- a/src/cloud_provider/aws/kubernetes/mod.rs +++ b/src/cloud_provider/aws/kubernetes/mod.rs @@ -2,14 +2,14 @@ use std::env; use std::str::FromStr; use itertools::Itertools; -use retry::delay::Fibonacci; +use retry::delay::{Fibonacci, Fixed}; use retry::Error::Operation; use retry::OperationResult; use rusoto_core::Region; use serde::{Deserialize, Serialize}; use tera::Context as TeraContext; -use crate::cloud_provider::aws::kubernetes::helm_charts::aws_helm_charts; +use crate::cloud_provider::aws::kubernetes::helm_charts::{aws_helm_charts, ChartsConfigPrerequisites}; use crate::cloud_provider::aws::kubernetes::node::Node; use crate::cloud_provider::aws::kubernetes::roles::get_default_roles_to_create; use crate::cloud_provider::aws::AWS; @@ -48,7 +48,7 @@ pub mod node; pub mod roles; #[derive(Default, Debug, Clone, PartialEq, Serialize, Deserialize)] -pub struct Options { +pub struct InfraOptions { // AWS related pub eks_zone_a_subnet_blocks: Vec, pub eks_zone_b_subnet_blocks: Vec, @@ -98,7 +98,7 @@ pub struct EKS<'a> { s3: S3, nodes: Vec, template_directory: String, - options: Options, + options: InfraOptions, listeners: Listeners, } @@ -111,7 +111,7 @@ impl<'a> EKS<'a> { region: &str, cloud_provider: &'a AWS, dns_provider: &'a dyn DnsProvider, - options: Options, + options: InfraOptions, nodes: Vec, ) -> Self { let template_directory = format!("{}/aws/bootstrap", context.lib_root_dir()); @@ -145,7 +145,26 @@ impl<'a> EKS<'a> { format!("qovery-kubeconfigs-{}", self.id()) } - fn tera_context(&self) -> TeraContext { + fn managed_dns_resolvers_terraform_format(&self) -> String { + let managed_dns_resolvers: Vec = self + .dns_provider + .resolvers() + .iter() + .map(|x| format!("{}", x.clone().to_string())) + .collect(); + + terraform_list_format(managed_dns_resolvers) + } + + fn lets_encrypt_url(&self) -> String { + match &self.context.is_test_cluster() { + true => "https://acme-staging-v02.api.letsencrypt.org/directory", + false => "https://acme-v02.api.letsencrypt.org/directory", + } + .to_string() + } + + fn tera_context(&self) -> Result { let format_ips = |ips: &Vec| -> Vec { ips.iter().map(|ip| format!("\"{}\"", ip)).collect::>() }; @@ -196,17 +215,9 @@ impl<'a> EKS<'a> { let elasticsearch_cidr_subnet = self.options.elasticsearch_cidr_subnet.clone(); let managed_dns_list = vec![self.dns_provider.name()]; - let managed_dns_domains_helm_format = vec![format!("\"{}\"", self.dns_provider.domain())]; + let managed_dns_domains_helm_format = vec![format!("{}", self.dns_provider.domain())]; let managed_dns_domains_terraform_format = terraform_list_format(vec![self.dns_provider.domain().to_string()]); - - let managed_dns_resolvers: Vec = self - .dns_provider - .resolvers() - .iter() - .map(|x| format!("{}", x.clone().to_string())) - .collect(); - - let managed_dns_resolvers_terraform_format = terraform_list_format(managed_dns_resolvers); + let managed_dns_resolvers_terraform_format = self.managed_dns_resolvers_terraform_format(); let mut context = TeraContext::new(); // Qovery @@ -257,7 +268,7 @@ impl<'a> EKS<'a> { match self.dns_provider.kind() { dns_provider::Kind::Cloudflare => { - context.insert("external_dns_provider", "cloudflare"); + context.insert("external_dns_provider", self.dns_provider.provider_name()); context.insert("cloudflare_api_token", self.dns_provider.token()); context.insert("cloudflare_email", self.dns_provider.account()); } @@ -266,11 +277,7 @@ impl<'a> EKS<'a> { context.insert("dns_email_report", &self.options.tls_email_report); // Pierre suggested renaming to tls_email_report // TLS - let lets_encrypt_url = match &self.context.is_test_cluster() { - true => "https://acme-staging-v02.api.letsencrypt.org/directory", - false => "https://acme-v02.api.letsencrypt.org/directory", - }; - context.insert("acme_server_url", lets_encrypt_url); + context.insert("acme_server_url", &self.lets_encrypt_url()); // Vault context.insert("vault_auth_method", "none"); @@ -296,6 +303,7 @@ impl<'a> EKS<'a> { }; // Other Kubernetes + context.insert("kubernetes_cluster_name", &self.cluster_name()); context.insert("enable_cluster_autoscaler", &true); // AWS @@ -388,7 +396,7 @@ impl<'a> EKS<'a> { context.insert("qovery_ssh_key", self.options.qovery_ssh_key.as_str()); context.insert("discord_api_key", self.options.discord_api_key.as_str()); - context + Ok(context) } fn upgrade(&self, kubernetes_upgrade_status: KubernetesUpgradeStatus) -> Result<(), EngineError> { @@ -427,7 +435,7 @@ impl<'a> EKS<'a> { }; // generate terraform files and copy them into temp dir - let mut context = self.tera_context(); + let mut context = self.tera_context()?; // // Upgrade master nodes @@ -735,7 +743,7 @@ impl<'a> Kubernetes for EKS<'a> { ); // generate terraform files and copy them into temp dir - let context = self.tera_context(); + let context = self.tera_context()?; let _ = cast_simple_error_to_engine_error( self.engine_error_scope(), @@ -786,11 +794,37 @@ impl<'a> Kubernetes for EKS<'a> { .into_iter() .map(|x| (x.0.to_string(), x.1.to_string())) .collect(); + let charts_prerequisites = ChartsConfigPrerequisites { + organization_id: self.cloud_provider.organization_id().to_string(), + infra_options: self.options.clone(), + cluster_id: self.id.clone(), + region: self.region().to_string(), + cluster_name: self.cluster_name().to_string(), + cloud_provider: "aws".to_string(), + test_cluster: self.context.is_test_cluster(), + aws_access_key_id: self.cloud_provider.access_key_id.to_string(), + aws_secret_access_key: self.cloud_provider.secret_access_key.to_string(), + ff_log_history_enabled: self.context.is_feature_enabled(&Features::LogsHistory), + ff_metrics_history_enabled: self.context.is_feature_enabled(&Features::MetricsHistory), + managed_dns_helm_format: self.dns_provider.domain_helm_format(), + managed_dns_resolvers_terraform_format: self.managed_dns_resolvers_terraform_format(), + external_dns_provider: self.dns_provider.provider_name().to_string(), + dns_email_report: self.options.tls_email_report.clone(), + acme_url: self.lets_encrypt_url(), + cloudflare_email: self.dns_provider.account().to_string(), + cloudflare_api_token: self.dns_provider.token().to_string(), + }; let helm_charts_to_deploy = cast_simple_error_to_engine_error( self.engine_error_scope(), self.context.execution_id(), - aws_helm_charts(format!("{}/qovery-tf-config.json", &temp_dir).as_str(), Some(&temp_dir)), + aws_helm_charts( + format!("{}/qovery-tf-config.json", &temp_dir).as_str(), + &charts_prerequisites, + Some(&temp_dir), + &kubeconfig, + &credentials_environment_variables, + ), )?; cast_simple_error_to_engine_error( @@ -876,7 +910,7 @@ impl<'a> Kubernetes for EKS<'a> { ); // generate terraform files and copy them into temp dir - let mut context = self.tera_context(); + let mut context = self.tera_context()?; // pause: remove all worker nodes to reduce the bill but keep master to keep all the deployment config, certificates etc... let worker_nodes: Vec = Vec::new(); @@ -938,7 +972,7 @@ impl<'a> Kubernetes for EKS<'a> { // pause: wait 1h for the engine to have 0 running jobs before pausing and avoid getting unreleased lock (from helm or terraform for example) let metric_name = "taskmanager_nb_running_tasks"; - let wait_engine_job_finish = retry::retry(Fibonacci::from_millis(60000).take(60), || { + let wait_engine_job_finish = retry::retry(Fixed::from_millis(60000).take(60), || { return match kubectl_exec_api_custom_metrics( &kubernetes_config_file_path, self.cloud_provider().credentials_environment_variables(), @@ -1058,7 +1092,7 @@ impl<'a> Kubernetes for EKS<'a> { ); // generate terraform files and copy them into temp dir - let context = self.tera_context(); + let context = self.tera_context()?; let _ = cast_simple_error_to_engine_error( self.engine_error_scope(), diff --git a/src/cloud_provider/helm.rs b/src/cloud_provider/helm.rs index f1cf0cdb..7f2e3cc4 100644 --- a/src/cloud_provider/helm.rs +++ b/src/cloud_provider/helm.rs @@ -30,6 +30,12 @@ pub struct ChartSetValue { pub value: String, } +#[derive(Clone)] +pub struct ChartValuesGenerated { + pub filename: String, + pub yaml_content: String, +} + #[derive(Clone)] pub struct ChartInfo { pub name: String, @@ -43,6 +49,7 @@ pub struct ChartInfo { pub wait: bool, pub values: Vec, pub values_files: Vec, + pub yaml_files_content: Vec, } impl Default for ChartInfo { @@ -54,11 +61,12 @@ impl Default for ChartInfo { action: Deploy, atomic: true, force_upgrade: false, - timeout: "300s".to_string(), + timeout: "180s".to_string(), dry_run: false, wait: true, values: Vec::new(), values_files: Vec::new(), + yaml_files_content: vec![], } } } @@ -115,7 +123,7 @@ pub trait HelmChart: Send { "Error while deploying chart: {:?}", e.message.clone().expect("no message provided") ); - self.on_deploy_failure(&kubernetes_config, &envs); + self.on_deploy_failure(&kubernetes_config, &envs)?; return Err(e); } }; @@ -227,48 +235,55 @@ impl HelmChart for CoreDNSConfigChart { environment_variables.push(("KUBECONFIG", kubernetes_config.to_str().unwrap())); info!("setting annotations and labels on {}/{}", &kind, &self.chart_info.name); - kubectl_exec_with_output( - vec![ - "-n", - "kube-system", - "annotate", - "--overwrite", - &kind, - &self.chart_info.name, - format!("meta.helm.sh/release-name={}", self.chart_info.name).as_str(), - ], - environment_variables.clone(), - |_| {}, - |_| {}, - )?; - kubectl_exec_with_output( - vec![ - "-n", - "kube-system", - "annotate", - "--overwrite", - &kind, - &self.chart_info.name, - "meta.helm.sh/release-namespace=kube-system", - ], - environment_variables.clone(), - |_| {}, - |_| {}, - )?; - kubectl_exec_with_output( - vec![ - "-n", - "kube-system", - "label", - "--overwrite", - &kind, - &self.chart_info.name, - "app.kubernetes.io/managed-by=Helm", - ], - environment_variables.clone(), - |_| {}, - |_| {}, - )?; + let steps = || -> Result<(), SimpleError> { + kubectl_exec_with_output( + vec![ + "-n", + "kube-system", + "annotate", + "--overwrite", + &kind, + &self.chart_info.name, + format!("meta.helm.sh/release-name={}", self.chart_info.name).as_str(), + ], + environment_variables.clone(), + |_| {}, + |_| {}, + )?; + kubectl_exec_with_output( + vec![ + "-n", + "kube-system", + "annotate", + "--overwrite", + &kind, + &self.chart_info.name, + "meta.helm.sh/release-namespace=kube-system", + ], + environment_variables.clone(), + |_| {}, + |_| {}, + )?; + kubectl_exec_with_output( + vec![ + "-n", + "kube-system", + "label", + "--overwrite", + &kind, + &self.chart_info.name, + "app.kubernetes.io/managed-by=Helm", + ], + environment_variables.clone(), + |_| {}, + |_| {}, + )?; + Ok(()) + }; + if let Err(e) = steps() { + return Err(e); + }; + Ok(()) } diff --git a/src/cloud_provider/kubernetes.rs b/src/cloud_provider/kubernetes.rs index d8153f7d..eee078bd 100644 --- a/src/cloud_provider/kubernetes.rs +++ b/src/cloud_provider/kubernetes.rs @@ -35,6 +35,9 @@ pub trait Kubernetes: Listen { fn name_with_id(&self) -> String { format!("{} ({})", self.name(), self.id()) } + fn cluster_name(&self) -> String { + format!("qovery-{}", self.id()) + } fn version(&self) -> &str; fn region(&self) -> &str; fn cloud_provider(&self) -> &dyn CloudProvider; diff --git a/src/cloud_provider/mod.rs b/src/cloud_provider/mod.rs index d855cba9..c7c8eb73 100644 --- a/src/cloud_provider/mod.rs +++ b/src/cloud_provider/mod.rs @@ -15,6 +15,7 @@ pub mod helm; pub mod kubernetes; pub mod metrics; pub mod models; +pub mod qovery; pub mod service; pub mod utilities; diff --git a/src/cloud_provider/qovery.rs b/src/cloud_provider/qovery.rs new file mode 100644 index 00000000..74f32c09 --- /dev/null +++ b/src/cloud_provider/qovery.rs @@ -0,0 +1,56 @@ +use reqwest::{header, Error}; +use serde::de::DeserializeOwned; +use serde::{Deserialize, Serialize}; + +#[derive(Default, Debug, Clone, PartialEq, Serialize, Deserialize)] +pub struct QoveryAgent { + pub kubernetes_id: String, + pub version: String, + pub object_type: String, +} + +#[derive(Default, Debug, Clone, PartialEq, Serialize, Deserialize)] +pub struct QoveryEngine { + pub kubernetes_id: String, + pub version: String, + pub object_type: String, +} + +pub enum QoveryApp { + QoveryAgent, + QoveryEngine, +} + +pub enum QoveryAppName { + Agent, + Engine, +} + +pub fn get_qovery_app_version( + qovery_app_type: QoveryAppName, + token: &str, + api_fqdn: &str, + cluster_id: &str, +) -> Result { + let mut headers = header::HeaderMap::new(); + headers.insert("Content-Type", "application/json".parse().unwrap()); + headers.insert("X-Qovery-Signature", token.parse().unwrap()); + + let app_type = match qovery_app_type { + QoveryAppName::Agent => "agent", + QoveryAppName::Engine => "engine", + }; + + let url = format!( + "https://{}/api/v1/{}-version?type=cluster&clusterId={}", + api_fqdn, app_type, cluster_id + ); + + match reqwest::blocking::Client::new().get(&url).headers(headers).send() { + Ok(x) => match x.json::() { + Ok(qa) => Ok(qa), + Err(e) => Err(e), + }, + Err(e) => Err(e), + } +} diff --git a/src/cmd/helm.rs b/src/cmd/helm.rs index 722042be..36774d9b 100644 --- a/src/cmd/helm.rs +++ b/src/cmd/helm.rs @@ -1,4 +1,4 @@ -use std::io::Error; +use std::io::{Error, Write}; use std::path::Path; use tracing::{error, info, span, Level}; @@ -8,6 +8,10 @@ use crate::cmd::structs::{Helm, HelmChart, HelmHistoryRow}; use crate::cmd::utilities::exec_with_envs_and_output; use crate::error::{SimpleError, SimpleErrorKind}; use chrono::Duration; +use retry::delay::Fixed; +use retry::Error::Operation; +use retry::OperationResult; +use std::fs::File; const HELM_DEFAULT_TIMEOUT_IN_SECONDS: u32 = 300; @@ -66,10 +70,10 @@ pub fn helm_exec_upgrade_with_chart_info

( where P: AsRef, { + let debug = false; + let mut args_string: Vec = vec![ "upgrade", - "-o", - "json", "--kubeconfig", kubernetes_config.as_ref().to_str().unwrap(), "--create-namespace", @@ -83,6 +87,10 @@ where .map(|x| x.to_string()) .collect(); + if debug { + args_string.push("-o".to_string()); + args_string.push("json".to_string()); + } // warn: don't add debug or json output won't work if chart.atomic { args_string.push("--atomic".to_string()) @@ -106,64 +114,96 @@ where args_string.push("-f".to_string()); args_string.push(value_file.clone()); } + for value_file in &chart.yaml_files_content { + let file_path = format!("{}/{}", chart.path, &value_file.filename); + let file_create = || -> Result<(), Error> { + let mut file = File::create(&file_path)?; + file.write_all(value_file.yaml_content.as_bytes())?; + Ok(()) + }; + // no need to validate yaml as it will be done by helm + if let Err(e) = file_create() { + return Err(SimpleError { + kind: SimpleErrorKind::Other, + message: Some(format!( + "error while writing yaml content to file {}\n{}\n{}", + &file_path, value_file.yaml_content, e + )), + }); + }; + + args_string.push("-f".to_string()); + args_string.push(file_path.clone()); + } // add last elements args_string.push(chart.name.to_string()); args_string.push(chart.path.to_string()); - let args = args_string.iter().map(|x| x.as_str()).collect(); - let mut json_output_string = String::new(); let mut error_message = String::new(); - let mut helm_error_during_deployment = SimpleError { - kind: SimpleErrorKind::Other, - message: None, - }; - match helm_exec_with_output( - args, - envs.clone(), - |out| match out { - Ok(line) => json_output_string = line, - Err(err) => error!("{}", &err), - }, - |out| match out { - Ok(line) => { - // helm errors are not json formatted unfortunately - if line.contains("has been rolled back") { - error_message = format!("deployment {} has been rolled back", chart.name); + + let result = retry::retry(Fixed::from_millis(15000).take(3), || { + let args = args_string.iter().map(|x| x.as_str()).collect(); + let mut helm_error_during_deployment = SimpleError { + kind: SimpleErrorKind::Other, + message: None, + }; + match helm_exec_with_output( + args, + envs.clone(), + |out| match out { + Ok(line) => { + if debug { + debug!("{}", line); + } + json_output_string = line + } + Err(err) => error!("{}", &err), + }, + |out| match out { + Ok(line) => { + // helm errors are not json formatted unfortunately + if line.contains("has been rolled back") { + error_message = format!("deployment {} has been rolled back", chart.name); + helm_error_during_deployment.message = Some(error_message.clone()); + warn!("{}. {}", &error_message, &line); + } else if line.contains("has been uninstalled") { + error_message = format!("deployment {} has been uninstalled due to failure", chart.name); + helm_error_during_deployment.message = Some(error_message.clone()); + warn!("{}. {}", &error_message, &line); + // special fix for prometheus operator + } else if line.contains("info: skipping unknown hook: \"crd-install\"") { + debug!("chart {}: {}", chart.name, line); + } else { + error_message = format!("deployment {} has failed", chart.name); + helm_error_during_deployment.message = Some(error_message.clone()); + error!("{}. {}", &error_message, &line); + } + } + Err(err) => { + error_message = format!("helm chart {} failed before deployment. {:?}", chart.name, err); helm_error_during_deployment.message = Some(error_message.clone()); - warn!("{}. {}", &error_message, &line); - } else if line.contains("has been uninstalled") { - error_message = format!("deployment {} has been uninstalled due to failure", chart.name); - helm_error_during_deployment.message = Some(error_message.clone()); - warn!("{}. {}", &error_message, &line); + error!("{}", error_message); + } + }, + ) { + Ok(_) => { + if helm_error_during_deployment.message.is_some() { + OperationResult::Retry(helm_error_during_deployment) } else { - error_message = format!("deployment {} has failed", chart.name); - helm_error_during_deployment.message = Some(error_message.clone()); - error!("{}. {}", &error_message, &line); + OperationResult::Ok(()) } } - Err(err) => { - error_message = format!("helm chart {} failed before deployment. {:?}", chart.name, err); - helm_error_during_deployment.message = Some(error_message.clone()); - error!("{}", error_message); - } - }, - ) { - Ok(_) => { - if helm_error_during_deployment.message.is_some() { - return Err(helm_error_during_deployment); - } + Err(e) => OperationResult::Retry(e), } - Err(e) => { - return Err(SimpleError { - kind: SimpleErrorKind::Other, - message: Some(format!("{}. {:?}", error_message, e.message)), - }) - } - } + }); - Ok(()) + match result { + Ok(_) => Ok(()), + Err(Operation { error, .. }) => return Err(error), + Err(retry::Error::Internal(e)) => return Err(SimpleError::new(SimpleErrorKind::Other, Some(e))), + } } pub fn helm_exec_upgrade

( diff --git a/src/cmd/kubectl.rs b/src/cmd/kubectl.rs index 043b614d..b7ab7b9a 100644 --- a/src/cmd/kubectl.rs +++ b/src/cmd/kubectl.rs @@ -15,7 +15,6 @@ use crate::cmd::structs::{ use crate::cmd::utilities::exec_with_envs_and_output; use crate::constants::KUBECONFIG; use crate::error::{SimpleError, SimpleErrorKind}; -use itertools::Itertools; pub enum ScalingKind { Deployment, diff --git a/src/cmd/structs.rs b/src/cmd/structs.rs index 2e8a70cc..eb0b6548 100644 --- a/src/cmd/structs.rs +++ b/src/cmd/structs.rs @@ -42,12 +42,32 @@ pub struct Metadata { pub uid: String, } -#[derive(Default, Debug, Clone, PartialEq, Serialize, Deserialize)] +#[derive(Default, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] pub struct Daemonset { pub api_version: String, - pub items: Vec, + pub items: Option>, pub kind: String, + pub spec: Option, +} + +#[derive(Default, Serialize, Deserialize)] +#[serde(rename_all = "camelCase")] +pub struct Spec { + pub selector: Selector, +} + +#[derive(Default, Serialize, Deserialize)] +#[serde(rename_all = "camelCase")] +pub struct Selector { + pub match_labels: MatchLabels, +} + +#[derive(Default, Serialize, Deserialize)] +#[serde(rename_all = "camelCase")] +pub struct MatchLabels { + #[serde(rename = "k8s-app")] + pub k8s_app: Option, } #[derive(Serialize, Deserialize, Clone, Eq, PartialEq, Hash)] diff --git a/src/dns_provider/cloudflare.rs b/src/dns_provider/cloudflare.rs index f59fc8aa..f627a90e 100644 --- a/src/dns_provider/cloudflare.rs +++ b/src/dns_provider/cloudflare.rs @@ -38,6 +38,10 @@ impl DnsProvider for Cloudflare { &self.context } + fn provider_name(&self) -> &str { + "cloudflare" + } + fn kind(&self) -> Kind { Kind::Cloudflare } diff --git a/src/dns_provider/mod.rs b/src/dns_provider/mod.rs index 62ae6eab..46b300e8 100644 --- a/src/dns_provider/mod.rs +++ b/src/dns_provider/mod.rs @@ -9,6 +9,7 @@ pub mod cloudflare; pub trait DnsProvider { fn context(&self) -> &Context; + fn provider_name(&self) -> &str; fn kind(&self) -> Kind; fn id(&self) -> &str; fn name(&self) -> &str; @@ -18,6 +19,9 @@ pub trait DnsProvider { fn account(&self) -> &str; fn token(&self) -> &str; fn domain(&self) -> &str; + fn domain_helm_format(&self) -> String { + format!("{{{}}}", self.domain()) + } fn resolvers(&self) -> Vec; fn is_valid(&self) -> Result<(), EngineError>; fn engine_error_scope(&self) -> EngineErrorScope { diff --git a/test_utilities/Cargo.lock b/test_utilities/Cargo.lock index 3dca1d4c..292271a5 100644 --- a/test_utilities/Cargo.lock +++ b/test_utilities/Cargo.lock @@ -33,18 +33,6 @@ dependencies = [ "winapi 0.3.9", ] -[[package]] -name = "arrayref" -version = "0.3.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a4c527152e37cf757a3f78aae5a06fbeefdb07ccc535c980a3208ee3060dd544" - -[[package]] -name = "arrayvec" -version = "0.5.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "23b62fc65de8e4e7f52534fb52b0f3ed04746ae267519eef2a83941e8085068b" - [[package]] name = "async-trait" version = "0.1.42" @@ -115,17 +103,6 @@ version = "1.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cf1de2fe8c75bc145a2f577add951f8134889b4795d47466a54a5c846d691693" -[[package]] -name = "blake2b_simd" -version = "0.5.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "afa748e348ad3be8263be728124b24a24f268266f6f5d58af9d75f6a40b5c587" -dependencies = [ - "arrayref", - "arrayvec", - "constant_time_eq", -] - [[package]] name = "block-buffer" version = "0.7.3" @@ -262,9 +239,28 @@ dependencies = [ [[package]] name = "cmd_lib" -version = "0.7.8" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "475bd7aa7680b4ed8f6bb59745e882bcbaeb39326532bb79ffb1716480d9a274" +checksum = "c7114bcaf989b09f9fb057b7d7c81491bc1558e8a67bd49bf7f682318d8a6501" +dependencies = [ + "cmd_lib_macros", + "faccess", + "lazy_static", + "log", + "os_pipe", +] + +[[package]] +name = "cmd_lib_macros" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "356fd654e9a433e730a826d4e01ea2414ab122ca8a5374eadf6c43a6090f8dd3" +dependencies = [ + "proc-macro-error", + "proc-macro2 1.0.24", + "quote 1.0.8", + "syn 1.0.56", +] [[package]] name = "const_fn" @@ -272,12 +268,6 @@ version = "0.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c478836e029dcef17fb47c89023448c64f781a046e0300e257ad8225ae59afab" -[[package]] -name = "constant_time_eq" -version = "0.1.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "245097e9a4535ee1e3e3931fcfcd55a796a44c643e8596ff6566d68f09b87bbc" - [[package]] name = "cookie" version = "0.12.0" @@ -515,9 +505,9 @@ dependencies = [ [[package]] name = "dirs" -version = "3.0.1" +version = "3.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "142995ed02755914747cc6ca76fc7e4583cd18578746716d0508ea6ed558b9ff" +checksum = "30baa043103c9d0c2a57cf537cc2f35623889dc0d405e6c3cccfadbc81c71309" dependencies = [ "dirs-sys", ] @@ -534,12 +524,12 @@ dependencies = [ [[package]] name = "dirs-sys" -version = "0.3.5" +version = "0.3.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8e93d7f5705de3e49895a2b5e0b8855a1c27f080192ae9c32a6432d50741a57a" +checksum = "03d86534ed367a67548dc68113a0f5db55432fdfbb6e6f9d77704397d95d5780" dependencies = [ "libc", - "redox_users 0.3.5", + "redox_users", "winapi 0.3.9", ] @@ -550,7 +540,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4ebda144c4fe02d1f7ea1a7d9641b6fc6b580adcfa024ae48797ecdeb6825b4d" dependencies = [ "libc", - "redox_users 0.4.0", + "redox_users", "winapi 0.3.9", ] @@ -608,6 +598,17 @@ dependencies = [ "version_check", ] +[[package]] +name = "faccess" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e039175679baf763ddddf4f76900b92d4dae9411ee88cf42d2f11b976b09e07c" +dependencies = [ + "bitflags", + "libc", + "winapi 0.3.9", +] + [[package]] name = "failure" version = "0.1.8" @@ -650,9 +651,9 @@ dependencies = [ [[package]] name = "flate2" -version = "1.0.19" +version = "1.0.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7411863d55df97a419aa64cb4d2f167103ea9d767e2c54a1868b7ac3f6b47129" +checksum = "cd3aec53de10fe96d7d8c565eb17f2c687bb5518a2ec453b5b1252964526abe0" dependencies = [ "cfg-if 1.0.0", "crc32fast", @@ -913,9 +914,9 @@ checksum = "f6503fe142514ca4799d4c26297c4248239fe8838d827db6bd6065c6ed29a6ce" [[package]] name = "git2" -version = "0.13.12" +version = "0.13.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ca6f1a0238d7f8f8fd5ee642f4ebac4dbc03e03d1f78fbe7a3ede35dcf7e2224" +checksum = "d9831e983241f8c5591ed53f17d874833e2fa82cac2625f3888c50cbfe136cba" dependencies = [ "bitflags", "libc", @@ -1339,9 +1340,9 @@ checksum = "47be2f14c678be2fdcab04ab1171db51b2762ce6f0a8ee87c8dd4a04ed216135" [[package]] name = "itertools" -version = "0.9.0" +version = "0.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "284f18f85651fe11e8a991b2adb42cb078325c996ed026d994719efcfca1d54b" +checksum = "69ddb889f9d0d08a67338271fa9b62996bc788c7796a5c18cf057420aaed5eaf" dependencies = [ "either", ] @@ -1394,9 +1395,9 @@ checksum = "18794a8ad5b29321f790b55d93dfba91e125cb1a9edbd4f8e3150acc771c1a5e" [[package]] name = "libgit2-sys" -version = "0.12.14+1.1.0" +version = "0.12.21+1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f25af58e6495f7caf2919d08f212de550cfa3ed2f5e744988938ea292b9f549" +checksum = "86271bacd72b2b9e854c3dcfb82efd538f15f870e4c11af66900effb462f6825" dependencies = [ "cc", "libc", @@ -1767,6 +1768,16 @@ dependencies = [ "vcpkg", ] +[[package]] +name = "os_pipe" +version = "0.9.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fb233f06c2307e1f5ce2ecad9f8121cffbbee2c95428f44ea85222e460d0d213" +dependencies = [ + "libc", + "winapi 0.3.9", +] + [[package]] name = "parking_lot" version = "0.9.0" @@ -1952,6 +1963,30 @@ version = "0.2.10" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ac74c624d6b2d21f425f752262f42188365d7b8ff1aff74c82e45136510a4857" +[[package]] +name = "proc-macro-error" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "da25490ff9892aab3fcf7c36f08cfb902dd3e71ca0f9f9517bea02a73a5ce38c" +dependencies = [ + "proc-macro-error-attr", + "proc-macro2 1.0.24", + "quote 1.0.8", + "syn 1.0.56", + "version_check", +] + +[[package]] +name = "proc-macro-error-attr" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a1be40180e52ecc98ad80b184934baf3d0d29f979574e439af5a55274b35f869" +dependencies = [ + "proc-macro2 1.0.24", + "quote 1.0.8", + "version_check", +] + [[package]] name = "proc-macro-hack" version = "0.5.19" @@ -1999,7 +2034,7 @@ dependencies = [ name = "qovery-engine" version = "0.1.0" dependencies = [ - "base64 0.12.3", + "base64 0.13.0", "chrono", "cmd_lib", "digitalocean", @@ -2319,17 +2354,6 @@ dependencies = [ "bitflags", ] -[[package]] -name = "redox_users" -version = "0.3.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "de0737333e7a9502c789a36d7c7fa6092a49895d4faa31ca5df163857ded2e9d" -dependencies = [ - "getrandom 0.1.16", - "redox_syscall 0.1.57", - "rust-argon2", -] - [[package]] name = "redox_users" version = "0.4.0" @@ -2618,18 +2642,6 @@ dependencies = [ "xml-rs", ] -[[package]] -name = "rust-argon2" -version = "0.8.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4b18820d944b33caa75a71378964ac46f58517c92b6ae5f762636247c09e78fb" -dependencies = [ - "base64 0.13.0", - "blake2b_simd", - "constant_time_eq", - "crossbeam-utils 0.8.4", -] - [[package]] name = "rust-crypto" version = "0.2.36" @@ -3026,13 +3038,12 @@ dependencies = [ [[package]] name = "tar" -version = "0.4.30" +version = "0.4.35" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "489997b7557e9a43e192c527face4feacc78bfbe6eed67fd55c4c9e381cba290" +checksum = "7d779dc6aeff029314570f666ec83f19df7280bb36ef338442cfa8c604021b80" dependencies = [ "filetime", "libc", - "redox_syscall 0.1.57", "xattr", ] @@ -3727,9 +3738,9 @@ checksum = "6a02e4885ed3bc0f2de90ea6dd45ebcbb66dacffe03547fadbb0eeae2770887d" [[package]] name = "walkdir" -version = "2.3.1" +version = "2.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "777182bc735b6424e1a57516d35ed72cb8019d85c8c9bf536dccb3445c1a2f7d" +checksum = "808cf2735cd4b6866113f648b791c6adc5714537bc222d9347bb203386ffda56" dependencies = [ "same-file", "winapi 0.3.9", diff --git a/test_utilities/src/aws.rs b/test_utilities/src/aws.rs index a2a10d6f..6cff7482 100644 --- a/test_utilities/src/aws.rs +++ b/test_utilities/src/aws.rs @@ -1,10 +1,11 @@ extern crate serde; extern crate serde_derive; +use tracing::error; use chrono::Utc; use qovery_engine::cloud_provider::aws::kubernetes::node::Node; -use qovery_engine::cloud_provider::aws::kubernetes::{Options, EKS}; +use qovery_engine::cloud_provider::aws::kubernetes::{InfraOptions, EKS}; use qovery_engine::cloud_provider::aws::AWS; use qovery_engine::cloud_provider::utilities::sanitize_name; use qovery_engine::cloud_provider::TerraformStateCredentials; @@ -35,6 +36,14 @@ pub fn execution_id() -> String { pub fn container_registry_ecr(context: &Context) -> ECR { let secrets = FuncTestsSecrets::new(); + if secrets.AWS_ACCESS_KEY_ID.is_none() + || secrets.AWS_SECRET_ACCESS_KEY.is_none() + || secrets.AWS_DEFAULT_REGION.is_none() + { + error!("Please check your Vault connectivity (token/address) or AWS_ACCESS_KEY_ID/AWS_SECRET_ACCESS_KEY/AWS_DEFAULT_REGION envrionment variables are set"); + std::process::exit(1) + } + ECR::new( context.clone(), "default-ecr-registry-Qovery Test", @@ -87,8 +96,8 @@ pub fn cloud_provider_aws(context: &Context) -> AWS { ) } -pub fn eks_options(secrets: FuncTestsSecrets) -> Options { - Options { +pub fn eks_options(secrets: FuncTestsSecrets) -> InfraOptions { + InfraOptions { eks_zone_a_subnet_blocks: vec![ "10.0.0.0/23".to_string(), "10.0.2.0/23".to_string(), diff --git a/test_utilities/src/utilities.rs b/test_utilities/src/utilities.rs index d9fdeb7f..61438190 100644 --- a/test_utilities/src/utilities.rs +++ b/test_utilities/src/utilities.rs @@ -183,7 +183,13 @@ impl FuncTestsSecrets { } }; - let client = hashicorp_vault::Client::new(vault_config.address, vault_config.token).unwrap(); + let client = match hashicorp_vault::Client::new(vault_config.address, vault_config.token) { + Ok(x) => x, + Err(e) => { + println!("error: wasn't able to contact Vault server. {:?}", e); + return empty_secrets; + } + }; let res: Result = client.get_custom_secret(secret_name); match res { Ok(x) => x, diff --git a/tests/aws/aws_environment.rs b/tests/aws/aws_environment.rs index 131f5564..3a67c1ff 100644 --- a/tests/aws/aws_environment.rs +++ b/tests/aws/aws_environment.rs @@ -27,7 +27,6 @@ use tracing::{span, Level}; // (context_vec, env_vec) // } - // TODO: // - Tests that applications are always restarted when recieving a CREATE action // see: https://github.com/Qovery/engine/pull/269 diff --git a/tests/aws/aws_kubernetes.rs b/tests/aws/aws_kubernetes.rs index 0518e3eb..19e97db2 100644 --- a/tests/aws/aws_kubernetes.rs +++ b/tests/aws/aws_kubernetes.rs @@ -111,8 +111,6 @@ fn create_upgrade_and_destroy_eks_cluster( }; // Destroy - // There is a bug with the current version of Terraform (0.14.10) where the destroy fails, but it works - // It doesn't find any helm charts after destroying the workers and charts have already been destroyed if let Err(err) = tx.delete_kubernetes(&kubernetes) { panic!("{:?}", err) } @@ -188,8 +186,6 @@ fn create_and_destroy_eks_cluster(region: &str, secrets: FuncTestsSecrets, test_ } // Destroy - // There is a bug with the current version of Terraform (0.14.10) where the destroy fails, but it works - // It doesn't find any helm charts after destroying the workers and charts have already been destroyed if let Err(err) = tx.delete_kubernetes(&kubernetes) { panic!("{:?}", err) } @@ -216,7 +212,7 @@ fn create_and_destroy_eks_cluster_in_eu_west_3() { create_and_destroy_eks_cluster( ®ion, secrets, - true, + false, &format!("create_and_destroy_eks_cluster_in_{}", region.replace("-", "_")), ); } @@ -229,7 +225,7 @@ fn create_and_destroy_eks_cluster_in_us_east_2() { create_and_destroy_eks_cluster( ®ion, secrets, - false, + true, &format!("create_and_destroy_eks_cluster_in_{}", region.replace("-", "_")), ); }