fix deployment / stack toml when swarm attached

This commit is contained in:
mbecker20
2025-12-14 00:06:12 -08:00
parent 057ecbcfef
commit 9be21b54bd
2 changed files with 37 additions and 4 deletions
+15 -4
View File
@@ -63,14 +63,19 @@ impl ResourceSyncTrait for Deployment {
update: Self::PartialConfig,
) -> anyhow::Result<Self::ConfigDiff> {
let resources = all_resources_cache().load();
// need to replace the server id with name
original.swarm_id = resources
.swarms
.get(&original.swarm_id)
.map(|s| s.name.clone())
.unwrap_or_default();
original.server_id = resources
.servers
.get(&original.server_id)
.map(|s| s.name.clone())
.unwrap_or_default();
// need to replace the build id with name
if let DeploymentImage::Build { build_id, version } =
&original.image
{
@@ -96,13 +101,19 @@ impl ResourceSyncTrait for Stack {
update: Self::PartialConfig,
) -> anyhow::Result<Self::ConfigDiff> {
let resources = all_resources_cache().load();
// Need to replace server id with name
original.swarm_id = resources
.swarms
.get(&original.swarm_id)
.map(|s| s.name.clone())
.unwrap_or_default();
original.server_id = resources
.servers
.get(&original.server_id)
.map(|s| s.name.clone())
.unwrap_or_default();
// Replace linked repo with name
original.linked_repo = resources
.repos
.get(&original.linked_repo)
+22
View File
@@ -214,6 +214,15 @@ impl ToToml for Swarm {
impl ToToml for Stack {
fn replace_ids(resource: &mut Resource<Self::Config, Self::Info>) {
let all = all_resources_cache().load();
resource.config.swarm_id.clone_from(
all
.swarms
.get(&resource.config.swarm_id)
.map(|s| &s.name)
.unwrap_or(&String::new()),
);
resource.config.server_id.clone_from(
all
.servers
@@ -221,6 +230,7 @@ impl ToToml for Stack {
.map(|s| &s.name)
.unwrap_or(&String::new()),
);
resource.config.linked_repo.clone_from(
all
.repos
@@ -239,6 +249,7 @@ impl ToToml for Stack {
.map(|(key, value)| {
#[allow(clippy::single_match)]
match key.as_str() {
"swarm_id" => return Ok((String::from("swarm"), value)),
"server_id" => return Ok((String::from("server"), value)),
_ => {}
}
@@ -251,6 +262,15 @@ impl ToToml for Stack {
impl ToToml for Deployment {
fn replace_ids(resource: &mut Resource<Self::Config, Self::Info>) {
let all = all_resources_cache().load();
resource.config.swarm_id.clone_from(
all
.swarms
.get(&resource.config.swarm_id)
.map(|s| &s.name)
.unwrap_or(&String::new()),
);
resource.config.server_id.clone_from(
all
.servers
@@ -258,6 +278,7 @@ impl ToToml for Deployment {
.map(|s| &s.name)
.unwrap_or(&String::new()),
);
if let DeploymentImage::Build { build_id, .. } =
&mut resource.config.image
{
@@ -279,6 +300,7 @@ impl ToToml for Deployment {
.into_iter()
.map(|(key, mut value)| {
match key.as_str() {
"swarm_id" => return Ok((String::from("swarm"), value)),
"server_id" => return Ok((String::from("server"), value)),
"image" => {
if let Some(DeploymentImage::Build { version, .. }) =