resource.go 974 B

12345678910111213141516171819202122232425262728293031323334
  1. package kubemodel
  2. // @bingen:generate:Resource
  3. type Resource string
  4. const (
  5. ResourceCPU Resource = "cpu"
  6. ResourceMemory Resource = "memory"
  7. ResourceNvidia Resource = "nvidia.com/gpu"
  8. ResourceNvidiaShared Resource = "nvidia.com/gpu.shared"
  9. ResourceAWSVGPU Resource = "k8s.amazonaws.com/vgpu"
  10. )
  11. // @bingen:generate:ResourceQuantity
  12. type ResourceQuantity struct {
  13. Resource Resource `json:"resource"` // @bingen:field[version=1]
  14. Unit Unit `json:"unit"` // @bingen:field[version=1]
  15. Values Stats `json:"values"` // @bingen:field[version=1]
  16. }
  17. // @bingen:generate:ResourceQuantities
  18. type ResourceQuantities map[Resource]ResourceQuantity
  19. func (rqs ResourceQuantities) Set(resource Resource, unit Unit, statType StatType, value float64) {
  20. if _, ok := rqs[resource]; !ok {
  21. rqs[resource] = ResourceQuantity{
  22. Resource: resource,
  23. Unit: unit,
  24. Values: NewStats(),
  25. }
  26. }
  27. rqs[resource].Values[statType] = value
  28. }