Commit graph

6464 commits

Author SHA1 Message Date
Daniel J Walsh
ee782fcb70
Deleting an n use image should return conflict not system error
Fixes: https://github.com/containers/podman/issues/14208

Signed-off-by: Daniel J Walsh <dwalsh@redhat.com>
2022-05-16 09:59:19 -04:00
OpenShift Merge Robot
931ee8950c
Merge pull request #14250 from n1hility/wsl-linger
Update WSL machine OS to enable user lingering
2022-05-16 13:33:36 +02:00
Jason T. Greene
977cd9bd17 Update WSL machine OS to enable user lingering
Also migrate old machines that were missing this setting

Signed-off-by: Jason T. Greene <jason.greene@redhat.com>
2022-05-15 13:35:46 -05:00
Valentin Rothberg
c45d51899a [BZ #2083997] pod: build pause image in custom user NS
Use the host UID and host GID mapping when building the local pause
image for a Pod with a custom mapping.  Otherwise, the mappings are off
and the build fails. Propagating the mapping to the build container is
not needed since the pause image ships merely a copied `catatonit` from
the host.

Fixes: https://bugzilla.redhat.com/show_bug.cgi?id=2083997
Signed-off-by: Valentin Rothberg <vrothberg@redhat.com>
2022-05-13 15:41:28 +02:00
Jason T. Greene
7804f4d291 Add support for machine events on Windows
Signed-off-by: Jason T. Greene <jason.greene@redhat.com>
2022-05-12 14:41:26 -05:00
Valentin Rothberg
840c120c21 play kube: service container
Add the notion of a "service container" to play kube.  A service
container is started before the pods in play kube and is (reverse)
linked to them.  The service container is stopped/removed *after*
all pods it is associated with are stopped/removed.

In other words, a service container tracks the entire life cycle
of a service started via `podman play kube`.  This is required to
enable `play kube` in a systemd unit file.

The service container is only used when the `--service-container`
flag is set on the CLI.  This flag has been marked as hidden as it
is not meant to be used outside the context of `play kube`.  It is
further not supported on the remote client.

The wiring with systemd will be done in a later commit.

Signed-off-by: Valentin Rothberg <vrothberg@redhat.com>
2022-05-12 10:51:13 +02:00
OpenShift Merge Robot
c379014ee4
Merge pull request #14170 from ashley-cui/machtests
Add more machine tests
2022-05-11 03:03:31 -04:00
Ashley Cui
c7c00ce551 Add more machine tests
Add more machine tests for flags in init, inspect, and list.

Signed-off-by: Ashley Cui <acui@redhat.com>
2022-05-10 14:56:13 -04:00
Giuseppe Scrivano
0774a4ce13
kube: add support for --userns=
add support to override the user namespace to use for the pod.

Closes: https://github.com/containers/podman/issues/7504

Signed-off-by: Giuseppe Scrivano <gscrivan@redhat.com>
2022-05-10 16:51:01 +02:00
Giuseppe Scrivano
9e1ee081f8
kube: honor pod security context IDs
If the RunAsUser, RunAsGroup, SupplementalGroups settings are not
overriden in the container security context, then take the value from
the pod security context.

Signed-off-by: Giuseppe Scrivano <gscrivan@redhat.com>
2022-05-10 09:09:14 +02:00
Giuseppe Scrivano
82a4b8f01c
kube: refactor setupSecurityContext to accept directly the security ctx
Signed-off-by: Giuseppe Scrivano <gscrivan@redhat.com>
2022-05-10 09:09:14 +02:00
OpenShift Merge Robot
ccb6211c7b
Merge pull request #14121 from cdoern/kube
play kube log tag handling
2022-05-09 04:48:49 -04:00
cdoern
b58e7e7f11 play kube log tag handling
currently tags cause a panic due to an uninitialized map. Initialize the map
and add parsing to make sure we are only tagging with journald

resolves #13356

Signed-off-by: cdoern <cbdoer23@g.holycross.edu>
2022-05-06 15:59:06 -04:00
Paul Holzinger
ed8c1dfb4c
libpod: add c.ConfigWithNetworks()
Reading the networks requires an extra db operation. Most c.Config() callers
do not need them so create a new function which returns the config with
networks.

[NO NEW TESTS NEEDED]

Signed-off-by: Paul Holzinger <pholzing@redhat.com>
2022-05-06 14:05:45 +02:00
OpenShift Merge Robot
5d5cb402cb
Merge pull request #14129 from Juneezee/test/t.TempDir
test: use `T.TempDir` to create temporary test directory
2022-05-06 04:58:25 -04:00
Eng Zer Jun
cf35168f0a
test: use T.TempDir to create temporary test directory
This commit replaces `ioutil.TempDir` with `t.TempDir` in tests. The
directory created by `t.TempDir` is automatically removed when the test
and all its subtests complete.

Prior to this commit, temporary directory created using `ioutil.TempDir`
needs to be removed manually by calling `os.RemoveAll`, which is omitted
in some tests. The error handling boilerplate e.g.
	defer func() {
		if err := os.RemoveAll(dir); err != nil {
			t.Fatal(err)
		}
	}
is also tedious, but `t.TempDir` handles this for us nicely.

Reference: https://pkg.go.dev/testing#T.TempDir
Signed-off-by: Eng Zer Jun <engzerjun@gmail.com>
2022-05-05 21:09:41 +08:00
OpenShift Merge Robot
8ed517576c
Merge pull request #14118 from rhatdan/VENDOR
Vendor in containers/buildah@v1.26.1
2022-05-05 06:31:39 -04:00
OpenShift Merge Robot
88f8d398b3
Merge pull request #14098 from Luap99/test-tools
vendor test dependencies instead of installing via network
2022-05-05 05:53:18 -04:00
OpenShift Merge Robot
7af4612d6b
Merge pull request #14059 from cdoern/clone
pass networks to container clone
2022-05-05 05:51:19 -04:00
Daniel J Walsh
ed159f864d
Vendor in containers/buildah@v1.26.1
Signed-off-by: Daniel J Walsh <dwalsh@redhat.com>
2022-05-05 04:41:06 -04:00
OpenShift Merge Robot
bdaac4b2b6
Merge pull request #14037 from rhatdan/remoteuri
Report correct RemoteURI
2022-05-04 14:52:19 -04:00
OpenShift Merge Robot
0e2a80a622
Merge pull request #14095 from baude/moreunittests
Add more unit tests
2022-05-04 14:46:12 -04:00
OpenShift Merge Robot
ad93318370
Merge pull request #14066 from ashley-cui/sysres
podman system reset removed machines incorrectly
2022-05-04 13:20:09 -04:00
Daniel J Walsh
5fa6f686db
Report correct RemoteURI
Rather than assuming a filesystem path, the API service URI is recorded
in the libpod runtime configuration and then reported as requested.

Note: All schemes other than "unix" are hard-coded to report URI exists.

Fixes #12023

Signed-off-by: Jhon Honce <jhonce@redhat.com>
Signed-off-by: Daniel J Walsh <dwalsh@redhat.com>
2022-05-04 12:11:32 -04:00
OpenShift Merge Robot
b1e9ea38e5
Merge pull request #14060 from nicrowe00/13781
play kube default log driver
2022-05-04 11:44:06 -04:00
Paul Holzinger
3b9177995e
vendor test tools in submodule
Instead of using the main module we should vendor the test tools in a
different directory. That way we do not add extra dependencies to the
main module which can be problemetic for packages or other users.

This is already done in buildah so this makes us more consitent.

Signed-off-by: Paul Holzinger <pholzing@redhat.com>
2022-05-04 17:11:43 +02:00
Ashley Cui
80744c6441 podman system reset removed machines incorrectly
podman system reset did not clean up machines fully, leaving some config
files, and breaking machines. Now it removes all machines files fully.

Signed-off-by: Ashley Cui <acui@redhat.com>
2022-05-04 10:31:42 -04:00
Brent Baude
245151e62d Add more unit tests
Improve "code coverage" with more unit-tests.

Signed-off-by: Brent Baude <bbaude@redhat.com>
2022-05-04 08:29:54 -05:00
Niall Crowe
ccd576504e play kube default log driver
The default log driver is not used when using play kube
without --log-driver. The LogDriver function needs to
be called in order to use the default log driver.

fixes #13781
Signed-off-by: Niall Crowe <nicrowe@redhat.com>
2022-05-04 12:52:27 +01:00
cdoern
1585b175db pass networks to container clone
since the network config is a string map, json.unmarshal does not recognize
the config and spec as the same entity, need to map this option manually

resolves #13713

Signed-off-by: cdoern <cbdoer23@g.holycross.edu>
2022-05-03 23:04:08 -04:00
Jhon Honce
88015cf0d8 Implement --format for machine inspect
* Fix issue of nil pointer derefence

Signed-off-by: Jhon Honce <jhonce@redhat.com>
2022-05-03 16:15:59 -07:00
Valentin Rothberg
6e2e3a78ed generate systemd: pods: set exit policy
Unless specified in the create command of the pod, enforce the exit
policy to "stop".  With "stop", a pod is stopped when the last container
exits and does not continue running.  This behavior integrates much
better into systemd which is now able to tell whether the service
running as pod is actually running/active or not.

Signed-off-by: Valentin Rothberg <vrothberg@redhat.com>
2022-05-03 15:28:50 +02:00
OpenShift Merge Robot
c3d871a3f6
Merge pull request #13859 from vrothberg/fix-13464
pod: add exit policies
2022-05-02 11:53:30 -04:00
Valentin Rothberg
4eff0c8cf2 pod: add exit policies
Add the notion of an "exit policy" to a pod.  This policy controls the
behaviour when the last container of pod exits.  Initially, there are
two policies:

 - "continue" : the pod continues running. This is the default policy
                when creating a pod.

 - "stop" : stop the pod when the last container exits. This is the
            default behaviour for `play kube`.

In order to implement the deferred stop of a pod, add a worker queue to
the libpod runtime.  The queue will pick up work items and in this case
helps resolve dead locks that would otherwise occur if we attempted to
stop a pod during container cleanup.

Note that the default restart policy of `play kube` is "Always".  Hence,
in order to really solve #13464, the YAML files must set a custom
restart policy; the tests use "OnFailure".

Fixes: #13464
Signed-off-by: Valentin Rothberg <vrothberg@redhat.com>
2022-05-02 13:29:59 +02:00
Jason T. Greene
5b78f9576c Implement machine inspect for WSL
Signed-off-by: Jason T. Greene <jason.greene@redhat.com>
2022-05-01 16:39:54 -05:00
Paul Holzinger
e6557bf0a2
pkg/api: do not register decoder in endpoint handler
Since the decoder is shared registering the decoder inside a single
endpoint will also register it for all others. Also the problem with
that is the it will register it everytime this endpoint is called which
is wrong.

Instead we should register it once like the other custom decoder
functions.

Signed-off-by: Paul Holzinger <pholzing@redhat.com>
2022-04-29 14:06:54 +02:00
Paul Holzinger
69c479b16e
enable errcheck linter
The errcheck linter makes sure that errors are always check and not
ignored by accident. It spotted a lot of unchecked errors, mostly in the
tests but also some real problem in the code.

Signed-off-by: Paul Holzinger <pholzing@redhat.com>
2022-04-29 14:06:38 +02:00
OpenShift Merge Robot
765c8818e4
Merge pull request #14033 from baude/inspectredo
Refactor machine inspect
2022-04-28 16:21:33 -04:00
Brent Baude
2902d32c49 Refactor machine inspect
I was asked to refactor machine inspect output to represent more common
and basic information.  machine inspect now has information that would
be appropriate for different machines.

[NO NEW TESTS NEEDED]

Signed-off-by: Brent Baude <bbaude@redhat.com>
2022-04-28 13:32:21 -05:00
OpenShift Merge Robot
b2725024f8
Merge pull request #14024 from cdoern/machine
podman machine starting test
2022-04-28 13:59:23 -04:00
OpenShift Merge Robot
d0b96a541d
Merge pull request #14051 from giuseppe/volume-create-noquota-option
volume: add new option -o o=noquota
2022-04-28 10:23:58 -04:00
Giuseppe Scrivano
91ead15283
volume: add new option -o o=noquota
add a new option to completely disable xfs quota usage for a volume.

xfs quota set on a volume, even just for tracking disk usage, can
cause weird errors if the volume is later re-used by a container with
a different quota projid.  More specifically, link(2) and rename(2)
might fail with EXDEV if the source file has a projid that is
different from the parent directory.

To prevent such kind of issues, the volume should be created
beforehand with `podman volume create -o o=noquota $ID`

Closes: https://github.com/containers/podman/issues/14049

Signed-off-by: Giuseppe Scrivano <gscrivan@redhat.com>
2022-04-28 13:29:01 +02:00
cdoern
c721acf082 podman machine starting test
add a test to make sure machines are not running while still starting
in order to do this, I added a parameter to `run()` to delineate whether
or not the command should block or not. The non blocking run allows for tests
to get and use the `machineSession` pointer and check the exit code to see if it has finished.

also fix a bug (created by #13996) that before started, the machines would
always say "LastUp" and "Created" Less than one second ago

Signed-off-by: cdoern <cbdoer23@g.holycross.edu>
2022-04-27 20:12:43 -04:00
Brent Baude
83a75d2a3d Produce better test error messages
As Ed has pointed out, the form of Expect(session).To(Exit(0)) provides
much better error messages.  Let's make Ed happy.

Signed-off-by: Brent Baude <bbaude@redhat.com>
2022-04-27 15:44:02 -05:00
OpenShift Merge Robot
60d6cc8e1e
Merge pull request #13953 from ashley-cui/mach
Allow changing of CPUs, Memory, and Disk Size
2022-04-27 16:02:57 -04:00
Ashley Cui
e7390f30b9 Allow changing of CPUs, Memory, and Disk Size
Allow podman machine set to change CPUs, Memory and Disk size of a QEMU machine after its been created.
Disk size can only be increased.

If one setting fails to be changed, the other settings will still be applied.

Signed-off-by: Ashley Cui <acui@redhat.com>
2022-04-27 13:56:14 -04:00
OpenShift Merge Robot
9133a6d044
Merge pull request #13698 from Luap99/version
Bump version to v4.1.0-dev
2022-04-27 10:56:43 -04:00
OpenShift Merge Robot
bbe419ef9f
Merge pull request #14023 from rhatdan/kube
Truncate annotations when generating kubernetes yaml files
2022-04-27 09:42:31 -04:00
Paul Holzinger
3bcfd256b3
manifest endpoints fix ordering
OK this is a pretty bad design IMO. We have to endpoints:
manifest create: `POST /{name}`
manifest push: `POST /{name}/registry/{destination}`

So basically all push requests are valid create requests.
Fortunately we can change the order in which the endpoints are matched.
If the logic matches push first it will fall back to create if the
request does not have the `/registry/{}` part.

Signed-off-by: Paul Holzinger <pholzing@redhat.com>
2022-04-27 14:57:25 +02:00
Paul Holzinger
4a4906b91f
pkg/bindings: manifest remove 3.X API support conditional
Since the minimum API version is set to 4.0.0 the endpoint will not talk
to the 3.X endpoint. Therefore this logic is broken and should just be
removed. 4.0 bindings should only talk to 4.0 server. This is already
the case for many other endpoints.

Signed-off-by: Paul Holzinger <pholzing@redhat.com>
2022-04-27 14:32:36 +02:00