Story #8924


As a user, I can manage OSTree repositories

Added by almost 3 years ago. Updated over 2 years ago.

Start date:
Due date:
% Done:


Estimated time:
(Total: 0:00 h)
Platform Release:
Target Release - OSTree:
Sprint Candidate:


Fedora IoT Overview

Fedora IoT and Fedora Siliverblue distributions use OSTree repositories to receive updates. Unlike traditional distributions that rely on package managers such yum and dnf to install updates, Fedora IoT uses OSTree to pull entire disk images from a repository. Each commit in an OSTree repository represents a full disk image for a system. During an update, a machine running Fedora IoT pulls down the latest commit and tries to boot into it. If it can't boot successfully, it will fall back to booting to the previous commit. The commit is made of many small files that the client downloads. Repositories can also provide static deltas for two commits. These static deltas allow a client to download a single file that represents a change that can be applied to the current commit on the client in order to produce the new commit. The size of the static delta depends on how much change occurred between the two commits.

Anatomy of an OSTree repository

OSTree repositories consist of refs and commits. Each commit can have a parent commit. This relationship between commits creates a history that clients can follow if they need to revert to a previous state. Each ref is like a branch in a git repository. Each ref has its own set of commits that represent its history. The commits can be shared between refs.

Creating OSTree content

osbuild-composer is a service for building customized operating system images. Instructions for creating a commit are here[0]. The output of osbuild-composer can be an archive that contains OSTree commits or a VM disk image with the commits embedded. Disk images can be used to boot a machine initially. Future updates for that machine are best delivered using archives of commits. The archives are expanded and then made available to the system using a web server.

Pulp's role in managing OSTree repositories

Pulp needs to allow users to upload OSTree commit archives into repositories. Pulp needs to serve the uncompressed archives to clients. Each time an archive with commits is uploaded, a new repository version should be created. OSTree repositories need to keep track of refs and commits as separate content types.

Users need to be able to sync an OSTree repository from one Pulp instance to another Pulp instance.

Users need to be able to delete OSTree repository version.

Users need to be able to copy refs and individual commits from one repository to another repository.


Sub-issues 7 (0 open7 closed)

Story #8918: As a user, I can create a new repository by uploading an archive with OSTree commitsMODIFIEDlmjachky

Story #8919: As a user, I can upload a Fedora IoT update image with OSTree commits to an existing repositoryMODIFIEDlmjachky

Story #8920: As a Pulp REST API user, I can see what refs are available in OSTree repository versionMODIFIEDlmjachky

Story #8921: As a user, I can sync an OSTree repository with all of its refs (branches)MODIFIEDlmjachky

Story #8922: As a Pulp REST API user, I can delete an OSTree repository versionMODIFIEDlmjachky

Story #8929: As a user, I can create a repository version from refs and commits in another repository versionMODIFIEDlmjachky

Story #9465: As a user, I want to have CLI for managing OSTree repositoriesCLOSED - DUPLICATElmjachky


Also available in: Atom PDF