upload/koji: don't pass task_id to cg_init_build

Contrary to our assumption, we cannot initialize the build with the
link to the task. We can only update the link once the build has
completed.

This seems like a bug in koji, but we keep it like this for now.
This commit is contained in:
Tom Gundersen 2020-09-10 21:35:19 +01:00
parent 9a4c66db03
commit e52830f530
7 changed files with 15 additions and 8 deletions

View file

@ -85,6 +85,7 @@ jobs:
- name: Run unit tests
run: |
sudo internal/upload/koji/run-koji-container.sh start
koji --server=http://localhost/kojihub --user kojiadmin --password kojipass --authtype=password make-task image
env KRB5_CONFIG=../../../.github/krb5.conf go test -v -race -covermode atomic -coverprofile=coverage.txt -tags koji_test ./internal/upload/koji
sudo internal/upload/koji/run-koji-container.sh stop

View file

@ -14,7 +14,9 @@ import (
)
func main() {
var taskID int
var server, user, password, name, version, release, arch, filename string
flag.IntVar(&taskID, "task-id", 0, "id of owning task")
flag.StringVar(&server, "server", "", "url to API")
flag.StringVar(&user, "user", "", "koji username")
flag.StringVar(&password, "password", "", "koji password")
@ -58,6 +60,7 @@ func main() {
}
build := koji.ImageBuild{
TaskID: uint64(taskID),
Name: name,
Version: version,
Release: release,
@ -101,7 +104,7 @@ func main() {
},
}
initResult, err := k.CGInitBuild(nil, build.Name, build.Version, build.Release)
initResult, err := k.CGInitBuild(build.Name, build.Version, build.Release)
if err != nil {
println(err.Error())
return

View file

@ -228,6 +228,7 @@ func RunJob(job worker.Job, store string) (*osbuild.Result, error) {
build := koji.ImageBuild{
BuildID: options.BuildID,
TaskID: options.TaskID,
Name: options.Name,
Version: options.Version,
Release: options.Release,

View file

@ -150,7 +150,7 @@ func (server *Server) PostCompose(w http.ResponseWriter, r *http.Request) {
}
}()
buildInfo, err := k.CGInitBuild(&request.Koji.TaskId, request.Name, request.Version, request.Release)
buildInfo, err := k.CGInitBuild(request.Name, request.Version, request.Release)
if err != nil {
http.Error(w, fmt.Sprintf("Could not initialize build with koji: %v", err), http.StatusBadRequest)
return
@ -159,6 +159,7 @@ func (server *Server) PostCompose(w http.ResponseWriter, r *http.Request) {
id, err := server.workers.Enqueue(ir.manifest, []*target.Target{
target.NewKojiTarget(&target.KojiTargetOptions{
BuildID: uint64(buildInfo.BuildID),
TaskID: uint64(request.Koji.TaskId),
Token: buildInfo.Token,
Name: request.Name,
Version: request.Version,

View file

@ -2,6 +2,7 @@ package target
type KojiTargetOptions struct {
BuildID uint64 `json:"build_id"`
TaskID uint64 `json:"task_id"`
Token string `json:"token"`
Name string `json:"name"`
Version string `json:"version"`

View file

@ -29,6 +29,7 @@ type ImageBuildExtra struct {
type ImageBuild struct {
BuildID uint64 `json:"build_id"`
TaskID uint64 `json:"task_id"`
Name string `json:"name"`
Version string `json:"version"`
Release string `json:"release"`
@ -216,15 +217,13 @@ func (k *Koji) Logout() error {
}
// CGInitBuild reserves a build ID and initializes a build
func (k *Koji) CGInitBuild(taskID *int, name, version, release string) (*CGInitBuildResult, error) {
func (k *Koji) CGInitBuild(name, version, release string) (*CGInitBuildResult, error) {
var buildInfo struct {
TaskID *int `xmlrpc:"task_id,omitempty"`
Name string `xmlrpc:"name"`
Version string `xmlrpc:"version"`
Release string `xmlrpc:"release"`
}
buildInfo.TaskID = taskID
buildInfo.Name = name
buildInfo.Version = version
buildInfo.Release = release

View file

@ -56,7 +56,7 @@ func TestKojiRefund(t *testing.T) {
}
}()
initResult, err := k.CGInitBuild(nil, "name", "verison", "release")
initResult, err := k.CGInitBuild("name", "verison", "release")
require.NoError(t, err)
err = k.CGCancelBuild(initResult.BuildID, initResult.Token)
@ -65,7 +65,7 @@ func TestKojiRefund(t *testing.T) {
err = k.CGCancelBuild(initResult.BuildID, initResult.Token)
require.Error(t, err)
initResult, err = k.CGInitBuild(nil, "name", "verison", "release")
initResult, err = k.CGInitBuild("name", "verison", "release")
require.NoError(t, err)
err = k.CGFailBuild(initResult.BuildID, initResult.Token)
@ -135,6 +135,7 @@ func TestKojiImport(t *testing.T) {
// Import the build
build := koji.ImageBuild{
TaskID: 1,
Name: buildName,
Version: "1",
Release: "1",
@ -178,7 +179,7 @@ func TestKojiImport(t *testing.T) {
},
}
initResult, err := k.CGInitBuild(nil, build.Name, build.Version, build.Release)
initResult, err := k.CGInitBuild(build.Name, build.Version, build.Release)
require.NoError(t, err)
build.BuildID = uint64(initResult.BuildID)