123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778 |
- package podresources
- import (
- "context"
- "k8s.io/api/core/v1"
- "k8s.io/kubernetes/pkg/kubelet/apis/podresources/v1alpha1"
- )
- type DevicesProvider interface {
- GetDevices(podUID, containerName string) []*v1alpha1.ContainerDevices
- UpdateAllocatedDevices()
- }
- type PodsProvider interface {
- GetPods() []*v1.Pod
- }
- type podResourcesServer struct {
- podsProvider PodsProvider
- devicesProvider DevicesProvider
- }
- func NewPodResourcesServer(podsProvider PodsProvider, devicesProvider DevicesProvider) v1alpha1.PodResourcesListerServer {
- return &podResourcesServer{
- podsProvider: podsProvider,
- devicesProvider: devicesProvider,
- }
- }
- func (p *podResourcesServer) List(ctx context.Context, req *v1alpha1.ListPodResourcesRequest) (*v1alpha1.ListPodResourcesResponse, error) {
- pods := p.podsProvider.GetPods()
- podResources := make([]*v1alpha1.PodResources, len(pods))
- p.devicesProvider.UpdateAllocatedDevices()
- for i, pod := range pods {
- pRes := v1alpha1.PodResources{
- Name: pod.Name,
- Namespace: pod.Namespace,
- Containers: make([]*v1alpha1.ContainerResources, len(pod.Spec.Containers)),
- }
- for j, container := range pod.Spec.Containers {
- pRes.Containers[j] = &v1alpha1.ContainerResources{
- Name: container.Name,
- Devices: p.devicesProvider.GetDevices(string(pod.UID), container.Name),
- }
- }
- podResources[i] = &pRes
- }
- return &v1alpha1.ListPodResourcesResponse{
- PodResources: podResources,
- }, nil
- }
|