diff options
author | OpenShift Merge Robot <openshift-merge-robot@users.noreply.github.com> | 2020-04-21 05:07:30 -0400 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-04-21 05:07:30 -0400 |
commit | 90636fe8c2d1eb5ae75afa73405c8b12a0417fca (patch) | |
tree | c6e320c49d6d223e4009a3ee5a54793777579c82 /pkg/domain/entities/events.go | |
parent | 89276a5f92717c4c6a299ca2be182a3797d9c90d (diff) | |
parent | 09dc701097ac874c3885fa58ed4f143c29ae83f0 (diff) | |
download | podman-90636fe8c2d1eb5ae75afa73405c8b12a0417fca.tar.gz podman-90636fe8c2d1eb5ae75afa73405c8b12a0417fca.tar.bz2 podman-90636fe8c2d1eb5ae75afa73405c8b12a0417fca.zip |
Merge pull request #5863 from vrothberg/v2-fix-rmi
podman rmi: refactor logic
Diffstat (limited to 'pkg/domain/entities/events.go')
-rw-r--r-- | pkg/domain/entities/events.go | 61 |
1 files changed, 61 insertions, 0 deletions
diff --git a/pkg/domain/entities/events.go b/pkg/domain/entities/events.go new file mode 100644 index 000000000..8861be158 --- /dev/null +++ b/pkg/domain/entities/events.go @@ -0,0 +1,61 @@ +package entities + +import ( + "strconv" + "time" + + libpodEvents "github.com/containers/libpod/libpod/events" + dockerEvents "github.com/docker/docker/api/types/events" +) + +// Event combines various event-related data such as time, event type, status +// and more. +type Event struct { + // TODO: it would be nice to have full control over the types at some + // point and fork such Docker types. + dockerEvents.Message +} + +// ConvertToLibpodEvent converts an entities event to a libpod one. +func ConvertToLibpodEvent(e Event) *libpodEvents.Event { + exitCode, err := strconv.Atoi(e.Actor.Attributes["containerExitCode"]) + if err != nil { + return nil + } + status, err := libpodEvents.StringToStatus(e.Action) + if err != nil { + return nil + } + t, err := libpodEvents.StringToType(e.Type) + if err != nil { + return nil + } + return &libpodEvents.Event{ + ContainerExitCode: exitCode, + ID: e.Actor.ID, + Image: e.Actor.Attributes["image"], + Name: e.Actor.Attributes["name"], + Status: status, + Time: time.Unix(e.Time, e.TimeNano), + Type: t, + } +} + +// ConvertToEntitiesEvent converts a libpod event to an entities one. +func ConvertToEntitiesEvent(e libpodEvents.Event) *Event { + return &Event{dockerEvents.Message{ + Type: e.Type.String(), + Action: e.Status.String(), + Actor: dockerEvents.Actor{ + ID: e.ID, + Attributes: map[string]string{ + "image": e.Image, + "name": e.Name, + "containerExitCode": strconv.Itoa(e.ContainerExitCode), + }, + }, + Scope: "local", + Time: e.Time.Unix(), + TimeNano: e.Time.UnixNano(), + }} +} |