Skip to content

refactor(sdk): Move Dialoguer AuthHelper to auth-core#1865

Open
gtema wants to merge 2 commits into
mainfrom
sanity-3
Open

refactor(sdk): Move Dialoguer AuthHelper to auth-core#1865
gtema wants to merge 2 commits into
mainfrom
sanity-3

Conversation

@gtema

@gtema gtema commented Jul 16, 2026

Copy link
Copy Markdown
Owner

dialoguer forced every sdk_core consumer (including headless/server
users) to compile a TTY prompt stack. Move Dialoguer impl into
openstack-sdk-auth-core (already a dependency, no cycle), gated
behind a new interactive feature (default-on, forwarded from
sdk_core). sdk_core's auth_helper module re-exports it, so all
downstream import paths stay unchanged.

Also drop tokio-util (zero references in sdk_core) and inventory
(dead there; real usage lives in auth-core/auth-* plugin crates),
and move tokio to dev-dependencies (only used by #[tokio::test]).

Removed OpenStackError::Dialoguer variant: never constructed anywhere
in the workspace.

gtema added 2 commits July 15, 2026 14:36
Rename set_latest_microversion to set_request_microversion_header and
rewrite to use endpoint.api_version() as the microversion value sent in
the OpenStack-API-Version header. Previously the function used
service_endpoint.version() (URL-parsed, always 2.1 for compute),
ignoring the actual microversion the generated struct requires.

Add bounds validation: if the endpoint's required microversion falls
outside the cloud's discovered min/max range, return a new
ApiError::MicroversionIncompatible error instead of sending a doomed
request.  The error carries required version and cloud range for a
clear user-facing message.

Add Copy, Eq, PartialOrd, Ord derives to ApiVersion to enable direct
comparison.  Reuse ApiVersion::from_apiver_str for parsing cloud
min/max version strings instead of a custom parser.

Signed-off-by: Artem Goncharov <artem.goncharov@gmail.com>
dialoguer forced every sdk_core consumer (including headless/server
users) to compile a TTY prompt stack. Move Dialoguer impl into
openstack-sdk-auth-core (already a dependency, no cycle), gated
behind a new `interactive` feature (default-on, forwarded from
sdk_core). sdk_core's auth_helper module re-exports it, so all
downstream import paths stay unchanged.

Also drop tokio-util (zero references in sdk_core) and inventory
(dead there; real usage lives in auth-core/auth-* plugin crates),
and move tokio to dev-dependencies (only used by #[tokio::test]).

Removed OpenStackError::Dialoguer variant: never constructed anywhere
in the workspace.

Signed-off-by: Artem Goncharov <artem.goncharov@gmail.com>
if mh_service_type.is_none() {
return Ok(());
}
let st = mh_service_type.unwrap();
Comment thread sdk/core/src/api/error.rs
(Some(mn), Some(mx)) => format!("{mn}..={mx}"),
(Some(mn), None) => format!("{mn}..*"),
(None, Some(mx)) => format!("*..={mx}"),
(None, None) => format!("*..*"),
Comment on lines +125 to +134
if let Some(min) = cloud_min {
if req_ver < min {
return Err(ApiError::microversion_incompatible(
req_ver.major,
req_ver.minor,
service_endpoint.min_version().clone(),
service_endpoint.max_version().clone(),
));
}
}
Comment on lines +136 to +145
if let Some(max) = cloud_max {
if req_ver > max {
return Err(ApiError::microversion_incompatible(
req_ver.major,
req_ver.minor,
service_endpoint.min_version().clone(),
service_endpoint.max_version().clone(),
));
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants