Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 3 additions & 3 deletions cmd/osbuild-store-dump/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ import (
"github.com/osbuild/osbuild-composer/internal/weldrtypes"
)

func getManifest(bp blueprint.Blueprint, t distro.ImageType, a distro.Arch, d distro.Distro, cacheDir string, repos []rpmmd.RepoConfig) (manifest.OSBuildManifest, []rpmmd.PackageSpec) {
func getManifest(bp blueprint.Blueprint, t distro.ImageType, a distro.Arch, d distro.Distro, cacheDir string, repos []rpmmd.RepoConfig) (manifest.OSBuildManifest, rpmmd.PackageList) {
manifest, _, err := t.Manifest(&bp, distro.ImageOptions{}, repos, nil)
if err != nil {
panic(err)
Expand Down Expand Up @@ -182,7 +182,7 @@ func main() {
awsTarget,
},
id1,
weldrtypes.RPMMDPackageSpecListToDepsolvedPackageInfoList(packages),
weldrtypes.RPMMDPackageListToDepsolvedPackageInfoList(packages),
)
if err != nil {
panic(err)
Expand All @@ -197,7 +197,7 @@ func main() {
awsTarget,
},
id2,
weldrtypes.RPMMDPackageSpecListToDepsolvedPackageInfoList(packages),
weldrtypes.RPMMDPackageListToDepsolvedPackageInfoList(packages),
)
if err != nil {
panic(err)
Expand Down
6 changes: 3 additions & 3 deletions cmd/osbuild-worker/jobimpl-depsolve.go
Original file line number Diff line number Diff line change
Expand Up @@ -59,7 +59,7 @@ type DepsolveJobImpl struct {
// in repos are used for all package sets, whereas the repositories in
// packageSetsRepos are only used for the package set with the same name
// (matching map keys).
func (impl *DepsolveJobImpl) depsolve(packageSets map[string][]rpmmd.PackageSet, modulePlatformID, arch, releasever string, sbomType sbom.StandardType) (map[string][]rpmmd.PackageSpec, map[string][]rpmmd.RepoConfig, map[string]worker.SbomDoc, error) {
func (impl *DepsolveJobImpl) depsolve(packageSets map[string][]rpmmd.PackageSet, modulePlatformID, arch, releasever string, sbomType sbom.StandardType) (map[string]worker.DepsolvedPackageList, map[string][]rpmmd.RepoConfig, map[string]worker.SbomDoc, error) {
solver := impl.Solver.NewWithConfig(modulePlatformID, releasever, arch, "")
if impl.RepositoryMTLSConfig != nil && impl.RepositoryMTLSConfig.Proxy != nil {
err := solver.SetProxy(impl.RepositoryMTLSConfig.Proxy.String())
Expand All @@ -68,7 +68,7 @@ func (impl *DepsolveJobImpl) depsolve(packageSets map[string][]rpmmd.PackageSet,
}
}

depsolvedSets := make(map[string][]rpmmd.PackageSpec)
depsolvedSets := make(map[string]worker.DepsolvedPackageList)
repoConfigs := make(map[string][]rpmmd.RepoConfig)
var sbomDocs map[string]worker.SbomDoc
if sbomType != sbom.StandardTypeNone {
Expand All @@ -79,7 +79,7 @@ func (impl *DepsolveJobImpl) depsolve(packageSets map[string][]rpmmd.PackageSet,
if err != nil {
return nil, nil, nil, err
}
depsolvedSets[name] = res.Packages
depsolvedSets[name] = worker.DepsolvedPackageListFromRPMMDList(res.Packages)
repoConfigs[name] = res.Repos
if sbomType != sbom.StandardTypeNone {
sbomDocs[name] = worker.SbomDoc(*res.SBOM)
Expand Down
2 changes: 1 addition & 1 deletion go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ require (
github.com/oapi-codegen/runtime v1.1.2
github.com/openshift-online/ocm-sdk-go v0.1.478
github.com/osbuild/blueprint v1.16.0
github.com/osbuild/images v0.202.0
github.com/osbuild/images v0.204.0
github.com/osbuild/osbuild-composer/pkg/splunk_logger v0.0.0-20240814102216-0239db53236d
github.com/prometheus/client_golang v1.23.2
github.com/segmentio/ksuid v1.0.4
Expand Down
4 changes: 2 additions & 2 deletions go.sum
Original file line number Diff line number Diff line change
Expand Up @@ -520,8 +520,8 @@ github.com/oracle/oci-go-sdk/v54 v54.0.0 h1:CDLjeSejv2aDpElAJrhKpi6zvT/zhZCZuXch
github.com/oracle/oci-go-sdk/v54 v54.0.0/go.mod h1:+t+yvcFGVp+3ZnztnyxqXfQDsMlq8U25faBLa+mqCMc=
github.com/osbuild/blueprint v1.16.0 h1:f/kHih+xpeJ1v7wtIfzdHPZTsiXsqKeDQ1+rrue6298=
github.com/osbuild/blueprint v1.16.0/go.mod h1:HPlJzkEl7q5g8hzaGksUk7ifFAy9QFw9LmzhuFOAVm4=
github.com/osbuild/images v0.202.0 h1:OPvfmr5RJHcOJgU8Win6kHyoCNQZEiILlgIDI64/YIM=
github.com/osbuild/images v0.202.0/go.mod h1:xkXfw5CIy0bVNTNdB6GXiewu/IzBgpofkItDJPAzGA4=
github.com/osbuild/images v0.204.0 h1:vP/48Y/wqm0uFPXApZpOIJXKc0SAYeqjt1HCaUyUQ5M=
github.com/osbuild/images v0.204.0/go.mod h1:YhhDsTY4IARBvPCrDFqD4tMfiBtwoZ8jC5nPqXfBZ+M=
github.com/osbuild/osbuild-composer/pkg/splunk_logger v0.0.0-20240814102216-0239db53236d h1:r9BFPDv0uuA9k1947Jybcxs36c/pTywWS1gjeizvtcQ=
github.com/osbuild/osbuild-composer/pkg/splunk_logger v0.0.0-20240814102216-0239db53236d/go.mod h1:zR1iu/hOuf+OQNJlk70tju9IqzzM4ycq0ectkFBm94U=
github.com/perimeterx/marshmallow v1.1.5 h1:a2LALqQ1BlHM8PZblsDdidgv1mWi1DgC2UmX50IvK2s=
Expand Down
5 changes: 3 additions & 2 deletions internal/cloudapi/v2/depsolve.go
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ import (
"github.com/osbuild/osbuild-composer/internal/worker"
)

func (request *DepsolveRequest) Depsolve(df *distrofactory.Factory, rr *reporegistry.RepoRegistry, workers *worker.Server) ([]rpmmd.PackageSpec, error) {
func (request *DepsolveRequest) Depsolve(df *distrofactory.Factory, rr *reporegistry.RepoRegistry, workers *worker.Server) (rpmmd.PackageList, error) {
// Convert the requested blueprint to a composer blueprint
bp, err := ConvertRequestBP(request.Blueprint)
if err != nil {
Expand Down Expand Up @@ -144,5 +144,6 @@ func (request *DepsolveRequest) Depsolve(df *distrofactory.Factory, rr *reporegi
}
}

return result.PackageSpecs["os"], nil
packages := result.PackageSpecs["os"].ToRPMMDList()
return packages, nil
}
10 changes: 5 additions & 5 deletions internal/cloudapi/v2/handler.go
Original file line number Diff line number Diff line change
Expand Up @@ -1389,7 +1389,7 @@ func uploadStatusFromJobStatus(js *worker.JobStatus, je *clienterrors.Error) Upl
}

// PostDepsolveBlueprint depsolves the packages in a blueprint and returns
// the results as a list of rpmmd.PackageSpecs
// the results as a list of rpmmd.PackageList
func (h *apiHandlers) PostDepsolveBlueprint(ctx echo.Context) error {
var request DepsolveRequest
err := ctx.Bind(&request)
Expand All @@ -1406,14 +1406,14 @@ func (h *apiHandlers) PostDepsolveBlueprint(ctx echo.Context) error {

return ctx.JSON(http.StatusOK,
DepsolveResponse{
Packages: packageSpecToPackageMetadata(deps),
Packages: rpmmdPackageToPackageMetadata(deps),
})
}

// packageSpecToPackageMetadata converts the rpmmd.PackageSpec to PackageMetadata
// rpmmdPackageToPackageMetadata converts the rpmmd.PackageList to PackageMetadata
// This is used to return package information from the blueprint depsolve request
// using the common PackageMetadata format from the openapi schema.
func packageSpecToPackageMetadata(pkgspecs []rpmmd.PackageSpec) []PackageMetadataCommon {
func rpmmdPackageToPackageMetadata(pkgspecs rpmmd.PackageList) []PackageMetadataCommon {
packages := make([]PackageMetadataCommon, 0)
for _, rpm := range pkgspecs {
// Set epoch if it is not 0
Expand All @@ -1430,7 +1430,7 @@ func packageSpecToPackageMetadata(pkgspecs []rpmmd.PackageSpec) []PackageMetadat
Release: rpm.Release,
Epoch: epoch,
Arch: rpm.Arch,
Checksum: common.ToPtr(rpm.Checksum),
Checksum: common.ToPtr(rpm.Checksum.String()),
},
)
}
Expand Down
2 changes: 1 addition & 1 deletion internal/cloudapi/v2/server.go
Original file line number Diff line number Diff line change
Expand Up @@ -683,7 +683,7 @@ func serializeManifest(ctx context.Context, manifestSource *manifest.Manifest, w
depsolveResultsInTheRightFormat := map[string]depsolvednf.DepsolveResult{}
for plName, res := range depsolveResults.PackageSpecs {
r := depsolveResultsInTheRightFormat[plName]
r.Packages = res
r.Packages = res.ToRPMMDList()
depsolveResultsInTheRightFormat[plName] = r
}
for plName, res := range depsolveResults.RepoConfigs {
Expand Down
20 changes: 11 additions & 9 deletions internal/cloudapi/v2/v2_multi_tenancy_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,6 @@ import (
"github.com/osbuild/osbuild-composer/pkg/jobqueue"

"github.com/osbuild/images/pkg/distro/test_distro"
"github.com/osbuild/images/pkg/rpmmd"
v2 "github.com/osbuild/osbuild-composer/internal/cloudapi/v2"
"github.com/osbuild/osbuild-composer/internal/test"
"github.com/osbuild/osbuild-composer/internal/worker"
Expand Down Expand Up @@ -180,16 +179,19 @@ func runNextJob(t *testing.T, jobs []uuid.UUID, workerServer *worker.Server, org
// the manifest generation job would fail on empty depsolved package list.
// This would make the ComposeManifests endpoint return an error.
case worker.JobTypeDepsolve:
dummyPackage := rpmmd.PackageSpec{
Name: "pkg1",
Version: "1.33",
Release: "2.fc30",
Arch: "x86_64",
Checksum: "sha256:e50ddb78a37f5851d1a5c37a4c77d59123153c156e628e064b9daa378f45a2fe",
RemoteLocation: "https://pkg1.example.com/1.33-2.fc30.x86_64.rpm",
dummyPackage := worker.DepsolvedPackage{
Name: "pkg1",
Version: "1.33",
Release: "2.fc30",
Arch: "x86_64",
Checksum: &worker.DepsolvedPackageChecksum{
Type: "sha256",
Value: "e50ddb78a37f5851d1a5c37a4c77d59123153c156e628e064b9daa378f45a2fe",
},
RemoteLocations: []string{"https://pkg1.example.com/1.33-2.fc30.x86_64.rpm"},
}
depsolveJobResult := &worker.DepsolveJobResult{
PackageSpecs: map[string][]rpmmd.PackageSpec{
PackageSpecs: map[string]worker.DepsolvedPackageList{
// Used when depsolving a manifest
"build": {dummyPackage},
"os": {dummyPackage},
Expand Down
19 changes: 11 additions & 8 deletions internal/cloudapi/v2/v2_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -92,16 +92,19 @@ func mockDepsolve(t *testing.T, workerServer *worker.Server, wg *sync.WaitGroup,
if err != nil {
continue
}
dummyPackage := rpmmd.PackageSpec{
Name: "pkg1",
Version: "1.33",
Release: "2.fc30",
Arch: "x86_64",
Checksum: "sha256:e50ddb78a37f5851d1a5c37a4c77d59123153c156e628e064b9daa378f45a2fe",
RemoteLocation: "https://pkg1.example.com/1.33-2.fc30.x86_64.rpm",
dummyPackage := worker.DepsolvedPackage{
Name: "pkg1",
Version: "1.33",
Release: "2.fc30",
Arch: "x86_64",
Checksum: &worker.DepsolvedPackageChecksum{
Type: "sha256",
Value: "e50ddb78a37f5851d1a5c37a4c77d59123153c156e628e064b9daa378f45a2fe",
},
RemoteLocations: []string{"https://pkg1.example.com/1.33-2.fc30.x86_64.rpm"},
}
dJR := &worker.DepsolveJobResult{
PackageSpecs: map[string][]rpmmd.PackageSpec{
PackageSpecs: map[string]worker.DepsolvedPackageList{
// Used when depsolving a manifest
"build": {dummyPackage},
"os": {dummyPackage},
Expand Down
36 changes: 27 additions & 9 deletions internal/mocks/depsolvednf/mock_data.go
Original file line number Diff line number Diff line change
Expand Up @@ -86,18 +86,24 @@ func BaseSearchResultsMap() map[string]rpmmd.PackageList {
}
}

// BaseDepsolveResult is the expected list of dependencies (as rpmmd.PackageSpec) from
func BaseDepsolveResult(repoID string) []rpmmd.PackageSpec {
return []rpmmd.PackageSpec{
// BaseDepsolveResult is the expected list of dependencies (as rpmmd.PackageList) from
func BaseDepsolveResult(repoID string) rpmmd.PackageList {
return rpmmd.PackageList{
{
Name: "dep-package3",
Epoch: 7,
Version: "3.0.3",
Release: "1.fc30",
Arch: "x86_64",
CheckGPG: true,
Checksum: "sha256:62278d360aa5045eb202af39fe85743a4b5615f0c9c7439a04d75d785db4c720",
RepoID: repoID,
Checksum: rpmmd.Checksum{
Type: "sha256",
Value: "62278d360aa5045eb202af39fe85743a4b5615f0c9c7439a04d75d785db4c720",
},
RemoteLocations: []string{
"https://pkg3.example.com/3.0.3-1.fc30.x86_64.rpm",
},
RepoID: repoID,
},
{
Name: "dep-package1",
Expand All @@ -106,8 +112,14 @@ func BaseDepsolveResult(repoID string) []rpmmd.PackageSpec {
Release: "2.fc30",
Arch: "x86_64",
CheckGPG: true,
Checksum: "sha256:fe3951d112c3b1c84dc8eac57afe0830df72df1ca0096b842f4db5d781189893",
RepoID: repoID,
Checksum: rpmmd.Checksum{
Type: "sha256",
Value: "fe3951d112c3b1c84dc8eac57afe0830df72df1ca0096b842f4db5d781189893",
},
RemoteLocations: []string{
"https://pkg1.example.com/1.33-2.fc30.x86_64.rpm",
},
RepoID: repoID,
},
{
Name: "dep-package2",
Expand All @@ -116,8 +128,14 @@ func BaseDepsolveResult(repoID string) []rpmmd.PackageSpec {
Release: "1.fc30",
Arch: "x86_64",
CheckGPG: true,
Checksum: "sha256:5797c0b0489681596b5b3cd7165d49870b85b69d65e08770946380a3dcd49ea2",
RepoID: repoID,
Checksum: rpmmd.Checksum{
Type: "sha256",
Value: "5797c0b0489681596b5b3cd7165d49870b85b69d65e08770946380a3dcd49ea2",
},
RemoteLocations: []string{
"https://pkg2.example.com/2.9-1.fc30.x86_64.rpm",
},
RepoID: repoID,
},
}
}
30 changes: 15 additions & 15 deletions internal/weldr/api.go
Original file line number Diff line number Diff line change
Expand Up @@ -1113,7 +1113,7 @@ func (api *API) modulesListHandler(writer http.ResponseWriter, request *http.Req
return
}

packageInfos := packages.ToPackageInfos()
packageInfos := RPMMDPackageListToPackageInfos(packages)

total := uint(len(packageInfos))
start := min(offset, total)
Expand Down Expand Up @@ -1313,7 +1313,7 @@ func (api *API) modulesInfoHandler(writer http.ResponseWriter, request *http.Req
statusResponseError(writer, http.StatusBadRequest, errors)
return
}
packageInfos[i].Dependencies = weldrtypes.RPMMDPackageSpecListToDepsolvedPackageInfoList(res.Packages)
packageInfos[i].Dependencies = weldrtypes.RPMMDPackageListToDepsolvedPackageInfoList(res.Packages)
}
if err := solver.CleanCache(); err != nil {
// log and ignore
Expand Down Expand Up @@ -1404,7 +1404,7 @@ func (api *API) projectsDepsolveHandler(writer http.ResponseWriter, request *htt
// log and ignore
log.Printf("Error during rpm repo cache cleanup: %s", err.Error())
}
err = json.NewEncoder(writer).Encode(reply{Projects: weldrtypes.RPMMDPackageSpecListToDepsolvedPackageInfoList(res.Packages)})
err = json.NewEncoder(writer).Encode(reply{Projects: weldrtypes.RPMMDPackageListToDepsolvedPackageInfoList(res.Packages)})
common.PanicOnError(err)
}

Expand Down Expand Up @@ -1548,8 +1548,8 @@ func (api *API) blueprintsDepsolveHandler(writer http.ResponseWriter, request *h
}

type entry struct {
Blueprint blueprint.Blueprint `json:"blueprint"`
Dependencies []rpmmd.PackageSpec `json:"dependencies"`
Blueprint blueprint.Blueprint `json:"blueprint"`
Dependencies []weldrtypes.DepsolvedPackageInfo `json:"dependencies"`
}
type reply struct {
Blueprints []entry `json:"blueprints"`
Expand Down Expand Up @@ -1593,7 +1593,7 @@ func (api *API) blueprintsDepsolveHandler(writer http.ResponseWriter, request *h
ID: "BlueprintsError",
Msg: fmt.Sprintf("%s: %s", name, err.Error()),
})
dependencies = []rpmmd.PackageSpec{}
dependencies = []weldrtypes.DepsolvedPackageInfo{}
}

blueprints = append(blueprints, entry{*blueprint, dependencies})
Expand All @@ -1609,7 +1609,7 @@ func (api *API) blueprintsDepsolveHandler(writer http.ResponseWriter, request *h
// expandBlueprintGlobs will expand package name globs and versions using the depsolve results
// The result is a sorted list of Package structs with the full package name and version
// It will return an error if it cannot find a non-glob package name in the dependency list
func expandBlueprintGlobs(dependencies []rpmmd.PackageSpec, packages []blueprint.Package) ([]blueprint.Package, error) {
func expandBlueprintGlobs(dependencies []weldrtypes.DepsolvedPackageInfo, packages []blueprint.Package) ([]blueprint.Package, error) {
newPackages := make(map[string]blueprint.Package)

for _, pkg := range packages {
Expand All @@ -1622,9 +1622,9 @@ func expandBlueprintGlobs(dependencies []rpmmd.PackageSpec, packages []blueprint
// Packages should not be missing from the depsolve results
return nil, fmt.Errorf("%s missing from depsolve results", pkg.Name)
}
newPackages[dependencies[i].GetNEVRA()] = blueprint.Package{
newPackages[dependencies[i].NEVRA()] = blueprint.Package{
Name: dependencies[i].Name,
Version: dependencies[i].GetEVRA(),
Version: dependencies[i].EVRA(),
}
} else {
// Add all the packages matching the glob
Expand All @@ -1635,9 +1635,9 @@ func expandBlueprintGlobs(dependencies []rpmmd.PackageSpec, packages []blueprint

for _, d := range dependencies {
if g.Match(d.Name) {
newPackages[d.GetNEVRA()] = blueprint.Package{
newPackages[d.NEVRA()] = blueprint.Package{
Name: d.Name,
Version: d.GetEVRA(),
Version: d.EVRA(),
}
}
}
Expand Down Expand Up @@ -2637,7 +2637,7 @@ func (api *API) composeHandler(writer http.ResponseWriter, request *http.Request
return
}

var packages []rpmmd.PackageSpec
var packages rpmmd.PackageList
// TODO: introduce a way to query these from the manifest / image type
// BUG: installer/container image types will have empty package sets
if packages = depsolved["packages"].Packages; len(packages) == 0 {
Expand Down Expand Up @@ -2665,7 +2665,7 @@ func (api *API) composeHandler(writer http.ResponseWriter, request *http.Request
return
}

weldrPackages := weldrtypes.RPMMDPackageSpecListToDepsolvedPackageInfoList(packages)
weldrPackages := weldrtypes.RPMMDPackageListToDepsolvedPackageInfoList(packages)
if testMode == "1" {
// Create a failed compose
err = api.store.PushTestCompose(composeID, mf, imageType, bp, size, targets, false, weldrPackages)
Expand Down Expand Up @@ -3612,7 +3612,7 @@ func (api *API) allRepositories(distroName, arch string) ([]rpmmd.RepoConfig, er
return repos, nil
}

func (api *API) depsolveBlueprint(bp blueprint.Blueprint) ([]rpmmd.PackageSpec, error) {
func (api *API) depsolveBlueprint(bp blueprint.Blueprint) ([]weldrtypes.DepsolvedPackageInfo, error) {
// Depsolve using the host distro if none has been specified
if bp.Distro == "" {
bp.Distro = api.hostDistroName
Expand Down Expand Up @@ -3642,7 +3642,7 @@ func (api *API) depsolveBlueprint(bp blueprint.Blueprint) ([]rpmmd.PackageSpec,
// log and ignore
log.Printf("Error during rpm repo cache cleanup: %s", err.Error())
}
return res.Packages, nil
return weldrtypes.RPMMDPackageListToDepsolvedPackageInfoList(res.Packages), nil
}

func (api *API) uploadsScheduleHandler(writer http.ResponseWriter, request *http.Request, params httprouter.Params) {
Expand Down
Loading
Loading