Move GetTopic function out of runc shim
Every shim implementation needs to select a correct publisher topic when posting events, so move it out of Linux-only runc code to the place where other shims can also use it
Otherwise, shims have to copy-paste this code. For example, see runj: 8158e558a3/containerd/shim.go (L144-L172)
Signed-off-by: Marat Radchenko <marat@slonopotamus.org>
This commit is contained in:
@@ -16,6 +16,11 @@
|
||||
|
||||
package runtime
|
||||
|
||||
import (
|
||||
"github.com/containerd/containerd/api/events"
|
||||
"github.com/containerd/containerd/log"
|
||||
)
|
||||
|
||||
const (
|
||||
// TaskCreateEventTopic for task create
|
||||
TaskCreateEventTopic = "/tasks/create"
|
||||
@@ -40,3 +45,33 @@ const (
|
||||
// TaskUnknownTopic for unknown task events
|
||||
TaskUnknownTopic = "/tasks/?"
|
||||
)
|
||||
|
||||
// GetTopic converts an event from an interface type to the specific
|
||||
// event topic id
|
||||
func GetTopic(e interface{}) string {
|
||||
switch e.(type) {
|
||||
case *events.TaskCreate:
|
||||
return TaskCreateEventTopic
|
||||
case *events.TaskStart:
|
||||
return TaskStartEventTopic
|
||||
case *events.TaskOOM:
|
||||
return TaskOOMEventTopic
|
||||
case *events.TaskExit:
|
||||
return TaskExitEventTopic
|
||||
case *events.TaskDelete:
|
||||
return TaskDeleteEventTopic
|
||||
case *events.TaskExecAdded:
|
||||
return TaskExecAddedEventTopic
|
||||
case *events.TaskExecStarted:
|
||||
return TaskExecStartedEventTopic
|
||||
case *events.TaskPaused:
|
||||
return TaskPausedEventTopic
|
||||
case *events.TaskResumed:
|
||||
return TaskResumedEventTopic
|
||||
case *events.TaskCheckpointed:
|
||||
return TaskCheckpointedEventTopic
|
||||
default:
|
||||
log.L.Warnf("no topic for type %#v", e)
|
||||
}
|
||||
return TaskUnknownTopic
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user