github.com/cloud-foundations/dominator@v0.0.0-20221004181915-6e4fee580046/dom/herd/listSubs.go (about)

     1  package herd
     2  
     3  import (
     4  	"bufio"
     5  	"fmt"
     6  	"net/http"
     7  
     8  	"github.com/Cloud-Foundations/Dominator/lib/json"
     9  	"github.com/Cloud-Foundations/Dominator/lib/url"
    10  )
    11  
    12  func (herd *Herd) listReachableSubsHandler(w http.ResponseWriter,
    13  	req *http.Request) {
    14  	writer := bufio.NewWriter(w)
    15  	defer writer.Flush()
    16  	parsedQuery := url.ParseQuery(req.URL)
    17  	selector, err := herd.getReachableSelector(parsedQuery)
    18  	if err != nil {
    19  		fmt.Fprintln(writer, err)
    20  		return
    21  	}
    22  	subs := herd.getSelectedSubs(selector)
    23  	switch parsedQuery.OutputType() {
    24  	case url.OutputTypeText:
    25  	case url.OutputTypeHtml:
    26  		for _, sub := range subs {
    27  			fmt.Fprintln(writer, sub.mdb.Hostname)
    28  		}
    29  	case url.OutputTypeJson:
    30  		subNames := make([]string, 0, len(subs))
    31  		for _, sub := range subs {
    32  			subNames = append(subNames, sub.mdb.Hostname)
    33  		}
    34  		json.WriteWithIndent(writer, "  ", subNames)
    35  		fmt.Fprintln(writer)
    36  	}
    37  }
    38  
    39  func (herd *Herd) listSubsHandler(w http.ResponseWriter, req *http.Request) {
    40  	writer := bufio.NewWriter(w)
    41  	defer writer.Flush()
    42  	herd.RLock()
    43  	subNames := make([]string, 0, len(herd.subsByIndex))
    44  	for _, sub := range herd.subsByIndex {
    45  		subNames = append(subNames, sub.mdb.Hostname)
    46  	}
    47  	herd.RUnlock()
    48  	parsedQuery := url.ParseQuery(req.URL)
    49  	switch parsedQuery.OutputType() {
    50  	case url.OutputTypeText:
    51  	case url.OutputTypeHtml:
    52  		for _, name := range subNames {
    53  			fmt.Fprintln(writer, name)
    54  		}
    55  	case url.OutputTypeJson:
    56  		json.WriteWithIndent(writer, "  ", subNames)
    57  		fmt.Fprintln(writer)
    58  	}
    59  }