Commit Graph

55 Commits

Author SHA1 Message Date
Jhon Honce 6fb5f01c73 Fixes --remote flag issues
* --remote, --url and --identity are now anchored to podman command.
  Subcommands should no longer have issues
* TraverseChildren now set to V1 expectations
* Latest flag now has helper function. Now has consistent usage.
* IsRemote() uses cobra parser to determin if --remote is given
* Moved validation functions from parser pkg to validate pkg
*

Fixes #6598
Fixes #6704

Signed-off-by: Jhon Honce <jhonce@redhat.com>
2020-06-26 17:09:24 -07:00
Ed Santiago c6090c290e Docs: consistency between man / --help
New functionality in hack/man-page-checker: start cross-
referencing the man page 'Synopsis' line against the
output of 'podman foo --help'. This is part 1, flag/option
consistency. Part 2 (arg consistency) is too big and will
have to wait for later.

flag/option consistency means: if 'podman foo --help'
includes the string '[flags]' in the Usage message,
make sure the man page includes '[*options*]' in its
Synopsis line, and vice-versa. This found several
inconsistencies, which I've fixed.

While doing this I realized that Cobra automatically
includes a 'Flags:' subsection in its --help output
for all subcommands that have defined flags. This
is great - it lets us cross-check against the
usage synopsis, and make sure that '[flags]' is
present or absent as needed, without fear of
human screwups. If a flag-less subcommand ever
gets extended with flags, but the developer forgets
to add '[flags]' and remove DisableFlagsInUseLine,
we now have a test that will catch that. (This,
too, caught two instances which I fixed).

I don't actually know if the new man-page-checker
functionality will work in CI: I vaguely recall that
it might run before 'make podman' does; and also
vaguely recall that some steps were taken to remedy
that.

Signed-off-by: Ed Santiago <santiago@redhat.com>
2020-06-24 10:39:10 -06:00
Ed Santiago 6864a5547a BATS tests: new too-many-arguments test
...plus a few others. And fixes to actual parsing.

If a command's usage message includes '...' in the
argument list, assume it can take unlimited arguments.
Nothing we can check.

For all others, though, the ALL-CAPS part on the
right-hand side of the usage message will define
an upper bound on the number of arguments accepted
by the command. So in our 'podman --help' test,
generate N+1 args and run that command. We expect
a 125 exit status and a suitably helpful error message.

Not all podman commands or subcommands were checking,
so I fixed that. And, fixed some broken usage messages
(all-caps FLAGS, and '[flags]' at the end of 'ARGS').
Add new checks to the help test to prevent those in
the future.

Plus a little refactoring/cleanup where necessary.

Signed-off-by: Ed Santiago <santiago@redhat.com>
2020-06-23 14:17:48 -06:00
Valentin Rothberg 138d447eb4 image load: no args required
Disable the args requirement of `image load`.  Instead of requiring a
lower bound, we really need an upper one with at most 1 argument.
Extend the system tests to prevent future regressions.

Fixes: #6718
Signed-off-by: Valentin Rothberg <rothberg@redhat.com>
2020-06-23 14:53:29 +02:00
OpenShift Merge Robot 4a1dd9f9a4
Merge pull request #6671 from rhatdan/build
Fix podman build handling of --http-proxy flag
2020-06-21 11:38:54 +02:00
OpenShift Merge Robot 60425c96d0
Merge pull request #6676 from lsm5/tag-correction
Account for non-default port number in image name
2020-06-20 05:51:57 -04:00
Jhon Honce ea8e61e4eb Fixes #6670
* Sort images for -q option, removing duplicate id's
* Sort images for --format json

Signed-off-by: Jhon Honce <jhonce@redhat.com>
2020-06-19 08:57:12 -07:00
Lokesh Mandvekar 71f6dd47dd Account for non-default port number in image name
Previously, if an image was tagged with the format
$REGISTRY:$PORT/$REPO:$TAG,
then `podman images` would display $PORT/$REPO:$TAG under the "TAG"
field.

This commit correctly displays $REGISTRY:$PORT/$REPO under the
"REPOSITORY" field while the "TAG" field only displays $TAG.

Signed-off-by: Lokesh Mandvekar <lsm5@fedoraproject.org>

Fixes: gh#6665
2020-06-19 10:48:15 -04:00
Valentin Rothberg bba433ed92 podman images --format json: pretty print
Pretty print the JSON output when listing images.  We regressed on that
during v2 development. The indentation is now identical to the one of
Podman v1.9.3.

