func startJob(task *jobqueue.Task, agent *lochness.MistifyAgent) error { job := task.Job var err error var jobID string switch job.Action { case "fetch": jobID, err = agent.FetchImage(task.Guest.ID) case "create": jobID, err = agent.CreateGuest(task.Guest.ID) case "delete": jobID, err = agent.DeleteGuest(task.Guest.ID) default: if _, ok := config.ValidActions[job.Action]; !ok { return errors.New("invalid action") } jobID, err = agent.GuestAction(task.Guest.ID, job.Action) } if err != nil { return err } task.Job.RemoteID = jobID _ = updateJobStatus(task, jobqueue.JobStatusWorking, nil) return nil }