github.com/jingruilea/kubeedge@v1.2.0-beta.0.0.20200410162146-4bb8902b3879/edge/pkg/edged/server/server.go (about) 1 package server 2 3 import ( 4 "bytes" 5 "encoding/json" 6 "net" 7 "net/http" 8 "strconv" 9 10 "k8s.io/api/core/v1" 11 "k8s.io/klog" 12 13 "github.com/kubeedge/kubeedge/edge/pkg/edged/podmanager" 14 ) 15 16 //constants to define server address 17 const ( 18 ServerAddr = "127.0.0.1" 19 ServerPort = 10255 20 ) 21 22 //Server is object to define server 23 type Server struct { 24 podManager podmanager.Manager 25 } 26 27 //NewServer creates and returns a new server object 28 func NewServer(podManager podmanager.Manager) *Server { 29 return &Server{ 30 podManager: podManager, 31 } 32 } 33 34 func (s *Server) getPodsHandler(w http.ResponseWriter, r *http.Request) { 35 var podList v1.PodList 36 pods := s.podManager.GetPods() 37 for _, pod := range pods { 38 podList.Items = append(podList.Items, *pod) 39 } 40 rspBodyBytes := new(bytes.Buffer) 41 json.NewEncoder(rspBodyBytes).Encode(podList) 42 w.Write(rspBodyBytes.Bytes()) 43 } 44 45 // ListenAndServe starts a HTTP server and sets up a listener on the given host/port 46 func (s *Server) ListenAndServe() { 47 klog.Infof("starting to listen on %s:%d", ServerAddr, ServerPort) 48 mux := http.NewServeMux() 49 mux.HandleFunc("/pods", s.getPodsHandler) 50 err := http.ListenAndServe(net.JoinHostPort(ServerAddr, strconv.FormatUint(uint64(ServerPort), 10)), mux) 51 if err != nil { 52 klog.Fatalf("run server: %v", err) 53 } 54 }