Fixes: #6687
Signed-off-by: Valentin Rothberg <rothberg@redhat.com>
2020-06-19 15:30:32 +02:00
Daniel J Walsh 3556bfed09
Fix podman build handling of --http-proxy flag
Also fixed a todo for handling of cgroup manager while I was in there.

Signed-off-by: Daniel J Walsh <dwalsh@redhat.com>
2020-06-19 08:54:38 -04:00
Daniel J Walsh 200cfa41a4
Turn on More linters
- misspell
    - prealloc
    - unparam
    - nakedret

Signed-off-by: Daniel J Walsh <dwalsh@redhat.com>
2020-06-15 07:05:56 -04:00
Daniel J Walsh 4bb43b898d
Fixup issues found by golint
Signed-off-by: Daniel J Walsh <dwalsh@redhat.com>
2020-06-10 05:49:41 -04:00
Matthew Heon d505989b0e Ensure that image/container inspect are specialized
We are currently able to inspect images with
`podman container inspect` and containers with
`podman image inspect` and neither of those seem correct. This
ensures that the appropriate flags, and only the appropriate
flags, are available for each specialized exec, and they can only
inspect the specific type they were intended to.

Signed-off-by: Matthew Heon <matthew.heon@pm.me>
2020-06-03 14:25:45 -04:00
Valentin Rothberg 030a4d3257 images --no-trunc: fix ID formatting
Remove the redundant `sha256:` prefix from the image IDs.

Fixes: #6459
Signed-off-by: Valentin Rothberg <rothberg@redhat.com>
2020-06-02 17:08:31 +02:00
Valentin Rothberg dc80267b59 compat handlers: add X-Registry-Auth header support
* Support the `X-Registry-Auth` http-request header.

 * The content of the header is a base64 encoded JSON payload which can
   either be a single auth config or a map of auth configs (user+pw or
   token) with the corresponding registries being the keys.  Vanilla
   Docker, projectatomic Docker and the bindings are transparantly
   supported.

 * Add a hidden `--registries-conf` flag.  Buildah exposes the same
   flag, mostly for testing purposes.

 * Do all credential parsing in the client (i.e., `cmd/podman`) pass
   the username and password in the backend instead of unparsed
   credentials.

 * Add a `pkg/auth` which handles most of the heavy lifting.

 * Go through the authentication-handling code of most commands, bindings
   and endpoints.  Migrate them to the new code and fix issues as seen.
   A final evaluation and more tests is still required *after* this
   change.

 * The manifest-push endpoint is missing certain parameters and should
   use the ABI function instead.  Adding auth-support isn't really
   possible without these parts working.

 * The container commands and endpoints (i.e., create and run) have not
   been changed yet.  The APIs don't yet account for the authfile.

 * Add authentication tests to `pkg/bindings`.

Fixes: #6384
Signed-off-by: Valentin Rothberg <rothberg@redhat.com>
2020-05-29 15:39:37 +02:00
Daniel J Walsh 35567e706b
Attempt to turn on additional build tests
Signed-off-by: Daniel J Walsh <dwalsh@redhat.com>
2020-05-22 12:55:23 -04:00
Daniel J Walsh 9add1abd12
Handle filters correctly for podman prune
Signed-off-by: Daniel J Walsh <dwalsh@redhat.com>
2020-05-21 09:28:42 -04:00
Daniel J Walsh a4c8198afd
Fix remote handling of podman images calls
Enable three more tests
Fix handling of image filters

Signed-off-by: Daniel J Walsh <dwalsh@redhat.com>
2020-05-21 09:28:42 -04:00
Brent Baude fbd0fccf89 v2podman image sign
this is a straight port to add the podman image sign command. no improvements or refactoring done

Signed-off-by: Brent Baude <bbaude@redhat.com>
2020-05-11 09:18:56 -05:00
Brent Baude 9233bda4a8 v2 podman search rootless
enable the search command for rootless

Signed-off-by: Brent Baude <bbaude@redhat.com>
2020-05-08 12:47:01 -05:00
baude e9a17da1c5 v2trust set and show
add podman image trust set and show

