Commit Graph

1926 Commits

Author SHA1 Message Date
OpenShift Merge Robot e0b93af70f
Merge pull request #6808 from mheon/allow_empty_hostport
Allow empty host port in --publish flag
2020-06-29 13:52:47 -04:00
OpenShift Merge Robot c682ca3d35
Merge pull request #6794 from baude/v2remotewindowsterminal
Set console mode for windows
2020-06-29 12:43:20 -04:00
OpenShift Merge Robot 59e6192eb6
Merge pull request #6716 from jwhonce/issues/6598
Fixes --remote flag issues
2020-06-29 11:31:39 -04:00
OpenShift Merge Robot 6ac009d530
Merge pull request #6666 from giuseppe/conmon-delegate
podman: add new cgroup mode split
2020-06-29 10:53:41 -04:00
Brent Baude dfb2f92583 Set console mode for windows
Windows terminal handling is different than darwin and linux.  It needs to have the terminal mode set to enable virtual terminal processing.  This allows colors and other things to work.

Signed-off-by: Brent Baude <bbaude@redhat.com>
2020-06-29 09:17:55 -05:00
Matthew Heon 3601b96600 Allow empty host port in --publish flag
I didn't believe that this was actually legal, but it looks like
it is. And, unlike our previous understanding (host port being
empty means just use container port), empty host port actually
carries the same meaning as `--expose` + `--publish-all` (that
is, assign a random host port to the given container port). This
requires a significant rework of our port handling code to handle
this new case. I don't foresee this being commonly used, so I
optimized having a fixed port number as fast path, which this
random assignment code running after the main port handling code
only if necessary.

Fixes #6806

Signed-off-by: Matthew Heon <matthew.heon@pm.me>
2020-06-29 09:33:43 -04:00
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
Jhon Honce 48e9af1171 Revert sending --remote flag to containers
* quick --remote fix, sent --remote to ctnrs as argument

Signed-off-by: Jhon Honce <jhonce@redhat.com>
2020-06-25 11:35:32 -07:00
Giuseppe Scrivano 6ee5f740a4
podman: add new cgroup mode split
When running under systemd there is no need to create yet another
cgroup for the container.

With conmon-delegated the current cgroup will be split in two sub
cgroups:

- supervisor
- container

The supervisor cgroup will hold conmon and the podman process, while
the container cgroup is used by the OCI runtime (using the cgroupfs
backend).

Closes: https://github.com/containers/libpod/issues/6400

Signed-off-by: Giuseppe Scrivano <gscrivan@redhat.com>
2020-06-25 17:16:12 +02:00
OpenShift Merge Robot f8036c548c
Merge pull request #6754 from edsantiago/man_page_xref
Docs: consistency between man / --help
2020-06-25 08:33:39 -04:00
OpenShift Merge Robot cd36499d10
Merge pull request #6751 from vrothberg/fix-6744
podman run/create: support all transports
2020-06-25 06:16:54 -04:00
OpenShift Merge Robot 2df3faab7b
Merge pull request #6752 from rhatdan/inspect
Fix inspect to display multiple label: changes
2020-06-24 14:57:35 -04:00
OpenShift Merge Robot b61e429f19
Merge pull request #6732 from mheon/fix_stopsignal_set
Set stop signal to 15 when not explicitly set
2020-06-24 13:02:43 -04: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
Valentin Rothberg f80461078e podman run/create: support all transports
Support all image transports in podman run/create.  It seems we
regressed with v2 on that.  Also add tests to make sure we're
not regressing again.

Fixes: #6744
Signed-off-by: Valentin Rothberg <rothberg@redhat.com>
2020-06-24 17:20:04 +02:00
Daniel J Walsh 7330647cbd
Fix inspect to display multiple label: changes
If the user runs a container like

podman run --security-opt seccomp=unconfined --security-opt label=type:spc_t --security-opt label=level:s0 ...

Podman inspect was only showing the second option

This change will show

            "SecurityOpt": [
                "label=type:spc_t,label=level:s0:c60",
                "seccomp=unconfined"
            ],

