-
Notifications
You must be signed in to change notification settings - Fork 100
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Issue #724 A new config section under "HTTP" called "Compat" is added which currently takes a list of possible compatible legacy media-types. Only "docker2s2" (Docker Manifest V2 Schema V2) is currently supported. Signed-off-by: Ramkumar Chinchani <[email protected]>
- Loading branch information
Showing
12 changed files
with
173 additions
and
16 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,14 @@ | ||
{ | ||
"distSpecVersion": "1.1.0", | ||
"storage": { | ||
"rootDirectory": "/data/hdd/rchincha/tmp/zot" | ||
}, | ||
"http": { | ||
"address": "0.0.0.0", | ||
"port": "8080", | ||
"compat": ["docker2s2"] | ||
}, | ||
"log": { | ||
"level": "debug" | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,40 @@ | ||
package compat | ||
|
||
import ( | ||
"encoding/json" | ||
|
||
"zotregistry.dev/zot/errors" | ||
) | ||
|
||
// MediaCompatibility determines non-OCI media-compatilibility. | ||
type MediaCompatibility string | ||
|
||
const ( | ||
DockerManifestV2SchemaV2 = "docker2s2" | ||
) | ||
|
||
func (mc MediaCompatibility) MarshalJSON() ([]byte, error) { | ||
switch mc { | ||
case DockerManifestV2SchemaV2: | ||
return json.Marshal(DockerManifestV2SchemaV2) | ||
default: | ||
return nil, errors.ErrUnexpectedMediaType | ||
} | ||
} | ||
|
||
func (mc *MediaCompatibility) UnmarshalJSON(data []byte) error { | ||
var s string | ||
err := json.Unmarshal(data, &s) | ||
if err != nil { | ||
return err | ||
} | ||
|
||
switch s { | ||
case DockerManifestV2SchemaV2: | ||
*mc = MediaCompatibility(DockerManifestV2SchemaV2) | ||
default: | ||
return errors.ErrUnexpectedMediaType | ||
} | ||
|
||
return nil | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,79 @@ | ||
# Note: Intended to be run as "make run-blackbox-tests" or "make run-blackbox-ci" | ||
# Makefile target installs & checks all necessary tooling | ||
# Extra tools that are not covered in Makefile target needs to be added in verify_prerequisites() | ||
|
||
load helpers_zot | ||
|
||
function verify_prerequisites { | ||
if [ ! $(command -v curl) ]; then | ||
echo "you need to install curl as a prerequisite to running the tests" >&3 | ||
return 1 | ||
fi | ||
|
||
if [ ! $(command -v jq) ]; then | ||
echo "you need to install jq as a prerequisite to running the tests" >&3 | ||
return 1 | ||
fi | ||
|
||
return 0 | ||
} | ||
|
||
function setup_file() { | ||
# Verify prerequisites are available | ||
if ! $(verify_prerequisites); then | ||
exit 1 | ||
fi | ||
# Download test data to folder common for the entire suite, not just this file | ||
skopeo --insecure-policy copy --format=oci docker://ghcr.io/project-zot/golang:1.20 oci:${TEST_DATA_DIR}/golang:1.20 | ||
# Setup zot server | ||
local zot_root_dir=${BATS_FILE_TMPDIR}/zot | ||
local zot_config_file=${BATS_FILE_TMPDIR}/zot_config.json | ||
local oci_data_dir=${BATS_FILE_TMPDIR}/oci | ||
mkdir -p ${zot_root_dir} | ||
mkdir -p ${oci_data_dir} | ||
zot_port=$(get_free_port) | ||
echo ${zot_port} > ${BATS_FILE_TMPDIR}/zot.port | ||
cat > ${zot_config_file}<<EOF | ||
{ | ||
"distSpecVersion": "1.1.0", | ||
"storage": { | ||
"rootDirectory": "${zot_root_dir}" | ||
}, | ||
"http": { | ||
"address": "0.0.0.0", | ||
"port": "${zot_port}", | ||
"compat": ["docker2s2"] | ||
}, | ||
"log": { | ||
"level": "debug", | ||
"output": "${BATS_FILE_TMPDIR}/zot.log" | ||
} | ||
} | ||
EOF | ||
git -C ${BATS_FILE_TMPDIR} clone https://github.com/project-zot/helm-charts.git | ||
zot_serve ${ZOT_PATH} ${zot_config_file} | ||
wait_zot_reachable ${zot_port} | ||
} | ||
|
||
function teardown() { | ||
# conditionally printing on failure is possible from teardown but not from from teardown_file | ||
cat ${BATS_FILE_TMPDIR}/zot.log | ||
} | ||
|
||
function teardown_file() { | ||
zot_stop_all | ||
} | ||
|
||
@test "push docker image to compatible zot" { | ||
zot_port=`cat ${BATS_FILE_TMPDIR}/zot.port` | ||
cat > Dockerfile <<EOF | ||
FROM scratch | ||
ECHO "hello world" > /testfile | ||
EOF | ||
docker build -f Dockerfile . -t localhost:${zot_port}/test | ||
run docker push localhost:${zot_port}/test | ||
[ "$status" -eq 0 ] | ||
run docker pull localhost:${zot_port}/test | ||
[ "$status" -eq 0 ] | ||
} |