Skip to content

Commit 779e8a5

Browse files
refactor(artifact): remove oci artifact support
- add header to referrers call to indicated applied artifact type filters Signed-off-by: Laurentiu Niculae <niculae.laurentiu1@gmail.com>
1 parent 635d07a commit 779e8a5

51 files changed

Lines changed: 447 additions & 1202 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

errors/errors.go

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,6 @@ var (
6363
ErrManifestConflict = errors.New("manifest: multiple manifests found")
6464
ErrManifestMetaNotFound = errors.New("repodb: image metadata not found for given manifest reference")
6565
ErrManifestDataNotFound = errors.New("repodb: image data not found for given manifest digest")
66-
ErrArtifactDataNotFound = errors.New("repodb: artifact data not found for given digest")
6766
ErrIndexDataNotFount = errors.New("repodb: index data not found for given digest")
6867
ErrRepoMetaNotFound = errors.New("repodb: repo metadata not found for given repo name")
6968
ErrTagMetaNotFound = errors.New("repodb: tag metadata not found for given repo and tag names")

examples/config-dynamodb.json

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,6 @@
2020
"cacheTablename": "ZotBlobTable",
2121
"repoMetaTablename": "ZotRepoMetadataTable",
2222
"manifestDataTablename": "ZotManifestDataTable",
23-
"artifactDataTablename": "ZotArtifactDataTable",
2423
"userDataTablename": "ZotUserDataTable",
2524
"versionTablename": "ZotVersion"
2625
}

go.mod

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -494,7 +494,7 @@ require (
494494
)
495495

