chore(deps): update all dependencies #2

Merged
kjuulh merged 4 commits from renovate/all into main 2024-04-06 22:19:56 +02:00
11 changed files with 811 additions and 597 deletions

2
.drone.yml Normal file
View File

@ -0,0 +1,2 @@
kind: template
load: cuddle-rust-cli-plan.yaml

1281
Cargo.lock generated

File diff suppressed because it is too large Load Diff

View File

@ -19,19 +19,19 @@ churn-server = { path = "crates/churn-server" }
churn-domain = { path = "crates/churn-domain", version = "0.1.0" } churn-domain = { path = "crates/churn-domain", version = "0.1.0" }
churn-capnp = { path = "crates/churn-capnp", version = "0.1.0" } churn-capnp = { path = "crates/churn-capnp", version = "0.1.0" }
anyhow = { version = "1.0.71" } anyhow = { version = "1.0.81" }
tokio = { version = "1", features = ["full"] } tokio = { version = "1", features = ["full"] }
tracing = { version = "0.1", features = ["log"] } tracing = { version = "0.1", features = ["log"] }
tracing-subscriber = { version = "0.3.17" } tracing-subscriber = { version = "0.3.18" }
clap = { version = "4.3.4", features = ["derive", "env"] } clap = { version = "4.5.4", features = ["derive", "env"] }
dotenv = { version = "0.15.0" } dotenv = { version = "0.15.0" }
axum = { version = "0.6.18", features = ["macros"] } axum = { version = "0.7.5", features = ["macros"] }
async-trait = "*" async-trait = "*"
serde = {version = "1", features = ["derive"]} serde = {version = "1", features = ["derive"]}
serde_json = "1" serde_json = "1"
reqwest = {version = "0.11.20", features = ["json"]} reqwest = {version = "0.12.3", features = ["json"]}
uuid = {version = "1.4.1", features = ["v4", "serde"]} uuid = {version = "1.8.0", features = ["v4", "serde"]}
itertools = {version = "0.11.0"} itertools = {version = "0.12.1"}
sled = "0.34.7" sled = "0.34.7"
chrono = {version = "0.4.26", features = ["serde"]} chrono = {version = "0.4.37", features = ["serde"]}

View File

