Use RepoRegistry in composer and Weldr API
Modify composer to use RepoRegistry, instead of loading the host repositories, when initializing WeldrAPI. Modify WeldrAPI to use RepoRegistry, instead of a map of repository definitions. Make sure that the RepoRegistry method specific to image type is used in Welder where appropriate. Specifically when depsolving a Blueprint, which is used to build a specific image type. Update Weldr API unit tests to reflect the change. Add a new method to RepoRegistry, allowing to get list of repositories, which should be used for building an image for a given architecture, without specifying the exact image type. Add relevant unit tests. Signed-off-by: Tomas Hozza <thozza@redhat.com>
This commit is contained in:
parent
fba9fe1072
commit
aa6665ad01
6 changed files with 361 additions and 34 deletions
|
|
@ -17,6 +17,7 @@ import (
|
|||
"github.com/osbuild/osbuild-composer/internal/distroregistry"
|
||||
"github.com/osbuild/osbuild-composer/internal/jobqueue/fsjobqueue"
|
||||
"github.com/osbuild/osbuild-composer/internal/kojiapi"
|
||||
"github.com/osbuild/osbuild-composer/internal/reporegistry"
|
||||
"github.com/osbuild/osbuild-composer/internal/rpmmd"
|
||||
"github.com/osbuild/osbuild-composer/internal/store"
|
||||
"github.com/osbuild/osbuild-composer/internal/weldr"
|
||||
|
|
@ -85,15 +86,21 @@ func (c *Composer) InitWeldr(repoPaths []string, weldrListener net.Listener) err
|
|||
return fmt.Errorf("Host distro does not support host architecture: %v", err)
|
||||
}
|
||||
|
||||
repos, err := rpmmd.LoadRepositories(repoPaths, hostDistro.Name())
|
||||
rr, err := reporegistry.New(repoPaths)
|
||||
if err != nil {
|
||||
return fmt.Errorf("Error loading repositories for %s: %v", hostDistro.Name(), err)
|
||||
return fmt.Errorf("error loading repository definitions: %v", err)
|
||||
}
|
||||
|
||||
// Check if repositories for the host distro and arch were loaded
|
||||
_, err = rr.ReposByArch(arch, false)
|
||||
if err != nil {
|
||||
return fmt.Errorf("loaded repository definitions don't contain any for the host distro/arch: %v", err)
|
||||
}
|
||||
|
||||
store := store.New(&c.stateDir, arch, c.logger)
|
||||
compatOutputDir := path.Join(c.stateDir, "outputs")
|
||||
|
||||
c.weldr = weldr.New(c.rpm, arch, hostDistro, repos[archName], c.logger, store, c.workers, compatOutputDir)
|
||||
c.weldr = weldr.New(c.rpm, arch, hostDistro, rr, c.logger, store, c.workers, compatOutputDir)
|
||||
|
||||
c.weldrListener = weldrListener
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue