k3s/pkg/agent/loadbalancer/utility.go

53 lines
1.1 KiB
Go

package loadbalancer
import (
"errors"
"net/url"
"sort"
"strings"
)
func parseURL(serverURL, newHost string) (string, string, error) {
parsedURL, err := url.Parse(serverURL)
if err != nil {
return "", "", err
}
if parsedURL.Host == "" {
return "", "", errors.New("Initial server URL host is not defined for load balancer")
}
address := parsedURL.Host
if parsedURL.Port() == "" {
if strings.ToLower(parsedURL.Scheme) == "http" {
address += ":80"
}
if strings.ToLower(parsedURL.Scheme) == "https" {
address += ":443"
}
}
parsedURL.Host = newHost
return address, parsedURL.String(), nil
}
// sortServers returns a sorted, unique list of strings, with any
// empty values removed. The returned bool is true if the list
// contains the search string.
func sortServers(input []string, search string) ([]string, bool) {
result := []string{}
found := false
skip := map[string]bool{"": true}
for _, entry := range input {
if skip[entry] {
continue
}
if search == entry {
found = true
}
skip[entry] = true
result = append(result, entry)
}
sort.Strings(result)
return result, found
}