@ -14,6 +14,7 @@ use axum::{
use churn_domain::AgentEnrollReq; use churn_domain::AgentEnrollReq;
use clap::{Parser, Subcommand}; use clap::{Parser, Subcommand};
use serde_json::json; use serde_json::json;
use tokio::net::TcpListener;
#[derive(Parser)] #[derive(Parser)]
#[command(author, version, about, long_about = None, subcommand_required = true)] #[command(author, version, about, long_about = None, subcommand_required = true)]
@ -70,8 +71,8 @@ async fn handle_command(cmd: Command) -> anyhow::Result<()> {
.with_state(AppState::default()); .with_state(AppState::default());
tracing::info!("churn server listening on {}", host); tracing::info!("churn server listening on {}", host);
axum::Server::bind(&host) let listener = TcpListener::bind(&host).await?;
.serve(app.into_make_service()) axum::serve(listener, app.into_make_service())
.await .await
.unwrap(); .unwrap();

View File

@ -16,8 +16,8 @@ uuid.workspace = true
anyhow.workspace = true anyhow.workspace = true
chrono.workspace = true chrono.workspace = true
capnp = "0.17.2" capnp = "0.19.3"
[build-dependencies] [build-dependencies]
capnpc = "0.17.2" capnpc = "0.19.0"

View File

@ -1,6 +1,6 @@
use capnp::message::{Builder, HeapAllocator}; use capnp::message::{Builder, HeapAllocator};
use capnp::message::{ReaderOptions, TypedReader}; use capnp::message::{ReaderOptions, TypedReader};
use capnp::serialize::{self, SliceSegments}; use capnp::serialize::{self, BufferSegments};
use capnp::traits::Owned; use capnp::traits::Owned;
use churn_domain::{Agent, Lease, LogEvent}; use churn_domain::{Agent, Lease, LogEvent};
@ -17,7 +17,7 @@ pub trait CapnpPackExt {
serialize::write_message_to_words(builder) serialize::write_message_to_words(builder)
} }
fn string_to_capnp<S>(mut content: &[u8]) -> TypedReader<SliceSegments, S> fn string_to_capnp<S>(mut content: &[u8]) -> TypedReader<BufferSegments<&[u8]>, S>
where where
S: Owned, S: Owned,
{ {
@ -47,9 +47,9 @@ impl CapnpPackExt for LogEvent {
let log_event = log_event.get()?; let log_event = log_event.get()?;
Ok(Self { Ok(Self {
id: uuid::Uuid::parse_str(log_event.get_id()?)?, id: uuid::Uuid::parse_str(log_event.get_id()?.to_str()?)?,
author: log_event.get_author()?.into(), author: log_event.get_author()?.to_string()?,
content: log_event.get_content()?.into(), content: log_event.get_content()?.to_string()?,
timestamp: chrono::DateTime::<chrono::Utc>::from_utc( timestamp: chrono::DateTime::<chrono::Utc>::from_utc(
chrono::NaiveDateTime::from_timestamp_opt(log_event.get_datetime(), 0).unwrap(), chrono::NaiveDateTime::from_timestamp_opt(log_event.get_datetime(), 0).unwrap(),
chrono::Utc, chrono::Utc,
@ -75,7 +75,7 @@ impl CapnpPackExt for Agent {
let item = item.get()?; let item = item.get()?;
Ok(Self { Ok(Self {
name: item.get_name()?.into(), name: item.get_name()?.to_string()?,
}) })
} }
} }
@ -98,8 +98,8 @@ impl CapnpPackExt for Lease {
let item = item.get()?; let item = item.get()?;
Ok(Self { Ok(Self {
id: uuid::Uuid::parse_str(item.get_id()?)?, id: uuid::Uuid::parse_str(item.get_id()?.to_str()?)?,
lease: uuid::Uuid::parse_str(item.get_lease()?)?, lease: uuid::Uuid::parse_str(item.get_lease()?.to_str()?)?,
}) })
} }
} }

View File

@ -128,7 +128,7 @@ pub mod log_event {
} }
} }
impl <'a,> ::capnp::traits::SetPointerBuilder for Reader<'a,> { impl <'a,> ::capnp::traits::SetterInput<Owned<>> for Reader<'a,> {
fn set_pointer_builder(mut pointer: ::capnp::private::layout::PointerBuilder<'_>, value: Self, canonicalize: bool) -> ::capnp::Result<()> { pointer.set_struct(&value.reader, canonicalize) } fn set_pointer_builder(mut pointer: ::capnp::private::layout::PointerBuilder<'_>, value: Self, canonicalize: bool) -> ::capnp::Result<()> { pointer.set_struct(&value.reader, canonicalize) }
} }
@ -151,8 +151,8 @@ pub mod log_event {
::capnp::traits::FromPointerBuilder::get_from_pointer(self.builder.get_pointer_field(0), ::core::option::Option::None) ::capnp::traits::FromPointerBuilder::get_from_pointer(self.builder.get_pointer_field(0), ::core::option::Option::None)
} }
#[inline] #[inline]
pub fn set_id(&mut self, value: ::capnp::text::Reader<'_>) { pub fn set_id(&mut self, value: impl ::capnp::traits::SetterInput<::capnp::text::Owned>) {
self.builder.reborrow().get_pointer_field(0).set_text(value); ::capnp::traits::SetterInput::set_pointer_builder(self.builder.reborrow().get_pointer_field(0), value, false).unwrap()
} }
#[inline] #[inline]
pub fn init_id(self, size: u32) -> ::capnp::text::Builder<'a> { pub fn init_id(self, size: u32) -> ::capnp::text::Builder<'a> {
@ -167,8 +167,8 @@ pub mod log_event {
::capnp::traits::FromPointerBuilder::get_from_pointer(self.builder.get_pointer_field(1), ::core::option::Option::None) ::capnp::traits::FromPointerBuilder::get_from_pointer(self.builder.get_pointer_field(1), ::core::option::Option::None)
} }
#[inline] #[inline]
pub fn set_author(&mut self, value: ::capnp::text::Reader<'_>) { pub fn set_author(&mut self, value: impl ::capnp::traits::SetterInput<::capnp::text::Owned>) {
self.builder.reborrow().get_pointer_field(1).set_text(value); ::capnp::traits::SetterInput::set_pointer_builder(self.builder.reborrow().get_pointer_field(1), value, false).unwrap()
} }
#[inline] #[inline]
pub fn init_author(self, size: u32) -> ::capnp::text::Builder<'a> { pub fn init_author(self, size: u32) -> ::capnp::text::Builder<'a> {
@ -183,8 +183,8 @@ pub mod log_event {
::capnp::traits::FromPointerBuilder::get_from_pointer(self.builder.get_pointer_field(2), ::core::option::Option::None) ::capnp::traits::FromPointerBuilder::get_from_pointer(self.builder.get_pointer_field(2), ::core::option::Option::None)
} }
#[inline] #[inline]
pub fn set_content(&mut self, value: ::capnp::text::Reader<'_>) { pub fn set_content(&mut self, value: impl ::capnp::traits::SetterInput<::capnp::text::Owned>) {
self.builder.reborrow().get_pointer_field(2).set_text(value); ::capnp::traits::SetterInput::set_pointer_builder(self.builder.reborrow().get_pointer_field(2), value, false).unwrap()
} }
#[inline] #[inline]
pub fn init_content(self, size: u32) -> ::capnp::text::Builder<'a> { pub fn init_content(self, size: u32) -> ::capnp::text::Builder<'a> {
@ -309,9 +309,11 @@ pub mod log_event {
encoded_node: &ENCODED_NODE, encoded_node: &ENCODED_NODE,
nonunion_members: NONUNION_MEMBERS, nonunion_members: NONUNION_MEMBERS,
members_by_discriminant: MEMBERS_BY_DISCRIMINANT, members_by_discriminant: MEMBERS_BY_DISCRIMINANT,
members_by_name: MEMBERS_BY_NAME,
}; };
pub static NONUNION_MEMBERS : &[u16] = &[0,1,2,3]; pub static NONUNION_MEMBERS : &[u16] = &[0,1,2,3];
pub static MEMBERS_BY_DISCRIMINANT : &[u16] = &[]; pub static MEMBERS_BY_DISCRIMINANT : &[u16] = &[];
pub static MEMBERS_BY_NAME : &[u16] = &[1,2,3,0];
pub const TYPE_ID: u64 = 0xe78f_0c5b_590e_1932; pub const TYPE_ID: u64 = 0xe78f_0c5b_590e_1932;
} }
} }
@ -421,7 +423,7 @@ pub mod agent {
} }
} }
impl <'a,> ::capnp::traits::SetPointerBuilder for Reader<'a,> { impl <'a,> ::capnp::traits::SetterInput<Owned<>> for Reader<'a,> {
fn set_pointer_builder(mut pointer: ::capnp::private::layout::PointerBuilder<'_>, value: Self, canonicalize: bool) -> ::capnp::Result<()> { pointer.set_struct(&value.reader, canonicalize) } fn set_pointer_builder(mut pointer: ::capnp::private::layout::PointerBuilder<'_>, value: Self, canonicalize: bool) -> ::capnp::Result<()> { pointer.set_struct(&value.reader, canonicalize) }
} }
@ -444,8 +446,8 @@ pub mod agent {
::capnp::traits::FromPointerBuilder::get_from_pointer(self.builder.get_pointer_field(0), ::core::option::Option::None) ::capnp::traits::FromPointerBuilder::get_from_pointer(self.builder.get_pointer_field(0), ::core::option::Option::None)
} }
#[inline] #[inline]
pub fn set_name(&mut self, value: ::capnp::text::Reader<'_>) { pub fn set_name(&mut self, value: impl ::capnp::traits::SetterInput<::capnp::text::Owned>) {
self.builder.reborrow().get_pointer_field(0).set_text(value); ::capnp::traits::SetterInput::set_pointer_builder(self.builder.reborrow().get_pointer_field(0), value, false).unwrap()
} }
#[inline] #[inline]
pub fn init_name(self, size: u32) -> ::capnp::text::Builder<'a> { pub fn init_name(self, size: u32) -> ::capnp::text::Builder<'a> {
@ -513,9 +515,11 @@ pub mod agent {
encoded_node: &ENCODED_NODE, encoded_node: &ENCODED_NODE,
nonunion_members: NONUNION_MEMBERS, nonunion_members: NONUNION_MEMBERS,
members_by_discriminant: MEMBERS_BY_DISCRIMINANT, members_by_discriminant: MEMBERS_BY_DISCRIMINANT,
members_by_name: MEMBERS_BY_NAME,
}; };
pub static NONUNION_MEMBERS : &[u16] = &[0]; pub static NONUNION_MEMBERS : &[u16] = &[0];
pub static MEMBERS_BY_DISCRIMINANT : &[u16] = &[]; pub static MEMBERS_BY_DISCRIMINANT : &[u16] = &[];
pub static MEMBERS_BY_NAME : &[u16] = &[0];
pub const TYPE_ID: u64 = 0xf4a4_cb97_342c_81a0; pub const TYPE_ID: u64 = 0xf4a4_cb97_342c_81a0;
} }
} }
@ -633,7 +637,7 @@ pub mod lease {
} }
} }
impl <'a,> ::capnp::traits::SetPointerBuilder for Reader<'a,> { impl <'a,> ::capnp::traits::SetterInput<Owned<>> for Reader<'a,> {
fn set_pointer_builder(mut pointer: ::capnp::private::layout::PointerBuilder<'_>, value: Self, canonicalize: bool) -> ::capnp::Result<()> { pointer.set_struct(&value.reader, canonicalize) } fn set_pointer_builder(mut pointer: ::capnp::private::layout::PointerBuilder<'_>, value: Self, canonicalize: bool) -> ::capnp::Result<()> { pointer.set_struct(&value.reader, canonicalize) }
} }
@ -656,8 +660,8 @@ pub mod lease {
::capnp::traits::FromPointerBuilder::get_from_pointer(self.builder.get_pointer_field(0), ::core::option::Option::None) ::capnp::traits::FromPointerBuilder::get_from_pointer(self.builder.get_pointer_field(0), ::core::option::Option::None)
} }
#[inline] #[inline]
pub fn set_id(&mut self, value: ::capnp::text::Reader<'_>) { pub fn set_id(&mut self, value: impl ::capnp::traits::SetterInput<::capnp::text::Owned>) {
self.builder.reborrow().get_pointer_field(0).set_text(value); ::capnp::traits::SetterInput::set_pointer_builder(self.builder.reborrow().get_pointer_field(0), value, false).unwrap()
} }
#[inline] #[inline]
pub fn init_id(self, size: u32) -> ::capnp::text::Builder<'a> { pub fn init_id(self, size: u32) -> ::capnp::text::Builder<'a> {
@ -672,8 +676,8 @@ pub mod lease {
::capnp::traits::FromPointerBuilder::get_from_pointer(self.builder.get_pointer_field(1), ::core::option::Option::None) ::capnp::traits::FromPointerBuilder::get_from_pointer(self.builder.get_pointer_field(1), ::core::option::Option::None)
} }
#[inline] #[inline]
pub fn set_lease(&mut self, value: ::capnp::text::Reader<'_>) { pub fn set_lease(&mut self, value: impl ::capnp::traits::SetterInput<::capnp::text::Owned>) {
self.builder.reborrow().get_pointer_field(1).set_text(value); ::capnp::traits::SetterInput::set_pointer_builder(self.builder.reborrow().get_pointer_field(1), value, false).unwrap()
} }
#[inline] #[inline]
pub fn init_lease(self, size: u32) -> ::capnp::text::Builder<'a> { pub fn init_lease(self, size: u32) -> ::capnp::text::Builder<'a> {
@ -757,9 +761,11 @@ pub mod lease {
encoded_node: &ENCODED_NODE, encoded_node: &ENCODED_NODE,
nonunion_members: NONUNION_MEMBERS, nonunion_members: NONUNION_MEMBERS,
members_by_discriminant: MEMBERS_BY_DISCRIMINANT, members_by_discriminant: MEMBERS_BY_DISCRIMINANT,
members_by_name: MEMBERS_BY_NAME,
}; };
pub static NONUNION_MEMBERS : &[u16] = &[0,1]; pub static NONUNION_MEMBERS : &[u16] = &[0,1];
pub static MEMBERS_BY_DISCRIMINANT : &[u16] = &[]; pub static MEMBERS_BY_DISCRIMINANT : &[u16] = &[];
pub static MEMBERS_BY_NAME : &[u16] = &[0,1];
pub const TYPE_ID: u64 = 0xb0d6_0854_c50e_5662; pub const TYPE_ID: u64 = 0xb0d6_0854_c50e_5662;
} }
} }

