Skip to content

Commit adf3863

Browse files
authored
chore: bump Rust edition to 2024 and apply cargo fix + clippy updates (#841)
Run `cargo fix --edition` and resolve resulting warnings: - Add `use<>` syntax to `impl Trait` return types (auto-fixed) - Fix Rust 2024 temporary drop order changes across async main tasks and backend helpers - Unnest nested `Ok(Json(...))` block in user-info endpoint to isolate temporary lifetimes - Rewrite immediate `let` bindings to use `?` followed by explicit `Ok(...)` returns - Fix Rust 2024 temporary drop order change by simplifying `_initial_reconcile_rx` handling - Apply Clippy suggestions - Use `&& let` chaining instead of nested `if let` blocks in `controller.rs`
1 parent 1f3d3d3 commit adf3863

8 files changed

Lines changed: 84 additions & 85 deletions

File tree

Cargo.nix

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

Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ resolver = "2"
66
version = "0.0.0-dev"
77
authors = ["Stackable GmbH <info@stackable.tech>"]
88
license = "OSL-3.0"
9-
edition = "2021"
9+
edition = "2024"
1010
repository = "https://github.com/stackabletech/opa-operator"
1111

1212
[workspace.dependencies]

rust/bundle-builder/src/main.rs

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -210,7 +210,8 @@ async fn main() -> Result<(), StartupError> {
210210
.context(RunServerSnafu)
211211
});
212212

213-
future::select(reflector, server).await.factor_first().0
213+
future::select(reflector, server).await.factor_first().0?;
214+
Ok(())
214215
}
215216

216217
#[derive(Snafu, Debug)]
@@ -244,7 +245,7 @@ enum BundleError {
244245
}
245246