Signed-off-by: baude <bbaude@redhat.com>
Signed-off-by: bbaude <bbaude@DESKTOP-SH5EG3J.localdomain>
Signed-off-by: Brent Baude <bbaude@redhat.com>
2020-05-07 09:55:52 -05:00
OpenShift Merge Robot 864aec8bb0
Merge pull request #6081 from baude/v2system
v2 system subcommand
2020-05-05 20:49:17 +02:00
baude 25312bb5b4 v2 system subcommand
add system df, info, load, renumber, and migrate

Refactor for specialized libpod engines

add the ability to prune images, volumes, containers, and pods

Signed-off-by: baude <bbaude@redhat.com>
2020-05-05 12:24:33 -05:00
OpenShift Merge Robot e6235ef8f1
Merge pull request #6076 from vrothberg/rmi-v2.2
image removal: refactor part 2
2020-05-05 17:25:04 +02:00
Daniel J Walsh 6ed3b8841f
Fix errors found when comparing podman v1 --help versus V2
Mainly add missing commands to podman image, podman containers, podman system

Also fix some informations messages and descriptions.

Signed-off-by: Daniel J Walsh <dwalsh@redhat.com>
2020-05-04 14:16:34 -04:00
Valentin Rothberg 7f97896c59 image removal: refactor part 2
Continue the refactoring of image removal.  I didn't manage to break all
the following changes into smaller and easier to digest commits due to
time constraints:

 * Return an error slice instead of a single error. Use multierror only
   in the client/frontend.  Reflect that in the types.

 * Use the batch image removal in the client while preserving the more
   rest-idiomatic single-image removal endpoint.

 * Add a new handler for the single-image removal endpoint to make it
   share the same code as the batch endpoint.

 * Expose bindings for the single and batch endpoints, so we can
   properly test them.

 * Add several convenience functions for error handling to
   pkg/errorhandling.

 * Set the correct error type in libpod to set the exit code to 2 when
   one or more containers are using an image.

 * Massage the bindings tests a bit and tackle compilation errors.

Signed-off-by: Valentin Rothberg <rothberg@redhat.com>
2020-05-04 16:01:45 +02:00
OpenShift Merge Robot 51d0be4204
Merge pull request #6051 from rhatdan/containers.conf
Fixes for test/e2e/containers_conf_test.go
2020-05-04 11:08:43 +02:00
OpenShift Merge Robot bffd3f5134
Merge pull request #6060 from sujil02/systemprune-v2
And system prune feature for v2.
2020-05-01 21:08:50 +02:00
Daniel J Walsh 97fcbfcbec
cgroupsns was not following containers.conf
Implement ParseCgroupsNamespace to handle defaults.

Signed-off-by: Daniel J Walsh <dwalsh@redhat.com>
2020-05-01 15:00:33 -04:00
Sujil02 b94862171b And system prune feature for v2.
Adds podman system prune for v2.
Refactoring for code reuse from pods containers images and volume prune.
Adds and enables testcases to support the added feature.

Signed-off-by: Sujil02 <sushah@redhat.com>
2020-05-01 13:57:16 -04:00
OpenShift Merge Robot a451048efc
Merge pull request #6059 from QiWang19/search-limit
search --limit compatible with docker
2020-05-01 19:26:54 +02:00
Qi Wang ef603de8ec search --limit compatible with docker
Check --limit range and update --limit manpage explanation.

Signed-off-by: Qi Wang <qiwan@redhat.com>
2020-05-01 11:20:19 -04:00
baude 52371057cd fix commands without input
in cases where commands require input and we dont provide it, we often would segv.  This can be attributed in many cases to the subcommand not picked up the cobra Args attribute or neither had them.

Signed-off-by: baude <bbaude@redhat.com>
2020-04-30 15:10:49 -05:00
Jhon Honce 22d5b2e305 V2 enable ps tests
* Combine cobra.Command helper functions into validate package
  from registry and common packages
* Introduce ChoiceValue for flags

Signed-off-by: Jhon Honce <jhonce@redhat.com>
2020-04-29 15:51:37 -07:00
Jhon Honce a9cc13448e V2 Restore images list tests
* Fix history --quiet formatting
* Fix image inspect --format=json
* Fix image list --sort

Signed-off-by: Jhon Honce <jhonce@redhat.com>
2020-04-29 08:24:56 -07:00
Valentin Rothberg 5ee3af2d03 enable search tests
Signed-off-by: Valentin Rothberg <rothberg@redhat.com>
2020-04-29 16:28:18 +02:00
Valentin Rothberg 2d10471b8d pull/search options: tls verify -> skip
Change the logic in the options from tls-verify to skipping
verification.  It require a constant brain yoga to translate
from doing verification (CLI logic) to skipping it (c/image logic).
As the code is using c/image, let's make it consistent.

