mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-07-28 14:07:14 +00:00
dockershim: support filter containers by sandbox ID
This commit is contained in:
parent
2f60b72dd3
commit
73f30b18e4
@ -48,7 +48,7 @@ func (ds *dockerService) ListContainers(filter *runtimeApi.ContainerFilter) ([]*
|
||||
f.Add("status", toDockerContainerStatus(filter.GetState()))
|
||||
}
|
||||
if filter.PodSandboxId != nil {
|
||||
// TODO: implement this after sandbox functions are implemented.
|
||||
f.AddLabel(sandboxIDLabelKey, *filter.PodSandboxId)
|
||||
}
|
||||
|
||||
if filter.LabelSelector != nil {
|
||||
@ -91,6 +91,8 @@ func (ds *dockerService) CreateContainer(podSandboxID string, config *runtimeApi
|
||||
labels := makeLabels(config.GetLabels(), config.GetAnnotations())
|
||||
// Apply a the container type label.
|
||||
labels[containerTypeLabelKey] = containerTypeLabelContainer
|
||||
// Write the sandbox ID in the labels.
|
||||
labels[sandboxIDLabelKey] = podSandboxID
|
||||
|
||||
image := ""
|
||||
if iSpec := config.GetImage(); iSpec != nil {
|
||||
|
@ -47,8 +47,11 @@ const (
|
||||
containerTypeLabelKey = "io.kubernetes.docker.type"
|
||||
containerTypeLabelSandbox = "podsandbox"
|
||||
containerTypeLabelContainer = "container"
|
||||
sandboxIDLabelKey = "io.kubernetes.sandbox.id"
|
||||
)
|
||||
|
||||
var internalLabelKeys []string = []string{containerTypeLabelKey, sandboxIDLabelKey}
|
||||
|
||||
func NewDockerService(client dockertools.DockerInterface) DockerLegacyService {
|
||||
return &dockerService{
|
||||
client: dockertools.NewInstrumentedDockerInterface(client),
|
||||
|
@ -84,11 +84,20 @@ func extractLabels(input map[string]string) (map[string]string, map[string]strin
|
||||
annotations := make(map[string]string)
|
||||
for k, v := range input {
|
||||
// Check if the key is used internally by the shim.
|
||||
// TODO: containerTypeLabelKey is the only internal label the shim uses
|
||||
// right now. Expand this to a list later.
|
||||
if k == containerTypeLabelKey {
|
||||
internal := false
|
||||
for _, internalKey := range internalLabelKeys {
|
||||
// TODO: containerTypeLabelKey is the only internal label the shim uses
|
||||
// right now. Expand this to a list later.
|
||||
if k == internalKey {
|
||||
internal = true
|
||||
break
|
||||
}
|
||||
}
|
||||
if internal {
|
||||
continue
|
||||
}
|
||||
|
||||
// Check if the label should be treated as an annotation.
|
||||
if strings.HasPrefix(k, annotationPrefix) {
|
||||
annotations[strings.TrimPrefix(k, annotationPrefix)] = v
|
||||
continue
|
||||
|
Loading…
Reference in New Issue
Block a user