Commit graph

4427 commits

Author SHA1 Message Date
Matthew Heon
892d81685c Ensure that cleanup runs before we set Removing state
Cleaning up the OCI runtime is not allowed in the Removing state.
To ensure it is actually cleaned up, when calling cleanup() as
part of removing a container, do so before we set the Removing
state, so we can successfully remove.

Signed-off-by: Matthew Heon <mheon@redhat.com>
2020-05-14 11:58:02 -04:00
Matthew Heon
5694aba9e3 Fix two coverity issues (unchecked null return)
Theoretically these should never happen, but it never hurts to be
sure and check. Add a check to one, make the other one a
create-if-not-exist (it was just adding, not checking the
contents).

Signed-off-by: Matthew Heon <mheon@redhat.com>
2020-05-14 11:17:34 -04:00
Matthew Heon
83a1e2e5d2 Cleanup OCI runtime before storage
Some runtimes (e.g. Kata containers) seem to object to having us
unmount storage before the container is removed from the runtime.
This is an easy fix (change the order of operations in cleanup)
and seems to make more sense than the way we were doing things.

Signed-off-by: Matthew Heon <mheon@redhat.com>
2020-05-14 09:39:41 -04:00
Jhon Honce
b6113e2b9e WIP V2 attach bindings and test
* Add ErrLostSync to report lost of sync when de-mux'ing stream
* Add logus.SetLevel(logrus.DebugLevel) when `go test -v` given
* Add context to debugging messages

Signed-off-by: Jhon Honce <jhonce@redhat.com>
2020-05-13 11:49:17 -07:00
OpenShift Merge Robot
d8c6cc1684
Merge pull request #6169 from vrothberg/fix-6164
shm_lock_test: add nil check
2020-05-11 15:34:44 +02:00
Valentin Rothberg
64a12898ad shm_lock_test: add nil check
Fixes: #6164
Signed-off-by: Valentin Rothberg <rothberg@redhat.com>
2020-05-11 13:20:32 +02:00
Sascha Grunert
c21258b70e
Add podman static build
We’re now able to build a static podman binary based on a custom nix
derivation. This is integrated in cirrus as well, whereas a later target
would be to provide a self-contained static binary bundle which can be
installed on any Linux x64-bit system.

Fixes: https://github.com/containers/libpod/issues/1399

Signed-off-by: Sascha Grunert <sgrunert@suse.com>
2020-05-11 13:11:07 +02:00
OpenShift Merge Robot
dc7d6f4818
Merge pull request #6152 from mheon/fix_pod_join_cgroupns
Fix bug where pods would unintentionally share cgroupns
2020-05-09 23:06:51 +02:00
Jhon Honce
931bd5ace6 V2 Impliment tunnelled podman version
Signed-off-by: Jhon Honce <jhonce@redhat.com>
2020-05-08 15:57:26 -07:00
Matthew Heon
8238b7e706 Ensure podman inspect output for NetworkMode is right
I realized that setting NetworkMode to private when we are making
a network namespace but not configuring it with CNI or Slirp is
wrong; that's considered `--net=none` not `--net=private`. At the
same time, realized that we actually store whether Slirp is in
use, so we can be more specific than just "default" and instead
say slirp4netns or bridge.

Signed-off-by: Matthew Heon <mheon@redhat.com>
2020-05-08 18:00:42 -04:00
Matthew Heon
c57c560d90 Fix bug where pods would unintentionally share cgroupns
This one was a massive pain to track down.

The original symptom was an error message from rootless Podman
trying to make a container in a pod. I unfortunately did not look
at the error message closely enough to realize that the namespace
in question was the cgroup namespace (the reproducer pod was
explicitly set to only share the network namespace), else this
would have been quite a bit shorter.

I spent considerable effort trying to track down differences
between the inspect output of the two containers, and when that
failed I was forced to resort to diffing the OCI specs. That
finally proved fruitful, and I was able to determine what should
have been obvious all along: the container was joining the cgroup
namespace of the infra container when it really ought not to
have.

From there, I discovered a variable collision in pod config. The
UsePodCgroup variable means "create a parent cgroup for the pod
and join containers in the pod to it". Unfortunately, it is very
similar to UsePodUTS, UsePodNet, etc, which mean "the pod shares
this namespace", so an accessor was accidentally added for it
that indicated the pod shared the cgroup namespace when it really
did not. Once I realized that, it was a quick fix - add a bool to
the pod's configuration to indicate whether the cgroup ns was
shared (distinct from UsePodCgroup) and use that for the
accessor.

Also included are fixes for `podman inspect` and
`podman pod inspect` that fix them to actually display the state
of the cgroup namespace (for container inspect) and what
namespaces are shared (for pod inspect). Either of those would
have made tracking this down considerably quicker.

