From 70a4d9c6384b461e89769202a4d84f67c2f24966 Mon Sep 17 00:00:00 2001 From: Kieran Date: Sat, 29 Mar 2025 10:39:42 +0000 Subject: [PATCH] fix: assign mac before arp entry is saved --- src/provisioner/lnvps.rs | 24 +++++++----------------- 1 file changed, 7 insertions(+), 17 deletions(-) diff --git a/src/provisioner/lnvps.rs b/src/provisioner/lnvps.rs index 30c462d..5cb1456 100644 --- a/src/provisioner/lnvps.rs +++ b/src/provisioner/lnvps.rs @@ -286,22 +286,6 @@ impl LNVpsProvisioner { }) } - pub async fn assign_available_v4_to_vm( - &self, - vm: &Vm, - v4: &AvailableIp, - ) -> Result { - let mut assignment = VmIpAssignment { - vm_id: vm.id, - ip_range_id: v4.range_id, - ip: v4.ip.ip().to_string(), - ..Default::default() - }; - - self.save_ip_assignment(&mut assignment).await?; - Ok(assignment) - } - pub async fn assign_available_v6_to_vm( &self, vm: &Vm, @@ -342,7 +326,12 @@ impl LNVpsProvisioner { let mut assignments = vec![]; match ip.ip4 { Some(v4) => { - let mut assignment = self.assign_available_v4_to_vm(&vm, &v4).await?; + let mut assignment = VmIpAssignment { + vm_id: vm.id, + ip_range_id: v4.range_id, + ip: v4.ip.ip().to_string(), + ..Default::default() + }; //generate mac address from ip assignment let mac = self.get_mac_for_assignment(&host, &vm, &assignment).await?; @@ -350,6 +339,7 @@ impl LNVpsProvisioner { assignment.arp_ref = mac.id; // store ref if we got one self.db.update_vm(&vm).await?; + self.save_ip_assignment(&mut assignment).await?; assignments.push(assignment); } /// TODO: add expected number of IPS per templates