add resource use
This commit is contained in:
@@ -3,6 +3,7 @@ package models
|
||||
import (
|
||||
"encoding/json"
|
||||
"fmt"
|
||||
"strconv"
|
||||
"strings"
|
||||
|
||||
w "cloud.o-forge.io/core/oc-lib/models/workflow"
|
||||
@@ -18,11 +19,60 @@ type Parameter struct {
|
||||
Value string `yaml:"value,omitempty"`
|
||||
}
|
||||
|
||||
type Bounds struct {
|
||||
CPU string `yaml:"cpu,omitempty"`
|
||||
Memory string `yaml:"memory,omitempty"`
|
||||
GPU string `yaml:"nvidia.com/gpu,omitempty"`
|
||||
}
|
||||
|
||||
func NewBounds() *Bounds {
|
||||
return &Bounds{
|
||||
CPU: "0",
|
||||
Memory: "0",
|
||||
GPU: "0",
|
||||
}
|
||||
}
|
||||
|
||||
func (b *Bounds) Set(value float64, what string, isMin bool) bool {
|
||||
i := float64(0)
|
||||
switch what {
|
||||
case "cpu":
|
||||
if newI, err := strconv.ParseFloat(b.CPU, 64); err == nil {
|
||||
i = newI
|
||||
}
|
||||
case "ram":
|
||||
if newI, err := strconv.ParseFloat(b.Memory, 64); err == nil {
|
||||
i = newI
|
||||
}
|
||||
case "gpu":
|
||||
if newI, err := strconv.ParseFloat(b.GPU, 64); err == nil {
|
||||
i = newI
|
||||
}
|
||||
}
|
||||
ok := (value > i && !isMin) || (value < i && isMin)
|
||||
if ok {
|
||||
switch what {
|
||||
case "cpu":
|
||||
b.CPU = fmt.Sprintf("%f", value)
|
||||
return true
|
||||
case "ram":
|
||||
b.Memory = fmt.Sprintf("%fGi", value)
|
||||
return true
|
||||
case "gpu":
|
||||
b.GPU = fmt.Sprintf("%f", value)
|
||||
return true
|
||||
}
|
||||
}
|
||||
return false
|
||||
}
|
||||
|
||||
type Container struct {
|
||||
Image string `yaml:"image"`
|
||||
Command []string `yaml:"command,omitempty,flow"`
|
||||
Args []string `yaml:"args,omitempty,flow"`
|
||||
VolumeMounts []VolumeMount `yaml:"volumeMounts,omitempty"`
|
||||
Requests Bounds `yaml:"requests,omitempty"`
|
||||
Limits Bounds `yaml:"limits,omitempty"`
|
||||
}
|
||||
|
||||
func (c *Container) AddVolumeMount(volumeMount VolumeMount, volumes []VolumeMount) []VolumeMount {
|
||||
@@ -44,9 +94,10 @@ func (c *Container) AddVolumeMount(volumeMount VolumeMount, volumes []VolumeMoun
|
||||
}
|
||||
|
||||
type Task struct {
|
||||
Name string `yaml:"name"`
|
||||
Template string `yaml:"template"`
|
||||
Dependencies []string `yaml:"dependencies,omitempty"`
|
||||
Name string `yaml:"name"`
|
||||
Template string `yaml:"template"`
|
||||
Dependencies []string `yaml:"dependencies,omitempty"`
|
||||
NodeSelector map[string]string `yaml:"nodeSelector,omitempty"`
|
||||
Arguments struct {
|
||||
Parameters []Parameter `yaml:"parameters,omitempty"`
|
||||
} `yaml:"arguments,omitempty"`
|
||||
|
||||
Reference in New Issue
Block a user