a3a42c459e
The `GetImageOpts` struct is used for options to be passed to the backend, and are not used in client code. This struct currently is intended for internal use only. This patch moves the `GetImageOpts` struct to the backend package to prevent it being imported in the client, and to make it more clear that this is part of internal APIs, and not public-facing. Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
38 lines
1 KiB
Go
38 lines
1 KiB
Go
package images // import "github.com/docker/docker/daemon/images"
|
|
|
|
import (
|
|
"context"
|
|
|
|
"github.com/docker/docker/api/types/backend"
|
|
"github.com/docker/docker/api/types/events"
|
|
)
|
|
|
|
// LogImageEvent generates an event related to an image with only the default attributes.
|
|
func (i *ImageService) LogImageEvent(imageID, refName string, action events.Action) {
|
|
ctx := context.TODO()
|
|
attributes := map[string]string{}
|
|
|
|
img, err := i.GetImage(ctx, imageID, backend.GetImageOpts{})
|
|
if err == nil && img.Config != nil {
|
|
// image has not been removed yet.
|
|
// it could be missing if the event is `delete`.
|
|
copyAttributes(attributes, img.Config.Labels)
|
|
}
|
|
if refName != "" {
|
|
attributes["name"] = refName
|
|
}
|
|
i.eventsService.Log(action, events.ImageEventType, events.Actor{
|
|
ID: imageID,
|
|
Attributes: attributes,
|
|
})
|
|
}
|
|
|
|
// copyAttributes guarantees that labels are not mutated by event triggers.
|
|
func copyAttributes(attributes, labels map[string]string) {
|
|
if labels == nil {
|
|
return
|
|
}
|
|
for k, v := range labels {
|
|
attributes[k] = v
|
|
}
|
|
}
|