Skip to content

Commit 8b40a70

Browse files
authored
Merge pull request #2475 from input-output-hk/djo/2460/reimpl_gcp_uploader
Aggregator: Re-implement the CloudBackendUploader with gcloud-storage crate
2 parents 9df5a56 + 3c9f808 commit 8b40a70

File tree

12 files changed

+698
-800
lines changed

12 files changed

+698
-800
lines changed

Cargo.lock

Lines changed: 100 additions & 243 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

mithril-aggregator/Cargo.toml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[package]
22
name = "mithril-aggregator"
3-
version = "0.7.47"
3+
version = "0.7.48"
44
description = "A Mithril Aggregator server"
55
authors = { workspace = true }
66
edition = { workspace = true }
@@ -22,10 +22,10 @@ anyhow = { workspace = true }
2222
async-trait = { workspace = true }
2323
chrono = { workspace = true }
2424
clap = { workspace = true, features = ["cargo"] }
25-
cloud-storage = "0.11.1"
2625
config = { workspace = true }
2726
flate2 = "1.1.1"
2827
gcloud-kms = { version = "1.2.0", features = ["auth"] }
28+
gcloud-storage = { version = "1.1.0", features = ["auth"] }
2929
hex = { workspace = true }
3030
mithril-cli-helper = { path = "../internal/mithril-cli-helper" }
3131
mithril-common = { path = "../mithril-common", features = ["full"] }

mithril-aggregator/src/artifact_builder/cardano_database_artifacts/ancillary.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ use mithril_common::{
1111
};
1212