Signed-off-by: Valentin Rothberg <rothberg@redhat.com>
2020-04-29 16:28:12 +02:00
Valentin Rothberg d6d1e3860c push: fix --tls-verify
Fix --tls-verify parsing and make the associated options reflect the
correct logic.  Other commands are affected as well but will be fixed
later.

Signed-off-by: Valentin Rothberg <rothberg@redhat.com>
2020-04-29 14:33:00 +02:00
Valentin Rothberg 46b185942c push: simplify cmd
The indirection via a 2nd variable isn't needed.

Signed-off-by: Valentin Rothberg <rothberg@redhat.com>
2020-04-29 14:14:02 +02:00
Valentin Rothberg 854293a59a push: fix push with one argument
When doing a `podman push $IMG`, $IMG acts as the source and the
destination.

Signed-off-by: Valentin Rothberg <rothberg@redhat.com>
2020-04-29 11:42:36 +02:00
Valentin Rothberg 8700c2fd03 enable inspect tests
A surprisingly big change.  A core problem was that `podman inspect`
allows for passing containers AND images with the default `--type=all`.
This only worked partially as the data was processed in isolation which
caused various issues (e.g., two separate outputs instead of one) but it
also caused issues regarding error handling.

Signed-off-by: Valentin Rothberg <rothberg@redhat.com>
2020-04-29 07:25:31 +02:00
Brent Baude 517bc28360 system tests must pass
Signed-off-by: Brent Baude <bbaude@redhat.com>
2020-04-28 15:17:00 -05:00
Brent Baude 6db081fc5e enable load integration tests
fix bug where multiple images can be loaded and have to be able to handle the return of multiple names

Signed-off-by: Brent Baude <bbaude@redhat.com>
2020-04-27 10:20:53 -05:00
Daniel J Walsh ae1731e03f
Fix podman push and podman pull to check for authfile
This fixes pull_test.go push_test.go is still broken because of
lack of registry support.

Signed-off-by: Daniel J Walsh <dwalsh@redhat.com>
2020-04-22 14:30:40 -04:00
Jhon Honce d0caf90940 V2 Restore exists E2E tests
* Fix setting exit code in */exists.go

Signed-off-by: Jhon Honce <jhonce@redhat.com>
2020-04-22 09:53:05 -07:00
Jhon Honce b21a5b7ff4 Provide a json variable pointing to a configured json API
* All commands now using the same instance of json API
* `json` variable created in each package to prevent `encoding/json`
  from being re-introduced

Signed-off-by: Jhon Honce <jhonce@redhat.com>
2020-04-21 07:56:10 -07:00
Daniel J Walsh fc76fbf945
Fix podman inspect to return errors on failure
Signed-off-by: Daniel J Walsh <dwalsh@redhat.com>
2020-04-21 05:18:16 -04:00
Valentin Rothberg 09dc701097 podman rmi: refactor logic
While this commit was initially meant to fix #5847, it has turned into a
bigger refactoring which I did not manage to break into smaller pieces:

 * Fix #5847 by refactoring the image-removal logic.

 * Make the api handler for image-removal use the ABI code. This way,
   both (i.e., ABI and Tunnel) end up using the same code.  Achieving
   this code share required to move some code around to prevent circular
   dependencies.

 * Everything in pkg/api (excluding pkg/api/types) must now only be
   accessed from code using `ABISupport`.

 * Avoid imports from entities on handlers to prevent circular
   dependencies.

 * Move `podman system service` logic into `cmd` to prevent circular
   dependencies - it depends on pkg/api.

 * Also remove the build header from infra/abi files.  It will otherwise
   confuse swagger and other tools; errors we cannot fix as go doesn't
   expose a build-tag env variable.

Fixes: #5847
Signed-off-by: Valentin Rothberg <rothberg@redhat.com>
2020-04-21 08:12:25 +02:00
OpenShift Merge Robot b771467224
Merge pull request #5862 from rhatdan/v2
Fix up handling of image data as well as setting Linux Capabilties correctly
2020-04-20 17:19:32 -04:00
OpenShift Merge Robot 1e9b3e7500
Merge pull request #5899 from jwhonce/wip/tree
V2 podman image tree
2020-04-20 16:37:38 -04:00