Skip to content

Commit 176fab4

Browse files
pfmooneyPatrick Mooney
authored andcommitted
Fix various clippy nits
1 parent a54fe33 commit 176fab4

File tree

7 files changed

+90
-61
lines changed

7 files changed

+90
-61
lines changed

bin/propolis-server/src/lib/mock_server.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -126,7 +126,7 @@ impl InstanceContext {
126126
self.state_watcher_tx
127127
.send(api::InstanceStateMonitorResponse {
128128
gen: self.generation,
129-
state: self.state.clone(),
129+
state: self.state,
130130
migration: None,
131131
})
132132
.map_err(|_| Error::TransitionSendFail)
@@ -223,7 +223,7 @@ async fn instance_ensure(
223223
))
224224
})?;
225225
base64::engine::general_purpose::STANDARD
226-
.decode(&cloud_init_bytes)
226+
.decode(cloud_init_bytes)
227227
.map_err(|e| {
228228
let err = IoError::new(ErrorKind::InvalidInput, e.to_string());
229229
HttpError::for_internal_error(format!(
@@ -253,7 +253,7 @@ async fn instance_get(
253253
})?;
254254
let instance_info = api::Instance {
255255
properties: instance.properties.clone(),
256-
state: instance.state.clone(),
256+
state: instance.state,
257257
disks: vec![],
258258
nics: vec![],
259259
};

bin/propolis-server/src/lib/server.rs

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -196,8 +196,10 @@ impl ServiceProviders {
196196
);
197197
}
198198
if let Some(serial_task) = self.serial_task.lock().await.take() {
199-
let _ =
200-
serial_task.control_ch.send(SerialTaskControlMessage::Stopping);
199+
let _ = serial_task
200+
.control_ch
201+
.send(SerialTaskControlMessage::Stopping)
202+
.await;
201203
// Wait for the serial task to exit
202204
let _ = serial_task.task.await;
203205
}

bin/propolis-server/src/main.rs

Lines changed: 73 additions & 48 deletions
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,77 @@ pub fn run_openapi() -> Result<(), String> {
6666
.map_err(|e| e.to_string())
6767
}
6868

69+
#[cfg(not(feature = "mock-only"))]
70+
async fn run_server(
71+
config_app: config::Config,
72+
config_dropshot: dropshot::ConfigDropshot,
73+
metrics_addr: Option<SocketAddr>,
74+
vnc_addr: SocketAddr,
75+
log: slog::Logger,
76+
) -> anyhow::Result<()> {
77+
// Check that devices conform to expected API version
78+
propolis::api_version::check().context("API version checks")?;
79+
80+
let vnc_server = setup_vnc(&log, vnc_addr);
81+
let vnc_server_hdl = vnc_server.clone();
82+
let use_reservoir = config::reservoir_decide(&log);
83+
84+
let config_metrics = metrics_addr.map(|addr| {
85+
let imc =
86+
MetricsEndpointConfig::new(config_dropshot.bind_address, addr);
87+
info!(log, "Metrics server will use {:?}", imc);
88+
imc
89+
});
90+
91+
let context = server::DropshotEndpointContext::new(
92+
config_app,
93+
vnc_server,
94+
use_reservoir,
95+
log.new(slog::o!()),
96+
config_metrics,
97+
);
98+
99+
info!(log, "Starting server...");
100+
101+
let server = HttpServerStarter::new(
102+
&config_dropshot,
103+
server::api(),
104+
Arc::new(context),
105+
&log,
106+
)
107+
.map_err(|error| anyhow!("Failed to start server: {}", error))?
108+
.start();
109+
110+
let server_res = join!(server, vnc_server_hdl.start()).0;
111+
112+
server_res.map_err(|e| anyhow!("Server exited with an error: {}", e))
113+
}
114+
115+
#[cfg(feature = "mock-only")]
116+
async fn run_server(
117+
config_app: config::Config,
118+
config_dropshot: dropshot::ConfigDropshot,
119+
_metrics_addr: Option<SocketAddr>,
120+
_vnc_addr: SocketAddr,
121+
log: slog::Logger,
122+
) -> anyhow::Result<()> {
123+
let context = server::Context::new(config_app, log.new(slog::o!()));
124+
125+
info!(log, "Starting server...");
126+
127+
let server = HttpServerStarter::new(
128+
&config_dropshot,
129+
server::api(),
130+
Arc::new(context),
131+
&log,
132+
)
133+
.map_err(|error| anyhow!("Failed to start server: {}", error))?
134+
.start();
135+
136+
let server_res = server.await;
137+
server_res.map_err(|e| anyhow!("Server exited with an error: {}", e))
138+
}
139+
69140
#[tokio::main]
70141
async fn main() -> anyhow::Result<()> {
71142
// Ensure proper setup of USDT probes
@@ -93,54 +164,8 @@ async fn main() -> anyhow::Result<()> {
93164
|error| anyhow!("failed to create logger: {}", error),
94165
)?;
95166

96-
let context;
97-
cfg_if::cfg_if! {
98-
if #[cfg(not(feature = "mock-only"))] {
99-
// Check that devices conform to expected API version
100-
propolis::api_version::check().context("API version checks")?;
101-
102-
let vnc_server = setup_vnc(&log, vnc_addr);
103-
let vnc_server_hdl = vnc_server.clone();
104-
let use_reservoir = config::reservoir_decide(&log);
105-
106-
let metric_config = metric_addr.map(|addr| {
107-
let imc = MetricsEndpointConfig::new(propolis_addr, addr);
108-
info!(log, "Metrics server will use {:?}", imc);
109-
imc
110-
});
111-
context = server::DropshotEndpointContext::new(
112-
config,
113-
vnc_server,
114-
use_reservoir,
115-
log.new(slog::o!()),
116-
metric_config,
117-
);
118-
} else {
119-
context = server::Context::new(config, log.new(slog::o!()));
120-
}
121-
}
122-
123-
info!(log, "Starting server...");
124-
125-
let server = HttpServerStarter::new(
126-
&config_dropshot,
127-
server::api(),
128-
Arc::new(context),
129-
&log,
130-
)
131-
.map_err(|error| anyhow!("Failed to start server: {}", error))?
132-
.start();
133-
134-
let server_res;
135-
cfg_if::cfg_if! {
136-
if #[cfg(not(feature = "mock-only"))] {
137-
server_res = join!(server, vnc_server_hdl.start()).0;
138-
} else {
139-
server_res = server.await;
140-
}
141-
};
142-
server_res
143-
.map_err(|e| anyhow!("Server exited with an error: {}", e))
167+
run_server(config, config_dropshot, metric_addr, vnc_addr, log)
168+
.await
144169
}
145170
}
146171
}