246247
impl BundleError {
247-
fn to_http_response(&self) -> impl IntoResponse {
248+
fn to_http_response(&self) -> impl IntoResponse + use<> {
248249
(
249250
http::StatusCode::INTERNAL_SERVER_ERROR,
250251
"failed to build bundle, see opa-bundle-builder logs for more details",

rust/operator-binary/src/controller.rs

Lines changed: 8 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1203,10 +1203,9 @@ fn build_config_file(
12031203
if let Some(ContainerLogConfig {
12041204
choice: Some(ContainerLogConfigChoice::Automatic(log_config)),
12051205
}) = merged_config.logging.containers.get(&Container::Opa)
1206+
&& let Some(config) = log_config.loggers.get("decision")
12061207
{
1207-
if let Some(config) = log_config.loggers.get("decision") {
1208-
decision_logging_enabled = config.level != LogLevel::NONE;
1209-
}
1208+
decision_logging_enabled = config.level != LogLevel::NONE;
12101209
}
12111210

12121211
let decision_logging = if decision_logging_enabled {
@@ -1341,13 +1340,11 @@ fn build_bundle_builder_start_command(merged_config: &OpaConfig, container_name:
13411340
.logging
13421341
.containers
13431342
.get(&Container::BundleBuilder)
1344-
{
1345-
if let Some(AppenderConfig {
1343+
&& let Some(AppenderConfig {
13461344
level: Some(log_level),
13471345
}) = log_config.console
1348-
{
1349-
console_logging_off = log_level == LogLevel::NONE
1350-
}
1346+
{
1347+
console_logging_off = log_level == LogLevel::NONE
13511348
};
13521349

13531350
formatdoc! {"
@@ -1401,13 +1398,11 @@ fn sidecar_container_log_level(
14011398
if let Some(ContainerLogConfig {
14021399
choice: Some(ContainerLogConfigChoice::Automatic(log_config)),
14031400
}) = merged_config.logging.containers.get(sidecar_container)
1404-
{
1405-
if let Some(logger) = log_config
1401+
&& let Some(logger) = log_config
14061402
.loggers
14071403
.get(AutomaticContainerLogConfig::ROOT_LOGGER)
1408-
{
1409-
return BundleBuilderLogLevel::from(logger.level);
1410-
}
1404+
{
1405+
return BundleBuilderLogLevel::from(logger.level);
14111406
}
14121407

14131408
BundleBuilderLogLevel::Info

rust/operator-binary/src/webhooks/conversion.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ pub async fn create_webhook_server(
3434
disable_crd_maintenance,
3535
};
3636

37-
let (conversion_webhook, _initial_reconcile_rx) =
37+
let (conversion_webhook, _) =
3838
ConversionWebhook::new(crds_and_handlers, client, conversion_webhook_options);
3939

4040
let webhook_server_options = WebhookServerOptions {

rust/user-info-fetcher/src/backend/active_directory.rs

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -181,14 +181,15 @@ pub(crate) async fn get_user_info(
181181
.context(UserNotFoundSnafu { request })?;
182182
let user = SearchEntry::construct(user);
183183
tracing::debug!(?user, "got user from LDAP");
184-
user_attributes(
184+
let attrs = user_attributes(
185185
&mut ldap,
186186
base_distinguished_name,
187187
&user,
188188
custom_attribute_mappings,
189189
additional_group_attribute_filters,
190190
)
191-
.await
191+
.await?;
192+
Ok(attrs)
192193
}
193194

194195
/// Constructs a user filter that searches both the UPN as well as the sAMAccountName attributes.

rust/user-info-fetcher/src/backend/openldap.rs

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -178,14 +178,15 @@ impl ResolvedOpenLdapBackend {
178178
// Search for groups that contain this user
179179
let groups = search_user_groups(&mut ldap, &user, &self.config).await?;
180180

181-
user_attributes(
181+
let attrs = user_attributes(
182182
user_id_attribute,
183183
user_name_attribute,
184184
&user,
185185
groups,
186186
&self.config.custom_attribute_mappings,
187187
)
188-
.await
188+
.await?;
189+
Ok(attrs)
189190
}
190191
}
191192

rust/user-info-fetcher/src/main.rs

Lines changed: 61 additions & 60 deletions
Original file line numberDiff line numberDiff line change
@@ -209,7 +209,8 @@ async fn main() -> Result<(), StartupError> {
209209
axum::serve(listener, app.into_make_service())
210210
.with_graceful_shutdown(shutdown_requested)
211211
.await
212-
.context(RunServerSnafu)
212+
.context(RunServerSnafu)?;
213+
Ok(())
213214
}
214215

215216
#[derive(Debug, Deserialize, PartialEq, Eq, Hash, Clone)]
@@ -315,64 +316,64 @@ async fn get_user_info(
315316
backend,
316317
user_info_cache,
317318
} = state;
318-
Ok(Json(
319-
user_info_cache
320-
.try_get_with_by_ref(&req, async {
321-
match backend.as_ref() {
322-
ResolvedBackend::None => {
323-
let user_id = match &req {
324-
UserInfoRequest::UserInfoRequestById(UserInfoRequestById { id }) => {
325-
Some(id)
326-
}
327-
_ => None,
328-
};
329-
let username = match &req {
330-
UserInfoRequest::UserInfoRequestByName(UserInfoRequestByName {
331-
username,
332-
}) => Some(username),
333-
_ => None,
334-
};
335-
Ok(UserInfo {
336-
id: user_id.cloned(),
337-
username: username.cloned(),
338-
groups: vec![],
339-
custom_attributes: HashMap::new(),
340-
})
341-
}
342-
ResolvedBackend::Keycloak(keycloak) => keycloak
343-
.get_user_info(&req)
344-
.await
345-
.context(get_user_info_error::KeycloakSnafu),
346-
ResolvedBackend::ExperimentalXfscAas(aas) => aas
347-
.get_user_info(&req)
348-
.await
349-
.context(get_user_info_error::ExperimentalXfscAasSnafu),
350-
ResolvedBackend::ActiveDirectory {
351-
ldap_server,
352-
tls,
353-
base_distinguished_name,
354-
custom_attribute_mappings,
355-
additional_group_attribute_filters,
356-
} => backend::active_directory::get_user_info(
357-
&req,
358-
ldap_server,
359-
tls,
360-
base_distinguished_name,
361-
custom_attribute_mappings,
362-
additional_group_attribute_filters,
363-
)
364-
.await
365-
.context(get_user_info_error::ActiveDirectorySnafu),
366-
ResolvedBackend::Entra(entra) => entra
367-
.get_user_info(&req)
368-
.await
369-
.context(get_user_info_error::EntraSnafu),
370-
ResolvedBackend::OpenLdap(openldap) => openldap
371-
.get_user_info(&req)
372-
.await
373-
.context(get_user_info_error::OpenLdapSnafu),
319+
let user_info = user_info_cache
320+
.try_get_with_by_ref(&req, async {
321+
match backend.as_ref() {
322+
ResolvedBackend::None => {
323+
let user_id = match &req {
324+
UserInfoRequest::UserInfoRequestById(UserInfoRequestById { id }) => {
325+
Some(id)
326+
}
327+
_ => None,
328+
};
329+
let username = match &req {
330+
UserInfoRequest::UserInfoRequestByName(UserInfoRequestByName {
331+
username,
332+
}) => Some(username),
333+
_ => None,
334+
};
335+
Ok(UserInfo {
336+
id: user_id.cloned(),
337+
username: username.cloned(),
338+
groups: vec![],
339+
custom_attributes: HashMap::new(),
340+
})
374341
}
375-
})
376-
.await?,
377-
))
342+
ResolvedBackend::Keycloak(keycloak) => keycloak
343+
.get_user_info(&req)
344+
.await
345+
.context(get_user_info_error::KeycloakSnafu),
346+
ResolvedBackend::ExperimentalXfscAas(aas) => aas
347+
.get_user_info(&req)
348+
.await
349+
.context(get_user_info_error::ExperimentalXfscAasSnafu),
350+
ResolvedBackend::ActiveDirectory {
351+
ldap_server,
352+
tls,
353+
base_distinguished_name,
354+
custom_attribute_mappings,
355+
additional_group_attribute_filters,
356+
} => backend::active_directory::get_user_info(
357+
&req,
358+
ldap_server,
359+
tls,
360+
base_distinguished_name,
361+
custom_attribute_mappings,
362+
additional_group_attribute_filters,
363+
)
364+
.await
365+
.context(get_user_info_error::ActiveDirectorySnafu),
366+
ResolvedBackend::Entra(entra) => entra
367+
.get_user_info(&req)
368+
.await
369+
.context(get_user_info_error::EntraSnafu),
370+
ResolvedBackend::OpenLdap(openldap) => openldap
371+
.get_user_info(&req)
372+
.await
373+
.context(get_user_info_error::OpenLdapSnafu),
374+
}
375+
})
376+
.await?;
377+
378+
Ok(Json(user_info))
378379
}

0 commit comments

Comments
 (0)