diff options
Diffstat (limited to 'src/converge.rs')
| -rw-r--r-- | src/converge.rs | 29 |
1 files changed, 11 insertions, 18 deletions
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<T> { - pub zone_id: String, - pub remove: T, - pub insert: T, -} - -pub async fn named_asg_changes<C>( +pub async fn propose_transaction<C>( aws_context: &C, target: &Target, asg_name: &str, -) -> Result<Changes<impl IntoIterator<Item = ResourceRecordSet> + Debug>> +) -> Result<Transaction<impl IntoIterator<Item = ResourceRecordSet> + 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<T>( - zone_id: &str, +fn propose_changes<T>( intended: &HashSet<T>, actual: &HashSet<T>, ) -> Changes<impl IntoIterator<Item = T> + 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 } } |
