Commit Graph

3940 Commits

Author SHA1 Message Date
Urvashi Mohnani 0728a10c65 Move podman build opts to common file
Move the podman build opts to cmd/common so that
it can be used by podman build and podman farm build
[NO NEW TESTS NEEDED]

Signed-off-by: Urvashi Mohnani <umohnani@redhat.com>
2023-09-14 20:48:33 -04:00
Brent Baude 919dce1315 Plumbing to run machine tests with hyperv
this pr has the basic plumbing that allows the e2e machine tests to run
with the hyperv provider.

it requires a special fcos image right now because gvforwarder was not
in the upstream fcos images for hyperv.

changed the way "provider" is set; moved GetProvider functions to
pkg/machine/provider.  provider is now set at the machine level.

Signed-off-by: Brent Baude <bbaude@redhat.com>
2023-09-14 15:57:35 -05:00
Daniel J Walsh 4a2a423dfe
Add --filter pod= autocompletion
Also sorted all of the options in alphabetic order.

Fixes: https://github.com/containers/podman/issues/19967

Signed-off-by: Daniel J Walsh <dwalsh@redhat.com>
2023-09-14 13:55:53 -04:00
Paul Holzinger 6b7f718b4b
wire in new buildah build options
Add support for --layerLabel.
Support for --cw is only added for the local client. I am not sure how
I would wire this over remote. The current code parse the options in
the frontend which hard codes the Tmpdir field to an incorrect value if
we would json marshal this vie remote API so it would not work in real
remote cases.

Signed-off-by: Paul Holzinger <pholzing@redhat.com>
2023-09-14 11:21:00 +02:00
Paul Holzinger 2c2299ad85
bump buildah to latest
Also includes a small change to make us of
https://github.com/containers/buildah/pull/5039

Signed-off-by: Paul Holzinger <pholzing@redhat.com>
2023-09-14 11:20:48 +02:00
Ed Santiago df011f4377 e2e: more ExitCleanly(): manual test fixes
Commit 2 of 2: manual fixes to get tests to pass.

Mostly adding "-q", but in some cases reverting back to Exit(0)
with progress-message checks.

Plus, fix a typo in an error message

Signed-off-by: Ed Santiago <santiago@redhat.com>
2023-09-12 21:07:11 -06:00
Lokesh Mandvekar 806c5de12a
Podmansh: use podmansh_timeout
podmansh_timeout is now a configurable option in containers.conf.

[NO NEW TESTS NEEDED]

Signed-off-by: Lokesh Mandvekar <lsm5@fedoraproject.org>
2023-09-12 09:18:24 -04:00
danishprakash cdcf18b862
kube: add DaemonSet support for generate
Signed-off-by: danishprakash <danish.prakash@suse.com>
2023-09-12 10:30:57 +05:30
Anders F Björklund 336055fe3b Use url with scheme and path for the unix address
Shortcuts like unix:path and unix:/path do not work everywhere,
so make sure to use unix://path when quoting the url (or address)

Signed-off-by: Anders F Björklund <anders.f.bjorklund@gmail.com>
2023-09-11 07:55:12 +02:00
Daniel J Walsh 8acd66c115
Merge pull request #19888 from giuseppe/fix-pod-lifecycle
fix pod cgroup lifecycle
2023-09-10 20:36:21 -04:00
Daniel J Walsh 92bdd912b2
Merge pull request #19891 from edsantiago/run_rmi_warn
run --rmi: "cannot remove" is a warning, not an error
2023-09-09 10:20:49 -04:00
Giuseppe Scrivano fbbad04398
pod: fix duplicate volumes from containers.conf
If some volumes are specified in containers.conf, they are currently
added twice to the containers spec causing the container to fail:

$ head -n2 ~/.config/containers/containers.conf
[containers]
volumes = ["/tmp:/tmp"]
$ podman pod create --name foo
7ac7f97f9b74a596332483e4a13e58cb9c8d997e9c5baae46804ae0acc26cbc6
$ podman run --pod=foo alpine true
Error: "/tmp": duplicate mount destination

The fix is to ignore the setting from containers.conf when setting the
pod default configuration.

Signed-off-by: Giuseppe Scrivano <gscrivan@redhat.com>
2023-09-08 16:02:55 +02:00
Giuseppe Scrivano 331b3c216d
cmd, specgen: allow cgroup resources without --infra
When the infra container is not created, we can still set limits on
the pod cgroup.

Signed-off-by: Giuseppe Scrivano <gscrivan@redhat.com>
2023-09-08 14:58:48 +02:00
Ed Santiago 59bd6a74a0 run --rmi: "cannot remove" is a warning, not an error
When the "rmi" part of "run --rmi" fails due to image being in use
by another container (or for any reason, actually), issue a warning
message, not an error.

Signed-off-by: Ed Santiago <santiago@redhat.com>
2023-09-07 14:30:22 -06:00
Eng Zer Jun f094884c1b
Remove redundant nil checks in system connection remove
From the Go specification:

  "3. If the map is nil, the number of iterations is 0." [1]

Therefore, an additional nil check for before the loop is unnecessary.

[NO NEW TESTS NEEDED]

[1]: https://go.dev/ref/spec#For_range

Signed-off-by: Eng Zer Jun <engzerjun@gmail.com>
2023-09-03 15:42:41 +08:00
Aditya R b95ae3b4a3
manifest,push: support add_compression from containers.conf
Use `add_compression` field from `containers.conf` if found instead and
`CLI` field `--add-compression` is not set.

Signed-off-by: Aditya R <arajan@redhat.com>
2023-08-29 20:57:50 +05:30
Aditya R 0938ee1899
push, manifest-push: --force-compression must be true with --compression-format
Value of `--force-compression` should be already `true` is
`--compression-format` is selected otherwise let users decide.

Signed-off-by: Aditya R <arajan@redhat.com>
2023-08-28 16:41:13 +05:30
Aditya R 82bd56be74
manifest-push: add support for --force-compression
Adds support for --force-compression which allows end-users to force
push blobs with the selected compresison in --compression option, in
order to make sure that blobs of other compression on registry are not
reused.

Signed-off-by: Aditya R <arajan@redhat.com>
2023-08-24 13:36:04 +05:30
Aditya R 469ace0910
push: add support for --force-compression
Adds support for --force-compression which allows end-users to force
push blobs with the selected compresison in --compression option, in
order to make sure that blobs of other compression on registry are not
reused.

Is equivalent to: force-compression here: https://docs.docker.com/build/exporters/#compression

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

Signed-off-by: Aditya R <arajan@redhat.com>
2023-08-24 13:35:58 +05:30
OpenShift Merge Robot f559fc55bb
Merge pull request #19567 from vrothberg/RUN-1873
add --module flag
2023-08-16 16:23:54 -02:30
Christian Hörtnagl 896cab6120 document available secret drivers
[NO NEW TESTS NEEDED]

Signed-off-by: Christian Hörtnagl <christian.hoertnagl@univie.ac.at>
2023-08-16 16:23:39 +02:00
Valentin Rothberg d5841ed528 add --module flag
Support a new concept in containers.conf called "modules".  A "module"
is a containers.conf file located at a specific directory.  More than
one module can be loaded in the specified order, following existing
override semantics.

There are three directories to load modules from:
 - $CONFIG_HOME/containers/containers.conf.modules
 - /etc/containers/containers.conf.modules
 - /usr/share/containers/containers.conf.modules

With CONFIG_HOME pointing to $HOME/.config or, if set, $XDG_CONFIG_HOME.
Absolute paths will be loaded as is, relative paths will be resolved
relative to the three directories above allowing for admin configs
(/etc/) to override system configs (/usr/share/) and user configs
($CONFIG_HOME) to override admin configs.

Pulls in containers/common/pull/1599.

Signed-off-by: Valentin Rothberg <vrothberg@redhat.com>
2023-08-16 14:32:35 +02:00
OpenShift Merge Robot de6bdd1907
Merge pull request #19152 from geichelberger/add-host-gateway-support
Add support for host-gateway
2023-08-14 05:47:59 -04:00
Urvashi Mohnani bcebcad1fd Update system connection add & remove
Add new --farm flag to podman system connection add so that
a user can add a new connection to a farm immediately.
Update system connection remove such that when a connection is
removed, the connection is also removed from any farms that have it.
Add docs and tests for these changes.

Signed-off-by: Urvashi Mohnani <umohnani@redhat.com>
2023-08-09 13:37:37 -04:00
Urvashi Mohnani dce3ef3c42 Add podman farm update command
Podman farm update allows users to update a farm by addig
connections, removing connections, or changing the default farm.

