targetparser.go 753 B

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. package kube
  2. import (
  3. "fmt"
  4. "strconv"
  5. "strings"
  6. "google.golang.org/grpc/resolver"
  7. )
  8. const (
  9. colon = ":"
  10. defaultNamespace = "default"
  11. )
  12. var emptyService Service
  13. type Service struct {
  14. Namespace string
  15. Name string
  16. Port int
  17. }
  18. func ParseTarget(target resolver.Target) (Service, error) {
  19. var service Service
  20. service.Namespace = target.Authority
  21. if len(service.Namespace) == 0 {
  22. service.Namespace = defaultNamespace
  23. }
  24. segs := strings.SplitN(target.Endpoint, colon, 2)
  25. if len(segs) < 2 {
  26. return emptyService, fmt.Errorf("bad endpoint: %s", target.Endpoint)
  27. }
  28. service.Name = segs[0]
  29. port, err := strconv.Atoi(segs[1])
  30. if err != nil {
  31. return emptyService, err
  32. }
  33. service.Port = port
  34. return service, nil
  35. }