checkpoint
This commit is contained in:
parent
308fa515eb
commit
34956e86bb
|
@ -1,12 +1,15 @@
|
||||||
use crate::error::{Error, Result};
|
use crate::error::{Error, Result};
|
||||||
use attic::cache::CacheSliceIdentifier;
|
|
||||||
use attic::nix_store::{NixStore, StorePath};
|
use attic::nix_store::{NixStore, StorePath};
|
||||||
|
use attic_client::api::ApiError;
|
||||||
|
use attic_client::config::ServerTokenConfig;
|
||||||
use attic_client::push::{PushSession, PushSessionConfig};
|
use attic_client::push::{PushSession, PushSessionConfig};
|
||||||
use attic_client::{
|
use attic_client::{
|
||||||
api::ApiClient,
|
api::ApiClient,
|
||||||
config::ServerConfig,
|
config::ServerConfig,
|
||||||
push::{PushConfig, Pusher},
|
push::{PushConfig, Pusher},
|
||||||
};
|
};
|
||||||
|
use axum::http::{HeaderMap, HeaderValue};
|
||||||
|
use reqwest::header::AUTHORIZATION;
|
||||||
use reqwest::Url;
|
use reqwest::Url;
|
||||||
use serde::Deserialize;
|
use serde::Deserialize;
|
||||||
use std::env;
|
use std::env;
|
||||||
|
@ -91,6 +94,21 @@ pub async fn init_cache(
|
||||||
.await?;
|
.await?;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fn build_http_client(password: &str) -> reqwest::Client {
|
||||||
|
let mut headers = HeaderMap::new();
|
||||||
|
|
||||||
|
let auth_header = HeaderValue::from_str(&format!("Bearer {}", password)).unwrap();
|
||||||
|
headers.insert(AUTHORIZATION, auth_header);
|
||||||
|
|
||||||
|
reqwest::Client::builder()
|
||||||
|
.user_agent(USER_AGENT)
|
||||||
|
.default_headers(headers)
|
||||||
|
.build()
|
||||||
|
.expect("TODO")
|
||||||
|
}
|
||||||
|
|
||||||
|
let flakehub_client = build_http_client(flakehub_password);
|
||||||
|
|
||||||
// Get the cache UUID for this project.
|
// Get the cache UUID for this project.
|
||||||
let cache_name = {
|
let cache_name = {
|
||||||
let github_repo = env::var("GITHUB_REPOSITORY").map_err(|_| {
|
let github_repo = env::var("GITHUB_REPOSITORY").map_err(|_| {
|
||||||
|
@ -131,14 +149,35 @@ pub async fn init_cache(
|
||||||
|
|
||||||
tracing::info!("Using cache {:?}", cache_name);
|
tracing::info!("Using cache {:?}", cache_name);
|
||||||
|
|
||||||
let cache = CacheSliceIdentifier::from_str(&cache_name)?;
|
let cache = cache_name;
|
||||||
|
|
||||||
let api = ApiClient::from_server_config(ServerConfig {
|
let api = ApiClient::from_server_config(ServerConfig {
|
||||||
endpoint: flakehub_cache_server.to_string(),
|
endpoint: flakehub_cache_server.to_string(),
|
||||||
token: flakehub_netrc_entry.password.as_ref().cloned(),
|
token: flakehub_netrc_entry
|
||||||
|
.password
|
||||||
|
.map(|token| ServerTokenConfig::Raw { token })
|
||||||
|
.as_ref()
|
||||||
|
.cloned(),
|
||||||
})?;
|
})?;
|
||||||
|
|
||||||
let cache_config = api.get_cache_config(&cache).await?;
|
let cache_config = {
|
||||||
|
let cache = &cache;
|
||||||
|
let endpoint = flakehub_cache_server
|
||||||
|
.join("_api/v1/cache-config/")
|
||||||
|
.expect("TODO")
|
||||||
|
.join(cache)
|
||||||
|
.expect("TODO");
|
||||||
|
|
||||||
|
let res = flakehub_client.get(endpoint).send().await?;
|
||||||
|
|
||||||
|
if res.status().is_success() {
|
||||||
|
let cache_config = res.json().await?;
|
||||||
|
Ok(cache_config)
|
||||||
|
} else {
|
||||||
|
let api_error = ApiError::try_from_response(res).await?;
|
||||||
|
Err(api_error.into())
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
let push_config = PushConfig {
|
let push_config = PushConfig {
|
||||||
num_workers: 5, // FIXME: use number of CPUs?
|
num_workers: 5, // FIXME: use number of CPUs?
|
||||||
|
|
Loading…
Reference in a new issue