Commit Graph

1496 Commits

Author SHA1 Message Date
Valentin Rothberg a8cac24bea e2e inspect: HostConfig.SecurityOpt
Make sure that all specified security options are displayed in a
container's inspect data.

Signed-off-by: Valentin Rothberg <rothberg@redhat.com>
2020-06-25 10:48:41 +02:00
Matthew Heon 16b3356a89 Print port mappings in `ps` for ctrs sharing network
In Podman v1.9, we printed port mappings for the container, even
if it shared its network namespace (and thus ports) with another
container. We regressed on this in Podman v2.0, which is fixed
here.

Signed-off-by: Matthew Heon <matthew.heon@pm.me>
2020-06-24 17:27:26 -04:00
Jhon Honce d7770df5ef Fix python dockerpy tests
* Refactor packaging so unittest discovery works
* Refactor tests to use python3-docker.rpm that ships with Fedora32
* Flush image cache between tests suites
* Update documentation to reflect changes

Outstanding issue:
* client.get_image() does not fail if image does not exist

Signed-off-by: Jhon Honce <jhonce@redhat.com>
2020-06-24 12:40:55 -07:00
Matthew Heon d78e83f47d Add support for dangling filter to volumes
The dangling filter determine whether a volume is dangling - IE,
it has no containers attached using it. Unlike our other filters,
this one is a boolean - must be true or false, not arbitrary
values.

Signed-off-by: Matthew Heon <matthew.heon@pm.me>
2020-06-24 15:12:56 -04:00
Ed Santiago cf7222172e Friendly amendment for pr 6751
More robust system test for podman run/create docker-archive

Signed-off-by: Ed Santiago <santiago@redhat.com>
2020-06-24 11:10:50 -06: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
OpenShift Merge Robot 988fd27541
Merge pull request #6746 from vrothberg/untag
podman untag: error if tag doesn't exist
2020-06-24 12:19:42 -04: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
OpenShift Merge Robot 6bc5dcc282
Merge pull request #6729 from QiWang19/inspect-format
Reformat inspect network settings
2020-06-24 09:35:25 -04:00
Valentin Rothberg 1c6c12581c podman untag: error if tag doesn't exist
Throw an error if a specified tag does not exist.  Also make sure that
the user input is normalized as we already do for `podman tag`.

To prevent regressions, add a set of end-to-end and systemd tests.

Last but not least, update the docs and add bash completions.

Signed-off-by: Valentin Rothberg <rothberg@redhat.com>
2020-06-24 15:34:46 +02: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
Giuseppe Scrivano 370195cf78
libpod: specify mappings to the storage
specify the mappings in the container configuration to the storage
when creating the container so that the correct mappings can be
configured.

Regression introduced with Podman 2.0.

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

Signed-off-by: Giuseppe Scrivano <gscrivan@redhat.com>
2020-06-24 11:26:49 +02: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
Qi Wang f586c006f8 Reformat inspect network settings
Reformat ports of inspect network settings to compatible with docker inspect. Close #5380

Signed-off-by: Qi Wang <qiwan@redhat.com>
2020-06-23 16:14:27 -04:00
OpenShift Merge Robot 81f4204e4e
Merge pull request #6728 from mheon/add_privileged_tests
Add tests for --privileged with other flags
2020-06-23 15:33:46 -04:00
OpenShift Merge Robot 0d961a40ba
Merge pull request #6726 from edsantiago/bats
system tests: invoke with abs path to podman
2020-06-23 15:31:02 -04:00
Matthew Heon 039eaccb5b Add tests for --privileged with other flags
With Podman v2.0, we broke (or thought we were going to break)
using `--privileged` with `--group-add` and `--security-opt`
(specifically using `--security-opt` for SELinux config).

Signed-off-by: Matthew Heon <mheon@redhat.com>
2020-06-23 12:46:32 -04: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
Ed Santiago aa16a0aab1 system tests: invoke with abs path to podman
Reversion of one part of #6679: my handling of 'realpath'
would not work when $PODMAN is 'podman-remote --url etc'.
Trying to handle that case got unmaintainable; so instead
let's just force 'make {local,remote}system' to invoke
with a full PODMAN path. This breaks down if someone
runs the tests with a manual 'bats' invocation, but I
think I'm the only one who ever does that.

Since podman path will now be very long in the logs,
add code to logformatter to abbreviate it like we do
for the ginkgo logs.

