Commit graph

2603 commits

Author SHA1 Message Date
Tomáš Hozza
7021c305e2 osbuild/mkdir: support parents stage option
The stage supports a `parents` property in stage path options, which
allows one to auto-create any parent directories as needed.

Add the property to stage options implementation.

Signed-off-by: Tomáš Hozza <thozza@redhat.com>
2023-01-19 11:15:33 +01:00
Tomáš Hozza
5ff2f997f6 osbuild/mkdir: fix copy&paste error in function comment
Signed-off-by: Tomáš Hozza <thozza@redhat.com>
2023-01-19 11:15:33 +01:00
Tomáš Hozza
30c3ea791e osbuild/mkdir: rename Path struct to MkdirStagePath
The plain `Path` name was a bit unfortunate, since it was specific to
the `mkdir` stage, but it was used outside of the `osbuild` package as
`osbuild.Path` which was making a wrong impression of it being a generic
path structure. This is not true.

Rename the structure to contain the stage name.

Signed-off-by: Tomáš Hozza <thozza@redhat.com>
2023-01-19 11:15:33 +01:00
Achilleas Koutsou
e9d1e8a222 distro: fix pipeline names in Fedora and RHEL 9 image types
Some pipeline lists weren't updated when the image types were rewritten.
Discovered now from the new test and fixed.
2023-01-18 11:50:35 +01:00
Achilleas Koutsou
f102ae6b04 distro: add new test for pipeline names on image types
Every image type defines a list of build pipeline names and a list of
payload pipeline names.  These should match the names of the pipelines
that will exist in the manifest when it's generated.  They should match
exactly, otherwise issues can occur when reading the metadata from an
osbuild result.  The cloud API needs to know the names of the pipelines
and specifically the name of the build pipeline and the payload pipeline
in order to differentiated between build and payload packages in the
metadata.

This new test generates every manifest, parses it into a minimal struct,
and compares the pipeline names with the ones reported statically on the
image type definition.
2023-01-18 11:50:35 +01:00
Achilleas Koutsou
c617b3b98c distro/rhel8: make rhel-8 point to rhel-87
Make RHEL 8 without a minor version point to RHEL 8.7, the current GA
version.
2023-01-18 11:50:35 +01:00
Achilleas Koutsou
e4bb7f4f16 distro: remove packageSetChains from image type in RHEL 8 & 9
Image types no longer report their chains.  Instead, pipelines report
their packages and chains and blueprint packages are added to the
workload.

The distro.ImageType interface retains the PackageSetsChains() methods
for RHEL 7 until that is rewritten as well.

The osbuild-dnf-json-test doesn't use the PackageSetsChains() method
anymore.  Instead, since it only test the centos-8 qcow2 image, it
hardcodes the expected package set names.
2023-01-18 11:50:35 +01:00
Achilleas Koutsou
b1d6792b26 distro/rhel9: make rhel-9 point to rhel-91
Make RHEL 9 without a minor version point to RHEL 9.1, the current GA
version.
2023-01-18 11:50:35 +01:00
Achilleas Koutsou
ca24ff4d47 distro/rhel8: remove old Manifest and PackageSets functions
Rename new implementations in their place.
2023-01-18 11:50:35 +01:00
Achilleas Koutsou
c2984d9832 distro/rhel8: resolve package names for RHEL 8
The python3-toml package is called python3-pytoml in RHEL 8, so the name
must be replaced before depsolving.  The package is defined in
manifest/os.go which does not have access to the distribution name or
version.
This solution is a temporary workaround.  The future solution should
depend on distributions resolving package names based on required
features.
2023-01-18 11:50:35 +01:00
Achilleas Koutsou
3b1a51fd0d distro/rhel8: update edge commit and container to new definitions 2023-01-18 11:50:35 +01:00
Achilleas Koutsou
254623459f distro/rhel8: update edge installer to new definitions
Using the same pipeline functions as Fedora and RHEL 9 and copied the
image function from RHEL 9.  The most notable change is the replacment
of the deprecated bootiso.mono stage with the more granular stages, just
like with the image installer.
2023-01-18 11:50:35 +01:00
Achilleas Koutsou
62dcd99a9a distro/rhel8: update image installer to new definitions
Using the same pipeline functions as Fedora and RHEL 9 and copied the
image function from RHEL 9.  The most notable change is the replacement
of the deprecated bootiso.mono stage with the more granular stages.
2023-01-18 11:50:35 +01:00
Achilleas Koutsou
b888a170a2 distro/rhel8: update edge simplified installer to new definitions 2023-01-18 11:50:35 +01:00
Achilleas Koutsou
e2b1baf47c distro/rhel8: update edge raw image to new definitions
Using the same pipeline code as RHEL 9 and Fedora introduces the
following changes to the image:
- ostree.config: moved and uses the stage mount instead of the old
  stage-specific options.