Signed-off-by: Urvashi Mohnani <umohnani@redhat.com>
2023-08-09 13:37:37 -04:00
Urvashi Mohnani 44a704dfcf Add podman farm remove command
Podman farm remove allows users to remove one or more
existing farms.

Signed-off-by: Urvashi Mohnani <umohnani@redhat.com>
2023-08-09 13:37:37 -04:00
Urvashi Mohnani 59a8140f1f Add podman farm list command
The podman farm list command allows users to list
the existing farms.

Signed-off-by: Urvashi Mohnani <umohnani@redhat.com>
2023-08-09 13:37:37 -04:00
Urvashi Mohnani 6fcdf1a190 Add podman farm create command
The podman farm create command allows users to create
farms from the avaiable podman system connections.

Signed-off-by: Urvashi Mohnani <umohnani@redhat.com>
2023-08-09 13:37:37 -04:00
Urvashi Mohnani 1d5ef29f01 Add podman farm subcommand
Signed-off-by: Urvashi Mohnani <umohnani@redhat.com>
2023-08-09 13:37:33 -04:00
Urvashi Mohnani 2951316b20 Add completion for Farms
Signed-off-by: Urvashi Mohnani <umohnani@redhat.com>
2023-08-09 11:07:27 -04:00
Daniel J Walsh f55c48ad3a
podman stop --cidfile missing --ignore
Podman should ignore failures to find a cidfile when stoping the
container if the user specified --ignore

Fixes: https://github.com/containers/podman/issues/19546

Signed-off-by: Daniel J Walsh <dwalsh@redhat.com>
2023-08-08 17:03:15 -04:00
OpenShift Merge Robot c13b403c0f
Merge pull request #19534 from giuseppe/cp-close-tmp-file
cp: close temporary file on error path
2023-08-08 08:38:06 -04:00
OpenShift Merge Robot 2f50d8e579
Merge pull request #19425 from rhatdan/service
Add support for passing container stop timeout as -1 (infinite)
2023-08-08 04:52:33 -04:00
Gregor Eichelberger afaeedef78
Add support for host-gateway
The `--add-host` option now accepts the special string `host-gateway`
instead of an IP Address, which will be mapped to the host IP address.

Signed-off-by: Gregor Eichelberger <gregor.eichelberger@tuwien.ac.at>
2023-08-07 21:38:10 +02:00
Giuseppe Scrivano 39641482c1
cp: close temporary file on error path
follow-up for https://github.com/containers/podman/pull/19526

on io.Copy() errors make sure the temporary file is closed.

[NO NEW TESTS NEEDED]

Signed-off-by: Giuseppe Scrivano <gscrivan@redhat.com>
2023-08-07 12:39:25 +02:00
binghongtao 23c5890f25
remove temporary files when copy
[NO NEW TESTS NEEDED]

Fixes: #19496

Signed-off-by: binghongtao <695097494plus@gmail.com>
2023-08-06 23:12:54 +08:00
OpenShift Merge Robot 9e18e9fafd
Merge pull request #19414 from rhatdan/systemd
Deprecate podman generate systemd
2023-08-04 20:06:41 +02:00
Daniel J Walsh 1e54539432
Add support for passing container stop timeout as -1 (infinite)
Compat api for containers/stop should take -1 value

Add support for `podman stop --time -1`
Add support for `podman restart --time -1`
Add support for `podman rm --time -1`
Add support for `podman pod stop --time -1`
Add support for `podman pod rm --time -1`
Add support for `podman volume rm --time -1`
Add support for `podman network rm --time -1`

Fixes: https://github.com/containers/podman/issues/17542

Signed-off-by: Daniel J Walsh <dwalsh@redhat.com>
2023-08-04 08:36:45 -04:00
OpenShift Merge Robot 84dec22349
Merge pull request #19494 from rhatdan/codespell
Run codespell on code
2023-08-03 19:32:27 +02:00
OpenShift Merge Robot bde942e216
Merge pull request #19468 from flouthoc/manifest-add-compression
manifest, push: implement `--add-compression` to push with compressed variants.
2023-08-03 13:15:34 +02:00
Daniel J Walsh 62a22c5d60
Run codespell on code
Also cleanup --rm=true to be just --rm

Signed-off-by: Daniel J Walsh <dwalsh@redhat.com>
2023-08-03 07:00:30 -04:00
Daniel J Walsh 44f159ed31
Deprecate podman generate systemd
Now that Quadlets are fully supported, it is time to Depracate
podman generate systemd command.

Signed-off-by: Daniel J Walsh <dwalsh@redhat.com>
2023-08-03 06:58:53 -04:00
Aditya R 346f9cb4ed
manifest/push: add support for --add-compression
Adds support for --add-compression which accepts multiple compression
formats and when used it will add all instances in a manifest list with
requested compression formats.

Signed-off-by: Aditya R <arajan@redhat.com>
2023-08-03 14:20:38 +05:30
Daniel J Walsh f3ebd798c6
Make podman run --rmi automatically set --rm
Forcing users to set --rm when setting --rmi is just bad UI.
If I want the image to be removed, it implies that I want the
container removed that I am creating.

Fixes: https://github.com/containers/podman/issues/15640

Signed-off-by: Daniel J Walsh <dwalsh@redhat.com>
2023-08-02 08:33:06 -04:00
danishprakash bfd2a8cad3
secret: add support for `--ignore` with rm
Signed-off-by: danishprakash <danish.prakash@suse.com>
2023-08-02 11:13:08 +05:30
Daniel J Walsh 64873e322c
Codespell fixups
Signed-off-by: Daniel J Walsh <dwalsh@redhat.com>
2023-07-31 09:38:46 -04:00
Daniel J Walsh f540bbffa8
Make sure users changes --authfile before checking
In certain cases REGISTRY_AUTH_FILE is set but the auth file
does not exists yet, do not throw error unless user specified
a file directly using --authfile.

Fixes: https://github.com/containers/podman/issues/18405

Signed-off-by: Daniel J Walsh <dwalsh@redhat.com>
2023-07-27 12:06:25 -04:00
Daniel J Walsh d6a32a3da3
If quadlets have same name, only use first
If a user puts a quadlet file in his homedirectory with
the same name as one in /etc/containers/systemd/user or
/etc/containers/systemd/user/$UID, then only use the one in
homedir and ignore the others.

Signed-off-by: Daniel J Walsh <dwalsh@redhat.com>
2023-07-26 17:17:09 -04:00
OpenShift Merge Robot 63a0d013ae
Merge pull request #19254 from boaz0/closes_19252
Fix: use --all in podman stats to get all containers stats
2023-07-26 16:27:14 +02:00
OpenShift Merge Robot 85ab62042a
Merge pull request #19348 from rhatdan/authfile
Verify authfile exists if user specifies it
2023-07-26 14:47:53 +02:00
OpenShift Merge Robot 9706147089
Merge pull request #19353 from vrothberg/fix-6160
add "healthy" sdnotify policy
2023-07-26 09:18:57 +02:00
Boaz Shuster de122bb44e Fix: use --all in podman stats to get all containers stats
* Set query all when options.All is true
* Update API to support the "all" option in stats

Signed-off-by: Boaz Shuster <boaz.shuster.github@gmail.com>
2023-07-26 09:41:14 +03:00
Daniel J Walsh 1f455cf619
Merge pull request #19320 from eriksjolund/remove_unnecessary_please
Remove unnecessary use of the word "please"
2023-07-25 15:20:38 -04:00
Daniel J Walsh 349d775de3
Verify authfile exists if user specifies it
Fixes: https://github.com/containers/podman/issues/18938

Signed-off-by: Daniel J Walsh <dwalsh@redhat.com>
2023-07-25 12:39:12 -04:00
Valentin Rothberg 0cfd12786f add "healthy" sdnotify policy
Add a new "healthy" sdnotify policy that instructs Podman to send the
READY message once the container has turned healthy.

Fixes: #6160
Signed-off-by: Valentin Rothberg <vrothberg@redhat.com>
2023-07-25 11:17:44 +02:00
Valentin Rothberg e596b17fbe add a podman-compose command
**podman compose** is a thin wrapper around an external compose provider
such as docker-compose or podman-compose.  This means that `podman
compose` is executing another tool that implements the compose
functionality but sets up the environment in a way to let the compose
provider communicate transparently with the local Podman socket.  The
specified options as well the command and argument are passed directly
to the compose provider.

