Merge pull request #6118 from baude/v2bindingsenforce

set binding tests to required
This commit is contained in:
OpenShift Merge Robot
2020-05-08 17:57:10 +02:00
committed by GitHub
12 changed files with 107 additions and 78 deletions

View File

@ -644,7 +644,6 @@ special_testing_cross_task:
special_testing_bindings_task:
skip: $CI == 'true'
depends_on:
- "gating"
- "varlink_api"

View File

@ -234,7 +234,6 @@ func outputJSON(stats []*containerStats) error {
Pids: j.PIDS(),
})
}
b, err := json.MarshalIndent(jstats, "", " ")
if err != nil {
return err

View File

@ -24,7 +24,7 @@ var (
func init() {
registry.Commands = append(registry.Commands, registry.CliCommand{
Mode: []entities.EngineMode{entities.ABIMode, entities.TunnelMode},
Mode: []entities.EngineMode{entities.ABIMode},
Command: annotateCmd,
Parent: manifestCmd,
})

View File

@ -87,7 +87,7 @@ case "$CG_FS_TYPE" in
# Normally not something to do for stable testing
# but crun is new, and late-breaking fixes may be required
# on short notice
dnf update -y crun
dnf update -y crun containers-common
fi
;;
*)

View File

@ -125,23 +125,24 @@ func Push(ctx context.Context, name string, destination *string, all *bool) (str
return idr.ID, response.Process(&idr)
}
// There is NO annotate endpoint. this binding could never work
// Annotate updates the image configuration of a given manifest list
func Annotate(ctx context.Context, name, digest string, options image.ManifestAnnotateOpts) (string, error) {
var idr handlers.IDResponse
conn, err := bindings.GetClient(ctx)
if err != nil {
return "", err
}
params := url.Values{}
params.Set("digest", digest)
optionsString, err := jsoniter.MarshalToString(options)
if err != nil {
return "", err
}
stringReader := strings.NewReader(optionsString)
response, err := conn.DoRequest(stringReader, http.MethodPost, "/manifests/%s/annotate", params, name)
if err != nil {
return "", err
}
return idr.ID, response.Process(&idr)
}
//func Annotate(ctx context.Context, name, digest string, options image.ManifestAnnotateOpts) (string, error) {
// var idr handlers.IDResponse
// conn, err := bindings.GetClient(ctx)
// if err != nil {
// return "", err
// }
// params := url.Values{}
// params.Set("digest", digest)
// optionsString, err := jsoniter.MarshalToString(options)
// if err != nil {
// return "", err
// }
// stringReader := strings.NewReader(optionsString)
// response, err := conn.DoRequest(stringReader, http.MethodPost, "/manifests/%s/annotate", params, name)
// if err != nil {
// return "", err
// }
// return idr.ID, response.Process(&idr)
//}

View File

@ -531,7 +531,7 @@ var _ = Describe("Podman containers ", func() {
Expect(err).ToNot(BeNil())
})
It("podman prune stoped containers", func() {
It("podman prune stopped containers", func() {
// Start and stop a container to enter in exited state.
var name = "top"
_, err := bt.RunTopContainer(&name, &bindings.PFalse, nil)
@ -546,7 +546,7 @@ var _ = Describe("Podman containers ", func() {
Expect(len(pruneResponse.ID)).To(Equal(1))
})
It("podman prune stoped containers with filters", func() {
It("podman prune stopped containers with filters", func() {
// Start and stop a container to enter in exited state.
var name = "top"
_, err := bt.RunTopContainer(&name, &bindings.PFalse, nil)

View File

@ -118,25 +118,27 @@ var _ = Describe("Podman containers ", func() {
Expect(len(data.Manifests)).To(BeZero())
})
It("annotate manifest", func() {
id, err := manifests.Create(bt.conn, []string{"quay.io/libpod/foobar:latest"}, []string{}, nil)
Expect(err).To(BeNil())
opts := image.ManifestAddOpts{Images: []string{"docker.io/library/alpine:latest"}}
// There is NO annotate endpoint, this could never work.:w
_, err = manifests.Add(bt.conn, id, opts)
Expect(err).To(BeNil())
data, err := manifests.Inspect(bt.conn, id)
Expect(err).To(BeNil())
Expect(len(data.Manifests)).To(BeNumerically("==", 1))
digest := data.Manifests[0].Digest.String()
annoOpts := image.ManifestAnnotateOpts{OS: "foo"}
_, err = manifests.Annotate(bt.conn, id, digest, annoOpts)
Expect(err).To(BeNil())
list, err := manifests.Inspect(bt.conn, id)
Expect(err).To(BeNil())
Expect(len(list.Manifests)).To(BeNumerically("==", 1))
Expect(list.Manifests[0].Platform.OS).To(Equal("foo"))
})
//It("annotate manifest", func() {
// id, err := manifests.Create(bt.conn, []string{"quay.io/libpod/foobar:latest"}, []string{}, nil)
// Expect(err).To(BeNil())
// opts := image.ManifestAddOpts{Images: []string{"docker.io/library/alpine:latest"}}
//
// _, err = manifests.Add(bt.conn, id, opts)
// Expect(err).To(BeNil())
// data, err := manifests.Inspect(bt.conn, id)
// Expect(err).To(BeNil())
// Expect(len(data.Manifests)).To(BeNumerically("==", 1))
// digest := data.Manifests[0].Digest.String()
// annoOpts := image.ManifestAnnotateOpts{OS: "foo"}
// _, err = manifests.Annotate(bt.conn, id, digest, annoOpts)
// Expect(err).To(BeNil())
// list, err := manifests.Inspect(bt.conn, id)
// Expect(err).To(BeNil())
// Expect(len(list.Manifests)).To(BeNumerically("==", 1))
// Expect(list.Manifests[0].Platform.OS).To(Equal("foo"))
//})
It("push manifest", func() {
Skip("TODO")

View File

@ -57,6 +57,11 @@ var _ = Describe("Podman pods", func() {
podSummary, err := pods.List(bt.conn, nil)
Expect(err).To(BeNil())
Expect(len(podSummary)).To(Equal(1))
// Start the pod
_, err = pods.Start(bt.conn, newpod)
Expect(err).To(BeNil())
// Adding an alpine container to the existing pod
_, err = bt.RunTopContainer(nil, &bindings.PTrue, &newpod)
Expect(err).To(BeNil())
@ -83,6 +88,11 @@ var _ = Describe("Podman pods", func() {
It("List pods with filters", func() {
newpod2 := "newpod2"
bt.Podcreate(&newpod2)
// Start the pod
_, err = pods.Start(bt.conn, newpod)
Expect(err).To(BeNil())
_, err = bt.RunTopContainer(nil, &bindings.PTrue, &newpod)
Expect(err).To(BeNil())

View File

@ -3,7 +3,6 @@ package test_bindings
import (
"time"
"github.com/containers/libpod/pkg/api/handlers"
"github.com/containers/libpod/pkg/bindings"
"github.com/containers/libpod/pkg/bindings/containers"
"github.com/containers/libpod/pkg/bindings/pods"
@ -39,8 +38,8 @@ var _ = Describe("Podman system", func() {
})
It("podman events", func() {
eChan := make(chan handlers.Event, 1)
var messages []handlers.Event
eChan := make(chan entities.Event, 1)
var messages []entities.Event
cancelChan := make(chan bool, 1)
go func() {
for e := range eChan {

View File

@ -64,32 +64,34 @@ func (ir *ImageEngine) ManifestAdd(ctx context.Context, opts entities.ManifestAd
return listID, nil
}
// FIXME There is no endpoint for annotate and therefor this code is currently invalid
// ManifestAnnotate updates an entry of the manifest list
func (ir *ImageEngine) ManifestAnnotate(ctx context.Context, names []string, opts entities.ManifestAnnotateOptions) (string, error) {
manifestAnnotateOpts := image.ManifestAnnotateOpts{
Arch: opts.Arch,
Features: opts.Features,
OS: opts.OS,
OSFeatures: opts.OSFeatures,
OSVersion: opts.OSVersion,
Variant: opts.Variant,
}
if len(opts.Annotation) > 0 {
annotations := make(map[string]string)
for _, annotationSpec := range opts.Annotation {
spec := strings.SplitN(annotationSpec, "=", 2)
if len(spec) != 2 {
return "", errors.Errorf("no value given for annotation %q", spec[0])
}
annotations[spec[0]] = spec[1]
}
manifestAnnotateOpts.Annotation = annotations
}
updatedListID, err := manifests.Annotate(ctx, names[0], names[1], manifestAnnotateOpts)
if err != nil {
return updatedListID, errors.Wrapf(err, "error annotating %s of manifest list %s", names[1], names[0])
}
return fmt.Sprintf("%s :%s", updatedListID, names[1]), nil
return "", errors.New("not implemented")
// manifestAnnotateOpts := image.ManifestAnnotateOpts{
// Arch: opts.Arch,
// Features: opts.Features,
// OS: opts.OS,
// OSFeatures: opts.OSFeatures,
// OSVersion: opts.OSVersion,
// Variant: opts.Variant,
// }
// if len(opts.Annotation) > 0 {
// annotations := make(map[string]string)
// for _, annotationSpec := range opts.Annotation {
// spec := strings.SplitN(annotationSpec, "=", 2)
// if len(spec) != 2 {
// return "", errors.Errorf("no value given for annotation %q", spec[0])
// }
// annotations[spec[0]] = spec[1]
// }
// manifestAnnotateOpts.Annotation = annotations
// }
// updatedListID, err := manifests.Annotate(ctx, names[0], names[1], manifestAnnotateOpts)
// if err != nil {
// return updatedListID, errors.Wrapf(err, "error annotating %s of manifest list %s", names[1], names[0])
// }
// return fmt.Sprintf("%s :%s", updatedListID, names[1]), nil
}
// ManifestRemove removes the digest from manifest list

View File

@ -42,12 +42,14 @@ func CompleteSpec(ctx context.Context, r *libpod.Runtime, s *specgen.SpecGenerat
if err != nil {
return err
}
if stopSignal != "" {
sig, err := signal.ParseSignalNameOrNumber(stopSignal)
if err != nil {
return err
}
s.StopSignal = &sig
}
}
rtc, err := r.GetConfig()
if err != nil {
@ -78,6 +80,9 @@ func CompleteSpec(ctx context.Context, r *libpod.Runtime, s *specgen.SpecGenerat
}
// labels from the image that dont exist already
if len(labels) > 0 && s.Labels == nil {
s.Labels = make(map[string]string)
}
for k, v := range labels {
if _, exists := s.Labels[k]; !exists {
s.Labels[k] = v

View File

@ -5,6 +5,7 @@ package integration
import (
"fmt"
"os"
"time"
"github.com/containers/libpod/pkg/cgroups"
. "github.com/containers/libpod/test/utils"
@ -87,13 +88,24 @@ var _ = Describe("Podman stats", func() {
})
It("podman stats with json output", func() {
var found bool
session := podmanTest.RunTopContainer("")
session.WaitWithDefaultTimeout()
Expect(session.ExitCode()).To(Equal(0))
session = podmanTest.Podman([]string{"stats", "--all", "--no-stream", "--format", "json"})
session.WaitWithDefaultTimeout()
Expect(session.ExitCode()).To(Equal(0))
Expect(session.IsJSONOutputValid()).To(BeTrue())
for i := 0; i < 5; i++ {
ps := podmanTest.Podman([]string{"ps", "-q"})
ps.WaitWithDefaultTimeout()
if len(ps.OutputToStringArray()) == 1 {
found = true
break
}
time.Sleep(time.Second)
}
Expect(found).To(BeTrue())
stats := podmanTest.Podman([]string{"stats", "--all", "--no-stream", "--format", "json"})
stats.WaitWithDefaultTimeout()
Expect(stats.ExitCode()).To(Equal(0))
Expect(stats.IsJSONOutputValid()).To(BeTrue())
})
It("podman stats on a container with no net ns", func() {