From c9aded75272a42bb5d2b5b00b69d15c3e3dc000f Mon Sep 17 00:00:00 2001 From: Owen Jacobson Date: Tue, 30 Jul 2024 11:19:09 -0400 Subject: Unify the apply arguments into a `Transaction` record type. --- src/converge.rs | 29 +++++++++++------------------ 1 file changed, 11 insertions(+), 18 deletions(-) (limited to 'src/converge.rs') diff --git a/src/converge.rs b/src/converge.rs index 29c4878..d9a4188 100644 --- a/src/converge.rs +++ b/src/converge.rs @@ -4,22 +4,16 @@ use std::fmt::Debug; use anyhow::Result; use futures::try_join; +use crate::apply::{Changes, Transaction}; use crate::autoscaling::{propose_asg_recordsets, AutoScaling}; use crate::ec2::Ec2; use crate::route53::{zone_actual_recordsets, zone_for_name, ResourceRecordSet, Route53, Target}; -#[derive(Debug)] -pub struct Changes { - pub zone_id: String, - pub remove: T, - pub insert: T, -} - -pub async fn named_asg_changes( +pub async fn propose_transaction( aws_context: &C, target: &Target, asg_name: &str, -) -> Result + Debug>> +) -> Result + Debug>> where C: AutoScaling + Ec2 + Route53, { @@ -30,12 +24,15 @@ where zone_actual_recordsets(aws_context, &zone.id, target.name()), )?; - let changes = changes_for_records(&zone.id, &proposed, &actual); - Ok(changes) + let changes = propose_changes(&proposed, &actual); + let transaction = Transaction { + zone_id: zone.id().into(), + changes, + }; + Ok(transaction) } -fn changes_for_records( - zone_id: &str, +fn propose_changes( intended: &HashSet, actual: &HashSet, ) -> Changes + Debug> @@ -45,9 +42,5 @@ where let remove: Vec<_> = actual.difference(intended).cloned().collect(); let insert: Vec<_> = intended.difference(actual).cloned().collect(); - Changes { - zone_id: zone_id.into(), - remove, - insert, - } + Changes { remove, insert } } -- cgit v1.2.3