resource.go 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. package pricing
  2. import (
  3. "fmt"
  4. "strings"
  5. )
  6. type Resource string
  7. const (
  8. ResourceNil Resource = ""
  9. ResourceNode Resource = "node"
  10. ResourceCPU Resource = "cpu"
  11. ResourceRAM Resource = "ram"
  12. ResourceGPU Resource = "gpu"
  13. ResourceStorage Resource = "storage"
  14. ResourceCluster Resource = "cluster"
  15. ResourceService Resource = "service"
  16. ResourceNetworkTraffic Resource = "networktraffic"
  17. )
  18. func ParseResource(str string) (Resource, error) {
  19. switch strings.ToLower(str) {
  20. case string(ResourceNode):
  21. return ResourceNode, nil
  22. case string(ResourceCPU):
  23. return ResourceCPU, nil
  24. case string(ResourceRAM):
  25. return ResourceRAM, nil
  26. case string(ResourceGPU):
  27. return ResourceGPU, nil
  28. case string(ResourceStorage):
  29. return ResourceStorage, nil
  30. case string(ResourceCluster):
  31. return ResourceCluster, nil
  32. case string(ResourceService):
  33. return ResourceService, nil
  34. case string(ResourceNetworkTraffic):
  35. return ResourceNetworkTraffic, nil
  36. default:
  37. return ResourceNil, fmt.Errorf("unknown resource %q", str)
  38. }
  39. }