diff --git a/appmgr/src/bin/embassy-init.rs b/appmgr/src/bin/embassy-init.rs index 156bd97f9..aee291c0e 100644 --- a/appmgr/src/bin/embassy-init.rs +++ b/appmgr/src/bin/embassy-init.rs @@ -24,20 +24,9 @@ fn status_fn(_: i32) -> StatusCode { async fn init(cfg_path: Option<&str>) -> Result<(), Error> { let cfg = RpcContextConfig::load(cfg_path).await?; embassy::disk::util::mount("LABEL=EMBASSY", "/embassy-os").await?; - if tokio::fs::metadata("/embassy-os/disk.guid").await.is_ok() { - embassy::disk::main::load( - tokio::fs::read_to_string("/embassy-os/disk.guid") - .await? - .trim(), - cfg.zfs_pool_name(), - cfg.datadir(), - DEFAULT_PASSWORD, - ) - .await?; - log::info!("Loaded Disk"); - } else { + if tokio::fs::metadata("/embassy-os/disk.guid").await.is_err() { #[cfg(feature = "avahi")] - let mdns = MdnsController::init(); + let _mdns = MdnsController::init(); tokio::fs::write( "/etc/nginx/sites-available/default", include_str!("../nginx/setup-wizard.conf"), @@ -76,6 +65,16 @@ async fn init(cfg_path: Option<&str>) -> Result<(), Error> { .with_kind(embassy::ErrorKind::Network)?; } + embassy::disk::main::load( + tokio::fs::read_to_string("/embassy-os/disk.guid") + .await? + .trim(), + cfg.zfs_pool_name(), + cfg.datadir(), + DEFAULT_PASSWORD, + ) + .await?; + log::info!("Loaded Disk"); let secret_store = cfg.secret_store().await?; let log_dir = cfg.datadir().join("main").join("logs"); if tokio::fs::metadata(&log_dir).await.is_err() { diff --git a/appmgr/src/context/setup.rs b/appmgr/src/context/setup.rs index dfb07af1f..b89a67506 100644 --- a/appmgr/src/context/setup.rs +++ b/appmgr/src/context/setup.rs @@ -61,7 +61,7 @@ pub struct SetupContextSeed { pub bind_rpc: SocketAddr, pub shutdown: Sender<()>, pub datadir: PathBuf, - pub zfs_pool_name: String, + pub zfs_pool_name: Arc, } #[derive(Clone)] @@ -71,7 +71,7 @@ impl SetupContext { let cfg = SetupContextConfig::load(path).await?; let (shutdown, _) = tokio::sync::broadcast::channel(1); let datadir = cfg.datadir().into_owned(); - let zfs_pool_name = cfg.zfs_pool_name().to_owned(); + let zfs_pool_name = Arc::new(cfg.zfs_pool_name().to_owned()); Ok(Self(Arc::new(SetupContextSeed { bind_rpc: cfg.bind_rpc.unwrap_or(([127, 0, 0, 1], 5959).into()), shutdown, diff --git a/appmgr/src/setup.rs b/appmgr/src/setup.rs index bc1f594c9..7e92c195a 100644 --- a/appmgr/src/setup.rs +++ b/appmgr/src/setup.rs @@ -84,6 +84,7 @@ pub async fn execute( tokio::fs::write("/embassy-os/disk.guid", &guid) .await .with_ctx(|_| (crate::ErrorKind::Filesystem, "/embassy-os/disk.guid"))?; + ctx.shutdown.send(()).expect("failed to shutdown"); Ok(SetupResult { tor_address: tor_key.public().get_onion_address().to_string(),