Commit graph

4393 commits

Author SHA1 Message Date
Naoto Kobayashi
a4efd401cd remote manifest push: show copy progress
`podman-remote manifest push` has shown absolutely no progress at all.
Fix that by doing the same as the remote-push code does.

Like remote-push, `quiet` parameter is true by default for backwards
compatibility.

Signed-off-by: Naoto Kobayashi <naoto.kobayashi4c@gmail.com>
2022-08-11 20:35:13 +09:00
OpenShift Merge Robot
aa13c73f71
Merge pull request #14926 from cdoern/generateSpec
podman generate spec
2022-08-10 10:23:18 +00:00
OpenShift Merge Robot
84502fc144
Merge pull request #15094 from cdoern/ssh
podman ssh work, using new c/common interface
2022-08-10 08:57:58 +00:00
OpenShift Merge Robot
c1eb9f65ac
Merge pull request #15244 from baude/machinememorytests
check memory test based on range
2022-08-10 04:03:48 +00:00
OpenShift Merge Robot
72679400b0
Merge pull request #15199 from baude/addapplehv
Add interface for apple hypervisor
2022-08-09 19:31:17 +00:00
OpenShift Merge Robot
a2869c327e
Merge pull request #15230 from YoitoFes/Issue-15211
pkg/bindings: Support writing image push progress to specified io.Writer
2022-08-09 18:49:26 +00:00
Brent Baude
a561b7dacc check memory test based on range
when verifying that the memory was set correctly for a podman machine
instance, we check if the number is between a range because based on
architecture, operating system, and memory itself this number can differ
significantly.

Signed-off-by: Brent Baude <bbaude@redhat.com>
2022-08-09 13:23:02 -05:00
Charlie Doern
280f5d8cb0 podman ssh work, using new c/common interface
implement new ssh interface into podman

this completely redesigns the entire functionality of podman image scp,
podman system connection add, and podman --remote. All references to golang.org/x/crypto/ssh
have been moved to common as have native ssh/scp execs and the new usage of the sftp package.

this PR adds a global flag, --ssh to podman which has two valid inputs `golang` and `native` where golang is the default.
Users should not notice any difference in their everyday workflows if they continue using the golang option. UNLESS they have been using an improperly verified ssh key, this will now fail. This is because podman was incorrectly using the
ssh callback method to IGNORE the ssh known hosts file which is very insecure and golang tells you not yo use this in production.

The native paths allows for immense flexibility, with a new containers.conf field `SSH_CONFIG` that specifies a specific ssh config file to be used in all operations. Else the users ~/.ssh/config file will be used.
podman --remote currently only uses the golang path, given its deep interconnection with dialing multiple clients and urls.

My goal after this PR is to go back and abstract the idea of podman --remote from golang's dialed clients, as it should not be so intrinsically connected. Overall, this is a v1 of a long process of offering native ssh, and one that covers some good ground with podman system connection add and podman image scp.

Signed-off-by: Charlie Doern <cdoern@redhat.com>
2022-08-09 14:00:58 -04:00
OpenShift Merge Robot
a7af6ef632
Merge pull request #15246 from TomSweeneyRedHat/dev/tsweeney/buildah1.27.0
Bump to Buildah v1.27.0
2022-08-09 13:32:07 +00:00
OpenShift Merge Robot
7992d86ab3
Merge pull request #15134 from sstosh/improve-output
Output messages display rawInput
2022-08-09 06:13:10 +00:00
Aditya R
59cb410fe2
build: implement --cache-to,--cache-from and --cache-ttl
[NO NEW TESTS NEEDED]
[NO TESTS NEEDED]

Signed-off-by: Aditya R <arajan@redhat.com>
2022-08-09 09:10:58 +05:30
Brent Baude
1045647a4a Add interface for apple hypervisor
The new apple silicon processesors (m1/m2) are capable of using a performent apple
hypervisor (included in macos).  Our "virtual providers" for podman
machine are part of an interface design.  This PR provides an
implementation of the interface to begin the work for supporting the
apple hypervisor.  It is basically only a skeletal PR.

The actual code for using the hypervisor and launching a machine will
come as several new PRs following the inclusion of this one.

There will likely be code reuse between the applehv and qemu code; but
none of that code is being moved at this time.  It will be moved "on
demand" during development.

[NO NEW TESTS NEEDED]

