Commit Graph

6142 Commits

Author SHA1 Message Date
openshift-merge-bot[bot]
4f76c7a0c7 Merge pull request #22120 from garthy/dont_stage_tarfile
Dont save remote build context in temp file but stream and extract
2024-03-22 13:34:11 +00:00
Garth Bushell
b2d0b92db2 Dont save remote context in temp file but stream and extract
Signed-off-by: Garth Bushell <garth@garthy.com>
2024-03-21 15:39:01 +00:00
openshift-merge-bot[bot]
aaa6dc3cc6 Merge pull request #22112 from Luap99/remote-buildah-isolation
fix remote build isolation when server runs as root
2024-03-21 15:34:12 +00:00
Paul Holzinger
493179be45 fix remote build isolation when server runs as root
I am really not sure why the caller even should have the option to set
this. We should always use the correct isolation type based on the
privileges the server runs under never the client. podman-remote build
seems to send the default based on its local privs which was wrong as
well. To fix this I also changed the client to send the default if the
isolation flag is not set.

Fixes #22109

Signed-off-by: Paul Holzinger <pholzing@redhat.com>
2024-03-21 14:17:55 +01:00
Giuseppe Scrivano
4740367330 util: use private propagation with bind
when the "bind" option is used, do not use the "rprivate" propagation
as it would inhibit the effect of "bind", instead default to "private".

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

Signed-off-by: Giuseppe Scrivano <gscrivan@redhat.com>
2024-03-21 11:33:58 +01:00
Giuseppe Scrivano
9a13b8f17d util: add some tests for ProcessOptions
Signed-off-by: Giuseppe Scrivano <gscrivan@redhat.com>
2024-03-21 11:33:57 +01:00
Giuseppe Scrivano
50d764b0e6 util: refactor ProcessOptions into an internal function
this is needed to add tests for the function without accessing the
file system.

Signed-off-by: Giuseppe Scrivano <gscrivan@redhat.com>
2024-03-21 11:33:02 +01:00
Giuseppe Scrivano
49ab250cf9 util: rename files to snake case
use the same convention used for other files.

Signed-off-by: Giuseppe Scrivano <gscrivan@redhat.com>
2024-03-21 11:33:02 +01:00
openshift-merge-bot[bot]
5bcafe7ae0 Merge pull request #22019 from saschagrunert/cri-o-annotations
Remove CRI-O related annotations
2024-03-20 15:51:29 +00:00
openshift-merge-bot[bot]
c35fa14616 Merge pull request #22083 from giuseppe/drop-conversion
utils: drop conversion float->string->float
2024-03-20 15:37:42 +00:00
openshift-merge-bot[bot]
2efbba0e34 Merge pull request #22080 from giuseppe/fix-duplicate-mapping-keep-id
utils: do not generate duplicate range
2024-03-20 11:52:10 +00:00
Jason T. Greene
3f2b8bb314 Use correct extension in suite
Signed-off-by: Jason T. Greene <jason.greene@redhat.com>
2024-03-19 13:07:45 -05:00
Giuseppe Scrivano
2566ee2f38 utils: drop conversion float->string->float
remove unclear conversion to string to handle float precision.

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

Signed-off-by: Giuseppe Scrivano <gscrivan@redhat.com>
2024-03-18 23:06:06 +01:00
Giuseppe Scrivano
816c7279e1 utils: do not generate duplicate range
do not generate a duplicated range when --userns=keep-id:uid=0 or
--userns=keep-id:gid=0 are used.

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

Signed-off-by: Giuseppe Scrivano <gscrivan@redhat.com>
2024-03-18 22:31:51 +01:00
Giuseppe Scrivano
0e38815387 utils: add test for the new function
Signed-off-by: Giuseppe Scrivano <gscrivan@redhat.com>
2024-03-18 22:13:03 +01:00
Giuseppe Scrivano
cda3dc83d8 utils: move rootless code to a new function
it is a preparatory patch.  It should not affect functionalities.

