Skip to content

Commit af2ed8e

Browse files
author
Damien LACHAUME / PALO-IT
committed
PR review: fix in mithril-client-cli
- use `Self` instead of `SnapshotDownloadCommand` - fix typos - remove unused dependencies
1 parent 32891c9 commit af2ed8e

File tree

3 files changed

+41
-54
lines changed

3 files changed

+41
-54
lines changed

Cargo.lock

Lines changed: 0 additions & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

mithril-client-cli/Cargo.toml

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,6 @@ mithril-client = { path = "../mithril-client", features = ["fs"] }
3636
mithril-common = { path = "../mithril-common", features = ["full"] }
3737
openssl = { version = "0.10.57", features = ["vendored"], optional = true }
3838
openssl-probe = { version = "0.1.5", optional = true }
39-
semver = "1.0.19"
4039
serde = { version = "1.0.188", features = ["derive"] }
4140
serde_json = "1.0.107"
4241
slog = { version = "2.7.0", features = [

mithril-client-cli/src/commands/snapshot/download.rs

Lines changed: 41 additions & 52 deletions
Original file line numberDiff line numberDiff line change
@@ -92,39 +92,35 @@ impl SnapshotDownloadCommand {
9292
.await?
9393
.with_context(|| format!("Can not get the snapshot for digest: '{}'", self.digest))?;
9494

95-
SnapshotDownloadCommand::check_local_disk_info(
96-
1,
97-
&progress_printer,
98-
&db_dir,
99-
&snapshot_message,
100-
)?;
95+
Self::check_local_disk_info(1, &progress_printer, &db_dir, &snapshot_message)?;
10196

102-
let certificate = SnapshotDownloadCommand::fetching_certificate_and_verifying_chain(
97+
let certificate = Self::fetch_certificate_and_verifying_chain(
10398
2,
10499
&progress_printer,
105100
&client,
106-
&snapshot_message,
101+
&snapshot_message.certificate_hash,
107102
)
108103
.await?;
109104

110-
SnapshotDownloadCommand::downloading_and_unpacking_snapshot(
105+
Self::download_and_unpack_snapshot(
111106
3,
112107
&progress_printer,
113108
&client,
114109
&snapshot_message,
115110
&db_dir,
116111
)
117-
.await?;
112+
.await
113+
.with_context(|| {
114+
format!(
115+
"Can not get download and unpack snapshot for digest: '{}'",
116+
self.digest
117+
)
118+
})?;
118119

119-
let message = SnapshotDownloadCommand::computing_snapshot_digest(
120-
4,
121-
&progress_printer,
122-
&certificate,
123-
&db_dir,
124-
)
125-
.await?;
120+
let message =
121+
Self::compute_snapshot_message(4, &progress_printer, &certificate, &db_dir).await?;
126122

127-
SnapshotDownloadCommand::verifying_snapshot_signature(
123+
Self::verify_snapshot_signature(
128124
5,
129125
&progress_printer,
130126
&certificate,
@@ -133,7 +129,7 @@ impl SnapshotDownloadCommand {
133129
)
134130
.await?;
135131

136-
SnapshotDownloadCommand::log_download_information(&db_dir, &snapshot_message, self.json)?;
132+
Self::log_download_information(&db_dir, &snapshot_message, self.json)?;
137133

138134
Ok(())
139135
}
@@ -142,13 +138,13 @@ impl SnapshotDownloadCommand {
142138
step_number: u16,
143139
progress_printer: &ProgressPrinter,
144140
db_dir: &PathBuf,
145-
snapshot_message: &Snapshot,
141+
snapshot: &Snapshot,
146142
) -> StdResult<()> {
147143
progress_printer.report_step(step_number, "Checking local disk info…")?;
148144
if let Err(e) = SnapshotUnpacker::check_prerequisites(
149145
db_dir,
150-
snapshot_message.size,
151-
snapshot_message.compression_algorithm.unwrap_or_default(),
146+
snapshot.size,
147+
snapshot.compression_algorithm.unwrap_or_default(),
152148
) {
153149
progress_printer
154150
.report_step(step_number, &SnapshotUtils::check_disk_space_error(e)?)?;
@@ -164,52 +160,43 @@ impl SnapshotDownloadCommand {
164160
Ok(())
165161
}
166162

167-
async fn fetching_certificate_and_verifying_chain(
163+
async fn fetch_certificate_and_verifying_chain(
168164
step_number: u16,
169165
progress_printer: &ProgressPrinter,
170166
client: &Client,
171-
snapshot_message: &Snapshot,
167+
certificate_hash: &str,
172168
) -> StdResult<MithrilCertificate> {
173169
progress_printer.report_step(
174170
step_number,
175171
"Fetching the certificate and verifying the certificate chain…",
176172
)?;
177173
let certificate = client
178174
.certificate()
179-
.verify_chain(&snapshot_message.certificate_hash)
175+
.verify_chain(certificate_hash)
180176
.await
181177
.with_context(|| {
182178
format!(
183179
"Can not verify the certificate chain from certificate_hash: '{}'",
184-
snapshot_message.certificate_hash
180+
certificate_hash
185181
)
186182
})?;
187183

188184
Ok(certificate)
189185
}
190186

191-
async fn downloading_and_unpacking_snapshot(
187+
async fn download_and_unpack_snapshot(
192188
step_number: u16,
193189
progress_printer: &ProgressPrinter,
194190
client: &Client,
195-
snapshot_message: &Snapshot,
191+
snapshot: &Snapshot,
196192
db_dir: &Path,
197193
) -> StdResult<()> {
198194
progress_printer.report_step(step_number, "Downloading and unpacking the snapshot…")?;
199-
client
200-
.snapshot()
201-
.download_unpack(snapshot_message, db_dir)
202-
.await
203-
.with_context(|| {
204-
format!(
205-
"Snapshot Service can not download and verify the snapshot for digest: '{}'",
206-
snapshot_message.digest
207-
)
208-
})?;
195+
client.snapshot().download_unpack(snapshot, db_dir).await?;
209196

210197
// The snapshot download does not fail if the statistic call fails.
211198
// It would be nice to implement tests to verify the behavior of `add_statistics`
212-
if let Err(e) = client.snapshot().add_statistics(snapshot_message).await {
199+
if let Err(e) = client.snapshot().add_statistics(snapshot).await {
213200
warn!("Could not increment snapshot download statistics: {e:?}");
214201
}
215202

@@ -224,13 +211,13 @@ impl SnapshotDownloadCommand {
224211
Ok(())
225212
}
226213

227-
async fn computing_snapshot_digest(
214+
async fn compute_snapshot_message(
228215
step_number: u16,
229216
progress_printer: &ProgressPrinter,
230217
certificate: &MithrilCertificate,
231218
db_dir: &Path,
232219
) -> StdResult<ProtocolMessage> {
233-
progress_printer.report_step(step_number, "Computing the snapshot digest…")?;
220+
progress_printer.report_step(step_number, "Computing the snapshot message")?;
234221
let message = SnapshotUtils::wait_spinner(
235222
progress_printer,
236223
MessageBuilder::new().compute_snapshot_message(certificate, db_dir),
@@ -246,20 +233,20 @@ impl SnapshotDownloadCommand {
246233
Ok(message)
247234
}
248235

249-
async fn verifying_snapshot_signature(
236+
async fn verify_snapshot_signature(
250237
step_number: u16,
251238
progress_printer: &ProgressPrinter,
252239
certificate: &MithrilCertificate,
253240
message: &ProtocolMessage,
254-
snapshot_message: &Snapshot,
241+
snapshot: &Snapshot,
255242
) -> StdResult<()> {
256243
progress_printer.report_step(step_number, "Verifying the snapshot signature…")?;
257244
if !certificate.match_message(message) {
258245
debug!("Digest verification failed, removing unpacked files & directory.");
259246

260247
return Err(anyhow!(
261248
"Certificate verification failed (snapshot digest = '{}').",
262-
snapshot_message.digest.clone()
249+
snapshot.digest.clone()
263250
));
264251
}
265252

@@ -268,7 +255,7 @@ impl SnapshotDownloadCommand {
268255

269256
fn log_download_information(
270257
db_dir: &Path,
271-
snapshot_message: &Snapshot,
258+
snapshot: &Snapshot,
272259
json_output: bool,
273260
) -> StdResult<()> {
274261
let canonicalized_filepath = &db_dir.canonicalize().with_context(|| {
@@ -285,24 +272,26 @@ impl SnapshotDownloadCommand {
285272
canonicalized_filepath.display()
286273
);
287274
} else {
275+
let cardano_node_version = snapshot
276+
.cardano_node_version
277+
.clone()
278+
.unwrap_or("latest".to_string());
288279
println!(
289280
r###"Snapshot '{}' has been unpacked and successfully checked against Mithril multi-signature contained in the certificate.
290281
291282
Files in the directory '{}' can be used to run a Cardano node with version >= {}.
292283
293284
If you are using Cardano Docker image, you can restore a Cardano Node with:
294285
295-
docker run -v cardano-node-ipc:/ipc -v cardano-node-data:/data --mount type=bind,source="{}",target=/data/db/ -e NETWORK={} inputoutput/cardano-node:8.1.2
286+
docker run -v cardano-node-ipc:/ipc -v cardano-node-data:/data --mount type=bind,source="{}",target=/data/db/ -e NETWORK={} inputoutput/cardano-node:{}
296287
297288
"###,
298-
snapshot_message.digest,
289+
snapshot.digest,
299290
db_dir.display(),
300-
snapshot_message
301-
.cardano_node_version
302-
.clone()
303-
.unwrap_or("latest".to_string()),
291+
cardano_node_version,
304292
canonicalized_filepath.display(),
305-
snapshot_message.beacon.network,
293+
snapshot.beacon.network,
294+
cardano_node_version
306295
);
307296
}
308297

0 commit comments

Comments
 (0)