And, one thing that has bugged me for a long time:
in the error logs, show a different prompt ('#' vs '$')
to distinguish root vs rootless. This should make it
much easier to see at-a-glance whether a log file
is root or not. Add tests for it.

Signed-off-by: Ed Santiago <santiago@redhat.com>
2020-06-23 08:10:57 -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 bbaba9fb86
Merge pull request #6679 from edsantiago/bats
system tests: new rm, build tests
2020-06-23 12:21:49 +02:00
OpenShift Merge Robot 3c51ff92ca
Merge pull request #6710 from vrothberg/fix-6413
libpod/containers/json: alias last -> limit
2020-06-23 12:16:15 +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
Ed Santiago d4504e6f53 system tests: new rm, build tests
- rm: confirm 'rm' and 'rm -f' on running container

 - build: shotgun test of workdir, cmd, env, labels

The new build test cd's to a temporary directory, which broke
test invocations using a relative path (./bin/podman). Added
code to detect relative paths and convert them to absolute.

Signed-off-by: Ed Santiago <santiago@redhat.com>
2020-06-22 15:57:18 -06:00
OpenShift Merge Robot 11dd5f51b6
Merge pull request #6702 from jgallucci32/follow-logs-poll
Stop following logs using timers
2020-06-22 18:10:06 +02:00
Valentin Rothberg 2abcd4f1de libpod/containers/json: alias last -> limit
Support both `last` and `limit` for in the containers listing endpoint.
We intended to use `limit` which is also mentioned in the docs, but the
implementation ended up using `last` as the http parameter; likely being
caused by the CLI using `--last`.  To avoid any regression, we decided
for supporting both and aliasing `last`.

Fixes: #6413
Signed-off-by: Valentin Rothberg <rothberg@redhat.com>
2020-06-22 16:55:48 +02:00
jgallucci32 173d086374 Add explicit command to alpine container in test case.
Signed-off-by: jgallucci32 <john.gallucci.iv@gmail.com>
2020-06-22 06:38:53 -07:00
OpenShift Merge Robot 0e4b73456d
Merge pull request #6683 from rhatdan/hostname
Add container name to the /etc/hosts within the container
2020-06-21 12:23:49 +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
jgallucci32 78dd4f2ecb Stop following logs using timers
This incorporates code from PR #6591 and #6614 but does not use
event channels to detect container state and rather uses timers
with a defined wait duration before calling t.StopAtEOF() to
ensure the last log entry is output before a container exits.

The polling interval is set to 250 milliseconds based on polling
interval defined in hpcloud/tail here:
https://github.com/hpcloud/tail/blob/v1.0.0/watch/polling.go#L117

Co-authored-by: Qi Wang <qiwan@redhat.com>
Signed-off-by: jgallucci32 <john.gallucci.iv@gmail.com>
2020-06-20 09:48:55 -07:00
Daniel J Walsh 5b3503c0a1
Add container name to the /etc/hosts within the container
This will allow containers that connect to the network namespace be
able to use the container name directly.

For example you can do something like

podman run -ti --name foobar fedora ping foobar

While we can do this with hostname now, this seems more natural.

Also if another container connects on the network to this container it
can do

podman run --network container:foobar fedora ping foobar

And connect to the original container,without having to discover the name.

Signed-off-by: Daniel J Walsh <dwalsh@redhat.com>
2020-06-20 06:20:46 -04:00
OpenShift Merge Robot f403aa3baa
Merge pull request #6621 from vrothberg/bz-1846629
search: allow wildcards
2020-06-20 05:57:25 -04:00
OpenShift Merge Robot 21f3bdf63d
Merge pull request #6675 from yhchen0906/master
correct the absolute path of `rm` executable
2020-06-20 05:49:06 -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
Yuan-Hao Chen f18d2751f6
correct the absolute path of `rm` executable
Signed-off-by: Yuan-Hao Chen <yhchen0906@gmail.com>
2020-06-19 22:23:35 +08: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
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
Valentin Rothberg b05888a97d search: allow wildcards
Allow wildcards in the search term.  Note that not all registries
support wildcards and it may only work with v1 registries.

Note that searching implies figuring out if the specified search term
includes a registry.  If there's not registry detected, the search term
will be used against all configured "unqualified-serach-registries" in
the registries.conf.  The parsing logic considers a registry to be the
substring before the first slash `/`.

With these changes we now not only support wildcards but arbitrary
input; ultimately it's up to the registries to decide whether they
support given input or not.

