add resource use
This commit is contained in:
@@ -126,7 +126,7 @@ func (b *ArgoBuilder) createArgoTemplates(
|
||||
|
||||
template.CreateContainer(processing, b.Workflow.GetDag())
|
||||
if err := b.RepartiteProcess(*processing, id, template, namespace); err != nil {
|
||||
logger.Error().Msg(fmt.Sprint("Problem to sets up repartition expected %v", err.Error()))
|
||||
logger.Error().Msg(fmt.Sprint("problem to sets up repartition expected %v", err.Error()))
|
||||
return volumes, firstItems, lastItems
|
||||
}
|
||||
// get datacenter from the processing
|
||||
@@ -154,6 +154,17 @@ func (b *ArgoBuilder) RepartiteProcess(processing resources.ProcessingResource,
|
||||
}
|
||||
// Creates an accessor srtictly for Peer Collection
|
||||
for _, related := range computeAttached {
|
||||
instance := related.Node.GetSelectedInstance().(*resources.ComputeResourceInstance)
|
||||
partner := instance.GetSelectedPartnership()
|
||||
if partner == nil {
|
||||
logger.Error().Msg("can't proceed on datacenter because of missing pricing profiles " + related.Node.GetID())
|
||||
continue
|
||||
}
|
||||
garanteed, allowed := b.setResourcesAllowedAndGaranteed(b.Workflow.GetDag(), models.NewBounds(), models.NewBounds(), "gpu", partner)
|
||||
garanteed, allowed = b.setResourcesAllowedAndGaranteed(b.Workflow.GetDag(), garanteed, allowed, "cpu", partner)
|
||||
garanteed.Set(float64(partner.(*resources.ComputeResourcePartnership).MinGaranteedRAMSize), "ram", false)
|
||||
allowed.Set(float64(partner.(*resources.ComputeResourcePartnership).MaxAllowedRAMSize), "ram", false)
|
||||
|
||||
res := oclib.NewRequest(oclib.LibDataEnum(oclib.PEER), "", "", nil, nil).LoadOne(related.Node.GetCreatorID())
|
||||
if res.Err != "" {
|
||||
return errors.New(res.Err)
|
||||
@@ -172,6 +183,37 @@ func (b *ArgoBuilder) RepartiteProcess(processing resources.ProcessingResource,
|
||||
return nil
|
||||
}
|
||||
|
||||
func (b *ArgoBuilder) setResourcesAllowedAndGaranteed(dag *Dag, minbound *models.Bounds, maxbound *models.Bounds, typ string, partner resources.ResourcePartnerITF) (*models.Bounds, *models.Bounds) {
|
||||
selector := ""
|
||||
values := map[string]float64{}
|
||||
if typ == "gpu" {
|
||||
values = partner.(*resources.ComputeResourcePartnership).MinGaranteedGPUsMemoryGB
|
||||
} else {
|
||||
values = partner.(*resources.ComputeResourcePartnership).MinGaranteedCPUsCores
|
||||
}
|
||||
for name, GPU := range values {
|
||||
if minbound.Set(float64(GPU), typ, true) {
|
||||
selector = name
|
||||
}
|
||||
}
|
||||
if selector != "" {
|
||||
for _, t := range dag.Tasks {
|
||||
t.NodeSelector[typ+"-type"] = selector
|
||||
}
|
||||
}
|
||||
if typ == "gpu" {
|
||||
values = partner.(*resources.ComputeResourcePartnership).MaxAllowedGPUsMemoryGB
|
||||
} else {
|
||||
values = partner.(*resources.ComputeResourcePartnership).MaxAllowedCPUsCores
|
||||
}
|
||||
if max, ok := values[selector]; ok {
|
||||
maxbound.Set(float64(max), typ, false)
|
||||
} else {
|
||||
maxbound.GPU = minbound.GPU
|
||||
}
|
||||
return minbound, maxbound
|
||||
}
|
||||
|
||||
// Execute the last actions once the YAML file for the Argo Workflow is created
|
||||
func (b *ArgoBuilder) CompleteBuild(namespace string) (string, error) {
|
||||
logger.Info().Msg("DEV :: Completing build")
|
||||
|
||||
Reference in New Issue
Block a user