diff --git a/descriptor.md b/descriptor.md index 2538bb514..ca2bdc91c 100644 --- a/descriptor.md +++ b/descriptor.md @@ -12,6 +12,7 @@ This section defines the `application/vnd.oci.descriptor.v1+json` [media type](m ## Properties A descriptor consists of a set of properties encapsulated in key-value fields. +A descriptor pointing to certain types may include extended fields. The following fields contain the primary properties that constitute a Descriptor: @@ -44,6 +45,37 @@ The following fields contain the primary properties that constitute a Descriptor This OPTIONAL property contains arbitrary metadata for this descriptor. This OPTIONAL property MUST use the [annotation rules](annotations.md#rules). +- **`platform`** *object* + + This OPTIONAL property describes the platform which the image in the manifest runs on. + This SHOULD only be used when referring to a manifest. + + - **`architecture`** *string* + + This REQUIRED property specifies the CPU architecture. + Image indexes SHOULD use, and implementations SHOULD understand, values [supported by runtime-spec's `platform.arch`][runtime-platform2]. + + - **`os`** *string* + + This REQUIRED property specifies the operating system. + Image indexes SHOULD use, and implementations SHOULD understand, values [supported by runtime-spec's `platform.os`][runtime-platform2]. + + - **`os.version`** *string* + + This OPTIONAL property specifies the operating system version, for example `10.0.10586`. + + - **`os.features`** *array of strings* + + This OPTIONAL property specifies an array of strings, each specifying a mandatory OS feature (for example on Windows `win32k`). + + - **`variant`** *string* + + This OPTIONAL property specifies the variant of the CPU, for example `armv6l` to specify a particular CPU variant of the ARM CPU. + + - **`features`** *array of strings* + + This OPTIONAL property specifies an array of strings, each specifying a mandatory CPU feature (for example `sse4` or `aes`). + ### Reserved The following field keys are reserved and MUST NOT be used by other specifications. diff --git a/image-index.md b/image-index.md index c85fd47b8..e61ab8430 100644 --- a/image-index.md +++ b/image-index.md @@ -25,7 +25,7 @@ For the media type(s) that this document is compatible with, see the [matrix][ma This REQUIRED property contains a list of [manifests](manifest.md) for specific platforms. While this property MUST be present, the size of the array MAY be zero. - Each object in `manifests` has the base properties of [descriptor](descriptor.md) with the following additional properties and restrictions: + Each object in `manifests` has the base properties of [descriptor](descriptor.md) with the following requirements and restrictions: - **`mediaType`** *string* @@ -43,32 +43,6 @@ For the media type(s) that this document is compatible with, see the [matrix][ma This OPTIONAL property describes the platform which the image in the manifest runs on. This property SHOULD be present if its target is platform-specific. - - **`architecture`** *string* - - This REQUIRED property specifies the CPU architecture. - Image indexes SHOULD use, and implementations SHOULD understand, values [supported by runtime-spec's `platform.arch`][runtime-platform2]. - - - **`os`** *string* - - This REQUIRED property specifies the operating system. - Image indexes SHOULD use, and implementations SHOULD understand, values [supported by runtime-spec's `platform.os`][runtime-platform2]. - - - **`os.version`** *string* - - This OPTIONAL property specifies the operating system version, for example `10.0.10586`. - - - **`os.features`** *array of strings* - - This OPTIONAL property specifies an array of strings, each specifying a mandatory OS feature (for example on Windows `win32k`). - - - **`variant`** *string* - - This OPTIONAL property specifies the variant of the CPU, for example `armv6l` to specify a particular CPU variant of the ARM CPU. - - - **`features`** *array of strings* - - This OPTIONAL property specifies an array of strings, each specifying a mandatory CPU feature (for example `sse4` or `aes`). - - **`annotations`** *string-string map* This OPTIONAL property contains arbitrary metadata for the image index. diff --git a/schema/defs-descriptor.json b/schema/defs-descriptor.json index 3d9996ad3..67921c9d6 100644 --- a/schema/defs-descriptor.json +++ b/schema/defs-descriptor.json @@ -19,6 +19,44 @@ "format": "uri" } }, + "platform": { + "id": "https://opencontainers.org/schema/image/descriptor/platform", + "type": "object", + "required": [ + "architecture", + "os" + ], + "properties": { + "architecture": { + "id": "https://opencontainers.org/schema/image/descriptor/platform/architecture", + "type": "string" + }, + "os": { + "id": "https://opencontainers.org/schema/image/descriptor/platform/os", + "type": "string" + }, + "os.version": { + "id": "https://opencontainers.org/schema/image/descriptor/platform/os.version", + "type": "string" + }, + "os.features": { + "id": "https://opencontainers.org/schema/image/descriptor/platform/os.features", + "type": "array", + "items": { + "type": "string" + } + }, + "variant": { + "type": "string" + }, + "features": { + "type": "array", + "items": { + "type": "string" + } + } + } + }, "annotations": { "id": "https://opencontainers.org/schema/image/descriptor/annotations", "$ref": "defs.json#/definitions/mapStringString" diff --git a/schema/fs.go b/schema/fs.go index fa92053df..fbbc0a559 100644 --- a/schema/fs.go +++ b/schema/fs.go @@ -205,7 +205,7 @@ var _escData = map[string]*_escFile{ "/config-schema.json": { local: "config-schema.json", size: 2771, - modtime: 1489007060, + modtime: 1491372287, compressed: ` H4sIAAAJbogA/+RWQW/bPAy9+1cYbo9t/R2+U67dbgMyINh2KIZAsemEnSVqFD3MGPLfB8vJZtmym3XI aScDFB/f4xMl60eSplkJrmC0gmSyVZqtLZhHMqLQAKePZCrcpxsLBVZYKJ9118FuXXEArTrIQcSu8vzZ @@ -223,7 +223,7 @@ b1D07fCyW0vviMlWxN4UcYpZ/Enjdtf+RQ3SGiZ/vj8oANpKu/UTMV9kR1SDMjPzGZ6y5MQwnZvwWfX7 "/content-descriptor.json": { local: "content-descriptor.json", size: 1091, - modtime: 1489085976, + modtime: 1491372287, compressed: ` H4sIAAAJbogA/5yTwW7UMBCG73mKUVqpl27NoeIQVb3AnQPcEAevPY6nJLYZz6oE1HdHjrNsAoiFve2O /m/mm2j8vQFoLWbDlIRiaDto3yUMb2IQTQEZyi8MAm+XUGR4n9CQI6Nn4ra0uM7G46gL7kVSp9RTjmFX @@ -237,23 +237,26 @@ NOoeV4ev1v0uEFzj1bNZXFvGLwdiLGIff30365vdnk4D8Kl5aX4EAAD//4LEuuxDBAAA "/defs-descriptor.json": { local: "defs-descriptor.json", - size: 906, - modtime: 1489085976, + size: 1966, + modtime: 1491372287, compressed: ` -H4sIAAAJbogA/6STT2/TQBDF7/kUwzaih8Rx4YCEVVVC9M6hnKjSaro79k7x/tHuRCVU+e5obTdJi0Cg -Hmx5RzPvze9p/TgDUIayThyFg1cNqEtq2XM5ZYiYhPWmxwQS4Esk/zl4QfaU4HIaCwmuImluWeOgsRxF -9yqqgeIDoBwZxq/bSPsSgGJTXK1IzE1dh0heP3nkVUhdnbUlhzU77Kg2e9f6oLZ80pJRW2VJ7LtDPaII -pQHv5vpT9Q2rn2fVx/Xh883J/G11c7tarB/Plu/ef9jV/9Y2V4PFbnRShjvKckz3IlyxBDpto4QuYbSs -QVvS3/PGwTgLoYXSFO7uScsS2A/HCQBOzy1me9GcW/qBhjQ77KfJi9P/zGFEul2sqvWiucaqLayLF0Sb -1Oe/8CD0PC5dGqFNwcGDZW1BLOeJAhxu4Y7AhAffBzRkft8UU8LtocxC7tj3z0wAqg3JYUldbRKrqb57 -hoHeB8Hn1/E1d+9Yb7/0PFFb9Ay1eXWfgz+pj36D2mG8GnYf31POs/LsZr8CAAD//1ayPsKKAwAA +H4sIAAAJbogA/7SVT1PbMBDF73yKrWDKIX9Me+hMMwwznXLvgZ7KBGaR19HSWFJXMjRl/N07ihPbCYSh +NNzitfT2/Z680cMBgMopaGEf2Vk1AXVOBVtOTwE8SmRdzVEgOvjmyX51NiJbEjhfbXMCF540F6xxqTFs +RFsVNYHUB0CVlDN+X3hqSwCK89TVxOjDJMucJ6vXPcLYySwL2lCJGZc4oyxvu2ad2nCtFRttFaKwnXV1 +jzGSLPGuLr+MfuDoz8no87T7+e7w6P3o6no8mD6cDD98/FRnL1t2pJYt6qaTynlGIfbptsKNhkDLwkc3 +E/SGNWhD+meoSmj2gisgLXI3t6TjENguH1cAcHxqMJizyamh35iT5hLnq51nx/+YQ4N0PRiPpoPJJY6K +xDrYIqpkHp7hQZhzYzothEJcCfeGtYFoOKwooMQF3BDk7t7OHeaUP3aKIrjoyhyp7PfdzQSgCiclptRV +JaxW9XoDw88xpmV7+fBasUcUDW9XF/pVsVBqdNn5RdGGI+lYCfU5XFibn3YnJs6TRKatNDY0+m/2AZbt +cPj4FNpX9SbH3h258Bof4zuS0Hyqe/fTar/GV0GYsn2ToDrxJ51tTho8PW3PsqyHa5vrDoXRxm2ml0Sy +K483Mv3kfwRa6yJuXln/cyR9vXaej4SKpJdTEca3wdnDrHdVZiX6i6Xxi579ZLM+qA/+BgAA//+NODnR +rgcAAA== `, }, "/defs.json": { local: "defs.json", size: 1670, - modtime: 1489007060, + modtime: 1491372287, compressed: ` H4sIAAAJbogA/7STza6bMBCF9zzFyO2S9oJtbGDb7hMpy6oLSiaJq2AjY6RWEe9e8RNChFuJKneRgGc8 3zmeMbcAgByxKa2qnTKa5EC+4klp1a8aaBs8grtY054vpnXgLgi7GvUXo12hNFo41FiqkyqLoTwceTOA @@ -267,41 +270,39 @@ fIvD7in0ryMEy+fK1G6UfmdTE+tvpoL+1wV/AgAA//96IpqyhgYAAA== "/image-index-schema.json": { local: "image-index-schema.json", - size: 3157, - modtime: 1489085976, + size: 2107, + modtime: 1491372287, compressed: ` -H4sIAAAJbogA/7yWz27bOBDG736KgRIglyRcLII9GEEuu5ec9tCglyKHCTmyJrVIlaSTuIXfvSBp2ZIo -u4lq9GYPOd98vxH//ZgBFIqctNx4NrqYQ/F/Q/pfoz2yJgv3NS4I7rWiN/jUkOSSJcaplyH33MmKagx5 -lffNXIhnZ/RVil4buxDKYumv/roRKXaW8li1KW4uhGlIy7aki2lptuBQXnAonxL9uqGQap6eSfoUa6xp -yHomV8whIAEUKf8zWZewUjinfajYQcm0VOASHjnwFUGsDLEyJDF4SWqADlADa08LstFCVJ7AJPo2d1It -ZVajZs31qi7m8Pc+hm9tLIY2aaSoUXNJzrsufquM1uK6491T3Z33YZy22H/b9pq96fGvth2x9G3FlkKt -L7toME+K8SGkXXbDjr8PIooX5HyxCz12xEcWRibfH8gXSFgLcXZgAFPGxWGpJEtakoIMKYqcWypDtqLS -XaldT67D7jgTikrWHCo4sXfSUdjk0O/xGSYCa3hae3KTvI4YZO3/uTlsbtv/99iTdt14s7DYVCxBViS/ -ulUNSaG1mzxeBozwt0HvyWq4uK3QVXfz24reUJHkGpfbzLuL6d0frp4h3couh2snZ0NYcgII06G0pobX -imUFPpwuiQhqXMMTgTKvemlQkZruOro66LlZoi+NrXPfH9vSO52Bz4ObGY5s6DiGVlbsSfqVpUEeQGF6 -TL2dDEd3c66dj0+mF0dNd9rhvGW9KAYTNmOYp7Rn3GlMXb9kd+UpzO1kT2OyJAzf4dQt3Osesdm/Mrtl -s8vz3ZAAm19iv6Bl1PkRO6mHxxv4h1Fnh/71DzTU2vj46Bw5iz/2zffHquiqTj6JuyKzMZb216b3NBsn -mvSCHMP4HYBgNNrMT/Ji7LXaeWbOAB5nm9nPAAAA//+x+RVQVQwAAA== +H4sIAAAJbogA/6SVP2/bMBDFd3+KgxIgSxIWRdBBCLK0S6YODboUGWjyZF4q/ilJN3YLf/eCpCXLlgwk +6pac7r37Pfok/l0AVBKD8OQiWVPVUH11aD5bEzkZ9PCo+Qrh0UjcwDeHghoSPLdeJ+1lEAo1TzoVo6sZ +ewnW3JTqrfUrJj1v4s2HO1ZqF0VHspOEmjHr0IhuZMiy0s0ojWeUxhdh3DpMUrt8QRFLzXnr0EfCUNWQ +IgFURf8dfSixSnmc9klRgIawlRBKPAwQFUKeDHkyFDP4XdyAB+AGyERcoc8I2XlGJnaM2Vt1KUczNBnS +a13V8PFQ45uulku78qTS3FCDIYZh/M6Ze8+3A/aIetj37jjdsC/747UH6Olfbf/E4681eUyzfvTVBI+S ++FOSXQ/Lgf6cVCStMMSqLz0PzCcWY2R//GC8IGkXcnfKALbJy+GxQY9GoIRRpGxy6bFJaolNuJH9mdym +t+OCSWzIUJoQ2IFk4LAbh34LZ2oEMrDcRgyzWCcAycRPd+fh9uf/Fjzhty7aledOkQChUPwMaw3FocMt +jNcpRvrX8RjRG7i6Vzyoh/pe4YZLFKR5u1c+XM0//dPtOU239u3p7oyzcWipBEjt0Hir4VWRUBDT16Uk +As23sESQ9tW0lkuU86kz1Vlm1/LYWK/H3O97pQ8IrLecjdw7nMXmxtiYr5aJE59NPnSdDT80GfIvTv/a +HX2ApxPNuiemYvxPgASaMccf4GrqThpcJguA58Vu8S8AAP//NlOuVTsIAAA= `, }, "/image-layout-schema.json": { local: "image-layout-schema.json", - size: 414, - modtime: 1485388791, + size: 439, + modtime: 1491372287, compressed: ` -H4sIAAAJbogA/2yPwUrEMBCG732KIXq0TQVPue5pQdiD4EU8xHa2zWKTOJkKi/TdJZlWD91TmD/z8c3/ -UwGoHlNHLrILXhlQp4j+EDxb55HgONkB4dlew8zw0o04WfWQqfskgwE1Mkej9SUFX0vaBBp0T/bMdfuk -JbsTzvUbkozWIaLvNlkqmGxrl8X1ZxELydeImQ0fF+zWLFKISOwwKQO5TTZkUi5+RUpSS/72bb9lA8IZ -eEQ4HY6wMxdusycm54f/HP08KQNv6wygHpu2adU6v5d3qQCWcjDh1+wI+z/k1rlV5pbqNwAA//8bwMuB -ngEAAA== +H4sIAAAJbogA/2yPQUvEMBCF7/0VQ/Sg4DYVPOW6pwVhD4IX8VDTaTvLNonJVFik/12SaRXRU5g38+W9 +91kBqA6TjRSYvFMG1DGg23vHLTmMcJjaAeGxvfiZ4cmOOLXqLlPXSQYDamQORutT8m4nau3joLvY9rxr +HrRoV8JRtyHJaO0DOruZpYLJtaZsrM/FWEi+BMysfzuhXbUQfcDIhEkZyG2yQyYl8TPGJLVk97fth1yA +74FHhOP+8LvyDbmy8JZ2EgZ6OuNtsS8fbrESR3LDj45unpSBl3UGUPd1UzdqnV/Lu1QAS2kS8X2miN03 +8l+PKnNL9RUAAP//k31n5bcBAAA= `, }, "/image-manifest-schema.json": { local: "image-manifest-schema.json", size: 921, - modtime: 1489085976, + modtime: 1491372287, compressed: ` H4sIAAAJbogA/5ySMW8iMRCF+/0VI0MJ+O501bZXUZxSJEoTpXB2x7uDWNsZmygo4r9HtnHAkCKifTvv zTdv/dEAiB59x+QCWSNaEHcOzT9rgiKDDOtJDQj/lSGNPsC9w440dSpNL6J97rsRJxWtYwiulXLjrVlm @@ -315,6 +316,6 @@ Dj+ZAwAA "/": { isDir: true, - local: "", + local: "/", }, } diff --git a/schema/image-index-schema.json b/schema/image-index-schema.json index d1f6e1086..9831dfede 100644 --- a/schema/image-index-schema.json +++ b/schema/image-index-schema.json @@ -39,42 +39,8 @@ "$ref": "defs-descriptor.json#/definitions/urls" }, "platform": { - "id": "https://opencontainers.org/schema/image/platform", - "type": "object", - "required": [ - "architecture", - "os" - ], - "properties": { - "architecture": { - "id": "https://opencontainers.org/schema/image/platform/architecture", - "type": "string" - }, - "os": { - "id": "https://opencontainers.org/schema/image/platform/os", - "type": "string" - }, - "os.version": { - "id": "https://opencontainers.org/schema/image/platform/os.version", - "type": "string" - }, - "os.features": { - "id": "https://opencontainers.org/schema/image/platform/os.features", - "type": "array", - "items": { - "type": "string" - } - }, - "variant": { - "type": "string" - }, - "features": { - "type": "array", - "items": { - "type": "string" - } - } - } + "id": "https://opencontainers.org/schema/image/descriptor/platform", + "$ref": "defs-descriptor.json#/definitions/platform" }, "annotations": { "id": "https://opencontainers.org/schema/image/descriptor/annotations",