mirror of
https://github.com/containers/podman.git
synced 2025-08-06 03:19:52 +08:00
set binding tests to required
some small fix ups for binding tests and then make them required. update containers-common V2 bindings tests were failing because of changes introduced in commit a2ad5bb. Fix some typos. Signed-off-by: Lokesh Mandvekar <lsm5@fedoraproject.org> in the case where the specgen attribute for Env and Labels are nil, we should should then make the map IF we have labels and envs that need to be added. Signed-off-by: Brent Baude <bbaude@redhat.com>
This commit is contained in:
@ -644,7 +644,6 @@ special_testing_cross_task:
|
||||
|
||||
special_testing_bindings_task:
|
||||
|
||||
skip: $CI == 'true'
|
||||
depends_on:
|
||||
- "gating"
|
||||
- "varlink_api"
|
||||
|
@ -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,
|
||||
})
|
||||
|
@ -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
|
||||
;;
|
||||
*)
|
||||
|
@ -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)
|
||||
//}
|
||||
|
@ -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)
|
||||
|
@ -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")
|
||||
|
@ -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())
|
||||
|
||||
|
@ -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 {
|
||||
|
@ -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
|
||||
|
@ -42,11 +42,13 @@ func CompleteSpec(ctx context.Context, r *libpod.Runtime, s *specgen.SpecGenerat
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
sig, err := signal.ParseSignalNameOrNumber(stopSignal)
|
||||
if err != nil {
|
||||
return err
|
||||
if stopSignal != "" {
|
||||
sig, err := signal.ParseSignalNameOrNumber(stopSignal)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
s.StopSignal = &sig
|
||||
}
|
||||
s.StopSignal = &sig
|
||||
}
|
||||
|
||||
rtc, err := r.GetConfig()
|
||||
@ -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
|
||||
|
Reference in New Issue
Block a user