Signed-off-by: Daniel J Walsh <dwalsh@redhat.com>
2020-06-24 11:05:39 -04:00
Matthew Heon 7fe4c5204e Set stop signal to 15 when not explicitly set
When going through the output of `podman inspect` to try and
identify another issue, I noticed that Podman 2.0 was setting
StopSignal to 0 on containers by default. After chasing it
through the command line and SpecGen, I determined that we were
actually not setting a default in Libpod, which is strange
because I swear we used to do that. I re-added the disappeared
default and now all is well again.

Also, while I was looking for the bug in SpecGen, I found a bunch
of TODOs that have already been done. Eliminate the comments for
these.

Signed-off-by: Matthew Heon <matthew.heon@pm.me>
2020-06-24 09:27:20 -04:00
OpenShift Merge Robot c48a542013
Merge pull request #6733 from edsantiago/bats_help_extra_args
BATS tests: new too-many-arguments test
2020-06-24 09:27:07 -04:00
Jhon Honce 4e59fd77a8 Fix ssh-agent support
* An identity of "" implies ssh-agent and user/password to be used
* Fixed example

Signed-off-by: Jhon Honce <jhonce@redhat.com>
2020-06-23 18:51:56 -07: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
OpenShift Merge Robot aa6881dd14
Merge pull request #6731 from baude/toolboxjson
Add JSON output field for ps
2020-06-23 14:14:43 -04:00
Brent Baude 9ec0e10484 Add JSON output field for ps
the toolbox team needs a field in our ps json that represents a human readable time.

Signed-off-by: Brent Baude <bbaude@redhat.com>
2020-06-23 11:24:27 -05:00
Jhon Honce 7377e578a9 V2 podman system connection
* Implement command
* Refactor podman-remote to pull from containers.conf by default
* podman-remote defaults to --remote being true
* Write podman-system-connection.1.md

Signed-off-by: Jhon Honce <jhonce@redhat.com>
2020-06-23 08:18:53 -07:00
Brent Baude b2c42a0993 wip
Signed-off-by: Brent Baude <bbaude@redhat.com>
2020-06-23 08:18:53 -07:00
OpenShift Merge Robot 73514b1465
Merge pull request #6722 from vrothberg/fix-6718
image load: no args required
2020-06-23 16:47:42 +02: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 fc2c2ad174
Merge pull request #6712 from mheon/readd_userns_envvar
Re-add PODMAN_USERNS environment variable
2020-06-23 12:19:01 +02:00
OpenShift Merge Robot 9e37fd43e4
Merge pull request #6625 from QiWang19/fd
Add --preservefds to podman run
2020-06-23 10:00:21 +02:00
Matthew Heon 13cfdb0742 Fix conflicts between privileged and other flags
The `--privileged` flag does not conflict with `--group-add`
(this one was breaking Toolbox) and does not conflict with most
parts of `--security-opt` (this was breaking Openstack).

Signed-off-by: Matthew Heon <matthew.heon@pm.me>
2020-06-22 16:08:09 -04:00
Matthew Heon f329e2ad67 Re-add PODMAN_USERNS environment variable
This was lost during the Podman 2.0 migration. Turns out to be a
very easy fix, fortunately - we want to use the environment var
if not explicitly overridden.

Fixes #6705

Signed-off-by: Matthew Heon <matthew.heon@pm.me>
2020-06-22 14:11:30 -04: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
Qi Wang f61a7f25a8 Add --preservefds to podman run
Add --preservefds to podman run. close https://github.com/containers/libpod/issues/6458

Signed-off-by: Qi Wang <qiwan@redhat.com>
2020-06-19 09:40:13 -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
Matthew Heon 43ead88e81 Podman system service is no longer experimental
As such, we can remove the warnings logs that previously printed
every time it was run.

Signed-off-by: Matthew Heon <mheon@redhat.com>
2020-06-17 17:39:49 -04:00
OpenShift Merge Robot 78ad57ebd3
Merge pull request #6636 from mheon/add_warnings
Re-add resource limit warnings to Specgen
2020-06-17 16:51:51 +02:00
OpenShift Merge Robot 200afe7a94
Merge pull request #6583 from mheon/inspect_ctr_before_img
Fix podman inspect on overlapping/missing objects
2020-06-17 16:27:15 +02:00
OpenShift Merge Robot 38391ed25f
Merge pull request #6622 from goochjj/podman_fix_init
Fix --init and --init-path
2020-06-17 15:42:30 +02:00
Matthew Heon c51c593ff6 Re-add resource limit warnings to Specgen
These were part of Podman v1.9, but were lost in the transition
to using Specgen to create containers. Most resource limits are
checked via the sysinfo package to ensure they are safe to use
(the cgroup is mounted, kernel support is present, etc) and
removed if not safe. Further, bounds checks are performed to
ensure that values are valid.

