On Wed, Jun 25, 2025 at 09:59:08AM +0200, Filip Schauer wrote: > On 24/06/2025 14:51, Wolfgang Bumiller wrote: > > > + #[export] > > > + pub fn parse_and_extract_image( > > > + oci_tar_path: &str, > > > + rootfs_path: &str, > > > + ) -> Result<Option<Config>, Error> { > > > + match proxmox_oci::parse_and_extract_image(oci_tar_path, > > > rootfs_path) { > > > + Ok(config) => Ok(Some(config.unwrap_or_default())), > > > + Err(err) => match err { > > > + > > > ProxmoxOciError::ParseError(ParseError::NotAnOciImage(_)) => Ok(None), > > ^ Why are we doing this? > > In the Perl code of the create_vm API method at PVE::API2::LXC, if a > .tar file is used as the container template, > PVE::RS::OCI::parse_and_extract_image is first attempted. > It returns undef, when the .tar file is not an OCI image. Thus we deduce > that the file is an LXC template. If some other kind of error occurrs, > (e.g. I/O error) then the Perl code should die. > > The point is, there needs to be a way to differentiate between the file > actually being an LXC template, and some general failure.
Given how the errors in the oci-spec work I think it would make more sense to do this detection separately by simply looking for an `oci-layout` file in the archive (or looking for all of `oci-layout`, `blobs`, `index.json` at only the top level). An an error in the OCI data should not cause us to try to extract this as a regular container either. In the long run, this needs to be a separate content type anyway, since don't want to just extract tar files like this. Rather, we want to later also add the ability to use the base image via overlayfs. _______________________________________________ pve-devel mailing list pve-devel@lists.proxmox.com https://lists.proxmox.com/cgi-bin/mailman/listinfo/pve-devel