Fixes #6149

Signed-off-by: Matthew Heon <mheon@redhat.com>
2020-05-08 18:00:42 -04:00
Daniel J Walsh
5cbb0b8a66
Fix handling of overridden paths from database
If the first time you run podman in a user account you do a
su - USER, and the second time, you run as the logged in USER
podman fails, because it is not handling the tmpdir definition
in the database. This PR fixes this problem.

vendor containers/common v0.11.1

This should fix a couple of issues we have seen in podman 1.9.1
with handling of libpod.conf.

Signed-off-by: Daniel J Walsh <dwalsh@redhat.com>
2020-05-08 09:27:39 -04:00
OpenShift Merge Robot
062c7b8a94
Merge pull request #6091 from rhatdan/v2
Eliminate race condition on podman info
2020-05-06 22:00:32 +02:00
Valentin Rothberg
f269be3a31 add {generate,play} kube
Add the `podman generate kube` and `podman play kube` command.  The code
has largely been copied from Podman v1 but restructured to not leak the
K8s core API into the (remote) client.

Both commands are added in the same commit to allow for enabling the
tests at the same time.

Move some exports from `cmd/podman/common` to the appropriate places in
the backend to avoid circular dependencies.

Move definitions of label annotations to `libpod/define` and set the
security-opt labels in the frontend to make kube tests pass.

Implement rest endpoints, bindings and the tunnel interface.

Signed-off-by: Valentin Rothberg <rothberg@redhat.com>
2020-05-06 17:08:22 +02:00
OpenShift Merge Robot
7885b5cd52
Merge pull request #6063 from QiWang19/manifest-annotate
manifest annotate
2020-05-06 03:41:09 +02:00
Qi Wang
1090d4d5d9 manifest annotate
Signed-off-by: Qi Wang <qiwan@redhat.com>
2020-05-05 15:01:32 -04:00
OpenShift Merge Robot
864aec8bb0
Merge pull request #6081 from baude/v2system
v2 system subcommand
2020-05-05 20:49:17 +02:00
Daniel J Walsh
ad27532b6c
Eliminate race condition on podman info
There is a potential of a race condition where
a container is removed while podman is looking
up information on the total containers.  This can
cause podman info to fail with an error
"no such container".

This change ignores the failure.

Signed-off-by: Daniel J Walsh <dwalsh@redhat.com>
2020-05-05 13:33:41 -04: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
9db97dbab8
Merge pull request #6080 from baude/v2stats
v2 podman stats
2020-05-05 17:29:56 +02:00
baude
b5a235df90 v2 podman stats
Signed-off-by: baude <bbaude@redhat.com>
2020-05-05 08:46:51 -05: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
Daniel J Walsh
8173e83054
Fix errors found in coverity scan
Signed-off-by: Daniel J Walsh <dwalsh@redhat.com>
2020-05-01 13:26:50 -04:00
Sujil02
c3c030f550 Enable prune integration test. Fixes container prune.
Fixes container prune to prune created and configured containers.
Disables couple of system prune test as not yet in with v2.

Signed-off-by: Sujil02 <sushah@redhat.com>
2020-04-30 12:03:09 -04:00
OpenShift Merge Robot
dcac908bbe
Merge pull request #6011 from sujil02/podman-save-issue-5234
Fixes podman save fails when specifying an image using a digest fixes-5234
2020-04-28 23:10:20 +02:00
Sujil02
38eb9f4a3d Fixes podman save fails when specifying an image using a digest #5234
Adds check to parse normalized name and create docker archive dst reference
for tagged untagged image. Relevant test case added.

Signed-off-by: Sujil02 <sushah@redhat.com>
2020-04-28 16:16:30 -04:00
OpenShift Merge Robot
e9a1726f50
Merge pull request #6007 from baude/v2intvolumes
enable volume integration tests
2020-04-28 15:25:16 +02:00
Brent Baude
e78e66c5b9 enable volume integration tests
enabled integration tests for volumes.  there are two exceptions that still need work because of something not yet implemented.

also, add code to deal with the fact that containers conf appears to set a local volume driver where it used to be simply blank.

Signed-off-by: Brent Baude <bbaude@redhat.com>
2020-04-27 16:12:06 -05:00
Brent Baude
fadd011a80 separate healthcheck and container log paths
instead of using the container log path to derive where to put the healthchecks, we now put them into the rundir to avoid collision of health check log files when the log path is set by user.

Fixes: #5915

Signed-off-by: Brent Baude <bbaude@redhat.com>
2020-04-27 16:05:48 -05:00
Giuseppe Scrivano
b69ba30b14
libpod: set hostname from joined container
when joining a UTS namespace, take the hostname from the destination
container.