The default compose providers are `docker-compose` and `podman-compose`.
If installed, `docker-compose` takes precedence since it is the original
implementation of the Compose specification and is widely used on the
supported platforms (i.e., Linux, Mac OS, Windows).

If you want to change the default behavior or have a custom installation
path for your provider of choice, please change the `compose_provider`
field in `containers.conf(5)`.  You may also set the
`PODMAN_COMPOSE_PROVIDER` environment variable.

Signed-off-by: Valentin Rothberg <vrothberg@redhat.com>
2023-07-24 19:23:04 +02:00
Erik Sjölund b5ce0ab2de Fix language, typos and markdown layout
[NO NEW TESTS NEEDED]

Signed-off-by: Erik Sjölund <erik.sjolund@gmail.com>
2023-07-24 11:18:25 +02:00
Erik Sjölund d4cfc498d7 Remove unnecessary use of the word "please".
Only use the word "please" in these situations:

- reader is asked to do something inconvenient
- reader is asked for permission
- reader is asked for forgiveness

Remove other uses of the word "please" to
make the language more efficient.

[NO NEW TESTS NEEDED]

Signed-off-by: Erik Sjölund <erik.sjolund@gmail.com>
2023-07-23 17:31:29 +02:00
OpenShift Merge Robot 67f0340687
Merge pull request #18830 from harikannan512/new-18032-2
recursive call in user directories for unit files
2023-07-22 15:11:24 +02:00
Hari Kannan 413552e10e quadlet recursively scan for unit files
Signed-off-by: Hari Kannan <harikannan512@gmail.com>
2023-07-20 23:10:28 +01:00
Matt Heon ce736413b4 Ensure that we appropriately warn that TCP is insecure
`podman system service` + TCP is not a configuration we should be
recommending. There was already language about this in the
manpages, but it was not sufficient in explaining how bad of an
idea this is. Expand the manpage warnings, add a dedicated
heading so people notice, and add a warning every time the
service starts with a TCP URL that directs people to the manpage
to see that explanation.

Signed-off-by: Matt Heon <mheon@redhat.com>
2023-07-20 14:22:04 -04:00
OpenShift Merge Robot 99623184e0
Merge pull request #19261 from cgiradkar/podman_inspect_completion
Podman inspect completion
2023-07-19 15:06:01 +02:00
Lokesh Mandvekar 6df17332b5
Podmansh: Better error, increase timeout to 30s
Co-authored-by: Ed Santiago <santiago@redhat.com>
Signed-off-by: Lokesh Mandvekar <lsm5@fedoraproject.org>
2023-07-18 10:15:12 -04:00
Chetan Giradkar 00a5b07090 Add bash-completion for podman inspect
Signed-off-by: Chetan Giradkar <cgiradka@redhat.com>
2023-07-18 14:31:50 +01:00
OpenShift Merge Robot 49a924cf39
Merge pull request #19211 from jakecorrenti/add-reserved-flag-generate
Add `--podman-only` flag to `podman generate kube`
2023-07-16 17:34:35 +02:00
Jake Correnti d0602e8f75 Add `--podman-only` flag to `podman generate kube`
Adds an `--podman-only` flag to `podman generate kube` to allow for
reserved annotations to be included in the generated YAML file.

Associated with: #19102

Signed-off-by: Jake Correnti <jakecorrenti+github@proton.me>
2023-07-14 09:35:59 -04:00
OpenShift Merge Robot 69f112a8bf
Merge pull request #19200 from rhatdan/secret1
Add secret support to podman login
2023-07-13 03:06:50 -04:00
Daniel J Walsh d1950869ab
Update cmd/podman/login.go
Co-authored-by: Ashley Cui <ashleycui16@gmail.com>
Signed-off-by: Daniel J Walsh <dwalsh@redhat.com>
2023-07-12 11:09:16 -04:00
OpenShift Merge Robot 9d9f4aaafe
Merge pull request #19006 from deuill/quadlet-volume-network-names
Allow setting volume and network names in Quadlet
2023-07-12 08:53:38 -04:00
Daniel J Walsh d497eb369c
Add secret support to podman login
Signed-off-by: Daniel J Walsh <dwalsh@redhat.com>
2023-07-12 08:45:02 -04:00
Valentin Rothberg 3ad55f48bb system service: unset listen fds on tcp
Disable leaking the LISTEN_* variables into containers which are
observed to be passed by systemd even without being socket activated as
described in https://access.redhat.com/solutions/6512011.

[NO NEW TESTS NEEDED] - Ultimately, the solution 6512011 should be updated.

Fixes: bugzilla.redhat.com/show_bug.cgi?id=2180483
Signed-off-by: Valentin Rothberg <vrothberg@redhat.com>
2023-07-11 16:44:27 +02:00
Jake Correnti 7b54fd84ec Add `--no-trunc` flag to maintain original annotation length
Adds a `--no-trunc` flag to `podman kube generate` preventing the
annotations from being trimmed at 63 characters. However, due to
the fact the annotations will not be trimmed, any annotation that is
longer than 63 characters means this YAML will no longer be Kubernetes
compatible. However, these YAML files can still be used with `podman
kube play` due to the addition of the new flag below.

Adds a `--no-trunc` flag to `podman kube play` supporting YAML files with
annotations that were not truncated to the Kubernetes maximum length of
63 characters.

Signed-off-by: Jake Correnti <jakecorrenti+github@proton.me>
2023-07-10 18:02:53 -04:00
Alex Palaistras 932fae4028 Allow setting volume and network names in Quadlet
This commit extends `Volume` and `Network` unit definitions with two
additional parameters, `VolumeName` and `NetworkName`, which will,
respectively, set a user-defined name for the corresponding volume and
network. This is similar to how the `ContainerName` directive currently
works, and should allow for smoother transitions to Quadlet-managed
resources.

Closes: #19003
Signed-off-by: Alex Palaistras <alex@deuill.org>
2023-07-10 20:33:19 +01:00
OpenShift Merge Robot eb9d44241e
Merge pull request #19004 from rhatdan/secret
Add --replace flag to podman secret create
2023-07-10 14:59:29 -04:00
OpenShift Merge Robot 7b08e024c1
Merge pull request #19180 from vrothberg/fix-19147
manifest inspect: support authentication
2023-07-10 14:40:29 -04:00
Valentin Rothberg a69194b02f manifest inspect: support authentication
Previous tests have worked by pure chance since the client and server
ran on the same host; the server picked up the credentials created by
the client login.

Extend the gating tests and add a new integration test which is further
capable of exercising the remote code.

Note that fixing authentication support requires adding a new
`--authfile` CLi flag to `manifest inspect`.  This will at least allow
for passing an authfile to be bindings.  Username and password are not
yet supported.

Signed-off-by: Valentin Rothberg <vrothberg@redhat.com>
2023-07-10 16:26:19 +02:00
Paul Holzinger 3f8ee70d0c
make --syslog errors non fatal
Podman will always pass down --syslog to conmon since 13c2aca21.
However there systems without syslog running, likely in container
setups. As reported in this was already a problem before when debug
level is used. Then conmon will pass down --syslog back to the podman
container cleanup command causing it to fail without doing anything.
Given that I think it is better to just ignore the error and log it on
debug level, we need to make sure cleanup works consistently.

[NO NEW TESTS NEEDED]

Fixes #19075

Signed-off-by: Paul Holzinger <pholzing@redhat.com>
2023-07-10 11:45:59 +02:00
Daniel J Walsh efefd8cf5b
Add --replace flag to podman secret create
Users may want to replace the secret used within containers, without
destroying the secret and recreating it.

Partial fix for https://github.com/containers/podman/issues/18667

Make sure podman --remote secret inspect and podman secret inspect
return the same error message.

Signed-off-by: Daniel J Walsh <dwalsh@redhat.com>
2023-07-09 07:26:09 -04:00
Anders F Björklund fa654e9857 Use bytes size consistently instead of human size
Previously podman was using "MB" and "GB" (binary) for input but
"MB" and "GB" (decimal) for output, which was causing confusion.

Signed-off-by: Anders F Björklund <anders.f.bjorklund@gmail.com>
2023-07-06 14:51:06 +02:00
Valentin Rothberg d874790bc6 auto update: fix usage of --authfile
The --authfile flag has been ignored.  Fix that and add a test to make
sure we won't regress another time.  Requires a new --tls-verify flag
to actually test the code.

Also bump c/common since common/pull/1538 is required to correctly check
for updates.  Note that I had to use the go-mod-edit-replace trick on
c/common as c/buildah would otherwise be moved back to 1.30.

