func WorkloadListForKind()

in internal/workload/workload.go [91:142]


func WorkloadListForKind(kind string) (WorkloadList, error) {
	switch kind {
	case "Deployment":
		return &realWorkloadList[*appsv1.DeploymentList, *appsv1.Deployment]{
			objectList:    &appsv1.DeploymentList{},
			itemsAccessor: func(list *appsv1.DeploymentList) []*appsv1.Deployment { return ptrSlice[appsv1.Deployment](list.Items) },
			wlCreator:     func(v *appsv1.Deployment) Workload { return &DeploymentWorkload{Deployment: v} },
		}, nil
	case "Pod":
		return &realWorkloadList[*corev1.PodList, *corev1.Pod]{
			objectList:    &corev1.PodList{},
			itemsAccessor: func(list *corev1.PodList) []*corev1.Pod { return ptrSlice[corev1.Pod](list.Items) },
			wlCreator:     func(v *corev1.Pod) Workload { return &PodWorkload{Pod: v} },
		}, nil
	case "StatefulSet":
		return &realWorkloadList[*appsv1.StatefulSetList, *appsv1.StatefulSet]{
			objectList: &appsv1.StatefulSetList{},
			itemsAccessor: func(list *appsv1.StatefulSetList) []*appsv1.StatefulSet {
				return ptrSlice[appsv1.StatefulSet](list.Items)
			},
			wlCreator: func(v *appsv1.StatefulSet) Workload { return &StatefulSetWorkload{StatefulSet: v} },
		}, nil
	case "ReplicaSet":
		return &realWorkloadList[*appsv1.ReplicaSetList, *appsv1.ReplicaSet]{
			objectList: &appsv1.ReplicaSetList{},
			itemsAccessor: func(list *appsv1.ReplicaSetList) []*appsv1.ReplicaSet {
				return ptrSlice[appsv1.ReplicaSet](list.Items)
			},
			wlCreator: func(v *appsv1.ReplicaSet) Workload { return &ReplicaSetWorkload{ReplicaSet: v} },
		}, nil
	case "Job":
		return &realWorkloadList[*batchv1.JobList, *batchv1.Job]{
			objectList:    &batchv1.JobList{},
			itemsAccessor: func(list *batchv1.JobList) []*batchv1.Job { return ptrSlice[batchv1.Job](list.Items) },
			wlCreator:     func(v *batchv1.Job) Workload { return &JobWorkload{Job: v} },
		}, nil
	case "CronJob":
		return &realWorkloadList[*batchv1.CronJobList, *batchv1.CronJob]{
			objectList:    &batchv1.CronJobList{},
			itemsAccessor: func(list *batchv1.CronJobList) []*batchv1.CronJob { return ptrSlice[batchv1.CronJob](list.Items) },
			wlCreator:     func(v *batchv1.CronJob) Workload { return &CronJobWorkload{CronJob: v} },
		}, nil
	case "DaemonSet":
		return &realWorkloadList[*appsv1.DaemonSetList, *appsv1.DaemonSet]{
			objectList:    &appsv1.DaemonSetList{},
			itemsAccessor: func(list *appsv1.DaemonSetList) []*appsv1.DaemonSet { return ptrSlice[appsv1.DaemonSet](list.Items) },
			wlCreator:     func(v *appsv1.DaemonSet) Workload { return &DaemonSetWorkload{DaemonSet: v} },
		}, nil
	default:
		return nil, fmt.Errorf("unknown kind for pod workloadSelector: %s", kind)
	}
}