in internal/batchscheduler/volcano/volcano.go [136:180]
func (v *VolcanoBatchScheduler) syncPodGroup(
options schedulerinterface.SchedulerOptions,
state *model.DesiredClusterState) (*scheduling.PodGroup, error) {
podGroupName := fmt.Sprintf(podGroupNameFormat, options.ClusterName)
namespace := options.ClusterNamespace
if state.JmStatefulSet == nil && (state.TmStatefulSet == nil && state.TmDeployment == nil) {
// remove the podgroup if the JobManager/TaskManager statefulset are not set
err := v.deletePodGroup(podGroupName, namespace)
if !errors.IsNotFound(err) {
return nil, err
}
return nil, nil
}
resourceList, size := getClusterResourceList(state)
pg, err := v.getPodGroup(podGroupName, namespace)
if err != nil {
if !errors.IsNotFound(err) {
return nil, err
}
pg := scheduling.PodGroup{
ObjectMeta: metav1.ObjectMeta{
Namespace: namespace,
Name: podGroupName,
OwnerReferences: options.OwnerReferences,
},
Spec: scheduling.PodGroupSpec{
MinMember: size,
MinResources: buildMinResource(resourceList),
Queue: options.Queue,
PriorityClassName: options.PriorityClassName,
},
}
return v.createPodGroup(&pg)
}
if pg.Spec.MinMember != size {
pg.Spec.MinMember = size
return v.updatePodGroup(pg)
}
return pg, nil
}