chore: move kratart::image to krataoci and cleanup dependencies

This commit is contained in:
Alex Zenla
2024-03-25 02:37:02 +00:00
parent 655b8029cb
commit 001409378e
19 changed files with 86 additions and 56 deletions

View File

@ -7,12 +7,10 @@ resolver = "2"
[dependencies]
anyhow = { workspace = true }
libc = { workspace = true }
log = { workspace = true }
once_cell = { workspace = true }
prost = { workspace = true }
prost-reflect = { workspace = true }
serde = { workspace = true }
tokio = { workspace = true }
tonic = { workspace = true }
url = { workspace = true }

View File

@ -15,15 +15,12 @@ env_logger = { workspace = true }
krata = { path = "../krata" }
log = { workspace = true }
prost-reflect = { workspace = true, features = ["serde"] }
serde = { workspace = true }
serde_json = { workspace = true }
serde_yaml = { workspace = true }
signal-hook = { workspace = true }
tokio = { workspace = true }
tokio-stream = { workspace = true }
tonic = { workspace = true }
tower = { workspace = true }
url = { workspace = true }
[lib]
name = "kratactl"

View File

@ -16,8 +16,6 @@ kratart = { path = "../kratart" }
log = { workspace = true }
prost = { workspace = true }
redb = { workspace = true }
serde = { workspace = true }
serde_yaml = { workspace = true }
signal-hook = { workspace = true }
tokio = { workspace = true }
tokio-stream = { workspace = true }

View File

@ -20,7 +20,6 @@ serde = { workspace = true }
serde_json = { workspace = true }
sys-mount = { workspace = true }
tokio = { workspace = true }
tokio-stream = { workspace = true }
walkdir = { workspace = true }
xenstore = { path = "../xen/xenstore" }

View File

@ -15,7 +15,6 @@ etherparse = { workspace = true }
futures = { workspace = true }
libc = { workspace = true }
log = { workspace = true }
netlink-packet-route = { workspace = true }
rtnetlink = { workspace = true }
smoltcp = { workspace = true }
tokio = { workspace = true }

View File

@ -0,0 +1,35 @@
[package]
name = "krataoci"
version.workspace = true
edition = "2021"
resolver = "2"
[dependencies]
anyhow = { workspace = true }
async-compression = { workspace = true, features = ["tokio", "gzip", "zstd"] }
async-trait = { workspace = true }
backhand = { workspace = true }
bytes = { workspace = true }
log = { workspace = true }
oci-spec = { workspace = true }
path-clean = { workspace = true }
reqwest = { workspace = true }
serde = { workspace = true }
serde_json = { workspace = true }
sha256 = { workspace = true }
tokio = { workspace = true }
tokio-stream = { workspace = true }
tokio-tar = { workspace = true }
url = { workspace = true }
uuid = { workspace = true }
walkdir = { workspace = true }
[lib]
name = "krataoci"
[dev-dependencies]
env_logger = { workspace = true }
[[example]]
name = "krataoci-squashify"
path = "examples/squashify.rs"

View File

@ -0,0 +1,29 @@
use std::{env::args, path::PathBuf};
use anyhow::Result;
use env_logger::Env;
use krataoci::{cache::ImageCache, compiler::ImageCompiler, name::ImageName};
use tokio::fs;
#[tokio::main]
async fn main() -> Result<()> {
env_logger::Builder::from_env(Env::default().default_filter_or("info")).init();
let image = ImageName::parse(&args().nth(1).unwrap())?;
let seed = args().nth(2).map(PathBuf::from);
let cache_dir = PathBuf::from("krata-cache");
if !cache_dir.exists() {
fs::create_dir(&cache_dir).await?;
}
let cache = ImageCache::new(&cache_dir)?;
let compiler = ImageCompiler::new(&cache, seed)?;
let info = compiler.compile(&image).await?;
println!(
"generated squashfs of {} to {}",
image,
info.image_squashfs.to_string_lossy()
);
Ok(())
}

View File

