From 9f54dccc9224d7e695be605ac41697f5d9ebb73f Mon Sep 17 00:00:00 2001 From: Alexey Perevalov Date: Tue, 10 Nov 2020 16:09:32 +0300 Subject: [PATCH] Change GetDevices interface This change is necessary for supporting Topology in the ContainerDevices. Signed-off-by: Alexey Perevalov --- pkg/kubelet/apis/podresources/server_v1.go | 13 +------------ pkg/kubelet/apis/podresources/server_v1_test.go | 11 +++++------ pkg/kubelet/apis/podresources/server_v1alpha1.go | 16 +++++++++++++++- .../apis/podresources/server_v1alpha1_test.go | 15 ++++++++------- pkg/kubelet/apis/podresources/types.go | 4 ++-- pkg/kubelet/cm/BUILD | 2 +- pkg/kubelet/cm/container_manager.go | 2 +- pkg/kubelet/cm/container_manager_linux.go | 2 +- pkg/kubelet/cm/container_manager_stub.go | 2 +- pkg/kubelet/cm/container_manager_windows.go | 2 +- pkg/kubelet/cm/devicemanager/BUILD | 2 +- pkg/kubelet/cm/devicemanager/manager.go | 2 +- pkg/kubelet/cm/devicemanager/manager_stub.go | 2 +- pkg/kubelet/cm/devicemanager/pod_devices.go | 2 +- pkg/kubelet/cm/devicemanager/types.go | 2 +- 15 files changed, 41 insertions(+), 38 deletions(-) diff --git a/pkg/kubelet/apis/podresources/server_v1.go b/pkg/kubelet/apis/podresources/server_v1.go index 20a6abb8ec5..fe4666a969c 100644 --- a/pkg/kubelet/apis/podresources/server_v1.go +++ b/pkg/kubelet/apis/podresources/server_v1.go @@ -22,7 +22,6 @@ import ( "k8s.io/kubernetes/pkg/kubelet/metrics" "k8s.io/kubelet/pkg/apis/podresources/v1" - "k8s.io/kubelet/pkg/apis/podresources/v1alpha1" ) // podResourcesServerV1alpha1 implements PodResourcesListerServer @@ -40,16 +39,6 @@ func NewV1PodResourcesServer(podsProvider PodsProvider, devicesProvider DevicesP } } -func alphaDevicesToV1(alphaDevs []*v1alpha1.ContainerDevices) []*v1.ContainerDevices { - var devs []*v1.ContainerDevices - for _, alphaDev := range alphaDevs { - dev := v1.ContainerDevices(*alphaDev) - devs = append(devs, &dev) - } - - return devs -} - // List returns information about the resources assigned to pods on the node func (p *v1PodResourcesServer) List(ctx context.Context, req *v1.ListPodResourcesRequest) (*v1.ListPodResourcesResponse, error) { metrics.PodResourcesEndpointRequestsTotalCount.WithLabelValues("v1").Inc() @@ -68,7 +57,7 @@ func (p *v1PodResourcesServer) List(ctx context.Context, req *v1.ListPodResource for j, container := range pod.Spec.Containers { pRes.Containers[j] = &v1.ContainerResources{ Name: container.Name, - Devices: alphaDevicesToV1(p.devicesProvider.GetDevices(string(pod.UID), container.Name)), + Devices: p.devicesProvider.GetDevices(string(pod.UID), container.Name), } } podResources[i] = &pRes diff --git a/pkg/kubelet/apis/podresources/server_v1_test.go b/pkg/kubelet/apis/podresources/server_v1_test.go index c0d1dfba68b..40ace68f351 100644 --- a/pkg/kubelet/apis/podresources/server_v1_test.go +++ b/pkg/kubelet/apis/podresources/server_v1_test.go @@ -24,7 +24,6 @@ import ( metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apimachinery/pkg/types" podresourcesapi "k8s.io/kubelet/pkg/apis/podresources/v1" - "k8s.io/kubelet/pkg/apis/podresources/v1alpha1" ) func TestListPodResourcesV1(t *testing.T) { @@ -33,7 +32,7 @@ func TestListPodResourcesV1(t *testing.T) { podUID := types.UID("pod-uid") containerName := "container-name" - devs := []*v1alpha1.ContainerDevices{ + devs := []*podresourcesapi.ContainerDevices{ { ResourceName: "resource", DeviceIds: []string{"dev0", "dev1"}, @@ -43,13 +42,13 @@ func TestListPodResourcesV1(t *testing.T) { for _, tc := range []struct { desc string pods []*v1.Pod - devices []*v1alpha1.ContainerDevices + devices []*podresourcesapi.ContainerDevices expectedResponse *podresourcesapi.ListPodResourcesResponse }{ { desc: "no pods", pods: []*v1.Pod{}, - devices: []*v1alpha1.ContainerDevices{}, + devices: []*podresourcesapi.ContainerDevices{}, expectedResponse: &podresourcesapi.ListPodResourcesResponse{}, }, { @@ -70,7 +69,7 @@ func TestListPodResourcesV1(t *testing.T) { }, }, }, - devices: []*v1alpha1.ContainerDevices{}, + devices: []*podresourcesapi.ContainerDevices{}, expectedResponse: &podresourcesapi.ListPodResourcesResponse{ PodResources: []*podresourcesapi.PodResources{ { @@ -113,7 +112,7 @@ func TestListPodResourcesV1(t *testing.T) { Containers: []*podresourcesapi.ContainerResources{ { Name: containerName, - Devices: alphaDevicesToV1(devs), + Devices: devs, }, }, }, diff --git a/pkg/kubelet/apis/podresources/server_v1alpha1.go b/pkg/kubelet/apis/podresources/server_v1alpha1.go index 4d4cb7ca5cb..baacd2722fb 100644 --- a/pkg/kubelet/apis/podresources/server_v1alpha1.go +++ b/pkg/kubelet/apis/podresources/server_v1alpha1.go @@ -21,6 +21,7 @@ import ( "k8s.io/kubernetes/pkg/kubelet/metrics" + "k8s.io/kubelet/pkg/apis/podresources/v1" "k8s.io/kubelet/pkg/apis/podresources/v1alpha1" ) @@ -39,6 +40,19 @@ func NewV1alpha1PodResourcesServer(podsProvider PodsProvider, devicesProvider De } } +func v1DevicesToAlphaV1(alphaDevs []*v1.ContainerDevices) []*v1alpha1.ContainerDevices { + var devs []*v1alpha1.ContainerDevices + for _, alphaDev := range alphaDevs { + dev := v1alpha1.ContainerDevices{ + ResourceName: alphaDev.ResourceName, + DeviceIds: alphaDev.DeviceIds, + } + devs = append(devs, &dev) + } + + return devs +} + // List returns information about the resources assigned to pods on the node func (p *v1alpha1PodResourcesServer) List(ctx context.Context, req *v1alpha1.ListPodResourcesRequest) (*v1alpha1.ListPodResourcesResponse, error) { metrics.PodResourcesEndpointRequestsTotalCount.WithLabelValues("v1alpha1").Inc() @@ -56,7 +70,7 @@ func (p *v1alpha1PodResourcesServer) List(ctx context.Context, req *v1alpha1.Lis for j, container := range pod.Spec.Containers { pRes.Containers[j] = &v1alpha1.ContainerResources{ Name: container.Name, - Devices: p.devicesProvider.GetDevices(string(pod.UID), container.Name), + Devices: v1DevicesToAlphaV1(p.devicesProvider.GetDevices(string(pod.UID), container.Name)), } } podResources[i] = &pRes diff --git a/pkg/kubelet/apis/podresources/server_v1alpha1_test.go b/pkg/kubelet/apis/podresources/server_v1alpha1_test.go index 302d8c95fa0..b87ac10fa8c 100644 --- a/pkg/kubelet/apis/podresources/server_v1alpha1_test.go +++ b/pkg/kubelet/apis/podresources/server_v1alpha1_test.go @@ -25,6 +25,7 @@ import ( "k8s.io/api/core/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apimachinery/pkg/types" + podresourcesv1 "k8s.io/kubelet/pkg/apis/podresources/v1" "k8s.io/kubelet/pkg/apis/podresources/v1alpha1" ) @@ -37,9 +38,9 @@ func (m *mockProvider) GetPods() []*v1.Pod { return args.Get(0).([]*v1.Pod) } -func (m *mockProvider) GetDevices(podUID, containerName string) []*v1alpha1.ContainerDevices { +func (m *mockProvider) GetDevices(podUID, containerName string) []*podresourcesv1.ContainerDevices { args := m.Called(podUID, containerName) - return args.Get(0).([]*v1alpha1.ContainerDevices) + return args.Get(0).([]*podresourcesv1.ContainerDevices) } func (m *mockProvider) UpdateAllocatedDevices() { @@ -52,7 +53,7 @@ func TestListPodResourcesV1alpha1(t *testing.T) { podUID := types.UID("pod-uid") containerName := "container-name" - devs := []*v1alpha1.ContainerDevices{ + devs := []*podresourcesv1.ContainerDevices{ { ResourceName: "resource", DeviceIds: []string{"dev0", "dev1"}, @@ -62,13 +63,13 @@ func TestListPodResourcesV1alpha1(t *testing.T) { for _, tc := range []struct { desc string pods []*v1.Pod - devices []*v1alpha1.ContainerDevices + devices []*podresourcesv1.ContainerDevices expectedResponse *v1alpha1.ListPodResourcesResponse }{ { desc: "no pods", pods: []*v1.Pod{}, - devices: []*v1alpha1.ContainerDevices{}, + devices: []*podresourcesv1.ContainerDevices{}, expectedResponse: &v1alpha1.ListPodResourcesResponse{}, }, { @@ -89,7 +90,7 @@ func TestListPodResourcesV1alpha1(t *testing.T) { }, }, }, - devices: []*v1alpha1.ContainerDevices{}, + devices: []*podresourcesv1.ContainerDevices{}, expectedResponse: &v1alpha1.ListPodResourcesResponse{ PodResources: []*v1alpha1.PodResources{ { @@ -132,7 +133,7 @@ func TestListPodResourcesV1alpha1(t *testing.T) { Containers: []*v1alpha1.ContainerResources{ { Name: containerName, - Devices: devs, + Devices: v1DevicesToAlphaV1(devs), }, }, }, diff --git a/pkg/kubelet/apis/podresources/types.go b/pkg/kubelet/apis/podresources/types.go index 7f330185686..266c0c8af70 100644 --- a/pkg/kubelet/apis/podresources/types.go +++ b/pkg/kubelet/apis/podresources/types.go @@ -18,12 +18,12 @@ package podresources import ( "k8s.io/api/core/v1" - "k8s.io/kubelet/pkg/apis/podresources/v1alpha1" + podresourcesapi "k8s.io/kubelet/pkg/apis/podresources/v1" ) // DevicesProvider knows how to provide the devices used by the given container type DevicesProvider interface { - GetDevices(podUID, containerName string) []*v1alpha1.ContainerDevices + GetDevices(podUID, containerName string) []*podresourcesapi.ContainerDevices UpdateAllocatedDevices() } diff --git a/pkg/kubelet/cm/BUILD b/pkg/kubelet/cm/BUILD index 107878444be..6935ba92d09 100644 --- a/pkg/kubelet/cm/BUILD +++ b/pkg/kubelet/cm/BUILD @@ -42,7 +42,7 @@ go_library( "//staging/src/k8s.io/apimachinery/pkg/util/sets:go_default_library", "//staging/src/k8s.io/apiserver/pkg/util/feature:go_default_library", "//staging/src/k8s.io/cri-api/pkg/apis:go_default_library", - "//staging/src/k8s.io/kubelet/pkg/apis/podresources/v1alpha1:go_default_library", + "//staging/src/k8s.io/kubelet/pkg/apis/podresources/v1:go_default_library", "//vendor/k8s.io/klog/v2:go_default_library", ] + select({ "@io_bazel_rules_go//go/platform:aix": [ diff --git a/pkg/kubelet/cm/container_manager.go b/pkg/kubelet/cm/container_manager.go index 83c150cbec1..603a150a26a 100644 --- a/pkg/kubelet/cm/container_manager.go +++ b/pkg/kubelet/cm/container_manager.go @@ -23,7 +23,7 @@ import ( // TODO: Migrate kubelet to either use its own internal objects or client library. v1 "k8s.io/api/core/v1" internalapi "k8s.io/cri-api/pkg/apis" - podresourcesapi "k8s.io/kubelet/pkg/apis/podresources/v1alpha1" + podresourcesapi "k8s.io/kubelet/pkg/apis/podresources/v1" "k8s.io/kubernetes/pkg/kubelet/cm/cpuset" "k8s.io/kubernetes/pkg/kubelet/config" kubecontainer "k8s.io/kubernetes/pkg/kubelet/container" diff --git a/pkg/kubelet/cm/container_manager_linux.go b/pkg/kubelet/cm/container_manager_linux.go index aaf6b88f573..f0c0e33cf1d 100644 --- a/pkg/kubelet/cm/container_manager_linux.go +++ b/pkg/kubelet/cm/container_manager_linux.go @@ -47,7 +47,7 @@ import ( utilfeature "k8s.io/apiserver/pkg/util/feature" "k8s.io/client-go/tools/record" internalapi "k8s.io/cri-api/pkg/apis" - podresourcesapi "k8s.io/kubelet/pkg/apis/podresources/v1alpha1" + podresourcesapi "k8s.io/kubelet/pkg/apis/podresources/v1" kubefeatures "k8s.io/kubernetes/pkg/features" "k8s.io/kubernetes/pkg/kubelet/cadvisor" "k8s.io/kubernetes/pkg/kubelet/cm/containermap" diff --git a/pkg/kubelet/cm/container_manager_stub.go b/pkg/kubelet/cm/container_manager_stub.go index 03387f2c479..6d8fa08dcab 100644 --- a/pkg/kubelet/cm/container_manager_stub.go +++ b/pkg/kubelet/cm/container_manager_stub.go @@ -22,7 +22,7 @@ import ( "k8s.io/apimachinery/pkg/api/resource" internalapi "k8s.io/cri-api/pkg/apis" - podresourcesapi "k8s.io/kubelet/pkg/apis/podresources/v1alpha1" + podresourcesapi "k8s.io/kubelet/pkg/apis/podresources/v1" "k8s.io/kubernetes/pkg/kubelet/cm/cpumanager" "k8s.io/kubernetes/pkg/kubelet/cm/topologymanager" "k8s.io/kubernetes/pkg/kubelet/config" diff --git a/pkg/kubelet/cm/container_manager_windows.go b/pkg/kubelet/cm/container_manager_windows.go index 47a17a0f837..3bc0f00e2a6 100644 --- a/pkg/kubelet/cm/container_manager_windows.go +++ b/pkg/kubelet/cm/container_manager_windows.go @@ -32,7 +32,7 @@ import ( utilfeature "k8s.io/apiserver/pkg/util/feature" "k8s.io/client-go/tools/record" internalapi "k8s.io/cri-api/pkg/apis" - podresourcesapi "k8s.io/kubelet/pkg/apis/podresources/v1alpha1" + podresourcesapi "k8s.io/kubelet/pkg/apis/podresources/v1" kubefeatures "k8s.io/kubernetes/pkg/features" "k8s.io/kubernetes/pkg/kubelet/cadvisor" "k8s.io/kubernetes/pkg/kubelet/cm/cpumanager" diff --git a/pkg/kubelet/cm/devicemanager/BUILD b/pkg/kubelet/cm/devicemanager/BUILD index 92e254992ea..a2a58b0b363 100644 --- a/pkg/kubelet/cm/devicemanager/BUILD +++ b/pkg/kubelet/cm/devicemanager/BUILD @@ -36,7 +36,7 @@ go_library( "//staging/src/k8s.io/apiserver/pkg/util/feature:go_default_library", "//staging/src/k8s.io/kubelet/pkg/apis/deviceplugin/v1beta1:go_default_library", "//staging/src/k8s.io/kubelet/pkg/apis/pluginregistration/v1:go_default_library", - "//staging/src/k8s.io/kubelet/pkg/apis/podresources/v1alpha1:go_default_library", + "//staging/src/k8s.io/kubelet/pkg/apis/podresources/v1:go_default_library", "//vendor/github.com/google/cadvisor/info/v1:go_default_library", "//vendor/google.golang.org/grpc:go_default_library", "//vendor/k8s.io/klog/v2:go_default_library", diff --git a/pkg/kubelet/cm/devicemanager/manager.go b/pkg/kubelet/cm/devicemanager/manager.go index 0b9afa98a9f..59ecf7f2a60 100644 --- a/pkg/kubelet/cm/devicemanager/manager.go +++ b/pkg/kubelet/cm/devicemanager/manager.go @@ -36,7 +36,7 @@ import ( "k8s.io/apimachinery/pkg/util/sets" utilfeature "k8s.io/apiserver/pkg/util/feature" pluginapi "k8s.io/kubelet/pkg/apis/deviceplugin/v1beta1" - podresourcesapi "k8s.io/kubelet/pkg/apis/podresources/v1alpha1" + podresourcesapi "k8s.io/kubelet/pkg/apis/podresources/v1" v1helper "k8s.io/kubernetes/pkg/apis/core/v1/helper" "k8s.io/kubernetes/pkg/features" "k8s.io/kubernetes/pkg/kubelet/checkpointmanager" diff --git a/pkg/kubelet/cm/devicemanager/manager_stub.go b/pkg/kubelet/cm/devicemanager/manager_stub.go index 626f4c39791..ebffa5c138e 100644 --- a/pkg/kubelet/cm/devicemanager/manager_stub.go +++ b/pkg/kubelet/cm/devicemanager/manager_stub.go @@ -18,7 +18,7 @@ package devicemanager import ( v1 "k8s.io/api/core/v1" - podresourcesapi "k8s.io/kubelet/pkg/apis/podresources/v1alpha1" + podresourcesapi "k8s.io/kubelet/pkg/apis/podresources/v1" "k8s.io/kubernetes/pkg/kubelet/cm/topologymanager" "k8s.io/kubernetes/pkg/kubelet/config" "k8s.io/kubernetes/pkg/kubelet/lifecycle" diff --git a/pkg/kubelet/cm/devicemanager/pod_devices.go b/pkg/kubelet/cm/devicemanager/pod_devices.go index fef1e7785a2..f8625c8a06c 100644 --- a/pkg/kubelet/cm/devicemanager/pod_devices.go +++ b/pkg/kubelet/cm/devicemanager/pod_devices.go @@ -21,7 +21,7 @@ import ( "k8s.io/apimachinery/pkg/util/sets" pluginapi "k8s.io/kubelet/pkg/apis/deviceplugin/v1beta1" - podresourcesapi "k8s.io/kubelet/pkg/apis/podresources/v1alpha1" + podresourcesapi "k8s.io/kubelet/pkg/apis/podresources/v1" "k8s.io/kubernetes/pkg/kubelet/cm/devicemanager/checkpoint" kubecontainer "k8s.io/kubernetes/pkg/kubelet/container" ) diff --git a/pkg/kubelet/cm/devicemanager/types.go b/pkg/kubelet/cm/devicemanager/types.go index 4559da0ce55..771b5099c3e 100644 --- a/pkg/kubelet/cm/devicemanager/types.go +++ b/pkg/kubelet/cm/devicemanager/types.go @@ -20,7 +20,7 @@ import ( "time" v1 "k8s.io/api/core/v1" - podresourcesapi "k8s.io/kubelet/pkg/apis/podresources/v1alpha1" + podresourcesapi "k8s.io/kubelet/pkg/apis/podresources/v1" "k8s.io/kubernetes/pkg/kubelet/cm/topologymanager" "k8s.io/kubernetes/pkg/kubelet/config" kubecontainer "k8s.io/kubernetes/pkg/kubelet/container"