- lock root password like we do in Fedora and RHEL 9.
- set keymap to us and locale to C.UTF-8 like in Fedora and RHEL 9.
- grub2 contains kernel options and unified set to true.  This stage
  also now uses the ostree mount options to set up the deployment when
  running.
2023-01-18 11:50:35 +01:00
Achilleas Koutsou
8fa3f6cc5c distro/rhel8: update tar image to new definitions 2023-01-18 11:50:35 +01:00
Achilleas Koutsou
97ed09cd69 distro/rhel8: update vmdk images to new definitions 2023-01-18 11:50:35 +01:00
Achilleas Koutsou
d3369d1c76 distro/rhel8: update gce images to new definitions 2023-01-18 11:50:35 +01:00
Achilleas Koutsou
8443464096 distro/rhel8: gce-specific platform override
The gceX86 platform embeds the X86 platform and overrides the
GetPackages() method to exclude the grub2-pc package.

The gce image is built as UEFI only, does not include 'grub2-pc', but we
enable BIOS in the platform config for all the other side-effects: grub
config options and grub2.inst stage.

See the image type documentation for more information:
d12d9674d6/image-types/rhel8/google-gce.md (rhel-8-byosrhui--rhel-9-byos-image-differences-compared-to-googles-image)
2023-01-18 11:50:35 +01:00
Achilleas Koutsou
91e2a62654 distro/rhel8: make gce rhsm config conditional
We don't have distro-based conditions in the pipeline generator
functions anymore.  All config conditions must be defined at the distro
level.
2023-01-18 11:50:35 +01:00
Achilleas Koutsou
9af2b2accf distro/rhel8: update azure images to new definitions
Move image type definitions to the top of the file and convert them to
functions.
Replace the pipeline function with the liveImage image function.
2023-01-18 11:50:35 +01:00
Achilleas Koutsou
e1ebb55d0a distro/rhel8: update ami and ec2 images to new definitions 2023-01-18 11:50:35 +01:00
Achilleas Koutsou
0b263d5478 distro/rhel8: update qcow2 and openstack to new definitions
Copy osCustomizations() and liveImage() functions from RHEL 9.
Delete unused functions.
2023-01-18 11:50:35 +01:00
Achilleas Koutsou
f0b7528ab6 distro/rhel8: add support for imageFunc on image types
Add image, environment, and compression to the imageType struct.

Define two new methods: PackageSetsNew() and ManifestNew()

These get called by the corresponding base methods PackageSets() and
Manifest() when imageType.image is defined.  They will serve to
transition images to the new framework while also supporting the old
until all image types are updated.
2023-01-18 11:50:35 +01:00
Achilleas Koutsou
a0cf527716 distro/rhel8: image type separation: installer and tar 2023-01-18 11:50:35 +01:00
Achilleas Koutsou
b00aaa06ea distro/rhel8: image type separation: gce 2023-01-18 11:50:35 +01:00
Achilleas Koutsou
801affc26a distro/rhel8: image type separation: vmdk 2023-01-18 11:50:35 +01:00
Achilleas Koutsou
fd93f47d3f distro/rhel8: image type separation: qcow2 and openstack
Continuing image type splitting.

