remove duplicated sandbox to proto func
Signed-off-by: Jin Dong <djdongjin95@gmail.com>
This commit is contained in:
parent
26d6fd0c3f
commit
93d6f0f921
@ -24,11 +24,9 @@ import (
|
||||
"github.com/containerd/containerd/api/types"
|
||||
"github.com/containerd/containerd/v2/core/mount"
|
||||
"github.com/containerd/containerd/v2/core/sandbox"
|
||||
"github.com/containerd/containerd/v2/pkg/protobuf"
|
||||
"github.com/containerd/errdefs"
|
||||
"github.com/containerd/typeurl/v2"
|
||||
imagespec "github.com/opencontainers/image-spec/specs-go/v1"
|
||||
"google.golang.org/protobuf/types/known/anypb"
|
||||
)
|
||||
|
||||
// remoteSandboxController is a low level GRPC client for containerd's sandbox controller service
|
||||
@ -48,20 +46,14 @@ func (s *remoteSandboxController) Create(ctx context.Context, sandboxInfo sandbo
|
||||
for _, opt := range opts {
|
||||
opt(&options)
|
||||
}
|
||||
apiSandbox, err := toAPISandbox(sandboxInfo)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
_, err = s.client.Create(ctx, &api.ControllerCreateRequest{
|
||||
apiSandbox := sandbox.ToProto(&sandboxInfo)
|
||||
_, err := s.client.Create(ctx, &api.ControllerCreateRequest{
|
||||
SandboxID: sandboxInfo.ID,
|
||||
Rootfs: mount.ToProto(options.Rootfs),
|
||||
Options: &anypb.Any{
|
||||
TypeUrl: options.Options.GetTypeUrl(),
|
||||
Value: options.Options.GetValue(),
|
||||
},
|
||||
Options: typeurl.MarshalProto(options.Options),
|
||||
NetnsPath: options.NetNSPath,
|
||||
Annotations: options.Annotations,
|
||||
Sandbox: &apiSandbox,
|
||||
Sandbox: apiSandbox,
|
||||
})
|
||||
if err != nil {
|
||||
return errdefs.FromGRPC(err)
|
||||
@ -189,15 +181,12 @@ func (s *remoteSandboxController) Metrics(ctx context.Context, sandboxID string)
|
||||
func (s *remoteSandboxController) Update(
|
||||
ctx context.Context,
|
||||
sandboxID string,
|
||||
sandbox sandbox.Sandbox,
|
||||
sb sandbox.Sandbox,
|
||||
fields ...string) error {
|
||||
apiSandbox, err := toAPISandbox(sandbox)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
_, err = s.client.Update(ctx, &api.ControllerUpdateRequest{
|
||||
apiSandbox := sandbox.ToProto(&sb)
|
||||
_, err := s.client.Update(ctx, &api.ControllerUpdateRequest{
|
||||
SandboxID: sandboxID,
|
||||
Sandbox: &apiSandbox,
|
||||
Sandbox: apiSandbox,
|
||||
Fields: fields,
|
||||
})
|
||||
if err != nil {
|
||||
@ -205,35 +194,3 @@ func (s *remoteSandboxController) Update(
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func toAPISandbox(sb sandbox.Sandbox) (types.Sandbox, error) {
|
||||
options, err := typeurl.MarshalAnyToProto(sb.Runtime.Options)
|
||||
if err != nil {
|
||||
return types.Sandbox{}, err
|
||||
}
|
||||
spec, err := typeurl.MarshalAnyToProto(sb.Spec)
|
||||
if err != nil {
|
||||
return types.Sandbox{}, err
|
||||
}
|
||||
extensions := make(map[string]*anypb.Any)
|
||||
for k, v := range sb.Extensions {
|
||||
pb, err := typeurl.MarshalAnyToProto(v)
|
||||
if err != nil {
|
||||
return types.Sandbox{}, err
|
||||
}
|
||||
extensions[k] = pb
|
||||
}
|
||||
return types.Sandbox{
|
||||
SandboxID: sb.ID,
|
||||
Runtime: &types.Sandbox_Runtime{
|
||||
Name: sb.Runtime.Name,
|
||||
Options: options,
|
||||
},
|
||||
Spec: spec,
|
||||
Labels: sb.Labels,
|
||||
CreatedAt: protobuf.ToTimestamp(sb.CreatedAt),
|
||||
UpdatedAt: protobuf.ToTimestamp(sb.UpdatedAt),
|
||||
Extensions: extensions,
|
||||
Sandboxer: sb.Sandboxer,
|
||||
}, nil
|
||||
}
|
||||
|
@ -26,8 +26,8 @@ import (
|
||||
"github.com/containerd/log"
|
||||
"github.com/containerd/plugin"
|
||||
"github.com/containerd/plugin/registry"
|
||||
"github.com/containerd/typeurl/v2"
|
||||
imagespec "github.com/opencontainers/image-spec/specs-go/v1"
|
||||
"google.golang.org/protobuf/types/known/anypb"
|
||||
|
||||
runtimeAPI "github.com/containerd/containerd/api/runtime/sandbox/v1"
|
||||
"github.com/containerd/containerd/api/types"
|
||||
@ -150,19 +150,11 @@ func (c *controllerLocal) Create(ctx context.Context, info sandbox.Sandbox, opts
|
||||
return err
|
||||
}
|
||||
|
||||
var options *anypb.Any
|
||||
if coptions.Options != nil {
|
||||
options = &anypb.Any{
|
||||
TypeUrl: coptions.Options.GetTypeUrl(),
|
||||
Value: coptions.Options.GetValue(),
|
||||
}
|
||||
}
|
||||
|
||||
if _, err := svc.CreateSandbox(ctx, &runtimeAPI.CreateSandboxRequest{
|
||||
SandboxID: sandboxID,
|
||||
BundlePath: shim.Bundle(),
|
||||
Rootfs: mount.ToProto(coptions.Rootfs),
|
||||
Options: options,
|
||||
Options: typeurl.MarshalProto(coptions.Options),
|
||||
NetnsPath: coptions.NetNSPath,
|
||||
}); err != nil {
|
||||
c.cleanupShim(ctx, sandboxID, svc)
|
||||
|
@ -26,7 +26,6 @@ import (
|
||||
|
||||
eventtypes "github.com/containerd/containerd/api/events"
|
||||
api "github.com/containerd/containerd/api/services/sandbox/v1"
|
||||
"github.com/containerd/containerd/api/types"
|
||||
"github.com/containerd/containerd/v2/core/events"
|
||||
"github.com/containerd/containerd/v2/core/sandbox"
|
||||
"github.com/containerd/containerd/v2/pkg/protobuf"
|
||||
@ -35,7 +34,6 @@ import (
|
||||
"github.com/containerd/log"
|
||||
"github.com/containerd/plugin"
|
||||
"github.com/containerd/plugin/registry"
|
||||
"github.com/containerd/typeurl/v2"
|
||||
)
|
||||
|
||||
func init() {
|
||||
@ -102,7 +100,7 @@ func (s *controllerService) Create(ctx context.Context, req *api.ControllerCreat
|
||||
}
|
||||
var sb sandbox.Sandbox
|
||||
if req.Sandbox != nil {
|
||||
sb = fromAPISandbox(req.Sandbox)
|
||||
sb = sandbox.FromProto(req.Sandbox)
|
||||
} else {
|
||||
sb = sandbox.Sandbox{ID: req.GetSandboxID()}
|
||||
}
|
||||
@ -244,33 +242,9 @@ func (s *controllerService) Update(
|
||||
if req.Sandbox == nil {
|
||||
return nil, fmt.Errorf("sandbox can not be nil")
|
||||
}
|
||||
err = ctrl.Update(ctx, req.SandboxID, fromAPISandbox(req.Sandbox), req.Fields...)
|
||||
err = ctrl.Update(ctx, req.SandboxID, sandbox.FromProto(req.Sandbox), req.Fields...)
|
||||
if err != nil {
|
||||
return &api.ControllerUpdateResponse{}, errdefs.ToGRPC(err)
|
||||
}
|
||||
return &api.ControllerUpdateResponse{}, nil
|
||||
}
|
||||
|
||||
func fromAPISandbox(sb *types.Sandbox) sandbox.Sandbox {
|
||||
var runtime sandbox.RuntimeOpts
|
||||
if sb.Runtime != nil {
|
||||
runtime = sandbox.RuntimeOpts{
|
||||
Name: sb.Runtime.Name,
|
||||
Options: sb.Runtime.Options,
|
||||
}
|
||||
}
|
||||
extensions := make(map[string]typeurl.Any)
|
||||
for k, v := range sb.Extensions {
|
||||
extensions[k] = v
|
||||
}
|
||||
return sandbox.Sandbox{
|
||||
ID: sb.SandboxID,
|
||||
Runtime: runtime,
|
||||
Spec: sb.Spec,
|
||||
Labels: sb.Labels,
|
||||
CreatedAt: protobuf.FromTimestamp(sb.CreatedAt),
|
||||
UpdatedAt: protobuf.FromTimestamp(sb.UpdatedAt),
|
||||
Extensions: extensions,
|
||||
Sandboxer: sb.Sandboxer,
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user