Fixes: bugzilla.redhat.com/show_bug.cgi?id=1846629
Signed-off-by: Valentin Rothberg <rothberg@redhat.com>
2020-06-19 14:47:36 +02:00
Valentin Rothberg 334d3b1ef3 CI: force registry:2.6
For using the `registry:2.6` image. 2.7 and beyond dropped the
`htpasswd` binary from the rootfs which parts of our CI depends
on.

While this is not a sustainable solution (assuming `htpasswd` is gone
for ever), it unblocks the CI for now.

Signed-off-by: Valentin Rothberg <rothberg@redhat.com>
2020-06-19 12:58:02 +02:00
Valentin Rothberg 59cd8a0cfa unflake rmi tests
Make sure to always get the older images that previously committed one
depends on.

Signed-off-by: Valentin Rothberg <rothberg@redhat.com>
2020-06-18 15:00:22 +02:00
OpenShift Merge Robot 6472b44c34
Merge pull request #6654 from rhatdan/keepid
Don't ignore --user flag in rootless --userns keepid
2020-06-17 21:22:06 -04:00
Daniel J Walsh fe69aa9ba3
Handle dropping capabilties correctly when running as non root user
Signed-off-by: Daniel J Walsh <dwalsh@redhat.com>
2020-06-17 17:20:53 -04:00
OpenShift Merge Robot 7b00e49f65
Merge pull request #6560 from mheon/fix_exec_logdriver
Do not share container log driver for exec
2020-06-17 17:17:27 -04:00
Daniel J Walsh c385e6d363
Don't ignore --user flag in rootless --userns keepid
Currently podman run --userns keep-id --user root:root fedora id

The --user flag is ignored.  Removing this makes the code work correctly.

Signed-off-by: Daniel J Walsh <dwalsh@redhat.com>
2020-06-17 17:13:58 -04:00
OpenShift Merge Robot fd184fa4a1
Merge pull request #6522 from mheon/unless-stopped
Add support for the unless-stopped restart policy
2020-06-17 15:25:09 -04:00
jgallucci32 03e99c9b40 Revert #6591 to fix issue with failed tests
Signed-off-by: jgallucci32 <john.gallucci.iv@gmail.com>
2020-06-17 08:31:09 -07:00
Matthew Heon 6f1440a3ec Add support for the unless-stopped restart policy
We initially believed that implementing this required support for
restarting containers after reboot, but this is not the case.
The unless-stopped restart policy acts identically to the always
restart policy except in cases related to reboot (which we do not
support yet), but it does not require that support for us to
implement it.

Changes themselves are quite simple, we need a new restart policy
constant, we need to remove existing checks that block creation
of containers when unless-stopped was used, and we need to update
the manpages.

Fixes #6508

Signed-off-by: Matthew Heon <matthew.heon@pm.me>
2020-06-17 11:16:12 -04:00
Matthew Heon 0e171b7b33 Do not share container log driver for exec
When the container uses journald logging, we don't want to
automatically use the same driver for its exec sessions. If we do
we will pollute the journal (particularly in the case of
healthchecks) with large amounts of undesired logs. Instead,
force exec sessions logs to file for now; we can add a log-driver
flag later (we'll probably want to add a `podman logs` command
that reads exec session logs at the same time).

As part of this, add support for the new 'none' logs driver in
Conmon. It will be the default log driver for exec sessions, and
can be optionally selected for containers.

Great thanks to Joe Gooch (mrwizard@dok.org) for adding support
to Conmon for a null log driver, and wiring it in here.

Fixes #6555

Signed-off-by: Matthew Heon <matthew.heon@pm.me>
2020-06-17 11:11:46 -04:00
OpenShift Merge Robot 1acd2adccb
Merge pull request #6640 from edsantiago/fix_flaky_logs_test
"streaming output" logs test: fix flake
2020-06-17 17:06:16 +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
Ed Santiago 6d5a432c2e "streaming output" logs test: fix flake
Test has been flaking excessively. A quick look shows that
the test itself is broken, making a bad assumption.

'podman logs -f' is guaranteed to exit when a container
terminates. This does not (and should not) mean that the
container has been cleaned up. It is undefined and unsafe
to run 'podman run -n same-name-as-terminated-container'
immediately after 'podman logs' exits.

