feat: add Podman artifact support to Go bindings and remote clients

Add the Go bindings implementation necessary to support Artifacts.
Implement the tunnel interface that consumes the Artifacts Go bindings.

With this patch, users of the Podman remote clients will now be able to
manage OCI artifacts via the Podman CLI and Podman machine.

Jira: https://issues.redhat.com/browse/RUN-2714#

Signed-off-by: Lewis Roy <lewis@redhat.com>
This commit is contained in:
Lewis Roy
2025-07-31 22:34:14 +10:00
committed by Matt Heon
parent 906b97e3e1
commit 5dc87663a9
36 changed files with 1199 additions and 176 deletions

View File

@@ -218,7 +218,7 @@ class ArtifactTestCase(APITestCase):
# Assert return error response is json and contains correct message
self.assertEqual(
rjson["cause"],
"append option is not compatible with ArtifactType option",
"append option is not compatible with type option",
)
def test_add_with_append_to_missing_artifact_fails(self):
@@ -354,7 +354,7 @@ class ArtifactTestCase(APITestCase):
# Assert correct response code
self.assertEqual(r.status_code, 200, r.text)
# Assert return error response is json and contains correct message
# Assert return response is json and contains correct message
self.assertIn("sha256:", rjson["ArtifactDigest"])
def test_pull_with_retry(self):
@@ -397,7 +397,7 @@ class ArtifactTestCase(APITestCase):
# Assert return error response is json and contains correct message
self.assertEqual(
rjson["cause"],
"unauthorized",
"unauthorized: access to the requested resource is not authorized",
)
def test_pull_missing_fails(self):
@@ -413,9 +413,9 @@ class ArtifactTestCase(APITestCase):
self.assertEqual(r.status_code, 404, r.text)
# Assert return error response is json and contains correct message
self.assertEqual(
rjson["cause"],
self.assertIn(
"manifest unknown",
rjson["cause"],
)
def test_remove(self):
@@ -459,9 +459,9 @@ class ArtifactTestCase(APITestCase):
self.assertEqual(r.status_code, 401, r.text)
# Assert return error response is json and contains correct message
self.assertEqual(
self.assertIn(
"authentication required",
rjson["cause"],
"unauthorized",
)
def test_push_bad_param(self):