Skip to content

Commit

Permalink
Merge pull request #620 from stevvooe/unify-descriptor-type
Browse files Browse the repository at this point in the history
specs-go/v1: unify the descriptor type
  • Loading branch information
jonboulle authored Apr 4, 2017
2 parents 3ff2369 + 572e6ae commit 8f27a02
Show file tree
Hide file tree
Showing 2 changed files with 34 additions and 36 deletions.
34 changes: 33 additions & 1 deletion specs-go/v1/descriptor.go
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,8 @@ package v1
import digest "github.com/opencontainers/go-digest"

// Descriptor describes the disposition of targeted content.
// This structure provides `application/vnd.oci.descriptor.v1+json` mediatype when marshalled to JSON
// This structure provides `application/vnd.oci.descriptor.v1+json` mediatype
// when marshalled to JSON.
type Descriptor struct {
// MediaType is the media type of the object this schema refers to.
MediaType string `json:"mediaType,omitempty"`
Expand All @@ -33,4 +34,35 @@ type Descriptor struct {

// Annotations contains arbitrary metadata relating to the targeted content.
Annotations map[string]string `json:"annotations,omitempty"`

// Platform describes the platform which the image in the manifest runs on.
//
// This should only be used when referring to a manifest.
Platform *Platform `json:"platform,omitempty"`
}

// Platform describes the platform which the image in the manifest runs on.
type Platform struct {
// Architecture field specifies the CPU architecture, for example
// `amd64` or `ppc64`.
Architecture string `json:"architecture"`

// OS specifies the operating system, for example `linux` or `windows`.
OS string `json:"os"`

// OSVersion is an optional field specifying the operating system
// version, for example `10.0.10586`.
OSVersion string `json:"os.version,omitempty"`

// OSFeatures is an optional field specifying an array of strings,
// each listing a required OS feature (for example on Windows `win32k`).
OSFeatures []string `json:"os.features,omitempty"`

// Variant is an optional field specifying a variant of the CPU, for
// example `ppc64le` to specify a little-endian version of a PowerPC CPU.
Variant string `json:"variant,omitempty"`

// Features is an optional field specifying an array of strings, each
// listing a required CPU feature (for example `sse4` or `aes`).
Features []string `json:"features,omitempty"`
}
36 changes: 1 addition & 35 deletions specs-go/v1/index.go
Original file line number Diff line number Diff line change
Expand Up @@ -16,47 +16,13 @@ package v1

import "github.com/opencontainers/image-spec/specs-go"

// Platform describes the platform which the image in the manifest runs on.
type Platform struct {
// Architecture field specifies the CPU architecture, for example
// `amd64` or `ppc64`.
Architecture string `json:"architecture"`

// OS specifies the operating system, for example `linux` or `windows`.
OS string `json:"os"`

// OSVersion is an optional field specifying the operating system
// version, for example `10.0.10586`.
OSVersion string `json:"os.version,omitempty"`

// OSFeatures is an optional field specifying an array of strings,
// each listing a required OS feature (for example on Windows `win32k`).
OSFeatures []string `json:"os.features,omitempty"`

// Variant is an optional field specifying a variant of the CPU, for
// example `ppc64le` to specify a little-endian version of a PowerPC CPU.
Variant string `json:"variant,omitempty"`

// Features is an optional field specifying an array of strings, each
// listing a required CPU feature (for example `sse4` or `aes`).
Features []string `json:"features,omitempty"`
}

// ManifestDescriptor describes a platform specific manifest.
type ManifestDescriptor struct {
Descriptor

// Platform describes the platform which the image in the manifest runs on.
Platform *Platform `json:"platform,omitempty"`
}

// Index references manifests for various platforms.
// This structure provides `application/vnd.oci.image.index.v1+json` mediatype when marshalled to JSON.
type Index struct {
specs.Versioned

// Manifests references platform specific manifests.
Manifests []ManifestDescriptor `json:"manifests"`
Manifests []Descriptor `json:"manifests"`

// Annotations contains arbitrary metadata for the image index.
Annotations map[string]string `json:"annotations,omitempty"`
Expand Down

0 comments on commit 8f27a02

Please sign in to comment.