Signed-off-by: Giuseppe Scrivano <gscrivan@redhat.com>
2024-03-18 21:53:31 +01:00
openshift-merge-bot[bot]
112aeb7fda Merge pull request #22055 from garthy/build_context_cleanup
Cleanup build scratch dir if remote end disconnects while passing the context
2024-03-18 17:08:53 +00:00
Jason T. Greene
7fbdd9e6e2 Adjust to the standard location of gvforwarder used in new images
Signed-off-by: Jason T. Greene <jason.greene@redhat.com>
2024-03-16 14:03:40 -05:00
Jason T. Greene
fdad9ab1ff Switch to 5.x WSL machine os stream using new automation
Includes a switch from XZ to ZSTD for significantly improved fetch performance

Signed-off-by: Jason T. Greene <jason.greene@redhat.com>
2024-03-15 23:27:38 -05:00
Garth Bushell
3a9eef4bee Cleanup build scratch dir if remote end disconnects while passing the context
Signed-off-by: Garth Bushell <garth@garthy.com>
2024-03-15 10:39:23 +00:00
openshift-merge-bot[bot]
5067f0fd65 Merge pull request #22041 from garthy/speed_up_context_compress
Use faster gzip for compression for 3x build speedup for large context send to remote
2024-03-14 17:21:16 +00:00
openshift-merge-bot[bot]
c15c815818 Merge pull request #22032 from Luap99/machine-lock
podman machine start: make checkExclusiveActiveVM check race free
2024-03-14 14:25:24 +00:00
Garth Bushell
3f068d1973 Use faster gzip for compression for 3x speedup for sending large contexts to remote
Signed-off-by: Garth Bushell <garth@garthy.com>
2024-03-14 11:35:37 +00:00
openshift-merge-bot[bot]
841114369d Merge pull request #22003 from nachtjasmin/fix/20903-ensure-livenessprobe-affects-containers
Pass pod restart policy to individual containers
2024-03-14 10:53:31 +00:00
Paul Holzinger
e82d196269 pkg/machine: make checkExclusiveActiveVM race free
We need to take another lock to prevent concurrent starts from different
machines.

I manually tested it by starting three VM in parallel with:
podman machine start & podman machine start test1 & podman machine start test2

I also added a CI test that seems to work as expected (failed with the
old binary, worked with the new)

Before this patch I was able to start more than VM, with this patch it
now only starts one of them and the other ones will fail to start with
a proper error.

Signed-off-by: Paul Holzinger <pholzing@redhat.com>
2024-03-14 11:13:08 +01:00
Paul Holzinger
b238303a40 pkg/machine/wsl: remove unused CheckExclusiveActiveVM()
This function is not used, it has been refactored in the general
starting good higher up the stack.

Signed-off-by: Paul Holzinger <pholzing@redhat.com>
2024-03-14 11:08:16 +01:00
Paul Holzinger
c9a5c4b943 pkg/machine: CheckExclusiveActiveVM should also check for starting
Also make the error message there better.

Signed-off-by: Paul Holzinger <pholzing@redhat.com>
2024-03-14 11:07:56 +01:00
Paul Holzinger
1dfd3d3d12 pkg/machine: refresh config after we hold lock
Currently we first read the conf and then lock, this is racy because
while we wait for the lock another process might change the state so
the only way to have the actual current state is to read the file
while holding the lock.

Signed-off-by: Paul Holzinger <pholzing@redhat.com>
2024-03-14 11:06:04 +01:00
openshift-merge-bot[bot]
358ac20a1e Merge pull request #22028 from n1hility/fix-api-socket
Change API socket to be machine name isolated
2024-03-13 19:36:56 +00:00
Jason T. Greene
e58cb97de1 Change API socket to be machine name isolated
- Fixes conflicts such as removal of second machine deleting a socket of a
  the first machine while it's running
