weldr: Fix the bad blueprint depsolve response
This changes the response to match lorax-composer's behavior. If any of the blueprints in the list passed to /blueprints/depsolve/... have an error that error should be appended to the error list, and the blueprint included in the blueprints list with an empty dependencies section. It was returning an error 400 and a single error if it hit any depsolve problems, skipping any other blueprints and returning the wrong response. This also adjusts the tests to account for the change. Fixes #890
This commit is contained in:
parent
3d538a6663
commit
eb76b9ec8e
2 changed files with 5 additions and 6 deletions
|
|
@ -1118,12 +1118,11 @@ func (api *API) blueprintsDepsolveHandler(writer http.ResponseWriter, request *h
|
|||
dependencies, _, err := api.depsolveBlueprint(blueprint, nil)
|
||||
|
||||
if err != nil {
|
||||
errors := responseError{
|
||||
blueprintsErrors = append(blueprintsErrors, responseError{
|
||||
ID: "BlueprintsError",
|
||||
Msg: fmt.Sprintf("%s: %s", name, err.Error()),
|
||||
}
|
||||
statusResponseError(writer, http.StatusBadRequest, errors)
|
||||
return
|
||||
})
|
||||
dependencies = []rpmmd.PackageSpec{}
|
||||
}
|
||||
|
||||
blueprints = append(blueprints, entry{*blueprint, dependencies})
|
||||
|
|
|
|||
|
|
@ -441,8 +441,8 @@ func TestBlueprintsDepsolve(t *testing.T) {
|
|||
ExpectedJSON string
|
||||
}{
|
||||
{rpmmd_mock.BaseFixture, http.StatusOK, `{"blueprints":[{"blueprint":{"name":"test","description":"Test","version":"0.0.1","packages":[{"name":"dep-package1","version":"*"}],"groups":[],"modules":[{"name":"dep-package3","version":"*"}]},"dependencies":[{"name":"dep-package3","epoch":7,"version":"3.0.3","release":"1.fc30","arch":"x86_64"},{"name":"dep-package1","epoch":0,"version":"1.33","release":"2.fc30","arch":"x86_64"},{"name":"dep-package2","epoch":0,"version":"2.9","release":"1.fc30","arch":"x86_64"}]}],"errors":[]}`},
|
||||
{rpmmd_mock.NonExistingPackage, http.StatusBadRequest, `{"status":false,"errors":[{"id":"BlueprintsError","msg":"test: DNF error occured: MarkingErrors: Error occurred when marking packages for installation: Problems in request:\nmissing packages: fash"}]}`},
|
||||
{rpmmd_mock.BadDepsolve, http.StatusBadRequest, `{"status":false,"errors":[{"id":"BlueprintsError","msg":"test: DNF error occured: DepsolveError: There was a problem depsolving ['go2rpm']: \n Problem: conflicting requests\n - nothing provides askalono-cli needed by go2rpm-1-4.fc31.noarch"}]}`},
|
||||
{rpmmd_mock.NonExistingPackage, http.StatusOK, `{"blueprints":[{"blueprint":{"name":"test","description":"Test","version":"0.0.1","packages":[{"name":"dep-package1","version":"*"}],"groups":[],"modules":[{"name":"dep-package3","version":"*"}]},"dependencies":[]}],"errors":[{"id":"BlueprintsError","msg":"test: DNF error occured: MarkingErrors: Error occurred when marking packages for installation: Problems in request:\nmissing packages: fash"}]}`},
|
||||
{rpmmd_mock.BadDepsolve, http.StatusOK, `{"blueprints":[{"blueprint":{"name":"test","description":"Test","version":"0.0.1","packages":[{"name":"dep-package1","version":"*"}],"groups":[],"modules":[{"name":"dep-package3","version":"*"}]},"dependencies":[]}],"errors":[{"id":"BlueprintsError","msg":"test: DNF error occured: DepsolveError: There was a problem depsolving ['go2rpm']: \n Problem: conflicting requests\n - nothing provides askalono-cli needed by go2rpm-1-4.fc31.noarch"}]}`},
|
||||
}
|
||||
|
||||
for _, c := range cases {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue