compat.go 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. package util
  2. import (
  3. "net"
  4. v1 "k8s.io/api/core/v1"
  5. )
  6. // See https://kubernetes.io/docs/reference/labels-annotations-taints/
  7. func GetZone(labels map[string]string) (string, bool) {
  8. if _, ok := labels[v1.LabelTopologyZone]; ok { // Label as of 1.17
  9. return labels[v1.LabelTopologyZone], true
  10. } else if _, ok := labels[v1.LabelZoneFailureDomain]; ok { // deprecated label
  11. return labels[v1.LabelZoneFailureDomain], true
  12. } else {
  13. return "", false
  14. }
  15. }
  16. func GetRegion(labels map[string]string) (string, bool) {
  17. if _, ok := labels[v1.LabelTopologyRegion]; ok { // Label as of 1.17
  18. return labels[v1.LabelTopologyRegion], true
  19. } else if _, ok := labels[v1.LabelZoneRegion]; ok { // deprecated label
  20. return labels[v1.LabelZoneRegion], true
  21. } else {
  22. return "", false
  23. }
  24. }
  25. func GetInstanceType(labels map[string]string) (string, bool) {
  26. if _, ok := labels[v1.LabelInstanceTypeStable]; ok {
  27. return labels[v1.LabelInstanceTypeStable], true
  28. } else if _, ok := labels[v1.LabelInstanceType]; ok {
  29. return labels[v1.LabelInstanceType], true
  30. } else {
  31. return "", false
  32. }
  33. }
  34. func GetOperatingSystem(labels map[string]string) (string, bool) {
  35. if _, ok := labels[v1.LabelOSStable]; ok {
  36. return labels[v1.LabelOSStable], true
  37. } else if _, ok := labels["beta.kubernetes.io/os"]; ok {
  38. return labels["beta.kubernetes.io/os"], true
  39. } else {
  40. return "", false
  41. }
  42. }
  43. func GetArchType(labels map[string]string) (string, bool) {
  44. if _, ok := labels[v1.LabelArchStable]; ok {
  45. return labels[v1.LabelArchStable], true
  46. } else if _, ok := labels["beta.kubernetes.io/arch"]; ok {
  47. return labels["beta.kubernetes.io/arch"], true
  48. } else {
  49. return "", false
  50. }
  51. }
  52. func PrivateIPCheck(ip string) bool {
  53. ipAddress := net.ParseIP(ip)
  54. return ipAddress.IsPrivate()
  55. }