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)
}
}