-
Notifications
You must be signed in to change notification settings - Fork 148
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Repositories overview #1295
base: introduce-docs
Are you sure you want to change the base?
Repositories overview #1295
Changes from all commits
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change | ||||
---|---|---|---|---|---|---|
@@ -1,6 +1,9 @@ | ||||||
Project structure | ||||||
================= | ||||||
TBD | ||||||
|
||||||
The **Leapp Project** provides the framework for automating in-place upgrades from one major version of Red Hat Enterprise Linux to another. It is organized into a set of modular components, each responsible for specific tasks during the upgrade process. These components are managed across multiple **repos**, logically grouped to facilitate upgrades between different RHEL paths. | ||||||
|
||||||
This documentation explains the structure of the **Leapp repository** and provides guidance on how to determine where to place new entities, such as actors, models, and libraries, within the project. | ||||||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
Suggested change
Well, the name is not the best one, but we have to live with it. Phrase
|
||||||
|
||||||
.. toctree:: | ||||||
:maxdepth: 4 | ||||||
|
Original file line number | Diff line number | Diff line change | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
@@ -0,0 +1,48 @@ | ||||||||||||||
# Repositories Overview | ||||||||||||||
|
||||||||||||||
The **Leapp** project uses a modular repository structure in `repos/system_upgrade` to support multiple upgrade paths | ||||||||||||||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
Suggested change
Well, I would not speak here about how the leapp framework works. The leapp project is reference actually to the leapp git repository and so to the framework or tooling. In this case, we could speak more e.g. about the upgrade project unless we add in future more stuff unrelated to the upgrade. So far, there is no such expectation so saying |
||||||||||||||
and shared functionality across these paths. | ||||||||||||||
Each repository contains actors, models, workflows, | ||||||||||||||
and supporting code for a specific upgrade path or common functionality. | ||||||||||||||
|
||||||||||||||
## High-Level Structure | ||||||||||||||
``` | ||||||||||||||
repos/ | ||||||||||||||
├── system_upgrade/ | ||||||||||||||
│ ├── common/ | ||||||||||||||
│ ├── el7toel8/ | ||||||||||||||
│ ├── el8toel9/ | ||||||||||||||
│ └── el9toel10 | ||||||||||||||
│ └── ... | ||||||||||||||
``` | ||||||||||||||
## Main Repositories | ||||||||||||||
|
||||||||||||||
- **`repos/system_upgrade/common/`**: Contains shared code that applies to all in-place upgrades, | ||||||||||||||
regardless of the specific source and target versions. | ||||||||||||||
- **`repos/system_upgrade/elXtoelY/`**: Contains code specific to concrete upgrade path. | ||||||||||||||
Comment on lines
+20
to
+22
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. the upgrade path is usually understood as X.Y -> X1.Y1, where elXtoelY coveres all upgrade paths from X to Y. I would consider it ok, but some people could be confused by different wording / meaining in different parts of the documentation (and official RH docs). So instead of speaking about upgrade path, I would rather say something like:
Suggested change
Note that we do not want to use esplicitely RHEL in upstream documentation, as we would like to cover in future also CentoStream, and other forks using this project handles additional distributions. So going this more generic way seems to me better. |
||||||||||||||
|
||||||||||||||
## How to Determine Where to Place a New Entity? | ||||||||||||||
|
||||||||||||||
When developing a new actor, model, or library, use the following guidelines to determine where to place it: | ||||||||||||||
|
||||||||||||||
- **Determine the Upgrade Path**: | ||||||||||||||
- Is the functionality specific to a certain upgrade path? | ||||||||||||||
- If your entity is related to upgrading specific paths, place it in repos/system_upgrade/elXtoelY/. | ||||||||||||||
|
||||||||||||||
- **Is It Generic or Reusable Across Upgrade Paths?**: | ||||||||||||||
- If the entity is not specific to any one upgrade path and can be reused across multiple upgrades | ||||||||||||||
(e.g., system checks, disk space validation, network settings), place it in the repos/system_upgrade/common/ repository. | ||||||||||||||
|
||||||||||||||
- **Classify by Type**: | ||||||||||||||
- Actor: If you’re creating an actor, | ||||||||||||||
place it in the actors/ directory of the appropriate repository (version-specific or common). | ||||||||||||||
- Model: If it’s a data structure shared between actors, place it in the models/ directory of the relevant repository. | ||||||||||||||
- Library: Utility functions that support actors go in the libraries/ directory. | ||||||||||||||
Comment on lines
+36
to
+40
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Not sure whether to keep this part. This is something what is generic and seems to me like something that should be covered by the leapp documentation. It's not possible to put an actor e.g. into models directory, etc. Models are always shared between actors. However, when speaking about libraries, it's a question whether it should be an actor's private library or shared library inside a specific leapp repository. But not sure whether to cover this one specific case in this particular section. |
||||||||||||||
|
||||||||||||||
- **Use Existing Tags When Appropriate**: | ||||||||||||||
- When creating new actors, consider using existing tags (such as PreUpgrade, PostUpgrade, etc.) | ||||||||||||||
to categorize when the actor should be executed during the upgrade. | ||||||||||||||
Comment on lines
+42
to
+44
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. I would drop this. this is something what i would keep on other tutorials - e.g. how to create actor. also, there are no such tags. I would focus here just on stuff related to |
||||||||||||||
|
||||||||||||||
Using changes in the Leapp repositories to perform an in-place upgrade involves modifying or adding new actors, models, | ||||||||||||||
and workflows, building the modified repository, and using the Leapp tool to execute the upgrade. After integrating your changes, the upgrade process runs seamlessly with the customizations you've added, | ||||||||||||||
ensuring the system is upgraded according to your specifications. | ||||||||||||||
Comment on lines
+45
to
+48
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Thinking about this, it seems it's an information that should be presented in best-practices or something like that. This part of docs should cover the structure of this project, so it seems to me as out of the contect or scope of this part. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Well, I would not speak about the leapp project as again that's a different repository. Leapp can be used also for different purposes and as it is, it does not know anywhine about upgrades at all. That's one of reasons why these two projects / repositories are separated. This (upgrade) project is just using the leapp framework and tooling to achieve the goal.