#13 DRAFT: Update containerd from v1.6.19 to v1.7.0
Opened a year ago by dghubble. Modified 8 months ago
rpms/ dghubble/containerd bump-v1.7.0  into  rawhide

@@ -1,31 +1,29 @@ 

- From beb23ffb0624b40b2ee1bc56730e54943bd3020f Mon Sep 17 00:00:00 2001

- From: =?UTF-8?q?Robert-Andr=C3=A9=20Mauchin?= <zebob.m@gmail.com>

- Date: Thu, 1 Oct 2020 07:19:45 +0200

- Subject: [PATCH] Revert commit for Windows metrics

- MIME-Version: 1.0

- Content-Type: text/plain; charset=UTF-8

- Content-Transfer-Encoding: 8bit

+ From e28e6f5742e2b4525b215d9af44be2e4018bea38 Mon Sep 17 00:00:00 2001

+ From: Dalton Hubble <dghubble@gmail.com>

+ Date: Thu, 23 Mar 2023 11:43:31 -0700

+ Subject: [PATCH] Revert commit for windows metrics

  

- Signed-off-by: Robert-André Mauchin <zebob.m@gmail.com>

  ---

-  cmd/ctr/commands/tasks/metrics.go | 113 ------------------------------

-  1 file changed, 113 deletions(-)

+  cmd/ctr/commands/tasks/metrics.go | 137 ------------------------------

+  1 file changed, 137 deletions(-)

  

  diff --git a/cmd/ctr/commands/tasks/metrics.go b/cmd/ctr/commands/tasks/metrics.go

- index a83e45ef..f8371401 100644

+ index 009ebfb74..3aeb5bc19 100644

  --- a/cmd/ctr/commands/tasks/metrics.go

  +++ b/cmd/ctr/commands/tasks/metrics.go

- @@ -23,9 +23,6 @@ import (

+ @@ -23,11 +23,7 @@ import (

   	"os"

   	"text/tabwriter"

   

  -	wstats "github.com/Microsoft/hcsshim/cmd/containerd-shim-runhcs-v1/stats"

- -	v1 "github.com/containerd/cgroups/stats/v1"

- -	v2 "github.com/containerd/cgroups/v2/stats"

+ -	v1 "github.com/containerd/cgroups/v3/cgroup1/stats"

+ -	v2 "github.com/containerd/cgroups/v3/cgroup2/stats"

   	"github.com/containerd/containerd/cmd/ctr/commands"

-  	"github.com/containerd/typeurl"

+ -	"github.com/containerd/containerd/protobuf/proto"

+  	"github.com/containerd/typeurl/v2"

   	"github.com/urfave/cli"

- @@ -77,42 +74,12 @@ var metricsCommand = cli.Command{

+  )

+ @@ -72,37 +68,12 @@ var metricsCommand = cli.Command{

   		if err != nil {

   			return err

   		}
@@ -55,20 +53,15 @@ 

  -			} else if data2 != nil {

  -				printCgroup2MetricsTable(w, data2)

  -			} else {

- -				if windowsStats.GetLinux() != nil {

- -					printCgroupMetricsTable(w, windowsStats.GetLinux())

- -				} else if windowsStats.GetWindows() != nil {

- -					printWindowsContainerStatistics(w, windowsStats.GetWindows())

- -				}

- -				// Print VM stats if its isolated

- -				if windowsStats.VM != nil {

- -					printWindowsVMStatistics(w, windowsStats.VM)

+ -				err := printWindowsStats(w, windowsStats)

+ -				if err != nil {

+ -					return fmt.Errorf("cannot convert metrics data from windows.Statistics: %w", err)

  -				}

  -			}

   			return w.Flush()

   		case formatJSON:

   			marshaledJSON, err := json.MarshalIndent(anydata, "", "  ")

- @@ -126,83 +93,3 @@ var metricsCommand = cli.Command{

+ @@ -116,111 +87,3 @@ var metricsCommand = cli.Command{

   		}

   	},

   }
@@ -112,6 +105,34 @@ 

  -	}

  -}

  -

+ -func printWindowsStats(w *tabwriter.Writer, windowsStats *wstats.Statistics) error {

+ -	if windowsStats.GetLinux() != nil {

+ -		var stats v1.Metrics

+ -

+ -		// It cannot be casted to v1.Metrics since windowsStats is still generated by gogo/protobuf.

+ -		linux := windowsStats.GetLinux()

+ -

+ -		// But Marshal/Unmarshal works because the underlying protobuf message is compatible.

+ -		data, err := linux.Marshal()

+ -		if err != nil {

+ -			return err

+ -		}

+ -		err = proto.Unmarshal(data, &stats)

+ -		if err != nil {

+ -			return err

+ -		}

+ -

+ -		printCgroupMetricsTable(w, &stats)

+ -	} else if windowsStats.GetWindows() != nil {

+ -		printWindowsContainerStatistics(w, windowsStats.GetWindows())

+ -	}

+ -	// Print VM stats if its isolated

+ -	if windowsStats.VM != nil {

+ -		printWindowsVMStatistics(w, windowsStats.VM)

+ -	}

+ -	return nil

+ -}

+ -

  -func printWindowsContainerStatistics(w *tabwriter.Writer, stats *wstats.WindowsContainerStatistics) {

  -	fmt.Fprintf(w, "METRIC\tVALUE\t\n")

  -	fmt.Fprintf(w, "timestamp\t%s\t\n", stats.Timestamp)
@@ -153,5 +174,5 @@ 

  -	}

  -}

  -- 

- 2.28.0

+ 2.39.2

  

@@ -1,1464 +0,0 @@ 

- From 3b98ff4a9f28118973917ed46c3eee59688fcc8f Mon Sep 17 00:00:00 2001

- From: Kazuyoshi Kato <katokazu@amazon.com>

- Date: Tue, 22 Mar 2022 00:40:39 +0000

- Subject: [PATCH] Use typeurl.Any instead of github.com/gogo/protobuf/types.Any

- 

- This commit upgrades github.com/containerd/typeurl to use typeurl.Any.

- The interface hides gogo/protobuf/types.Any from containerd's Go client.

- 

- Signed-off-by: Kazuyoshi Kato <katokazu@amazon.com>

- ---

-  cmd/containerd-shim/main_unix.go          |  4 +-

-  cmd/ctr/commands/containers/containers.go |  2 +-

-  container.go                              | 10 +--

-  container_checkpoint_opts.go              |  8 +--

-  container_opts.go                         | 10 +--

-  containers/containers.go                  |  8 +--

-  containerstore.go                         | 19 ++++--

-  events.go                                 |  5 +-

-  events/events.go                          |  3 +-

-  events/exchange/exchange.go               |  8 +--

-  go.mod                                    |  2 +-

-  go.sum                                    |  3 +-

-  integration/client/container_test.go      |  8 +--

-  integration/client/go.mod                 |  2 +-

-  integration/client/go.sum                 |  3 +-

-  metadata/boltutil/helpers.go              | 20 +++---

-  metadata/containers.go                    |  3 +-

-  metadata/containers_test.go               | 83 ++++++++++++++---------

-  metrics/cgroups/metrics_test.go           |  6 +-

-  pkg/cri/server/events.go                  |  3 +-

-  pkg/cri/server/helpers.go                 |  5 +-

-  pkg/cri/server/helpers_test.go            | 13 ++++

-  pkg/cri/server/restart.go                 |  4 +-

-  protobuf/any.go                           | 47 +++++++++++++

-  protobuf/any_test.go                      | 26 +++++++

-  runtime/runtime.go                        |  8 +--

-  runtime/v1/linux/runtime.go               |  9 +--

-  runtime/v1/linux/task.go                  |  4 +-

-  runtime/v1/shim/service.go                |  3 +-

-  runtime/v2/manager.go                     |  7 +-

-  runtime/v2/runc/container.go              |  6 +-

-  runtime/v2/runc/task/service.go           |  5 +-

-  runtime/v2/runc/v1/service.go             |  5 +-

-  runtime/v2/shim.go                        |  5 +-

-  runtime/v2/shim/publisher.go              |  4 +-

-  services/containers/helpers.go            | 20 ++++--

-  services/events/service.go                |  3 +-

-  services/tasks/local.go                   |  5 +-

-  task.go                                   |  7 +-

-  39 files changed, 270 insertions(+), 126 deletions(-)

-  create mode 100644 protobuf/any.go

-  create mode 100644 protobuf/any_test.go

- 

- diff --git a/cmd/containerd-shim/main_unix.go b/cmd/containerd-shim/main_unix.go

- index 024611bf3..ef32ae38b 100644

- --- a/cmd/containerd-shim/main_unix.go

- +++ b/cmd/containerd-shim/main_unix.go