Constructor for qcow2 type requires the distribution object to determine
whether to add RHSM to the image config (RHEL only).
2023-01-18 11:50:35 +01:00
Achilleas Koutsou
8fd33b1590 distro/rhel8: image type separation: ami and edge
Start splitting image type definitions into separate files by logical
groups (mostly by footprint and cloud platform) for easier navigation,
like we did for rhel9.

Split AMI and Edge image types; the rest will follow in separate
commits.

Image specific package sets are defined in the file for the image type
grouping instead of the package_sets file.

A notable difference with the way it was done in rhel9 is that every
image type is defined in a function rather than a global where possible
and a function when distro version specific configuration is needed.
This is done for consistency and the change will likely be done in the
other distributions as well.
Also, instead of passing only required values to the image type
constructor (for example, osVersion and a RHEL boolean), we pass the
whole distribution object and each constructor can read whatever
information it needs.
2023-01-18 11:50:35 +01:00
Achilleas Koutsou
0f78b65e4e distro/rhel8: configure and add platforms to image types
Add platform attribute to imageType.
Create platform configurations for each image type, copied from RHEL 9.
Currently this has no effect on the image definition / manifest.
2023-01-18 11:50:35 +01:00
Achilleas Koutsou
abdc24a245 distro/rhel8: move imageType implementation to separate file 2023-01-18 11:50:35 +01:00
Achilleas Koutsou
08b1876951 distro/rhel8: move architecture implementation to separate file 2023-01-18 11:50:35 +01:00
Achilleas Koutsou
47f935f8b7 distro: remove HostDistro contructors
The host distro object was identical to the regular distro objects for a
while now.  The constructors in the registry have been aliases to the
base constructors for a long time.

- Deleted all HostDistro constructors from the distributions.
- Changed the supported distro list to only contain base constructor
  functions.
- The host distro in the distro registry is a copy of the base distro
  that matches the host and does not call a separate constructor.
2023-01-18 11:50:35 +01:00
Achilleas Koutsou
fcc8437b22 distro/rhel9: inline distribution structs
Inline the distribution structs in the common constructor.
Make the same changes that were made to RHEL 8:
- Remove major version argument: it's always 9
- Make the default constructor New() create the default minor version
  and rename it to plain RHEL 9.

The distroregistry now contains both rhel-9 and rhel-90, which point to
the same configuration but with different names.
The default rhel-9 should be updated to be an alias to rhel-91, the
current GA.
2023-01-18 11:50:35 +01:00
Achilleas Koutsou
1a73e08905 distro/rhel8: update distribution implementation
Update the implementation of the distro.Distro interface to match the
one in RHEL 9 and Fedora.  The main change is that the runner is a
runner.Runner and not a string.

The distroMap is replaced by a switch that initialises the distribution
struct strings based on the minor version number.