lib/propolis-client/src/lib.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -128,7 +128,7 @@ pub mod support {
128128
> {
129129
let value = self.ws_stream.next().await;
130130
if let Some(Ok(WSMessage::Text(json))) = &value {
131-
match serde_json::from_str(&json) {
131+
match serde_json::from_str(json) {
132132
Ok(InstanceSerialConsoleControlMessage::Migrating {
133133
destination,
134134
from_start,

phd-tests/framework/src/disk/file.rs

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,11 @@ impl FileBackedDisk {
4141
// read-only).
4242
let disk_file = std::fs::File::open(&disk_path)?;
4343
let mut permissions = disk_file.metadata()?.permissions();
44+
45+
// TODO: Clippy is upset that `set_readonly(false)` results in
46+
// world-writable files on UNIX-like OSes. Suppress the lint for now
47+
// until someone gets around to a more specific solution.
48+
#[allow(clippy::permissions_set_readonly_false)]
4449
permissions.set_readonly(false);
4550
disk_file.set_permissions(permissions)?;
4651

phd-tests/framework/src/test_vm/mod.rs

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -349,7 +349,7 @@ impl TestVm {
349349
.map_err(|e| anyhow!("error during migration: {}", e))
350350
}
351351
VmState::Ensured { .. } => {
352-
return Err(VmStateError::InstanceAlreadyEnsured.into());
352+
Err(VmStateError::InstanceAlreadyEnsured.into())
353353
}
354354
}
355355
}
@@ -396,11 +396,8 @@ impl TestVm {
396396
);
397397

398398
let wait_fn = || -> Result<(), backoff::Error<anyhow::Error>> {
399-
let current = self
400-
.get()
401-
.map_err(|e| backoff::Error::Permanent(e.into()))?
402-
.instance
403-
.state;
399+
let current =
400+
self.get().map_err(backoff::Error::Permanent)?.instance.state;
404401
if current == target {
405402
Ok(())
406403
} else {

phd-tests/tests/src/migrate.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ fn smoke_test(ctx: &TestContext) {
2222
.new_vm_from_cloned_config("migration_smoke_target", &source)?;
2323

2424
let serial_hist_pre = source.get_serial_console_history(0)?;
25-
assert!(serial_hist_pre.data.len() > 0);
25+
assert!(!serial_hist_pre.data.is_empty());
2626

2727
let migration_id = Uuid::new_v4();
2828
target.migrate_from(&source, migration_id, Duration::from_secs(60))?;

0 commit comments

Comments
 (0)