From 47326f566c53495f64009fb81f714221393926c1 Mon Sep 17 00:00:00 2001 From: fupan Date: Mon, 19 Nov 2018 11:41:45 +0800 Subject: [PATCH] containerd-shim-kata-v2: add the service Update support Add the Update api support to update a running process's resouce. Signed-off-by: fupan --- containerd-shim-v2/service.go | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/containerd-shim-v2/service.go b/containerd-shim-v2/service.go index 2715c19a67..f23d2ec46b 100644 --- a/containerd-shim-v2/service.go +++ b/containerd-shim-v2/service.go @@ -6,6 +6,7 @@ package containerdshim import ( "context" + "encoding/json" "os" sysexec "os/exec" "path/filepath" @@ -24,6 +25,7 @@ import ( "github.com/kata-containers/runtime/pkg/katautils" vc "github.com/kata-containers/runtime/virtcontainers" "github.com/kata-containers/runtime/virtcontainers/pkg/oci" + "github.com/opencontainers/runtime-spec/specs-go" "github.com/containerd/containerd/api/types/task" ptypes "github.com/gogo/protobuf/types" @@ -574,7 +576,20 @@ func (s *service) Stats(ctx context.Context, r *taskAPI.StatsRequest) (*taskAPI. // Update a running container func (s *service) Update(ctx context.Context, r *taskAPI.UpdateTaskRequest) (*ptypes.Empty, error) { - return nil, errdefs.ErrNotImplemented + s.Lock() + defer s.Unlock() + + var resources specs.LinuxResources + if err := json.Unmarshal(r.Resources.Value, &resources); err != nil { + return empty, err + } + + err := s.sandbox.UpdateContainer(r.ID, resources) + if err != nil { + return nil, errdefs.ToGRPC(err) + } + + return empty, nil } // Wait for a process to exit