The default minor version, created with rhel8.New(), creates a copy of
RHEL 8.6 and renames it to "rhel8".
2023-01-18 11:50:35 +01:00
Antonio Murdaca
1672fb1cf6 wire ignition bp customization to simplified-installer and raw image
Signed-off-by: Antonio Murdaca <antoniomurdaca@gmail.com>
2023-01-17 14:02:02 +01:00
Antonio Murdaca
5c7d43c9a0 gate ignition behind el92/c9s
Signed-off-by: Antonio Murdaca <antoniomurdaca@gmail.com>
2023-01-17 14:02:02 +01:00
Antonio Murdaca
feec6ce63e inject blueprint's kargs into edge raw image
Signed-off-by: Antonio Murdaca <antoniomurdaca@gmail.com>
2023-01-17 14:02:02 +01:00
Antonio Murdaca
cca0e773f6 support ignition in edge simplified-installer and raw-image
Signed-off-by: Antonio Murdaca <runcom@linux.com>
Signed-off-by: Antonio Murdaca <antoniomurdaca@gmail.com>
Signed-off-by: Irene Diez <idiez@redhat.com>
Co-authored-by: Irene Diez <idiez@redhat.com>
Signed-off-by: Antonio Murdaca <antoniomurdaca@gmail.com>
2023-01-17 14:02:02 +01:00
Antonio Murdaca
c2b4caaa66 support kargs in edge blueprint
Signed-off-by: Antonio Murdaca <antoniomurdaca@gmail.com>
2023-01-17 14:02:02 +01:00
Gianluca Zuccarelli
25faf5ab60 internal/prometheus: remove compose fail metrics
We have switched how 5xx errors are being recorded
internally and we are now recording all failures
for all endpoints. As a result, a dedicated metric
only for compose failures is no longer required.
2023-01-12 12:55:01 +01:00
Gianluca Zuccarelli
08aa1e99a1 worker/server: log unresponsive job removal
Re-add the logging for when unresponsive heartbeats
are being removed so we can verify that they
are correctly being logged as 5xx errors.
2023-01-10 09:29:33 +01:00
Ondřej Budai
b997142db0 common: merge all *ToPtr methods to one generic ToPtr
After introducing Go 1.18 to a project, it's required by law to convert at
least one method to a generic one.

Everyone hates IntToPtr, StringToPtr, BoolToPtr and Uint64ToPtr, so let's
convert them to the ultimate generic ToPtr one.

Signed-off-by: Ondřej Budai <ondrej@budai.cz>
2023-01-09 14:03:18 +01:00
Ondřej Budai
0359647a82 go.mod: update to Go 1.18
Fedora 35 support was dropped, so we can update to a newer Go.

Stable RHEL 8 and 9 and Fedora 36 ships Go 1.18, so let's switch to it.

"//go:build" directives are now apparently enforced by go fmt, so that's why
there were added.

Also, all the github actions were adjusted to use Go 1.18.

Signed-off-by: Ondřej Budai <ondrej@budai.cz>
2023-01-09 14:03:18 +01:00
Ondřej Budai
4bafe1ead9 remove Fedora 35 support
Fedora 35 is going EOL on Tue 2022-12-13. At the time of writing this commit
message, that's the next day. As we do releases on Wednesdays, the next
release will never find its way to F35 and thus, there's no point in keeping
support for it.

Let's delete everything that relates to Fedora 35. If there's something that
cannot be deleted (e.g. CI containers based on F35), let's upgrade it to F37.

TestCrossArchDepsolve now uses CentOS Stream 8 because RHEL 8.4 cannot read
F37 repository metadata. This is a similar issue to
https://bugzilla.redhat.com/show_bug.cgi?id=2004853 . Basically, newer
repositories can be only read by libmodulemd >= 2.11.

Signed-off-by: Ondřej Budai <ondrej@budai.cz>
2023-01-06 11:34:50 +01:00
Achilleas Koutsou
e217c6069e distro/rhel9: update image type lists in tests 2022-12-16 15:40:09 +01:00
Achilleas Koutsou
d3b0b2218b distro/rhel9: add Azure aarch64 platform and include image types
Co-Authored-By: Christian Kellner <christian@kellner.me>
2022-12-16 15:40:09 +01:00
Achilleas Koutsou
2a0e935fc3 distro/rhel9: add partition table for aarch64 azure-rhui
Copy of the x86_64 partition table with BIOS partition removed.

Co-Authored-By: Christian Kellner <christian@kellner.me>
2022-12-16 15:40:09 +01:00
Achilleas Koutsou
617ec35c57 distro/rhel9: clarify partition table error message
The previous error didn't make it clear where the issue was coming from.
Now it explains that the problem is that a partition table for a given
architecture isn't specified on the image type.

Co-Authored-By: Christian Kellner <christian@kellner.me>
2022-12-16 15:40:09 +01:00
Achilleas Koutsou
ee7429880f distro/rhel9: remove arch-dependent packages from Azure common
These are already added by the platform.

Co-Authored-By: Christian Kellner <christian@kellner.me>
2022-12-16 15:40:09 +01:00