- @@ -38,12 +38,12 @@ import (

-  	"github.com/containerd/containerd/events"

-  	"github.com/containerd/containerd/namespaces"

-  	"github.com/containerd/containerd/pkg/process"

- +	"github.com/containerd/containerd/protobuf"

-  	shimlog "github.com/containerd/containerd/runtime/v1"

-  	"github.com/containerd/containerd/runtime/v1/shim"

-  	shimapi "github.com/containerd/containerd/runtime/v1/shim/v1"

-  	"github.com/containerd/containerd/sys/reaper"

-  	"github.com/containerd/ttrpc"

- -	"github.com/containerd/typeurl"

-  	ptypes "github.com/gogo/protobuf/types"

-  	"github.com/sirupsen/logrus"

-  	exec "golang.org/x/sys/execabs"

- @@ -286,7 +286,7 @@ type remoteEventsPublisher struct {

-  

-  func (l *remoteEventsPublisher) Publish(ctx context.Context, topic string, event events.Event) error {

-  	ns, _ := namespaces.Namespace(ctx)

- -	encoded, err := typeurl.MarshalAny(event)

- +	encoded, err := protobuf.MarshalAnyToProto(event)

-  	if err != nil {

-  		return err

-  	}

- diff --git a/cmd/ctr/commands/containers/containers.go b/cmd/ctr/commands/containers/containers.go

- index d1025344e..3f2d55d6c 100644

- --- a/cmd/ctr/commands/containers/containers.go

- +++ b/cmd/ctr/commands/containers/containers.go

- @@ -280,7 +280,7 @@ var infoCommand = cli.Command{

-  			return nil

-  		}

-  

- -		if info.Spec != nil && info.Spec.Value != nil {

- +		if info.Spec != nil && info.Spec.GetValue() != nil {

-  			v, err := typeurl.UnmarshalAny(info.Spec)

-  			if err != nil {

-  				return err

- diff --git a/container.go b/container.go

- index 7d8d674c8..4236fecd2 100644

- --- a/container.go

- +++ b/container.go

- @@ -32,10 +32,10 @@ import (

-  	"github.com/containerd/containerd/errdefs"

-  	"github.com/containerd/containerd/images"

-  	"github.com/containerd/containerd/oci"

- +	"github.com/containerd/containerd/protobuf"

-  	"github.com/containerd/containerd/runtime/v2/runc/options"

-  	"github.com/containerd/fifo"

-  	"github.com/containerd/typeurl"

- -	prototypes "github.com/gogo/protobuf/types"

-  	ver "github.com/opencontainers/image-spec/specs-go"

-  	ocispec "github.com/opencontainers/image-spec/specs-go/v1"

-  	"github.com/opencontainers/selinux/go-selinux/label"

- @@ -74,7 +74,7 @@ type Container interface {

-  	// SetLabels sets the provided labels for the container and returns the final label set

-  	SetLabels(context.Context, map[string]string) (map[string]string, error)

-  	// Extensions returns the extensions set on the container

- -	Extensions(context.Context) (map[string]prototypes.Any, error)

- +	Extensions(context.Context) (map[string]typeurl.Any, error)

-  	// Update a container

-  	Update(context.Context, ...UpdateContainerOpts) error

-  	// Checkpoint creates a checkpoint image of the current container

- @@ -120,7 +120,7 @@ func (c *container) Info(ctx context.Context, opts ...InfoOpts) (containers.Cont

-  	return c.metadata, nil

-  }

-  

- -func (c *container) Extensions(ctx context.Context) (map[string]prototypes.Any, error) {

- +func (c *container) Extensions(ctx context.Context) (map[string]typeurl.Any, error) {

-  	r, err := c.get(ctx)

-  	if err != nil {

-  		return nil, err

- @@ -163,7 +163,7 @@ func (c *container) Spec(ctx context.Context) (*oci.Spec, error) {

-  		return nil, err

-  	}

-  	var s oci.Spec

- -	if err := json.Unmarshal(r.Spec.Value, &s); err != nil {

- +	if err := json.Unmarshal(r.Spec.GetValue(), &s); err != nil {

-  		return nil, err

-  	}

-  	return &s, nil

- @@ -284,7 +284,7 @@ func (c *container) NewTask(ctx context.Context, ioCreate cio.Creator, opts ...N

-  		if err != nil {

-  			return nil, err

-  		}

- -		request.Options = any

- +		request.Options = protobuf.FromAny(any)

-  	}

-  	t := &task{

-  		client: c.client,

- diff --git a/container_checkpoint_opts.go b/container_checkpoint_opts.go

- index a64ef618b..ee2fa1b97 100644

- --- a/container_checkpoint_opts.go

- +++ b/container_checkpoint_opts.go

- @@ -28,9 +28,9 @@ import (

-  	"github.com/containerd/containerd/diff"

-  	"github.com/containerd/containerd/images"

-  	"github.com/containerd/containerd/platforms"

- +	"github.com/containerd/containerd/protobuf"

-  	"github.com/containerd/containerd/rootfs"

-  	"github.com/containerd/containerd/runtime/v2/runc/options"

- -	"github.com/containerd/typeurl"

-  	imagespec "github.com/opencontainers/image-spec/specs-go/v1"

-  )

-  

- @@ -56,7 +56,7 @@ func WithCheckpointImage(ctx context.Context, client *Client, c *containers.Cont

-  

-  // WithCheckpointTask includes the running task

-  func WithCheckpointTask(ctx context.Context, client *Client, c *containers.Container, index *imagespec.Index, copts *options.CheckpointOptions) error {

- -	any, err := typeurl.MarshalAny(copts)

- +	any, err := protobuf.MarshalAnyToProto(copts)

-  	if err != nil {

-  		return nil

-  	}

- @@ -97,8 +97,8 @@ func WithCheckpointTask(ctx context.Context, client *Client, c *containers.Conta

-  

-  // WithCheckpointRuntime includes the container runtime info

-  func WithCheckpointRuntime(ctx context.Context, client *Client, c *containers.Container, index *imagespec.Index, copts *options.CheckpointOptions) error {

- -	if c.Runtime.Options != nil {

- -		data, err := c.Runtime.Options.Marshal()

- +	if c.Runtime.Options != nil && c.Runtime.Options.GetValue() != nil {

- +		data, err := protobuf.FromAny(c.Runtime.Options).Marshal()

-  		if err != nil {

-  			return err

-  		}

- diff --git a/container_opts.go b/container_opts.go

- index 4d630ea6c..f005fe1c7 100644

- --- a/container_opts.go

- +++ b/container_opts.go

- @@ -27,9 +27,9 @@ import (

-  	"github.com/containerd/containerd/errdefs"

-  	"github.com/containerd/containerd/images"

-  	"github.com/containerd/containerd/oci"

- +	"github.com/containerd/containerd/protobuf"

-  	"github.com/containerd/containerd/snapshots"

-  	"github.com/containerd/typeurl"

- -	"github.com/gogo/protobuf/types"

-  	"github.com/opencontainers/image-spec/identity"

-  	v1 "github.com/opencontainers/image-spec/specs-go/v1"

-  )

- @@ -57,7 +57,7 @@ type InfoConfig struct {

-  func WithRuntime(name string, options interface{}) NewContainerOpts {

-  	return func(ctx context.Context, client *Client, c *containers.Container) error {

-  		var (

- -			any *types.Any

- +			any typeurl.Any

-  			err error

-  		)

-  		if options != nil {

- @@ -288,9 +288,9 @@ func WithContainerExtension(name string, extension interface{}) NewContainerOpts

-  		}

-  

-  		if c.Extensions == nil {

- -			c.Extensions = make(map[string]types.Any)

- +			c.Extensions = make(map[string]typeurl.Any)

-  		}

- -		c.Extensions[name] = *any

- +		c.Extensions[name] = any

-  		return nil

-  	}

-  }

- @@ -315,7 +315,7 @@ func WithSpec(s *oci.Spec, opts ...oci.SpecOpts) NewContainerOpts {

-  		}

-  

-  		var err error

- -		c.Spec, err = typeurl.MarshalAny(s)

- +		c.Spec, err = protobuf.MarshalAnyToProto(s)

-  		return err

-  	}

-  }

- diff --git a/containers/containers.go b/containers/containers.go

- index 7174bbd6a..275f8069e 100644

- --- a/containers/containers.go

- +++ b/containers/containers.go

- @@ -20,7 +20,7 @@ import (

-  	"context"

-  	"time"

-  

- -	"github.com/gogo/protobuf/types"

- +	"github.com/containerd/typeurl"

-  )

-  

-  // Container represents the set of data pinned by a container. Unless otherwise

- @@ -53,7 +53,7 @@ type Container struct {

-  	// container.

-  	//

-  	// This field is required but mutable.

- -	Spec *types.Any

- +	Spec typeurl.Any

-  

-  	// SnapshotKey specifies the snapshot key to use for the container's root

-  	// filesystem. When starting a task from this container, a caller should

- @@ -75,13 +75,13 @@ type Container struct {

-  	UpdatedAt time.Time

-  

-  	// Extensions stores client-specified metadata

- -	Extensions map[string]types.Any

- +	Extensions map[string]typeurl.Any

-  }

-  

-  // RuntimeInfo holds runtime specific information

-  type RuntimeInfo struct {

-  	Name    string

- -	Options *types.Any

- +	Options typeurl.Any

-  }

-  

-  // Store interacts with the underlying container storage

- diff --git a/containerstore.go b/containerstore.go

- index 2756e2a68..456e3e52a 100644

- --- a/containerstore.go

- +++ b/containerstore.go

- @@ -24,6 +24,8 @@ import (

-  	containersapi "github.com/containerd/containerd/api/services/containers/v1"

-  	"github.com/containerd/containerd/containers"

-  	"github.com/containerd/containerd/errdefs"

- +	"github.com/containerd/containerd/protobuf"

- +	"github.com/containerd/typeurl"

-  	ptypes "github.com/gogo/protobuf/types"

-  	"google.golang.org/grpc/codes"

-  	"google.golang.org/grpc/status"

- @@ -148,18 +150,22 @@ func (r *remoteContainers) Delete(ctx context.Context, id string) error {

-  }

-  

-  func containerToProto(container *containers.Container) containersapi.Container {

- +	extensions := make(map[string]ptypes.Any)

- +	for k, v := range container.Extensions {

- +		extensions[k] = *protobuf.FromAny(v)

- +	}

-  	return containersapi.Container{

-  		ID:     container.ID,

-  		Labels: container.Labels,

-  		Image:  container.Image,

-  		Runtime: &containersapi.Container_Runtime{

-  			Name:    container.Runtime.Name,

- -			Options: container.Runtime.Options,

- +			Options: protobuf.FromAny(container.Runtime.Options),

-  		},

- -		Spec:        container.Spec,

- +		Spec:        protobuf.FromAny(container.Spec),

-  		Snapshotter: container.Snapshotter,

-  		SnapshotKey: container.SnapshotKey,

- -		Extensions:  container.Extensions,

- +		Extensions:  extensions,

-  	}

-  }

-  

- @@ -171,6 +177,11 @@ func containerFromProto(containerpb *containersapi.Container) containers.Contain

-  			Options: containerpb.Runtime.Options,

-  		}

-  	}

- +	extensions := make(map[string]typeurl.Any)

- +	for k, v := range containerpb.Extensions {

- +		v := v

- +		extensions[k] = &v

- +	}

-  	return containers.Container{

-  		ID:          containerpb.ID,

-  		Labels:      containerpb.Labels,

- @@ -181,7 +192,7 @@ func containerFromProto(containerpb *containersapi.Container) containers.Contain

-  		SnapshotKey: containerpb.SnapshotKey,

-  		CreatedAt:   containerpb.CreatedAt,

-  		UpdatedAt:   containerpb.UpdatedAt,

- -		Extensions:  containerpb.Extensions,

- +		Extensions:  extensions,

-  	}

-  }

-  

- diff --git a/events.go b/events.go

- index 3577b7c3a..d6499ad3b 100644

- --- a/events.go

- +++ b/events.go

- @@ -22,6 +22,7 @@ import (

-  	eventsapi "github.com/containerd/containerd/api/services/events/v1"

-  	"github.com/containerd/containerd/errdefs"

-  	"github.com/containerd/containerd/events"

- +	"github.com/containerd/containerd/protobuf"

-  	"github.com/containerd/typeurl"

-  )

-  

- @@ -51,7 +52,7 @@ func (e *eventRemote) Publish(ctx context.Context, topic string, event events.Ev

-  	}

-  	req := &eventsapi.PublishRequest{

-  		Topic: topic,

- -		Event: any,

- +		Event: protobuf.FromAny(any),

-  	}

-  	if _, err := e.client.Publish(ctx, req); err != nil {

-  		return errdefs.FromGRPC(err)

- @@ -65,7 +66,7 @@ func (e *eventRemote) Forward(ctx context.Context, envelope *events.Envelope) er

-  			Timestamp: envelope.Timestamp,

-  			Namespace: envelope.Namespace,

-  			Topic:     envelope.Topic,

- -			Event:     envelope.Event,

- +			Event:     protobuf.FromAny(envelope.Event),

-  		},

-  	}

-  	if _, err := e.client.Forward(ctx, req); err != nil {

- diff --git a/events/events.go b/events/events.go

- index b7eb86f1e..8af0ec03a 100644

- --- a/events/events.go

- +++ b/events/events.go

- @@ -21,7 +21,6 @@ import (

-  	"time"

-  

-  	"github.com/containerd/typeurl"

- -	"github.com/gogo/protobuf/types"

-  )

-  

-  // Envelope provides the packaging for an event.

- @@ -29,7 +28,7 @@ type Envelope struct {

-  	Timestamp time.Time

-  	Namespace string

-  	Topic     string

- -	Event     *types.Any

- +	Event     typeurl.Any

-  }

-  

-  // Field returns the value for the given fieldpath as a string, if defined.

- diff --git a/events/exchange/exchange.go b/events/exchange/exchange.go

- index a1f385d7a..7f085dc91 100644

- --- a/events/exchange/exchange.go

- +++ b/events/exchange/exchange.go

- @@ -30,7 +30,6 @@ import (

-  	"github.com/containerd/containerd/namespaces"

-  	"github.com/containerd/typeurl"

-  	goevents "github.com/docker/go-events"

- -	"github.com/gogo/protobuf/types"

-  	"github.com/sirupsen/logrus"

-  )

-  

- @@ -63,7 +62,7 @@ func (e *Exchange) Forward(ctx context.Context, envelope *events.Envelope) (err

-  		logger := log.G(ctx).WithFields(logrus.Fields{

-  			"topic": envelope.Topic,

-  			"ns":    envelope.Namespace,

- -			"type":  envelope.Event.TypeUrl,

- +			"type":  envelope.Event.GetTypeUrl(),

-  		})

-  

-  		if err != nil {

- @@ -82,7 +81,6 @@ func (e *Exchange) Forward(ctx context.Context, envelope *events.Envelope) (err

-  func (e *Exchange) Publish(ctx context.Context, topic string, event events.Event) (err error) {

-  	var (

-  		namespace string

- -		encoded   *types.Any

-  		envelope  events.Envelope

-  	)

-  

- @@ -94,7 +92,7 @@ func (e *Exchange) Publish(ctx context.Context, topic string, event events.Event

-  		return fmt.Errorf("envelope topic %q: %w", topic, err)

-  	}

-  

- -	encoded, err = typeurl.MarshalAny(event)

- +	encoded, err := typeurl.MarshalAny(event)

-  	if err != nil {

-  		return err

-  	}

- @@ -108,7 +106,7 @@ func (e *Exchange) Publish(ctx context.Context, topic string, event events.Event

-  		logger := log.G(ctx).WithFields(logrus.Fields{

-  			"topic": envelope.Topic,

-  			"ns":    envelope.Namespace,

- -			"type":  envelope.Event.TypeUrl,

- +			"type":  envelope.Event.GetTypeUrl(),

-  		})

-  

-  		if err != nil {

- diff --git a/go.mod b/go.mod

- index 77f07d3ae..f42acf904 100644

- --- a/go.mod

- +++ b/go.mod

- @@ -17,7 +17,7 @@ require (

-  	github.com/containerd/imgcrypt v1.1.4

-  	github.com/containerd/nri v0.1.0

-  	github.com/containerd/ttrpc v1.1.0

- -	github.com/containerd/typeurl v1.0.2

- +	github.com/containerd/typeurl v1.0.3-0.20220324183432-6193a0e03259

-  	github.com/containerd/zfs v1.0.0

-  	github.com/containernetworking/cni v1.1.1

-  	github.com/containernetworking/plugins v1.1.1

- diff --git a/go.sum b/go.sum

- index eefcc88f7..e4816994f 100644

- --- a/go.sum

- +++ b/go.sum

- @@ -260,8 +260,9 @@ github.com/containerd/ttrpc v1.1.0/go.mod h1:XX4ZTnoOId4HklF4edwc4DcqskFZuvXB1Ev

-  github.com/containerd/typeurl v0.0.0-20180627222232-a93fcdb778cd/go.mod h1:Cm3kwCdlkCfMSHURc+r6fwoGH6/F1hH3S4sg0rLFWPc=

-  github.com/containerd/typeurl v0.0.0-20190911142611-5eb25027c9fd/go.mod h1:GeKYzf2pQcqv7tJ0AoCuuhtnqhva5LNU3U+OyKxxJpk=

-  github.com/containerd/typeurl v1.0.1/go.mod h1:TB1hUtrpaiO88KEK56ijojHS1+NeF0izUACaJW2mdXg=

- -github.com/containerd/typeurl v1.0.2 h1:Chlt8zIieDbzQFzXzAeBEF92KhExuE4p9p92/QmY7aY=

-  github.com/containerd/typeurl v1.0.2/go.mod h1:9trJWW2sRlGub4wZJRTW83VtbOLS6hwcDZXTn6oPz9s=

- +github.com/containerd/typeurl v1.0.3-0.20220324183432-6193a0e03259 h1:bJv9qgjarrsdd4XIIczeRdYXON88Fgn3GdXVfnQjcSo=

- +github.com/containerd/typeurl v1.0.3-0.20220324183432-6193a0e03259/go.mod h1:HDkcKOXRnX6yKnXv3P0QrogFi0DoiauK/LpQi961f0A=

-  github.com/containerd/zfs v0.0.0-20200918131355-0a33824f23a2/go.mod h1:8IgZOBdv8fAgXddBT4dBXJPtxyRsejFIpXoklgxgEjw=

-  github.com/containerd/zfs v0.0.0-20210301145711-11e8f1707f62/go.mod h1:A9zfAbMlQwE+/is6hi0Xw8ktpL+6glmqZYtevJgaB8Y=

-  github.com/containerd/zfs v0.0.0-20210315114300-dde8f0fda960/go.mod h1:m+m51S1DvAP6r3FcmYCp54bQ34pyOwTieQDNRIRHsFY=

- diff --git a/integration/client/container_test.go b/integration/client/container_test.go

- index d05ebd1ec..c12645e66 100644

- --- a/integration/client/container_test.go

- +++ b/integration/client/container_test.go

- @@ -1440,11 +1440,11 @@ func TestContainerExtensions(t *testing.T) {

-  		if len(cExts) != 1 {

-  			t.Errorf("expected 1 container extension")

-  		}

- -		if cExts["hello"].TypeUrl != ext.TypeUrl {

- -			t.Errorf("got unexpected type url for extension: %s", cExts["hello"].TypeUrl)

- +		if actual := cExts["hello"].GetTypeUrl(); actual != ext.TypeUrl {

- +			t.Errorf("got unexpected type url for extension: %s", actual)

-  		}

- -		if !bytes.Equal(cExts["hello"].Value, ext.Value) {

- -			t.Errorf("expected extension value %q, got: %q", ext.Value, cExts["hello"].Value)

- +		if actual := cExts["hello"].GetValue(); !bytes.Equal(actual, ext.Value) {

- +			t.Errorf("expected extension value %q, got: %q", ext.Value, actual)

-  		}

-  	}

-  

- diff --git a/integration/client/go.mod b/integration/client/go.mod

- index f49dca653..bfd8b24ba 100644

- --- a/integration/client/go.mod

- +++ b/integration/client/go.mod

- @@ -10,7 +10,7 @@ require (

-  	github.com/containerd/containerd v1.6.1

-  	github.com/containerd/go-runc v1.0.0

-  	github.com/containerd/ttrpc v1.1.0

- -	github.com/containerd/typeurl v1.0.2

- +	github.com/containerd/typeurl v1.0.3-0.20220324183432-6193a0e03259

-  	github.com/gogo/protobuf v1.3.2

-  	github.com/opencontainers/go-digest v1.0.0

-  	github.com/opencontainers/image-spec v1.0.3-0.20211202183452-c5a74bcca799

- diff --git a/integration/client/go.sum b/integration/client/go.sum

- index 9ca7044a8..5351d9eb6 100644

- --- a/integration/client/go.sum

- +++ b/integration/client/go.sum

- @@ -146,8 +146,9 @@ github.com/containerd/ttrpc v1.0.2/go.mod h1:UAxOpgT9ziI0gJrmKvgcZivgxOp8iFPSk8h

-  github.com/containerd/ttrpc v1.1.0 h1:GbtyLRxb0gOLR0TYQWt3O6B0NvT8tMdorEHqIQo/lWI=

-  github.com/containerd/ttrpc v1.1.0/go.mod h1:XX4ZTnoOId4HklF4edwc4DcqskFZuvXB1Evzy5KFQpQ=

-  github.com/containerd/typeurl v1.0.1/go.mod h1:TB1hUtrpaiO88KEK56ijojHS1+NeF0izUACaJW2mdXg=

- -github.com/containerd/typeurl v1.0.2 h1:Chlt8zIieDbzQFzXzAeBEF92KhExuE4p9p92/QmY7aY=

-  github.com/containerd/typeurl v1.0.2/go.mod h1:9trJWW2sRlGub4wZJRTW83VtbOLS6hwcDZXTn6oPz9s=

- +github.com/containerd/typeurl v1.0.3-0.20220324183432-6193a0e03259 h1:bJv9qgjarrsdd4XIIczeRdYXON88Fgn3GdXVfnQjcSo=

- +github.com/containerd/typeurl v1.0.3-0.20220324183432-6193a0e03259/go.mod h1:HDkcKOXRnX6yKnXv3P0QrogFi0DoiauK/LpQi961f0A=

-  github.com/containerd/zfs v1.0.0/go.mod h1:m+m51S1DvAP6r3FcmYCp54bQ34pyOwTieQDNRIRHsFY=

-  github.com/containernetworking/cni v1.0.1/go.mod h1:AKuhXbN5EzmD4yTNtfSsX3tPcmtrBI6QcRV0NiNt15Y=

-  github.com/containernetworking/cni v1.1.1/go.mod h1:sDpYKmGVENF3s6uvMvGgldDWeG8dMxakj/u+i9ht9vw=

- diff --git a/metadata/boltutil/helpers.go b/metadata/boltutil/helpers.go

- index 4722a5226..2b2b0ad1e 100644

- --- a/metadata/boltutil/helpers.go

- +++ b/metadata/boltutil/helpers.go

- @@ -20,6 +20,8 @@ import (

-  	"fmt"

-  	"time"

-  

- +	"github.com/containerd/containerd/protobuf"

- +	"github.com/containerd/typeurl"

-  	"github.com/gogo/protobuf/proto"

-  	"github.com/gogo/protobuf/types"

-  	bolt "go.etcd.io/bbolt"

- @@ -151,7 +153,7 @@ func WriteTimestamps(bkt *bolt.Bucket, created, updated time.Time) error {

-  

-  // WriteExtensions will write a KV map to the given bucket,

-  // where `K` is a string key and `V` is a protobuf's Any type that represents a generic extension.

- -func WriteExtensions(bkt *bolt.Bucket, extensions map[string]types.Any) error {

- +func WriteExtensions(bkt *bolt.Bucket, extensions map[string]typeurl.Any) error {

-  	if len(extensions) == 0 {

-  		return nil

-  	}

- @@ -162,7 +164,8 @@ func WriteExtensions(bkt *bolt.Bucket, extensions map[string]types.Any) error {

-  	}

-  

-  	for name, ext := range extensions {

- -		p, err := proto.Marshal(&ext)

- +		ext := protobuf.FromAny(ext)

- +		p, err := proto.Marshal(ext)

-  		if err != nil {

-  			return err

-  		}

- @@ -176,9 +179,9 @@ func WriteExtensions(bkt *bolt.Bucket, extensions map[string]types.Any) error {

-  }

-  

-  // ReadExtensions will read back a map of extensions from the given bucket, previously written by WriteExtensions

- -func ReadExtensions(bkt *bolt.Bucket) (map[string]types.Any, error) {

- +func ReadExtensions(bkt *bolt.Bucket) (map[string]typeurl.Any, error) {

-  	var (

- -		extensions = make(map[string]types.Any)

- +		extensions = make(map[string]typeurl.Any)

-  		ebkt       = bkt.Bucket(bucketKeyExtensions)

-  	)

-  

- @@ -192,7 +195,7 @@ func ReadExtensions(bkt *bolt.Bucket) (map[string]types.Any, error) {

-  			return err

-  		}

-  

- -		extensions[string(k)] = t

- +		extensions[string(k)] = &t

-  		return nil

-  	}); err != nil {

-  		return nil, err

- @@ -202,12 +205,13 @@ func ReadExtensions(bkt *bolt.Bucket) (map[string]types.Any, error) {

-  }

-  

-  // WriteAny write a protobuf's Any type to the bucket

- -func WriteAny(bkt *bolt.Bucket, name []byte, any *types.Any) error {

- -	if any == nil {

- +func WriteAny(bkt *bolt.Bucket, name []byte, any typeurl.Any) error {

- +	pbany := protobuf.FromAny(any)

- +	if pbany == nil {

-  		return nil

-  	}

-  

- -	data, err := proto.Marshal(any)

- +	data, err := proto.Marshal(pbany)

-  	if err != nil {

-  		return err

-  	}

- diff --git a/metadata/containers.go b/metadata/containers.go

- index 97002e588..b27dc0f87 100644

- --- a/metadata/containers.go

- +++ b/metadata/containers.go

- @@ -30,6 +30,7 @@ import (

-  	"github.com/containerd/containerd/labels"

-  	"github.com/containerd/containerd/metadata/boltutil"

-  	"github.com/containerd/containerd/namespaces"

- +	"github.com/containerd/typeurl"

-  	"github.com/gogo/protobuf/proto"

-  	"github.com/gogo/protobuf/types"

-  	bolt "go.etcd.io/bbolt"

- @@ -211,7 +212,7 @@ func (s *containerStore) Update(ctx context.Context, container containers.Contai

-  

-  			if strings.HasPrefix(path, "extensions.") {

-  				if updated.Extensions == nil {

- -					updated.Extensions = map[string]types.Any{}

- +					updated.Extensions = map[string]typeurl.Any{}

-  				}

-  				key := strings.TrimPrefix(path, "extensions.")

-  				updated.Extensions[key] = container.Extensions[key]

- diff --git a/metadata/containers_test.go b/metadata/containers_test.go

- index c0192a458..7be6e0f2d 100644

- --- a/metadata/containers_test.go

- +++ b/metadata/containers_test.go

- @@ -32,10 +32,13 @@ import (

-  	"github.com/containerd/containerd/filters"

-  	"github.com/containerd/containerd/log/logtest"

-  	"github.com/containerd/containerd/namespaces"

- +	"github.com/containerd/containerd/protobuf"

-  	"github.com/containerd/typeurl"

-  	"github.com/gogo/protobuf/types"

- +	"github.com/google/go-cmp/cmp"

-  	specs "github.com/opencontainers/runtime-spec/specs-go"

-  	bolt "go.etcd.io/bbolt"

- +	"gotest.tools/v3/assert"

-  )

-  

-  func init() {

- @@ -49,7 +52,7 @@ func TestContainersList(t *testing.T) {

-  	store := NewContainerStore(NewDB(db, nil, nil))

-  

-  	spec := &specs.Spec{}

- -	encoded, err := typeurl.MarshalAny(spec)

- +	encoded, err := protobuf.MarshalAnyToProto(spec)

-  	if err != nil {

-  		t.Fatal(err)

-  	}

- @@ -180,13 +183,13 @@ func TestContainersCreateUpdateDelete(t *testing.T) {

-  	store := NewContainerStore(NewDB(db, nil, nil))

-  

-  	spec := &specs.Spec{}

- -	encoded, err := typeurl.MarshalAny(spec)

- +	encoded, err := protobuf.MarshalAnyToProto(spec)

-  	if err != nil {

-  		t.Fatal(err)

-  	}

-  

-  	spec.Annotations = map[string]string{"updated": "true"}

- -	encodedUpdated, err := typeurl.MarshalAny(spec)

- +	encodedUpdated, err := protobuf.MarshalAnyToProto(spec)

-  	if err != nil {

-  		t.Fatal(err)

-  	}

- @@ -468,8 +471,8 @@ func TestContainersCreateUpdateDelete(t *testing.T) {

-  				Runtime: containers.RuntimeInfo{

-  					Name: "testruntime",

-  				},

- -				Extensions: map[string]types.Any{

- -					"hello": {

- +				Extensions: map[string]typeurl.Any{

- +					"hello": &types.Any{

-  						TypeUrl: "test.update.extensions",

-  						Value:   []byte("hello"),

-  					},

- @@ -480,8 +483,8 @@ func TestContainersCreateUpdateDelete(t *testing.T) {

-  				Runtime: containers.RuntimeInfo{

-  					Name: "testruntime",

-  				},

- -				Extensions: map[string]types.Any{

- -					"hello": {

- +				Extensions: map[string]typeurl.Any{

- +					"hello": &types.Any{

-  						TypeUrl: "test.update.extensions",

-  						Value:   []byte("world"),

-  					},

- @@ -492,8 +495,8 @@ func TestContainersCreateUpdateDelete(t *testing.T) {

-  				Runtime: containers.RuntimeInfo{

-  					Name: "testruntime",

-  				},

- -				Extensions: map[string]types.Any{

- -					"hello": {

- +				Extensions: map[string]typeurl.Any{

- +					"hello": &types.Any{

-  						TypeUrl: "test.update.extensions",

-  						Value:   []byte("world"),

-  					},

- @@ -507,8 +510,8 @@ func TestContainersCreateUpdateDelete(t *testing.T) {

-  				Runtime: containers.RuntimeInfo{

-  					Name: "testruntime",

-  				},

- -				Extensions: map[string]types.Any{

- -					"hello": {

- +				Extensions: map[string]typeurl.Any{

- +					"hello": &types.Any{

-  						TypeUrl: "test.update.extensions",

-  						Value:   []byte("hello"),

-  					},

- @@ -519,8 +522,8 @@ func TestContainersCreateUpdateDelete(t *testing.T) {

-  				Runtime: containers.RuntimeInfo{

-  					Name: "testruntime",

-  				},

- -				Extensions: map[string]types.Any{

- -					"hello": {

- +				Extensions: map[string]typeurl.Any{

- +					"hello": &types.Any{

-  						TypeUrl: "test.update.extensions",

-  						Value:   []byte("world"),

-  					},

- @@ -532,8 +535,8 @@ func TestContainersCreateUpdateDelete(t *testing.T) {

-  				Runtime: containers.RuntimeInfo{

-  					Name: "testruntime",

-  				},

- -				Extensions: map[string]types.Any{

- -					"hello": {

- +				Extensions: map[string]typeurl.Any{

- +					"hello": &types.Any{

-  						TypeUrl: "test.update.extensions",

-  						Value:   []byte("hello"),

-  					},

- @@ -547,8 +550,8 @@ func TestContainersCreateUpdateDelete(t *testing.T) {

-  				Runtime: containers.RuntimeInfo{

-  					Name: "testruntime",

-  				},

- -				Extensions: map[string]types.Any{

- -					"hello": {

- +				Extensions: map[string]typeurl.Any{

- +					"hello": &types.Any{

-  						TypeUrl: "test.update.extensions",

-  						Value:   []byte("hello"),

-  					},

- @@ -558,8 +561,8 @@ func TestContainersCreateUpdateDelete(t *testing.T) {

-  				Labels: map[string]string{

-  					"foo": "one",

-  				},

- -				Extensions: map[string]types.Any{

- -					"hello": {

- +				Extensions: map[string]typeurl.Any{

- +					"hello": &types.Any{

-  						TypeUrl: "test.update.extensions",

-  						Value:   []byte("world"),

-  					},

- @@ -571,8 +574,8 @@ func TestContainersCreateUpdateDelete(t *testing.T) {

-  				Runtime: containers.RuntimeInfo{

-  					Name: "testruntime",

-  				},

- -				Extensions: map[string]types.Any{

- -					"hello": {

- +				Extensions: map[string]typeurl.Any{

- +					"hello": &types.Any{

-  						TypeUrl: "test.update.extensions",

-  						Value:   []byte("world"),

-  					},

- @@ -586,21 +589,21 @@ func TestContainersCreateUpdateDelete(t *testing.T) {

-  				Runtime: containers.RuntimeInfo{

-  					Name: "testruntime",

-  				},

- -				Extensions: map[string]types.Any{

- +				Extensions: map[string]typeurl.Any{

-  					// leaves hello in place.

- -					"hello": {

- +					"hello": &types.Any{

-  						TypeUrl: "test.update.extensions",

-  						Value:   []byte("hello"),

-  					},

-  				},

-  			},

-  			input: containers.Container{

- -				Extensions: map[string]types.Any{

- -					"hello": {

- +				Extensions: map[string]typeurl.Any{

- +					"hello": &types.Any{

-  						TypeUrl: "test.update.extensions",

-  						Value:   []byte("universe"), // this will be ignored

-  					},

- -					"bar": {

- +					"bar": &types.Any{

-  						TypeUrl: "test.update.extensions",

-  						Value:   []byte("foo"), // this will be added

-  					},

- @@ -612,12 +615,12 @@ func TestContainersCreateUpdateDelete(t *testing.T) {

-  				Runtime: containers.RuntimeInfo{

-  					Name: "testruntime",

-  				},

- -				Extensions: map[string]types.Any{

- -					"hello": {

- +				Extensions: map[string]typeurl.Any{

- +					"hello": &types.Any{

-  						TypeUrl: "test.update.extensions",

-  						Value:   []byte("hello"), // remains as world

-  					},

- -					"bar": {

- +					"bar": &types.Any{

-  						TypeUrl: "test.update.extensions",

-  						Value:   []byte("foo"), // this will be added

-  					},

- @@ -703,10 +706,26 @@ func checkContainerTimestamps(t *testing.T, c *containers.Container, now time.Ti

-  	}

-  }

-  

- -func checkContainersEqual(t *testing.T, a, b *containers.Container, format string, args ...interface{}) {

- -	if !reflect.DeepEqual(a, b) {

- -		t.Fatalf("containers not equal \n\t%v != \n\t%v: "+format, append([]interface{}{a, b}, args...)...)

- +// isNil returns true if the given parameter is nil or typed nil.

- +func isNil(x interface{}) bool {

- +	if x == nil {

- +		return true

-  	}

- +	v := reflect.ValueOf(x)

- +	return v.Kind() == reflect.Ptr && v.IsNil()

- +}

- +

- +func checkContainersEqual(t *testing.T, a, b *containers.Container, format string, args ...interface{}) {

- +	// Ignore the difference of nil and typed nil.

- +	opt := cmp.FilterValues(

- +		func(x, y interface{}) bool {

- +			return isNil(x) && isNil(y)

- +		},

- +		cmp.Comparer(func(_, _ interface{}) bool {

- +			return true

- +		}),

- +	)

- +	assert.DeepEqual(t, a, b, opt)

-  }

-  

-  func testEnv(t *testing.T) (context.Context, *bolt.DB, func()) {

- diff --git a/metrics/cgroups/metrics_test.go b/metrics/cgroups/metrics_test.go

- index c71ea60a5..c362ea3b9 100644

- --- a/metrics/cgroups/metrics_test.go

- +++ b/metrics/cgroups/metrics_test.go

- @@ -32,7 +32,7 @@ import (

-  	v2 "github.com/containerd/containerd/metrics/cgroups/v2"

-  	v1types "github.com/containerd/containerd/metrics/types/v1"

-  	v2types "github.com/containerd/containerd/metrics/types/v2"

- -	"github.com/containerd/typeurl"

- +	"github.com/containerd/containerd/protobuf"

-  	"github.com/prometheus/client_golang/prometheus"

-  

-  	metrics "github.com/docker/go-metrics"

- @@ -152,7 +152,7 @@ func (t *mockStatT) Namespace() string {

-  

-  func (t *mockStatT) Stats(context.Context) (*types.Any, error) {

-  	if t.isV1 {

- -		return typeurl.MarshalAny(&v1types.Metrics{})

- +		return protobuf.MarshalAnyToProto(&v1types.Metrics{})

-  	}

- -	return typeurl.MarshalAny(&v2types.Metrics{})

- +	return protobuf.MarshalAnyToProto(&v2types.Metrics{})

-  }

- diff --git a/pkg/cri/server/events.go b/pkg/cri/server/events.go

- index c8ffdadbf..fbecb29a0 100644

- --- a/pkg/cri/server/events.go

- +++ b/pkg/cri/server/events.go

- @@ -32,7 +32,6 @@ import (

-  	sandboxstore "github.com/containerd/containerd/pkg/cri/store/sandbox"

-  	ctrdutil "github.com/containerd/containerd/pkg/cri/util"

-  	"github.com/containerd/typeurl"

- -	gogotypes "github.com/gogo/protobuf/types"

-  	"github.com/sirupsen/logrus"

-  	"golang.org/x/net/context"

-  	"k8s.io/utils/clock"

- @@ -207,7 +206,7 @@ func (em *eventMonitor) startContainerExitMonitor(ctx context.Context, id string

-  	return stopCh

-  }

-  

- -func convertEvent(e *gogotypes.Any) (string, interface{}, error) {

- +func convertEvent(e typeurl.Any) (string, interface{}, error) {

-  	id := ""

-  	evt, err := typeurl.UnmarshalAny(e)

-  	if err != nil {

- diff --git a/pkg/cri/server/helpers.go b/pkg/cri/server/helpers.go

- index a8498116d..2b9c115e7 100644

- --- a/pkg/cri/server/helpers.go

- +++ b/pkg/cri/server/helpers.go

- @@ -375,10 +375,11 @@ func getRuntimeOptionsType(t string) interface{} {

-  

-  // getRuntimeOptions get runtime options from container metadata.

-  func getRuntimeOptions(c containers.Container) (interface{}, error) {

- -	if c.Runtime.Options == nil {

- +	from := c.Runtime.Options

- +	if from == nil || from.GetValue() == nil {

-  		return nil, nil

-  	}

- -	opts, err := typeurl.UnmarshalAny(c.Runtime.Options)

- +	opts, err := typeurl.UnmarshalAny(from)

-  	if err != nil {

-  		return nil, err

-  	}

- diff --git a/pkg/cri/server/helpers_test.go b/pkg/cri/server/helpers_test.go

- index c0c1c6e75..f22c05b56 100644

- --- a/pkg/cri/server/helpers_test.go

- +++ b/pkg/cri/server/helpers_test.go

- @@ -23,6 +23,7 @@ import (

-  	"testing"

-  	"time"

-  

- +	"github.com/containerd/containerd/containers"

-  	"github.com/containerd/containerd/errdefs"

-  	"github.com/containerd/containerd/oci"

-  	criconfig "github.com/containerd/containerd/pkg/cri/config"

- @@ -32,6 +33,8 @@ import (

-  	"github.com/containerd/containerd/reference/docker"

-  	"github.com/containerd/containerd/runtime/linux/runctypes"

-  	runcoptions "github.com/containerd/containerd/runtime/v2/runc/options"

- +	"github.com/containerd/typeurl"

- +	"github.com/gogo/protobuf/types"

-  

-  	imagedigest "github.com/opencontainers/go-digest"

-  	runtimespec "github.com/opencontainers/runtime-spec/specs-go"

- @@ -602,3 +605,13 @@ func TestValidateTargetContainer(t *testing.T) {

-  	}

-  

-  }

- +

- +func TestGetRuntimeOptions(t *testing.T) {

- +	_, err := getRuntimeOptions(containers.Container{})

- +	require.NoError(t, err)

- +

- +	var pbany *types.Any               // This is nil.

- +	var typeurlAny typeurl.Any = pbany // This is typed nil.

- +	_, err = getRuntimeOptions(containers.Container{Runtime: containers.RuntimeInfo{Options: typeurlAny}})

- +	require.NoError(t, err)

- +}

- diff --git a/pkg/cri/server/restart.go b/pkg/cri/server/restart.go

- index f5f3e5083..f7db3f7b3 100644

- --- a/pkg/cri/server/restart.go

- +++ b/pkg/cri/server/restart.go

- @@ -166,7 +166,7 @@ func (c *criService) loadContainer(ctx context.Context, cntr containerd.Containe

-  	if !ok {

-  		return container, fmt.Errorf("metadata extension %q not found", containerMetadataExtension)

-  	}

- -	data, err := typeurl.UnmarshalAny(&ext)

- +	data, err := typeurl.UnmarshalAny(ext)

-  	if err != nil {

-  		return container, fmt.Errorf("failed to unmarshal metadata extension %q: %w", ext, err)

-  	}

- @@ -335,7 +335,7 @@ func (c *criService) loadSandbox(ctx context.Context, cntr containerd.Container)

-  	if !ok {

-  		return sandbox, fmt.Errorf("metadata extension %q not found", sandboxMetadataExtension)

-  	}

- -	data, err := typeurl.UnmarshalAny(&ext)

- +	data, err := typeurl.UnmarshalAny(ext)

-  	if err != nil {

-  		return sandbox, fmt.Errorf("failed to unmarshal metadata extension %q: %w", ext, err)

-  	}

- diff --git a/protobuf/any.go b/protobuf/any.go

- new file mode 100644

- index 000000000..0f6671765

- --- /dev/null

- +++ b/protobuf/any.go

- @@ -0,0 +1,47 @@

- +/*

- +   Copyright The containerd Authors.

- +

- +   Licensed under the Apache License, Version 2.0 (the "License");

- +   you may not use this file except in compliance with the License.

- +   You may obtain a copy of the License at

- +

- +       http://www.apache.org/licenses/LICENSE-2.0

- +

- +   Unless required by applicable law or agreed to in writing, software

- +   distributed under the License is distributed on an "AS IS" BASIS,

- +   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.

- +   See the License for the specific language governing permissions and

- +   limitations under the License.

- +*/

- +

- +package protobuf

- +

- +import (

- +	"github.com/containerd/typeurl"

- +	"github.com/gogo/protobuf/types"

- +)

- +

- +// FromAny converts typeurl.Any to github.com/gogo/protobuf/types.Any.

- +func FromAny(from typeurl.Any) *types.Any {

- +	if from == nil {

- +		return nil

- +	}

- +

- +	if pbany, ok := from.(*types.Any); ok {

- +		return pbany

- +	}

- +

- +	return &types.Any{

- +		TypeUrl: from.GetTypeUrl(),

- +		Value:   from.GetValue(),

- +	}

- +}

- +

- +// FromAny converts an arbitrary interface to github.com/gogo/protobuf/types.Any.

- +func MarshalAnyToProto(from interface{}) (*types.Any, error) {

- +	any, err := typeurl.MarshalAny(from)

- +	if err != nil {

- +		return nil, err

- +	}

- +	return FromAny(any), nil

- +}

- diff --git a/protobuf/any_test.go b/protobuf/any_test.go

- new file mode 100644

- index 000000000..7a74ec16c

- --- /dev/null

- +++ b/protobuf/any_test.go

- @@ -0,0 +1,26 @@

- +/*

- +   Copyright The containerd Authors.

- +

- +   Licensed under the Apache License, Version 2.0 (the "License");

- +   you may not use this file except in compliance with the License.

- +   You may obtain a copy of the License at

- +

- +       http://www.apache.org/licenses/LICENSE-2.0

- +

- +   Unless required by applicable law or agreed to in writing, software

- +   distributed under the License is distributed on an "AS IS" BASIS,

- +   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.

- +   See the License for the specific language governing permissions and

- +   limitations under the License.

- +*/

- +

- +package protobuf

- +

- +import "testing"

- +

- +func TestFromAny(t *testing.T) {

- +	actual := FromAny(nil)

- +	if actual != nil {

- +		t.Fatalf("expected nil, got %v", actual)

- +	}

- +}

- diff --git a/runtime/runtime.go b/runtime/runtime.go

- index 84aaa8ac6..1ca22ee2b 100644

- --- a/runtime/runtime.go

- +++ b/runtime/runtime.go

- @@ -21,7 +21,7 @@ import (

-  	"time"

-  

-  	"github.com/containerd/containerd/mount"

- -	"github.com/gogo/protobuf/types"

- +	"github.com/containerd/typeurl"

-  )

-  

-  // IO holds process IO information

- @@ -35,7 +35,7 @@ type IO struct {

-  // CreateOpts contains task creation data

-  type CreateOpts struct {

-  	// Spec is the OCI runtime spec

- -	Spec *types.Any

- +	Spec typeurl.Any

-  	// Rootfs mounts to perform to gain access to the container's filesystem

-  	Rootfs []mount.Mount

-  	// IO for the container's main process

- @@ -43,9 +43,9 @@ type CreateOpts struct {

-  	// Checkpoint digest to restore container state

-  	Checkpoint string

-  	// RuntimeOptions for the runtime

- -	RuntimeOptions *types.Any

- +	RuntimeOptions typeurl.Any

-  	// TaskOptions received for the task

- -	TaskOptions *types.Any

- +	TaskOptions typeurl.Any

-  	// Runtime name to use (e.g. `io.containerd.NAME.VERSION`).

-  	// As an alternative full abs path to binary may be specified instead.

-  	Runtime string

- diff --git a/runtime/v1/linux/runtime.go b/runtime/v1/linux/runtime.go

- index b6d53820a..ad7a0b67e 100644

- --- a/runtime/v1/linux/runtime.go

- +++ b/runtime/v1/linux/runtime.go

- @@ -41,6 +41,7 @@ import (

-  	"github.com/containerd/containerd/pkg/process"

-  	"github.com/containerd/containerd/platforms"

-  	"github.com/containerd/containerd/plugin"

- +	"github.com/containerd/containerd/protobuf"

-  	"github.com/containerd/containerd/runtime"

-  	"github.com/containerd/containerd/runtime/linux/runctypes"

-  	v1 "github.com/containerd/containerd/runtime/v1"

- @@ -178,7 +179,7 @@ func (r *Runtime) Create(ctx context.Context, id string, opts runtime.CreateOpts

-  	bundle, err := newBundle(id,

-  		filepath.Join(r.state, namespace),

-  		filepath.Join(r.root, namespace),

- -		opts.Spec.Value)

- +		opts.Spec.GetValue())

-  	if err != nil {

-  		return nil, err

-  	}

- @@ -191,7 +192,7 @@ func (r *Runtime) Create(ctx context.Context, id string, opts runtime.CreateOpts

-  	shimopt := ShimLocal(r.config, r.events)

-  	if !r.config.NoShim {

-  		var cgroup string

- -		if opts.TaskOptions != nil {

- +		if opts.TaskOptions != nil && opts.TaskOptions.GetValue() != nil {

-  			v, err := typeurl.UnmarshalAny(opts.TaskOptions)

-  			if err != nil {

-  				return nil, err

- @@ -244,7 +245,7 @@ func (r *Runtime) Create(ctx context.Context, id string, opts runtime.CreateOpts

-  		Stderr:     opts.IO.Stderr,

-  		Terminal:   opts.IO.Terminal,

-  		Checkpoint: opts.Checkpoint,

- -		Options:    opts.TaskOptions,

- +		Options:    protobuf.FromAny(opts.TaskOptions),

-  	}

-  	for _, m := range opts.Rootfs {

-  		sopts.Rootfs = append(sopts.Rootfs, &types.Mount{

- @@ -537,7 +538,7 @@ func (r *Runtime) getRuncOptions(ctx context.Context, id string) (*runctypes.Run

-  		return nil, err

-  	}

-  

- -	if container.Runtime.Options != nil {

- +	if container.Runtime.Options != nil && container.Runtime.Options.GetValue() != nil {

-  		v, err := typeurl.UnmarshalAny(container.Runtime.Options)

-  		if err != nil {

-  			return nil, err

- diff --git a/runtime/v1/linux/task.go b/runtime/v1/linux/task.go

- index 3ac7839ff..44c89e5c2 100644

- --- a/runtime/v1/linux/task.go

- +++ b/runtime/v1/linux/task.go

- @@ -32,11 +32,11 @@ import (

-  	"github.com/containerd/containerd/events/exchange"

-  	"github.com/containerd/containerd/identifiers"

-  	"github.com/containerd/containerd/log"

- +	"github.com/containerd/containerd/protobuf"

-  	"github.com/containerd/containerd/runtime"

-  	"github.com/containerd/containerd/runtime/v1/shim/client"

-  	"github.com/containerd/containerd/runtime/v1/shim/v1"

-  	"github.com/containerd/ttrpc"

- -	"github.com/containerd/typeurl"

-  	"github.com/gogo/protobuf/types"

-  )

-  

- @@ -340,7 +340,7 @@ func (t *Task) Stats(ctx context.Context) (*types.Any, error) {

-  	if err != nil {

-  		return nil, err

-  	}

- -	return typeurl.MarshalAny(stats)

- +	return protobuf.MarshalAnyToProto(stats)

-  }

-  

-  // Cgroup returns the underlying cgroup for a linux task

- diff --git a/runtime/v1/shim/service.go b/runtime/v1/shim/service.go

- index a08757d0a..926134821 100644

- --- a/runtime/v1/shim/service.go

- +++ b/runtime/v1/shim/service.go

- @@ -37,6 +37,7 @@ import (

-  	"github.com/containerd/containerd/namespaces"

-  	"github.com/containerd/containerd/pkg/process"

-  	"github.com/containerd/containerd/pkg/stdio"

- +	"github.com/containerd/containerd/protobuf"

-  	"github.com/containerd/containerd/runtime"

-  	"github.com/containerd/containerd/runtime/linux/runctypes"

-  	shimapi "github.com/containerd/containerd/runtime/v1/shim/v1"

- @@ -412,7 +413,7 @@ func (s *Service) ListPids(ctx context.Context, r *shimapi.ListPidsRequest) (*sh

-  				if err != nil {

-  					return nil, fmt.Errorf("failed to marshal process %d info: %w", pid, err)

-  				}

- -				pInfo.Info = a

- +				pInfo.Info = protobuf.FromAny(a)

-  				break

-  			}

-  		}

- diff --git a/runtime/v2/manager.go b/runtime/v2/manager.go

- index 1927cbb3f..505d5d896 100644

- --- a/runtime/v2/manager.go

- +++ b/runtime/v2/manager.go

- @@ -33,6 +33,7 @@ import (

-  	"github.com/containerd/containerd/pkg/timeout"

-  	"github.com/containerd/containerd/platforms"

-  	"github.com/containerd/containerd/plugin"

- +	"github.com/containerd/containerd/protobuf"

-  	"github.com/containerd/containerd/runtime"

-  	shimbinary "github.com/containerd/containerd/runtime/v2/shim"

-  	"github.com/containerd/containerd/runtime/v2/task"

- @@ -156,7 +157,7 @@ func (m *ShimManager) ID() string {

-  

-  // Start launches a new shim instance

-  func (m *ShimManager) Start(ctx context.Context, id string, opts runtime.CreateOpts) (_ ShimProcess, retErr error) {

- -	bundle, err := NewBundle(ctx, m.root, m.state, id, opts.Spec.Value)

- +	bundle, err := NewBundle(ctx, m.root, m.state, id, opts.Spec.GetValue())

-  	if err != nil {

-  		return nil, err

-  	}

- @@ -197,7 +198,7 @@ func (m *ShimManager) startShim(ctx context.Context, bundle *Bundle, id string,

-  	}

-  

-  	topts := opts.TaskOptions

- -	if topts == nil {

- +	if topts == nil || topts.GetValue() == nil {

-  		topts = opts.RuntimeOptions

-  	}

-  

- @@ -212,7 +213,7 @@ func (m *ShimManager) startShim(ctx context.Context, bundle *Bundle, id string,

-  		ttrpcAddress: m.containerdTTRPCAddress,

-  		schedCore:    m.schedCore,

-  	})

- -	shim, err := b.Start(ctx, topts, func() {

- +	shim, err := b.Start(ctx, protobuf.FromAny(topts), func() {

-  		log.G(ctx).WithField("id", id).Info("shim disconnected")

-  

-  		cleanupAfterDeadShim(context.Background(), id, ns, m.shims, m.events, b)

- diff --git a/runtime/v2/runc/container.go b/runtime/v2/runc/container.go

- index 4da91d691..3683868e0 100644

- --- a/runtime/v2/runc/container.go

- +++ b/runtime/v2/runc/container.go

- @@ -49,12 +49,14 @@ func NewContainer(ctx context.Context, platform stdio.Platform, r *task.CreateTa

-  	}

-  

-  	var opts options.Options

- -	if r.Options != nil && r.Options.GetTypeUrl() != "" {

- +	if r.Options.GetValue() != nil {

-  		v, err := typeurl.UnmarshalAny(r.Options)

-  		if err != nil {

-  			return nil, err

-  		}

- -		opts = *v.(*options.Options)

- +		if v != nil {

- +			opts = *v.(*options.Options)

- +		}

-  	}

-  

-  	var mounts []process.Mount

- diff --git a/runtime/v2/runc/task/service.go b/runtime/v2/runc/task/service.go

- index 4ad70dad3..1d6ff1714 100644

- --- a/runtime/v2/runc/task/service.go

- +++ b/runtime/v2/runc/task/service.go

- @@ -38,6 +38,7 @@ import (

-  	"github.com/containerd/containerd/pkg/shutdown"

-  	"github.com/containerd/containerd/pkg/stdio"

-  	"github.com/containerd/containerd/pkg/userns"

- +	"github.com/containerd/containerd/protobuf"

-  	"github.com/containerd/containerd/runtime/v2/runc"

-  	"github.com/containerd/containerd/runtime/v2/runc/options"

-  	"github.com/containerd/containerd/runtime/v2/shim"

- @@ -375,7 +376,7 @@ func (s *service) Pids(ctx context.Context, r *taskAPI.PidsRequest) (*taskAPI.Pi

-  				d := &options.ProcessDetails{

-  					ExecID: p.ID(),

-  				}

- -				a, err := typeurl.MarshalAny(d)

- +				a, err := protobuf.MarshalAnyToProto(d)

-  				if err != nil {

-  					return nil, fmt.Errorf("failed to marshal process %d info: %w", pid, err)

-  				}

- @@ -503,7 +504,7 @@ func (s *service) Stats(ctx context.Context, r *taskAPI.StatsRequest) (*taskAPI.

-  		return nil, err

-  	}

-  	return &taskAPI.StatsResponse{

- -		Stats: data,

- +		Stats: protobuf.FromAny(data),

-  	}, nil

-  }

-  

- diff --git a/runtime/v2/runc/v1/service.go b/runtime/v2/runc/v1/service.go

- index 8c473430e..8fdac3f8a 100644

- --- a/runtime/v2/runc/v1/service.go

- +++ b/runtime/v2/runc/v1/service.go

- @@ -41,6 +41,7 @@ import (

-  	"github.com/containerd/containerd/pkg/process"

-  	"github.com/containerd/containerd/pkg/schedcore"

-  	"github.com/containerd/containerd/pkg/stdio"

- +	"github.com/containerd/containerd/protobuf"

-  	"github.com/containerd/containerd/runtime/v2/runc"

-  	"github.com/containerd/containerd/runtime/v2/runc/options"

-  	"github.com/containerd/containerd/runtime/v2/shim"

- @@ -507,7 +508,7 @@ func (s *service) Pids(ctx context.Context, r *taskAPI.PidsRequest) (*taskAPI.Pi

-  				d := &options.ProcessDetails{

-  					ExecID: p.ID(),

-  				}

- -				a, err := typeurl.MarshalAny(d)

- +				a, err := protobuf.MarshalAnyToProto(d)

-  				if err != nil {

-  					return nil, fmt.Errorf("failed to marshal process %d info: %w", pid, err)

-  				}

- @@ -621,7 +622,7 @@ func (s *service) Stats(ctx context.Context, r *taskAPI.StatsRequest) (*taskAPI.

-  		return nil, err

-  	}

-  	return &taskAPI.StatsResponse{

- -		Stats: data,

- +		Stats: protobuf.FromAny(data),

-  	}, nil

-  }

-  

- diff --git a/runtime/v2/shim.go b/runtime/v2/shim.go

- index 456ffb440..18cc9a0ed 100644

- --- a/runtime/v2/shim.go

- +++ b/runtime/v2/shim.go

- @@ -34,6 +34,7 @@ import (

-  	"github.com/containerd/containerd/log"

-  	"github.com/containerd/containerd/namespaces"

-  	"github.com/containerd/containerd/pkg/timeout"

- +	"github.com/containerd/containerd/protobuf"

-  	"github.com/containerd/containerd/runtime"

-  	client "github.com/containerd/containerd/runtime/v2/shim"

-  	"github.com/containerd/containerd/runtime/v2/task"

- @@ -324,7 +325,7 @@ func (s *shimTask) delete(ctx context.Context, removeTask func(ctx context.Conte

-  

-  func (s *shimTask) Create(ctx context.Context, opts runtime.CreateOpts) (runtime.Task, error) {

-  	topts := opts.TaskOptions

- -	if topts == nil {

- +	if topts == nil || topts.GetValue() == nil {

-  		topts = opts.RuntimeOptions

-  	}

-  	request := &task.CreateTaskRequest{

- @@ -335,7 +336,7 @@ func (s *shimTask) Create(ctx context.Context, opts runtime.CreateOpts) (runtime

-  		Stderr:     opts.IO.Stderr,

-  		Terminal:   opts.IO.Terminal,

-  		Checkpoint: opts.Checkpoint,

- -		Options:    topts,

- +		Options:    protobuf.FromAny(topts),

-  	}

-  	for _, m := range opts.Rootfs {

-  		request.Rootfs = append(request.Rootfs, &types.Mount{

- diff --git a/runtime/v2/shim/publisher.go b/runtime/v2/shim/publisher.go

- index ed1ebdd58..20856f115 100644

- --- a/runtime/v2/shim/publisher.go

- +++ b/runtime/v2/shim/publisher.go

- @@ -25,8 +25,8 @@ import (

-  	"github.com/containerd/containerd/events"

-  	"github.com/containerd/containerd/namespaces"

-  	"github.com/containerd/containerd/pkg/ttrpcutil"

- +	"github.com/containerd/containerd/protobuf"

-  	"github.com/containerd/ttrpc"

- -	"github.com/containerd/typeurl"

-  	"github.com/sirupsen/logrus"

-  )

-  

- @@ -110,7 +110,7 @@ func (l *RemoteEventsPublisher) Publish(ctx context.Context, topic string, event

-  	if err != nil {

-  		return err

-  	}

- -	any, err := typeurl.MarshalAny(event)

- +	any, err := protobuf.MarshalAnyToProto(event)

-  	if err != nil {

-  		return err

-  	}

- diff --git a/services/containers/helpers.go b/services/containers/helpers.go

- index dde4caed1..0c5b76fea 100644

- --- a/services/containers/helpers.go

- +++ b/services/containers/helpers.go

- @@ -19,6 +19,9 @@ package containers

-  import (

-  	api "github.com/containerd/containerd/api/services/containers/v1"

-  	"github.com/containerd/containerd/containers"

- +	"github.com/containerd/containerd/protobuf"

- +	"github.com/containerd/typeurl"

- +	"github.com/gogo/protobuf/types"

-  )

-  

-  func containersToProto(containers []containers.Container) []api.Container {

- @@ -32,20 +35,24 @@ func containersToProto(containers []containers.Container) []api.Container {

-  }

-  

-  func containerToProto(container *containers.Container) api.Container {

- +	extensions := make(map[string]types.Any)

- +	for k, v := range container.Extensions {

- +		extensions[k] = *protobuf.FromAny(v)

- +	}

-  	return api.Container{

-  		ID:     container.ID,

-  		Labels: container.Labels,

-  		Image:  container.Image,

-  		Runtime: &api.Container_Runtime{

-  			Name:    container.Runtime.Name,

- -			Options: container.Runtime.Options,

- +			Options: protobuf.FromAny(container.Runtime.Options),

-  		},

- -		Spec:        container.Spec,

- +		Spec:        protobuf.FromAny(container.Spec),

-  		Snapshotter: container.Snapshotter,

-  		SnapshotKey: container.SnapshotKey,

-  		CreatedAt:   container.CreatedAt,

-  		UpdatedAt:   container.UpdatedAt,

- -		Extensions:  container.Extensions,

- +		Extensions:  extensions,

-  	}

-  }

-  

- @@ -57,6 +64,11 @@ func containerFromProto(containerpb *api.Container) containers.Container {

-  			Options: containerpb.Runtime.Options,

-  		}

-  	}

- +	extensions := make(map[string]typeurl.Any)

- +	for k, v := range containerpb.Extensions {

- +		v := v

- +		extensions[k] = &v

- +	}

-  	return containers.Container{

-  		ID:          containerpb.ID,

-  		Labels:      containerpb.Labels,

- @@ -65,6 +77,6 @@ func containerFromProto(containerpb *api.Container) containers.Container {

-  		Spec:        containerpb.Spec,

-  		Snapshotter: containerpb.Snapshotter,

-  		SnapshotKey: containerpb.SnapshotKey,

- -		Extensions:  containerpb.Extensions,

- +		Extensions:  extensions,

-  	}

-  }

- diff --git a/services/events/service.go b/services/events/service.go

- index 3b5f81138..b1992a1ab 100644

- --- a/services/events/service.go

- +++ b/services/events/service.go

- @@ -26,6 +26,7 @@ import (

-  	"github.com/containerd/containerd/events"

-  	"github.com/containerd/containerd/events/exchange"

-  	"github.com/containerd/containerd/plugin"

- +	"github.com/containerd/containerd/protobuf"

-  	"github.com/containerd/ttrpc"

-  	ptypes "github.com/gogo/protobuf/types"

-  	"google.golang.org/grpc"

- @@ -115,7 +116,7 @@ func toProto(env *events.Envelope) *api.Envelope {

-  		Timestamp: env.Timestamp,

-  		Namespace: env.Namespace,

-  		Topic:     env.Topic,

- -		Event:     env.Event,

- +		Event:     protobuf.FromAny(env.Event),

-  	}

-  }

-  

- diff --git a/services/tasks/local.go b/services/tasks/local.go

- index 96ed36ca4..34cb23d16 100644

- --- a/services/tasks/local.go

- +++ b/services/tasks/local.go

- @@ -41,6 +41,7 @@ import (

-  	"github.com/containerd/containerd/mount"

-  	"github.com/containerd/containerd/pkg/timeout"

-  	"github.com/containerd/containerd/plugin"

- +	"github.com/containerd/containerd/protobuf"

-  	"github.com/containerd/containerd/runtime"

-  	"github.com/containerd/containerd/runtime/linux/runctypes"

-  	"github.com/containerd/containerd/runtime/v2/runc/options"

- @@ -461,7 +462,7 @@ func (l *local) ListPids(ctx context.Context, r *api.ListPidsRequest, _ ...grpc.

-  			Pid: p.Pid,

-  		}

-  		if p.Info != nil {

- -			a, err := typeurl.MarshalAny(p.Info)

- +			a, err := protobuf.MarshalAnyToProto(p.Info)

-  			if err != nil {

-  				return nil, fmt.Errorf("failed to marshal process %d info: %w", p.Pid, err)

-  			}

- @@ -576,7 +577,7 @@ func (l *local) Checkpoint(ctx context.Context, r *api.CheckpointTaskRequest, _

-  		return nil, err

-  	}

-  	// write the config to the content store

- -	data, err := container.Spec.Marshal()

- +	data, err := protobuf.FromAny(container.Spec).Marshal()

-  	if err != nil {

-  		return nil, err

-  	}

- diff --git a/task.go b/task.go

- index 692d92c1d..7d8d477ab 100644

- --- a/task.go

- +++ b/task.go

- @@ -38,6 +38,7 @@ import (

-  	"github.com/containerd/containerd/mount"

-  	"github.com/containerd/containerd/oci"

-  	"github.com/containerd/containerd/plugin"

- +	"github.com/containerd/containerd/protobuf"

-  	"github.com/containerd/containerd/rootfs"

-  	"github.com/containerd/containerd/runtime/linux/runctypes"

-  	"github.com/containerd/containerd/runtime/v2/runc/options"

- @@ -346,7 +347,7 @@ func (t *task) Exec(ctx context.Context, id string, spec *specs.Process, ioCreat

-  			i.Close()

-  		}

-  	}()

- -	any, err := typeurl.MarshalAny(spec)

- +	any, err := protobuf.MarshalAnyToProto(spec)

-  	if err != nil {

-  		return nil, err

-  	}

- @@ -446,7 +447,7 @@ func (t *task) Checkpoint(ctx context.Context, opts ...CheckpointTaskOpts) (Imag

-  	}

-  	request.ParentCheckpoint = i.ParentCheckpoint

-  	if i.Options != nil {

- -		any, err := typeurl.MarshalAny(i.Options)

- +		any, err := protobuf.MarshalAnyToProto(i.Options)

-  		if err != nil {

-  			return nil, err

-  		}

- @@ -535,7 +536,7 @@ func (t *task) Update(ctx context.Context, opts ...UpdateTaskOpts) error {

-  		if err != nil {

-  			return err

-  		}

- -		request.Resources = any

- +		request.Resources = protobuf.FromAny(any)

-  	}

-  	if i.Annotations != nil {

-  		request.Annotations = i.Annotations

- -- 

- 2.37.3

- 

@@ -1,24 +1,55 @@ 

+ From 913e72c6f780feb445dc969cab0b5cef0916e7c3 Mon Sep 17 00:00:00 2001

+ From: Dalton Hubble <dghubble@gmail.com>

+ Date: Thu, 23 Mar 2023 10:50:23 -0700

+ Subject: [PATCH] Remove windows only dep

+ 

+ ---

+  pkg/cri/sbserver/helpers.go | 3 ---

+  pkg/cri/server/helpers.go   | 3 ---

+  2 files changed, 6 deletions(-)

+ 

+ diff --git a/pkg/cri/sbserver/helpers.go b/pkg/cri/sbserver/helpers.go

+ index f2a0d2cd1..6bb3f8a2f 100644

+ --- a/pkg/cri/sbserver/helpers.go

+ +++ b/pkg/cri/sbserver/helpers.go

+ @@ -45,7 +45,6 @@ import (

+  	"github.com/containerd/containerd/runtime/linux/runctypes"

+  	runcoptions "github.com/containerd/containerd/runtime/v2/runc/options"

+  

+ -	runhcsoptions "github.com/Microsoft/hcsshim/cmd/containerd-shim-runhcs-v1/options"

+  	imagedigest "github.com/opencontainers/go-digest"

+  	"github.com/pelletier/go-toml"

+  	runtime "k8s.io/cri-api/pkg/apis/runtime/v1"

+ @@ -370,8 +369,6 @@ func getRuntimeOptionsType(t string) interface{} {

+  		return &runcoptions.Options{}

+  	case plugin.RuntimeLinuxV1:

+  		return &runctypes.RuncOptions{}

+ -	case runtimeRunhcsV1:

+ -		return &runhcsoptions.Options{}

+  	default:

+  		return &runtimeoptions.Options{}

+  	}

  diff --git a/pkg/cri/server/helpers.go b/pkg/cri/server/helpers.go

- index a8498116d..3682be668 100644

+ index bf014b5dc..a8ab92c09 100644

  --- a/pkg/cri/server/helpers.go

  +++ b/pkg/cri/server/helpers.go

- @@ -40,7 +40,7 @@ import (

+ @@ -43,7 +43,6 @@ import (

   	runtimespec "github.com/opencontainers/runtime-spec/specs-go"

   	"github.com/sirupsen/logrus"

   

  -	runhcsoptions "github.com/Microsoft/hcsshim/cmd/containerd-shim-runhcs-v1/options"

- +	// runhcsoptions "github.com/Microsoft/hcsshim/cmd/containerd-shim-runhcs-v1/options"

   	imagedigest "github.com/opencontainers/go-digest"

   	"github.com/pelletier/go-toml"

-  	"golang.org/x/net/context"

- @@ -366,8 +366,8 @@ func getRuntimeOptionsType(t string) interface{} {

+  	runtime "k8s.io/cri-api/pkg/apis/runtime/v1"

+ @@ -378,8 +377,6 @@ func getRuntimeOptionsType(t string) interface{} {

   		return &runcoptions.Options{}

   	case plugin.RuntimeLinuxV1:

   		return &runctypes.RuncOptions{}

  -	case runtimeRunhcsV1:

  -		return &runhcsoptions.Options{}

- +	// case runtimeRunhcsV1:

- +	//	return &runhcsoptions.Options{}

   	default:

   		return &runtimeoptions.Options{}

   	}

+ -- 

+ 2.39.2

+ 

file modified
+2 -4
@@ -7,7 +7,7 @@ 

  

  # https://github.com/containerd/containerd

  %global goipath         github.com/containerd/containerd

- Version:                1.6.19

+ Version:                1.7.0

  

  %gometa

  
@@ -36,10 +36,8 @@ 

  # Carve out code requiring github.com/Microsoft/hcsshim

  Patch0:         0001-Revert-commit-for-Windows-metrics.patch

  Patch1:         0002-Remove-windows-only-dep.patch

- # Backport for github.com/containerd/typeurl update

- Patch2:         0001-Use-typeurl.Any-instead-of-github.com-gogo-protobuf-.patch

  # To use with latest go-runc

- Patch3:         0001-Add-reaper-StartLocked.patch

+ Patch2:         0001-Add-reaper-StartLocked.patch

  

  BuildRequires:  btrfs-progs-devel

  BuildRequires:  go-md2man

file modified
+1 -1
@@ -1,1 +1,1 @@ 

- SHA512 (containerd-1.6.19.tar.gz) = dca78d472dfbc6fc4d9b0b3a0d0a131d3575163c52e4fe18ea2c6147868b8822c54046c0709974e9b90472b882ba3890ada7f0fcbf31549efffba0d91531886c

+ SHA512 (containerd-1.7.0.tar.gz) = 9710d76969842494ab775257282dbb5d72ca7aa8c5b93b46647c37b69472c1d84279ae9a9998e6ba484d472e3d4a597636c4eea9d21466de68c64c0b85f44ffd

  • Update patches for removing github.com/Microsoft/hcsshim dependencies
    since they didn't cleanly apply anymore
  • Retain reaper patch since it may still be needed
  • Remove patch for typeurl.Any since its included in v1.7.0

In-progress:

Various upstream dependencies aren't available it seems

Related:

Build failed. More information on how to proceed and troubleshoot errors available at https://fedoraproject.org/wiki/Zuul-based-ci
https://fedora.softwarefactory-project.io/zuul/buildset/7c969f6a3ae34e5397f4c4a4f2928e67

rebased onto 091b6ea

a year ago

Build failed. More information on how to proceed and troubleshoot errors available at https://fedoraproject.org/wiki/Zuul-based-ci
https://fedora.softwarefactory-project.io/zuul/buildset/490cb22cd8bf45ed9b043be69b217d5c

And no RPMs seem to provide github.com/container-orchestrated-devices/container-device-interface/pkg/cdi

Yeah, someone will need to package that. Does containerd itself need that or one of its dependencies? If you're interested, I can walk you through that.

https://src.fedoraproject.org/rpms/golang-github-containerd-btrfs

github.com/containerd/btrfs/v2 is a new package branch/import path which means
a new golang-github-containerd-btrfs-2 package is needed.

https://src.fedoraproject.org/rpms/golang-github-containerd-cgroups

This package needs to be updated to 1.1.0. It looks like
github.com/containerd/cgroups/v3 is also needed now.

https://src.fedoraproject.org/rpms/golang-github-containerd-nri

This needs to be updated to 0.3.0.

https://src.fedoraproject.org/rpms/golang-github-containerd-typeurl

I think a new golang-github-containerd-typeurl-2 is also needed here.

https://src.fedoraproject.org/rpms/golang-github-minio-sha256-simd

golang-github-minio-sha256-simd-devel-0.1.1-9.fc38.noarch exists but needs to
be updated to 1.0.0.

https://src.fedoraproject.org/rpms/golang-opentelemetry-otel

I haven't looked at this yet.

https://src.fedoraproject.org/rpms/golang-github-opencontainers-runtime-tools

This should be fine. The build usually doesn't need the exact commit
specified in the go.mod.

Thanks for packaging golang-github-containerd-btrfs-2 @dghubble. If you'd like to continue working on this, I'd suggest joining the Go SIG Matrix room so you can discuss with us: https://matrix.to/#/#golang:fedoraproject.org

I believe @sergiomb was also working on some of the dependencies.

@gotmax23 I should have some time to start looking at the remaining ones after next week. I'd be very happy to see any of the missing ones become available if someone else is looking.

With a new job, I'm unlikely to be able to get back to updating all the related packages

can you check if contained 1.7.0 from https://copr.fedorainfracloud.org/coprs/sergiomb/docker2/builds/ works for you ?

we have a lot of stuff to update ...

I have worked on containerd already, just I'm on k8s too right now:

containerd:

github.com/container-orchestrated-devices/container-device-interface
github.com/containerd/cgroups/v3
github.com/containerd/nri

golang-github-container-orchestrated-devices-device-interface https://bugzilla.redhat.com/show_bug.cgi?id=2229406
golang-github-containerd-cgroups-3 https://bugzilla.redhat.com/show_bug.cgi?id=2229425

golang-github-containerd-nri:

github.com/containers/common
github.com/r3labs/diff/v3
github.com/sters/yaml-diff

golang-github-containers-common https://bugzilla.redhat.com/show_bug.cgi?id=2229811
golang-github-r3labs-diff-3 https://bugzilla.redhat.com/show_bug.cgi?id=2229465
golang-github-sters-yaml-diff https://bugzilla.redhat.com/show_bug.cgi?id=2229466

golang-github-containers-common:

github.com/containers/storage
github.com/containers/image/v5
github.com/disiqueira/gotree/v3

golang-github-containers-storage https://bugzilla.redhat.com/show_bug.cgi?id=2229483
golang-github-containers-image-5 https://bugzilla.redhat.com/show_bug.cgi?id=2229518
golang-github-disiqueira-gotree-3 https://bugzilla.redhat.com/show_bug.cgi?id=2229481

golang-github-containers-storage:

github.com/google/go-intervals
github.com/mistifyio/go-zfs/v3

golang-github-google-intervals https://bugzilla.redhat.com/show_bug.cgi?id=2229478
golang-github-mistifyio-zfs-3 https://bugzilla.redhat.com/show_bug.cgi?id=2229479

golang-github-containers-image-5:

dario.cat/mergo
github.com/containers/libtrust
github.com/cyberphone/json-canonicalization
github.com/proglottis/gpgme
github.com/vbauerster/mpb/v8

golang-dario-mergo https://pagure.io/releng/fedora-scm-requests/issue/55275
golang-github-containers-libtrust https://bugzilla.redhat.com/show_bug.cgi?id=2229469
golang-github-cyberphone-json-canonicalization https://bugzilla.redhat.com/show_bug.cgi?id=2229470
golang-github-proglottis-gpgme https://bugzilla.redhat.com/show_bug.cgi?id=2229471
golang-github-vbauerster-mpb-8 https://bugzilla.redhat.com/show_bug.cgi?id=2229477

golang-opentelemetry-contrib:

github.com/brunoscheufler/aws-ecs-metadata-go

golang-github-brunoscheufler-aws-ecs-metadata https://bugzilla.redhat.com/show_bug.cgi?id=2230085