github.com/pf-qiu/concourse/v6@v6.7.3-0.20201207032516-1f455d73275f/atc/api/jobserver/schedule_job.go (about)

     1  package jobserver
     2  
     3  import (
     4  	"net/http"
     5  
     6  	"github.com/pf-qiu/concourse/v6/atc/db"
     7  	"github.com/tedsuo/rata"
     8  )
     9  
    10  func (s *Server) ScheduleJob(pipeline db.Pipeline) http.Handler {
    11  	return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
    12  		logger := s.logger.Session("schedule-job")
    13  		jobName := rata.Param(r, "job_name")
    14  
    15  		job, found, err := pipeline.Job(jobName)
    16  		if err != nil {
    17  			logger.Error("failed-to-get-job", err)
    18  			w.WriteHeader(http.StatusInternalServerError)
    19  			return
    20  		}
    21  
    22  		if !found {
    23  			w.WriteHeader(http.StatusNotFound)
    24  			return
    25  		}
    26  
    27  		err = job.RequestSchedule()
    28  		if err != nil {
    29  			logger.Error("failed-to-schedule-job", err)
    30  			w.WriteHeader(http.StatusInternalServerError)
    31  			return
    32  		}
    33  
    34  		w.WriteHeader(http.StatusOK)
    35  	})
    36  }