From 23c72594632cbec9442fa099426fbea89c364aa8 Mon Sep 17 00:00:00 2001 From: Radu Matei Date: Wed, 21 Feb 2024 21:26:40 +0100 Subject: [PATCH] More WIP Signed-off-by: Radu Matei --- Cargo.lock | 803 ++++++++++++++++++++++------- containerd-shim-spin/Cargo.toml | 19 +- containerd-shim-spin/src/engine.rs | 31 +- 3 files changed, 627 insertions(+), 226 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 2386a6ba..775f710f 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1321,15 +1321,16 @@ dependencies = [ "openssl", "serde", "serde_json", - "spin-app", - "spin-common", - "spin-core", - "spin-loader", - "spin-manifest", + "spin-app 2.3.0-pre0", + "spin-common 2.3.0-pre0", + "spin-componentize", + "spin-core 2.3.0-pre0", + "spin-loader 2.3.0-pre0", + "spin-manifest 2.3.0-pre0", "spin-oci", - "spin-redis-engine", - "spin-trigger", + "spin-trigger 2.3.0-pre0", "spin-trigger-http", + "spin-trigger-redis", "tokio", "trigger-sqs", "url", @@ -1404,18 +1405,18 @@ dependencies = [ [[package]] name = "cranelift-bforest" -version = "0.104.0" +version = "0.104.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d819feeda4c420a18f1e28236ca0ce1177b22bf7c8a44ddee92dfe40de15bcf0" +checksum = "7e7c0d51205b863591dd1e7aaa0fb69c2ea7bed48ffa63d6c4a848b07a35a732" dependencies = [ "cranelift-entity", ] [[package]] name = "cranelift-codegen" -version = "0.104.0" +version = "0.104.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e9b8d03d5bdbca7e5f72b0e0a0f69933ed1f09e24be6c075aa6fe3f802b0cc0c" +checksum = "9ffb467cbc25543e4c20d2ad669bf8275598047b03c89652ad5fe2a0f47fc0e1" dependencies = [ "bumpalo", "cranelift-bforest", @@ -1434,33 +1435,33 @@ dependencies = [ [[package]] name = "cranelift-codegen-meta" -version = "0.104.0" +version = "0.104.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a3fd3664e38e51649b17dc30cfdd561273fe2f590dcd013fb75d9eabc6272dfb" +checksum = "bc7e74aed5c2b91e38d090653506afbd2cd3be1ff70593e2aa6bb82b3c6b77ff" dependencies = [ "cranelift-codegen-shared", ] [[package]] name = "cranelift-codegen-shared" -version = "0.104.0" +version = "0.104.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4b031ec5e605828975952622b5a77d49126f20ffe88d33719a0af66b23a0fc36" +checksum = "9ff2dd24cce0775566da85770cb48aa58fef901cf2bff30275b42e7dbe62cbd5" [[package]] name = "cranelift-control" -version = "0.104.0" +version = "0.104.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fada054d017cf2ed8f7ed2336e0517fc1b19e6825be1790de9eb00c94788362b" +checksum = "e8bcf4d5c73bbca309edf3af2839b5218e5c74cfbf22b0ac492af8a1d11120d9" dependencies = [ "arbitrary", ] [[package]] name = "cranelift-entity" -version = "0.104.0" +version = "0.104.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "177b6f94ae8de6348eb45bf977c79ab9e3c40fc3ac8cb7ed8109560ea39bee7d" +checksum = "286754159b1a685475d6a0b4710832f950d6f4846a817002e2c23ff001321a65" dependencies = [ "serde", "serde_derive", @@ -1468,9 +1469,9 @@ dependencies = [ [[package]] name = "cranelift-frontend" -version = "0.104.0" +version = "0.104.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ebebd23a69a23e3ddea78e98ff3a2de222e88c8e045d81ef4a72f042e0d79dbd" +checksum = "67150a1fef9857caba710f8c0c8223d640f02c0e5d1ebbfc75ed62912599cb6b" dependencies = [ "cranelift-codegen", "log", @@ -1480,15 +1481,15 @@ dependencies = [ [[package]] name = "cranelift-isle" -version = "0.104.0" +version = "0.104.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1571bfc14df8966d12c6121b5325026591a4b4009e22fea0fe3765ab7cd33b96" +checksum = "eb7ceea70d3e0d7f69df7657f99de902e32016731c5a8d2788c1df0215f00952" [[package]] name = "cranelift-native" -version = "0.104.0" +version = "0.104.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "35a69c37e0c10b46fe5527f2397ac821046efbf5f7ec112c8b84df25712f465b" +checksum = "707e5d9384ce4fa3c40af1abf4c3ec49857745cced5187593385f4a2c0b95445" dependencies = [ "cranelift-codegen", "libc", @@ -1497,9 +1498,9 @@ dependencies = [ [[package]] name = "cranelift-wasm" -version = "0.104.0" +version = "0.104.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9b3fef8bbceb8cb56d3f1778b0418d75c5cf12ec571a35fc01eb41abb0227a25" +checksum = "d4d957e3ff2a14c2f974a66c22bfcedcd2bd0272af8dce4236869c3942f5a471" dependencies = [ "cranelift-codegen", "cranelift-entity", @@ -4114,12 +4115,29 @@ dependencies = [ "anyhow", "http 0.2.11", "reqwest", - "spin-app", - "spin-core", - "spin-locked-app", - "spin-outbound-networking", - "spin-world", - "terminal", + "spin-app 2.2.0", + "spin-core 2.2.0", + "spin-locked-app 2.2.0", + "spin-outbound-networking 2.2.0", + "spin-world 2.2.0", + "terminal 0.1.0 (git+https://github.com/fermyon/spin?tag=v2.2.0)", + "tracing", + "url", +] + +[[package]] +name = "outbound-http" +version = "2.3.0-pre0" +dependencies = [ + "anyhow", + "http 0.2.11", + "reqwest", + "spin-app 2.3.0-pre0", + "spin-core 2.3.0-pre0", + "spin-locked-app 2.3.0-pre0", + "spin-outbound-networking 2.3.0-pre0", + "spin-world 2.3.0-pre0", + "terminal 0.1.0", "tracing", "url", ] @@ -4133,11 +4151,29 @@ dependencies = [ "flate2", "mysql_async", "mysql_common", - "spin-app", - "spin-core", - "spin-outbound-networking", - "spin-world", - "table", + "spin-app 2.2.0", + "spin-core 2.2.0", + "spin-outbound-networking 2.2.0", + "spin-world 2.2.0", + "table 2.2.0", + "tokio", + "tracing", + "url", +] + +[[package]] +name = "outbound-mysql" +version = "2.3.0-pre0" +dependencies = [ + "anyhow", + "flate2", + "mysql_async", + "mysql_common", + "spin-app 2.3.0-pre0", + "spin-core 2.3.0-pre0", + "spin-outbound-networking 2.3.0-pre0", + "spin-world 2.3.0-pre0", + "table 2.3.0-pre0", "tokio", "tracing", "url", @@ -4151,11 +4187,28 @@ dependencies = [ "anyhow", "native-tls", "postgres-native-tls", - "spin-app", - "spin-core", - "spin-outbound-networking", - "spin-world", - "table", + "spin-app 2.2.0", + "spin-core 2.2.0", + "spin-outbound-networking 2.2.0", + "spin-world 2.2.0", + "table 2.2.0", + "tokio", + "tokio-postgres", + "tracing", +] + +[[package]] +name = "outbound-pg" +version = "2.3.0-pre0" +dependencies = [ + "anyhow", + "native-tls", + "postgres-native-tls", + "spin-app 2.3.0-pre0", + "spin-core 2.3.0-pre0", + "spin-outbound-networking 2.3.0-pre0", + "spin-world 2.3.0-pre0", + "table 2.3.0-pre0", "tokio", "tokio-postgres", "tracing", @@ -4168,11 +4221,26 @@ source = "git+https://github.com/fermyon/spin?tag=v2.2.0#eebfae1d6de6a166da16ec8 dependencies = [ "anyhow", "redis 0.21.7", - "spin-app", - "spin-core", - "spin-outbound-networking", - "spin-world", - "table", + "spin-app 2.2.0", + "spin-core 2.2.0", + "spin-outbound-networking 2.2.0", + "spin-world 2.2.0", + "table 2.2.0", + "tokio", + "tracing", +] + +[[package]] +name = "outbound-redis" +version = "2.3.0-pre0" +dependencies = [ + "anyhow", + "redis 0.21.7", + "spin-app 2.3.0-pre0", + "spin-core 2.3.0-pre0", + "spin-outbound-networking 2.3.0-pre0", + "spin-world 2.3.0-pre0", + "table 2.3.0-pre0", "tokio", "tracing", ] @@ -5707,9 +5775,24 @@ dependencies = [ "ouroboros", "serde", "serde_json", - "spin-core", - "spin-locked-app", - "spin-serde", + "spin-core 2.2.0", + "spin-locked-app 2.2.0", + "spin-serde 2.2.0", + "thiserror", +] + +[[package]] +name = "spin-app" +version = "2.3.0-pre0" +dependencies = [ + "anyhow", + "async-trait", + "ouroboros", + "serde", + "serde_json", + "spin-core 2.3.0-pre0", + "spin-locked-app 2.3.0-pre0", + "spin-serde 2.3.0-pre0", "thiserror", ] @@ -5726,6 +5809,18 @@ dependencies = [ "url", ] +[[package]] +name = "spin-common" +version = "2.3.0-pre0" +dependencies = [ + "anyhow", + "dirs 4.0.0", + "sha2", + "tempfile", + "tokio", + "url", +] + [[package]] name = "spin-componentize" version = "0.1.0" @@ -5760,10 +5855,30 @@ dependencies = [ "wasmtime-wasi-http", ] +[[package]] +name = "spin-core" +version = "2.3.0-pre0" +dependencies = [ + "anyhow", + "async-trait", + "bytes", + "cap-primitives", + "cap-std", + "crossbeam-channel", + "io-extras", + "rustix 0.37.27", + "system-interface", + "tokio", + "tracing", + "wasi-common", + "wasmtime", + "wasmtime-wasi", + "wasmtime-wasi-http", +] + [[package]] name = "spin-http" -version = "2.2.0" -source = "git+https://github.com/fermyon/spin?tag=v2.2.0#eebfae1d6de6a166da16ec8858332f4cc3b6c557" +version = "2.3.0-pre0" dependencies = [ "anyhow", "http 1.0.0", @@ -5772,8 +5887,8 @@ dependencies = [ "indexmap 1.9.3", "percent-encoding", "serde", - "spin-app", - "spin-locked-app", + "spin-app 2.3.0-pre0", + "spin-locked-app 2.3.0-pre0", "tracing", "wasmtime-wasi-http", ] @@ -5785,14 +5900,42 @@ source = "git+https://github.com/fermyon/spin?tag=v2.2.0#eebfae1d6de6a166da16ec8 dependencies = [ "anyhow", "lru 0.9.0", - "spin-app", - "spin-core", - "spin-world", - "table", + "spin-app 2.2.0", + "spin-core 2.2.0", + "spin-world 2.2.0", + "table 2.2.0", + "tokio", + "tracing", +] + +[[package]] +name = "spin-key-value" +version = "2.3.0-pre0" +dependencies = [ + "anyhow", + "lru 0.9.0", + "spin-app 2.3.0-pre0", + "spin-core 2.3.0-pre0", + "spin-world 2.3.0-pre0", + "table 2.3.0-pre0", "tokio", "tracing", ] +[[package]] +name = "spin-key-value-azure" +version = "0.1.0" +dependencies = [ + "anyhow", + "azure_data_cosmos", + "futures", + "serde", + "spin-core 2.3.0-pre0", + "spin-key-value 2.3.0-pre0", + "tokio", + "url", +] + [[package]] name = "spin-key-value-azure" version = "0.1.0" @@ -5802,8 +5945,21 @@ dependencies = [ "azure_data_cosmos", "futures", "serde", - "spin-core", - "spin-key-value", + "spin-core 2.2.0", + "spin-key-value 2.2.0", + "tokio", + "url", +] + +[[package]] +name = "spin-key-value-redis" +version = "0.1.0" +dependencies = [ + "anyhow", + "redis 0.21.7", + "spin-core 2.3.0-pre0", + "spin-key-value 2.3.0-pre0", + "spin-world 2.3.0-pre0", "tokio", "url", ] @@ -5815,13 +5971,26 @@ source = "git+https://github.com/fermyon/spin?tag=v2.2.0#eebfae1d6de6a166da16ec8 dependencies = [ "anyhow", "redis 0.21.7", - "spin-core", - "spin-key-value", - "spin-world", + "spin-core 2.2.0", + "spin-key-value 2.2.0", + "spin-world 2.2.0", "tokio", "url", ] +[[package]] +name = "spin-key-value-sqlite" +version = "0.1.0" +dependencies = [ + "anyhow", + "once_cell", + "rusqlite", + "spin-core 2.3.0-pre0", + "spin-key-value 2.3.0-pre0", + "spin-world 2.3.0-pre0", + "tokio", +] + [[package]] name = "spin-key-value-sqlite" version = "0.1.0" @@ -5830,9 +5999,9 @@ dependencies = [ "anyhow", "once_cell", "rusqlite", - "spin-core", - "spin-key-value", - "spin-world", + "spin-core 2.2.0", + "spin-key-value 2.2.0", + "spin-world 2.2.0", "tokio", ] @@ -5844,9 +6013,21 @@ dependencies = [ "anyhow", "bytesize", "llm", - "spin-app", - "spin-core", - "spin-world", + "spin-app 2.2.0", + "spin-core 2.2.0", + "spin-world 2.2.0", +] + +[[package]] +name = "spin-llm" +version = "2.3.0-pre0" +dependencies = [ + "anyhow", + "bytesize", + "llm", + "spin-app 2.3.0-pre0", + "spin-core 2.3.0-pre0", + "spin-world 2.3.0-pre0", ] [[package]] @@ -5860,9 +6041,25 @@ dependencies = [ "reqwest", "serde", "serde_json", - "spin-core", - "spin-llm", - "spin-world", + "spin-core 2.2.0", + "spin-llm 2.2.0", + "spin-world 2.2.0", + "tracing", +] + +[[package]] +name = "spin-llm-remote-http" +version = "2.3.0-pre0" +dependencies = [ + "anyhow", + "http 0.2.11", + "llm", + "reqwest", + "serde", + "serde_json", + "spin-core 2.3.0-pre0", + "spin-llm 2.3.0-pre0", + "spin-world 2.3.0-pre0", "tracing", ] @@ -5881,7 +6078,7 @@ dependencies = [ "itertools 0.10.5", "lazy_static", "mime_guess", - "outbound-http", + "outbound-http 2.2.0", "path-absolutize", "regex", "reqwest", @@ -5890,12 +6087,49 @@ dependencies = [ "serde_json", "sha2", "shellexpand 3.1.0", - "spin-common", - "spin-locked-app", - "spin-manifest", - "spin-outbound-networking", + "spin-common 2.2.0", + "spin-locked-app 2.2.0", + "spin-manifest 2.2.0", + "spin-outbound-networking 2.2.0", "tempfile", - "terminal", + "terminal 0.1.0 (git+https://github.com/fermyon/spin?tag=v2.2.0)", + "thiserror", + "tokio", + "tokio-util 0.6.10", + "toml 0.8.8", + "tracing", + "walkdir", +] + +[[package]] +name = "spin-loader" +version = "2.3.0-pre0" +dependencies = [ + "anyhow", + "async-trait", + "bytes", + "dirs 4.0.0", + "dunce", + "futures", + "glob", + "itertools 0.10.5", + "lazy_static", + "mime_guess", + "outbound-http 2.3.0-pre0", + "path-absolutize", + "regex", + "reqwest", + "semver", + "serde", + "serde_json", + "sha2", + "shellexpand 3.1.0", + "spin-common 2.3.0-pre0", + "spin-locked-app 2.3.0-pre0", + "spin-manifest 2.3.0-pre0", + "spin-outbound-networking 2.3.0-pre0", + "tempfile", + "terminal 0.1.0", "thiserror", "tokio", "tokio-util 0.6.10", @@ -5914,7 +6148,20 @@ dependencies = [ "ouroboros", "serde", "serde_json", - "spin-serde", + "spin-serde 2.2.0", + "thiserror", +] + +[[package]] +name = "spin-locked-app" +version = "2.3.0-pre0" +dependencies = [ + "anyhow", + "async-trait", + "ouroboros", + "serde", + "serde_json", + "spin-serde 2.3.0-pre0", "thiserror", ] @@ -5926,8 +6173,22 @@ dependencies = [ "anyhow", "indexmap 1.9.3", "serde", - "spin-serde", - "terminal", + "spin-serde 2.2.0", + "terminal 0.1.0 (git+https://github.com/fermyon/spin?tag=v2.2.0)", + "thiserror", + "toml 0.8.8", + "url", +] + +[[package]] +name = "spin-manifest" +version = "2.3.0-pre0" +dependencies = [ + "anyhow", + "indexmap 1.9.3", + "serde", + "spin-serde 2.3.0-pre0", + "terminal 0.1.0", "thiserror", "toml 0.8.8", "url", @@ -5935,8 +6196,7 @@ dependencies = [ [[package]] name = "spin-oci" -version = "2.2.0" -source = "git+https://github.com/fermyon/spin?tag=v2.2.0#eebfae1d6de6a166da16ec8858332f4cc3b6c557" +version = "2.3.0-pre0" dependencies = [ "anyhow", "async-compression", @@ -5950,10 +6210,10 @@ dependencies = [ "reqwest", "serde", "serde_json", - "spin-common", - "spin-loader", - "spin-locked-app", - "spin-manifest", + "spin-common 2.3.0-pre0", + "spin-loader 2.3.0-pre0", + "spin-locked-app 2.3.0-pre0", + "spin-manifest 2.3.0-pre0", "tempfile", "tokio", "tokio-util 0.7.10", @@ -5968,27 +6228,22 @@ source = "git+https://github.com/fermyon/spin?tag=v2.2.0#eebfae1d6de6a166da16ec8 dependencies = [ "anyhow", "ipnet", - "spin-locked-app", - "terminal", + "spin-locked-app 2.2.0", + "terminal 0.1.0 (git+https://github.com/fermyon/spin?tag=v2.2.0)", "url", "urlencoding", ] [[package]] -name = "spin-redis-engine" -version = "2.2.0" -source = "git+https://github.com/fermyon/spin?tag=v2.2.0#eebfae1d6de6a166da16ec8858332f4cc3b6c557" +name = "spin-outbound-networking" +version = "2.3.0-pre0" dependencies = [ "anyhow", - "async-trait", - "futures", - "redis 0.21.7", - "serde", - "spin-app", - "spin-core", - "spin-trigger", - "spin-world", - "tracing", + "ipnet", + "spin-locked-app 2.3.0-pre0", + "terminal 0.1.0", + "url", + "urlencoding", ] [[package]] @@ -6000,6 +6255,14 @@ dependencies = [ "serde", ] +[[package]] +name = "spin-serde" +version = "2.3.0-pre0" +dependencies = [ + "base64 0.21.5", + "serde", +] + [[package]] name = "spin-sqlite" version = "2.2.0" @@ -6007,10 +6270,23 @@ source = "git+https://github.com/fermyon/spin?tag=v2.2.0#eebfae1d6de6a166da16ec8 dependencies = [ "anyhow", "async-trait", - "spin-app", - "spin-core", - "spin-world", - "table", + "spin-app 2.2.0", + "spin-core 2.2.0", + "spin-world 2.2.0", + "table 2.2.0", + "tokio", +] + +[[package]] +name = "spin-sqlite" +version = "2.3.0-pre0" +dependencies = [ + "anyhow", + "async-trait", + "spin-app 2.3.0-pre0", + "spin-core 2.3.0-pre0", + "spin-world 2.3.0-pre0", + "table 2.3.0-pre0", "tokio", ] @@ -6024,8 +6300,22 @@ dependencies = [ "once_cell", "rand 0.8.5", "rusqlite", - "spin-sqlite", - "spin-world", + "spin-sqlite 2.2.0", + "spin-world 2.2.0", + "tokio", +] + +[[package]] +name = "spin-sqlite-inproc" +version = "2.3.0-pre0" +dependencies = [ + "anyhow", + "async-trait", + "once_cell", + "rand 0.8.5", + "rusqlite", + "spin-sqlite 2.3.0-pre0", + "spin-world 2.3.0-pre0", "tokio", ] @@ -6038,8 +6328,22 @@ dependencies = [ "async-trait", "libsql", "rusqlite", - "spin-sqlite", - "spin-world", + "spin-sqlite 2.2.0", + "spin-world 2.2.0", + "sqlparser", + "tokio", +] + +[[package]] +name = "spin-sqlite-libsql" +version = "2.3.0-pre0" +dependencies = [ + "anyhow", + "async-trait", + "libsql", + "rusqlite", + "spin-sqlite 2.3.0-pre0", + "spin-world 2.3.0-pre0", "sqlparser", "tokio", ] @@ -6057,32 +6361,79 @@ dependencies = [ "futures", "indexmap 1.9.3", "ipnet", - "outbound-http", - "outbound-mysql", - "outbound-pg", - "outbound-redis", + "outbound-http 2.2.0", + "outbound-mysql 2.2.0", + "outbound-pg 2.2.0", + "outbound-redis 2.2.0", + "sanitize-filename", + "serde", + "serde_json", + "spin-app 2.2.0", + "spin-common 2.2.0", + "spin-componentize", + "spin-core 2.2.0", + "spin-key-value 2.2.0", + "spin-key-value-azure 0.1.0 (git+https://github.com/fermyon/spin?tag=v2.2.0)", + "spin-key-value-redis 0.1.0 (git+https://github.com/fermyon/spin?tag=v2.2.0)", + "spin-key-value-sqlite 0.1.0 (git+https://github.com/fermyon/spin?tag=v2.2.0)", + "spin-llm 2.2.0", + "spin-llm-remote-http 2.2.0", + "spin-loader 2.2.0", + "spin-manifest 2.2.0", + "spin-outbound-networking 2.2.0", + "spin-sqlite 2.2.0", + "spin-sqlite-inproc 2.2.0", + "spin-sqlite-libsql 2.2.0", + "spin-variables 2.2.0", + "spin-world 2.2.0", + "terminal 0.1.0 (git+https://github.com/fermyon/spin?tag=v2.2.0)", + "tokio", + "toml 0.5.11", + "tracing", + "url", + "wasmtime", + "wasmtime-wasi", + "wasmtime-wasi-http", +] + +[[package]] +name = "spin-trigger" +version = "2.3.0-pre0" +dependencies = [ + "anyhow", + "async-trait", + "clap", + "ctrlc", + "dirs 4.0.0", + "futures", + "indexmap 1.9.3", + "ipnet", + "outbound-http 2.3.0-pre0", + "outbound-mysql 2.3.0-pre0", + "outbound-pg 2.3.0-pre0", + "outbound-redis 2.3.0-pre0", "sanitize-filename", "serde", "serde_json", - "spin-app", - "spin-common", + "spin-app 2.3.0-pre0", + "spin-common 2.3.0-pre0", "spin-componentize", - "spin-core", - "spin-key-value", - "spin-key-value-azure", - "spin-key-value-redis", - "spin-key-value-sqlite", - "spin-llm", - "spin-llm-remote-http", - "spin-loader", - "spin-manifest", - "spin-outbound-networking", - "spin-sqlite", - "spin-sqlite-inproc", - "spin-sqlite-libsql", - "spin-variables", - "spin-world", - "terminal", + "spin-core 2.3.0-pre0", + "spin-key-value 2.3.0-pre0", + "spin-key-value-azure 0.1.0", + "spin-key-value-redis 0.1.0", + "spin-key-value-sqlite 0.1.0", + "spin-llm 2.3.0-pre0", + "spin-llm-remote-http 2.3.0-pre0", + "spin-loader 2.3.0-pre0", + "spin-manifest 2.3.0-pre0", + "spin-outbound-networking 2.3.0-pre0", + "spin-sqlite 2.3.0-pre0", + "spin-sqlite-inproc 2.3.0-pre0", + "spin-sqlite-libsql 2.3.0-pre0", + "spin-variables 2.3.0-pre0", + "spin-world 2.3.0-pre0", + "terminal 0.1.0", "tokio", "toml 0.5.11", "tracing", @@ -6094,8 +6445,7 @@ dependencies = [ [[package]] name = "spin-trigger-http" -version = "2.2.0" -source = "git+https://github.com/fermyon/spin?tag=v2.2.0#eebfae1d6de6a166da16ec8858332f4cc3b6c557" +version = "2.3.0-pre0" dependencies = [ "anyhow", "async-trait", @@ -6107,18 +6457,18 @@ dependencies = [ "hyper 1.1.0", "hyper-util", "indexmap 1.9.3", - "outbound-http", + "outbound-http 2.3.0-pre0", "percent-encoding", "rustls-pemfile 0.3.0", "serde", "serde_json", - "spin-app", - "spin-core", + "spin-app 2.3.0-pre0", + "spin-core 2.3.0-pre0", "spin-http", - "spin-outbound-networking", - "spin-trigger", - "spin-world", - "terminal", + "spin-outbound-networking 2.3.0-pre0", + "spin-trigger 2.3.0-pre0", + "spin-world 2.3.0-pre0", + "terminal 0.1.0", "tls-listener", "tokio", "tokio-rustls 0.23.4", @@ -6130,6 +6480,22 @@ dependencies = [ "wasmtime-wasi-http", ] +[[package]] +name = "spin-trigger-redis" +version = "2.3.0-pre0" +dependencies = [ + "anyhow", + "async-trait", + "futures", + "redis 0.21.7", + "serde", + "spin-app 2.3.0-pre0", + "spin-core 2.3.0-pre0", + "spin-trigger 2.3.0-pre0", + "spin-world 2.3.0-pre0", + "tracing", +] + [[package]] name = "spin-variables" version = "2.2.0" @@ -6140,9 +6506,26 @@ dependencies = [ "dotenvy", "once_cell", "serde", - "spin-app", - "spin-core", - "spin-world", + "spin-app 2.2.0", + "spin-core 2.2.0", + "spin-world 2.2.0", + "thiserror", + "tokio", + "vaultrs", +] + +[[package]] +name = "spin-variables" +version = "2.3.0-pre0" +dependencies = [ + "anyhow", + "async-trait", + "dotenvy", + "once_cell", + "serde", + "spin-app 2.3.0-pre0", + "spin-core 2.3.0-pre0", + "spin-world 2.3.0-pre0", "thiserror", "tokio", "vaultrs", @@ -6156,6 +6539,13 @@ dependencies = [ "wasmtime", ] +[[package]] +name = "spin-world" +version = "2.3.0-pre0" +dependencies = [ + "wasmtime", +] + [[package]] name = "spm_precompiled" version = "0.1.4" @@ -6329,6 +6719,10 @@ name = "table" version = "2.2.0" source = "git+https://github.com/fermyon/spin?tag=v2.2.0#eebfae1d6de6a166da16ec8858332f4cc3b6c557" +[[package]] +name = "table" +version = "2.3.0-pre0" + [[package]] name = "tar" version = "0.4.40" @@ -6368,6 +6762,15 @@ dependencies = [ "winapi-util", ] +[[package]] +name = "terminal" +version = "0.1.0" +dependencies = [ + "atty", + "once_cell", + "termcolor", +] + [[package]] name = "terminal" version = "0.1.0" @@ -6890,8 +7293,8 @@ dependencies = [ "futures", "is-terminal", "serde", - "spin-core", - "spin-trigger", + "spin-core 2.2.0", + "spin-trigger 2.2.0", "tokio", "tokio-scoped", "tracing", @@ -7191,9 +7594,9 @@ checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" [[package]] name = "wasi-cap-std-sync" -version = "17.0.0" +version = "17.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "db014d2ced91f17d1f1a8f2b76d6ea8d731bc1dbc8c2bbaec689d6a242568e5d" +checksum = "025e842ba390587e523785ff58bd54fbbf1781b8d3072bc9aba4dc0b809f69da" dependencies = [ "anyhow", "async-trait", @@ -7214,9 +7617,9 @@ dependencies = [ [[package]] name = "wasi-common" -version = "17.0.0" +version = "17.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "449d17849e3c83a931374442fe2deee4d6bd1ebf469719ef44192e9e82e19c89" +checksum = "da4d4023cc65b3615590d38db0afb79234de09b3bb89cb0d8f83bdee9f5c28a8" dependencies = [ "anyhow", "bitflags 2.4.2", @@ -7234,9 +7637,9 @@ dependencies = [ [[package]] name = "wasi-tokio" -version = "17.0.0" +version = "17.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ebcb815cab6d4688a72de1c2fd4c4f32925b6f5200d268fedba6ce6958124b25" +checksum = "c97de58a5b89e9ab479a2f9e17e9eb41d0e0156e3c979b2e7f00e9499d2e97b7" dependencies = [ "anyhow", "cap-std", @@ -7444,9 +7847,9 @@ dependencies = [ [[package]] name = "wasmtime" -version = "17.0.0" +version = "17.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "910fabce77e660f0e0e41cfd5f69fc8bf020a025f059718846e918db7177f469" +checksum = "8acb6aa966be38f613954c3debe7ba6c7a02ffd0537432be438da0b038955cdf" dependencies = [ "anyhow", "async-trait", @@ -7483,18 +7886,18 @@ dependencies = [ [[package]] name = "wasmtime-asm-macros" -version = "17.0.0" +version = "17.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "37288142e9b4a61655a3bcbdc7316c2e4bb9e776b10ce3dd758f8186b4469572" +checksum = "c1495ef4d46aec14f967b672e946e391dd8a14a443cda3d5e0779ff67fb6e28d" dependencies = [ "cfg-if 1.0.0", ] [[package]] name = "wasmtime-cache" -version = "17.0.0" +version = "17.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "45cbd74a636f09d2108f9405c79857f061e19323e4abeed22e837cfe7b08a22b" +checksum = "e2de1b065bdbaca3df9e7e9f70eb129e326a99d971b16d666acd798d98d47635" dependencies = [ "anyhow", "base64 0.21.5", @@ -7512,9 +7915,9 @@ dependencies = [ [[package]] name = "wasmtime-component-macro" -version = "17.0.0" +version = "17.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ad63de18eb42e586386b6091f787c82707cbd5ac5e9343216dba1976190cd03a" +checksum = "2f19bcff82f81ba0273c0b68f3909977b0dd54489bc86c630d8aad43dca92f3f" dependencies = [ "anyhow", "proc-macro2", @@ -7527,15 +7930,15 @@ dependencies = [ [[package]] name = "wasmtime-component-util" -version = "17.0.0" +version = "17.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7e0a160c0c44369aa4bee6d311a8e4366943bab1651040cc8b0fcec2c9eb8906" +checksum = "8af072b7ad5ac5583e1f9e4737ebf88923de564fb5d4ace0ca9b4b720bdf95a1" [[package]] name = "wasmtime-cranelift" -version = "17.0.0" +version = "17.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3734cc01b7cd37bc62fdbcd9529ca9547440052d4b3886cfdec3b8081a5d3647" +checksum = "df08a8bd9a68732577bee05ac685e4c247238b5e79ad9c062e2dfb4d04dca132" dependencies = [ "anyhow", "cfg-if 1.0.0", @@ -7558,9 +7961,9 @@ dependencies = [ [[package]] name = "wasmtime-cranelift-shared" -version = "17.0.0" +version = "17.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e0eb33cd30c47844aa228d4d0030587e65c1108343f311fe9f7248b5bd9cb65c" +checksum = "404201c9e669083f189f01337b3ed0aa0eb081157fb4e170bbfe193df9497771" dependencies = [ "anyhow", "cranelift-codegen", @@ -7574,9 +7977,9 @@ dependencies = [ [[package]] name = "wasmtime-environ" -version = "17.0.0" +version = "17.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9a3a056b041fdea604f0972e2fae97958e7748d629a55180228348baefdfc217" +checksum = "7e696b4911c9a69c3c2892ec05eb41bb15436d1a46d8830a755c40f5df47546a" dependencies = [ "anyhow", "cranelift-entity", @@ -7597,9 +8000,9 @@ dependencies = [ [[package]] name = "wasmtime-fiber" -version = "17.0.0" +version = "17.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "43987d0977c07f15c3608c2f255870c127ffd19e35eeedb1ac1dccedf9932a42" +checksum = "4a39681c1f6f54d1bf7efe5dc829f8d7fc0e2ca12c346fd7a3efbf726e9681d2" dependencies = [ "anyhow", "cc", @@ -7612,9 +8015,9 @@ dependencies = [ [[package]] name = "wasmtime-jit" -version = "17.0.0" +version = "17.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9b3e48395ac672b386ed588d97a9612aa13a345008f26466f0dfb2a91628aa9f" +checksum = "2c56519882d936c680bd191d58ac04cff071a470eca2dcc664adcd60f986a731" dependencies = [ "addr2line", "anyhow", @@ -7639,9 +8042,9 @@ dependencies = [ [[package]] name = "wasmtime-jit-debug" -version = "17.0.0" +version = "17.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dd21fd0f5ca68681d3d5b636eea00f182d0f9d764144469e9257fd7e3f55ae0e" +checksum = "babc65e64ab0dd4e1ce65624db64e24ed0fbdebb16148729173fa0da9f70e53c" dependencies = [ "object", "once_cell", @@ -7651,9 +8054,9 @@ dependencies = [ [[package]] name = "wasmtime-jit-icache-coherence" -version = "17.0.0" +version = "17.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bdc26415bb89e9ccd3bdc498fef63aabf665c4c0dd710c107691deb9694955da" +checksum = "d7ec5b11c12d9acb09612e7ce04c4c8aea3e8dc79b2591ffdead986a5ce8ec49" dependencies = [ "cfg-if 1.0.0", "libc", @@ -7662,9 +8065,9 @@ dependencies = [ [[package]] name = "wasmtime-runtime" -version = "17.0.0" +version = "17.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0abddaf17912aabaf39be0802d5eba9a002e956e902d1ebd438a2fe1c88769a2" +checksum = "28e1c31bbdf67cb86f149bcead5193749f23f77c93c5244ec9ac8d192f90966c" dependencies = [ "anyhow", "cc", @@ -7692,9 +8095,9 @@ dependencies = [ [[package]] name = "wasmtime-types" -version = "17.0.0" +version = "17.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b35a95cdc1433729085beab42c0a5c742b431f25b17c40d7718e46df63d5ffc7" +checksum = "52e799cff634d30fd042db96b417d515e54f903b95f8c1e0ec60e8f604479485" dependencies = [ "cranelift-entity", "serde", @@ -7705,9 +8108,9 @@ dependencies = [ [[package]] name = "wasmtime-versioned-export-macros" -version = "17.0.0" +version = "17.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fad322733fe67e45743784d8b1df452bcb54f581572a4f1a646a4332deecbcc2" +checksum = "e10fe166d4e4c95d5d80c5b47e1e12256af2099ac525ddb9a19b1aeb8896e5e1" dependencies = [ "proc-macro2", "quote", @@ -7716,9 +8119,9 @@ dependencies = [ [[package]] name = "wasmtime-wasi" -version = "17.0.0" +version = "17.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "902cc299b73655c36679b77efdfce4bb5971992f1a4a8a436dd3809a6848ff0e" +checksum = "494f99111a165dcddc69aaa5fa23604f49dcfab479a869edd84581abd6ac569b" dependencies = [ "anyhow", "async-trait", @@ -7752,9 +8155,9 @@ dependencies = [ [[package]] name = "wasmtime-wasi-http" -version = "17.0.0" +version = "17.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "151fc711fad35034b8a6df00a5bcd5a7b1acb89ca12c2407f564a36ebd382e26" +checksum = "2d6ee5c9cd235c99afdb9acf8dac79ae0ea431e36cb1d9434d6940a7390bdce7" dependencies = [ "anyhow", "async-trait", @@ -7775,9 +8178,9 @@ dependencies = [ [[package]] name = "wasmtime-winch" -version = "17.0.0" +version = "17.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9e63aeca929f84560eec52c5af43bf5d623b92683b0195d9fb06da8ed860e092" +checksum = "d3f5d76d399cb4423e6f178bc154a0e1c314711e28dabaa6e757e56628a083ec" dependencies = [ "anyhow", "cranelift-codegen", @@ -7792,9 +8195,9 @@ dependencies = [ [[package]] name = "wasmtime-wit-bindgen" -version = "17.0.0" +version = "17.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "41e5675998fdc74495afdd90ad2bd221206a258075b23048af0535a969b07893" +checksum = "6bb3bc92c031cf4961135bffe055a69c1bd67c253dca20631478189bb05ec27b" dependencies = [ "anyhow", "heck 0.4.1", @@ -7804,9 +8207,9 @@ dependencies = [ [[package]] name = "wasmtime-wmemcheck" -version = "17.0.0" +version = "17.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b20a19e10d8cb50b45412fb21192982b7ce85c0122dc33bb71f1813e25dc6e52" +checksum = "5da08ab734954e16f57be38423b90c25a0b13420e51cbd0a2e37b86a468a988c" [[package]] name = "wast" @@ -7897,9 +8300,9 @@ dependencies = [ [[package]] name = "wiggle" -version = "17.0.0" +version = "17.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "737728db69a7657a5f6a7bac445c02d8564d603d62c46c95edf928554e67d072" +checksum = "cd5b200b5dd3d5d7cc4093166f4f916d2d2839296cf1b1757b9726635f6425c3" dependencies = [ "anyhow", "async-trait", @@ -7912,9 +8315,9 @@ dependencies = [ [[package]] name = "wiggle-generate" -version = "17.0.0" +version = "17.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2460c7163b79ffefd9a564eaeab0a5b0e84bb91afdfeeb84d36f304ddbe08982" +checksum = "a4dc34a2bc1091599de005e9b854cd1a9ea35b16ca51cac2797274c1a2666e06" dependencies = [ "anyhow", "heck 0.4.1", @@ -7927,9 +8330,9 @@ dependencies = [ [[package]] name = "wiggle-macro" -version = "17.0.0" +version = "17.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fa8d8412375ba8325d61fbae56dead51dabfaec85d620ce36427922fb9cece83" +checksum = "37ba3b37f402a7513b9ed7973a6e907074987b3afdcede98d3d79939b3e76f1b" dependencies = [ "proc-macro2", "quote", @@ -7970,9 +8373,9 @@ checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" [[package]] name = "winch-codegen" -version = "0.15.0" +version = "0.15.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9d2b346bad5397b219b4ff0a8fa7230936061ff07c61f05d589d8d81e06fb7b2" +checksum = "8d921185084e134e897e0e202e129a422306d0f1391954ecf4928d36defa897d" dependencies = [ "anyhow", "cranelift-codegen", diff --git a/containerd-shim-spin/Cargo.toml b/containerd-shim-spin/Cargo.toml index 7fecf6ce..21600fd2 100644 --- a/containerd-shim-spin/Cargo.toml +++ b/containerd-shim-spin/Cargo.toml @@ -14,18 +14,17 @@ Containerd shim for running Spin workloads. # containerd-shim-wasm = { git = "https://github.com/containerd/runwasi", rev = "c768e5b0919ca02903a301bf82a390489437dabe" } containerd-shim-wasm = { path = "../../../containerd/runwasi/crates/containerd-shim-wasm" } log = "0.4" -spin-app = { git = "https://github.com/fermyon/spin", tag = "v2.2.0" } -spin-core = { git = "https://github.com/fermyon/spin", tag = "v2.2.0" } -spin-componentize = { git = "https://github.com/fermyon/spin", tag = "v2.2.0" } +spin-app = {path = "../../../fermyon/spin/crates/app" } +spin-core = { path = "../../../fermyon/spin/crates/core"} spin-componentize = { git = "https://github.com/fermyon/spin-componentize", rev = "191789170abde10cd55590466c0660dd6c7d472a" } -spin-trigger = { git = "https://github.com/fermyon/spin", tag = "v2.2.0" } -spin-trigger-http = { git = "https://github.com/fermyon/spin", tag = "v2.2.0" } -spin-redis-engine = { git = "https://github.com/fermyon/spin", tag = "v2.2.0" } +spin-trigger = { path = "../../../fermyon/spin/crates/trigger"} +spin-trigger-http = { path = "../../../fermyon/spin/crates/trigger-http"} +spin-trigger-redis = { path = "../../../fermyon/spin/crates/trigger-redis"} trigger-sqs = { git = "https://github.com/fermyon/spin-trigger-sqs", tag = "v0.6.0" } -spin-manifest = { git = "https://github.com/fermyon/spin", tag = "v2.2.0" } -spin-loader = { git = "https://github.com/fermyon/spin", tag = "v2.2.0" } -spin-oci = { git = "https://github.com/fermyon/spin", tag = "v2.2.0" } -spin-common = { git = "https://github.com/fermyon/spin", tag = "v2.2.0" } +spin-manifest = { path = "../../../fermyon/spin/crates/manifest"} +spin-loader = { path = "../../../fermyon/spin/crates/loader"} +spin-oci = { path = "../../../fermyon/spin/crates/oci"} +spin-common = { path = "../../../fermyon/spin/crates/common"} wasmtime = "17.0.0" tokio = { version = "1", features = ["rt"] } openssl = { version = "*", features = ["vendored"] } diff --git a/containerd-shim-spin/src/engine.rs b/containerd-shim-spin/src/engine.rs index 500354ce..23a3f4a1 100644 --- a/containerd-shim-spin/src/engine.rs +++ b/containerd-shim-spin/src/engine.rs @@ -7,10 +7,10 @@ use spin_app::locked::LockedApp; use spin_loader::cache::Cache; use spin_loader::FilesMountStrategy; use spin_manifest::schema::v2::AppManifest; -use spin_redis_engine::RedisTrigger; use spin_trigger::TriggerHooks; use spin_trigger::{loader, RuntimeConfig, TriggerExecutor, TriggerExecutorBuilder}; use spin_trigger_http::HttpTrigger; +use spin_trigger_redis::RedisTrigger; use std::collections::hash_map::DefaultHasher; use std::collections::HashSet; use std::env; @@ -209,15 +209,15 @@ impl SpinEngine { info!(" >>> running spin trigger"); redis_trigger.run(spin_trigger::cli::NoArgs) } - SqsTrigger::TRIGGER_TYPE => { - let sqs_trigger: SqsTrigger = self - .build_spin_trigger(working_dir, app) - .await - .context("failed to build spin trigger")?; - - info!(" >>> running spin trigger"); - sqs_trigger.run(spin_trigger::cli::NoArgs) - } + // SqsTrigger::TRIGGER_TYPE => { + // let sqs_trigger: SqsTrigger = self + // .build_spin_trigger(working_dir, app) + // .await + // .context("failed to build spin trigger")?; + // + // info!(" >>> running spin trigger"); + // sqs_trigger.run(spin_trigger::cli::NoArgs) + // } _ => { todo!("Only Http, Redis and SQS triggers are currently supported.") } @@ -266,7 +266,7 @@ impl SpinEngine { let locked_url = self.write_locked_app(&app, &working_dir).await?; // Build trigger config - let loader = loader::TriggerLoader::new(working_dir.clone(), true); + let loader = loader::TriggerLoader::new(working_dir.clone(), true, true); let mut runtime_config = RuntimeConfig::new(PathBuf::from("/").into()); // Load in runtime config if one exists at expected location if Path::new(RUNTIME_CONFIG_PATH).exists() { @@ -318,8 +318,9 @@ impl Engine for SpinEngine { match layer.config.media_type() { MediaType::Other(name) => { if name == "application/vnd.wasm.content.layer.v1+wasm" { - let component = spin_componentize::componentize_if_necessary(&layer.layer)?; - Some(self.wasmtime_engine.precompile_module(&component)) + let component = + spin_componentize::componentize_if_necessary(&layer.layer).unwrap(); + Some(self.wasmtime_engine.precompile_component(&component)) } else { None } @@ -379,9 +380,7 @@ fn trigger_command_for_resolved_app_source(resolved: &ResolvedAppSource) -> Resu let trigger_type = resolved.trigger_type()?; match trigger_type { - RedisTrigger::TRIGGER_TYPE | HttpTrigger::TRIGGER_TYPE | SqsTrigger::TRIGGER_TYPE => { - Ok(trigger_type.to_owned()) - } + RedisTrigger::TRIGGER_TYPE | HttpTrigger::TRIGGER_TYPE => Ok(trigger_type.to_owned()), _ => { todo!("Only Http, Redis and SQS triggers are currently supported.") }