Solution: instead of 'podman run', do 'podman inspect'.
This, too, is unsafe, but we can expect to see one of
two possible conditions:

  1) command succeeds, in which case we require that
     container State.Status be "exited"; or
  2) command fails, in which case we expect "no such
     container" in error output

For full coverage we should add a small delay-check test
to (1) to ensure that the container is cleaned up after
a short amount of time. Leaving that as a TODO because
it's more than my Go skills can handle, and I want to
get this checked in ASAP to get rid of the flake hassle.

Signed-off-by: Ed Santiago <santiago@redhat.com>
2020-06-17 07:04:00 -06: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
OpenShift Merge Robot e0dd227912
Merge pull request #6605 from ypu/apiv2-pods
APIv2 tests: Add some tests for podman pods
2020-06-16 05:26:07 -04:00
Yiqiao Pu d072de6efc APIv2 tests: Add some tests for podman pods
Add some tests for podman pods subcommand:
  restart
  rm
  start
  stas
  stop
  top
  unpause

Signed-off-by: Yiqiao Pu <ypu@redhat.com>
2020-06-16 11:53:48 +08:00
OpenShift Merge Robot 8a42a32c71
Merge pull request #6591 from jgallucci32/patch-1
Merged request to fix -f to stop following logs
2020-06-15 13:57:13 -04:00
OpenShift Merge Robot 5a82a559c6
Merge pull request #6601 from zhangguanzhang/podman-cp-dir
fix podman cp can create an extra directory when the source is the container's root directory
2020-06-15 13:20:35 -04:00
OpenShift Merge Robot 2716234af3
Merge pull request #6603 from sujil02/python-test
Adds more docker py test
2020-06-15 13:11:24 -04:00
zhangguanzhang 9d293bd2de fix podman cp can create an extra directory level
Signed-off-by: zhangguanzhang <zhangguanzhang@qq.com>
2020-06-15 23:56:45 +08: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
Sujil02 4a3f3b5c02 Adds more docker py test
Addes more docker py test
Optimize test to import images from cache
Rename test class and dir for python unittest framework

Signed-off-by: Sujil02 <sushah@redhat.com>
2020-06-15 02:57:55 -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
Qi Wang 033743cbee Fix -f logs follow with stopped container
Fix -f logs follow with stopped container. Close #6531

Signed-off-by: Qi Wang <qiwan@redhat.com>
2020-06-11 17:55:26 -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
OpenShift Merge Robot b62e50f53b
Merge pull request #6256 from theunrealgeek/play_kube_deployment
Support k8s Deployment in play kube
2020-06-11 08:53:00 -04:00
OpenShift Merge Robot 09e4faa7df
Merge pull request #6529 from mheon/v6_ports
Enable IPv6 port binding
2020-06-11 08:50:13 -04:00
Valentin Rothberg c7c81a8c08 e2e: sanity check --infra-conmon-pidfile
Signed-off-by: Valentin Rothberg <rothberg@redhat.com>
2020-06-11 11:01:13 +02:00
Valentin Rothberg 8d8746adee generate systemd: create pod template
Create a new template for generating a pod unit file. Eventually, this
allows for treating and extending pod and container generation
seprately.

The `--new` flag now also works on pods.

Signed-off-by: Valentin Rothberg <rothberg@redhat.com>
2020-06-11 11:01:13 +02:00
Valentin Rothberg 402c68b41d pod create: add `--infra-conmon-pidfile`
Add an `--infra-conmon-pidfile` flag to `podman-pod-create` to write the
infra container's conmon process ID to a specified path.  Several
container sub-commands already support `--conmon-pidfile` which is
especially helpful to allow for systemd to access and track the conmon
processes.  This allows for easily tracking the conmon process of a
pod's infra container.

Signed-off-by: Valentin Rothberg <rothberg@redhat.com>
2020-06-11 11:01:13 +02:00
Valentin Rothberg 144c6bb76d generate systemd: rename "cid" to "ctr-id"
Rename the container ID file from "cid" to "ctr-id" to make the
generated unit files a) easier to read and to b) pro-actively
avoid any confusion when pod ID files are being added in the
future.

Signed-off-by: Valentin Rothberg <rothberg@redhat.com>
2020-06-11 11:01:13 +02:00
Valentin Rothberg cf89bb6711 container-{create,run}: add `--pod-id-file`
Allow containers to join an existing pod via the `--pod-id-file` which
is already supported by a number of `podman-pod` subcommands.  Also add
tests to make sure it's working and to prevent future regressions.

