mirror of
https://github.com/Start9Labs/start-os.git
synced 2026-03-30 20:14:49 +00:00
finish dependency autoconfig (#2596)
This commit is contained in:
@@ -3,6 +3,7 @@ use std::time::Duration;
|
|||||||
|
|
||||||
use clap::Parser;
|
use clap::Parser;
|
||||||
use models::PackageId;
|
use models::PackageId;
|
||||||
|
use patch_db::json_patch::merge;
|
||||||
use rpc_toolkit::{command, from_fn_async, Empty, HandlerExt, ParentHandler};
|
use rpc_toolkit::{command, from_fn_async, Empty, HandlerExt, ParentHandler};
|
||||||
use serde::{Deserialize, Serialize};
|
use serde::{Deserialize, Serialize};
|
||||||
use tracing::instrument;
|
use tracing::instrument;
|
||||||
@@ -102,78 +103,24 @@ pub async fn configure_logic(
|
|||||||
ctx: RpcContext,
|
ctx: RpcContext,
|
||||||
(dependent_id, dependency_id): (PackageId, PackageId),
|
(dependent_id, dependency_id): (PackageId, PackageId),
|
||||||
) -> Result<ConfigDryRes, Error> {
|
) -> Result<ConfigDryRes, Error> {
|
||||||
// let db = ctx.db.peek().await;
|
let dependency_guard = ctx.services.get(&dependency_id).await;
|
||||||
// let pkg = db
|
let dependency = dependency_guard.as_ref().or_not_found(&dependency_id)?;
|
||||||
// .as_package_data()
|
let dependent_guard = ctx.services.get(&dependent_id).await;
|
||||||
// .as_idx(&pkg_id)
|
let dependent = dependent_guard.as_ref().or_not_found(&dependent_id)?;
|
||||||
// .or_not_found(&pkg_id)?
|
let config_res = dependency.get_config().await?;
|
||||||
// .as_installed()
|
let diff = Value::Object(
|
||||||
// .or_not_found(&pkg_id)?;
|
dependent
|
||||||
// let pkg_version = pkg.as_manifest().as_version().de()?;
|
.dependency_config(dependency_id, config_res.config.clone())
|
||||||
// let pkg_volumes = pkg.as_manifest().as_volumes().de()?;
|
.await?
|
||||||
// let dependency = db
|
.unwrap_or_default(),
|
||||||
// .as_package_data()
|
);
|
||||||
// .as_idx(&dependency_id)
|
let mut new_config = Value::Object(config_res.config.clone().unwrap_or_default());
|
||||||
// .or_not_found(&dependency_id)?
|
merge(&mut new_config, &diff);
|
||||||
// .as_installed()
|
Ok(ConfigDryRes {
|
||||||
// .or_not_found(&dependency_id)?;
|
old_config: config_res.config.unwrap_or_default(),
|
||||||
// let dependency_config_action = dependency
|
new_config: new_config.as_object().cloned().unwrap_or_default(),
|
||||||
// .as_manifest()
|
spec: config_res.spec,
|
||||||
// .as_config()
|
})
|
||||||
// .de()?
|
|
||||||
// .ok_or_else(|| not_found!("Manifest Config"))?;
|
|
||||||
// let dependency_version = dependency.as_manifest().as_version().de()?;
|
|
||||||
// let dependency_volumes = dependency.as_manifest().as_volumes().de()?;
|
|
||||||
// let dependency = pkg
|
|
||||||
// .as_manifest()
|
|
||||||
// .as_dependencies()
|
|
||||||
// .as_idx(&dependency_id)
|
|
||||||
// .or_not_found(&dependency_id)?;
|
|
||||||
|
|
||||||
// let ConfigRes {
|
|
||||||
// config: maybe_config,
|
|
||||||
// spec,
|
|
||||||
// } = dependency_config_action
|
|
||||||
// .get(
|
|
||||||
// &ctx,
|
|
||||||
// &dependency_id,
|
|
||||||
// &dependency_version,
|
|
||||||
// &dependency_volumes,
|
|
||||||
// )
|
|
||||||
// .await?;
|
|
||||||
|
|
||||||
// let old_config = if let Some(config) = maybe_config {
|
|
||||||
// config
|
|
||||||
// } else {
|
|
||||||
// spec.gen(
|
|
||||||
// &mut rand::rngs::StdRng::from_entropy(),
|
|
||||||
// &Some(Duration::new(10, 0)),
|
|
||||||
// )?
|
|
||||||
// };
|
|
||||||
|
|
||||||
// let new_config = dependency
|
|
||||||
// .as_config()
|
|
||||||
// .de()?
|
|
||||||
// .ok_or_else(|| not_found!("Config"))?
|
|
||||||
// .auto_configure
|
|
||||||
// .sandboxed(
|
|
||||||
// &ctx,
|
|
||||||
// &pkg_id,
|
|
||||||
// &pkg_version,
|
|
||||||
// &pkg_volumes,
|
|
||||||
// Some(&old_config),
|
|
||||||
// None,
|
|
||||||
// ProcedureName::AutoConfig(dependency_id.clone()),
|
|
||||||
// )
|
|
||||||
// .await?
|
|
||||||
// .map_err(|e| Error::new(eyre!("{}", e.1), crate::ErrorKind::AutoConfigure))?;
|
|
||||||
|
|
||||||
// Ok(ConfigDryRes {
|
|
||||||
// old_config,
|
|
||||||
// new_config,
|
|
||||||
// spec,
|
|
||||||
// })
|
|
||||||
todo!()
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#[instrument(skip_all)]
|
#[instrument(skip_all)]
|
||||||
|
|||||||
Reference in New Issue
Block a user