Make sure that bindings are in sync with the code. The check is similar
to what's already being done with `make vendor`, so integrate the two.
[NO TESTS NEEDED]
Signed-off-by: Valentin Rothberg <rothberg@redhat.com>
Instead of implicitly generating the bindings, make it explicit, similar
to `make vendor`. This should prevent redundant and possibly error
prone generations. A following commit will shield CI.
Signed-off-by: Valentin Rothberg <rothberg@redhat.com>
The Go gods did not shine upon us trying to understand what's going on
in #9000. The symptom is that `go generate` did not add required
imports to a generated file, ultimately breaking subsequent compilation.
While it still remains unclear *why* Go is behaving like that, the
symptom disappears when `go generate` runs in module mode; that is
without `-mod=vendor` and without `GO111MODULE=off`. This was
reproducible on two separate machines (Ubuntu and Fedora).
Also, when facing an unset GOPATH, set it to Go's default (i.e.,
$HOME/go) and make sure that GOBIN is in PATH since `goimports`
is required by `go generate`.
Fixes: #9000
Signed-off-by: Valentin Rothberg <rothberg@redhat.com>
This reverts commit de05e5816869073600ae8e851093b4b9a9d7fab0.
Running `go get -u` will change the local Go module causing CI to fail
as the local git tree is being changed. Reverting the change for now
until we have a better idea.
Signed-off-by: Valentin Rothberg <rothberg@redhat.com>
I'm tired of seeing these every time I run 'make':
WARNING: go-md2man does not handle node type HTMLSpan
Cause: left-angle-brackets ( < ) in document source
Solution:
1) backquote-escape those that need to be shown, usually
ones referring to an argument or email address; or
2) Actual HTML ( <sup> and <a> ) which are meant to be
shown in generated HTML docs but can't be shown in
man pages, we filter out via a sed expression.
Signed-off-by: Ed Santiago <santiago@redhat.com>
On each PR (with a few exceptions), check the list of git-touched
files, and abort if no tests are added. Include instructions
on how to bypass the check if tests really aren't needed.
Include a hardcoded exception list for PRs that only touch a
well-known subset of "safe" files: docs, .cirrus.yml, vendor,
version, hack, contrib, or *.md. This list is likely to need
tuning over time.
Add a test suite, but not one recognized by the new script
(because it's a "*.t" file), so: [NO TESTS NEEDED]
Signed-off-by: Ed Santiago <santiago@redhat.com>
Install ginkgo on demand via `go get -u` rather than keeping a copy it's
entire source code in the vendor dirctory. The main motivation for that
is to make `golangci-lint` happy which is continuously throwing up on
the import of a program (i.e., ginkgo). The linter is broken and stupid
as it ignores flags to ignore dirs and ignores build tags (at least some
linters do) which is blocking us from updating to newer versions.
Signed-off-by: Valentin Rothberg <rothberg@redhat.com>
Release trigger script failed[1] because the entire script
runs under 'set -e'; so a 'grep -- -dev' that finds no
results will cause a nonzero exit status and hence the
entire script to fail. Work around that.
[1] https://cirrus-ci.com/task/4541290882793472
Signed-off-by: Ed Santiago <santiago@redhat.com>
It turns out an options was added to container exists so it makes sense
to have pods and container exists calls have an optional structure for
options.
Signed-off-by: baude <bbaude@redhat.com>
Run `go generate ./pkg/bindings/...` once for all bindings instead of
generating them separately. This should speed up bindings generation
as a given package is visited only once, and it fixes#8989 by dropping
the use of pushd and popd.
Fixes: #8989
Signed-off-by: Valentin Rothberg <rothberg@redhat.com>
Set `-mod=vendor` when generating the bindings. We expect all
dependencies to be vendored already. This should slightly speed
up the bindings generation and prevent redundant network accesses.
Signed-off-by: Valentin Rothberg <rothberg@redhat.com>
Install golangci-lint to `./bin` instead of `$GOBIN`. The latter may be
shared with other projects who require a different version. Having a
shared version of golangci-lint is a reoccurring source of red herrings
on my work station, so I think it's time to split them.
Signed-off-by: Valentin Rothberg <rothberg@redhat.com>
This function is now used for the port and rename command.
Rename it to AutocompleteContainerOneArg.
Signed-off-by: Paul Holzinger <paul.holzinger@web.de>
When doing a podman images, manifests lists look just like images, so
it is logical that users would assume that they can just podman push them
to a registry. The problem is we throw out weird errors when this happens
and users need to somehow figure out this is a manifest list rather then
an image, and frankly the user will not understand the difference.
This PR will make podman push just do the right thing, by failing over and
attempting to push the manifest if it fails to push the image.
Fix up handling of manifest push
Protocol should bring back a digest string, which can either be
printed or stored in a file.
We should not reimplement the manifest push setup code in the tunnel
code but take advantage of the api path, to make sure remote and local
work the same way.
Signed-off-by: Daniel J Walsh <dwalsh@redhat.com>
partially revert 95c45773d7dbca2880152de681c81f0a2afec99b
restrict the cases where /sys is bind mounted from the host.
The heuristic doesn't detect all the cases where the bind mount is not
necessary, but it is an improvement on the previous version where /sys
was always bind mounted for rootless containers unless --net none was
specified.
Signed-off-by: Giuseppe Scrivano <gscrivan@redhat.com>
Basic theory: We remove the container, but *only from the DB*.
We leave it in c/storage, we leave the lock allocated, we leave
it running (if it is). Then we create an identical container with
an altered name, and add that back to the database. Theoretically
we now have a renamed container.
The advantage of this approach is that it doesn't just apply to
rename - we can use this to make *any* configuration change to a
container that does not alter its container ID.
Potential problems are numerous. This process is *THOROUGHLY*
non-atomic at present - if you `kill -9` Podman mid-rename things
will be in a bad place, for example. Also, we can't rename
containers that can't be removed normally - IE, containers with
dependencies (pod infra containers, for example).
The largest potential improvement will be to move the majority of
the work into the DB, with a `RecreateContainer()` method - that
will add atomicity, and let us remove the container without
worrying about depencies and similar issues.
Potential problems: long-running processes that edit the DB and
may have an older version of the configuration around. Most
notable example is `podman run --rm` - the removal command needed
to be manually edited to avoid this one. This begins to get at
the heart of me not wanting to do this in the first place...
This provides CLI and API implementations for frontend, but no
tunnel implementation. It will be added in a future release (just
held back for time now - we need this in 3.0 and are running low
on time).
This is honestly kind of horrifying, but I think it will work.
Signed-off-by: Matthew Heon <mheon@redhat.com>