Commit Graph

4081 Commits

Author SHA1 Message Date
OpenShift Merge Robot
7d00b0ea0d Merge pull request #14281 from vrothberg/fix-14251
fix --init with /dev bind mount
2022-05-23 10:17:59 -04:00
OpenShift Merge Robot
be255287c9 Merge pull request #14292 from vrothberg/fix-14283
auto update: create an event
2022-05-23 10:12:19 -04:00
OpenShift Merge Robot
e11d8d4650 Merge pull request #14266 from tupyy/add-blockdevice-play-kube
Expose block and character devices with play kube
2022-05-23 10:06:07 -04:00
Valentin Rothberg
d66288315d auto update: create an event
Create an auto-update event for each invocation, independent if images
and containers are updated or not.  Those events will be indicated in
the events already but users will now know why.

Fixes: #14283
Signed-off-by: Valentin Rothberg <vrothberg@redhat.com>
2022-05-23 14:11:29 +02:00
Valentin Rothberg
633d5f1f8b fix --init with /dev bind mount
The init binary until now has been bind-mounted to /dev/init which
breaks when bind-mounting to /dev.  Instead mount the init to
/run/podman-init.  The reasoning for using /run is that it is already
used for other runtime data such as secrets.

Fixes: #14251
Signed-off-by: Valentin Rothberg <vrothberg@redhat.com>
2022-05-23 13:59:05 +02:00
Jhon Honce
5b79cf15a0 Swagger refactor/cleanup
* Remove duplicate or unused types and constants
* Move all documetation-only models and responses into swagger package
* Remove all unecessary names, go-swagger will determine names from
  struct declarations
* Use Libpod suffix to differentiate between compat and libpod models
  and responses. Taken from swagger:operation declarations.
* Models and responses that start with lowercase are for swagger use
  only while uppercase are used "as is" in the code and swagger comments
* Used gofumpt on new code

```release-note

```

Signed-off-by: Jhon Honce <jhonce@redhat.com>
2022-05-19 15:24:18 -07:00
OpenShift Merge Robot
913caaa9b1 Merge pull request #14288 from vrothberg/linters
linter: enable unconvert linter
2022-05-19 12:51:12 -04:00
OpenShift Merge Robot
948c5e915a Merge pull request #13870 from kolyshkin/makefile-cleanups
Makefile: simplify for modern Go
2022-05-19 08:08:45 -04:00
Valentin Rothberg
b22143267b linter: enable unconvert linter
Detects unneccessary type conversions and helps in keeping the code base
cleaner.

Signed-off-by: Valentin Rothberg <vrothberg@redhat.com>
2022-05-19 13:59:15 +02:00
OpenShift Merge Robot
7093885df7 Merge pull request #14228 from rhatdan/api
Deleting an n use image should return conflict not system error
2022-05-18 11:48:06 -04:00
OpenShift Merge Robot
12964c7b93 Merge pull request #14256 from vrothberg/run-1287
k8systemd: run k8s workloads in systemd
2022-05-18 09:39:30 -04:00
Cosmin Tupangiu
f5c8c09113 add tests and fix bug when char device pass the test as block device
- add test
- fix bug when a character device set in a volume as a block device
  is seen as block device in _pkg/specgen/generate/kube/volume.go_.
  At this stage the type does not matter much because the devices are
recreated at lower layer but the bug allowed a CharDevice volume to be
passed to lower layer as a BlockDevice.

Signed-off-by: Cosmin Tupangiu <cosmin@redhat.com>
2022-05-18 10:46:45 +02:00
Kir Kolyshkin
40a1cd4efb Remove GO111MODULES use
Using it is no longer needed.

Signed-off-by: Kir Kolyshkin <kolyshkin@gmail.com>
2022-05-17 13:42:03 -07:00
OpenShift Merge Robot
105c6c7dd1 Merge pull request #14254 from flouthoc/api-allow-remote
api: make no-op `remote` functional in `/libpod/build`
2022-05-17 14:19:45 +02:00
Cosmin Tupangiu
0c9b0e2aa7 expose block and char devices with play kube
[NO NEW TESTS NEEDED]

Signed-off-by: Cosmin Tupangiu <cosmin@redhat.com>
2022-05-17 11:15:43 +02:00
Valentin Rothberg
8684d41e38 k8systemd: run k8s workloads in systemd
Support running `podman play kube` in systemd by exploiting the
previously added "service containers".  During `play kube`, a service
container is started before all the pods and containers, and is stopped
last.  The service container communicates its conmon PID via sdnotify.

Add a new systemd template to dispatch such k8s workloads.  The argument
of the template is the path to the k8s file.  Note that the path must be
escaped for systemd not to bark:

Let's assume we have a `top.yaml` file in the home directory:
```
$ escaped=$(systemd-escape ~/top.yaml)
$ systemctl --user start podman-play-kube@$escaped.service
```

Closes: https://issues.redhat.com/browse/RUN-1287
Signed-off-by: Valentin Rothberg <vrothberg@redhat.com>
2022-05-17 10:18:58 +02:00
Aditya R
6f9155cbb3 api: make no-op remote functional in /libpod/build
Podman API `libpod/build` accepts paramemter `remote` which overrides
`dockerfile` but currently parameter is no-op. Following commit adds
support for `remote` parameter in libpod API.

See: https://docs.podman.io/en/v3.2.3/_static/api.html#operation/ImageBuildLibpod
Closes: https://github.com/containers/podman/issues/13831

Signed-off-by: Aditya R <arajan@redhat.com>
2022-05-16 22:01:39 +05:30
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