Skip to content

Commit

Permalink
Merge pull request #212 from stevvooe/remove-serialization-from-media…
Browse files Browse the repository at this point in the history
…type

serialization: remove extra "hierarchy" from mediatypes
  • Loading branch information
stevvooe authored Sep 1, 2016
2 parents 259eb6b + 5861fdb commit 6170597
Show file tree
Hide file tree
Showing 14 changed files with 34 additions and 34 deletions.
2 changes: 1 addition & 1 deletion cmd/oci-image-tool/validate.go
Original file line number Diff line number Diff line change
Expand Up @@ -142,7 +142,7 @@ func (v *validateCmd) validatePath(name string) error {
return schema.MediaTypeManifestList.Validate(f)

case typeConfig:
return schema.MediaTypeImageSerializationConfig.Validate(f)
return schema.MediaTypeImageConfig.Validate(f)
}

return fmt.Errorf("type %q unimplemented", typ)
Expand Down
4 changes: 2 additions & 2 deletions image-layout.md
Original file line number Diff line number Diff line change
Expand Up @@ -83,13 +83,13 @@ $ cat ./blobs/sha256-afff3924849e458c5ef237db5f89539274d5e609db5db935ed3959c90f1
"schemaVersion": 2,
"mediaType": "application/vnd.oci.image.manifest.v1+json",
"config": [
"mediaType": "application/vnd.oci.image.serialization.config.v1+json",
"mediaType": "application/vnd.oci.image.config.v1+json",
"size": 7023,
"digest": "sha256:5b0bcabd1ed22e9fb1310cf6c2dec7cdef19f0ad69efa1f392e94a4333501270"
},
"layers": [
{
"mediaType": "application/vnd.oci.image.serialization.rootfs.tar.gzip",
"mediaType": "application/vnd.oci.image.layer.tar+gzip",
"size": 32654,
"digest": "sha256:e692418e4cbaf90ca69d05a66403747baa33ee08806650b51fab815ad7fc331f"
},
Expand Down
2 changes: 1 addition & 1 deletion image/config.go
Original file line number Diff line number Diff line change
Expand Up @@ -62,7 +62,7 @@ func findConfig(w walker, d *descriptor) (*config, error) {
return errors.Wrapf(err, "%s: error reading config", path)
}

if err := schema.MediaTypeImageSerializationConfig.Validate(bytes.NewReader(buf)); err != nil {
if err := schema.MediaTypeImageConfig.Validate(bytes.NewReader(buf)); err != nil {
return errors.Wrapf(err, "%s: config validation failed", path)
}

Expand Down
2 changes: 1 addition & 1 deletion image/manifest.go
Original file line number Diff line number Diff line change
Expand Up @@ -89,7 +89,7 @@ func (m *manifest) validate(w walker) error {

func (m *manifest) unpack(w walker, dest string) error {
for _, d := range m.Layers {
if d.MediaType != string(schema.MediaTypeImageSerialization) {
if d.MediaType != string(schema.MediaTypeImageConfig) {
continue
}

Expand Down
4 changes: 2 additions & 2 deletions img/media-types.dot
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,8 @@ digraph G {
{
manifestList [shape=note, label="Manifest list\n<<optional>>\napplication/vnd.oci.image.manifest.list.v1+json"]
manifest [shape=note, label="Image manifest\napplication/vnd.oci.image.manifest.v1+json"]
config [shape=note, label="Image JSON\napplication/vnd.oci.image.serialization.config.v1+json"]
layer [shape=note, label="Layer tar+gzip\napplication/vnd.oci.image.serialization.rootfs.tar.gzip"]
config [shape=note, label="Image JSON\napplication/vnd.oci.image.config.v1+json"]
layer [shape=note, label="Layer tar+gzip\napplication/vnd.oci.image.layer.tar+gzip"]
combined [shape=note, label="Combined image JSON and filesystem changesets\n<<optional>>\napplication/vnd.oci.image.serialization.combined.v1+json"]
}

Expand Down
Binary file modified img/media-types.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
8 changes: 4 additions & 4 deletions manifest.md
Original file line number Diff line number Diff line change
Expand Up @@ -158,23 +158,23 @@ Unlike the [Manifest List](#manifest-list), which contains information about a s
"schemaVersion": 2,
"mediaType": "application/vnd.oci.image.manifest.v1+json",
"config": {
"mediaType": "application/vnd.oci.image.serialization.config.v1+json",
"mediaType": "application/vnd.oci.image.config.v1+json",
"size": 7023,
"digest": "sha256:b5b2b2c507a0944348e0303114d8d93aaaa081732b86451d9bce1f432a537bc7"
},
"layers": [
{
"mediaType": "application/vnd.oci.image.serialization.rootfs.tar.gzip",
"mediaType": "application/vnd.oci.image.layer.tar+gzip",
"size": 32654,
"digest": "sha256:e692418e4cbaf90ca69d05a66403747baa33ee08806650b51fab815ad7fc331f"
},
{
"mediaType": "application/vnd.oci.image.serialization.rootfs.tar.gzip",
"mediaType": "application/vnd.oci.image.layer.tar+gzip",
"size": 16724,
"digest": "sha256:3c3a4604a545cdc127456d94e421cd355bca5b528f4a9c1905b15da2eb4a4c6b"
},
{
"mediaType": "application/vnd.oci.image.serialization.rootfs.tar.gzip",
"mediaType": "application/vnd.oci.image.layer.tar+gzip",
"size": 73109,
"digest": "sha256:ec4b8955958665577945c89419d1af06b5f7636b4ac3da7f12184802ad867736"
}
Expand Down
6 changes: 3 additions & 3 deletions media-types.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,8 @@ The following `mediaType` MIME types are used by the formats described here, and
- `application/vnd.oci.descriptor.v1+json`: [Content Descriptor](descriptor.md)
- `application/vnd.oci.image.manifest.list.v1+json`: [Manifest list](manifest.md#manifest-list)
- `application/vnd.oci.image.manifest.v1+json`: [Image manifest format](manifest.md#image-manifest)
- `application/vnd.oci.image.serialization.config.v1+json`: [Container config JSON](serialization.md)
- `application/vnd.oci.image.serialization.rootfs.tar.gzip`: ["Layer", as a gzipped tar archive](layer.md)
- `application/vnd.oci.image.layer.tar+gzip`: ["Layer", as a gzipped tar archive](layer.md)
- `application/vnd.oci.image.config.v1+json`: [Container config JSON](serialization.md)

## Compatibility Matrix

Expand All @@ -32,7 +32,7 @@ This section shows where the OCI Image Specification is compatible with formats

- [application/vnd.docker.image.rootfs.diff.tar.gzip](https://github.com/docker/docker/blob/master/image/spec/v1.md#creating-an-image-filesystem-changeset)

### application/vnd.oci.image.serialization.config.v1+json
### application/vnd.oci.image.config.v1+json

**Similar/related schema**

Expand Down
2 changes: 1 addition & 1 deletion schema/config_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -156,7 +156,7 @@ func TestConfig(t *testing.T) {
},
} {
r := strings.NewReader(tt.config)
err := schema.MediaTypeImageSerializationConfig.Validate(r)
err := schema.MediaTypeImageConfig.Validate(r)

if got := err != nil; tt.fail != got {
t.Errorf("test %d: expected validation failure %t but got %t, err %v", i, tt.fail, got, err)
Expand Down
4 changes: 2 additions & 2 deletions schema/manifest_backwards_compatibility_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ var compatMap = map[string]string{
"application/vnd.docker.distribution.manifest.list.v2+json": "application/vnd.oci.image.manifest.list.v1+json",
"application/vnd.docker.distribution.manifest.v2+json": "application/vnd.oci.image.manifest.v1+json",
"application/vnd.docker.image.rootfs.diff.tar.gzip": "application/vnd.oci.image.rootfs.tar.gzip",
"application/vnd.docker.container.image.v1+json": "application/vnd.oci.image.serialization.config.v1+json",
"application/vnd.docker.container.image.v1+json": "application/vnd.oci.image.config.v1+json",
}

// convertFormats converts Docker v2.2 image format JSON documents to OCI
Expand Down Expand Up @@ -220,7 +220,7 @@ func TestBackwardsCompatibilityConfig(t *testing.T) {

manifest := convertFormats(tt.manifest)
r := strings.NewReader(manifest)
err := schema.MediaTypeImageSerializationConfig.Validate(r)
err := schema.MediaTypeImageConfig.Validate(r)

if got := err != nil; tt.fail != got {
t.Errorf("test %d: expected validation failure %t but got %t, err %v", i, tt.fail, got, err)
Expand Down
8 changes: 4 additions & 4 deletions schema/manifest_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -66,7 +66,7 @@ func TestManifest(t *testing.T) {
},
"layers": [
{
"mediaType": "application/vnd.oci.image.serialization.rootfs.tar.gzip",
"mediaType": "application/vnd.oci.image.layer.tar+gzip",
"size": "675598"
}
]
Expand All @@ -88,17 +88,17 @@ func TestManifest(t *testing.T) {
},
"layers": [
{
"mediaType": "application/vnd.oci.image.serialization.rootfs.tar.gzip",
"mediaType": "application/vnd.oci.image.layer.tar+gzip",
"size": 675598,
"digest": "sha256:9d3dd9504c685a304985025df4ed0283e47ac9ffa9bd0326fddf4d59513f0827"
},
{
"mediaType": "application/vnd.oci.image.serialization.rootfs.tar.gzip",
"mediaType": "application/vnd.oci.image.layer.tar+gzip",
"size": 156,
"digest": "sha256:2b689805fbd00b2db1df73fae47562faac1a626d5f61744bfe29946ecff5d73d"
},
{
"mediaType": "application/vnd.oci.image.serialization.rootfs.tar.gzip",
"mediaType": "application/vnd.oci.image.layer.tar+gzip",
"size": 148,
"digest": "sha256:c57089565e894899735d458f0fd4bb17a0f1e0df8d72da392b85c9b35ee777cd"
}
Expand Down
18 changes: 9 additions & 9 deletions schema/schema.go
Original file line number Diff line number Diff line change
Expand Up @@ -18,11 +18,11 @@ import "net/http"

// Media types for the OCI image formats
const (
MediaTypeDescriptor Validator = `application/vnd.oci.descriptor.v1+json`
MediaTypeManifest Validator = `application/vnd.oci.image.manifest.v1+json`
MediaTypeManifestList Validator = `application/vnd.oci.image.manifest.list.v1+json`
MediaTypeImageSerialization unimplemented = `application/vnd.oci.image.serialization.rootfs.tar.gzip`
MediaTypeImageSerializationConfig Validator = `application/vnd.oci.image.serialization.config.v1+json`
MediaTypeDescriptor Validator = `application/vnd.oci.descriptor.v1+json`
MediaTypeManifest Validator = `application/vnd.oci.image.manifest.v1+json`
MediaTypeManifestList Validator = `application/vnd.oci.image.manifest.list.v1+json`
MediaTypeImageConfig Validator = `application/vnd.oci.image.config.v1+json`
MediaTypeImageLayer unimplemented = `application/vnd.oci.image.layer.tar+gzip`
)

var (
Expand All @@ -32,10 +32,10 @@ var (

// specs maps OCI schema media types to schema files.
specs = map[Validator]string{
MediaTypeDescriptor: "content-descriptor.json",
MediaTypeManifest: "image-manifest-schema.json",
MediaTypeManifestList: "manifest-list-schema.json",
MediaTypeImageSerializationConfig: "config-schema.json",
MediaTypeDescriptor: "content-descriptor.json",
MediaTypeManifest: "image-manifest-schema.json",
MediaTypeManifestList: "manifest-list-schema.json",
MediaTypeImageConfig: "config-schema.json",
}
)

Expand Down
4 changes: 2 additions & 2 deletions serialization.md
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,7 @@ This specification uses the following terms:
<dd>
A layer DiffID is a SHA256 digest over the layer's uncompressed tar archive and serialized in the descriptor digest format, e.g., <code>sha256:a9561eb1b190625c9adb5a9513e72c4dedafc1cb2d4c5236c9a6957ec7dfd5a9</code>.
Layers must be packed and unpacked reproducibly to avoid changing the layer ID, for example by using tar-split to save the tar headers.
NOTE: the DiffID is different than the digest in the manifest list because the manifest digest is taken over the gzipped layer for `application/vnd.oci.image.serialization.rootfs.tar.gzip` types.
NOTE: the DiffID is different than the digest in the manifest list because the manifest digest is taken over the gzipped layer for `application/vnd.oci.image.layer.tar+gzip` types.
</dd>
<dt>
Layer ChainID
Expand Down Expand Up @@ -66,7 +66,7 @@ This specification uses the following terms:

Here is an example image JSON file:

```json,title=Image%20JSON&mediatype=application/vnd.oci.image.serialization.config.v1%2Bjson
```json,title=Image%20JSON&mediatype=application/vnd.oci.image.config.v1%2Bjson
{
"created": "2015-10-31T22:22:56.015925234Z",
"author": "Alyssa P. Hacker <alyspdev@example.com>",
Expand Down
4 changes: 2 additions & 2 deletions specs-go/v1/mediatype.go
Original file line number Diff line number Diff line change
Expand Up @@ -25,8 +25,8 @@ const (
MediaTypeImageManifestList = "application/vnd.oci.image.manifest.list.v1+json"

// MediaTypeImageSerialization is the mediaType used for layers referenced by the manifest.
MediaTypeImageSerialization = "application/vnd.oci.image.serialization.rootfs.tar.gzip"
MediaTypeImageSerialization = "application/vnd.oci.image.layer.tar+gzip"

// MediaTypeImageSerializationConfig specifies the mediaType for the image configuration.
MediaTypeImageSerializationConfig = "application/vnd.oci.image.serialization.config.v1+json"
MediaTypeImageSerializationConfig = "application/vnd.oci.image.config.v1+json"
)

0 comments on commit 6170597

Please sign in to comment.