Merge pull request #5976 from QiWang19/manifest-add-os

Add --os to manifest add
This commit is contained in:
OpenShift Merge Robot
2020-04-27 15:33:00 +02:00
committed by GitHub
8 changed files with 31 additions and 0 deletions

View File

@ -34,6 +34,7 @@ func init() {
flags.StringSliceVar(&manifestAddOpts.Annotation, "annotation", nil, "set an `annotation` for the specified image") flags.StringSliceVar(&manifestAddOpts.Annotation, "annotation", nil, "set an `annotation` for the specified image")
flags.StringVar(&manifestAddOpts.Arch, "arch", "", "override the `architecture` of the specified image") flags.StringVar(&manifestAddOpts.Arch, "arch", "", "override the `architecture` of the specified image")
flags.StringSliceVar(&manifestAddOpts.Features, "features", nil, "override the `features` of the specified image") flags.StringSliceVar(&manifestAddOpts.Features, "features", nil, "override the `features` of the specified image")
flags.StringVar(&manifestAddOpts.OS, "os", "", "override the `OS` of the specified image")
flags.StringVar(&manifestAddOpts.OSVersion, "os-version", "", "override the OS `version` of the specified image") flags.StringVar(&manifestAddOpts.OSVersion, "os-version", "", "override the OS `version` of the specified image")
flags.StringVar(&manifestAddOpts.Variant, "variant", "", "override the `Variant` of the specified image") flags.StringVar(&manifestAddOpts.Variant, "variant", "", "override the `Variant` of the specified image")
} }

View File

@ -1760,6 +1760,7 @@ _podman_manifest_add() {
--annotation --annotation
--arch --arch
--features --features
--os
--os-version --os-version
--variant --variant
" "

View File

@ -38,6 +38,13 @@ retrieved from the image's configuration information.
Specify the features list which the list or index records as requirements for Specify the features list which the list or index records as requirements for
the image. This option is rarely used. the image. This option is rarely used.
**--os**
Override the OS which the list or index records as a requirement for the image.
If *imagename* refers to a manifest list or image index, the OS information
will be retrieved from it. Otherwise, it will be retrieved from the image's
configuration information.
**--os-version** **--os-version**
Specify the OS version which the list or index records as a requirement for the Specify the OS version which the list or index records as a requirement for the

View File

@ -19,6 +19,7 @@ type ManifestAddOpts struct {
Arch string `json:"arch"` Arch string `json:"arch"`
Features []string `json:"features"` Features []string `json:"features"`
Images []string `json:"images"` Images []string `json:"images"`
OS string `json:"os"`
OSVersion string `json:"os_version"` OSVersion string `json:"os_version"`
Variant string `json:"variant"` Variant string `json:"variant"`
} }
@ -86,6 +87,11 @@ func addManifestToList(ref types.ImageReference, list manifests.List, systemCont
if err != nil { if err != nil {
return nil, err return nil, err
} }
if opts.OS != "" {
if err := list.SetOS(d, opts.OS); err != nil {
return nil, err
}
}
if len(opts.OSVersion) > 0 { if len(opts.OSVersion) > 0 {
if err := list.SetOSVersion(d, opts.OSVersion); err != nil { if err := list.SetOSVersion(d, opts.OSVersion); err != nil {
return nil, err return nil, err

View File

@ -10,6 +10,7 @@ type ManifestAddOptions struct {
Arch string `json:"arch" schema:"arch"` Arch string `json:"arch" schema:"arch"`
Features []string `json:"features" schema:"features"` Features []string `json:"features" schema:"features"`
Images []string `json:"images" schema:"images"` Images []string `json:"images" schema:"images"`
OS string `json:"os" schema:"os"`
OSVersion string `json:"os_version" schema:"os_version"` OSVersion string `json:"os_version" schema:"os_version"`
Variant string `json:"variant" schema:"variant"` Variant string `json:"variant" schema:"variant"`
} }

View File

@ -79,6 +79,7 @@ func (ir *ImageEngine) ManifestAdd(ctx context.Context, opts entities.ManifestAd
Arch: opts.Arch, Arch: opts.Arch,
Features: opts.Features, Features: opts.Features,
Images: opts.Images, Images: opts.Images,
OS: opts.OS,
OSVersion: opts.OSVersion, OSVersion: opts.OSVersion,
Variant: opts.Variant, Variant: opts.Variant,
} }

View File

@ -41,6 +41,7 @@ func (ir *ImageEngine) ManifestAdd(ctx context.Context, opts entities.ManifestAd
Arch: opts.Arch, Arch: opts.Arch,
Features: opts.Features, Features: opts.Features,
Images: opts.Images, Images: opts.Images,
OS: opts.OS,
OSVersion: opts.OSVersion, OSVersion: opts.OSVersion,
Variant: opts.Variant, Variant: opts.Variant,
} }

View File

@ -85,4 +85,17 @@ var _ = Describe("Podman manifest", func() {
Expect(session.OutputToString()).To(ContainSubstring(imageListPPC64LEInstanceDigest)) Expect(session.OutputToString()).To(ContainSubstring(imageListPPC64LEInstanceDigest))
Expect(session.OutputToString()).To(ContainSubstring(imageListS390XInstanceDigest)) Expect(session.OutputToString()).To(ContainSubstring(imageListS390XInstanceDigest))
}) })
It("podman manifest add --os", func() {
session := podmanTest.Podman([]string{"manifest", "create", "foo"})
session.WaitWithDefaultTimeout()
Expect(session.ExitCode()).To(Equal(0))
session = podmanTest.Podman([]string{"manifest", "add", "--os", "bar", "foo", imageList})
session.WaitWithDefaultTimeout()
Expect(session.ExitCode()).To(Equal(0))
session = podmanTest.Podman([]string{"manifest", "inspect", "foo"})
session.WaitWithDefaultTimeout()
Expect(session.ExitCode()).To(Equal(0))
Expect(session.OutputToString()).To(ContainSubstring(`"os": "bar"`))
})
}) })