refactor(tvix/castore): factor out castore related ServiceUrls utils

Change-Id: Ib4cef49a9519ebf88a05035a7261badd312135f0
Reviewed-on: https://cl.tvl.fyi/c/depot/+/13156
Reviewed-by: flokli <flokli@flokli.de>
Tested-by: BuildkiteCI
This commit is contained in:
Marijan Petričević 2025-02-16 06:30:11 +01:00
parent 0bbeed166d
commit a2e78b62ff
6 changed files with 195 additions and 30 deletions

View file

@ -6,6 +6,7 @@ use std::{
};
use tokio::io::{self, AsyncWrite};
use tvix_castore::utils as castore_utils;
use tvix_castore::{blobservice::BlobService, directoryservice::DirectoryService};
use url::Url;
@ -36,19 +37,8 @@ pub struct CompositionConfigs {
/// directly locally, like the `tvix-store daemon` command.
#[derive(clap::Parser, Clone)]
pub struct ServiceUrls {
#[arg(
long,
env,
default_value = "objectstore+file:///var/lib/tvix-store/blobs.object_store"
)]
blob_service_addr: String,
#[arg(
long,
env,
default_value = "redb:///var/lib/tvix-store/directories.redb"
)]
directory_service_addr: String,
#[clap(flatten)]
castore_service_addrs: castore_utils::ServiceUrls,
#[arg(long, env, default_value = "redb:///var/lib/tvix-store/pathinfo.redb")]
path_info_service_addr: String,
@ -67,11 +57,8 @@ pub struct ServiceUrls {
/// from another running tvix daemon, via gRPC.
#[derive(clap::Parser, Clone)]
pub struct ServiceUrlsGrpc {
#[arg(long, env, default_value = "grpc+http://[::1]:8000")]
blob_service_addr: String,
#[arg(long, env, default_value = "grpc+http://[::1]:8000")]
directory_service_addr: String,
#[clap(flatten)]
castore_service_addrs: castore_utils::ServiceUrlsGrpc,
#[arg(long, env, default_value = "grpc+http://[::1]:8000")]
path_info_service_addr: String,
@ -90,11 +77,8 @@ pub struct ServiceUrlsGrpc {
/// to interpret.
#[derive(clap::Parser, Clone)]
pub struct ServiceUrlsMemory {
#[arg(long, env, default_value = "memory://")]
blob_service_addr: String,
#[arg(long, env, default_value = "memory://")]
directory_service_addr: String,
#[clap(flatten)]
castore_service_addrs: castore_utils::ServiceUrlsMemory,
#[arg(long, env, default_value = "memory://")]
path_info_service_addr: String,
@ -107,8 +91,7 @@ pub struct ServiceUrlsMemory {
impl From<ServiceUrlsGrpc> for ServiceUrls {
fn from(urls: ServiceUrlsGrpc) -> ServiceUrls {
ServiceUrls {
blob_service_addr: urls.blob_service_addr,
directory_service_addr: urls.directory_service_addr,
castore_service_addrs: urls.castore_service_addrs.into(),
path_info_service_addr: urls.path_info_service_addr,
#[cfg(feature = "xp-composition-cli")]
experimental_store_composition: urls.experimental_store_composition,
@ -119,8 +102,7 @@ impl From<ServiceUrlsGrpc> for ServiceUrls {
impl From<ServiceUrlsMemory> for ServiceUrls {
fn from(urls: ServiceUrlsMemory) -> ServiceUrls {
ServiceUrls {
blob_service_addr: urls.blob_service_addr,
directory_service_addr: urls.directory_service_addr,
castore_service_addrs: urls.castore_service_addrs.into(),
path_info_service_addr: urls.path_info_service_addr,
#[cfg(feature = "xp-composition-cli")]
experimental_store_composition: urls.experimental_store_composition,
@ -145,8 +127,8 @@ pub async fn addrs_to_configs(
let mut configs: CompositionConfigs = Default::default();
let blob_service_url = Url::parse(&urls.blob_service_addr)?;
let directory_service_url = Url::parse(&urls.directory_service_addr)?;
let blob_service_url = Url::parse(&urls.castore_service_addrs.blob_service_addr)?;
let directory_service_url = Url::parse(&urls.castore_service_addrs.directory_service_addr)?;
let path_info_service_url = Url::parse(&urls.path_info_service_addr)?;
configs.blobservices.insert(