Migration 9 alters the result column in the jobs table is relied on for
compose statuses. Because it has to be kept consistent across
migrations, add a test to verify this.
As a side effect, the test itself handles the migration now, so remove
that part from the tests GHA.
Postgres doesn't accept `\u0000` in the jsonb datatype. Switch to the
json datatype which is larger and slower, but accepts escaped null
bytes.
As we don't actually query or index the result jsonb directly, the
impact of this should be minimal.
See: https://www.postgresql.org/docs/current/datatype-json.html
The latest version of osbuild/blueprint changed some BP properties
to be 'omitempty', thus the expected API responses need to be adjusted
to account for this change.
Signed-off-by: Tomáš Hozza <thozza@redhat.com>
Delete the `internal/upload/koji` package and replace it with
`pkg/upload/koji` package provided by `osbuild/images`.
Signed-off-by: Tomáš Hozza <thozza@redhat.com>
Use the version that contains the updated Koji upload code.
Also bump the version of `osbuild/blueprint` due to the new `uri` field
in file customizations.
Signed-off-by: Tomáš Hozza <thozza@redhat.com>
The most common one is going to be trying to delete a compose before it
is finished, and that is certainly not worthy of a 500 server error
since it is a temporary state.
Delete the osbuild-koji tools, which is not used by any code or test
case. This also allows to delete the koji.NewFromPlain() function. This
is to minimize the set of exported functions by the koji package, before
moving it to osbuild/images repository.
Signed-off-by: Tomáš Hozza <thozza@redhat.com>
Modify the Koji image extra metadata to not depend on the upload target
data structure for the OSBuild Artifact. This is the last dependency on
the internal osbuild-composer package, allowing the move of the Koji
upload code to the osbuild/images repository.
Signed-off-by: Tomáš Hozza <thozza@redhat.com>
Modify the Koji image extra metadata to not depend on the upload target
data structures for upload results. The target results are supposed to
be specific to the uploader implementation, which will eventually
change. Moreover, the definition is internal to osbuild-composer, so
this would create a problem once the Koji upload implementation is moved
to osbuild/images.
The Koji upload implementation does not really care about the exact
structure of the upload results. It is just a list of JSON objects.
Signed-off-by: Tomáš Hozza <thozza@redhat.com>
The use of rpmmd.RPM is exclusive to the Koji upload implementation.
Consolidate the metadata structure for RPMs into the koji package
codebase, together with any required functions for converting osbuild
stage metadata. The respective code in osbuild/images will be eventually
removed.
Signed-off-by: Tomáš Hozza <thozza@redhat.com>
Increase readability by logically splitting the build metadata
structures from the actual upload API implementation.
Signed-off-by: Tomáš Hozza <thozza@redhat.com>
The upload/koji package functions were creating a logger and then were
using it. This is not ideal for a library implementation.
Signed-off-by: Tomáš Hozza <thozza@redhat.com>
Don't create a new transport in NewFromPlain() using
CreateRetryableTransport(), because the only place
in which NewFromPlain() is called passes the return value of
CreateRetryableTransport() when calling it.
Signed-off-by: Tomáš Hozza <thozza@redhat.com>
tag v0.149.0
Tagger: imagebuilder-bot <imagebuilder-bots+imagebuilder-bot@redhat.com>
Changes with 0.149.0
----------------
* Update dependencies 2025-05-25 (osbuild/images#1560)
* Author: SchutzBot, Reviewers: Simon de Vlieger, Tomáš Hozza
* Update osbuild dependency commit ID to latest (osbuild/images#1522)
* Author: SchutzBot, Reviewers: Simon de Vlieger, Tomáš Hozza
* Update snapshots to 20250515 (osbuild/images#1524)
* Author: SchutzBot, Reviewers: Simon de Vlieger, Tomáš Hozza
* `vagrant-libvirt` implementation (HMS-6116) (osbuild/images#1548)
* Author: Simon de Vlieger, Reviewers: Achilleas Koutsou, Tomáš Hozza
* fedora: tweaks after all imageTypes are YAML (osbuild/images#1518)
* Author: Michael Vogt, Reviewers: Simon de Vlieger, Tomáš Hozza
* gha: do not break gobump output (osbuild/images#1561)
* Author: Lukáš Zapletal, Reviewers: Simon de Vlieger, Tomáš Hozza
* repositories: AlmaLinux 10 (osbuild/images#1567)
* Author: Simon de Vlieger, Reviewers: Achilleas Koutsou, Lukáš Zapletal, Neal Gompa (ニール・ゴンパ)
* vagrant: image config for default vagrant user (HMS-6116) (osbuild/images#1565)
* Author: Simon de Vlieger, Reviewers: Achilleas Koutsou, Michael Vogt
— Somewhere on the Internet, 2025-05-27
---
tag v0.150.0
Tagger: imagebuilder-bot <imagebuilder-bots+imagebuilder-bot@redhat.com>
Changes with 0.150.0
----------------
* Replace hardcoded kickstart %post scripts with new stage options and bootc switch with custom kickstart content (HMS-6051) (osbuild/images#1527)
* Author: Achilleas Koutsou, Reviewers: Simon de Vlieger, Tomáš Hozza
* test: install yamllint for tests (osbuild/images#1572)
* Author: Achilleas Koutsou, Reviewers: Lukáš Zapletal, Simon de Vlieger, Tomáš Hozza
— Somewhere on the Internet, 2025-06-02
---
tag v0.151.0
Tagger: imagebuilder-bot <imagebuilder-bots+imagebuilder-bot@redhat.com>
Changes with 0.151.0
----------------
* Introduce new Azure CVM image type (HMS-5636) (osbuild/images#1318)
* Author: Achilleas Koutsou, Reviewers: Nobody
* Many: support using string with unit for byte-sized partitioning fields in YAML distro definitions (osbuild/images#1579)
* Author: Tomáš Hozza, Reviewers: Achilleas Koutsou, Brian C. Lane
* Update osbuild dependency commit ID to latest (osbuild/images#1587)
* Author: SchutzBot, Reviewers: Achilleas Koutsou, Tomáš Hozza
* Update snapshots to 20250601 (osbuild/images#1573)
* Author: SchutzBot, Reviewers: Achilleas Koutsou, Lukáš Zapletal
* bootc: Make installed rootfs configurable (osbuild/images#1555)
* Author: Mbarak Bujra, Reviewers: Michael Vogt, Tomáš Hozza
* distro: create new ImageConfig.DNFConfig (osbuild/images#1583)
* Author: Michael Vogt, Reviewers: Simon de Vlieger, Tomáš Hozza
* distro: make "fedora" a "generic" distro (osbuild/images#1563)
* Author: Michael Vogt, Reviewers: Nobody
* image: If using a separate build container, copy bootc customization to it (osbuild/images#1571)
* Author: Alexander Larsson, Reviewers: Achilleas Koutsou, Tomáš Hozza
* manifest/ostree: explicitly include shadow-utils (osbuild/images#1585)
* Author: Simon de Vlieger, Reviewers: Achilleas Koutsou, Michael Vogt
* osbuild/tar: explicit compression (HMS-8573, HMS-6116) (osbuild/images#1581)
* Author: Simon de Vlieger, Reviewers: Achilleas Koutsou, Tomáš Hozza
* tests: bump fedora versions to 41 (osbuild/images#1438)
* Author: Lukáš Zapletal, Reviewers: Brian C. Lane, Michael Vogt
— Somewhere on the Internet, 2025-06-09
---
Two new tests are added, one with valid customizations and another with
invalid customizations.
Invalid customizations will return one of two error types, depending on
where exactly the failures was generated.
When the openapi schema fails to validate a request, it will return
IMAGE-BUILDLER-30.
When the error occurs while converting the openapi customizations to the
blueprint types, it will have the IMAGE-BUILDER-35 type instead.
After converting a Disk customization from the API type to the Blueprint
equivalent, run the validator and return an error if it fails to
validate.
The schema doesn't catch all invalid cases, such as the mountpoint being
required when the fs_type is not "swap", so calling the validator
ensures that any such cases are caught without needing to duplicate the
checks.
The type is required for partitions with a type other than plain.
This commit also adds the empty string to the valid values in the
conversion switch case and is treated like "plain".
Return an HTTP error with the invalid customization message when the
convertDiskCustomizations() function returns an error.
Secondary: The conversion was being run twice by mistake. This has also
been fixed.
This removes all artifact directories, and their contents, if there
isn't an associated Job. This is used to clean up local artifacts after
the compose job has been deleted.
Related: RHEL-60120
This adds tests for retrieving all root jobs, and deleting jobs
and unused dependencies. These tests are run against the fsjobqueue for
unit testing, and against dbjobqueue for integration testing.
Resolves: RHEL-60120
This allows jobs to be deleted from the database.
Currently only implemented by fsjobqueue. The function for
dbjobqueue currently returns nil.
This will remove all the job files used by the root job UUID as long as
no other job depends on them. ie. It starts at the top, and moves down
the dependency tree until it finds a job that is also used by another
job, removes the job to be deleted from its dependants list, and moves
back up the tree only deleting jobs with empty dependants lists.
Related: RHEL-60120
This method is not particularly useful anymore. Its purpose was to
initialise the ImageOptions from an ImageRequest with the appropriate
size and partitioning mode. However, the partitioning mode was also
being set later using request.GetPartitioningMode(). More importantly,
setting the size on the ImageOptions caused issues with the interaction
between filesystem and partitioning customizations as well as the image
request size (see #4705). The correct thing to do here is to map the
ImageRequest.Size directly onto ImageOptions.Size, without taking into
account ImageType or the Blueprint Customizations. The rest are
considered when generating the manifest in images, either when preparing
the Manifest() call or when generating the partition table. This makes
it easier to trace and reason about the effect of each option. This
kind of decision making in the API layer makes it difficult to maintain
the logic, since it requires duplicating the decision making or, as we
had now, making certain specific combinations impossible.
The type of the minsize parameter in the new disk customization was
meant to support both integers (size in bytes) and strings (size with
unit). However, the schema wasn't done properly, which made any input
result in an error:
GenericError: Failed to create the compose request:
{"code":"IMAGE-BUILDER-COMPOSER-30","details":"request body has an
error: doesn't match schema #/components/schemas/ComposeRequest:
Error at \"/customizations/disk/partitions/0\": doesn't match schema
due to: Error at \"/minsize\": input matches more than one oneOf
schemas
Reducing it to just support strings simplifies the schema. It's also
not an important feature reduction since sizes as integers (for
filesystems that are typically in GiB) aren't very convenient.
Expose the ${SUBJ} customization in Cloud API. Weldr API inherited it
automatically with the update of `osbuild/blueprint` to v1.6.0.
Adjust relevant test cases and unit tests to use this new customization.
Signed-off-by: Tomáš Hozza <thozza@redhat.com>
The image type names for Fedora were changed in images 0.138.0, aliases
were left behind so the old names still exist.
Split out the testcases between rhel and fedora so we test for the new
names being returned.
Signed-off-by: Simon de Vlieger <supakeen@redhat.com>