- Move API socket into runtime directory for consistency
- Add API and gvproxy sockets to removal list
- Cleanup related logic

Signed-off-by: Jason T. Greene <jason.greene@redhat.com>
2024-03-13 13:28:14 -05:00
openshift-merge-bot[bot]
c25bfe1c8c Merge pull request #21864 from l0rd/compress-refactoring-v5-plus-plus
Machine decompress.go refactoring follow-up
2024-03-13 16:49:17 +00:00
Brent Baude
d7bc7b7b41 do not require policy.json
we are having second thoughts about *requiring* a policy.json on podman
machine hosts.  we are concerned that we need to work out some more use
cases to be sure we do not make choices now that limit us in the near
term future. for example, should the policy files be the same for
container images and machine images? And should one live on the host
machine and the other live in the machine?

therefore, if a policy.json *is* present in the correct location, we will use and honor it; however, if it does not, we will allow the machine image to be pulled without a policy.

Signed-off-by: Brent Baude <baude@redhat.com>
Co-authored-by: Paul Holzinger <45212748+Luap99@users.noreply.github.com>
Signed-off-by: Brent Baude <bbaude@redhat.com>
2024-03-13 09:07:51 -05:00
Mario Loriedo
82597144b6 Machine decompress.go refactoring follow-up
1. Added the xz decompression unit tests

2. Removed the xz implementation to use the one from c/images

3. Removed the specific macos gzip, zstd compressor and use
   the generic compressor but with SparseWriter if GOOS == darwin

Signed-off-by: Mario Loriedo <mario.loriedo@gmail.com>
2024-03-13 00:58:50 +01:00
openshift-merge-bot[bot]
c2695fc9d2 Merge pull request #22026 from baude/finalmachineimageref
Add final machine endpoint
2024-03-12 16:50:59 +00:00
Brent Baude
4c5d26f6f9 Add final machine endpoint
Adding the final machine endpoint as quay.io/podman/machine-os in the
Podman code.  As a reminder, we decided we would set this in containers
conf once things settle down and this code would then be removed.

Signed-off-by: Brent Baude <bbaude@redhat.com>
2024-03-12 09:37:57 -05:00
Sascha Grunert
1901403eda Removing CRI-O related annotations
The annotations should be maintained by CRI-O itself to decouple the
projects from a dependency perspective.

[NO NEW TESTS NEEDED]

Signed-off-by: Sascha Grunert <sgrunert@redhat.com>
2024-03-12 14:56:06 +01:00
Paul Holzinger
068ddfd19f update API doc version to 5.0.0
Also update the website to display the correct swagger doc for the right
version, the 5.0 swagger file will not exist until we branch but I added
it anyway so we do not forget it.

Signed-off-by: Paul Holzinger <pholzing@redhat.com>
2024-03-12 12:06:15 +01:00
Jasmin Oster
d7fa0aa351 Pass the restart policy to the individual containers
Healthchecks, defined in a .yaml file as livenessProbe did not had any
effect. They were executing as intended, containers were marked as
unhealthy, yet no action was taken. This was never the intended
behaviour, as observed by the comment:

> if restart policy is in place, ensure the health check enforces it

A minimal example is tracked in containers/podman#20903 [1] with the
following YAML:

```yaml
apiVersion: v1
kind: Pod
metadata:
  name: ubi-httpd-24
spec:
  restartPolicy: Always
  containers:
    - name: ubi8-httpd
      image: registry.access.redhat.com/rhscl/httpd-24-rhel7:2.4-217
      livenessProbe:
        httpGet:
          path: "/"
          port: 8081
```

By passing down the restart policy (and using constants instead of
actually wrong hard-coded ones), Podman actually restarts the container
now.

[1]: https://github.com/containers/podman/issues/20903

Closes #20903.

