Merge pull request #4840 from AkihiroSuda/with-container-labels-2

container_opts.go: add WithAdditionalContainerLabels
This commit is contained in:
Michael Crosby 2020-12-14 14:53:03 -05:00 committed by GitHub
commit 23315f8647
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -85,7 +85,9 @@ func WithImageName(n string) NewContainerOpts {
} }
} }
// WithContainerLabels adds the provided labels to the container // WithContainerLabels sets the provided labels to the container.
// The existing labels are cleared.
// Use WithAdditionalContainerLabels to preserve the existing labels.
func WithContainerLabels(labels map[string]string) NewContainerOpts { func WithContainerLabels(labels map[string]string) NewContainerOpts {
return func(_ context.Context, _ *Client, c *containers.Container) error { return func(_ context.Context, _ *Client, c *containers.Container) error {
c.Labels = labels c.Labels = labels
@ -93,6 +95,21 @@ func WithContainerLabels(labels map[string]string) NewContainerOpts {
} }
} }
// WithAdditionalContainerLabels adds the provided labels to the container
// The existing labels are preserved as long as they do not conflict with the added labels.
func WithAdditionalContainerLabels(labels map[string]string) NewContainerOpts {
return func(_ context.Context, _ *Client, c *containers.Container) error {
if c.Labels == nil {
c.Labels = labels
return nil
}
for k, v := range labels {
c.Labels[k] = v
}
return nil
}
}
// WithImageStopSignal sets a well-known containerd label (StopSignalLabel) // WithImageStopSignal sets a well-known containerd label (StopSignalLabel)
// on the container for storing the stop signal specified in the OCI image // on the container for storing the stop signal specified in the OCI image
// config // config