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  }