496496
replace (
497-
github.com/opencontainers/umoci => github.com/project-stacker/umoci v0.0.0-20230228184813-24efbd35e8ef
497+
github.com/opencontainers/image-spec => github.com/laurentiuNiculae/image-spec v0.0.0-20230425110844-d558ca047578
498498
// v0.3.1-0.20230104082527-d6f58551be3f is taken from github.com/moby/buildkit v0.11.0
499499
// spdx logic write on v0.3.0 and incompatible with v0.3.1-0.20230104082527-d6f58551be3f
500500
// see https://github.com/aquasecurity/trivy/commit/2033e05b6b563aa4bc46d6234b3657a54e71ee46

go.sum

Lines changed: 7 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -279,7 +279,6 @@ github.com/Azure/go-ntlmssp v0.0.0-20220621081337-cb9428e4ac1e/go.mod h1:chxPXzS
279279
github.com/Azure/go-ntlmssp v0.0.0-20221128193559-754e69321358 h1:mFRzDkZVAjdal+s7s0MwaRv9igoPqLRdzOLzw/8Xvq8=
280280
github.com/Azure/go-ntlmssp v0.0.0-20221128193559-754e69321358/go.mod h1:chxPXzSsl7ZWRAuOIE23GDNzjWuZquvFlgA8xmpunjU=
281281
github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU=
282-
github.com/BurntSushi/toml v1.1.0/go.mod h1:CxXYINrC8qIiEnFrOxCa7Jy5BFHlXnUU2pbicEuybxQ=
283282
github.com/BurntSushi/toml v1.2.0/go.mod h1:CxXYINrC8qIiEnFrOxCa7Jy5BFHlXnUU2pbicEuybxQ=
284283
github.com/BurntSushi/toml v1.2.1 h1:9F2/+DoOYIOksmaJFPw1tGFy1eDnIJXg+UHjuD8lTak=
285284
github.com/BurntSushi/toml v1.2.1/go.mod h1:CxXYINrC8qIiEnFrOxCa7Jy5BFHlXnUU2pbicEuybxQ=
@@ -1563,6 +1562,8 @@ github.com/lann/builder v0.0.0-20180802200727-47ae307949d0 h1:SOEGU9fKiNWd/HOJuq
15631562
github.com/lann/builder v0.0.0-20180802200727-47ae307949d0/go.mod h1:dXGbAdH5GtBTC4WfIxhKZfyBF/HBFgRZSWwZ9g/He9o=
15641563
github.com/lann/ps v0.0.0-20150810152359-62de8c46ede0 h1:P6pPBnrTSX3DEVR4fDembhRWSsG5rVo6hYhAB/ADZrk=
15651564
github.com/lann/ps v0.0.0-20150810152359-62de8c46ede0/go.mod h1:vmVJ0l/dxyfGW6FmdpVm2joNMFikkuWg0EoCKLGUMNw=
1565+
github.com/laurentiuNiculae/image-spec v0.0.0-20230425110844-d558ca047578 h1:36+vmjp+4tJyujd4owi6z9lJIz9vIS+sS6V855EXpgQ=
1566+
github.com/laurentiuNiculae/image-spec v0.0.0-20230425110844-d558ca047578/go.mod h1:X4pATf0uXsnn3g5aiGIsVnJBR4mxhKzfwmvK/B2NTm8=
15661567
github.com/leodido/go-urn v1.2.1 h1:BqpAaACuzVSgi/VLzGZIobT2z4v53pjosyNd9Yv6n/w=
15671568
github.com/leodido/go-urn v1.2.1/go.mod h1:zt4jvISO2HfUBqxjfIshjdMTYS56ZS/qv49ictyFfxY=
15681569
github.com/letsencrypt/boulder v0.0.0-20220929215747-76583552c2be h1:Cx2bsfM27RBF/45zP1xhFN9FHDxo40LdYdE5L+GWVTw=
@@ -1629,6 +1630,7 @@ github.com/mattn/go-colorable v0.0.9/go.mod h1:9vuHe8Xs5qXnSaW/c/ABM9alt+Vo+STaO
16291630
github.com/mattn/go-colorable v0.1.1/go.mod h1:FuOcm+DKB9mbwrcAfNl7/TZVBZ6rcnceauSikq3lYCQ=
16301631
github.com/mattn/go-colorable v0.1.2/go.mod h1:U0ppj6V5qS13XJ6of8GYAs25YV2eR4EVcfRqFIhoBtE=
16311632
github.com/mattn/go-colorable v0.1.4/go.mod h1:U0ppj6V5qS13XJ6of8GYAs25YV2eR4EVcfRqFIhoBtE=
1633+
github.com/mattn/go-colorable v0.1.6/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc=
16321634
github.com/mattn/go-colorable v0.1.8/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc=
16331635
github.com/mattn/go-colorable v0.1.9/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc=
16341636
github.com/mattn/go-colorable v0.1.12/go.mod h1:u5H1YNBxpqRaxsYJYSkiCWKzEfiAb1Gb520KVy5xxl4=
@@ -1826,11 +1828,6 @@ github.com/opencontainers/go-digest v1.0.0-rc1/go.mod h1:cMLVZDEM3+U2I4VmLI6N8jQ
18261828
github.com/opencontainers/go-digest v1.0.0-rc1.0.20180430190053-c9281466c8b2/go.mod h1:cMLVZDEM3+U2I4VmLI6N8jQYUd2OVphdqWwCJHrFt2s=
18271829
github.com/opencontainers/go-digest v1.0.0 h1:apOUWs51W5PlhuyGyz9FCeeBIOUDA/6nW8Oi/yOhh5U=
18281830
github.com/opencontainers/go-digest v1.0.0/go.mod h1:0JzlMkj0TRzQZfJkVvzbP0HBR3IKzErnv2BNG4W4MAM=
1829-
github.com/opencontainers/image-spec v1.0.0/go.mod h1:BtxoFyWECRxE4U/7sNtV5W15zMzWCbyJoFRP3s7yZA0=
1830-
github.com/opencontainers/image-spec v1.0.1/go.mod h1:BtxoFyWECRxE4U/7sNtV5W15zMzWCbyJoFRP3s7yZA0=
1831-
github.com/opencontainers/image-spec v1.0.2/go.mod h1:BtxoFyWECRxE4U/7sNtV5W15zMzWCbyJoFRP3s7yZA0=
1832-
github.com/opencontainers/image-spec v1.1.0-rc2.0.20221020182949-4df8887994e8 h1:l9vfzobI7tZtG164u1Jf6NqDErHZoqAw8rlvBYQJpVI=
1833-
github.com/opencontainers/image-spec v1.1.0-rc2.0.20221020182949-4df8887994e8/go.mod h1:3OVijpioIKYWTqjiG0zfF6wvoJ4fAXGbjdZuI2NgsRQ=
18341831
github.com/opencontainers/runc v0.0.0-20190115041553-12f6a991201f/go.mod h1:qT5XzbpPznkRYVz/mWwUaVBUv2rmF59PVA73FjuZG0U=
18351832
github.com/opencontainers/runc v0.1.1/go.mod h1:qT5XzbpPznkRYVz/mWwUaVBUv2rmF59PVA73FjuZG0U=
18361833
github.com/opencontainers/runc v1.0.0-rc8.0.20190926000215-3e425f80a8c9/go.mod h1:qT5XzbpPznkRYVz/mWwUaVBUv2rmF59PVA73FjuZG0U=
@@ -1856,6 +1853,8 @@ github.com/opencontainers/selinux v1.10.0/go.mod h1:2i0OySw99QjzBBQByd1Gr9gSjvuh
18561853
github.com/opencontainers/selinux v1.10.1/go.mod h1:2i0OySw99QjzBBQByd1Gr9gSjvuho1lHsJxIJ3gGbJI=
18571854
github.com/opencontainers/selinux v1.11.0 h1:+5Zbo97w3Lbmb3PeqQtpmTkMwsW5nRI3YaLpt7tQ7oU=
18581855
github.com/opencontainers/selinux v1.11.0/go.mod h1:E5dMC3VPuVvVHDYmi78qvhJp8+M586T4DlDRYpFkyec=
1856+
github.com/opencontainers/umoci v0.4.8-0.20210922062158-e60a0cc726e6 h1:yRmw/21YcR/78dRoFyWNJ6c3VxOXqe97PhNZI0Ib7bM=
1857+
github.com/opencontainers/umoci v0.4.8-0.20210922062158-e60a0cc726e6/go.mod h1:kO0Bh4G4BZUh2QSlqsCR/OCtdqLjmt3mvD6okZhMBlU=
18591858
github.com/opentracing-contrib/go-observer v0.0.0-20170622124052-a52f23424492/go.mod h1:Ngi6UdF0k5OKD5t5wlmGhe/EDKPoUM3BXZSSfIuJbis=
18601859
github.com/opentracing/basictracer-go v1.0.0/go.mod h1:QfBfYuafItcjQuMwinw9GhYKwFXS9KnPs5lxoYwgW74=
18611860
github.com/opentracing/opentracing-go v1.0.2/go.mod h1:UkNAQd3GIcIGf0SeVgPpRdFStlNbqXla1AfSYxPUl2o=
@@ -1918,8 +1917,6 @@ github.com/poy/onpar v0.0.0-20190519213022-ee068f8ea4d1/go.mod h1:nSbFQvMj97ZyhF
19181917
github.com/pquerna/cachecontrol v0.0.0-20171018203845-0dec1b30a021/go.mod h1:prYjPmNq4d1NPVmpShWobRqXY3q7Vp+80DqgxxUrUIA=
19191918
github.com/proglottis/gpgme v0.1.3 h1:Crxx0oz4LKB3QXc5Ea0J19K/3ICfy3ftr5exgUK1AU0=
19201919
github.com/proglottis/gpgme v0.1.3/go.mod h1:fPbW/EZ0LvwQtH8Hy7eixhp1eF3G39dtx7GUN+0Gmy0=
1921-
github.com/project-stacker/umoci v0.0.0-20230228184813-24efbd35e8ef h1:PMJXsXS3x5tiwsRrFgMSnjKmeH5c9ppFXrS5NKdIPEo=
1922-
github.com/project-stacker/umoci v0.0.0-20230228184813-24efbd35e8ef/go.mod h1:smZzWUkoRRHivXkcHQN7n+KGHVfR+HKJrtCaI8cMifg=
19231920
github.com/prometheus/client_golang v0.0.0-20180209125602-c332b6f63c06/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw=
19241921
github.com/prometheus/client_golang v0.9.1/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw=
19251922
github.com/prometheus/client_golang v0.9.3-0.20190127221311-3c4408c8b829/go.mod h1:p2iRAGwDERtqlqzRXnrOVns+ignqQo//hLXqYxZYVNs=
@@ -2053,6 +2050,7 @@ github.com/sigstore/sigstore v1.4.4/go.mod h1:wIqu9sN72+pds31MMu89GchxXHy17k+VZW
20532050
github.com/sirupsen/logrus v1.0.4-0.20170822132746-89742aefa4b2/go.mod h1:pMByvHTf9Beacp5x1UXfOR9xyW/9antXMhjMPG0dEzc=
20542051
github.com/sirupsen/logrus v1.0.6/go.mod h1:pMByvHTf9Beacp5x1UXfOR9xyW/9antXMhjMPG0dEzc=
20552052
github.com/sirupsen/logrus v1.2.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo=
2053+
github.com/sirupsen/logrus v1.3.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo=
20562054
github.com/sirupsen/logrus v1.4.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo=
20572055
github.com/sirupsen/logrus v1.4.1/go.mod h1:ni0Sbl8bgC9z8RoU9G6nDWqqs/fq4eDPysMBDgk/93Q=
20582056
github.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6MwdIuYE2rE=
@@ -2219,9 +2217,9 @@ github.com/urfave/cli v1.22.7/go.mod h1:Gos4lmkARVdJ6EkW0WaNv/tZAAMe9V7XWyB60NtX
22192217
github.com/urfave/cli v1.22.12 h1:igJgVw1JdKH+trcLWLeLwZjU9fEfPesQ+9/e4MQ44S8=
22202218
github.com/urfave/cli v1.22.12/go.mod h1:sSBEIC79qR6OvcmsD4U3KABeOTxDqQtdDnaFuUN30b8=
22212219
github.com/urfave/cli/v2 v2.3.0/go.mod h1:LJmUH05zAU44vOAcrfzZQKsZbVcdbOG8rtL3/XcUArI=
2222-
github.com/urfave/cli/v2 v2.10.3/go.mod h1:f8iq5LtQ/bLxafbdBSLPPNsgaW0l/2fYYEHhAyPlwvo=
22232220
github.com/urfave/cli/v2 v2.25.0 h1:ykdZKuQey2zq0yin/l7JOm9Mh+pg72ngYMeB0ABn6q8=
22242221
github.com/urfave/cli/v2 v2.25.0/go.mod h1:GHupkWPMM0M/sj1a2b4wUrWBPzazNrIjouW6fmdJLxc=
2222+
github.com/vbatts/go-mtree v0.5.0/go.mod h1:7JbaNHyBMng+RP8C3Q4E+4Ca8JnGQA2R/MB+jb4tSOk=
22252223
github.com/vbatts/go-mtree v0.5.2 h1:d8SAbLJiR1cR3pe1J+FBaalRkCQw95gP12/P+a9PUcA=
22262224
github.com/vbatts/go-mtree v0.5.2/go.mod h1:e0NDJ+bT3jG7ZINeB9HR5AxTvjskCsOR54+9KoaXyDc=
22272225
github.com/vbatts/tar-split v0.11.2 h1:Via6XqJr0hceW4wff3QRzD5gAk/tatMw/4ZA7cTlIME=
@@ -2798,7 +2796,6 @@ golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBc
27982796
golang.org/x/sys v0.0.0-20220610221304-9f5ed59c137d/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
27992797
golang.org/x/sys v0.0.0-20220615213510-4f61da869c0c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
28002798
golang.org/x/sys v0.0.0-20220624220833-87e55d714810/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
2801-
golang.org/x/sys v0.0.0-20220704084225-05e143d24a9e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
28022799
golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
28032800
golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
28042801
golang.org/x/sys v0.0.0-20220728004956-3c1f35247d10/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=

golangcilint.yaml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,7 @@ linters-settings:
5454
- helm.sh/helm/v3
5555
- github.com/opencontainers/umoci
5656
- github.com/spdx/tools-golang
57+
- github.com/opencontainers/image-spec
5758
issues:
5859
exclude-rules:
5960
- path: pkg/extensions/search/schema.resolvers.go

pkg/api/controller_test.go

Lines changed: 5 additions & 135 deletions
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,6 @@ import (
5151
"zotregistry.io/zot/pkg/log"
5252
"zotregistry.io/zot/pkg/meta/repodb/repodbfactory"
5353
"zotregistry.io/zot/pkg/storage"
54-
storageConstants "zotregistry.io/zot/pkg/storage/constants"
5554
"zotregistry.io/zot/pkg/storage/local"
5655
"zotregistry.io/zot/pkg/test"
5756
)
@@ -157,7 +156,6 @@ func TestCreateCacheDatabaseDriver(t *testing.T) {
157156
"cacheTablename": "BlobTable",
158157
"repoMetaTablename": "RepoMetadataTable",
159158
"manifestDataTablename": "ManifestDataTable",
160-
"artifactDataTablename": "ArtifactDataTable",
161159
"userDataTablename": "ZotUserDataTable",
162160
"versionTablename": "Version",
163161
}
@@ -173,7 +171,6 @@ func TestCreateCacheDatabaseDriver(t *testing.T) {
173171
"cacheTablename": "BlobTable",
174172
"repoMetaTablename": "RepoMetadataTable",
175173
"manifestDataTablename": "ManifestDataTable",
176-
"artifactDataTablename": "ArtifactDataTable",
177174
"userDataTablename": "ZotUserDataTable",
178175
"versionTablename": "Version",
179176
}
@@ -188,7 +185,6 @@ func TestCreateCacheDatabaseDriver(t *testing.T) {
188185
"cacheTablename": "BlobTable",
189186
"repoMetaTablename": "RepoMetadataTable",
190187
"manifestDataTablename": "ManifestDataTable",
191-
"artifactDataTablename": "ArtifactDataTable",
192188
"userDataTablename": "ZotUserDataTable",
193189
"versionTablename": "Version",
194190
}
@@ -222,7 +218,6 @@ func TestCreateRepoDBDriver(t *testing.T) {
222218
"cachetablename": "BlobTable",
223219
"repometatablename": "RepoMetadataTable",
224220
"manifestdatatablename": "ManifestDataTable",
225-
"artifactDataTablename": "ArtifactDataTable",
226221
"userdatatablename": "UserDatatable",
227222
}
228223

@@ -236,7 +231,6 @@ func TestCreateRepoDBDriver(t *testing.T) {
236231
"cachetablename": "",
237232
"repometatablename": "RepoMetadataTable",
238233
"manifestdatatablename": "ManifestDataTable",
239-
"artifactDataTablename": "ArtifactDataTable",
240234
"userDataTablename": "ZotUserDataTable",
241235
"versiontablename": 1,
242236
}
@@ -252,7 +246,6 @@ func TestCreateRepoDBDriver(t *testing.T) {
252246
"repometatablename": "RepoMetadataTable",
253247
"manifestdatatablename": "ManifestDataTable",
254248
"indexdatatablename": "IndexDataTable",
255-
"artifactdatatablename": "ArtifactDataTable",
256249
"userdatatablename": "ZotUserDataTable",
257250
"versiontablename": "1",
258251
}
@@ -4304,138 +4297,15 @@ func TestArtifactReferences(t *testing.T) {
43044297
So(err, ShouldBeNil)
43054298
So(resp.StatusCode(), ShouldEqual, http.StatusOK)
43064299
So(resp.Header().Get("Content-Type"), ShouldEqual, ispec.MediaTypeImageIndex)
4307-
})
4308-
})
4309-
4310-
Convey("Validate Artifact Manifest Reference", func() {
4311-
resp, err := resty.R().Get(baseURL + fmt.Sprintf("/v2/%s/referrers/%s", repoName, digest.String()))
4312-
So(err, ShouldBeNil)
4313-
So(resp.StatusCode(), ShouldEqual, http.StatusOK)
4314-
4315-
var referrers ispec.Index
4316-
err = json.Unmarshal(resp.Body(), &referrers)
4317-
So(err, ShouldBeNil)
4318-
So(referrers.Manifests, ShouldBeEmpty)
4319-
4320-
// now upload a reference
4321-
4322-
// upload image config blob
4323-
resp, err = resty.R().Post(baseURL + fmt.Sprintf("/v2/%s/blobs/uploads/", repoName))
4324-
So(err, ShouldBeNil)
4325-
So(resp.StatusCode(), ShouldEqual, http.StatusAccepted)
4326-
loc := test.Location(baseURL, resp)
4327-
cblob, cdigest := test.GetEmptyImageConfig()
4328-
4329-
resp, err = resty.R().
4330-
SetContentLength(true).
4331-
SetHeader("Content-Length", fmt.Sprintf("%d", len(cblob))).
4332-
SetHeader("Content-Type", "application/octet-stream").
4333-
SetQueryParam("digest", cdigest.String()).
4334-
SetBody(cblob).
4335-
Put(loc)
4336-
So(err, ShouldBeNil)
4337-
So(resp.StatusCode(), ShouldEqual, http.StatusCreated)
4338-
4339-
// create a artifact
4340-
manifest := ispec.Artifact{
4341-
MediaType: ispec.MediaTypeArtifactManifest,
4342-
ArtifactType: artifactType,
4343-
Blobs: []ispec.Descriptor{
4344-
{
4345-
MediaType: "application/vnd.oci.image.layer.v1.tar",
4346-
Digest: digest,
4347-
Size: int64(len(content)),
4348-
},
4349-
},
4350-
Subject: &ispec.Descriptor{
4351-
MediaType: ispec.MediaTypeImageManifest,
4352-
Digest: digest,
4353-
Size: int64(len(content)),
4354-
},
4355-
Annotations: map[string]string{
4356-
"key": "val",
4357-
},
4358-
}
4359-
Convey("Using invalid content", func() {
4360-
content := []byte("invalid data")
4361-
So(err, ShouldBeNil)
4362-
mdigest := godigest.FromBytes(content)
4363-
So(mdigest, ShouldNotBeNil)
4364-
resp, err = resty.R().SetHeader("Content-Type", ispec.MediaTypeArtifactManifest).
4365-
SetBody(content).Put(baseURL + fmt.Sprintf("/v2/%s/manifests/%s", repoName, mdigest.String()))
4366-
So(err, ShouldBeNil)
4367-
So(resp.StatusCode(), ShouldEqual, http.StatusBadRequest)
4368-
4369-
// unknown repo will return status not found
4370-
resp, err = resty.R().Get(baseURL + fmt.Sprintf("/v2/%s/referrers/%s", "unknown", digest.String()))
4371-
So(err, ShouldBeNil)
4372-
So(resp.StatusCode(), ShouldEqual, http.StatusNotFound)
4373-
4374-
resp, err = resty.R().Get(baseURL + fmt.Sprintf("/v2/%s/referrers/%s", repoName, digest.String()))
4375-
So(err, ShouldBeNil)
4376-
So(resp.StatusCode(), ShouldEqual, http.StatusOK)
4300+
So(resp.Header().Get("OCI-Filters-Applied"), ShouldEqual, artifactType)
43774301

4378-
resp, err = resty.R().SetQueryParams(map[string]string{"artifactType": artifactType}).
4379-
Get(baseURL + fmt.Sprintf("/v2/%s/referrers/%s", repoName, digest.String()))
4380-
So(err, ShouldBeNil)
4381-
So(resp.StatusCode(), ShouldEqual, http.StatusOK)
4382-
})
4383-
Convey("Using valid content", func() {
4384-
content, err = json.Marshal(manifest)
4385-
So(err, ShouldBeNil)
4386-
mdigest := godigest.FromBytes(content)
4387-
So(mdigest, ShouldNotBeNil)
4388-
resp, err = resty.R().SetHeader("Content-Type", ispec.MediaTypeArtifactManifest).
4389-
SetBody(content).Put(baseURL + fmt.Sprintf("/v2/%s/manifests/%s", repoName, mdigest.String()))
4390-
So(err, ShouldBeNil)
4391-
So(resp.StatusCode(), ShouldEqual, http.StatusCreated)
4392-
4393-
resp, err = resty.R().Get(baseURL + fmt.Sprintf("/v2/%s/referrers/%s", repoName, digest.String()))
4394-
So(err, ShouldBeNil)
4395-
So(resp.StatusCode(), ShouldEqual, http.StatusOK)
4396-
4397-
resp, err = resty.R().SetQueryParams(map[string]string{"artifact": "invalid"}).
4398-
Get(baseURL + fmt.Sprintf("/v2/%s/referrers/%s", repoName, digest.String()))
4399-
So(err, ShouldBeNil)
4400-
So(resp.StatusCode(), ShouldEqual, http.StatusOK)
4401-
4402-
resp, err = resty.R().SetQueryParams(map[string]string{"artifactType": "invalid"}).
4403-
Get(baseURL + fmt.Sprintf("/v2/%s/referrers/%s", repoName, digest.String()))
4404-
So(err, ShouldBeNil)
4405-
So(resp.StatusCode(), ShouldEqual, http.StatusOK)
4406-
4407-
resp, err = resty.R().SetQueryParams(map[string]string{"artifactType": artifactType}).
4408-
Get(baseURL + fmt.Sprintf("/v2/%s/referrers/%s", repoName, digest.String()))
4302+
resp, err = resty.R().SetQueryParams(map[string]string{"artifactType": artifactType +
4303+
",otherArtType"}).Get(baseURL + fmt.Sprintf("/v2/%s/referrers/%s", repoName,
4304+
digest.String()))
44094305
So(err, ShouldBeNil)
44104306
So(resp.StatusCode(), ShouldEqual, http.StatusOK)
44114307
So(resp.Header().Get("Content-Type"), ShouldEqual, ispec.MediaTypeImageIndex)
4412-
4413-
var index ispec.Index
4414-
err = json.Unmarshal(resp.Body(), &index)
4415-
So(err, ShouldBeNil)
4416-
So(index.Manifests, ShouldNotBeEmpty)
4417-
So(index.Annotations[storageConstants.ReferrerFilterAnnotation], ShouldNotBeEmpty)
4418-
4419-
// filter by multiple artifactTypes
4420-
req, err := http.NewRequestWithContext(context.TODO(), http.MethodGet,
4421-
baseURL+fmt.Sprintf("/v2/%s/referrers/%s", repoName, digest.String()), nil)
4422-
So(err, ShouldBeNil)
4423-
values := url.Values{}
4424-
values.Add("artifactType", artifactType)
4425-
values.Add("artifactType", "foobar")
4426-
req.URL.RawQuery = values.Encode()
4427-
rsp, err := http.DefaultClient.Do(req)
4428-
So(err, ShouldBeNil)
4429-
defer rsp.Body.Close()
4430-
So(rsp.StatusCode, ShouldEqual, http.StatusOK)
4431-
So(rsp.Header.Get("Content-Type"), ShouldEqual, ispec.MediaTypeImageIndex)
4432-
body, err := io.ReadAll(rsp.Body)
4433-
So(err, ShouldBeNil)
4434-
err = json.Unmarshal(body, &index)
4435-
So(err, ShouldBeNil)
4436-
So(index.Manifests, ShouldNotBeEmpty)
4437-
So(index.Annotations[storageConstants.ReferrerFilterAnnotation], ShouldNotBeEmpty)
4438-
So(len(strings.Split(index.Annotations[storageConstants.ReferrerFilterAnnotation], ",")), ShouldEqual, 2)
4308+
So(resp.Header().Get("OCI-Filters-Applied"), ShouldEqual, artifactType+",otherArtType")
44394309
})
44404310
})
44414311
})

