feat: return ip info
This commit is contained in:
@ -80,6 +80,7 @@ async fn v1_list_vms(
|
||||
let mut ret = vec![];
|
||||
for mut vm in vms {
|
||||
vm.hydrate_up(db).await?;
|
||||
vm.hydrate_down(db).await?;
|
||||
if let Some(t) = &mut vm.template {
|
||||
t.hydrate_up(db).await?;
|
||||
}
|
||||
@ -105,6 +106,7 @@ async fn v1_get_vm(
|
||||
return ApiData::err("VM doesnt belong to you");
|
||||
}
|
||||
vm.hydrate_up(db).await?;
|
||||
vm.hydrate_down(db).await?;
|
||||
if let Some(t) = &mut vm.template {
|
||||
t.hydrate_up(db).await?;
|
||||
}
|
||||
|
@ -195,7 +195,7 @@ impl Provisioner for LNVpsProvisioner {
|
||||
|
||||
async fn allocate_ips(&self, vm_id: u64) -> Result<Vec<VmIpAssignment>> {
|
||||
let mut vm = self.db.get_vm(vm_id).await?;
|
||||
let ips = self.db.get_vm_ip_assignments(vm.id).await?;
|
||||
let ips = self.db.list_vm_ip_assignments(vm.id).await?;
|
||||
|
||||
if !ips.is_empty() {
|
||||
bail!("IP resources are already assigned");
|
||||
@ -217,7 +217,7 @@ impl Provisioner for LNVpsProvisioner {
|
||||
// TODO: pick round-robin ranges
|
||||
for range in ip_ranges {
|
||||
let range_cidr: IpNetwork = range.cidr.parse()?;
|
||||
let ips = self.db.get_vm_ip_assignments_in_range(range.id).await?;
|
||||
let ips = self.db.list_vm_ip_assignments_in_range(range.id).await?;
|
||||
let ips: HashSet<IpAddr> = ips.iter().map(|i| i.ip.parse().unwrap()).collect();
|
||||
|
||||
// pick an IP at random
|
||||
|
@ -57,7 +57,7 @@ impl Worker {
|
||||
if self.read_only {
|
||||
bail!("Cant spawn VM's in read-only mode");
|
||||
}
|
||||
let mut ips = self.db.get_vm_ip_assignments(vm.id).await?;
|
||||
let mut ips = self.db.list_vm_ip_assignments(vm.id).await?;
|
||||
if ips.is_empty() {
|
||||
ips = self.provisioner.allocate_ips(vm.id).await?;
|
||||
}
|
||||
|
Reference in New Issue
Block a user