func()

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
}