Commit graph

16223 commits

Author SHA1 Message Date
Miloslav Trmač
752eceaecc Support (image trust show) for sigstoreSigned entries
sigstoreSigned does not have GPG IDs, so we add N/A in that column.

NOTE: this does not show the use-sigstore-attachments value from
registries.d.

Signed-off-by: Miloslav Trmač <mitr@redhat.com>
2022-08-25 01:52:59 +02:00
Miloslav Trmač
b36a1d1b79 BREAKING CHANGE: Change how (podman image trust show) represents multiple requirements
Currently
- the output uses the first entry's type, even if the requirements are different
  (notably signedBy + sigstoreSIgned)
- all public keys IDs are collected to a single line, even if some of them
  are interchangeable, and some are required (e.g. two signedBy requirements
  could require an image to be signed by (redhatProd OR redhatBeta) AND (vendor1 OR vendor2)

So, stop collapsing the requirements, and return a separate entry for each one. Multiple
GPG IDs on a single line used to mean AND or OR, now they always mean AND.

Signed-off-by: Miloslav Trmač <mitr@redhat.com>
2022-08-25 01:52:59 +02:00
Miloslav Trmač
bba306788a Reorganize descriptionsOfPolicyRequirements a bit
Do the registries.d lookup once, separately from building
an entry, so that we can share it across entries.

Also prepare a separate res to allow adding multiple entries.

Signed-off-by: Miloslav Trmač <mitr@redhat.com>
2022-08-25 01:52:59 +02:00
Miloslav Trmač
2f6c145e86 Use the full descriptionsOfPolicyRequirements for the default scope
... instead of taking a shortcut, e.g. not listing any keys if they are required.

Signed-off-by: Miloslav Trmač <mitr@redhat.com>
2022-08-25 01:52:59 +02:00
Miloslav Trmač
b15afce551 Rename haveMatchRegistry to registriesDConfigurationForScope
Just so that we don't have a boolean-named function returning a struct.
Also reorder the parameters to have the container first, and the lookup
key second.

Shoud not change behavior.

Signed-off-by: Miloslav Trmač <mitr@redhat.com>
2022-08-25 01:52:59 +02:00
Miloslav Trmač
1a97c4d9fa Rename tempTrustShowOutput to entry
Now that it is the primary return value of a small function,
the long name only makes reading harder.

Should not change behavior.

Signed-off-by: Miloslav Trmač <mitr@redhat.com>
2022-08-25 01:52:59 +02:00
Miloslav Trmač
51064acc49 Split descriptionsOfPolicyRequirements out of getPolicyShowOutput
This will evetually allow us to use it for the default scope
as well, which currently uses a simplified version.

Should not change behavior.

Signed-off-by: Miloslav Trmač <mitr@redhat.com>
2022-08-25 01:52:57 +02:00
Miloslav Trmač
d4c5217280 Recognize the new lookaside names for simple signing sigstore
Signed-off-by: Miloslav Trmač <mitr@redhat.com>
2022-08-25 01:51:59 +02:00
Miloslav Trmač
4df1e2524b Add a unit test for trust.PolicyDescription
Add at least a basic unit test for the various entry types.

So that we don't have to actually deal with GPG keys and /usr/bin/gpg*,
parametrize the code with a gpgIDReader , and pass a fake one
in the unit test.

Signed-off-by: Miloslav Trmač <mitr@redhat.com>
2022-08-25 01:51:58 +02:00
Miloslav Trmač
4b2bd1036b Make the output of (podman image trust show) deterministic
Sort map keys instead of iterating in the Go-imposed random order.

Signed-off-by: Miloslav Trmač <mitr@redhat.com>
2022-08-25 01:50:43 +02:00
Miloslav Trmač
35fa8c16a2 Make most of pkg/trust package-private
We now have only a few entrypoints that are called externally,
so make the rest private.  This will make it more obvious that
we are not breaking any external users.

Signed-off-by: Miloslav Trmač <mitr@redhat.com>
2022-08-25 01:50:43 +02:00
Miloslav Trmač
7723a1ea65 Move most of ImageEngine.ShowTrust into pkg/trust.PolicyDescription
This will allow us to write unit tests without setting up the complete Podman runtime
(and without the Linux dependency).

Should not change behavior.

Signed-off-by: Miloslav Trmač <mitr@redhat.com>
2022-08-25 01:50:43 +02:00
Miloslav Trmač
ff3f574fc0 Add support for sigstoreSigned in (podman image trust set)
NOTE: This does not edit the use-sigstore-attachments value
in registries.d, similarly to how (podman image trust set) didn't
set the lookaside paths for simple signing.

Signed-off-by: Miloslav Trmač <mitr@redhat.com>
2022-08-25 01:50:43 +02:00
Miloslav Trmač
9828bc4453 Create new policy entries together with validating input
That way, we don't have to switch over trustType twice.

Should not change behavior.

Signed-off-by: Miloslav Trmač <mitr@redhat.com>
2022-08-25 01:50:43 +02:00
Miloslav Trmač
e2d1bdd1d8 Improve validation of data in ImageEngine.SetTrust
- Also reject public keys with types that don't use them
- Reject unknown trust types
- And add unit tests

Signed-off-by: Miloslav Trmač <mitr@redhat.com>
2022-08-25 01:50:43 +02:00
Miloslav Trmač
cbdbb025a3 Move most of imageEngine.SetTrust to pkg/trust.AddPolicyEntries
This will allow us to write unit tests without setting up the complete Podman runtime
(and without the Linux dependency).

Also, actually add a basic smoke test of the core functionality.

Should not change behavior.

Signed-off-by: Miloslav Trmač <mitr@redhat.com>
2022-08-25 01:50:42 +02:00
Miloslav Trmač
4f68075306 Add a variable for scope
Only process the incoming args[] (which is a single-element array
for some reason) once, and use a semantic variable name for the value
we care about.

Should not change behavior, the only caller already supposedly ensures
that len(args) == 1.

Signed-off-by: Miloslav Trmač <mitr@redhat.com>
2022-08-25 00:35:59 +02:00
Miloslav Trmač
4c5366ee03 Make trust.CreateTempFile private
Nothing uses it outside the package.

Should not change behavior.

Signed-off-by: Miloslav Trmač <mitr@redhat.com>
2022-08-25 00:35:59 +02:00
Miloslav Trmač
5be00f2270 Reorganize pkg/trust
Split the existing code into policy.go and registries.go,
depending on which files it concerns.

Only moves unchanged code, should not change behavior.

Signed-off-by: Miloslav Trmač <mitr@redhat.com>
2022-08-25 00:35:58 +02:00
Miloslav Trmač
1d2def8d06 Remove an unused trust.ShowOutput type
Should not change behavior.

Signed-off-by: Miloslav Trmač <mitr@redhat.com>
2022-08-25 00:35:08 +02:00
Miloslav Trmač
df1d8d0e93 Remove commented out code
We can always recover it from git, but it seems to serve
no purpose anyway.

Should not change behavior.

Signed-off-by: Miloslav Trmač <mitr@redhat.com>
2022-08-25 00:33:02 +02:00
OpenShift Merge Robot
34d516840d
Merge pull request #15453 from edsantiago/docs_dedup_ipc
[CI:DOCS] Man pages: refactor common options: --ipc
2022-08-24 10:15:34 -04:00
OpenShift Merge Robot
082388a159
Merge pull request #15439 from rhatdan/service
Fix documentation of use of tcp connections
2022-08-24 09:59:31 -04:00
OpenShift Merge Robot
0f92cf22a6
Merge pull request #15437 from mheon/default_volume_timeout
Add support for containers.conf volume timeouts
2022-08-24 09:35:57 -04:00
OpenShift Merge Robot
67c4068bb3
Merge pull request #15443 from flouthoc/env-merge-support
run,create: add support for `--env-merge` for preprocessing default environment variables
2022-08-24 09:14:42 -04:00
Ed Santiago
33ab7e846a Man pages: refactor common options: --ipc
This is not an easy one to review, sorry.

I went with the version from podman-create. The differences
against podman-run are subtle: apostrophes, whitespace, and
the arg description in the '####' line. Suggestion for review:
run hack/markdown-preprocess-review, then after you finish
with that, cd /tmp/markdown<TAB>/ipc and use your favorite
two-file diff tool to compare podman-run* against zzz*.

I did not even try to combine the podman-build one; that one
is too different.

Signed-off-by: Ed Santiago <santiago@redhat.com>
2022-08-24 06:58:20 -06:00
OpenShift Merge Robot
1bcceadca4
Merge pull request #15450 from edsantiago/docs_dedup_gidmap
[CI:DOCS] Man pages: refactor common options: --gidmap
2022-08-24 08:56:34 -04:00
OpenShift Merge Robot
2195656d9e
Merge pull request #15444 from foriequal0/podman-docker-rootless
Rootless Docker API socket alias can be exposed with user mode systemd-tmpfiles
2022-08-24 08:54:01 -04:00
OpenShift Merge Robot
e4cbbe7862
Merge pull request #15447 from sstosh/e2e-memswap
e2e: Add run --memory-swap test
2022-08-24 08:48:57 -04:00
OpenShift Merge Robot
46430203da
Merge pull request #15445 from dfr/freebsd-info
libpod: Add support for 'podman info' on FreeBSD
2022-08-24 08:22:41 -04:00
Ed Santiago
ef6285a6f2 Man pages: refactor common options: --gidmap
Two versions: one for container-related commands, one for pods.

The container one is easy: all versions matched, so I made no
changes.

The pod one is hard to review. I went with the pod-clone
version because the pod-create one looks suspicious: it
talks in terms of containers, not pods. It's possible
that I've got it wrong, and that these two cannot be
combined, so please review very carefully. I strongly
recommend using hack/markdown-preprocess-review for this one.

Signed-off-by: Ed Santiago <santiago@redhat.com>
2022-08-24 05:43:23 -06:00
OpenShift Merge Robot
1e97aa3439
Merge pull request #15449 from edsantiago/docs_dedup_workdir
[CI:DOCS] Man pages: Refactor common options: --workdir
2022-08-24 07:41:41 -04:00
Ed Santiago
c64a6ba072 Man pages: Refactor common options: --workdir
I chose the version from podman-run because it is the most
up-to-date, and most correct wrt current syntax guidelines.
Differences are in arg description, language, and asterisks.

Signed-off-by: Ed Santiago <santiago@redhat.com>
2022-08-24 04:43:06 -06:00
OpenShift Merge Robot
d4e54fa999
Merge pull request #15351 from marshall-lee/images-pull-simple
Simplify ImagesPull for when Quiet flag is on
2022-08-24 06:00:03 -04:00
Doug Rabson
b0700aa482 libpod: Enable 'podman info' for FreeBSD
[NO NEW TESTS NEEDED]

Signed-off-by: Doug Rabson <dfr@rabson.org>
2022-08-24 10:55:52 +01:00
Doug Rabson
ff20c74e97 libpod: Move getCPUUtilization to info_linux.go
The Linux implementation uses /proc/stat - the FreeBSD equivalent is
quite different where this information is exposed via sysctl.

[NO NEW TESTS NEEDED]

Signed-off-by: Doug Rabson <dfr@rabson.org>
2022-08-24 10:55:52 +01:00
Doug Rabson
694cbaca37 libpod: Read kernel version and uptime using buildah/pkg/util
[NO NEW TESTS NEEDED]

Signed-off-by: Doug Rabson <dfr@rabson.org>
2022-08-24 10:55:52 +01:00
Doug Rabson
877e673992 libpod: Split out platform-specific code from hostInfo
[NO NEW TESTS NEEDED]

Signed-off-by: Doug Rabson <dfr@rabson.org>
2022-08-24 10:55:49 +01:00
OpenShift Merge Robot
bbd8b64a42
Merge pull request #15375 from lsm5/packit-f37
Packit: Enable scratch build testing for Fedora 36, 37 and Rawhide
2022-08-24 05:51:41 -04:00
Toshiki Sonoda
e1c206d982 e2e: Add run --memory-swap test
There is not e2e/system test of --memory-swap option.

Signed-off-by: Toshiki Sonoda <sonoda.toshiki@fujitsu.com>
2022-08-24 18:15:21 +09:00
OpenShift Merge Robot
670f559005
Merge pull request #15441 from edsantiago/docs_dedup_ignore
Man pages: refactor common options: --ignore
2022-08-24 05:01:24 -04:00
SeongChan Lee
c3dc92a50a Fix rpm packaging error
Signed-off-by: SeongChan Lee <foriequal@gmail.com>
2022-08-24 18:00:35 +09:00
Aditya R
b4584ea854
run,create: add support for --env-merge for preprocessing vars
Allow end users to preprocess default environment variables before
injecting them into container using `--env-merge`

Usage
```
podman run -it --rm --env-merge some=${some}-edit --env-merge
some2=${some2}-edit2 myimage sh
```

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

Signed-off-by: Aditya R <arajan@redhat.com>
2022-08-24 14:06:25 +05:30
SeongChan Lee
b47c54ab69 Install podman-docker.conf on user-tmpfiles.d too
`systemd-tmpfiles` reads "user" configurations in
`/usr/share/user-tmpfiles.d` when `--user` mode is set.
User unit `systemd-tmpfiles-setup.service` can be enabled to alias
rootless socket through systemd-tmpfiles.

Signed-off-by: SeongChan Lee <foriequal@gmail.com>
2022-08-24 15:45:55 +09:00
SeongChan Lee
0e6a421ca6 Use tmpfiles.d specifiers instead of fixed path
Rootless Docker daemon exposes its API socket on
`$XDG_RUNTIME_DIR/docker.sock`. On tmpfiles.d, `%t` is same as
`$XDG_RUNTIME_DIR` in `--user` mode, and `/run` otherwise.
We can reuse the same config file for both mode with this change.

Signed-off-by: SeongChan Lee <foriequal@gmail.com>
2022-08-24 15:45:50 +09:00
Ed Santiago
9dca68bdd9 Man pages: refactor common options: --ignore
Should be an easy one to review.

Signed-off-by: Ed Santiago <santiago@redhat.com>
2022-08-23 15:18:44 -06:00
OpenShift Merge Robot
2538bea8da
Merge pull request #15438 from edsantiago/docs_dedup_devicecgrouprule
[CI:DOCS] Man pages: refactor common options: --device-cgroup-rule
2022-08-23 17:02:18 -04:00
OpenShift Merge Robot
2651009c48
Merge pull request #15429 from graywolf-at-work/document-transport
Document restrictions on transport in FROM
2022-08-23 16:23:08 -04:00
OpenShift Merge Robot
edde8570ce
Merge pull request #15372 from arixmkii/win_compat
Improved Windows compatibility
2022-08-23 16:20:33 -04:00
Lokesh Mandvekar
d45a5d4aa0
Packit: Enable scratch build testing for Fedora 36, 37 and Rawhide
This commit includes the initial addition of a .packit.yaml which will
run scratch builds for active Fedora releases which get the latest
Podman using Fedora's official packaging sources.

More packit integration to come in the future.

[NO NEW TESTS NEEDED]

Signed-off-by: Lokesh Mandvekar <lsm5@fedoraproject.org>
2022-08-23 16:14:44 -04:00