Ensure these warnings are printed client-side when they occur.
This part is a little bit gross, as it happens in pkg/infra and
not cmd/podman, which is largely down to how we implemented
`podman run` - all the work is done in pkg/infra and it returns
only once the container has exited, and we need warnings to print
*before* the container runs. The solution here, while inelegant,
avoid the need to extensively refactor our handling of run.

Should fix blkio-limit warnings that were identified by the FCOS
test suite.

Signed-off-by: Matthew Heon <matthew.heon@pm.me>
2020-06-16 17:32:01 -04:00
Matthew Heon 6589d75565 Fix podman inspect on overlapping/missing objects
This started as a small fix to `podman inspect` where a container
and image, with the same name/tag, were present, and
`podman inspect` was run on that name. `podman inspect` in 1.9
(and `docker inspect`) will give you the container; in v2.0, we
gave the image. This was an easy fix (just reorder how we check
for image/container).

Unfortunately, in the process of testing this fix, I determined
that we regressed in a different area. When you run inspect on
a number of containers, some of which do not exist,
`podman inspect` should return an array of inspect results for
the objects that exist, then print a number of errors, one for
each object that could not be found. We were bailing after the
first error, and not printing output for the containers that
succeeded. (For reference, this applied to images as well). This
required a much more substantial set of changes to properly
handle - signatures for the inspect functions in ContainerEngine
and ImageEngine, plus the implementations of these interfaces,
plus the actual inspect frontend code needed to be adjusted to
use this.

Fixes #6556

Signed-off-by: Matthew Heon <matthew.heon@pm.me>
2020-06-16 14:33:33 -04:00
Joseph Gooch eb8bfdad3e Fix --init and --init-path
Init properly passed into specgen
Allow --init with --systemd=true but not --systemd=always.

Signed-off-by: Joseph Gooch <mrwizard@dok.org>
2020-06-16 17:37:39 +00:00
Jhon Honce 2e22e18afb Add deprecated message to varlink command
* Remove varlink references from the man pages
* Fix signature for extractTarFile()

Signed-off-by: Jhon Honce <jhonce@redhat.com>
2020-06-15 11:41:57 -07:00
Valentin Rothberg fe488b5f11 pod create --replace
Add a `--replace` flag to the `pod create` command.  If another pod with
the same name already exists, it will be replaced and removed.

Adding this flag is motivated by #5485 to make running Podman in systemd
units (or any other scripts/automation) more robust.  In case of a
crash, a pod may not be removed by a sytemd unit anymore.  The
`--replace` flag allows for supporting crashes.

Note that the `--replace` flag does not require the `--name` flag to be
set, so it can be set unconditionally in `podman generate systemd`.

Signed-off-by: Valentin Rothberg <rothberg@redhat.com>
2020-06-15 15:55:55 +02:00
Valentin Rothberg fa3b8a75c4 {create,run} --replace
Add a `--replace` flag to the `container {create,run}` commands.
If another container with the same name already exists, it will
be replaced and removed.

Adding this flag is motivated by #5485 to make running Podman in systemd
units (or any other scripts/automation) more robust.  In case of a
crash, a container may not be removed by a sytemd unit anymore.  The
`--replace` flag allows for supporting crashes.

Signed-off-by: Valentin Rothberg <rothberg@redhat.com>
2020-06-15 15:53:51 +02: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 2386a2ef2d
Do not default WorkingDir to / on client side
Signed-off-by: Daniel J Walsh <dwalsh@redhat.com>
2020-06-12 07:15:57 -04:00
OpenShift Merge Robot 39ad0387ca
Merge pull request #6415 from vrothberg/systemd-new-pod
podman-generate-systemd --new for pods
2020-06-11 10:56:11 -04:00