Signed-off-by: Brent Baude <bbaude@redhat.com>
2022-08-08 14:04:49 -05:00
Giuseppe Scrivano
696ea7905e
specgen: use sandbox id instead of name for annotation
use the sandbox id instead of the name for the
io.kubernetes.cri-o.SandboxID annotation used by gVisor.

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

[NO NEW TESTS NEEDED] it is specific to gVisor

Signed-off-by: Giuseppe Scrivano <gscrivan@redhat.com>
2022-08-08 14:30:02 +02:00
Naoto Kobayashi
b1d1248a18 pkg/bindings: Support writing image push progress to specified io.Writer
Currently bindings writes image push progress to os.Stderr.

Since os.Stderr is inconvenience for bindings caller to
process the progress messages, Added this support.

Signed-off-by: Naoto Kobayashi <naoto.kobayashi4c@gmail.com>
2022-08-08 01:51:32 +09:00
openshift-ci[bot]
66c246d2c1
Merge pull request #15093 from karthikelango137/rmiNoPrune1
remove image podman no prune
2022-08-05 14:48:18 +00:00
openshift-ci[bot]
ff144e085e
Merge pull request #15184 from gbraad/change-config-order
Fixes #15154 Change order when config and connections are written
2022-08-05 08:07:45 +00:00
openshift-ci[bot]
49ee311950
Merge pull request #15092 from karthikelango137/startFilter
start --filter flag changes
2022-08-05 06:43:56 +00:00
Gerard Braad
d4c6e056db Fixes #15154 Change order when config and connections are written
When the break out or the WSL environment fails to start, the config
and connections should not be written. Placing them at the end of the
provisioning step will mitigate the issue.

[NO NEW TESTS NEEDED]

Signed-off-by: Gerard Braad <me@gbraad.nl>
2022-08-05 11:14:58 +08:00
Karthik Elango
cc8e4d5fec remove image podman no prune
Signed-off-by: Karthik Elango <kelango@redhat.com>
2022-08-04 14:55:03 -04:00
Charlie Doern
842c6c7c67 podman generate spec
implement a new command `podman generate spec` which can formulate a json specgen to be consumed by both the pod
and container creation API.

supported flags are

--verbose (default true) print output to the terminal
--compact print the json output in a single line format to be piped to the API
--filename put the output in a file
--clone rename the pod/ctr in the spec so it won't conflict w/ an existing entity

Signed-off-by: Charlie Doern <cdoern@redhat.com>
2022-08-04 13:59:58 -04:00
Karthik Elango
9964366f69 start filter flag changes
Tying filtering logic for podman stop and start to same place in getContainersAndInputByContext() to reduce code redundancy

Signed-off-by: Karthik Elango <kelango@redhat.com>
2022-08-04 09:08:14 -04:00
Valentin Rothberg
81a1ea18c8 pkg/autoupdate: "image" policy: add deprecation comment
The "image" policy has been deprecated in favor of the more precise
"registry" policy.  Add a code comment to leave some breadcrumbs for
future generations.

Signed-off-by: Valentin Rothberg <vrothberg@redhat.com>
2022-08-04 13:07:58 +02:00
Valentin Rothberg
43cca5d97a pkg/autoupdate: decompose the update logic
Decompose the update logic into smaller steps (update check, update,
rollback, etc.) and move the implementation into the `task` API.
This allows to transition a task from state to state, independent of its
underlying auto-update policy.

Supporting more than one container per unit is now really close.

[NO NEW TESTS NEEDED] - should not change behavior.

Signed-off-by: Valentin Rothberg <vrothberg@redhat.com>
2022-08-04 13:07:58 +02:00
Valentin Rothberg
0df51bb6bc pkg/autoupdate: move status into task
As state should be kept in a single `task`.  This will allow for
separating updates from rollbacks which will be needed to support
multiple containers/tasks in a single unit.

[NO NEW TESTS NEEDED] - should not change behavior.

Signed-off-by: Valentin Rothberg <vrothberg@redhat.com>
2022-08-04 13:07:58 +02:00
Valentin Rothberg
af3ce70844 pkg/autoupdate: document fields of updater
Signed-off-by: Valentin Rothberg <vrothberg@redhat.com>
2022-08-04 13:07:58 +02:00
Valentin Rothberg
3fdd3b1ae3 pkg/autoupdate: remove image map from updater
It is not state needed after assembling the tasks, so remove it to keep
the task struct simpler.

