worker: extend the depsolve job to use DepsolvePackageSets()
Extend the `DepsolveJob` worker job argument to contain package sets chains and use `DepsolvePackageSets()` for depsolving.
This commit is contained in:
parent
ac8b0b211c
commit
e819e08098
3 changed files with 29 additions and 28 deletions
|
|
@ -18,23 +18,22 @@ type DepsolveJobImpl struct {
|
||||||
// in repos are used for all package sets, whereas the repositories in
|
// in repos are used for all package sets, whereas the repositories in
|
||||||
// packageSetsRepos are only used for the package set with the same name
|
// packageSetsRepos are only used for the package set with the same name
|
||||||
// (matching map keys).
|
// (matching map keys).
|
||||||
func (impl *DepsolveJobImpl) depsolve(packageSets map[string]rpmmd.PackageSet, repos []rpmmd.RepoConfig, packageSetsRepos map[string][]rpmmd.RepoConfig, modulePlatformID, arch, releasever string) (map[string][]rpmmd.PackageSpec, error) {
|
func (impl *DepsolveJobImpl) depsolve(packageSetsChains map[string][]string,
|
||||||
|
packageSets map[string]rpmmd.PackageSet,
|
||||||
|
repos []rpmmd.RepoConfig,
|
||||||
|
packageSetsRepos map[string][]rpmmd.RepoConfig,
|
||||||
|
modulePlatformID, arch, releasever string) (map[string][]rpmmd.PackageSpec, error) {
|
||||||
rpmMD := rpmmd.NewRPMMD(impl.RPMMDCache)
|
rpmMD := rpmmd.NewRPMMD(impl.RPMMDCache)
|
||||||
|
|
||||||
packageSpecs := make(map[string][]rpmmd.PackageSpec)
|
return rpmMD.DepsolvePackageSets(
|
||||||
for name, packageSet := range packageSets {
|
packageSetsChains,
|
||||||
repositories := make([]rpmmd.RepoConfig, len(repos))
|
packageSets,
|
||||||
copy(repositories, repos)
|
repos,
|
||||||
if packageSetRepositories, ok := packageSetsRepos[name]; ok {
|
packageSetsRepos,
|
||||||
repositories = append(repositories, packageSetRepositories...)
|
modulePlatformID,
|
||||||
}
|
arch,
|
||||||
packageSpec, _, err := rpmMD.Depsolve(packageSet, repositories, modulePlatformID, arch, releasever)
|
releasever,
|
||||||
if err != nil {
|
)
|
||||||
return nil, err
|
|
||||||
}
|
|
||||||
packageSpecs[name] = packageSpec
|
|
||||||
}
|
|
||||||
return packageSpecs, nil
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func (impl *DepsolveJobImpl) Run(job worker.Job) error {
|
func (impl *DepsolveJobImpl) Run(job worker.Job) error {
|
||||||
|
|
@ -46,7 +45,7 @@ func (impl *DepsolveJobImpl) Run(job worker.Job) error {
|
||||||
}
|
}
|
||||||
|
|
||||||
var result worker.DepsolveJobResult
|
var result worker.DepsolveJobResult
|
||||||
result.PackageSpecs, err = impl.depsolve(args.PackageSets, args.Repos, args.PackageSetsRepos, args.ModulePlatformID, args.Arch, args.Releasever)
|
result.PackageSpecs, err = impl.depsolve(args.PackageSetsChains, args.PackageSets, args.Repos, args.PackageSetsRepos, args.ModulePlatformID, args.Arch, args.Releasever)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
switch e := err.(type) {
|
switch e := err.(type) {
|
||||||
case *rpmmd.DNFError:
|
case *rpmmd.DNFError:
|
||||||
|
|
|
||||||
|
|
@ -84,12 +84,13 @@ func (s *Server) enqueueCompose(distribution distro.Distro, bp blueprint.Bluepri
|
||||||
ir := irs[0]
|
ir := irs[0]
|
||||||
|
|
||||||
depsolveJobID, err := s.workers.EnqueueDepsolve(&worker.DepsolveJob{
|
depsolveJobID, err := s.workers.EnqueueDepsolve(&worker.DepsolveJob{
|
||||||
PackageSets: ir.imageType.PackageSets(bp),
|
PackageSetsChains: ir.imageType.PackageSetsChains(),
|
||||||
Repos: ir.repositories,
|
PackageSets: ir.imageType.PackageSets(bp),
|
||||||
ModulePlatformID: distribution.ModulePlatformID(),
|
Repos: ir.repositories,
|
||||||
Arch: ir.arch.Name(),
|
ModulePlatformID: distribution.ModulePlatformID(),
|
||||||
Releasever: distribution.Releasever(),
|
Arch: ir.arch.Name(),
|
||||||
PackageSetsRepos: ir.packageSetsRepositories,
|
Releasever: distribution.Releasever(),
|
||||||
|
PackageSetsRepos: ir.packageSetsRepositories,
|
||||||
}, channel)
|
}, channel)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return id, HTTPErrorWithInternal(ErrorEnqueueingJob, err)
|
return id, HTTPErrorWithInternal(ErrorEnqueueingJob, err)
|
||||||
|
|
|
||||||
|
|
@ -108,12 +108,13 @@ func (pn *PipelineNames) All() []string {
|
||||||
// PackageSetsRepos are only used by the package sets that share the same name
|
// PackageSetsRepos are only used by the package sets that share the same name
|
||||||
// (map key).
|
// (map key).
|
||||||
type DepsolveJob struct {
|
type DepsolveJob struct {
|
||||||
PackageSets map[string]rpmmd.PackageSet `json:"package_sets"`
|
PackageSetsChains map[string][]string `json:"package_sets_chains"`
|
||||||
Repos []rpmmd.RepoConfig `json:"repos"`
|
PackageSets map[string]rpmmd.PackageSet `json:"package_sets"`
|
||||||
ModulePlatformID string `json:"module_platform_id"`
|
Repos []rpmmd.RepoConfig `json:"repos"`
|
||||||
Arch string `json:"arch"`
|
ModulePlatformID string `json:"module_platform_id"`
|
||||||
Releasever string `json:"releasever"`
|
Arch string `json:"arch"`
|
||||||
PackageSetsRepos map[string][]rpmmd.RepoConfig `json:"package_sets_repositories,omitempty"`
|
Releasever string `json:"releasever"`
|
||||||
|
PackageSetsRepos map[string][]rpmmd.RepoConfig `json:"package_sets_repositories,omitempty"`
|
||||||
}
|
}
|
||||||
|
|
||||||
type ErrorType string
|
type ErrorType string
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue