Commit graph

4290 commits

Author SHA1 Message Date
Ashley Cui
17dbce2fb0 Clean up cached machine images
When initing machines, we download a machine image, and uncompress and
copy the image for the actual vm image. When a user constantly pulls new
machines, there may be a buildup of old, unused machine images. This
commit cleans ups the unused cached images.

Changes:
- If the machine is pulled from a URL or from the FCOS releases, we pull
  them into XDG_DATA_HOME/containers/podman/machine/vmType/cache
- Cache cleanups only happen if there is a cache miss, and we need to
  pull a new image
- For Fedora and FCOS, we actually use the cache, so we go through the
  cache dir and remove any images older than 2 weeks (FCOS's release cycle), on a cache miss.
- For generic files pulled from a URL, we don't actually cache, so we
  delete the pulled file immediately after creating a machine image
- For generic files from a local path, the original file will never be
  cleaned up

Note that because we cache in a different dir, this will not clean up
old images pulled before this commit.

[NO NEW TESTS NEEDED]

Signed-off-by: Ashley Cui <acui@redhat.com>
2022-07-26 13:32:33 -04:00
Ashley Cui
e473c5e4b7 Machine init: create .ssh dir if not exist
When initing a machine, we generate ssh keys in `$HOME/.ssh`. If there
is not .ssh dir, we should create it, so the init does not fail.

Signed-off-by: Ashley Cui <acui@redhat.com>
2022-07-26 13:29:40 -04:00
Karthik Elango
6d84a9952f Podman stop --filter flag
Filter flag is added for podman stop and podman --remote stop. Filtering logic is implemented in
getContainersAndInputByContext(). Start filtering can be manipulated to use this logic as well to limit redundancy.

Signed-off-by: Karthik Elango <kelango@redhat.com>
2022-07-26 13:25:36 -04:00
Sascha Grunert
a78be890ee Switch to github.com/blang/semver/v4
Switch to the latest version of the now go module compatible release.

[NO NEW TESTS NEEDED]

Signed-off-by: Sascha Grunert <sgrunert@redhat.com>
2022-07-26 13:22:46 -04:00
Gerard Braad
a5827e13cd Fixes #14698 Use prepared image for WSL2 machine init
This commit introduces a prepared image for setting up the WSL2
environment. This means that the deployment will take considerable
less time to finish (as it does not need to run an update and package
install), but also allows to rely on a cached image to re-init the
environment without the need for an internet connection.

[NO NEW TESTS NEEDED]

Signed-off-by: Gerard Braad <me@gbraad.nl>
2022-07-26 13:19:48 -04:00
Brent Baude
f7707c81a0 Fix last machine test
The list --format json test case had a typo like error.

[NO NEW TESTS NEEDED]

Signed-off-by: Brent Baude <bbaude@redhat.com>
2022-07-26 13:08:37 -04:00
Giuseppe Scrivano
35dc17bfe6 abi: create new cgroup when running in a container
if podman is running in the root cgroup, it will create a new
subcgroup and move itself there.

[NO NEW TESTS NEEDED] it needs nested podman

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

Signed-off-by: Giuseppe Scrivano <gscrivan@redhat.com>
2022-07-26 13:08:19 -04:00
Giuseppe Scrivano
7b4ebfa657 podman: always call into SetupRootless
Signed-off-by: Giuseppe Scrivano <gscrivan@redhat.com>
2022-07-26 13:08:11 -04:00
Paul Holzinger
bf269e634c podman machine: do not commit proxies into config file
qemu fails when the same `fw_cfg` options is used more than once.
Since the current logic always adds a new option on each machine load
this will fail on the second start.

We can fix this by checking if the option is already set and replace but
I think it is easier to just not commit the option in the config and add
it dynamically on start. User that hit this bug have to recreate the
machine.

[NO NEW TESTS NEEDED]

Fixes #14636
Fixes #14837

Signed-off-by: Paul Holzinger <pholzing@redhat.com>
2022-07-26 13:02:39 -04:00
openshift-ci[bot]
810cbf1fb9
Merge pull request #14181 from umohnani8/kube-hostname
Add ports and hostname correctly in kube yaml
2022-07-11 15:13:49 +00:00
openshift-ci[bot]
0df8c6e157
Merge pull request #14826 from sstosh/net-prune
Refactored networkPrune function
2022-07-11 12:53:59 +00:00
openshift-ci[bot]
76422ecdbb
Merge pull request #14818 from rhatdan/wait
podman wait can take multiple conditions
2022-07-11 08:06:58 +00:00
Urvashi Mohnani
81a19a568f Add ports and hostname correctly in kube yaml
If a pod is created without net sharing, allow adding
separate ports for each container to the kube yaml
and also set the pod level hostname correctly if the
uts namespace is not being shared.

Add a warning if the default namespace sharing options
have been modified by the user.

Signed-off-by: Urvashi Mohnani <umohnani@redhat.com>
2022-07-08 11:21:48 -04:00
Brent Baude
76d887c770 Fix machine tests
Catch up with regressions that have occurred since the tests were
originally written.

Signed-off-by: Brent Baude <bbaude@redhat.com>
2022-07-08 08:22:49 -05:00
Daniel J Walsh
96dd57ca50
podman wait can take multiple conditions
Podman wait should not be defaulting to just stopped.  By default
wait API waits for stopped and exited.  We should not override this on
the client side.

Signed-off-by: Daniel J Walsh <dwalsh@redhat.com>
2022-07-08 05:26:56 -04:00
openshift-ci[bot]
6087fb2116
Merge pull request #14839 from saschagrunert/errors-pkg
pkg: switch to golang native error wrapping
2022-07-08 09:24:25 +00:00
Sascha Grunert
a46f798831
pkg: switch to golang native error wrapping
We now use the golang error wrapping format specifier `%w` instead of
the deprecated github.com/pkg/errors package.

[NO NEW TESTS NEEDED]

Signed-off-by: Sascha Grunert <sgrunert@redhat.com>
2022-07-08 08:54:47 +02:00
Toshiki Sonoda
d1754bdd4f Refactored networkPrune function
Refactored the networkPrune function to improve readability.

This commit changes the `networkPrune` function to
use the `PrintNetworkPruneResults` function.

[NO NEW TESTS NEEDED]

Signed-off-by: Toshiki Sonoda <sonoda.toshiki@fujitsu.com>
2022-07-08 08:33:20 +09:00
Paul Holzinger
61a67a07b1
pkg/machine/qemu: start VM check if qemu is alive
When trying to connect to the qemu ready socket we should check if the
qemu process is still running, if it is not we can just error out. There
is no point in retrying.
To do so we have to directly call wait with WNOHANG.

Also change StartProcess to os/exec package which is higher level and
allows us to use a buffer as qemu stderr fd.

Signed-off-by: Paul Holzinger <pholzing@redhat.com>
2022-07-07 20:57:26 +02:00
Paul Holzinger
a26cf638e0
machine: qemu fix chardev id starting with letter
qemu need the id to start with a letter for some reason.
If this is not the case qemu will fail:
```
qemu-system-x86_64: -device virtserialport,chardev=ad053e0bb519f_ready,name=org.fedoraproject.port.0: Property 'virtserialport.chardev' can't find value 'ad053e0bb519f_ready'
er
Identifiers consist of letters, digits, '-', '.', '_', starting with a letter.
```

To fix this we just add an "a" in front of it.

Signed-off-by: Paul Holzinger <pholzing@redhat.com>
2022-07-07 20:48:28 +02:00
Paul Holzinger
4374038cc6
pkg/machine/e2e: do not import from cmd/podman
It should be avoided to import cmd/podman/... packages from outside of
cmd/podman. This can lead in weird hard to debug import paths but also
can have negative consequences when imported in unit tests. In this case
it will set XDG_CONFIG_HOME and thus the machine tests this dir over the
tmp HOME env variable which is set at a later point. This caused machine
files to be leaked into the actual users home dir.

Signed-off-by: Paul Holzinger <pholzing@redhat.com>
2022-07-07 20:48:28 +02:00
Paul Holzinger
4cfa8ccb27
machine test: fix endless loop in test
The problem is that this could loop forever as long as podman start doe
snot exit (which could happen due bugs). Also since there no timeout
between the machine list calls the test is using the full cpu and this
causes the system to slow down making the machine start command even
slower. IMO it is enough to only check the status every three seconds.

Signed-off-by: Paul Holzinger <pholzing@redhat.com>
2022-07-07 20:48:27 +02:00
openshift-ci[bot]
d481fbe759
Merge pull request #14803 from bugfood/volumes
make 9p security model configurable; document
2022-07-07 18:21:55 +00:00
Ed Santiago
d52ac4422b
Merge pull request #14852 from cdoern/podUTS
fix namespace reporting
2022-07-07 11:22:40 -06:00
openshift-ci[bot]
dd0418a5fe
Merge pull request #14762 from ashley-cui/machinfo
Podman machine info
2022-07-07 15:17:40 +00:00
Charlie Doern
0424084b30 fix namespace reporting
somehow, #14501 got through CI even though the remote tests fail. The testa are failing
due to the PodSpecGenerator not containing the UTSNs entitiy and infra's spec is not yet allowed to be accessed remotely

[NO NEW TESTS NEEDED]

resolves #14847

Signed-off-by: Charlie Doern <cdoern@redhat.com>
2022-07-07 09:51:20 -04:00
openshift-ci[bot]
07a7a891ae
Merge pull request #14825 from jmguzik/fix_streaming_pod_stats
Fix streaming for libpod/pods/stats endpoint
2022-07-07 12:58:25 +00:00
openshift-ci[bot]
48c8923248
Merge pull request #14673 from idleroamer/fix-network-inspect-main
Fix network inspect compat API discrepancy
2022-07-07 11:55:30 +00:00
openshift-ci[bot]
f3533a312f
Merge pull request #14841 from Luap99/common-code
use c/common code for resize and CopyDetachable
2022-07-07 11:43:52 +00:00
Corey Hickey
03ee8204d3 podman machine: make 9p security model configurable; adjust docs
This addresses:
Symlinks don't work on podman machine on macOS Monterey when using volumes feature #13784

This change does NOT exactly fix the bug, but it does allow the user to
work around it via 'podman init' option, e.g.:
podman machine init -v "$HOME/git:$HOME/git:ro:security_model=none"

If the default security model were to be changed to 'none', then that
would fix the bug, at the possible cost of breaking any use cases that
depend on 'mapped-xattr'.

The documentation of the purpose and behavior of the different security
models seems to be rather light:
https://wiki.qemu.org/Documentation/9psetup#Starting_the_Guest_directly

From testing, it appears that the mapped-xattr security model intends to
manage symlinks such that the guest can see the symlinks but the host
only sees regular files (with extended attributes). As far as I can
tell, this behavior only makes sense when the guest is the only thing
that ever needs to create and read symlinks. Otherwise, symlinks created
on the host are unusable on the guest, and vice versa.

As per the original commit: 8e7eeaa4dd
[NO NEW TESTS NEEDED]

Also document existing ro and rw options.

Also remove misleading statement about /mnt. By my observation, this
line is incorrect. If the intended meaning is different, then I don't
understand.

The default volume is mounted read/write and is not within /mnt.

[core@localhost ~]$ mount | grep 9p
vol0 on /Users/chickey type 9p (rw,relatime,sync,dirsync,access=client,trans=virtio)

Signed-off-by: Corey Hickey <chickey@tagged.com>
2022-07-06 16:07:56 -07:00
openshift-ci[bot]
13070dc186
Merge pull request #14844 from shanesmith/fix-qemu-machine-gvproxy-always-fails
Fix qemu machine startHostNetworking always failing
2022-07-06 17:39:35 +00:00
Shane Smith
a5898129cf
Fix qemu machine startHostNetworking always failing
Issue introduced in #14828

[NO NEW TESTS NEEDED]

Signed-off-by: Shane Smith <shane.smith@shopify.com>
2022-07-06 11:00:47 -04:00
Paul Holzinger
cc6faddfaa
use c/common code for resize and CopyDetachable
Since conmon-rs also uses this code we moved it to c/common. Now podman
should has this also to prevent duplication.

[NO NEW TESTS NEEDED]

Signed-off-by: Paul Holzinger <pholzing@redhat.com>
2022-07-06 16:57:07 +02:00
openshift-ci[bot]
ca5bebb082
Merge pull request #14501 from cdoern/podUTS
podman pod create --uts support
2022-07-06 14:51:22 +00:00
Jakub Guzik
72aa00aca0 Fix streaming for libpod/pods/stats endpoint
This commit fixes libpod/pods/stats endpoint which should stream the data.
Additional option param is added to disable streaming and the delay value
to choose the desired delay between streamed messages (default 5s).

Signed-off-by: Jakub Guzik <jguzik@redhat.com>
2022-07-05 22:02:04 +02:00
🤓 Mostafa Emami
ee05bc0318 Fix network inspect compat API discrepancy
- containerInspect compat API expects field value PrefixLen
  instead of PrefixLength for type Address for SecondaryIPAddresses
- Add tests for network part of containerInspect compat api

Closes: containers#14674
Signed-off-by: 🤓 Mostafa Emami <mustafaemami@gmail.com>
2022-07-05 21:25:32 +02:00
Ashley Cui
9d6efb3442 Podman machine info
Add podman machine info command, which displays infor about the machine
host as well as version info.

Signed-off-by: Ashley Cui <acui@redhat.com>
2022-07-05 15:18:41 -04:00
openshift-ci[bot]
cf747399b1
Merge pull request #14370 from umohnani8/todo
Fix podman pod unpause TODO
2022-07-05 17:33:19 +00:00
openshift-ci[bot]
39fc5d1f4f
Merge pull request #14828 from saschagrunert/errors-libpod
libpod: switch to golang native error wrapping
2022-07-05 16:10:12 +00:00
Urvashi Mohnani
65d511c6d8 Fix podman pod unpaue TODO
Update the podman pod unpause to only show the paused
containers with autocomplete.
Fix a typo in the help command.
Update the unpause function to only attempt an unpause
on pasued pods instead of all the pods.
Update the tests accordingly.

Signed-off-by: Urvashi Mohnani <umohnani@redhat.com>
2022-07-05 10:32:49 -04:00
openshift-ci[bot]
74466d14ff
Merge pull request #14806 from n1hility/win-proxy
Implement proxy support for Windows
2022-07-05 14:24:19 +00:00
Sascha Grunert
251d91699d
libpod: switch to golang native error wrapping
We now use the golang error wrapping format specifier `%w` instead of
the deprecated github.com/pkg/errors package.

[NO NEW TESTS NEEDED]

Signed-off-by: Sascha Grunert <sgrunert@redhat.com>
2022-07-05 16:06:32 +02:00
openshift-ci[bot]
340eeed0cb
Merge pull request #14626 from jakecorrenti/disable-docker-compose-health-check
Docker-compose disable healthcheck properly handled
2022-07-05 13:50:35 +00:00
openshift-ci[bot]
2c9f0753da
Merge pull request #14534 from jakecorrenti/docker-compose-update-network-mtu
(rootful) docker-compose now updates network MTU
2022-07-05 13:46:23 +00:00
openshift-ci[bot]
1fb1cab21c
Merge pull request #14824 from shanesmith/silence-machine-ssh-locale-warning
Silence setlocale warnings from `podman machine ssh`
2022-07-05 13:29:38 +00:00
cdoern
8f2d9e7a7c podman pod create --uts support
add support for the --uts flag in pod create, allowing users to avoid
issues with default values in containers.conf.

uts follows the same format as other namespace flags:
--uts=private (default), --uts=host, --uts=ns:PATH

resolves #13714

Signed-off-by: Charlie Doern <cdoern@redhat.com>
2022-07-05 09:28:07 -04:00
openshift-ci[bot]
13479d457d
Merge pull request #14823 from Luap99/debian-unit-tests
envVarValueResourceFieldRef: use int64 for value
2022-07-05 13:02:27 +00:00
Jake Correnti
5633ef1d15 Docker-compose disable healthcheck properly handled
Previously, if a container had healthchecks disabled in the
docker-compose.yml file and the user did a `podman inspect <container>`,
they would have an incorrect output:

```
"Healthcheck":{
   "Test":[
      "CMD-SHELL",
      "NONE"
   ],
   "Interval":30000000000,
   "Timeout":30000000000,
   "Retries":3
}
```

After a quick change, the correct output is now the result:
```
"Healthcheck":{
   "Test":[
      "NONE"
   ]
}
```

Additionally, I extracted the hard-coded strings that were used for
comparisons into constants in `libpod/define` to prevent a similar issue
from recurring.

Closes: #14493

Signed-off-by: Jake Correnti <jcorrenti13@gmail.com>
2022-07-05 08:02:22 -04:00
Jake Correnti
488eb3b74c (rootful) docker-compose now updates network MTU
Previously, the following network block did not update using
docker-compose:

```
networks:
  default:
    driver: bridge
    driver_opts:
      mtu: 9000
```

In the API, the network options were previously not being handled when the
network was being created. I translated the docker options into podman
options, and added the options to the network.

When doing `podman network inspect <network>`, the results now contain
`"mtu": "9000"`

Fixes: #14482

Signed-off-by: Jake Correnti <jcorrenti13@gmail.com>
2022-07-05 07:54:09 -04:00
openshift-ci[bot]
ffc8d65492
Merge pull request #14827 from flouthoc/specgen-run-support-manifest
specgen,run: support running container from valid manifest list using `--platform`
2022-07-05 10:10:41 +00:00