Signed-off-by: Jasmin Oster <nachtjasmin@posteo.de>
2024-03-11 20:39:54 +01:00
openshift-merge-bot[bot]
4541f0c4ed Merge pull request #21980 from Luap99/machine-locking-fixes
more machine locking fixes
2024-03-07 16:51:37 +00:00
openshift-merge-bot[bot]
15e508a639 Merge pull request #21936 from l0rd/vmfile-peek
Don't read full VM File before decompressing
2024-03-07 16:40:09 +00:00
openshift-merge-bot[bot]
49f290685f Merge pull request #21977 from mtrmac/close-error-handling
Close error handling
2024-03-07 15:36:36 +00:00
Paul Holzinger
25f3a8ce77 podman machine start/stop do not write config unlocked
Move the writes into the shim level to make sure they happen while we
hold the machine lock to prevent any race conditions reading/writing the
file.

Signed-off-by: Paul Holzinger <pholzing@redhat.com>
2024-03-07 15:11:41 +01:00
Paul Holzinger
7a75914921 podman machine init: do not write config unlocked
First make sure we check that a given VM exist when holding the VM lock
for it. The check in cmd/podman/machine/init.go is a nice quick out but
not enough to ensure that 2 processes to not create the same VM at the
same time. The only way to ensure this is by holding the lock and
checking if the VM config file exists.

Signed-off-by: Paul Holzinger <pholzing@redhat.com>
2024-03-07 14:58:25 +01:00
Miloslav Trmač
7bfe5e700f Fail on failures to close the file descriptors, and especially the SparseWriter
Signed-off-by: Miloslav Trmač <mitr@redhat.com>
2024-03-07 14:46:17 +01:00
Miloslav Trmač
5e0b7e54c0 Avoid reliance on fs.ErrClosed in SparseWriter users
Neither of the SparseWriter users actually _wants_ the underlying
WriteSeeker to be closed; so, don't.

That makes it clear where the responsibility for closing the file
lies, and allows us to remove the reliance on the destinations
reliably returning ErrClosed.

Signed-off-by: Miloslav Trmač <mitr@redhat.com>
2024-03-07 14:46:12 +01:00
Miloslav Trmač
4c6505be5f Fix the logic for detecting an unexpected close error
Signed-off-by: Miloslav Trmač <mitr@redhat.com>
2024-03-07 14:32:43 +01:00
Paul Holzinger
3c9c5be7da podman machine set: change options only locked
Make sure we only update the machine config when we are locked.
While it doesn't make a functional differnce for cpu and memory it was a
problem for disk size. The disk size must be larger than the previous
one so we must have accurate data on the previous value.

Thus change the settings only while locked and refresh the config so we
have the current up to date values.

Signed-off-by: Paul Holzinger <pholzing@redhat.com>
2024-03-07 14:19:06 +01:00
Miloslav Trmač
a65b546c61 Remove copySparseFile
It is unused, and it clearly doesn't work (it closes dest
before writing anything to it).

Just drop it, it can always be re-added.

Should not change behavior.

Signed-off-by: Miloslav Trmač <mitr@redhat.com>
2024-03-07 14:08:54 +01:00
Paul Holzinger
2ba3a2d56d pkg/machine: fix relative DefaultPolicyJSONPath
When we set a relative path (i.e. ".") it should be resolved next to
binary so we need to get the base dir. If we join it directly like it
did before you get a path like .../podman/policy.json where podman is the
podman executable so it is not a directory and thus could not contain the
policy.json file.

ref #21964

Signed-off-by: Paul Holzinger <pholzing@redhat.com>
2024-03-07 12:22:48 +01:00
Mario Loriedo
724c5a06ba Don't read full VM File before decompressing
While working on #21592 we figured out that the
the full VM File was loaded in memory when detecting
the file format, but only a few bytes are needed.
This commit address that.

[NO NEW TESTS NEEDED]

Signed-off-by: Mario Loriedo <mario.loriedo@gmail.com>
2024-03-07 10:11:11 +01:00