mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-08-01 07:47:56 +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:
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 {
|
||||||
|
Loading…
Reference in New Issue
Block a user