Thanks to visit codestin.com
Credit goes to github.com

Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 4 additions & 4 deletions internal/nri/domain.go
Original file line number Diff line number Diff line change
Expand Up @@ -19,13 +19,13 @@ type Domain interface {
GetName() string

// ListPodSandboxes list all pods.
ListPodSandboxes() []PodSandbox
ListPodSandboxes(context.Context) []PodSandbox

// ListContainer list all containers.
ListContainers() []Container

// GetPodSandbox returns the pod for the given ID.
GetPodSandbox(string) (PodSandbox, bool)
GetPodSandbox(context.Context, string) (PodSandbox, bool)

// GetContainer returns the container for the given ID.
GetContainer(string) (Container, bool)
Expand Down Expand Up @@ -55,11 +55,11 @@ func (t *domainTable) set(d Domain) {
t.domain = d
}

func (t *domainTable) listPodSandboxes() []PodSandbox {
func (t *domainTable) listPodSandboxes(ctx context.Context) []PodSandbox {
t.Lock()
defer t.Unlock()

return t.domain.ListPodSandboxes()
return t.domain.ListPodSandboxes(ctx)
}

func (t *domainTable) listContainers() []Container {
Expand Down
2 changes: 1 addition & 1 deletion internal/nri/nri.go
Original file line number Diff line number Diff line change
Expand Up @@ -410,7 +410,7 @@ func (l *local) syncPlugin(ctx context.Context, syncFn nri.SyncCB) error {

log.Infof(ctx, "Synchronizing NRI (plugin) with current runtime state")

pods := podSandboxesToNRI(domains.listPodSandboxes())
pods := podSandboxesToNRI(domains.listPodSandboxes(ctx))
containers := containersToNRI(domains.listContainers())

for _, ctr := range containers {
Expand Down
45 changes: 24 additions & 21 deletions server/nri-api.go
Original file line number Diff line number Diff line change
Expand Up @@ -54,7 +54,7 @@ func (a *nriAPI) runPodSandbox(ctx context.Context, criPod *sandbox.Sandbox) err
return nil
}

pod := nriPodSandbox(criPod)
pod := nriPodSandbox(ctx, criPod)
err := a.nri.RunPodSandbox(ctx, pod)
if err != nil {
if undoErr := a.nri.StopPodSandbox(ctx, pod); undoErr != nil {
Expand All @@ -73,7 +73,7 @@ func (a *nriAPI) stopPodSandbox(ctx context.Context, criPod *sandbox.Sandbox) er
return nil
}

pod := nriPodSandbox(criPod)
pod := nriPodSandbox(ctx, criPod)

return a.nri.StopPodSandbox(ctx, pod)
}
Expand All @@ -83,7 +83,7 @@ func (a *nriAPI) removePodSandbox(ctx context.Context, criPod *sandbox.Sandbox)
return nil
}

pod := nriPodSandbox(criPod)
pod := nriPodSandbox(ctx, criPod)

return a.nri.RemovePodSandbox(ctx, pod)
}
Expand All @@ -93,7 +93,7 @@ func (a *nriAPI) createContainer(ctx context.Context, specgen *generate.Generato
return nil
}

pod := nriPodSandbox(criPod)
pod := nriPodSandbox(ctx, criPod)
ctr := &criContainer{
api: a,
ctr: criCtr,
Expand Down Expand Up @@ -175,7 +175,7 @@ func (a *nriAPI) postCreateContainer(ctx context.Context, criPod *sandbox.Sandbo
return nil
}

pod := nriPodSandbox(criPod)
pod := nriPodSandbox(ctx, criPod)
ctr := &criContainer{
api: a,
ctr: criCtr,
Expand All @@ -189,7 +189,7 @@ func (a *nriAPI) startContainer(ctx context.Context, criPod *sandbox.Sandbox, cr
return nil
}

pod := nriPodSandbox(criPod)
pod := nriPodSandbox(ctx, criPod)
ctr := &criContainer{
api: a,
ctr: criCtr,
Expand All @@ -203,7 +203,7 @@ func (a *nriAPI) postStartContainer(ctx context.Context, criPod *sandbox.Sandbox
return nil
}

pod := nriPodSandbox(criPod)
pod := nriPodSandbox(ctx, criPod)
ctr := &criContainer{
api: a,
ctr: criCtr,
Expand All @@ -220,7 +220,7 @@ func (a *nriAPI) updateContainer(ctx context.Context, criCtr *oci.Container, req
const noOomAdj = 0

criPod := a.cri.getSandbox(ctx, criCtr.Sandbox())
pod := nriPodSandbox(criPod)
pod := nriPodSandbox(ctx, criPod)
ctr := &criContainer{
api: a,
ctr: criCtr,
Expand All @@ -240,7 +240,7 @@ func (a *nriAPI) postUpdateContainer(ctx context.Context, criCtr *oci.Container)
}

criPod := a.cri.getSandbox(ctx, criCtr.Sandbox())
pod := nriPodSandbox(criPod)
pod := nriPodSandbox(ctx, criPod)
ctr := &criContainer{
api: a,
ctr: criCtr,
Expand Down Expand Up @@ -274,7 +274,7 @@ func (a *nriAPI) stopContainer(ctx context.Context, criPod *sandbox.Sandbox, cri
}
}

pod := nriPodSandbox(criPod)
pod := nriPodSandbox(ctx, criPod)

return a.nri.StopContainer(ctx, pod, ctr)
}
Expand All @@ -284,7 +284,7 @@ func (a *nriAPI) removeContainer(ctx context.Context, criPod *sandbox.Sandbox, c
return nil
}

pod := nriPodSandbox(criPod)
pod := nriPodSandbox(ctx, criPod)
ctr := &criContainer{
api: a,
ctr: criCtr,
Expand All @@ -298,7 +298,7 @@ func (a *nriAPI) undoCreateContainer(ctx context.Context, specgen *generate.Gene
return
}

pod := nriPodSandbox(criPod)
pod := nriPodSandbox(ctx, criPod)
ctr := &criContainer{
api: a,
ctr: criCtr,
Expand Down Expand Up @@ -330,11 +330,11 @@ func (a *nriAPI) GetName() string {
return nriDomain
}

func (a *nriAPI) ListPodSandboxes() []nri.PodSandbox {
func (a *nriAPI) ListPodSandboxes(ctx context.Context) []nri.PodSandbox {
pods := []nri.PodSandbox{}
for _, pod := range a.cri.ContainerServer.ListSandboxes() {
if pod.Created() {
pods = append(pods, nriPodSandbox(pod))
pods = append(pods, nriPodSandbox(ctx, pod))
}
}
return pods
Expand All @@ -358,7 +358,7 @@ func (a *nriAPI) ListContainers() []nri.Container {
return containers
}

func (a *nriAPI) GetPodSandbox(id string) (nri.PodSandbox, bool) {
func (a *nriAPI) GetPodSandbox(ctx context.Context, id string) (nri.PodSandbox, bool) {
sandboxID, err := a.cri.PodIDIndex().Get(id)
if err != nil {
return nil, false
Expand All @@ -369,7 +369,7 @@ func (a *nriAPI) GetPodSandbox(id string) (nri.PodSandbox, bool) {
return nil, false
}

return nriPodSandbox(pod), true
return nriPodSandbox(ctx, pod), true
}

func (a *nriAPI) GetContainer(id string) (nri.Container, bool) {
Expand Down Expand Up @@ -435,20 +435,23 @@ type criPodSandbox struct {
pid int
}

func nriPodSandbox(pod *sandbox.Sandbox) *criPodSandbox {
func nriPodSandbox(ctx context.Context, pod *sandbox.Sandbox) *criPodSandbox {
criPod := &criPodSandbox{
Sandbox: pod,
spec: &rspec.Spec{},
}

if ic := pod.InfraContainer(); ic != nil {
spec := ic.Spec()
pid, err := ic.Pid()
if err != nil {
log.Warnf(context.TODO(), "Failed to get pid for pod infra container: %v", err)
if !ic.Spoofed() {
pid, err := ic.Pid()
if err != nil {
log.Debugf(ctx, "Failed to get pid for pod infra container: %v", err)
} else {
criPod.pid = pid
}
}
criPod.spec = &spec
criPod.pid = pid
}

return criPod
Expand Down