Signed-off-by: Valentin Rothberg <vrothberg@redhat.com>
2022-08-04 13:07:58 +02:00
Valentin Rothberg
82d18a86f3 pkg/autoupdate: use policy consts were possible
Signed-off-by: Valentin Rothberg <vrothberg@redhat.com>
2022-08-04 13:07:58 +02:00
Valentin Rothberg
1cc933c6bb pkg/autoupdate: introduce status constants
To replace redundant string scattered across the code with proper
constants.  The "status" will further be useful in a future change
as it can be moved into a `task`.

Signed-off-by: Valentin Rothberg <vrothberg@redhat.com>
2022-08-04 13:07:58 +02:00
Valentin Rothberg
42c4c17c01 pkg/autoupdate: move authfile into tasks
Will simplify the code and speed up things as we do not consult a
container's labels multiple times.

[NO NEW TESTS NEEDED] - should not change behavior.

Signed-off-by: Valentin Rothberg <vrothberg@redhat.com>
2022-08-04 13:07:58 +02:00
Valentin Rothberg
3f1928d767 pkg/autoupdate: move more logic under task
This will simplify the logic and pave the way for abstracting the
auto-update policies to a certain degree that allows us to better
control _when_ the updates and rollbacks happen and will ultimately
reduce redundant code.

[NO NEW TESTS NEEDED] - should not change behavior.

Signed-off-by: Valentin Rothberg <vrothberg@redhat.com>
2022-08-04 13:07:58 +02:00
Valentin Rothberg
cfa089c361 pkg/autoupdate: s/updateImage/pullImage/
"pull" is more expressive.

Signed-off-by: Valentin Rothberg <vrothberg@redhat.com>
2022-08-04 13:07:58 +02:00
Valentin Rothberg
13a8ebd09f pkg/autoupdate: repull image if other containers failed
If two containers use the same image and one rolled back (i.e., tagged
the old image again), make sure to repull the image for the other
container.

Once an image has caused a rollback, it may be worth marking this image
as broken and not update any other container using it but that is
outside of the scope.

Signed-off-by: Valentin Rothberg <vrothberg@redhat.com>
2022-08-04 13:07:58 +02:00
Valentin Rothberg
2c999f1ecb pkg/autoupdate: update unit-by-unit
Change the auto-update logic to update unit-by-unit rather by policy.
This allows for, in theory now and in practice later, to have mutliple
containers run in a single systemd unit and update them in sequence
before restarting the unit.

[NO NEW TESTS NEEDED] - should not change behavior.

Signed-off-by: Valentin Rothberg <vrothberg@redhat.com>
2022-08-04 13:07:58 +02:00
Valentin Rothberg
87c0c760ec pkg/autoupdate: introduce the notion of a task
A `task` includes data and state for updating a given container image.
It will come in handy in future changes, but we are going there in
baby steps to have smaller incremental changes.

[NO NEW TESTS NEEDED] - should not change behaviour.

Signed-off-by: Valentin Rothberg <vrothberg@redhat.com>
2022-08-04 13:07:58 +02:00
Valentin Rothberg
033cc059fa pkg/autoupdate: remove redundant branch
[NO NEW TESTS NEEDED] - should not change behavior.

Signed-off-by: Valentin Rothberg <vrothberg@redhat.com>
2022-08-04 13:07:58 +02:00
Valentin Rothberg
328c8ba7b4 pkg/autoupdate: move policy map into updater
[NO NEW TESTS NEEDED] - should not change behavior.

Signed-off-by: Valentin Rothberg <vrothberg@redhat.com>
2022-08-04 13:07:58 +02:00
Valentin Rothberg
d476097739 pkg/autoupdate: introduce updater for shared state
Introduce an `updater` type to allow for sharing state.
This will be more useful for future changes.

[NO NEW TESTS NEEDED] as it does not change behavior.