View File

@ -21,6 +21,7 @@ use event::EventService;
use lease::LeaseService; use lease::LeaseService;
use serde::Deserialize; use serde::Deserialize;
use serde_json::json; use serde_json::json;
use tokio::net::TcpListener;
use crate::db::Db; use crate::db::Db;
@ -94,8 +95,8 @@ async fn main() -> anyhow::Result<()> {
}); });
tracing::info!("churn server listening on {}", host); tracing::info!("churn server listening on {}", host);
axum::Server::bind(&host) let listener = TcpListener::bind(&host).await?;
.serve(app.into_make_service()) axum::serve(listener, app.into_make_service())
.await .await
.unwrap(); .unwrap();
} }

View File

@ -6,7 +6,7 @@ edition = "2021"
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
[dependencies] [dependencies]
dagger-sdk = "0.2.2" dagger-sdk = "0.9.8"
dagger-rust = "0.2.0" dagger-rust = {git = "https://git.front.kjuulh.io/kjuulh/dagger-components.git", ref = "main"}
tokio.workspace = true tokio.workspace = true
eyre = "*" eyre = "*"

View File

@ -19,21 +19,22 @@ async fn main() -> eyre::Result<()> {
let server = server let server = server
.with_env_variable("CHURN_DATABASE", "sled") .with_env_variable("CHURN_DATABASE", "sled")
.with_env_variable("CHURN_SLED_PATH", "/mnt/sled") .with_env_variable("CHURN_SLED_PATH", "/mnt/sled")
.with_mounted_cache("/mnt/sled", client.cache_volume("sled").id().await?) .with_mounted_cache("/mnt/sled", client.cache_volume("sled"))
.with_exec(vec!["churn-server", "serve", "--host", "0.0.0.0:3000"]) .with_exec(vec!["churn-server", "serve", "--host", "0.0.0.0:3000"])
.with_exposed_port(3000); .with_exposed_port(3000);
let server_id = server.id().await?; let server_service = server.as_service();
let agent = build_container(client.clone(), "churn-agent").await?; let agent = build_container(client.clone(), "churn-agent").await?;
let agent = agent let agent = agent
.with_service_binding("churn-server", server_id.clone()) .with_service_binding("churn-server", server_service.clone())
.with_exec(vec!["churn-agent", "daemon", "--host", "0.0.0.0:3000"]) .with_exec(vec!["churn-agent", "daemon", "--host", "0.0.0.0:3000"])
.with_exposed_port(3000); .with_exposed_port(3000);
let agent_service = agent.as_service();
let churning = cli let churning = cli
.with_service_binding("churn-agent", agent.id().await?) .with_service_binding("churn-agent", agent_service)
.with_service_binding("churn-server", server_id) .with_service_binding("churn-server", server_service)
.with_env_variable("CHURN_SERVER", "http://churn-server:3000") .with_env_variable("CHURN_SERVER", "http://churn-server:3000")
.with_env_variable("CHURN_SERVER_TOKEN", "something") .with_env_variable("CHURN_SERVER_TOKEN", "something")
.with_env_variable("CHURN_AGENT", "http://churn-agent:3000") .with_env_variable("CHURN_AGENT", "http://churn-agent:3000")
@ -52,7 +53,7 @@ async fn main() -> eyre::Result<()> {
let stderr = churning.stderr().await?; let stderr = churning.stderr().await?;
println!("{stderr}"); println!("{stderr}");
churning.exit_code().await?; churning.sync().await?;
println!("Finished building churning..."); println!("Finished building churning...");
repl(churning).await?; //.with_entrypoint(vec!["churn"])).await?; repl(churning).await?; //.with_entrypoint(vec!["churn"])).await?;
@ -90,7 +91,7 @@ async fn repl(container: dagger_sdk::Container) -> eyre::Result<()> {
} }
} }
match container.exit_code().await { match container.sync().await {
Ok(_) => {} Ok(_) => {}
Err(_e) => { Err(_e) => {
//eprintln!("encountred error: {}", e); //eprintln!("encountred error: {}", e);
@ -101,10 +102,7 @@ async fn repl(container: dagger_sdk::Container) -> eyre::Result<()> {
Ok(()) Ok(())
} }
async fn build_container( async fn build_container(client: Query, bin_name: &str) -> eyre::Result<dagger_sdk::Container> {
client: Arc<Query>,
bin_name: &str,
) -> eyre::Result<dagger_sdk::Container> {
let crates = &["crates/*", "ci"]; let crates = &["crates/*", "ci"];
let debian_deps = &[ let debian_deps = &[
"libssl-dev", "libssl-dev",

View File

@ -1,7 +1,24 @@
# yaml-language-server: $schema=https://git.front.kjuulh.io/kjuulh/cuddle/raw/branch/main/schemas/base.json # yaml-language-server: $schema=https://git.front.kjuulh.io/kjuulh/cuddle/raw/branch/main/schemas/base.json
base: "git@git.front.kjuulh.io:kjuulh/cuddle-base.git" base: "git@git.front.kjuulh.io:kjuulh/cuddle-rust-cli-plan.git"
vars: vars:
service: "churn" service: "churn"
registry: kasperhermansen registry: kasperhermansen
please:
project:
owner: kjuulh
repository: churn
branch: main
settings:
api_url: https://git.front.kjuulh.io
components:
packages:
debian:
dev:
- capnproto
release:
- capnproto