Signed-off-by: Giuseppe Scrivano <gscrivan@redhat.com>
2020-04-27 17:08:53 +02:00
OpenShift Merge Robot
ef46687dc5
Merge pull request #5976 from QiWang19/manifest-add-os
Add --os to manifest add
2020-04-27 15:33:00 +02:00
Sujil02
c1766d5e64 Enable pod inspect integration test
Enable pod inspect integration  test
Get rid of libpod pod inspect references
Remove libpod PodInspect struct.

Signed-off-by: Sujil02 <sushah@redhat.com>
2020-04-26 16:38:52 -04:00
Qi Wang
2f3734b143 Add --os to manifest add
Add --os to manifest add for overriding the os field.

Signed-off-by: Qi Wang <qiwan@redhat.com>
2020-04-24 14:57:56 -04:00
OpenShift Merge Robot
2c457a632c
Merge pull request #5962 from rhatdan/selinux
Fix SELinux functions names to not be repetitive
2020-04-24 12:48:39 +02:00
Les Aker
26081e79c1 remove blank line
Signed-off-by: Les Aker <me@lesaker.org>
2020-04-23 16:25:02 -04:00
Les Aker
2c328f94b6 set bigfilestemporarydir for pull
Signed-off-by: Les Aker <me@lesaker.org>
2020-04-23 16:15:55 -04:00
Daniel J Walsh
995cd97c10
Fix SELinux functions names to not be repetitive
Since functions are now in an selinux subpackage, they should not start with
SELinux

Signed-off-by: Daniel J Walsh <dwalsh@redhat.com>
2020-04-23 15:57:34 -04:00
OpenShift Merge Robot
397dcc358a
Merge pull request #5843 from QiWang19/manifest_create
manifest create,add,inspect
2020-04-23 17:45:38 +02:00
Daniel J Walsh
e66346c7b0
Stop wrapping pull messages
The length and size of our error messages on failure to pull
is huge.  This patch at least eliminates some of the wrapping.
But I think eventually we need to look at containers/image
and see if we can modify the error messages to something a little
more human friendly.

Signed-off-by: Daniel J Walsh <dwalsh@redhat.com>
2020-04-23 05:31:36 -04:00
Qi Wang
17783dda68 manifest create,add,inspect
Implememts manifest subcommands create, add, inspect.

Signed-off-by: Qi Wang <qiwan@redhat.com>
2020-04-22 20:05:21 -04:00
Jhon Honce
be5605ac4f V2 Restore rmi tests
* Introduced define.ErrImageInUse to assist in determining the exit code
  without resorting string searches.

Signed-off-by: Jhon Honce <jhonce@redhat.com>
2020-04-22 15:34:33 -07:00
Daniel J Walsh
ede8380d37
Move selinux labeling support from pkg/util to pkg/selinux
The goal here is to make the package less heavy and not overload
the pkg/util.

Signed-off-by: Daniel J Walsh <dwalsh@redhat.com>
2020-04-22 14:17:59 -04:00
OpenShift Merge Robot
47d99fb625
Merge pull request #5647 from rhatdan/containers.conf
Update podmanV2 to use containers.conf
2020-04-21 05:21:09 -04:00
Daniel J Walsh
e62d081770
Update podman to use containers.conf
Add more default options parsing

Switch to using --time as opposed to --timeout to better match Docker.

Signed-off-by: Daniel J Walsh <dwalsh@redhat.com>
2020-04-20 16:11:36 -04:00
Daniel J Walsh
a2ad5bb9e1
Add functions to return image informations
Signed-off-by: Daniel J Walsh <dwalsh@redhat.com>
2020-04-20 15:50:46 -04:00
Sujil02
838df56bcf Update pod inspect report to hold current pod status.
Added status field in pod inspect report.
Fixed pod tests to use it.

Signed-off-by: Sujil02 <sushah@redhat.com>
2020-04-20 07:05:25 -04:00
Sujil02
37f3b191d5 Add pod prune for api v2.
Add the ability to prune pods for api v2,
Includes the addition of force flag, for client side prompt.
Update test suite to support this use case.

Signed-off-by: Sujil02 <sushah@redhat.com>
2020-04-17 17:30:58 -04:00
OpenShift Merge Robot
bd8a0b08cd
Merge pull request #5548 from kunalkushwaha/image-prune
image prune skips images with child images.
2020-04-17 15:19:45 -04:00
OpenShift Merge Robot
454fc9fecd
Merge pull request #5657 from AlbanBedel/network-name-fix
Fix the pod name passed to cni
2020-04-17 11:25:19 -04:00
Brent Baude
ba430bfe5e podman v2 remove bloat v2
rid ourseleves of libpod references in v2 client

Signed-off-by: Brent Baude <bbaude@redhat.com>
2020-04-16 12:04:46 -05:00