Signed-off-by: Valentin Rothberg <rothberg@redhat.com>
2020-06-11 11:01:13 +02:00
Valentin Rothberg 7d71d24440 podman-pod{rm,start,stop}: support --pod-id-file
Support the `--pod-id-file` flag in the rm, start and stop pod commands.
This completes the already support flag in pod-create and is another
prerequisite for generating generic systemd unit files for pods.

Also add completions, docs and tests.

Signed-off-by: Valentin Rothberg <rothberg@redhat.com>
2020-06-11 11:01:13 +02:00
Valentin Rothberg 636881ece5 pod config: add a `CreateCommand` field
Add a `CreateCommand` field to the pod config which includes the entire
`os.Args` at pod-creation.  Similar to the already existing field in a
container config, we need this information to properly generate generic
systemd unit files for pods.  It's a prerequisite to support the `--new`
flag for pods.

Also add the `CreateCommand` to the pod-inspect data, which can come in
handy for debugging, general inspection and certainly for the tests that
are added along with the other changes.

Signed-off-by: Valentin Rothberg <rothberg@redhat.com>
2020-06-11 11:01:13 +02:00
Matthew Heon 4e2a0b5b9c Enable IPv6 port binding
Two areas needed tweaking to accomplish this: port parsing and
binding ports on the host.

Parsing is an obvious problem - we have to accomodate an IPv6
address enclosed by [] as well as a normal IPv4 address. It was
slightly complicated by the fact that we previously just counted
the number of colons in the whole port definition (a thousand
curses on whoever in the IPv6 standard body decided to reuse
colons for address separators), but did not end up being that
bad.

Libpod also (optionally) binds ports on the host to prevent their
reuse by host processes. This code was IPv4 only for TCP, and
bound to both for UDP (which I'm fairly certain is not correct,
and has been adjusted). This just needed protocols adjusted to
read "tcp4"/"tcp6" and "udp4"/"udp6" based on what we wanted to
bind to.

Fixes #5715

Signed-off-by: Matthew Heon <matthew.heon@pm.me>
2020-06-10 13:28:09 -04:00
Ed Santiago 15f273b931 WIP: Enable (and disable) remote testing
podman-remote has not been tested. A principal part of the
problem was #5387 - the YAML I wrote did not have the
intended effect, it did not set TEST_REMOTE_CLIENT=true
and because of my multiple iterations I did not catch this
during testing.

Part 1 of this PR is to fix .cirrus.yml to enable remote tests.

Part 2 -- what I had first noticed and tried to fix -- is that
rootless_test.sh was never running remote because, of course,
envariables are not sent via ssh. I reworked integration_test.sh
and rootless_test.sh to use a command-line decision instead.

Part 3, sigh, is to disable one failing integration test
and *all* system tests, because so many of the latter are
failing. Addressing those failures needs to be done in
subsequent PRs. Issues #6538, #6539, #6540 are filed for
some of the problems I isolated. There will be more.

Also, minor, fixed some stale references to varlink.

Signed-off-by: Ed Santiago <santiago@redhat.com>
2020-06-09 12:43:58 -06:00
OpenShift Merge Robot a2e0e170f9
Merge pull request #6532 from sujil02/python-test
Modify py test to start stop system service for each test
2020-06-09 16:27:24 +02:00
Valentin Rothberg a5facca78f e2e: disable checkpoint test on Ubuntu
Signed-off-by: Valentin Rothberg <rothberg@redhat.com>
2020-06-08 16:51:32 +02:00
Brent Baude efd1422143 Enable Ubuntu tests in CI
Add updates required for ubuntu and run integration tests

Signed-off-by: Brent Baude <bbaude@redhat.com>
2020-06-08 12:21:16 +02:00
Sujil02 37428df4c2 Modify py test to start stop system service for each test
Start stop system service for each test class to make it east to integrate to CI
Adds more tests
Add some common methods shared between images and containers test.

Signed-off-by: Sujil02 <sushah@redhat.com>
2020-06-07 22:27:01 -04:00
OpenShift Merge Robot 1fcb6788a5
Merge pull request #6417 from sujil02/py-test
Adds docker py regression test.
2020-06-06 05:40:03 -04:00
Daniel J Walsh c8f57b71a4
Fix handling of systemd.
Systemd enablement has to happen on the server side, since we need
check if the image is running systemd.

Also need to make sure user setting the StopSignal is not overriden on the
server side. But if not set and using systemd, we set it correctly.

