mirror of
				https://github.com/optim-enterprises-bv/kubernetes.git
				synced 2025-11-03 03:38:15 +00:00 
			
		
		
		
	kubelet: podresources: pack parameters in a struct
To enable rate limiting, needed for GA graduation, we need to pass more parameters to the already crowded `ListenAndServePodresources` function. To tidy up a bit, pack the parameters in a helper struct, with no intended changes in behavior. Signed-off-by: Francesco Romani <fromani@redhat.com>
This commit is contained in:
		
				
					committed by
					
						
						Moshe Levi
					
				
			
			
				
	
			
			
			
						parent
						
							e660a1702b
						
					
				
				
					commit
					5e03998991
				
			@@ -27,7 +27,7 @@ import (
 | 
				
			|||||||
	"k8s.io/kubelet/pkg/apis/podresources/v1"
 | 
						"k8s.io/kubelet/pkg/apis/podresources/v1"
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// podResourcesServerV1alpha1 implements PodResourcesListerServer
 | 
					// v1PodResourcesServer implements PodResourcesListerServer
 | 
				
			||||||
type v1PodResourcesServer struct {
 | 
					type v1PodResourcesServer struct {
 | 
				
			||||||
	podsProvider    PodsProvider
 | 
						podsProvider    PodsProvider
 | 
				
			||||||
	devicesProvider DevicesProvider
 | 
						devicesProvider DevicesProvider
 | 
				
			||||||
@@ -37,12 +37,12 @@ type v1PodResourcesServer struct {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
// NewV1PodResourcesServer returns a PodResourcesListerServer which lists pods provided by the PodsProvider
 | 
					// NewV1PodResourcesServer returns a PodResourcesListerServer which lists pods provided by the PodsProvider
 | 
				
			||||||
// with device information provided by the DevicesProvider
 | 
					// with device information provided by the DevicesProvider
 | 
				
			||||||
func NewV1PodResourcesServer(podsProvider PodsProvider, devicesProvider DevicesProvider, cpusProvider CPUsProvider, memoryProvider MemoryProvider) v1.PodResourcesListerServer {
 | 
					func NewV1PodResourcesServer(providers PodResourcesProviders) v1.PodResourcesListerServer {
 | 
				
			||||||
	return &v1PodResourcesServer{
 | 
						return &v1PodResourcesServer{
 | 
				
			||||||
		podsProvider:    podsProvider,
 | 
							podsProvider:    providers.Pods,
 | 
				
			||||||
		devicesProvider: devicesProvider,
 | 
							devicesProvider: providers.Devices,
 | 
				
			||||||
		cpusProvider:    cpusProvider,
 | 
							cpusProvider:    providers.Cpus,
 | 
				
			||||||
		memoryProvider:  memoryProvider,
 | 
							memoryProvider:  providers.Memory,
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -172,7 +172,13 @@ func TestListPodResourcesV1(t *testing.T) {
 | 
				
			|||||||
			mockDevicesProvider.EXPECT().GetAllocatableDevices().Return([]*podresourcesapi.ContainerDevices{}).AnyTimes()
 | 
								mockDevicesProvider.EXPECT().GetAllocatableDevices().Return([]*podresourcesapi.ContainerDevices{}).AnyTimes()
 | 
				
			||||||
			mockMemoryProvider.EXPECT().GetAllocatableMemory().Return([]*podresourcesapi.ContainerMemory{}).AnyTimes()
 | 
								mockMemoryProvider.EXPECT().GetAllocatableMemory().Return([]*podresourcesapi.ContainerMemory{}).AnyTimes()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
			server := NewV1PodResourcesServer(mockPodsProvider, mockDevicesProvider, mockCPUsProvider, mockMemoryProvider)
 | 
								providers := PodResourcesProviders{
 | 
				
			||||||
 | 
									Pods:    mockPodsProvider,
 | 
				
			||||||
 | 
									Devices: mockDevicesProvider,
 | 
				
			||||||
 | 
									Cpus:    mockCPUsProvider,
 | 
				
			||||||
 | 
									Memory:  mockMemoryProvider,
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
								server := NewV1PodResourcesServer(providers)
 | 
				
			||||||
			resp, err := server.List(context.TODO(), &podresourcesapi.ListPodResourcesRequest{})
 | 
								resp, err := server.List(context.TODO(), &podresourcesapi.ListPodResourcesRequest{})
 | 
				
			||||||
			if err != nil {
 | 
								if err != nil {
 | 
				
			||||||
				t.Errorf("want err = %v, got %q", nil, err)
 | 
									t.Errorf("want err = %v, got %q", nil, err)
 | 
				
			||||||
@@ -459,7 +465,13 @@ func TestAllocatableResources(t *testing.T) {
 | 
				
			|||||||
			mockCPUsProvider.EXPECT().GetAllocatableCPUs().Return(tc.allCPUs).AnyTimes()
 | 
								mockCPUsProvider.EXPECT().GetAllocatableCPUs().Return(tc.allCPUs).AnyTimes()
 | 
				
			||||||
			mockMemoryProvider.EXPECT().GetAllocatableMemory().Return(tc.allMemory).AnyTimes()
 | 
								mockMemoryProvider.EXPECT().GetAllocatableMemory().Return(tc.allMemory).AnyTimes()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
			server := NewV1PodResourcesServer(mockPodsProvider, mockDevicesProvider, mockCPUsProvider, mockMemoryProvider)
 | 
								providers := PodResourcesProviders{
 | 
				
			||||||
 | 
									Pods:    mockPodsProvider,
 | 
				
			||||||
 | 
									Devices: mockDevicesProvider,
 | 
				
			||||||
 | 
									Cpus:    mockCPUsProvider,
 | 
				
			||||||
 | 
									Memory:  mockMemoryProvider,
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
								server := NewV1PodResourcesServer(providers)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
			resp, err := server.GetAllocatableResources(context.TODO(), &podresourcesapi.AllocatableResourcesRequest{})
 | 
								resp, err := server.GetAllocatableResources(context.TODO(), &podresourcesapi.AllocatableResourcesRequest{})
 | 
				
			||||||
			if err != nil {
 | 
								if err != nil {
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -25,7 +25,7 @@ import (
 | 
				
			|||||||
	"k8s.io/kubelet/pkg/apis/podresources/v1alpha1"
 | 
						"k8s.io/kubelet/pkg/apis/podresources/v1alpha1"
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// podResourcesServerV1alpha1 implements PodResourcesListerServer
 | 
					// v1alpha1PodResourcesServer implements PodResourcesListerServer
 | 
				
			||||||
type v1alpha1PodResourcesServer struct {
 | 
					type v1alpha1PodResourcesServer struct {
 | 
				
			||||||
	podsProvider    PodsProvider
 | 
						podsProvider    PodsProvider
 | 
				
			||||||
	devicesProvider DevicesProvider
 | 
						devicesProvider DevicesProvider
 | 
				
			||||||
@@ -33,10 +33,10 @@ type v1alpha1PodResourcesServer struct {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
// NewV1alpha1PodResourcesServer returns a PodResourcesListerServer which lists pods provided by the PodsProvider
 | 
					// NewV1alpha1PodResourcesServer returns a PodResourcesListerServer which lists pods provided by the PodsProvider
 | 
				
			||||||
// with device information provided by the DevicesProvider
 | 
					// with device information provided by the DevicesProvider
 | 
				
			||||||
func NewV1alpha1PodResourcesServer(podsProvider PodsProvider, devicesProvider DevicesProvider) v1alpha1.PodResourcesListerServer {
 | 
					func NewV1alpha1PodResourcesServer(providers PodResourcesProviders) v1alpha1.PodResourcesListerServer {
 | 
				
			||||||
	return &v1alpha1PodResourcesServer{
 | 
						return &v1alpha1PodResourcesServer{
 | 
				
			||||||
		podsProvider:    podsProvider,
 | 
							podsProvider:    providers.Pods,
 | 
				
			||||||
		devicesProvider: devicesProvider,
 | 
							devicesProvider: providers.Devices,
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -134,7 +134,12 @@ func TestListPodResourcesV1alpha1(t *testing.T) {
 | 
				
			|||||||
			mockDevicesProvider.EXPECT().GetDevices(string(podUID), containerName).Return(tc.devices).AnyTimes()
 | 
								mockDevicesProvider.EXPECT().GetDevices(string(podUID), containerName).Return(tc.devices).AnyTimes()
 | 
				
			||||||
			mockDevicesProvider.EXPECT().UpdateAllocatedDevices().Return().AnyTimes()
 | 
								mockDevicesProvider.EXPECT().UpdateAllocatedDevices().Return().AnyTimes()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
			server := NewV1alpha1PodResourcesServer(mockPodsProvider, mockDevicesProvider)
 | 
					
 | 
				
			||||||
 | 
								providers := PodResourcesProviders{
 | 
				
			||||||
 | 
									Pods:    mockPodsProvider,
 | 
				
			||||||
 | 
									Devices: mockDevicesProvider,
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
								server := NewV1alpha1PodResourcesServer(providers)
 | 
				
			||||||
			resp, err := server.List(context.TODO(), &v1alpha1.ListPodResourcesRequest{})
 | 
								resp, err := server.List(context.TODO(), &v1alpha1.ListPodResourcesRequest{})
 | 
				
			||||||
			if err != nil {
 | 
								if err != nil {
 | 
				
			||||||
				t.Errorf("want err = %v, got %q", nil, err)
 | 
									t.Errorf("want err = %v, got %q", nil, err)
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -51,3 +51,10 @@ type MemoryProvider interface {
 | 
				
			|||||||
	// GetAllocatableMemory returns the allocatable memory from the node
 | 
						// GetAllocatableMemory returns the allocatable memory from the node
 | 
				
			||||||
	GetAllocatableMemory() []*podresourcesapi.ContainerMemory
 | 
						GetAllocatableMemory() []*podresourcesapi.ContainerMemory
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					type PodResourcesProviders struct {
 | 
				
			||||||
 | 
						Pods    PodsProvider
 | 
				
			||||||
 | 
						Devices DevicesProvider
 | 
				
			||||||
 | 
						Cpus    CPUsProvider
 | 
				
			||||||
 | 
						Memory  MemoryProvider
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -2752,7 +2752,7 @@ func (kl *Kubelet) ListenAndServePodResources() {
 | 
				
			|||||||
		return
 | 
							return
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	providers := server.PodResourcesProviders{
 | 
						providers := podresources.PodResourcesProviders{
 | 
				
			||||||
		Pods:    kl.podManager,
 | 
							Pods:    kl.podManager,
 | 
				
			||||||
		Devices: kl.containerManager,
 | 
							Devices: kl.containerManager,
 | 
				
			||||||
		Cpus:    kl.containerManager,
 | 
							Cpus:    kl.containerManager,
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -218,11 +218,11 @@ type PodResourcesProviders struct {
 | 
				
			|||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// ListenAndServePodResources initializes a gRPC server to serve the PodResources service
 | 
					// ListenAndServePodResources initializes a gRPC server to serve the PodResources service
 | 
				
			||||||
func ListenAndServePodResources(socket string, providers PodResourcesProviders) {
 | 
					func ListenAndServePodResources(socket string, providers podresources.PodResourcesProviders) {
 | 
				
			||||||
	server := grpc.NewServer(podresourcesgrpc.WithRateLimiter(podresourcesgrpc.DefaultQPS, podresourcesgrpc.DefaultBurstTokens))
 | 
						server := grpc.NewServer(podresourcesgrpc.WithRateLimiter(podresourcesgrpc.DefaultQPS, podresourcesgrpc.DefaultBurstTokens))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	podresourcesapiv1alpha1.RegisterPodResourcesListerServer(server, podresources.NewV1alpha1PodResourcesServer(providers.Pods, providers.Devices))
 | 
						podresourcesapiv1alpha1.RegisterPodResourcesListerServer(server, podresources.NewV1alpha1PodResourcesServer(providers))
 | 
				
			||||||
	podresourcesapi.RegisterPodResourcesListerServer(server, podresources.NewV1PodResourcesServer(providers.Pods, providers.Devices, providers.Cpus, providers.Memory))
 | 
						podresourcesapi.RegisterPodResourcesListerServer(server, podresources.NewV1PodResourcesServer(providers))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	l, err := util.CreateListener(socket)
 | 
						l, err := util.CreateListener(socket)
 | 
				
			||||||
	if err != nil {
 | 
						if err != nil {
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user