diff --git a/libpod/container_inspect.go b/libpod/container_inspect.go index da858e820e..1eb2fbb073 100644 --- a/libpod/container_inspect.go +++ b/libpod/container_inspect.go @@ -506,6 +506,10 @@ func (c *Container) generateInspectContainerHostConfig(ctrSpec *spec.Spec, named // Annotations if ctrSpec.Annotations != nil { + if len(ctrSpec.Annotations) != 0 { + hostConfig.Annotations = ctrSpec.Annotations + } + hostConfig.ContainerIDFile = ctrSpec.Annotations[define.InspectAnnotationCIDFile] if ctrSpec.Annotations[define.InspectAnnotationAutoremove] == define.InspectResponseTrue { hostConfig.AutoRemove = true diff --git a/libpod/define/container_inspect.go b/libpod/define/container_inspect.go index 1d36927950..4a06734ec6 100644 --- a/libpod/define/container_inspect.go +++ b/libpod/define/container_inspect.go @@ -364,6 +364,9 @@ type InspectContainerHostConfig struct { // It is not handled directly within libpod and is stored in an // annotation. AutoRemove bool `json:"AutoRemove"` + // Annotations are provided to the runtime when the container is + // started. + Annotations map[string]string `json:"Annotations"` // VolumeDriver is presently unused and is retained for Docker // compatibility. VolumeDriver string `json:"VolumeDriver"` diff --git a/pkg/api/handlers/compat/containers_create.go b/pkg/api/handlers/compat/containers_create.go index 07d6048874..d6ef33dac6 100644 --- a/pkg/api/handlers/compat/containers_create.go +++ b/pkg/api/handlers/compat/containers_create.go @@ -451,6 +451,7 @@ func cliOpts(cc handlers.CreateContainerConfig, rtc *config.Config) (*entities.C ReadOnly: cc.HostConfig.ReadonlyRootfs, ReadWriteTmpFS: true, // podman default Rm: cc.HostConfig.AutoRemove, + Annotation: stringMaptoArray(cc.HostConfig.Annotations), SecurityOpt: cc.HostConfig.SecurityOpt, StopSignal: cc.Config.StopSignal, StopTimeout: rtc.Engine.StopTimeout, // podman default diff --git a/test/apiv2/28-containersAnnotations.at b/test/apiv2/28-containersAnnotations.at new file mode 100644 index 0000000000..89466f555d --- /dev/null +++ b/test/apiv2/28-containersAnnotations.at @@ -0,0 +1,8 @@ +# -*- sh -*- + +podman pull $IMAGE &>/dev/null +t POST containers/create Image=$IMAGE HostConfig='{"annotations":{"foo":"bar","zoo":"boo"}}' 201 .Id~[0-9a-f]\\{64\\} +cid=$(jq -r '.Id' <<<"$output") +t GET containers/$cid/json 200 \ + .HostConfig.Annotations.foo=bar \ + .HostConfig.Annotations.zoo=boo \