Skip to content

Commit

Permalink
Reduce cyclomatic complexity of service.Create
Browse files Browse the repository at this point in the history
  • Loading branch information
slonopotamus committed Nov 25, 2024
1 parent 824f8a9 commit 568db46
Showing 1 changed file with 31 additions and 21 deletions.
52 changes: 31 additions & 21 deletions containerd/service.go
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ import (
"fmt"
"github.com/containerd/containerd/api/events"
taskAPI "github.com/containerd/containerd/api/runtime/task/v3"
"github.com/containerd/containerd/api/types"
"github.com/containerd/containerd/api/types/task"
"github.com/containerd/containerd/v2/core/mount"
"github.com/containerd/containerd/v2/core/runtime"
Expand Down Expand Up @@ -168,27 +169,9 @@ func (s *service) Create(ctx context.Context, request *taskAPI.CreateTaskRequest
return nil, err
}

var mounts []mount.Mount
for _, m := range request.Rootfs {
mm, err := processMount(c.rootfs, m.Type, m.Source, m.Target, m.Options)
if err != nil {
return nil, err
}

if mm != nil {
mounts = append(mounts, *mm)
}
}

for _, m := range spec.Mounts {
mm, err := processMount(c.rootfs, m.Type, m.Source, m.Destination, m.Options)
if err != nil {
return nil, err
}

if mm != nil {
mounts = append(mounts, *mm)
}
mounts, err := processMounts(c.rootfs, request.Rootfs, spec.Mounts)
if err != nil {
return nil, err
}

if err = mount.All(mounts, c.rootfs); err != nil {
Expand All @@ -214,6 +197,33 @@ func (s *service) Create(ctx context.Context, request *taskAPI.CreateTaskRequest
return &taskAPI.CreateTaskResponse{}, nil
}

func processMounts(targetRoot string, rootfs []*types.Mount, specMounts []specs.Mount) ([]mount.Mount, error) {
var mounts []mount.Mount
for _, m := range rootfs {
mm, err := processMount(targetRoot, m.Type, m.Source, m.Target, m.Options)
if err != nil {
return nil, err
}

if mm != nil {
mounts = append(mounts, *mm)
}
}

for _, m := range specMounts {
mm, err := processMount(targetRoot, m.Type, m.Source, m.Destination, m.Options)
if err != nil {
return nil, err
}

if mm != nil {
mounts = append(mounts, *mm)
}
}

return mounts, nil
}

func processMount(rootfs, mtype, source, target string, options []string) (*mount.Mount, error) {
m := &mount.Mount{
Type: mtype,
Expand Down

0 comments on commit 568db46

Please sign in to comment.