pkg/api/routes.go

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -408,7 +408,7 @@ func (rh *RouteHandler) GetManifest(response http.ResponseWriter, request *http.
408408
}
409409

410410
if rh.c.RepoDB != nil {
411-
err := meta.OnGetManifest(name, reference, digest, content, rh.c.StoreController, rh.c.RepoDB, rh.c.Log)
411+
err := meta.OnGetManifest(name, reference, content, rh.c.StoreController, rh.c.RepoDB, rh.c.Log)
412412

413413
if errors.Is(err, zerr.ErrOrphanSignature) {
414414
rh.c.Log.Error().Err(err).Msgf("image is an orphan signature")
@@ -514,6 +514,7 @@ func (rh *RouteHandler) GetReferrers(response http.ResponseWriter, request *http
514514
return
515515
}
516516

517+
response.Header().Set("OCI-Filters-Applied", strings.Join(artifactTypes, ","))
517518
WriteData(response, http.StatusOK, ispec.MediaTypeImageIndex, out)
518519
}
519520

pkg/cli/client.go

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -490,10 +490,8 @@ func isNotationSigned(ctx context.Context, repo, digestStr string, searchConf se
490490
return false
491491
}
492492

493-
for _, reference := range referrers.Manifests {
494-
if reference.ArtifactType == notreg.ArtifactTypeNotation {
495-
return true
496-
}
493+
if len(referrers.Manifests) > 0 {
494+
return true
497495
}
498496

499497
return false

0 commit comments

Comments
 (0)