fix: assign mac before arp entry is saved
All checks were successful
continuous-integration/drone/push Build is passing

This commit is contained in:
2025-03-29 10:39:42 +00:00
parent d316ccacd7
commit 70a4d9c638

View File

@ -286,22 +286,6 @@ impl LNVpsProvisioner {
})
}
pub async fn assign_available_v4_to_vm(
&self,
vm: &Vm,
v4: &AvailableIp,
) -> Result<VmIpAssignment> {
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