compat.go 1.6 KB

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