github.com/pf-qiu/concourse/v6@v6.7.3-0.20201207032516-1f455d73275f/atc/api/volumeserver/destroying.go (about) 1 package volumeserver 2 3 import ( 4 "encoding/json" 5 "net/http" 6 7 "code.cloudfoundry.org/lager" 8 "github.com/pf-qiu/concourse/v6/atc/metric" 9 ) 10 11 func (s *Server) ListDestroyingVolumes(w http.ResponseWriter, r *http.Request) { 12 workerName := r.URL.Query().Get("worker_name") 13 14 logger := s.logger.Session("list-destroying-volumes", lager.Data{"worker": workerName}) 15 16 if workerName == "" { 17 logger.Info("no-worker-specified") 18 w.WriteHeader(http.StatusBadRequest) 19 return 20 } 21 22 volumeHandles, err := s.destroyer.FindDestroyingVolumesForGc(workerName) 23 if err != nil { 24 logger.Error("failed-to-find-destroying-volumes", err) 25 w.WriteHeader(http.StatusInternalServerError) 26 return 27 } 28 29 logger.Debug("volumes-to-destroy", lager.Data{"count": len(volumeHandles)}) 30 31 metric.VolumesToBeGarbageCollected{ 32 Volumes: len(volumeHandles), 33 }.Emit(logger) 34 35 w.Header().Set("Content-Type", "application/json") 36 err = json.NewEncoder(w).Encode(volumeHandles) 37 if err != nil { 38 logger.Error("failed-to-encode-volumes", err) 39 w.WriteHeader(http.StatusInternalServerError) 40 } 41 }