Fixes: https://bugzilla.redhat.com/show_bug.cgi?id=2218315
Signed-off-by: Valentin Rothberg <vrothberg@redhat.com>
2023-07-05 08:30:39 +02:00
Black-Hole1 a16488f89d
fix(command): ignore `--format` in `podman search --list-tags`
Fix: https://github.com/containers/podman/issues/19033

Signed-off-by: Black-Hole1 <bh@bugs.cc>
2023-06-30 18:19:48 +08:00
Doug Rabson 43b9426fc6 cmd/podman, pkg/domain/infra: sockets should live in /var/run on FreeBSD
The /var/run directory is the preferred location for unix domain
sockets.

[NO NEW TESTS NEEDED]

Signed-off-by: Doug Rabson <dfr@rabson.org>
2023-06-29 14:52:51 +01:00
Doug Rabson e3f2a97d1f cmd/podman/system: add API server support on FreeBSD
This adds the 'system service' command to the build on FreeBSD and
suppresses the call to servicereaper.Start which is only needed to
support slirp4netns on Linux. A stub for compat.StatsContainer is also
added - stats are still supported via the libpod.StatsContainer API
call.

[NO NEW TESTS NEEDED]

Signed-off-by: Doug Rabson <dfr@rabson.org>
2023-06-29 13:10:44 +01:00
Daniel J Walsh bf60bb0731
Display secret to user in inpspect
It is pretty complicated to display the secret on the host, but is
not really secured. This patch makes it easier to examine the secret.

Partial fix for https://github.com/containers/podman/issues/18667

Signed-off-by: Daniel J Walsh <dwalsh@redhat.com>
2023-06-28 13:14:49 -04:00
Daniel J Walsh b6e636cbe2
Remove 'inspecting object' from inspect errors
This is just useless noise and gets us closer to what
Docker returns.

Signed-off-by: Daniel J Walsh <dwalsh@redhat.com>
2023-06-28 08:19:37 -04:00
OpenShift Merge Robot 4dc2e08618
Merge pull request #18977 from jakecorrenti/move-qemu-functions-to-proper-files
Re-organize hypervisor implementations
2023-06-27 22:09:21 +02:00
Daniel J Walsh 05eb3e6f13
Make Podman/Buildah use same DecryptConfig/EncryptConfig funcs
Signed-off-by: Daniel J Walsh <dwalsh@redhat.com>
Signed-off-by: Paul Holzinger <pholzing@redhat.com>
2023-06-27 18:04:42 +02:00
Jake Correnti 516034215f Re-organize hypervisor implementations
Ensures that for each hypervisor implementation, their `config.go` file
deals with implementing the `VirtProvider` interface while the
`machine.go` file is for implementing the `VM` interface.

Moves the `Virtualization` type into a common file and
created wrappers for the individual hypervisors. Allows for shared
functions that are exactly the same while providing the flexibility to
create hypervisor-specific implementations of the functions.

[NO NEW TESTS NEEDED]

Signed-off-by: Jake Correnti <jakecorrenti+github@proton.me>
2023-06-23 11:33:19 -04:00
Valentin Rothberg 1398cbce8a container wait: support health states
Support two new wait conditions, "healthy" and "unhealthy".  This
further paves the way for integrating sdnotify with health checks which
is currently being tracked in #6160.

Fixes: #13627
Signed-off-by: Valentin Rothberg <vrothberg@redhat.com>
2023-06-23 14:16:32 +02:00
Valentin Rothberg 811867249b container wait API: use string slice instead of state slice
Massage the internal APIs to use a string slice instead of a state slice
for passing wait conditions.  This paves the way for waiting on
non-state conditions such as "healthy".

Signed-off-by: Valentin Rothberg <vrothberg@redhat.com>
2023-06-23 09:26:30 +02:00
Paul Holzinger 614c962c23
use libnetwork/slirp4netns from c/common
Most of the code moved there so if from there and remove it here.

Some extra changes are required here. This is a bit of a mess. The pipe
handling makes this a bit more difficult.

[NO NEW TESTS NEEDED] This is just a rework, existing tests must pass.

Signed-off-by: Paul Holzinger <pholzing@redhat.com>
2023-06-22 11:16:13 +02:00
Giuseppe Scrivano bb932cc840
cmd, push: expose --compression-level
This patch adds the --compression-level option to the push command.

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

Signed-off-by: Giuseppe Scrivano <gscrivan@redhat.com>
2023-06-21 14:28:16 +02:00
OpenShift Merge Robot cc023c09e9
Merge pull request #18931 from vrothberg/lint
bump golangci-lint to v1.53.3
2023-06-20 06:01:50 -04:00
OpenShift Merge Robot b2d9bd9e3e
Merge pull request #18927 from chuanchang/fix_docs_issue_in_image_store
cmd/podman/root.go: fix help document issue of the image store
2023-06-20 02:33:32 -04:00
OpenShift Merge Robot 772f82ee67
Merge pull request #18917 from Luap99/ip-range
network create --ip-range allow for custom range
2023-06-19 15:02:48 -04:00
Valentin Rothberg 60a5a59475 make lint: enable mirror
Helpful reports to avoid unnecessary allocations.

Signed-off-by: Valentin Rothberg <vrothberg@redhat.com>
2023-06-19 14:11:12 +02:00
Alex Jia acb5f97f9d cmd/podman/root.go: fix help document issue of the image store
[NO NEW TESTS NEEDED]

Signed-off-by: Alex Jia <chuanchang.jia@gmail.com>
2023-06-19 14:47:08 +08:00
OpenShift Merge Robot feea6663ee
Merge pull request #18828 from rhatdan/quadlet
quadlet should exit non zero on failures
2023-06-18 02:39:20 -04:00
Aditya R 3829fbd35a
podman: add support for splitting imagestore
Add support for `--imagestore` in podman which allows users to split the filesystem of containers vs image store, imagestore if configured will pull images in image storage instead of the graphRoot while keeping the other parts still in the originally configured graphRoot.

This is an implementation of
https://github.com/containers/storage/pull/1549 in podman.

Signed-off-by: Aditya R <arajan@redhat.com>
2023-06-17 08:51:08 +05:30
Paul Holzinger e292748534
network create --ip-range allow for custom range
The backend allows for any start/end ip in the subnet. There is no
reason to limit the cli to only CIDR subnets. This allows for much more
flexibility.

Signed-off-by: Paul Holzinger <pholzing@redhat.com>
2023-06-16 17:57:17 +02:00
Daniel J Walsh bfe61af6d7
quadlet should exit non zero on failures
Fixes: #18778

Signed-off-by: Daniel J Walsh <dwalsh@redhat.com>
2023-06-15 19:12:17 -04:00
Lokesh Mandvekar 3efaffae43
New command: podmansh
This commit creates a new command `podmansh` command which can be used by
administrators to provide a confined shell to their users.

The user will only have access to the volumes and capabilities for that
user.

Co-authored-by: Paul Holzinger <pholzing@redhat.com>
Co-authored-by: Daniel Walsh <dwalsh@redhat.com>
Co-authored-by: Petr Lautrbach <lautrbach@redhat.com>
Co-authored-by: Ed Santiago <santiago@redhat.com>

Signed-off-by: Lokesh Mandvekar <lsm5@fedoraproject.org>
2023-06-15 08:14:12 -04:00
OpenShift Merge Robot 3cae574ab2
Merge pull request #18507 from mheon/fix_rm_depends
Fix `podman rm -fa` with dependencies
2023-06-12 13:27:34 -04:00
Jan Hendrik Farr 8bf168cc13
Add ability to set static routes
add routes using the --route flag.
the no_default_route option in --opt prevents a default route from
getting added automatically.

Signed-off-by: Jan Hendrik Farr <github@jfarr.cc>
2023-06-12 10:31:59 +02:00
Matthew Heon 398e48a24a Change Inherit to use a pointer to a container
This fixes a lint issue, but I'm keeping it in its own commit so
it can be reverted independently if necessary; I don't know what
side effects this may have. I don't *think* there are any
issues, but I'm not sure why it wasn't a pointer in the first
place, so there may have been a reason.

Signed-off-by: Matthew Heon <matthew.heon@pm.me>
2023-06-07 14:09:07 -04:00
OpenShift Merge Robot c99d42b8e4
Merge pull request #18798 from edsantiago/fix_filters
filters: better handling of id=
2023-06-07 12:31:11 -04:00
OpenShift Merge Robot 76f4571b71
Merge pull request #18796 from mheon/lock_debugging
Add support for lock debugging
2023-06-07 08:21:17 -04:00
Ed Santiago 992093ae91 filters: better handling of id=
For filter=id=XXX (containers, pods) and =ctr-ids=XXX (pods):

  if XXX is only hex characters, treat it as a PREFIX
  otherwise, treat it as a REGEX

