Skip to content

Commit cf97c14

Browse files
authored
[installinator] allow more generic data over the wire (#9304)
Before marking this API client-side-versioned (#9295), let's ensure forward compatibility for installinator by allowing us to send more generic data over the wire. This will allow new versions of installinator to work transparently against old versions of wicketd. Wicketd does need access to structured installinator data in one spot, and we can deserialize just that part of metadata. All other data involved is just for internal bookkeeping within a service (doesn't have to transcend version boundaries), and for human consumption in the UI. There are no changes to the wire protocol, just to how it gets deserialized on the server.
1 parent c5c0834 commit cf97c14

File tree

10 files changed

+141
-1336
lines changed

10 files changed

+141
-1336
lines changed

Cargo.lock

Lines changed: 1 addition & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

clients/installinator-client/Cargo.toml

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,6 @@ license = "MPL-2.0"
88
workspace = true
99

1010
[dependencies]
11-
installinator-common.workspace = true
1211
omicron-common.workspace = true
1312
omicron-uuid-kinds.workspace = true
1413
progenitor.workspace = true

clients/installinator-client/src/lib.rs

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -24,12 +24,10 @@ progenitor::generate_api!(
2424
},
2525
replace = {
2626
Duration = std::time::Duration,
27-
EventReportForInstallinatorSpec = installinator_common::EventReport,
27+
EventReportForGenericSpec = update_engine::events::EventReport<update_engine::NestedSpec>,
2828
M2Slot = omicron_common::disk::M2Slot,
29-
ProgressEventForGenericSpec = installinator_common::ProgressEvent<update_engine::NestedSpec>,
30-
ProgressEventForInstallinatorSpec = installinator_common::ProgressEvent,
31-
StepEventForGenericSpec = installinator_common::StepEvent<update_engine::NestedSpec>,
32-
StepEventForInstallinatorSpec = installinator_common::StepEvent,
29+
ProgressEventForGenericSpec = update_engine::events::ProgressEvent<update_engine::NestedSpec>,
30+
StepEventForGenericSpec = update_engine::events::StepEvent<update_engine::NestedSpec>,
3331
}
3432
);
3533

installinator-api/Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,12 +11,12 @@ workspace = true
1111
anyhow.workspace = true
1212
dropshot.workspace = true
1313
hyper.workspace = true
14-
installinator-common.workspace = true
1514
omicron-common.workspace = true
1615
omicron-uuid-kinds.workspace = true
1716
omicron-workspace-hack.workspace = true
1817
schemars.workspace = true
1918
serde.workspace = true
2019
slog.workspace = true
2120
tufaceous-artifact.workspace = true
21+
update-engine.workspace = true
2222
uuid.workspace = true

installinator-api/src/lib.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,11 +15,11 @@ use dropshot::{
1515
RequestContext, TypedBody,
1616
};
1717
use hyper::header;
18-
use installinator_common::EventReport;
1918
use omicron_uuid_kinds::MupdateUuid;
2019
use schemars::JsonSchema;
2120
use serde::Deserialize;
2221
use tufaceous_artifact::ArtifactHashId;
22+
use update_engine::{NestedSpec, events::EventReport};
2323

2424
const PROGRESS_REPORT_MAX_BYTES: usize = 4 * 1024 * 1024;
2525

@@ -57,7 +57,7 @@ pub trait InstallinatorApi {
5757
async fn report_progress(
5858
rqctx: RequestContext<Self::Context>,
5959
path: Path<ReportQuery>,
60-
report: TypedBody<EventReport>,
60+
report: TypedBody<EventReport<NestedSpec>>,
6161
) -> Result<HttpResponseUpdatedNoContent, HttpError>;
6262
}
6363

installinator/src/artifact.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -234,7 +234,7 @@ impl ArtifactClient {
234234
report: EventReport,
235235
) -> Result<(), ClientError> {
236236
self.client
237-
.report_progress(&update_id, &report)
237+
.report_progress(&update_id, &report.into_generic())
238238
.await
239239
.map(|resp| resp.into_inner())
240240
}

0 commit comments

Comments
 (0)