diff --git a/api/application.go b/api/application.go index ca2abf65d..b2f1fd571 100644 --- a/api/application.go +++ b/api/application.go @@ -1079,12 +1079,18 @@ func (h ApplicationHandler) discover(ctx *gin.Context, application *model.Applic rtx := WithContext(ctx) db := h.DB(ctx) for _, kind := range Settings.Hub.Discovery.Tasks { - t := model.Task{} - task := tasking.Task{Task: &t} - task.Kind = kind - task.Name = fmt.Sprintf("%s-%s", application.Name, kind) - task.ApplicationID = &application.ID - task.State = tasking.Ready + t := Task{} + t.Kind = kind + t.Name = fmt.Sprintf("%s-%s", application.Name, kind) + ref := Ref{ID: application.ID} + t.Application = &ref + t.State = tasking.Ready + taskHandler := TaskHandler{} + err = taskHandler.FindRefs(rtx.Client, &t) + if err != nil { + return + } + task := tasking.Task{Task: t.Model()} err = rtx.TaskManager.Create(db, &task) if err != nil { return diff --git a/api/task.go b/api/task.go index dc60ac87c..4c0d53b2d 100644 --- a/api/task.go +++ b/api/task.go @@ -292,7 +292,8 @@ func (h TaskHandler) Create(ctx *gin.Context) { _ = ctx.Error(err) return } - err = h.findRefs(ctx, r) + rtx := WithContext(ctx) + err = h.FindRefs(rtx.Client, r) if err != nil { _ = ctx.Error(err) return @@ -300,7 +301,6 @@ func (h TaskHandler) Create(ctx *gin.Context) { task := &tasking.Task{} task.With(r.Model()) task.CreateUser = h.BaseHandler.CurrentUser(ctx) - rtx := WithContext(ctx) err = rtx.TaskManager.Create(h.DB(ctx), task) if err != nil { _ = ctx.Error(err) @@ -617,14 +617,13 @@ func (h TaskHandler) GetAttached(ctx *gin.Context) { } } -// findRefs find referenced resources. +// FindRefs find referenced resources. // - addon // - extensions // - kind // - priority // The priority is defaulted to the kind as needed. -func (h *TaskHandler) findRefs(ctx *gin.Context, r *Task) (err error) { - client := h.Client(ctx) +func (h *TaskHandler) FindRefs(client k8sclient.Client, r *Task) (err error) { if r.Addon != "" { addon := &crd.Addon{} name := r.Addon diff --git a/cmd/main.go b/cmd/main.go index e116e38f5..0c3d3559a 100644 --- a/cmd/main.go +++ b/cmd/main.go @@ -176,8 +176,9 @@ func main() { // // Application import. importManager := importer.Manager{ - DB: db, - Tasking: &taskManager, + DB: db, + TaskManager: &taskManager, + Client: client, } importManager.Run(context.Background()) // diff --git a/importer/manager.go b/importer/manager.go index 975ba2529..e8856751e 100644 --- a/importer/manager.go +++ b/importer/manager.go @@ -15,6 +15,7 @@ import ( "github.com/konveyor/tackle2-hub/settings" tasking "github.com/konveyor/tackle2-hub/task" "gorm.io/gorm" + k8sclient "sigs.k8s.io/controller-runtime/pkg/client" ) var ( @@ -24,8 +25,9 @@ var ( // Manager for processing application imports. type Manager struct { // DB - DB *gorm.DB - Tasking *tasking.Manager + DB *gorm.DB + TaskManager *tasking.Manager + Client k8sclient.Client } // Run the manager. @@ -354,13 +356,19 @@ func (m *Manager) createApplication(imp *model.Import) (ok bool) { func (m *Manager) discover(application *model.Application) (err error) { for _, kind := range Settings.Hub.Discovery.Tasks { - t := model.Task{} - task := tasking.Task{Task: &t} - task.Kind = kind - task.Name = fmt.Sprintf("%s-%s", application.Name, kind) - task.ApplicationID = &application.ID - task.State = tasking.Ready - err = m.Tasking.Create(m.DB, &task) + t := api.Task{} + t.Kind = kind + t.Name = fmt.Sprintf("%s-%s", application.Name, kind) + ref := api.Ref{ID: application.ID} + t.Application = &ref + t.State = tasking.Ready + taskHandler := api.TaskHandler{} + err = taskHandler.FindRefs(m.Client, &t) + if err != nil { + return + } + task := tasking.Task{Task: t.Model()} + err = m.TaskManager.Create(m.DB, &task) if err != nil { return }