mirror of
https://github.com/aljazceru/kata-containers.git
synced 2025-12-18 06:44:23 +01:00
A significant number of trace calls did not use a parent context that would create proper span ordering in trace output. Add local context to functions for use in trace calls to facilitate proper span ordering. Additionally, change whether trace function returns context in some functions in virtcontainers and use existing context rather than background context in bindMount() so that span exists as a child of a parent span. Fixes #1355 Signed-off-by: Chelsea Mafrica <chelsea.e.mafrica@intel.com>
92 lines
3.8 KiB
Go
92 lines
3.8 KiB
Go
// Copyright (c) 2017 Intel Corporation
|
|
//
|
|
// SPDX-License-Identifier: Apache-2.0
|
|
//
|
|
|
|
package virtcontainers
|
|
|
|
import (
|
|
"context"
|
|
"io"
|
|
"syscall"
|
|
|
|
"github.com/kata-containers/kata-containers/src/runtime/virtcontainers/device/api"
|
|
"github.com/kata-containers/kata-containers/src/runtime/virtcontainers/device/config"
|
|
pbTypes "github.com/kata-containers/kata-containers/src/runtime/virtcontainers/pkg/agent/protocols"
|
|
"github.com/kata-containers/kata-containers/src/runtime/virtcontainers/types"
|
|
specs "github.com/opencontainers/runtime-spec/specs-go"
|
|
"github.com/sirupsen/logrus"
|
|
)
|
|
|
|
// VC is the Virtcontainers interface
|
|
type VC interface {
|
|
SetLogger(ctx context.Context, logger *logrus.Entry)
|
|
SetFactory(ctx context.Context, factory Factory)
|
|
|
|
CreateSandbox(ctx context.Context, sandboxConfig SandboxConfig) (VCSandbox, error)
|
|
CleanupContainer(ctx context.Context, sandboxID, containerID string, force bool) error
|
|
}
|
|
|
|
// VCSandbox is the Sandbox interface
|
|
// (required since virtcontainers.Sandbox only contains private fields)
|
|
type VCSandbox interface {
|
|
Annotations(key string) (string, error)
|
|
GetNetNs() string
|
|
GetAllContainers() []VCContainer
|
|
GetAnnotations() map[string]string
|
|
GetContainer(containerID string) VCContainer
|
|
ID() string
|
|
SetAnnotations(annotations map[string]string) error
|
|
|
|
Stats(ctx context.Context) (SandboxStats, error)
|
|
|
|
Start(ctx context.Context) error
|
|
Stop(ctx context.Context, force bool) error
|
|
Release(ctx context.Context) error
|
|
Monitor(ctx context.Context) (chan error, error)
|
|
Delete(ctx context.Context) error
|
|
Status() SandboxStatus
|
|
CreateContainer(ctx context.Context, contConfig ContainerConfig) (VCContainer, error)
|
|
DeleteContainer(ctx context.Context, contID string) (VCContainer, error)
|
|
StartContainer(ctx context.Context, containerID string) (VCContainer, error)
|
|
StopContainer(ctx context.Context, containerID string, force bool) (VCContainer, error)
|
|
KillContainer(ctx context.Context, containerID string, signal syscall.Signal, all bool) error
|
|
StatusContainer(containerID string) (ContainerStatus, error)
|
|
StatsContainer(ctx context.Context, containerID string) (ContainerStats, error)
|
|
PauseContainer(ctx context.Context, containerID string) error
|
|
ResumeContainer(ctx context.Context, containerID string) error
|
|
EnterContainer(ctx context.Context, containerID string, cmd types.Cmd) (VCContainer, *Process, error)
|
|
UpdateContainer(ctx context.Context, containerID string, resources specs.LinuxResources) error
|
|
ProcessListContainer(ctx context.Context, containerID string, options ProcessListOptions) (ProcessList, error)
|
|
WaitProcess(ctx context.Context, containerID, processID string) (int32, error)
|
|
SignalProcess(ctx context.Context, containerID, processID string, signal syscall.Signal, all bool) error
|
|
WinsizeProcess(ctx context.Context, containerID, processID string, height, width uint32) error
|
|
IOStream(containerID, processID string) (io.WriteCloser, io.Reader, io.Reader, error)
|
|
|
|
AddDevice(ctx context.Context, info config.DeviceInfo) (api.Device, error)
|
|
|
|
AddInterface(ctx context.Context, inf *pbTypes.Interface) (*pbTypes.Interface, error)
|
|
RemoveInterface(ctx context.Context, inf *pbTypes.Interface) (*pbTypes.Interface, error)
|
|
ListInterfaces(ctx context.Context) ([]*pbTypes.Interface, error)
|
|
UpdateRoutes(ctx context.Context, routes []*pbTypes.Route) ([]*pbTypes.Route, error)
|
|
ListRoutes(ctx context.Context) ([]*pbTypes.Route, error)
|
|
|
|
GetOOMEvent(ctx context.Context) (string, error)
|
|
GetHypervisorPid() (int, error)
|
|
|
|
UpdateRuntimeMetrics() error
|
|
GetAgentMetrics(ctx context.Context) (string, error)
|
|
GetAgentURL() (string, error)
|
|
}
|
|
|
|
// VCContainer is the Container interface
|
|
// (required since virtcontainers.Container only contains private fields)
|
|
type VCContainer interface {
|
|
GetAnnotations() map[string]string
|
|
GetPid() int
|
|
GetToken() string
|
|
ID() string
|
|
Sandbox() VCSandbox
|
|
Process() Process
|
|
}
|