Signed-off-by: Valentin Rothberg <vrothberg@redhat.com>
2022-08-04 13:07:58 +02:00
Daniel J Walsh
1638218d1b
Merge pull request #15158 from cdoern/secrets
add omitempty to Secret in k8s VolumeSource
2022-08-04 07:01:51 -04:00
openshift-ci[bot]
ea7c979647
Merge pull request #15068 from n1hility/wsl-as-user
Default to rootless via Windows WSL prompt / Lock to WSL2
2022-08-04 01:51:36 +00:00
Charlie Doern
7df8d80508 add omitempty to Secret in k8s VolumeSource
Secret was populating a generated kube as `null`. Add omitempty
so that when the volume source is not a secret, we do not print unnecessary info

resolves #15156

Signed-off-by: Charlie Doern <cdoern@redhat.com>
2022-08-03 16:42:28 -04:00
openshift-ci[bot]
5fc7339aa1
Merge pull request #15084 from sstosh/rm-filter
Add rm --filter option
2022-08-03 17:23:07 +00:00
OpenShift Merge Robot
c09457e34a
Merge pull request #15119 from nicrowe00/15071
switch from "kube/play" endpoint to "play/kube" endpoint.
2022-08-02 16:01:23 +02:00
Jason T. Greene
c5150a571e Add support, and default to rootless w/WSL prompt
Also force installation to use WSL2 to prevent accidental usage of WSL1

Signed-off-by: Jason T. Greene <jason.greene@redhat.com>
2022-08-02 06:55:48 -05:00
Jason T. Greene
bce16a58de Disable F36 service that is incompat with WSL kern
(requires psi)

Signed-off-by: Jason T. Greene <jason.greene@redhat.com>
2022-08-02 06:55:48 -05:00
Niall Crowe
69d7407afb switch from "kube/play" endpoint to "play/kube" endpoint.
When podman kube play was added the endpoint for the kube play/play kube
commands was switched from the "play kube" endpoint to the new "kube play"
endpoint. This caused issues with the remote client, requiring the need
to use the "play kube" endpoint again in order to avoid these issues.

Signed-off-by: Niall Crowe <nicrowe@redhat.com>
2022-08-02 12:09:59 +01:00
Toshiki Sonoda
2685c8dc43 Output messages display rawInput
`init`, `checkpint/restore` and `cleanup` command now display
output messages which is rawInput instead of a container ID.

Example:
```
$ podman init <container name>
<container name>

$ podman init <short container ID>
<short container ID>
```

Signed-off-by: Toshiki Sonoda <sonoda.toshiki@fujitsu.com>
2022-08-02 18:28:37 +09:00
Paul Holzinger
4dfef202cf
podman generate systemd --new: allow -h hostname
podman run/create can accept `-h <hostname>` as argument. When parsing
flags -h throws an help requested error from pflag. To prevent this
error we have to define the help flag.

Fixes #15124

Signed-off-by: Paul Holzinger <pholzing@redhat.com>
2022-08-02 08:58:40 +02:00
OpenShift Merge Robot
82137dc64e
Merge pull request #15108 from mtrmac/sigstore-sign
Sigstore sign
2022-08-01 13:35:43 +02:00
OpenShift Merge Robot
271a9f45a4
Merge pull request #15056 from Luap99/generate-systemd-sdnotify
podman generate systemd: handle --sdnotify correctly
2022-08-01 11:34:17 +02:00
Miloslav Trmač
d462da676c Add support for creating sigstore signatures, and providing passphrases
- Allow creating sigstore signatures via --sign-by-sigstore-private-key .
  Like existing --sign-by, it does not work remote (in this case
  because we would have to copy the private key to the server).
- Allow passing a passphrase (which is mandatory for sigstore private keys)
  via --sign-passphrase-file; if it is not provided, prompt interactively.
- Also, use that passphrase for --sign-by as well, allowing non-interactive
  GPG use. (But --sign-passphrase-file can only be used with _one of_
  --sign-by and --sign-by-sigstore-private-key.)

Note that unlike the existing code, (podman build) does not yet
implement sigstore (I'm not sure why it needs to, it seems not to
push images?) because Buildah does not expose the feature yet.

Also, (podman image sign) was not extended to support sigstore.

The test for this follows existing (podman image sign) tests
and doesn't work rootless; that could be improved by exposing
a registries.d override option.

The test for push is getting large; I didn't want to
start yet another registry container, but that would be an
alternative.  In the future, Ginkgo's Ordered/BeforeAll
would allow starting a registry once and using it for two
tests.

Signed-off-by: Miloslav Trmač <mitr@redhat.com>
2022-07-30 17:26:08 +02:00