diff --git a/pkg/cri/relay/runtime-service.go b/pkg/cri/relay/runtime-service.go index 35292eecc..08d50dc57 100644 --- a/pkg/cri/relay/runtime-service.go +++ b/pkg/cri/relay/runtime-service.go @@ -16,6 +16,7 @@ package relay import ( "context" + api "k8s.io/cri-api/pkg/apis/runtime/v1alpha2" "github.com/intel/cri-resource-manager/pkg/dump" @@ -156,6 +157,19 @@ func (r *relay) ListContainerStats(ctx context.Context, return r.client.ListContainerStats(ctx, req) } +func (r *relay) PodSandboxStats(ctx context.Context, + req *api.PodSandboxStatsRequest) (*api.PodSandboxStatsResponse, error) { + r.dump("PodSandboxStats", req) + return r.client.PodSandboxStats(ctx, req) +} + +func (r *relay) ListPodSandboxStats(ctx context.Context, + req *api.ListPodSandboxStatsRequest) (*api.ListPodSandboxStatsResponse, + error) { + r.dump("ListPodSandboxStats", req) + return r.client.ListPodSandboxStats(ctx, req) +} + func (r *relay) UpdateRuntimeConfig(ctx context.Context, req *api.UpdateRuntimeConfigRequest) (*api.UpdateRuntimeConfigResponse, error) { r.dump("UpdateRuntimeConfig", req) diff --git a/pkg/cri/server/services.go b/pkg/cri/server/services.go index 392b27e01..a99094a39 100644 --- a/pkg/cri/server/services.go +++ b/pkg/cri/server/services.go @@ -54,6 +54,8 @@ const ( portForward = "PortForward" containerStats = "ContainerStats" listContainerStats = "ListContainerStats" + podSandboxStats = "PodSandboxStats" + listPodSandboxStats = "ListPodSandboxStats" updateRuntimeConfig = "UpdateRuntimeConfig" status = "Status" ) @@ -426,6 +428,32 @@ func (s *server) ListContainerStats(ctx context.Context, return rsp.(*api.ListContainerStatsResponse), err } +func (s *server) PodSandboxStats(ctx context.Context, req *api.PodSandboxStatsRequest) (*api.PodSandboxStatsResponse, error) { + rsp, err := s.interceptRequest(ctx, runtimeService, podSandboxStats, req, + func(ctx context.Context, req interface{}) (interface{}, error) { + return (*s.runtime).PodSandboxStats(ctx, req.(*api.PodSandboxStatsRequest)) + }) + + if err != nil { + return nil, err + } + + return rsp.(*api.PodSandboxStatsResponse), err +} + +func (s *server) ListPodSandboxStats(ctx context.Context, req *api.ListPodSandboxStatsRequest) (*api.ListPodSandboxStatsResponse, error) { + rsp, err := s.interceptRequest(ctx, runtimeService, listPodSandboxStats, req, + func(ctx context.Context, req interface{}) (interface{}, error) { + return (*s.runtime).ListPodSandboxStats(ctx, req.(*api.ListPodSandboxStatsRequest)) + }) + + if err != nil { + return nil, err + } + + return rsp.(*api.ListPodSandboxStatsResponse), err +} + func (s *server) UpdateRuntimeConfig(ctx context.Context, req *api.UpdateRuntimeConfigRequest) (*api.UpdateRuntimeConfigResponse, error) { rsp, err := s.interceptRequest(ctx, runtimeService, updateRuntimeConfig, req, diff --git a/test/functional/fake_cri_server_test.go b/test/functional/fake_cri_server_test.go index 850d07e0f..7945c885c 100644 --- a/test/functional/fake_cri_server_test.go +++ b/test/functional/fake_cri_server_test.go @@ -228,6 +228,16 @@ func (s *fakeCriServer) ListContainerStats(ctx context.Context, req *api.ListCon return response.(*api.ListContainerStatsResponse), err } +func (s *fakeCriServer) PodSandboxStats(ctx context.Context, req *api.PodSandboxStatsRequest) (*api.PodSandboxStatsResponse, error) { + response, err := s.callHandler(ctx, req, nil) + return response.(*api.PodSandboxStatsResponse), err +} + +func (s *fakeCriServer) ListPodSandboxStats(ctx context.Context, req *api.ListPodSandboxStatsRequest) (*api.ListPodSandboxStatsResponse, error) { + response, err := s.callHandler(ctx, req, nil) + return response.(*api.ListPodSandboxStatsResponse), err +} + func (s *fakeCriServer) UpdateRuntimeConfig(ctx context.Context, req *api.UpdateRuntimeConfigRequest) (*api.UpdateRuntimeConfigResponse, error) { response, err := s.callHandler(ctx, req, nil) return response.(*api.UpdateRuntimeConfigResponse), err