1313
use crate::{
14-
file_uploaders::{GcpUploader, LocalUploader},
14+
file_uploaders::{CloudUploader, LocalUploader},
1515
services::Snapshotter,
1616
tools::file_archiver::FileArchive,
1717
DumbUploader, FileUploader,
@@ -62,7 +62,7 @@ impl AncillaryFileUploader for LocalUploader {
6262
}
6363

6464
#[async_trait]
65-
impl AncillaryFileUploader for GcpUploader {
65+
impl AncillaryFileUploader for CloudUploader {
6666
async fn upload(
6767
&self,
6868
filepath: &Path,

mithril-aggregator/src/artifact_builder/cardano_database_artifacts/digest.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ use mithril_common::{
1515
use slog::{error, Logger};
1616

1717
use crate::{
18-
file_uploaders::{GcpUploader, LocalUploader},
18+
file_uploaders::{CloudUploader, LocalUploader},
1919
tools::{
2020
file_archiver::{appender::AppenderFile, ArchiveParameters, FileArchive, FileArchiver},
2121
url_sanitizer::SanitizedUrlWithTrailingSlash,
@@ -68,7 +68,7 @@ impl DigestFileUploader for LocalUploader {
6868
}
6969

7070
#[async_trait]
71-
impl DigestFileUploader for GcpUploader {
71+
impl DigestFileUploader for CloudUploader {
7272
async fn upload(
7373
&self,
7474
filepath: &Path,

mithril-aggregator/src/artifact_builder/cardano_database_artifacts/immutable.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ use mithril_common::{
1212
};
1313

1414
use crate::{
15-
file_uploaders::{GcpUploader, LocalUploader},
15+
file_uploaders::{CloudUploader, LocalUploader},
1616
services::Snapshotter,
1717
DumbUploader, FileUploader,
1818
};
@@ -102,7 +102,7 @@ impl ImmutableFilesUploader for LocalUploader {
102102
}
103103

104104
#[async_trait]
105-
impl ImmutableFilesUploader for GcpUploader {
105+
impl ImmutableFilesUploader for CloudUploader {
106106
async fn batch_upload(
107107
&self,
108108
filepaths: &[PathBuf],
@@ -116,7 +116,7 @@ impl ImmutableFilesUploader for GcpUploader {
116116
let template_uri =
117117
MultiFilesUri::extract_template_from_uris(file_uris, immutable_file_number_extractor)?
118118
.ok_or_else(|| {
119-
anyhow!("No matching template found in the uploaded files with 'GcpUploader'")
119+
anyhow!("No matching template found in the uploaded files with 'CloudUploader'")
120120
})?;
121121

122122
Ok(ImmutablesLocation::CloudStorage {

mithril-aggregator/src/dependency_injection/builder/protocol/artifacts.rs

Lines changed: 37 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ use crate::configuration::AncillaryFilesSignerConfig;
1616
use crate::dependency_injection::builder::SNAPSHOT_ARTIFACTS_DIR;
1717
use crate::dependency_injection::{DependenciesBuilder, DependenciesBuilderError, Result};
1818
use crate::file_uploaders::{
19-
CloudRemotePath, FileUploadRetryPolicy, GcpBackendUploader, GcpUploader, LocalUploader,
19+
CloudRemotePath, CloudUploader, FileUploadRetryPolicy, GCloudBackendUploader, LocalUploader,
2020
};
2121
use crate::get_dependency;
2222
use crate::http_server::{CARDANO_DATABASE_DOWNLOAD_PATH, SNAPSHOT_DOWNLOAD_PATH};
@@ -28,7 +28,9 @@ use crate::services::{
2828
SignedEntityServiceArtifactsDependencies, Snapshotter,
2929
};
3030
use crate::tools::file_archiver::FileArchiver;
31+
use crate::tools::DEFAULT_GCP_CREDENTIALS_JSON_ENV_VAR;
3132
use crate::{DumbUploader, ExecutionEnvironment, FileUploader, SnapshotUploaderType};
33+
3234
impl DependenciesBuilder {
3335
async fn build_signed_entity_service(&mut self) -> Result<Arc<dyn SignedEntityService>> {
3436
let logger = self.root_logger();
@@ -194,7 +196,8 @@ impl DependenciesBuilder {
194196
let remote_folder_path = CloudRemotePath::new("cardano-immutable-files-full");
195197

196198
Ok(Arc::new(
197-
self.build_gcp_uploader(remote_folder_path, allow_overwrite)?,
199+
self.build_gcp_uploader(remote_folder_path, allow_overwrite)
200+
.await?,
198201
))
199202
}
200203
SnapshotUploaderType::Local => {
@@ -232,11 +235,11 @@ impl DependenciesBuilder {
232235
get_dependency!(self.snapshot_uploader)
233236
}
234237

235-
fn build_gcp_uploader(
238+
async fn build_gcp_uploader(
236239
&self,
237240
remote_folder_path: CloudRemotePath,
238241
allow_overwrite: bool,
239-
) -> Result<GcpUploader> {
242+
) -> Result<CloudUploader> {
240243
let logger = self.root_logger();
241244
let bucket = self
242245
.configuration
@@ -246,19 +249,23 @@ impl DependenciesBuilder {
246249
DependenciesBuilderError::MissingConfiguration("snapshot_bucket_name".to_string())
247250
})?;
248251

249-
Ok(GcpUploader::new(
250-
Arc::new(GcpBackendUploader::try_new(
251-
bucket,
252-
self.configuration.snapshot_use_cdn_domain(),
253-
logger.clone(),
254-
)?),
252+
Ok(CloudUploader::new(
253+
Arc::new(
254+
GCloudBackendUploader::try_new(
255+
bucket,
256+
self.configuration.snapshot_use_cdn_domain(),
257+
DEFAULT_GCP_CREDENTIALS_JSON_ENV_VAR.to_string(),
258+
logger.clone(),
259+
)
260+
.await?,
261+
),
255262
remote_folder_path,
256263
allow_overwrite,
257264
FileUploadRetryPolicy::default(),
258265
))
259266
}
260267

261-
fn build_cardano_database_ancillary_uploaders(
268+
async fn build_cardano_database_ancillary_uploaders(
262269
&self,
263270
) -> Result<Vec<Arc<dyn AncillaryFileUploader>>> {
264271
let logger = self.root_logger();
@@ -269,10 +276,10 @@ impl DependenciesBuilder {
269276
let remote_folder_path =
270277
CloudRemotePath::new("cardano-database").join("ancillary");
271278

272-
Ok(vec![Arc::new(self.build_gcp_uploader(
273-
remote_folder_path,
274-
allow_overwrite,
275-
)?)])
279+
Ok(vec![Arc::new(
280+
self.build_gcp_uploader(remote_folder_path, allow_overwrite)
281+
.await?,
282+
)])
276283
}
277284
SnapshotUploaderType::Local => {
278285
let server_url_prefix = self.configuration.get_server_url()?;
@@ -302,7 +309,7 @@ impl DependenciesBuilder {
302309
}
303310
}
304311

305-
fn build_cardano_database_immutable_uploaders(
312+
async fn build_cardano_database_immutable_uploaders(
306313
&self,
307314
) -> Result<Vec<Arc<dyn ImmutableFilesUploader>>> {
308315
let logger = self.root_logger();
@@ -313,10 +320,10 @@ impl DependenciesBuilder {
313320
let remote_folder_path =
314321
CloudRemotePath::new("cardano-database").join("immutable");
315322

316-
Ok(vec![Arc::new(self.build_gcp_uploader(
317-
remote_folder_path,
318-
allow_overwrite,
319-
)?)])
323+
Ok(vec![Arc::new(
324+
self.build_gcp_uploader(remote_folder_path, allow_overwrite)
325+
.await?,
326+
)])
320327
}
321328
SnapshotUploaderType::Local => {
322329
let server_url_prefix = self.configuration.get_server_url()?;
@@ -337,7 +344,9 @@ impl DependenciesBuilder {
337344
}
338345
}
339346

340-
fn build_cardano_database_digests_uploaders(&self) -> Result<Vec<Arc<dyn DigestFileUploader>>> {
347+
async fn build_cardano_database_digests_uploaders(
348+
&self,
349+
) -> Result<Vec<Arc<dyn DigestFileUploader>>> {
341350
let logger = self.root_logger();
342351
if self.configuration.environment() == ExecutionEnvironment::Production {
343352
match self.configuration.snapshot_uploader_type() {
@@ -346,10 +355,10 @@ impl DependenciesBuilder {
346355
let remote_folder_path =
347356
CloudRemotePath::new("cardano-database").join("digests");
348357

349-
Ok(vec![Arc::new(self.build_gcp_uploader(
350-
remote_folder_path,
351-
allow_overwrite,
352-
)?)])
358+
Ok(vec![Arc::new(
359+
self.build_gcp_uploader(remote_folder_path, allow_overwrite)
360+
.await?,
361+
)])
353362
}
354363
SnapshotUploaderType::Local => {
355364
let server_url_prefix = self.configuration.get_server_url()?;
@@ -387,15 +396,15 @@ impl DependenciesBuilder {
387396
let immutable_dir = self.get_cardano_db_artifacts_dir()?.join("immutable");
388397

389398
let ancillary_builder = Arc::new(AncillaryArtifactBuilder::new(
390-
self.build_cardano_database_ancillary_uploaders()?,
399+
self.build_cardano_database_ancillary_uploaders().await?,
391400
self.get_snapshotter().await?,
392401
self.configuration.get_network()?,
393402
self.root_logger(),
394403
)?);
395404

396405
let immutable_builder = Arc::new(ImmutableArtifactBuilder::new(
397406
immutable_dir,
398-
self.build_cardano_database_immutable_uploaders()?,
407+
self.build_cardano_database_immutable_uploaders().await?,
399408
self.get_snapshotter().await?,
400409
self.root_logger(),
401410
)?);
@@ -405,7 +414,7 @@ impl DependenciesBuilder {
405414

406415
let digest_builder = Arc::new(DigestArtifactBuilder::new(
407416
self.configuration.get_server_url()?,
408-
self.build_cardano_database_digests_uploaders()?,
417+
self.build_cardano_database_digests_uploaders().await?,
409418
digests_snapshotter,
410419
self.configuration.get_network()?,
411420
digests_path,

0 commit comments

Comments
 (0)