@ -1,6 +1,7 @@
use crate::image::cache::ImageCache;
use crate::image::name::ImageName;
use crate::image::registry::OciRegistryPlatform;
use crate::cache::ImageCache;
use crate::fetch::{OciImageDownloader, OciImageLayer};
use crate::name::ImageName;
use crate::registry::OciRegistryPlatform;
use anyhow::{anyhow, Result};
use backhand::compression::Compressor;
use backhand::{FilesystemCompressor, FilesystemWriter, NodeHeader};
@ -18,8 +19,6 @@ use tokio_tar::{Archive, Entry};
use uuid::Uuid;
use walkdir::WalkDir;
use crate::image::fetch::{OciImageDownloader, OciImageLayer};
pub const IMAGE_SQUASHFS_VERSION: u64 = 2;
pub struct ImageInfo {

View File

@ -1,3 +1,8 @@
use super::{
name::ImageName,
registry::{OciRegistryClient, OciRegistryPlatform},
};
use std::{
path::{Path, PathBuf},
pin::Pin,
@ -17,11 +22,6 @@ use tokio::{
use tokio_stream::StreamExt;
use tokio_tar::Archive;
use super::{
name::ImageName,
registry::{OciRegistryClient, OciRegistryPlatform},
};
pub struct OciImageDownloader {
seed: Option<PathBuf>,
storage: PathBuf,

View File

@ -7,29 +7,15 @@ resolver = "2"
[dependencies]
advmac = { path = "../vendor/advmac" }
anyhow = { workspace = true }
async-compression = { workspace = true, features = ["tokio", "gzip", "zstd"] }
async-stream = { workspace = true }
async-trait = { workspace = true }
backhand = { workspace = true }
bytes = { workspace = true }
ipnetwork = { workspace = true }
krata = { path = "../krata" }
krataoci = { path = "../krataoci" }
log = { workspace = true }
loopdev = { path = "../vendor/loopdev" }
nix = { workspace = true, features = ["process"] }
oci-spec = { workspace = true }
path-clean = { workspace = true }
reqwest = { workspace = true }
serde = { workspace = true }
serde_json = { workspace = true }
sha256 = { workspace = true }
tokio = { workspace = true }
tokio-stream = { workspace = true }
tokio-tar = { workspace = true }
tonic = { workspace = true, features = ["tls"] }
url = { workspace = true }
uuid = { workspace = true }
walkdir = { workspace = true }
xenclient = { path = "../xen/xenclient" }
xenstore = { path = "../xen/xenstore" }

View File

@ -2,7 +2,7 @@ use std::{env::args, path::PathBuf};
use anyhow::Result;
use env_logger::Env;
use kratart::image::{cache::ImageCache, compiler::ImageCompiler, name::ImageName};
use krataoci::{cache::ImageCache, compiler::ImageCompiler, name::ImageName};
use tokio::fs;
#[tokio::main]

View File

@ -1,7 +1,7 @@
use crate::image::compiler::ImageInfo;
use anyhow::Result;
use backhand::{FilesystemWriter, NodeHeader};
use krata::launchcfg::LaunchInfo;
use krataoci::compiler::ImageInfo;
use log::trace;
use std::fs;
use std::fs::File;

View File

@ -13,12 +13,12 @@ use xenclient::{DomainConfig, DomainDisk, DomainNetworkInterface};
use xenstore::XsdInterface;
use crate::cfgblk::ConfigBlock;
use crate::image::{
use crate::RuntimeContext;
use krataoci::{
cache::ImageCache,
compiler::{ImageCompiler, ImageInfo},
name::ImageName,
};
use crate::RuntimeContext;
use super::{GuestInfo, GuestState};

View File

@ -20,14 +20,13 @@ use xenstore::{XsdClient, XsdInterface, XsdWatchHandle};
use self::{
autoloop::AutoLoop,
console::XenConsole,
image::cache::ImageCache,
launch::{GuestLaunchRequest, GuestLauncher},
};
use krataoci::cache::ImageCache;
pub mod autoloop;
pub mod cfgblk;
pub mod console;
pub mod image;
pub mod launch;
pub struct ContainerLoopInfo {