Signed-off-by: Daniel J Walsh <dwalsh@redhat.com>
2020-06-05 13:01:57 -04:00
Sujil02 359d67a687 Adds docker py regression test.
Adds test to validate podman image endpoints.
Adds readme on how to run python tests
Adds contants file.

Signed-off-by: Sujil02 <sushah@redhat.com>
2020-06-04 16:04:34 -04:00
OpenShift Merge Robot 650ed437a8
Merge pull request #6489 from edsantiago/bats
BATS and APIv2: more tests and tweaks
2020-06-04 15:03:40 +02:00
OpenShift Merge Robot c133e55afc
Merge pull request #6485 from QiWang19/remote-ignore
fix remote test --ignore & turn on more tests
2020-06-04 14:52:25 +02:00
OpenShift Merge Robot 6682ea8f0d
Merge pull request #6481 from QiWang19/rm-test-stop
turn on remote stop_test
2020-06-04 14:49:35 +02:00
OpenShift Merge Robot 8cf74a79e3
Merge pull request #6470 from mheon/fix_stats_nonet
Properly follow linked namespace container for stats
2020-06-04 14:46:49 +02:00
OpenShift Merge Robot a3f2a8d73c
Merge pull request #6482 from mheon/split_inspect
Ensure that image/container inspect are specialized
2020-06-04 13:36:10 +02:00
Ed Santiago 2d5a2a7640 BATS and APIv2: more tests and tweaks
- (minor): apiv2 tests: check for full ID

   Observation made while reviewing #6461: tests were checking
   only for a 12-character container/image ID in return value.
   It's actually 64, and we should test for that. This should
   also minimize confusion in a future maintainer.

 - podman pause/unpause: new test

   Runs a 'date/sleep' loop, pauses container, sleeps 3s,
   restarts, then confirms that there's a 3- to 6-second
   gap in the logs for the container.

 - podman healthcheck: new test

   run a container with healthcheck, test both healthy
   and unhealthy conditions

 - podman pod: check '{{.Pod}}' field in podman ps

   Hey, as long as we have a pod with two running
   containers, might as well confirm that 'podman ps'
   returns the expected pod ID.

Signed-off-by: Ed Santiago <santiago@redhat.com>
2020-06-03 16:13:33 -06:00
OpenShift Merge Robot 377554d681
Merge pull request #6461 from chuanchang/add_contaner_cases_for_apiv2
test.apiv2: add test cases for committing an image from a container
2020-06-03 21:15:05 +02:00
Qi Wang f313a88441 fix remote test --ignore & turn on more tests
fix remote test --ignore & turn on more tests

Signed-off-by: Qi Wang <qiwan@redhat.com>
2020-06-03 15:04:58 -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
OpenShift Merge Robot bba0a8be1a
Merge pull request #6465 from rhatdan/remote
Add more Remote tests
2020-06-03 20:12:05 +02:00
OpenShift Merge Robot cbfb4980ce
Merge pull request #6469 from jwhonce/wip/auth
V2 Add support for ssh authentication methods
2020-06-03 19:43:56 +02:00
OpenShift Merge Robot df0141dc20
Merge pull request #6473 from mheon/fix_inspect_segfault
Fix a segfault in `podman inspect -l` w/ no containers
2020-06-03 19:27:54 +02:00
Qi Wang e77db144ab turn on remote stop_test
turn on stop_test  --cidfile

Signed-off-by: Qi Wang <qiwan@redhat.com>
2020-06-03 12:55:58 -04:00
Jhon Honce cbca625328 V2 Add support for ssh authentication methods
* podman --remote ssh://<user>:<password>@<host>:<port><path>
* podman --remote ssh://<user>:<password>@<host>:<port><path> \
  --identity <path> --passphrase <phrase>
* ssh-add <key>
  podman --remote ssh://<user>@<host><path>
* Fix `podman help` to run even if podman missing components
* Prompt for passphrase on stdin IFF key is protected and passphrase
  not given via any other configuration

* cobra flags do not support optional value flags therefore refactored
  --remote to be a boolean and --url will now contain the URI to Podman
  service

Signed-off-by: Jhon Honce <jhonce@redhat.com>
2020-06-03 09:54:39 -07:00
Daniel J Walsh 8153f299ad
Add more Remote tests
Signed-off-by: Daniel J Walsh <dwalsh@redhat.com>
2020-06-03 06:35:45 -04:00