Add tests. Update documentation. And fix an incorrect help message.

Fixes: #18471

Signed-off-by: Ed Santiago <santiago@redhat.com>
2023-06-07 05:29:06 -06:00
Matt Heon 944673c883 Address review feedback and add manpage notes
The inspect format for `.LockNumber` needed to be documented.

Signed-off-by: Matt Heon <mheon@redhat.com>
2023-06-06 11:04:59 -04:00
Matt Heon 4fda7936c5 `system locks` now reports held locks
To debug a deadlock, we really want to know what lock is actually
locked, so we can figure out what is using that lock. This PR
adds support for this, using trylock to check if every lock on
the system is free or in use. Will really need to be run a few
times in quick succession to verify that it's not a transient
lock and it's actually stuck, but that's not really a big deal.

Signed-off-by: Matt Heon <mheon@redhat.com>
2023-06-05 19:34:36 -04:00
Matt Heon 0948c078c2 Add a new hidden command, podman system locks
This is a general debug command that identifies any lock
conflicts that could lead to a deadlock. It's only intended for
Libpod developers (while it does tell you if you need to run
`podman system renumber`, you should never have to do that
anyways, and the next commit will include a lot more technical
info in the output that no one except a Libpod dev will want).
Hence, hidden command, and only implemented for the local driver
(recommend just running it by SSHing into a `podman machine` VM
in the unlikely case it's needed by remote Podman).

These conflicts should normally never happen, but having a
command like this is useful for debugging deadlock conditions
when they do occur.

Signed-off-by: Matt Heon <mheon@redhat.com>
2023-06-05 14:47:12 -04:00
OpenShift Merge Robot eec15a108a
Merge pull request #18657 from arizvisa/GH-18120
Added the "--out" parameter and fixed an issue with "--noout" which prevented stdout from being written to.
2023-06-05 14:34:21 -04:00
Matthew Heon 8cb5d39d43 Pods now return what containers were removed with them
This probably should have been in the API since the beginning,
but it's not too late to start now.

The extra information is returned (both via the REST API, and to
the CLI handler for `podman rm`) but is not yet printed - it
feels like adding it to the output could be a breaking change?

Signed-off-by: Matthew Heon <matthew.heon@pm.me>
2023-06-01 16:24:59 -04:00
OpenShift Merge Robot af5b1d6e80
Merge pull request #18643 from eriksjolund/use-imperative-form
man pages and command help: unify verb forms
2023-05-31 11:16:23 -04:00
Paul Holzinger 370e1132ce
completion: fix panic in simplePathJoinUnix()
When we do path completion in images a user could try to complete a
simple relative path, e.g. podman run $IMAGE e... should complete to etc
if this path exists in the image. Right now we panic in this case as the
current check didn't account for an empty string in simplePathJoinUnix().
In such a case return the path directly because we can not alter what
the user typed on the cli and must return a path without slash as well
in order for the shell to suggest the completion.

Fixes https://bugzilla.redhat.com/show_bug.cgi?id=2209809

Signed-off-by: Paul Holzinger <pholzing@redhat.com>
2023-05-30 16:09:19 +02:00
Erik Sjölund de92db0c81 man pages and command help: clean up descriptions
Short description in man pages:
* Use imperative form

Command help (cobra.Command.Short):
* Capitalize first letter
* Use imperative form
* Remove ending full stop when the short description
  only contains one sentence without any commas

Command help (cobra.Command.Long):
* Capitalize first letter unless the sentence starts
  with a command "podman command ..."
* Use imperative form when the long description is
  identical or almost identical to the short description.
  This modification was only done in a few places.

Command tables:
* Use imperative form in the "Description" column

[NO NEW TESTS NEEDED]

Signed-off-by: Erik Sjölund <erik.sjolund@gmail.com>
2023-05-28 18:57:43 +02:00
OpenShift Merge Robot 1210efc44d
Merge pull request #18689 from 89luca89/fix/filter_flags
fix: move filter flags from StringSliceVar to StringArrayVar
2023-05-26 07:57:51 -04:00
Luca Di Maio 047a4bc830
fix: volume create filters
Signed-off-by: Luca Di Maio <luca.dimaio1@gmail.com>
2023-05-25 21:34:53 +02:00
Luca Di Maio 0be9887afc
fix: move filter flags from StringSliceVar to StringArrayVar
Signed-off-by: Luca Di Maio <luca.dimaio1@gmail.com>
2023-05-25 16:53:14 +02:00
Valentin Rothberg 08b0d93ea3 kube play: exit-code propagation
Implement means for reflecting failed containers (i.e., those having
exited non-zero) to better integrate `kube play` with systemd.  The
idea is to have the main PID of `kube play` exit non-zero in a
configurable way such that systemd's restart policies can kick in.

When using the default sdnotify-notify policy, the service container
acts as the main PID to further reduce the resource footprint.  In that
case, before stopping the service container, Podman will lookup the exit
codes of all non-infra containers.  The service will then behave
according to the following three exit-code policies:

 - `none`: exit 0 and ignore containers (default)
 - `any`: exit non-zero if _any_ container did
 - `all`: exit non-zero if _all_ containers did

The upper values can be passed via a hidden `kube play
--service-exit-code-propagation` flag which can be used by tests and
later on by Quadlet.

In case Podman acts as the main PID (i.e., when at least one container
runs with an sdnotify-policy other than "ignore"), Podman will continue
to wait for the service container to exit and reflect its exit code.

Note that this commit also fixes a long-standing annoyance of the
service container exiting non-zero.  The underlying issue was that the
service container had been stopped with SIGKILL instead of SIGTERM and
hence exited non-zero.  Fixing that was a prerequisite for the exit-code
propagation to work but also improves the integration of `kube play`
with systemd and hence Quadlet with systemd.

Jira: issues.redhat.com/browse/RUN-1776
Signed-off-by: Valentin Rothberg <vrothberg@redhat.com>
2023-05-25 14:46:34 +02:00
OpenShift Merge Robot b15510694b
Merge pull request #18649 from Luap99/network-create-dns
network create/update: allow dns servers comma separated
2023-05-22 12:02:08 -04:00
Paul Holzinger 7d831d555c
network create/update: allow dns servers comma separated
The examples show that --dns-add 8.8.8.8,1.1.1.1 is valid but it fails,
fix this by using StringSliceVar which splits at commas.
Added tests to ensure it is working.

Fixes #18632

Signed-off-by: Paul Holzinger <pholzing@redhat.com>
2023-05-22 13:30:39 +02:00
Erik Sjölund 685c736185 source code comments and docs: fix typos, language, Markdown layout
- fix a/an before noun
- fix loose -> lose
- fix "the the"
- fix lets -> let's
- fix Markdown layout
- fix a few typos
- remove unnecessary text in troubleshooting.md

Signed-off-by: Erik Sjölund <erik.sjolund@gmail.com>
2023-05-22 07:52:16 +02:00
OpenShift Merge Robot a8291227de
Merge pull request #18620 from HirazawaUi/find_slirp4netns_from_helper_binaries_dir
podman: Added find slirp4netns binary file from helper_binaries_dir
2023-05-20 06:18:07 -04:00
binghongtao 29749362a0
podman: Added find slirp4netns binary file from helper_binaries_dir
[NO NEW TESTS NEEDED]

Fixes: #18568
Signed-off-by: binghongtao <695097494plus@gmail.com>
2023-05-20 03:17:22 +08:00
Urvashi Mohnani 5ff6fc5596 Add --configmap to podman-remote kube play
Enable the --configmap flag for the remote case of podman
kube play. Users can pass in the paths to the configmap files
for kube play to use when creating the pods and containers from
a kube yaml file. The configmap file is read and the contents are
appended to the contents of the main yaml file before passed to the
remote client.

Signed-off-by: Urvashi Mohnani <umohnani@redhat.com>
2023-05-17 14:23:55 +00:00
OpenShift Merge Robot 07d2fbcd52
Merge pull request #18567 from ashley-cui/doc
[CI:DOCS] Document podman-machine-default behavior
2023-05-16 03:05:21 -04:00
Ashley Cui b9aaafbe17 Document podman-machine-default behavior
When no name arg is given to Podman machine commands, Podman assumes the machine name is podman-machine-default. Document this behavior.

Signed-off-by: Ashley Cui <acui@redhat.com>
2023-05-15 14:23:17 -04:00
OpenShift Merge Robot 4c399fc6fb
Merge pull request #18554 from n1hility/sync-docker-sock
Sync machine docker.sock according to rootful flag
2023-05-15 13:25:58 -04:00
Daniel Rudolf ae5cbf37cf
Fix documentation of `--network-cmd-path` CLI option
The `--network-cmd-path` CLI option only affects rootless networks using `slirp4netns(1)`, not `pasta(1)`.  Following #18568 Podman should rather use the more generic `r.config.FindHelperBinary()` method (and therefore honour the `helper_binaries_dir` config) to find the path to the `slirp4netns` binary and deprecate the misleading `--network-cmd-path` CLI option.  However, since this wasn't implemented yet we can't deprecate `--network-cmd-path` as of now.  Adding a note anyway.

Fixes #18560

Signed-off-by: Daniel Rudolf <github.com@daniel-rudolf.de>
2023-05-15 17:47:40 +02:00
Jason T. Greene 5a176f09c2 Set machine docker.sock according to rootful flag
Signed-off-by: Jason T. Greene <jason.greene@redhat.com>
2023-05-14 23:56:15 -05:00
OpenShift Merge Robot 1a78a4e16f
Merge pull request #18489 from bachradsusi/quadlets-precedence
Fix preference of user quadlets directories
2023-05-09 08:29:42 -04:00
Petr Lautrbach bdb3ed7950 Fix preference of user quadlets directories
If there's a container defined in multiple directories use the following
precedence:

$XDG_CONFIG_HOME/containers/systemd/ or ~/.config/containers/systemd/
takes precedence over /etc/containers/systemd/users/$(UID) and this
takes precedence over /etc/containers/systemd/users/

Signed-off-by: Petr Lautrbach <lautrbach@redhat.com>
2023-05-09 12:06:38 +02:00
Daniel J Walsh 332b47fefb
Check on client side for Containerfile, if none specified
Fixes: https://github.com/containers/podman/issues/16354

Currently we check on the server side, which ends up generating a bad
error message.

$ podman --remote build foo/
ERRO[0000] While reading directory /home/dwalsh/go/src/github.com/containers/podman/foo: EOF
Error: stat /var/tmp/libpod_builder1249622306/build/Dockerfile: no such file or directory

With this change you will get

./bin/podman --remote build foo/
Error: Containerfile not specified and no Containerfile or Dockerfile found in context directory, /home/dwalsh/podman/foo

Signed-off-by: Daniel J Walsh <dwalsh@redhat.com>
2023-05-08 13:58:37 -04:00
Daniel J Walsh 73d3487cce
Allow user quadlets to be stored under /etc
I would like to allow admin to control quadlet containers
in users homedirs.

If an admin sets a quadlet in
/etc/containers/systemd/users, then all users will run these
quadlet services when they login.

If an admin places a quadlet in /etc/containers/systemd/users/$(USERNAME)
then only the USERNAME will execute this quadlet service when
they login.

Signed-off-by: Daniel J Walsh <dwalsh@redhat.com>
2023-05-04 10:06:41 -04:00
OpenShift Merge Robot b98960d1cb
Merge pull request #18441 from Luap99/remote-connect-err
remote: return better connect error
2023-05-03 18:27:34 -04:00
Paul Holzinger df8cc7af33
remote: return better connect error
We have a spacial logic to create a better user error that hints at
podman machine, however because we string matched it missed the case of
the ssh connection.

Stop doing string comparison and return a proper error and match it with
errors.As()

[NO NEW TESTS NEEDED]

see https://github.com/containers/podman/discussions/18426

Signed-off-by: Paul Holzinger <pholzing@redhat.com>
2023-05-03 18:19:58 +02:00
OpenShift Merge Robot cf29dad400
Merge pull request #18402 from baude/applehvpass1
MVP for Podman Machine with AppleHV
2023-05-03 10:17:51 -04:00
OpenShift Merge Robot a4e37ad659
Merge pull request #18354 from Luap99/reset
system reset: show graphRoot/runRoot before removal
2023-05-03 05:26:01 -04:00
Brent Baude dc7515dc32 MVP for Podman Machine with AppleHV
this pr is the first pass at enabling podman machine to use the apple hypervisor. there are still several TODO
areas like host networking.  once the decision is handled on what host networking should look like, these TODOs
should be fairly quick to resolve.  they also will impact the remove methods.

you must also have vfkit (https://github.com/crc-org/vfkit)

Signed-off-by: Brent Baude <bbaude@redhat.com>

[NO NEW TESTS NEEDED]

Signed-off-by: Brent Baude <bbaude@redhat.com>
2023-05-02 13:09:56 -05:00
Urvashi Mohnani db4ad54f92 Add {{.Restarts}} to podman pod ps
Add Restarts column to the podman pod ps output to show the total number
of times the containers in a pod were restarted. This is the same as the
restarts column displayed by kubernetes with kubectl get pods. This will
only be displayed when --format={{.Restarts}}.

Signed-off-by: Urvashi Mohnani <umohnani@redhat.com>
2023-05-02 10:30:07 -04:00
Urvashi Mohnani 0fef113a4b Add {{.Restarts}} to podman ps
Add Restarts column to the podman ps output to show how many times a
container was restarted based on its restart policy. This column will be
displayed when --format={{.Restarts}}.

Signed-off-by: Urvashi Mohnani <umohnani@redhat.com>
2023-05-02 10:30:07 -04:00
Urvashi Mohnani edbeee5238 Add --restart flag to pod create
Add --restart flag to pod create to allow users to set the
restart policy for the pod, which applies to all the containers
in the pod. This reuses the restart policy already there for
containers and has the same restart policy options.
Add "never" to the restart policy options to match k8s syntax.
It is a synonym for "no" and does the exact same thing where the
containers are not restarted once exited.
Only the containers that have exited will be restarted based on the
restart policy, running containers will not be restarted when an exited
container is restarted in the same pod (same as is done in k8s).

Signed-off-by: Urvashi Mohnani <umohnani@redhat.com>
2023-05-02 10:29:58 -04:00
OpenShift Merge Robot 1c9d0330c5
Merge pull request #18395 from flouthoc/manifest-push-merge-dest
manifest, push: use `source` as `destination` if not specified
2023-05-02 04:17:22 -04:00
OpenShift Merge Robot cd9a95922f
Merge pull request #18359 from Luap99/machine-connection
machine: qemu only remove connection after confirmation
2023-05-01 13:07:56 -04:00
OpenShift Merge Robot cda2b6e7ea
Merge pull request #18379 from giuseppe/small-fixes
some small fixes
2023-05-01 10:36:34 -04:00
Aditya R bab4217cd1
manifest, push: use source as destination if not specified
`manifest push <source>` must work as-is if `source` is actually a valid
path and no destination is provided, `podman` must internally choose
`source` as its `destination` just like `podman push`

See: https://github.com/containers/podman/blob/main/cmd/podman/images/push.go#L161
Closes: https://github.com/containers/podman/issues/18360

Signed-off-by: Aditya R <arajan@redhat.com>
2023-05-01 17:04:11 +05:30
Arthur Sengileyev b5ef9555ab Implement machine provider selection
GetSystemDefaultProvider reworked to fetch provider value from
the config file.

Additional environment variable CONTAINERS_MACHINE_PROVIDER is
supported to override the config for testing purposes.

Signed-off-by: Arthur Sengileyev <arthur.sengileyev@gmail.com>
2023-04-28 17:47:10 +03:00
Giuseppe Scrivano 891bc117e4
podman: simplify code with a switch
simplify the readerFromArg to avoid the same boilerplate code.

Signed-off-by: Giuseppe Scrivano <gscrivan@redhat.com>
2023-04-27 22:07:56 +02:00
OpenShift Merge Robot 129c075669
Merge pull request #18363 from leo8a/patch-1
Update short description for disconnect cmd
2023-04-27 09:33:53 -04:00
Leo Ochoa 33fa54580e
Update short description for disconnect cmd
[NO NEW TESTS NEEDED]

Signed-off-by: Leo Ochoa <lochoa@redhat.com>
2023-04-27 13:33:28 +02:00
OpenShift Merge Robot 832b098471
Merge pull request #18303 from n1hility/user-mode
Add user-mode networking feature to Windows/WSL
2023-04-26 16:01:48 -04:00
Paul Holzinger 64959b744f
pkg/machine: rework RemoveConnection()
It really does not make sense to call RemoveConnection() twice and then
update the config file a third time in updateDefaultMachineinConfig().
This results in unnecessary reads/writes and more code.

Simplyfy this into one function that is only called once and do all
updates at once.

[NO NEW TESTS NEEDED]

Signed-off-by: Paul Holzinger <pholzing@redhat.com>
2023-04-26 16:57:22 +02:00
Paul Holzinger 6aaf6a2843
system reset: show graphRoot/runRoot before removal
system reset it says it will delete containers, images, networks, etc...
However it will also delete the graphRoot and runRoot directories.
Normally this is not an issue, however in same cases these directories
were set to the users home directory or some other important system
directory.

As first step simply show the directories that are configured and thus
will be deleted by reset. As future step we could implement some
safeguard will will not delete some known important directories however
I tried to keep it simple for now.

[NO NEW TESTS NEEDED]

see #18349 and #18295

Signed-off-by: Paul Holzinger <pholzing@redhat.com>
2023-04-26 16:02:59 +02:00
huangyanfeng e95e9be76b fix manifest annotate help
[NO NEW TESTS NEEDED]
Signed-off-by: huangyanfeng <huangyanfeng1992@gmail.com>
2023-04-26 11:15:29 +08:00
OpenShift Merge Robot 0cf423f1dd
Merge pull request #18313 from c4rlo/patch-1
system/reset.go: help: fix typo
2023-04-25 05:19:15 -04:00
Jason T. Greene 230ddbe0ca Add user mode networking feature to Windows
Signed-off-by: Jason T. Greene <jason.greene@redhat.com>
2023-04-24 17:11:54 -05:00
Carlo Teubner 3216110de7 system/reset.go: help: fix typo
[NO NEW TESTS NEEDED]

Signed-off-by: Carlo Teubner <435950+c4rlo@users.noreply.github.com>
2023-04-24 22:08:11 +01:00
Paul Holzinger c5a928c5b7
ps: --format {{.State}} match docker output
We should return the raw state string without any extra formatting in
this case.
`{{.Status}}` returns the nicely formatted string used in the default ps
output, e.g. `Up 2 seconds ago`, while `{{.State}}` returns the state as
string, e.g. `running`.

This matches the docker output and allows better use in scripts.

Fixes #18244

Signed-off-by: Paul Holzinger <pholzing@redhat.com>
2023-04-24 14:18:26 +02:00
Jason T. Greene fb3b92b969 Eliminate transient container deps from wslkerninst
Resolves Win Installer CI issues where dep processing variance can
pull in gpgme, which doesn't compile on Windows without a
specialized msys2 setup.

Signed-off-by: Jason T. Greene <jason.greene@redhat.com>
2023-04-23 17:11:55 -05:00
Tobias Klauser 70bd096e47
cmd/podman/pods: omit superfluous runtime.NumCPU call
sysinfo.NumCPU already falls back to runtime.NumCPU in case the
platform-specific sysinfo.numCPU returns 0, see
554799639f/pkg/sysinfo/numcpu.go (L8-L13)

Also omit a second call to sysinfo.NumCPU and use the result from the
earlier call.

[NO NEW TESTS NEEDED]

Signed-off-by: Tobias Klauser <tklauser@distanz.ch>
2023-04-21 14:28:56 +02:00
openshift-ci[bot] 1821f97ade
Merge pull request #18284 from vrothberg/fix-18216
support `--digestfile` for remote push
2023-04-21 10:24:15 +00:00
Valentin Rothberg 1f1525f2e1 support `--digestfile` for remote push
Wire in support for writing the digest of the pushed image to a
user-specified file.  Requires some massaging of _internal_ APIs
and the extension of the push endpoint to integrate the raw manifest
(i.e., in bytes) in the stream.

Closes: #18216
Signed-off-by: Valentin Rothberg <vrothberg@redhat.com>
2023-04-21 10:28:40 +02:00
rbagd 6e0cf93447 Fixes format inconsistencies with docker for certain history fields
Closes #17767
Closes #17768

System test for image list and history dates

* Changed field separator in the test to `;` for easier parsing
* Converted date output from image history and image list to be comparable

Signed-off-by: rbagd <mail@rbagd.eu>
2023-04-19 00:20:47 +02:00
Park Jaeon d38b22d507
fix: Document removing anonymous volumes at create
[NO NEW TESTS NEEDED]
Signed-off-by: Park Jaeon <me@finalchild.dev>
2023-04-12 09:44:50 +09:00
OpenShift Merge Robot 3a47342a6a
Merge pull request #18002 from Luap99/netavark-plugin
add netavark plugin support
2023-04-11 13:37:43 -04:00
Ali Rizvi-Santiago bb2deef8e1 podman: added the --out option for capturing formatted output emitted by various commands
Commands like podman-create(1), podman-run(1), podman-inspect(1),
podman-ps(1) will emit formatted output upon success. This allows
the output from commands to be emitted directly to a file and
can supersede the --noout parameter by using /dev/null. An issue
with --noout was also remedied.

This closes issue #18120.

Signed-off-by: Ali Rizvi-Santiago <arizvisa@gmail.com>
2023-04-11 10:41:13 -05:00
Paul Holzinger ed99a979ce
network create: add --interface-name
Allow users to customize the network_interface option is the network
config. For bridge this allows users to change the bridge name and for
maclvan it will be the same as `--opt parent=...`.
However the main reason for this option is to allow netavark plugins to
make use of it. I demoed the host-device plugin which makes use of this
as an example. While we could let users set them via --opt it is more
natural to just use the field which is designed for that purpose.

Signed-off-by: Paul Holzinger <pholzing@redhat.com>
2023-04-11 17:04:33 +02:00
Urvashi Mohnani 1bf5bdc689 Read kube_generate_type from containers.conf
Use the kube_generate_type from the containers.conf as
the default value for the --type flag for kube generate.
Override the default when userexplicitly sets the --type
flag.

Signed-off-by: Urvashi Mohnani <umohnani@redhat.com>
2023-04-11 09:15:05 -04:00
Aditya R 944accffaf
build: pass env by reference
Buildah uses a different logic to pass environment variable to executor
now after: https://github.com/containers/buildah/pull/4702/files so
podman should same logic and pass env by reference.

Signed-off-by: Aditya R <arajan@redhat.com>
2023-04-10 20:31:23 +05:30
Aditya R 260bc3ec4c
vendor: bump containers/(storage, common, buildah, image)
Bump containers/(storage, common, buildah and image)

Changes since 2023-01-01:
 - skip mount-cache-selinux-long-name test under remote, with
   a FIXME requesting that someone see if it can be made to work.

 - skip six tests that fail under rootless-remote

 - add new --build-arg-file option:
 - update man page

Squash of:
* cf56eb1865
* 561f082772

Signed-off-by: Ed Santiago <santiago@redhat.com>
Signed-off-by: Daniel J Walsh <dwalsh@redhat.com>
Signed-off-by: Aditya R <arajan@redhat.com>
2023-04-10 17:30:14 +05:30
Eng Zer Jun 35165df37b
chore: replace `github.com/ghodss/yaml` with `sigs.k8s.io/yaml`
At the time of making this commit, the package `github.com/ghodss/yaml`
is no longer actively maintained.

`sigs.k8s.io/yaml` is a permanent fork of `ghodss/yaml` and is actively
maintained by Kubernetes SIG.

Signed-off-by: Eng Zer Jun <engzerjun@gmail.com>
2023-04-06 21:11:17 +08:00
OpenShift Merge Robot e179079351
Merge pull request #18038 from vrothberg/quadlet-version
add `quadlet -version` flag
2023-04-04 09:01:00 -04:00
Valentin Rothberg 243ca7c280 add `quadlet -version` flag
I recently wanted to check which version of Quadlet I was using and
found a `-version` flag to be missing.  Since Quadlet and Podman are
bundled together, it seems reasonable to me for them to share the same
version.

Signed-off-by: Valentin Rothberg <vrothberg@redhat.com>
2023-04-04 11:32:47 +02:00
Valentin Rothberg 53b16ccd26 quadlet: use `Flag` suffix for variables
Purely cosmetic change for consistency.

[NO NEW TESTS NEEDED]  as it doesn't change functionality.

Signed-off-by: Valentin Rothberg <vrothberg@redhat.com>
2023-04-04 09:55:14 +02:00
OpenShift Merge Robot 98933456bc
Merge pull request #17950 from umohnani8/deployments
Support Deployment generation with kube generate
2023-04-03 11:08:29 -04:00
Ygal Blum 68dbddd979 Add support for secret exists
Add the command along with the abi and tunnel support
Add e2e tests
Add man page
Add apiv2 test to ensure return codes

Signed-off-by: Ygal Blum <ygal.blum@gmail.com>
2023-04-03 15:33:50 +03:00
Urvashi Mohnani 4f90194068 Support Deployment generation with kube generate
The podman kube generate command can now generate a
Deployment kind when the --ype flag is set to deployment.
By default, a Pod spec will be generated if --type flag is
not set.
Add --replicas flag to kube generate to allow users to set
the value of replicas in the generated yaml when generating a
Deployment kind.
Add e2e and minikube tests for this feature.

Signed-off-by: Urvashi Mohnani <umohnani@redhat.com>
2023-03-31 13:34:38 -04:00
Paul Holzinger 4f3cbf15cf
podman-mac-helper: install: do not error if already installed
Since commit bae07b6ea2 we exit with 1 one errors. This caused problem
for the mac installer which fails because of the error now.
If the helper is already installed do not treat this as hard error and
just log it instead.

Signed-off-by: Paul Holzinger <pholzing@redhat.com>
2023-03-24 15:34:30 +01:00
Daniel J Walsh 5f274e45f2
Run make codespell
Signed-off-by: Daniel J Walsh <dwalsh@redhat.com>
2023-03-21 16:00:54 -04:00
OpenShift Merge Robot 060c125b78
Merge pull request #17838 from baude/addhv1
basic hypverv machine implementation
2023-03-20 10:40:30 -04:00
OpenShift Merge Robot 9ddd4f4abd
Merge pull request #17600 from sstosh/search-auth-opts
Add search --cert-dir, --creds
2023-03-20 04:00:04 -04:00
Brent Baude 0dac214f56 basic hypverv machine implementation
with libhvee, we are able to do the basics of podman machine management
on hyperv.  The basic functions like init, rm, stop, and start are all
functional.  Start and stop will periodically throw a benign error
processing the hyperv message being returned from the action.  The error
is described in the todo's below.

notable items:

* no podman commands will work (like ps, images, etc)
* the machine must be initialized with --image-path and fed a custom image.
* disk size is set to 100GB statically.
* the vm joins the default hyperv network which is TCP/IP network based.
* podman machine ssh does not work
* podman machine set does not work
* you can grab the ip address from hyperv and fake a machine connection
  with `podman system connection`.
* when booting, use the hyperv console to know the boot is complete.

TODOs:
* podman machine ssh
* podman machine set
* podman machine rm needs force bool
* disk size in NewMachine is set to 100GB
* podman start needs to wait until fully booted
* establish a boot complete signal from guest
* implement gvproxy like user networking
* fix benign failures in stop/start -> Error: error 2147749890 (FormatMessage failed with: The system cannot find message text for message number 0x%1 in the message file for %2.)

[NO NEW TESTS NEEDED]

Signed-off-by: Brent Baude <bbaude@redhat.com>
2023-03-17 16:02:28 -05:00
OpenShift Merge Robot 2718f54a29
Merge pull request #17729 from rhatdan/selinux
Support running nested SELinux container separation
2023-03-15 12:07:03 -04:00
Toshiki Sonoda 82f2f8258c Add search --cert-dir, --creds
When we searching any image at a container registry,
--cert-dir and --creds could be required
as well as push, pull, etc.

Signed-off-by: Toshiki Sonoda <sonoda.toshiki@fujitsu.com>
2023-03-15 15:01:26 +09:00
OpenShift Merge Robot 68bf49799d
Merge pull request #17786 from Luap99/mac-helper-error
podman-mac-helper: exit 1 on error
2023-03-14 18:21:33 -04:00
Paul Holzinger bae07b6ea2
podman-mac-helper: exit 1 on error
We should return a proper exit code to signal the failure.

[NO NEW TESTS NEEDED] We do have any tests on macOS.

Fixes #17785

Signed-off-by: Paul Holzinger <pholzing@redhat.com>
2023-03-14 17:56:22 +01:00
Valentin Rothberg 4562e61d20 podman events: unhide --stream
The --stream flag is being used extensively in the tests and some blog
posts refer to it which has been causing some confusion on why the flag
was hidden.  I do not see a good reason to hide it anymore, so unhide it
and add some docs.

[NO NEW TESTS NEEDED] as it's already being tested.

Signed-off-by: Valentin Rothberg <vrothberg@redhat.com>
2023-03-14 11:26:50 +01:00
Daniel J Walsh ad8a96ab95
Support running nested SELinux container separation
Currently Podman prevents SELinux container separation,
when running within a container. This PR adds a new
--security-opt label=nested

When setting this option, Podman unmasks and mountsi
/sys/fs/selinux into the containers making /sys/fs/selinux
fully exposed. Secondly Podman sets the attribute
run.oci.mount_context_type=rootcontext

This attribute tells crun to mount volumes with rootcontext=MOUNTLABEL
as opposed to context=MOUNTLABEL.

With these two settings Podman inside the container is allowed to set
its own SELinux labels on tmpfs file systems mounted into its parents
container, while still being confined by SELinux. Thus you can have
nested SELinux labeling inside of a container.

Signed-off-by: Daniel J Walsh <dwalsh@redhat.com>
2023-03-13 14:21:12 -04:00
OpenShift Merge Robot 76642d5ad3
Merge pull request #17684 from giuseppe/version-no-userns
cmd: do not require userns for "version"
2023-03-03 16:56:05 +01:00
OpenShift Merge Robot 3f0f558609
Merge pull request #17677 from vyasgun/pr/system-default-connection
fix: update the default machine value when the previously set default machine is deleted
2023-03-03 14:50:12 +01:00
Giuseppe Scrivano 0498ce3a56
cmd: do not require userns for "version"
Closes: https://github.com/containers/podman/issues/17657

[NO NEW TESTS NEEDED]

Signed-off-by: Giuseppe Scrivano <gscrivan@redhat.com>
2023-03-03 14:27:54 +01:00
Giuseppe Scrivano 2860d55c97
cmd: drop special handling for "scp"
Signed-off-by: Giuseppe Scrivano <gscrivan@redhat.com>
2023-03-03 14:27:54 +01:00
Giuseppe Scrivano da04469f06
cmd: clarify meaning of ParentNSRequired
there are no commands that are not supported by rootless mode, but
some commands require to run in the user namespace.

Signed-off-by: Giuseppe Scrivano <gscrivan@redhat.com>
2023-03-03 14:27:54 +01:00
Valentin Rothberg e77f370f86 sqlite: add a hidden --db-backend flag
Add a hidden flag to set the database backend and plumb it into
podman-info.  Further add a system test to make sure the flag and the
info output are working properly.

Note that the test may need to be changed once we settled on how
to test the sqlite backend in CI.

Signed-off-by: Valentin Rothberg <vrothberg@redhat.com>
2023-03-02 13:43:11 +01:00
vyasgun cca65db01d fix: update the default machine value when the previously set default machine is deleted
[NO NEW TESTS NEEDED]

Fixes: https://github.com/containers/podman/issues/16483
Signed-off-by: vyasgun <vyasgun20@gmail.com>
2023-03-02 11:06:56 +05:30
OpenShift Merge Robot 8457bb5542
Merge pull request #16717 from umohnani8/detach
play kube: Add --wait option
2023-03-01 16:46:54 +01:00
OpenShift Merge Robot 02a77d27a2
Merge pull request #17450 from danishprakash/add-group-entry
create: add entry to /etc/group via `--group-entry`
2023-02-28 21:59:59 +01:00
Urvashi Mohnani 20a42d0e4f play kube: Add --wait option
Add a way to keep play kube running in the foreground and terminating all pods
after receiving a a SIGINT or SIGTERM signal. The pods will also be
cleaned up after the containers in it have exited.
If an error occurrs during kube play, any resources created till the
error point will be cleane up also.

Add tests for the various scenarios.

Fixes #14522

Signed-off-by: Urvashi Mohnani <umohnani@redhat.com>
2023-02-28 13:45:36 -05:00
Giuseppe Scrivano 4b3b944733
system: add warning when running rootless on cgroupv1
when running rootless on cgroupv1, Podman+OCI runtime do not setup a
separate cgroup for the container.  Spawned containers will run in the
same cgroup as the podman system service process, thus will be killed
when the cgroup is destroyed, as it is the case when running as a
systemd service.

[NO NEW TESTS NEEDED]

Closes: https://bugzilla.redhat.com/show_bug.cgi?id=2170444

Signed-off-by: Giuseppe Scrivano <gscrivan@redhat.com>
2023-02-23 11:28:05 +01:00