Refine default orchestration flow and documentation

- Document defaults-only configuration, kernel topology override, and deprecated CLI flags in README
- Mark schema doc as deprecated per ADR-0002
- Warn that --topology/--config are ignored; adjust loader/main/context flow
- Refactor orchestrator run() to auto-select mount/apply, reuse state when already provisioned, and serialize topology via Display
- Add Callgraph/FUNCTION_LIST/ADR docs tracking the new behavior
- Derive Eq for Topology to satisfy updated CLI handling
This commit is contained in:
2025-10-09 16:51:12 +02:00
parent d374176c0b
commit c8b76a2a3d
11 changed files with 5405 additions and 297 deletions

View File

@@ -58,8 +58,8 @@ impl std::fmt::Display for LogLevelArg {
#[derive(Debug, Parser)]
#[command(name = "zosstorage", disable_help_subcommand = true)]
pub struct Cli {
/// Path to YAML configuration (mirrors kernel cmdline key 'zosstorage.config=')
#[arg(short = 'c', long = "config")]
/// DEPRECATED: external YAML configuration is not used at runtime (ADR-0002). Ignored with a warning.
#[arg(short = 'c', long = "config", hide = true)]
pub config: Option<String>,
/// Log level: error, warn, info, debug
@@ -74,7 +74,7 @@ pub struct Cli {
#[arg(short = 's', long = "fstab", default_value_t = false)]
pub fstab: bool,
/// Select topology (overrides config topology)
/// Select topology (CLI has precedence over kernel cmdline)
#[arg(short = 't', long = "topology", value_enum)]
pub topology: Option<crate::types::Topology>,
@@ -82,8 +82,7 @@ pub struct Cli {
#[arg(short = 'f', long = "force")]
pub force: bool,
/// Allow removable devices (e.g., USB sticks) to be considered during discovery
/// Overrides config.device_selection.allow_removable when provided
/// Include removable devices (e.g., USB sticks) during discovery (default: false)
#[arg(long = "allow-removable", default_value_t = false)]
pub allow_removable: bool,
@@ -100,7 +99,7 @@ pub struct Cli {
#[arg(long = "show", default_value_t = false)]
pub show: bool,
/// Write detection/planning JSON report to the given path (overrides config.report.path)
/// Write detection/planning JSON report to the given path
#[arg(long = "report")]
pub report: Option<String>,