feature(krata): implement network reservation list (#366)

This commit is contained in:
Alex Zenla
2024-08-26 15:05:57 -04:00
committed by GitHub
parent 79e27256e6
commit 19f35ef20a
16 changed files with 381 additions and 77 deletions

View File

@ -14,8 +14,8 @@ use std::sync::atomic::{AtomicBool, Ordering};
use crate::config::{DaemonConfig, DaemonPciDeviceRdmReservePolicy};
use crate::devices::DaemonDeviceManager;
use crate::ip::assignment::IpAssignment;
use crate::reconcile::zone::ip_reservation_to_network_status;
use crate::network::assignment::NetworkAssignment;
use crate::reconcile::zone::network_reservation_to_network_status;
use crate::{reconcile::zone::ZoneReconcilerResult, zlt::ZoneLookupTable};
use krata::v1::common::zone_image_spec::Image;
use tokio::fs::{self, File};
@ -29,7 +29,7 @@ pub struct ZoneCreator<'a> {
pub initrd_path: &'a Path,
pub addons_path: &'a Path,
pub packer: &'a OciPackerService,
pub ip_assignment: &'a IpAssignment,
pub network_assignment: &'a NetworkAssignment,
pub zlt: &'a ZoneLookupTable,
pub runtime: &'a Runtime,
pub config: &'a DaemonConfig,
@ -174,7 +174,7 @@ impl ZoneCreator<'_> {
}
}
let reservation = self.ip_assignment.assign(uuid).await?;
let reservation = self.network_assignment.assign(uuid).await?;
let mut initial_resources = spec.initial_resources.unwrap_or_default();
if initial_resources.target_cpus < 1 {
@ -236,7 +236,7 @@ impl ZoneCreator<'_> {
info!("created zone {}", uuid);
zone.status = Some(ZoneStatus {
state: ZoneState::Created.into(),
network_status: Some(ip_reservation_to_network_status(&reservation)),
network_status: Some(network_reservation_to_network_status(&reservation)),
exit_status: None,
error_status: None,
resource_status: Some(ZoneResourceStatus {

View File

@ -7,8 +7,8 @@ use std::{
use self::create::ZoneCreator;
use crate::config::DaemonConfig;
use crate::db::ip::IpReservation;
use crate::ip::assignment::IpAssignment;
use crate::db::network::NetworkReservation;
use crate::network::assignment::NetworkAssignment;
use crate::{
db::zone::ZoneStore,
devices::DaemonDeviceManager,
@ -62,7 +62,7 @@ pub struct ZoneReconciler {
tasks: Arc<RwLock<HashMap<Uuid, ZoneReconcilerEntry>>>,
zone_reconciler_notify: Sender<Uuid>,
zone_reconcile_lock: Arc<RwLock<()>>,
ip_assignment: IpAssignment,
ip_assignment: NetworkAssignment,
config: Arc<DaemonConfig>,
}
@ -79,7 +79,7 @@ impl ZoneReconciler {
kernel_path: PathBuf,
initrd_path: PathBuf,
modules_path: PathBuf,
ip_assignment: IpAssignment,
ip_assignment: NetworkAssignment,
config: Arc<DaemonConfig>,
) -> Result<Self> {
Ok(Self {
@ -195,7 +195,7 @@ impl ZoneReconciler {
if let Some(reservation) = self.ip_assignment.retrieve(uuid).await? {
status.network_status =
Some(ip_reservation_to_network_status(&reservation));
Some(network_reservation_to_network_status(&reservation));
}
stored_zone.status = Some(status);
}
@ -286,7 +286,7 @@ impl ZoneReconciler {
initrd_path: &self.initrd_path,
addons_path: &self.addons_path,
packer: &self.packer,
ip_assignment: &self.ip_assignment,
network_assignment: &self.ip_assignment,
zlt: &self.zlt,
runtime: &self.runtime,
config: &self.config,
@ -369,7 +369,7 @@ impl ZoneReconciler {
}
}
pub fn ip_reservation_to_network_status(ip: &IpReservation) -> ZoneNetworkStatus {
pub fn network_reservation_to_network_status(ip: &NetworkReservation) -> ZoneNetworkStatus {
ZoneNetworkStatus {
zone_ipv4: format!("{}/{}", ip.ipv4, ip.ipv4_prefix),
zone_ipv6: format!("{}/{}", ip.ipv6, ip.ipv6_prefix),