Skip to content

Commit 90255a2

Browse files
committed
Merge branch 'main' into PRODUCT-2836-upgrade-glouton-to-prometheus-3.0
2 parents 7175bc2 + 7046bd3 commit 90255a2

File tree

7 files changed

+168
-156
lines changed

7 files changed

+168
-156
lines changed

facts/container-runtime/containerd/containerd.go

+42-39
Original file line numberDiff line numberDiff line change
@@ -35,16 +35,17 @@ import (
3535
containerTypes "github.com/bleemeo/glouton/facts/container-runtime/types"
3636
"github.com/bleemeo/glouton/logger"
3737
"github.com/bleemeo/glouton/types"
38+
3839
v1 "github.com/containerd/cgroups/v3/cgroup1/stats"
3940
v2 "github.com/containerd/cgroups/v3/cgroup2/stats"
40-
"github.com/containerd/containerd"
4141
pbEvents "github.com/containerd/containerd/api/events"
4242
"github.com/containerd/containerd/api/services/tasks/v1"
43-
"github.com/containerd/containerd/cio"
44-
"github.com/containerd/containerd/containers"
45-
"github.com/containerd/containerd/events"
46-
"github.com/containerd/containerd/namespaces"
47-
"github.com/containerd/containerd/oci"
43+
"github.com/containerd/containerd/v2/client"
44+
"github.com/containerd/containerd/v2/core/containers"
45+
"github.com/containerd/containerd/v2/core/events"
46+
"github.com/containerd/containerd/v2/pkg/cio"
47+
"github.com/containerd/containerd/v2/pkg/namespaces"
48+
"github.com/containerd/containerd/v2/pkg/oci"
4849
"github.com/containerd/errdefs"
4950
"github.com/containerd/typeurl/v2"
5051
"github.com/mitchellh/copystructure"
@@ -129,10 +130,10 @@ func (c *Containerd) DiagnosticArchive(_ context.Context, archive types.ArchiveW
129130
IsIgnored bool
130131
}
131132

132-
containers := make([]containerInfo, 0, len(c.containers))
133+
ctrs := make([]containerInfo, 0, len(c.containers))
133134

134135
for _, row := range c.containers {
135-
containers = append(containers, containerInfo{
136+
ctrs = append(ctrs, containerInfo{
136137
ID: row.ID(),
137138
Name: row.ContainerName(),
138139
IsIgnored: c.ignoredID[row.ID()],
@@ -147,7 +148,7 @@ func (c *Containerd) DiagnosticArchive(_ context.Context, archive types.ArchiveW
147148
PastMetricValues []metricValue
148149
}{
149150
WorkedOnce: c.workedOnce,
150-
Containers: containers,
151+
Containers: ctrs,
151152
LastDestroyedName: c.lastDestroyedName,
152153
LastUpdate: c.lastUpdate,
153154
PastMetricValues: c.pastMetricValues,
@@ -477,21 +478,21 @@ func (c *Containerd) Exec(ctx context.Context, containerID string, cmd []string)
477478
cio.WithStreams(nil, buffer, buffer),
478479
)
479480

480-
process, err := task.Exec(ctx, "glouton-exec-id", &pspec, ioCreator)
481+
proc, err := task.Exec(ctx, "glouton-exec-id", &pspec, ioCreator)
481482
if err != nil {
482483
return nil, err
483484
}
484485

485-
statusC, err := process.Wait(ctx)
486+
statusC, err := proc.Wait(ctx)
486487
if err != nil {
487488
return nil, err
488489
}
489490

490-
if err := process.Start(ctx); err != nil {
491+
if err := proc.Start(ctx); err != nil {
491492
return nil, err
492493
}
493494

494-
var status containerd.ExitStatus
495+
var status client.ExitStatus
495496

496497
select {
497498
case status = <-statusC:
@@ -763,7 +764,7 @@ func (c *Containerd) updateContainers(ctx context.Context) error {
763764
return fmt.Errorf("listing namespaces failed: %w", err)
764765
}
765766

766-
containers := make(map[string]containerObject)
767+
ctrs := make(map[string]containerObject)
767768
ignoredID := make(map[string]bool)
768769

769770
for _, ns := range nsList {
@@ -773,7 +774,7 @@ func (c *Containerd) updateContainers(ctx context.Context) error {
773774

774775
ctx := namespaces.WithNamespace(ctx, ns)
775776

776-
err := c.addContainersInfo(ctx, containers, cl, ns, ignoredID)
777+
err := c.addContainersInfo(ctx, ctrs, cl, ns, ignoredID)
777778
if err != nil {
778779
return err
779780
}
@@ -782,7 +783,7 @@ func (c *Containerd) updateContainers(ctx context.Context) error {
782783
var deletedContainerID []string
783784

784785
for k := range c.containers {
785-
if _, ok := containers[k]; !ok {
786+
if _, ok := ctrs[k]; !ok {
786787
deletedContainerID = append(deletedContainerID, k)
787788
}
788789
}
@@ -796,20 +797,20 @@ func (c *Containerd) updateContainers(ctx context.Context) error {
796797
"ContainerD runtime request to delete %d containers (previous container count was %d, new containers count is %d)",
797798
len(deletedContainerID),
798799
len(c.containers),
799-
len(containers),
800+
len(ctrs),
800801
)
801802
c.DeletedContainersCallback(deletedContainerID)
802803
}
803804

804805
c.lastUpdate = time.Now()
805-
c.containers = containers
806+
c.containers = ctrs
806807
c.ignoredID = ignoredID
807808

808809
return nil
809810
}
810811

811-
func convertToContainerObject(ctx context.Context, ns string, cont containerd.Container) (containerObject, error) {
812-
info, err := cont.Info(ctx, containerd.WithoutRefreshedMetadata)
812+
func convertToContainerObject(ctx context.Context, ns string, cont client.Container) (containerObject, error) {
813+
info, err := cont.Info(ctx, client.WithoutRefreshedMetadata)
813814
if err != nil {
814815
return containerObject{}, fmt.Errorf("Info() on %s/%s failed: %w", ns, cont.ID(), err)
815816
}
@@ -840,7 +841,7 @@ func convertToContainerObject(ctx context.Context, ns string, cont containerd.Co
840841
Container: info,
841842
Spec: &spec,
842843
},
843-
state: string(containerd.Unknown),
844+
state: string(client.Unknown),
844845
imageID: imgDigest,
845846
}
846847

@@ -931,11 +932,13 @@ func (c *Containerd) getClient(ctx context.Context) (containerdClient, error) {
931932
_, err = cl.Version(ctx)
932933
if err != nil {
933934
if firstErr == nil {
934-
logger.V(2).Printf("ContainerD openConnection on %s failed: %v", addr, err)
935+
logger.V(2).Printf("ContainerD interaction on %s failed: %v", addr, err)
935936

936937
firstErr = err
937938
}
938939

940+
_ = cl.Close()
941+
939942
continue
940943
}
941944

@@ -955,9 +958,9 @@ func (c *Containerd) getClient(ctx context.Context) (containerdClient, error) {
955958
}
956959

957960
type containerdClient interface {
958-
LoadContainer(ctx context.Context, id string) (containerd.Container, error)
959-
Containers(ctx context.Context) ([]containerd.Container, error)
960-
Version(ctx context.Context) (containerd.Version, error)
961+
LoadContainer(ctx context.Context, id string) (client.Container, error)
962+
Containers(ctx context.Context) ([]client.Container, error)
963+
Version(ctx context.Context) (client.Version, error)
961964
Namespaces(ctx context.Context) ([]string, error)
962965
Events(ctx context.Context) (ch <-chan *events.Envelope, errs <-chan error)
963966
Metrics(ctx context.Context, filters []string) (*tasks.MetricsResponse, error)
@@ -972,27 +975,27 @@ func openConnection(_ context.Context, address string) (containerdClient, error)
972975
}
973976
}
974977

975-
client, err := containerd.New(address)
978+
cl, err := client.New(address)
976979
if err != nil {
977980
return nil, fmt.Errorf("failed to connect to containerd at address %s: %w", address, err)
978981
}
979982

980-
return realClient{client: client}, nil
983+
return realClient{client: cl}, nil
981984
}
982985

983986
type realClient struct {
984-
client *containerd.Client
987+
client *client.Client
985988
}
986989

987-
func (cl realClient) Containers(ctx context.Context) ([]containerd.Container, error) {
990+
func (cl realClient) Containers(ctx context.Context) ([]client.Container, error) {
988991
return cl.client.Containers(ctx)
989992
}
990993

991-
func (cl realClient) LoadContainer(ctx context.Context, id string) (containerd.Container, error) {
994+
func (cl realClient) LoadContainer(ctx context.Context, id string) (client.Container, error) {
992995
return cl.client.LoadContainer(ctx, id)
993996
}
994997

995-
func (cl realClient) Version(ctx context.Context) (containerd.Version, error) {
998+
func (cl realClient) Version(ctx context.Context) (client.Version, error) {
996999
return cl.client.Version(ctx)
9971000
}
9981001

@@ -1153,18 +1156,18 @@ func (c containerObject) StartedAt() time.Time {
11531156
}
11541157

11551158
func (c containerObject) State() facts.ContainerState {
1156-
switch containerd.ProcessStatus(c.state) {
1157-
case containerd.Created:
1159+
switch client.ProcessStatus(c.state) {
1160+
case client.Created:
11581161
return facts.ContainerCreated
1159-
case containerd.Paused:
1162+
case client.Paused:
11601163
return facts.ContainerRunning
1161-
case containerd.Pausing:
1164+
case client.Pausing:
11621165
return facts.ContainerRunning
1163-
case containerd.Running:
1166+
case client.Running:
11641167
return facts.ContainerRunning
1165-
case containerd.Stopped:
1168+
case client.Stopped:
11661169
return facts.ContainerStopped
1167-
case containerd.Unknown:
1170+
case client.Unknown:
11681171
return facts.ContainerUnknown
11691172
default:
11701173
return facts.ContainerUnknown
@@ -1205,7 +1208,7 @@ var cgroupRE = regexp.MustCompile(
12051208

12061209
type namespaceContainer struct {
12071210
namespace string
1208-
container containerd.Container
1211+
container client.Container
12091212
}
12101213

12111214
type containerdProcessQuerier struct {

0 commit comments

Comments
 (0)