Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 3 additions & 1 deletion bin/dropshot-apis/src/main.rs
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,9 @@ pub fn environment() -> anyhow::Result<Environment> {
pub fn all_apis() -> anyhow::Result<ManagedApis> {
let apis = vec![ManagedApiConfig {
ident: "propolis-server",
versions: Versions::Lockstep { version: semver::Version::new(0, 0, 1) },
versions: Versions::Versioned {
supported_versions: propolis_server_api::supported_versions(),
},
title: "Oxide Propolis Server API",
metadata: ManagedApiMetadata {
description: Some(
Expand Down
2 changes: 1 addition & 1 deletion bin/mock-server/src/lib/api_types.rs
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ use schemars::JsonSchema;
use serde::{Deserialize, Serialize};

progenitor::generate_api!(
spec = "../../openapi/propolis-server.json",
spec = "../../openapi/propolis-server/propolis-server-latest.json",
derives = [schemars::JsonSchema],
replace = {
SpecKey = propolis_api_types::instance_spec::SpecKey,
Expand Down
2 changes: 1 addition & 1 deletion bin/propolis-server/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -21,4 +21,4 @@ pfexec target/debug/propolis-server <path_to_bootrom> <ip:port> <vnc_ip:port>
The API will be served on `ip:port`. The easiest way to interact with the server
is to use [`propolis-cli`](../propolis-cli), but you can also use tools like
cURL to interact with the API directly. The server's OpenAPI specification is
[checked into the repo](../../openapi/propolis-server.json).
[checked into the repo](../../openapi/propolis-server).
18 changes: 14 additions & 4 deletions bin/propolis-server/src/main.rs
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,10 @@ use propolis_server::{

use anyhow::{anyhow, Context};
use clap::Parser;
use dropshot::{ConfigDropshot, HandlerTaskMode, HttpServerStarter};
use dropshot::{
ClientSpecifiesVersionInHeader, ConfigDropshot, HandlerTaskMode,
VersionPolicy,
};
use slog::{info, Logger};

/// Threads to spawn for tokio runtime handling the API (dropshot, etc)
Expand Down Expand Up @@ -167,12 +170,19 @@ fn run_server(

info!(log, "Starting server...");

let server = HttpServerStarter::new(
&config_dropshot,
let server = dropshot::ServerBuilder::new(
server::api(),
Arc::new(context),
&log,
log.clone(),
)
.config(config_dropshot)
.version_policy(VersionPolicy::Dynamic(Box::new(
ClientSpecifiesVersionInHeader::new(
omicron_common::api::VERSION_HEADER,
propolis_server_api::latest_version(),
),
)))
.build_starter()
.map_err(|error| anyhow!("Failed to start server: {error}"))?
.start();

Expand Down
2 changes: 1 addition & 1 deletion lib/propolis-client/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@ pub mod instance_spec {
pub use crucible_client_types::{CrucibleOpts, VolumeConstructionRequest};

progenitor::generate_api!(
spec = "../../openapi/propolis-server.json",
spec = "../../openapi/propolis-server/propolis-server-latest.json",
interface = Builder,
tags = Separate,
replace = {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
"url": "https://oxide.computer",
"email": "api@oxide.computer"
},
"version": "0.0.1"
"version": "1.0.0"
},
"paths": {
"/instance": {
Expand Down
1 change: 1 addition & 0 deletions openapi/propolis-server/propolis-server-latest.json
Loading