github.com/pf-qiu/concourse/v6@v6.7.3-0.20201207032516-1f455d73275f/atc/api/volumeserver/list.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"
     9  	"github.com/pf-qiu/concourse/v6/atc/api/present"
    10  	"github.com/pf-qiu/concourse/v6/atc/db"
    11  )
    12  
    13  func (s *Server) ListVolumes(team db.Team) http.Handler {
    14  	hLog := s.logger.Session("list-volumes")
    15  
    16  	return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
    17  		hLog.Debug("listing")
    18  
    19  		volumes, err := s.repository.GetTeamVolumes(team.ID())
    20  		if err != nil {
    21  			hLog.Error("failed-to-find-volumes", err)
    22  			w.WriteHeader(http.StatusInternalServerError)
    23  			return
    24  		}
    25  
    26  		hLog.Debug("listed", lager.Data{"volume-count": len(volumes)})
    27  
    28  		presentedVolumes := []atc.Volume{}
    29  		for i := 0; i < len(volumes); i++ {
    30  			volume := volumes[i]
    31  			if vol, err := present.Volume(volume); err != nil {
    32  				hLog.Error("failed-to-present-volume", err)
    33  			} else {
    34  				presentedVolumes = append(presentedVolumes, vol)
    35  			}
    36  		}
    37  
    38  		w.Header().Set("Content-Type", "application/json")
    39  		err = json.NewEncoder(w).Encode(presentedVolumes)
    40  		if err != nil {
    41  			hLog.Error("failed-to-encode-volumes", err)
    42  			w.WriteHeader(http.StatusInternalServerError)
    43  		}
    44  	})
    45  }