Skip to content

Commit

Permalink
Update TaskGroup to delegate to task.Manager; task.Manager methods ac…
Browse files Browse the repository at this point in the history
…cept db param.

Signed-off-by: Jeff Ortel <jortel@redhat.com>
  • Loading branch information
jortel committed May 30, 2024
1 parent db3ade7 commit dbe1d66
Show file tree
Hide file tree
Showing 3 changed files with 73 additions and 49 deletions.
12 changes: 8 additions & 4 deletions api/task.go
Original file line number Diff line number Diff line change
Expand Up @@ -159,8 +159,9 @@ func (h TaskHandler) Create(ctx *gin.Context) {
task := &tasking.Task{}
task.With(r.Model())
task.CreateUser = h.BaseHandler.CurrentUser(ctx)
db := h.DB(ctx)
rtx := WithContext(ctx)
created, err := rtx.TaskManager.Create(task)
created, err := rtx.TaskManager.Create(db, task)
if err != nil {
_ = ctx.Error(err)
return
Expand All @@ -180,8 +181,9 @@ func (h TaskHandler) Create(ctx *gin.Context) {
// @param id path int true "Task ID"
func (h TaskHandler) Delete(ctx *gin.Context) {
id := h.pk(ctx)
db := h.DB(ctx)
rtx := WithContext(ctx)
err := rtx.TaskManager.Delete(id)
err := rtx.TaskManager.Delete(db, id)
if err != nil {
_ = ctx.Error(err)
return
Expand All @@ -207,11 +209,12 @@ func (h TaskHandler) Update(ctx *gin.Context) {
return
}
r.ID = id
db := h.DB(ctx)
rtx := WithContext(ctx)
task := &tasking.Task{}
task.With(r.Model())
task.UpdateUser = h.BaseHandler.CurrentUser(ctx)
err = rtx.TaskManager.Update(task)
err = rtx.TaskManager.Update(db, task)
if err != nil {
_ = ctx.Error(err)
return
Expand Down Expand Up @@ -266,8 +269,9 @@ func (h TaskHandler) Submit(ctx *gin.Context) {
// @param id path int true "Task ID"
func (h TaskHandler) Cancel(ctx *gin.Context) {
id := h.pk(ctx)
db := h.DB(ctx)
rtx := WithContext(ctx)
err := rtx.TaskManager.Cancel(id)
err := rtx.TaskManager.Cancel(db, id)
if err != nil {
_ = ctx.Error(err)
return
Expand Down
88 changes: 54 additions & 34 deletions api/taskgroup.go
Original file line number Diff line number Diff line change
Expand Up @@ -118,18 +118,39 @@ func (h TaskGroupHandler) Create(ctx *gin.Context) {
return
}
db := h.DB(ctx)
db = db.Omit(clause.Associations)
m := r.Model()
m.CreateUser = h.BaseHandler.CurrentUser(ctx)
switch r.State {
case "":
m.State = tasking.Created
fallthrough
case tasking.Created:
db = h.DB(ctx).Omit(clause.Associations)
result := db.Create(&m)
if result.Error != nil {
_ = ctx.Error(result.Error)
return
}
case tasking.Ready:
err := m.Propagate()
if err != nil {
return
}
result := db.Create(&m)
if result.Error != nil {
_ = ctx.Error(result.Error)
return
}
rtx := WithContext(ctx)
for i := range m.Tasks {
task := &tasking.Task{}
task.With(&m.Tasks[i])
task, err = rtx.TaskManager.Create(h.DB(ctx), task)
if err != nil {
_ = ctx.Error(err)
return
}
}
default:
h.Respond(ctx,
http.StatusBadRequest,
Expand All @@ -138,12 +159,6 @@ func (h TaskGroupHandler) Create(ctx *gin.Context) {
})
return
}
m.CreateUser = h.BaseHandler.CurrentUser(ctx)
result := db.Create(&m)
if result.Error != nil {
_ = ctx.Error(result.Error)
return
}

r.With(m)

Expand Down Expand Up @@ -177,20 +192,41 @@ func (h TaskGroupHandler) Update(ctx *gin.Context) {
_ = ctx.Error(err)
return
}
db := h.DB(ctx)
db = db.Omit(
clause.Associations,
"BucketID",
"Bucket")
m := updated.Model()
m.ID = current.ID
m.ID = id
m.UpdateUser = h.BaseHandler.CurrentUser(ctx)
db := h.DB(ctx).Model(m)

omit := []string{"BucketID", "Bucket"}
switch updated.State {
case "", tasking.Created:
omit = append(omit, clause.Associations)
err = db.Save(m).Error
if err != nil {
_ = ctx.Error(err)
return
}
case tasking.Ready:
err := m.Propagate()
if err != nil {
return
}
err = db.Save(m).Error
if err != nil {
_ = ctx.Error(err)
return
}
rtx := WithContext(ctx)
for i := range m.Tasks {
task := &tasking.Task{}
task.With(&m.Tasks[i])
err = rtx.TaskManager.Update(h.DB(ctx), task)
if err != nil {
_ = ctx.Error(err)
return
}
}
default:
h.Respond(ctx,
http.StatusBadRequest,
Expand All @@ -199,13 +235,6 @@ func (h TaskGroupHandler) Update(ctx *gin.Context) {
})
return
}
db = db.Omit(omit...)
db = db.Where("state IN ?", []string{"", tasking.Created})
err = db.Save(m).Error
if err != nil {
_ = ctx.Error(err)
return
}

h.Status(ctx, http.StatusNoContent)
}
Expand All @@ -220,31 +249,22 @@ func (h TaskGroupHandler) Update(ctx *gin.Context) {
func (h TaskGroupHandler) Delete(ctx *gin.Context) {
m := &model.TaskGroup{}
id := h.pk(ctx)
db := h.DB(ctx).Preload(clause.Associations)
db := h.DB(ctx)
db = db.Omit(clause.Associations)
err := db.First(m, id).Error
if err != nil {
_ = ctx.Error(err)
return
}
for _, task := range m.Tasks {
if task.Pod != "" {
rt := tasking.Task{Task: &task}
err := rt.Delete(h.Client(ctx))
if err != nil {
if !k8serr.IsNotFound(err) {
_ = ctx.Error(err)
return
}
}
}
db := h.DB(ctx).Select(clause.Associations)
err = db.Delete(task).Error
rtx := WithContext(ctx)
for i := range m.Tasks {
task := &m.Tasks[i]
err = rtx.TaskManager.Delete(h.DB(ctx), task.ID)
if err != nil {
_ = ctx.Error(err)
return
}
}
db = h.DB(ctx).Select(clause.Associations)
err = db.Delete(m).Error
if err != nil {
_ = ctx.Error(err)
Expand Down
22 changes: 11 additions & 11 deletions task/manager.go
Original file line number Diff line number Diff line change
Expand Up @@ -129,7 +129,7 @@ func (m *Manager) Run(ctx context.Context) {
}

// Create a task.
func (m *Manager) Create(requested *Task) (task *Task, err error) {
func (m *Manager) Create(db *gorm.DB, requested *Task) (task *Task, err error) {
task = &Task{&model.Task{}}
switch requested.State {
case "":
Expand All @@ -155,7 +155,7 @@ func (m *Manager) Create(requested *Task) (task *Task, err error) {
}
return
}
err = m.DB.Create(task).Error
err = db.Create(task).Error
if err != nil {
err = liberr.Wrap(err)
return
Expand All @@ -164,10 +164,10 @@ func (m *Manager) Create(requested *Task) (task *Task, err error) {
}

// Update update task.
func (m *Manager) Update(requested *Task) (err error) {
func (m *Manager) Update(db *gorm.DB, requested *Task) (err error) {
err = m.action(func() (err error) {
task := &Task{}
err = m.DB.First(task, requested.ID).Error
err = db.First(task, requested.ID).Error
if err != nil {
return
}
Expand Down Expand Up @@ -204,7 +204,7 @@ func (m *Manager) Update(requested *Task) (err error) {
}
return
}
err = m.DB.Save(task).Error
err = db.Save(task).Error
if err != nil {
err = liberr.Wrap(err)
return
Expand All @@ -215,29 +215,29 @@ func (m *Manager) Update(requested *Task) (err error) {
}

// Delete a task.
func (m *Manager) Delete(id uint) (err error) {
func (m *Manager) Delete(db *gorm.DB, id uint) (err error) {
err = m.action(func() (err error) {
task := &Task{}
err = m.DB.First(task, id).Error
err = db.First(task, id).Error
if err != nil {
return
}
err = task.Delete(m.Client)
if err != nil {
return
}
err = m.DB.Delete(task).Error
err = db.Delete(task).Error
return
})
return
}

// Cancel a task.
func (m *Manager) Cancel(id uint) (err error) {
func (m *Manager) Cancel(db *gorm.DB, id uint) (err error) {
err = m.action(
func() (err error) {
task := &Task{}
err = m.DB.First(task, id).Error
err = db.First(task, id).Error
if err != nil {
return
}
Expand All @@ -262,7 +262,7 @@ func (m *Manager) Cancel(id uint) (err error) {
if err != nil {
return
}
err = m.DB.Save(task).Error
err = db.Save(task).Error
if err != nil {
err = liberr.Wrap(err)
return
Expand Down

0 comments on commit dbe1d66

Please sign in to comment.