Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

image-layout: describe an OPTIONAL index #438

Closed
wants to merge 1 commit into from

Conversation

vbatts
Copy link
Member

@vbatts vbatts commented Nov 3, 2016

Depending on where and how an OCI image-layout is provided (tar, zip,
HTTP, etc) the mechanism to "walk" the refs can vary in complexity and
expense. For HTTP in example, getting a directory listing is often
disabled, but even would require multiple fetches to build the map of refs.

Signed-off-by: Vincent Batts vbatts@hashbangbash.com

Closes #374

@@ -115,4 +116,42 @@ $ cat ./blobs/sha256/e692418e4cbaf90ca69d05a66403747baa33ee08806650b51fab815ad7f
[tar stream]
```

## Index
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

k

Each object has the following properties:

- **ref** *string*, REQUIRED

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@@ -115,4 +116,42 @@ $ cat ./blobs/sha256/e692418e4cbaf90ca69d05a66403747baa33ee08806650b51fab815ad7f
[tar stream]
```

## Index

Index is intended to be generated from the content in an image-layout after any updates have been made.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

“any updates” → “any ref additions or removals”. You shouldn't need to update it after other changes (e.g. blob addition or removal, or changing a ref's descriptor payload).

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Those are both are updates of one kind or another.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

But there are updates that are not included in “ref additions or removals” (e.g. blob addition, or changing a ref's descriptor payload) which would not require index regeneration. I'm suggesting we make our regeneration suggestions as narrowly-scoped as possible, because conflicts around regenerating this index are one of the major pain-points with this approach.

## Index

Index is intended to be generated from the content in an image-layout after any updates have been made.
Allows for mapping random access to the references in the image-layout, and needing only to read from the `oci-layout` once to build this map of references.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'd rather replace this line with your HTTP use-case. Maybe just:

For example, HTTP servers often disable directory listing.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

why?

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

As it stands, the line is not a sentence (that would be “The index allows…” or some such). And you already have random access with refs/. The think the index adds is single-file list support when you can't walk refs/ with readdir(3) or similar. And the HTTP sentence makes that clear with a concrete example.


**index** *array of objects*, OPTIONAL

Provides a single access to top-level information about the layout.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Four-space indents nside list entries where we'll be using sub-lists (opencontainers/runtime-spec#495)?

And for the wording, maybe just “Provides a list of available refs.”

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is the same indentation used in the config.md and manifest.md for its field descriptions.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

If you want to punt for now, that's fine with me (I'm not a consumer of the compiled HTML or PDF output). But runtime-spec has had both opencontainers/runtime-spec#495 and opencontainers/runtime-spec#608 to avoid issues with two-space indents for sub-lists. It seems like we should be sticking to that pattern here for new additions, and eventually someone will be bothered enough by:

<ul>
<li><strong><code>mediaType</code></strong> <em>string</em></li>
</ul>
<p>This REQUIRED property contains the MIME type of the referenced content.</p>
<p>The OCI image specification defines <a href="media-types.md">several of its \
own MIME types</a> for resources defined in the specification.</p>

That they'll go through and fix the existing Markdown ;).

Index is intended to be generated from the content in an image-layout after any updates have been made.
Allows for mapping random access to the references in the image-layout, and needing only to read from the `oci-layout` once to build this map of references.

**index** *array of objects*, OPTIONAL
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The ref list could get large, and I'd rather not overload the “do I understand how to parse this?“ oci-layout. Can we put this index in refs.json instead? You could just dive in with the array:

$ cat refs.json
["latest", "v1"]

Since the filename + the version from oci-layout sufficiently namespace it.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

it has the potential for being long, no matter where it lives. And as the oci-layout is required file, it will already be stat'ed or fetched. Deferring to another file means another read, that could be a ENOENT or a 404. Plus this truncated list you mention does not allow for having tagged metadata.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

With a separate file, a long index only impacts ref-listing. By putting it in oci-layout, a long index impacts any image-layout activity (because everyone should be checking to see “is this an image-layout version I understand” before trying to use the bits they need).

Plus this truncated list you mention does not allow for having tagged metadata.

If annotating refs is important, I'd rather have annotations added to the descriptor model. Do you have an example use case that shows that annotations are useful for refs but not for descriptors in general?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

That still means that a read per ref.
The whole notion of an index will be for those sharing it in their own use-case being able to bubble up the important pieces of metadata per ref. Adding it to the descriptor might be fine as well, but as RPM, debian, and other repos have shown, there is a vast amount of metadata provided as early as possible. It is not my job to limit to these unknown users what information they're allowed to bubble up. Again, I am not just thinking through my own personal use-case of what is needed in my home directory of my personal machine.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Adding annotations to descriptors is not directly coupled to removing it from an index. It just means that folks who find the ref payload via refs/ will still have access to it (and can skip loading the potentially large index JSON). Once you have descriptor annotations, you can certainly cache them in the index as a separate performance optimization. But only supporting ref annotations via the index (and not via refs/) seems like a strange position.


- **annotations** *string-string map*, OPTIONAL

This field is under the same constaints as [manifest `annotations`](manifest.md#image-manifest-property-descriptions)
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'd rather not add this field to the ref index, since it wouldn't be supported by ref/-walking listers. Can you motivate a use-case for it? Folks who wanted to annotate a ref can already do so by adding a new ref (e.g. v1.0.0.annotations) pointing at a CAS blob with their desired payload.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Because there is tooling that may publish or fetch from an OCI image-layout, that needs top-level views. This is arbitrary metadata.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I've spun this off into #440. Can we drop it from this PR and focus on the ref-listing use case? We can come back and add it to the index if the consensus after #440 is “yes we need these, and no we can't add annotations to the descriptor model” (that's not the consensus I expect, but I'm not a maintainer ;).

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

really spreading out the topics. there is hardly a consensus reachable when the topic is so diluted.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Folks have suggested that I keep too many points in a single PR and end up distracting from that PR. If you feel like the annotations discussion is fundamental to this PR, I'm happy to keep it here (and you should probably close #440 with “Discussion in #438” or some such).

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

oh, it's just here, there and everywhere. The further dilution of topics never seems to have the intention to arrive at a conclusion, only to further add items to come to agreement on.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I expect we will more quickly arrive at a consensus for a ref index to support our existing ref listing over HTTP (when the HTTP server disables directory listing), since we both agree that's important. I'm suggesting we decouple the orthogonal ref-annotation issue so that it doesn't bog down the ref-indexing discussion, which should help us reach a consensus on ref-indexing more quickly.

@wking
Copy link
Contributor

wking commented Nov 3, 2016

On Thu, Nov 03, 2016 at 07:41:35AM -0700, Vincent Batts wrote:

Depending on where and how an OCI image-layout is provided (tar,
zip, HTTP, etc) the mechanism to "walk" the refs can vary in
complexity and expense. For HTTP in example, getting a directory
listing is often disabled, but even would require multiple fetches
to build the map of refs.

Ref payloads are just descriptors, so they usually won't be very big.
For cases where a JSON listing of all refs is feasible, we can
probably inline the descriptor value in the ref-listing JSON file.
For example:

$ cat refs.json
{
"v1.0" {
"size": 4096,
"digest": "sha256:e692418e4cbaf90ca69d05a66403747baa33ee08806650b51fab815ad7fc331f",
"mediaType": "application/vnd.oci.image.manifest.list.v1+json"}
},

}

Once you have that, maybe you no longer need /refs? There are pros
and cons to either approach:

  • A refs.json works well over HTTP, where listing refs/ may not be
    enabled. It may provide slow access to a known ref, since you have
    to unmarshal a potentially large JSON document before you can lookup
    the ref you need.
  • A refs/ directory avoids racy conflicts around reading/writing a
    single file. Multiple consumers can read from and atomically update
    entries in the directory without problems. It also provides fast
    access to a known ref.

My feeling is that in situations where you're using a ref-listing JSON
(e.g. over HTTP):

  • You don't really care about speed, because it's dwarfed by network
    latency.
  • You don't really care about update conflicts, because if you are
    running a service supporting concurrent modifications, you probably
    have something more sophisticated than direct access to refs.json.

So I'd argue for refs.json as a complete replacement for refs/ which
should live under a 2.x imageLayoutVersion series. Refs and CAS are
completely orthogonal, so we might want to replace imageLayoutVersion
with separate version numbers for refs and CAS. Then you could say:

$ cat oci-layout
{
"refsLayoutVersion": "1.0.0",
"casLayoutVersion": "1.0.0"
}

for refs/ and:

$ cat oci-layout
{
"refsLayoutVersion": "2.0.0",
"casLayoutVersion": "1.0.0"
}

for refs.json.

@wking
Copy link
Contributor

wking commented Nov 3, 2016

On Thu, Nov 03, 2016 at 09:41:26AM -0700, W. Trevor King wrote:

Refs and CAS are completely orthogonal, so we might want to replace
imageLayoutVersion with separate version numbers for refs and CAS.

Spun off into #441 to avoid distracting here.


- **annotations** *string-string map*, OPTIONAL

This field is under the same constaints as [manifest `annotations`](manifest.md#image-manifest-property-descriptions)
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

constaints a typo here :)

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

fixed

@vbatts vbatts force-pushed the image-layout_index branch 2 times, most recently from 88eca7e to eb8a764 Compare November 29, 2016 22:21
@vbatts
Copy link
Member Author

vbatts commented Nov 29, 2016

updated. PTAL

@@ -118,4 +119,40 @@ $ cat ./blobs/sha256/e692418e4cbaf90ca69d05a66403747baa33ee08806650b51fab815ad7f
[tar stream]
```

## Index

Index is intended to be generated from the content in an image-layout after any udates have been made.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

nit: udates

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

fxied

@stevvooe
Copy link
Contributor

This is a great change, but the structure is nearly identical to manifest-list. Let's do the following:

  1. Remove the refs concept. It overlaps too much and isn't very useful.
  2. Add an annotations field to descriptor.
  3. Modify manifest-list type to clarify that it can be used in this role.
  4. Have the image layout specify and index.json as a manifest-list.

In general, this addresses concerns I've had with refs. Thanks for taking this problem on!

@vbatts vbatts force-pushed the image-layout_index branch from eb8a764 to 9b6dd3d Compare November 30, 2016 23:44
@philips
Copy link
Contributor

philips commented Nov 30, 2016

@stevvooe I think I largely agree but what replaces the concept of a "ref name" in the manifest list? Any arbitrary annotation?

@vbatts
Copy link
Member Author

vbatts commented Dec 1, 2016 via email

@stevvooe
Copy link
Contributor

stevvooe commented Dec 2, 2016

@philips @vbatts I was leaving that as arbitrary for now. We could have tools on import pick up various fields then work on conventions from there.

Perhaps we work through this change and address this in a follow up.

I can already imagine a tool that dumps the index and annotations:

$ oci-image inspect foo.tar.gz
sha256:abcdef
  org.opencontainer.ref.name=foo
  org.opencontainer.morejunk=bar

Maybe integrate such that the consumer doesn't need to have a convention:

$ docker load -t $(oci-image inspect -f '{.Annotations["org.opencontainer.ref.name"}' foo.tar.gz) foo.tar.gz

@stevvooe
Copy link
Contributor

stevvooe commented Dec 7, 2016

@vbatts Any movement on updating this approach to use the manifest list type?

@vbatts
Copy link
Member Author

vbatts commented Dec 13, 2016

i'm still mulling on this @stevvooe . I realize this is very overlapped with the manifest-list, though the manifest list is meant for pointing to only manifests with an election based on platform, though the act of indexing could allow for pointing to any mediatypes (even arbitrary types). I feel like this is different enough.

It would take some restructuring of the manifest-list that would make it generic.

@wking
Copy link
Contributor

wking commented Dec 13, 2016 via email

@vbatts
Copy link
Member Author

vbatts commented Dec 13, 2016

@wking besides the manifests field name with the sentence This REQUIRED property contains a list of manifests for specific platforms.

@wking
Copy link
Contributor

wking commented Dec 13, 2016 via email

@vbatts
Copy link
Member Author

vbatts commented Dec 13, 2016

i do agree all the platform values would be better as annotations. Especially given their inconsistent naming convention (to speak of, we use under_score, camelCase, and field.name 😬 )

@stevvooe
Copy link
Contributor

@vbatts The manifest-list is already generic enough. I'd prefer not to see a secondary data type that is the same but not.

though the manifest list is meant for pointing to only manifests with an election based on platform

The manifest-list was never meant to be limited to this particular use case. It got de-featured during the design process, since no one could understand its usefulness in other cases (like this one), as I had argued back at that time. Subsequently, this was the use case that got it in, but the limitation is arbitrary.

Adding annotations is all it would take. No other movements are necessary.

@alexlarsson
Copy link

Dropping platform from the manifest list and having a generic annotations with some common standard fields seems like a great improvement to me. The current set of fields has a bunch of essentially free-form fields with zero guidance to how you would use them anyway.

For the manifest list digest it would be quite nice if you could extend it with other types. For instance, when using OCI registries for flatpak I would like to put in an index in the registry that points to an appstream[1] xml file which could be used by a graphical app-store frontent. I.e. it would get me metadata like title, description, icons, screenshots, etc for all the apps in the registry. But I agree with @wking in that it seems the spec already allows this.

[1] https://www.freedesktop.org/wiki/Distributions/AppStream/

Depending on where and how an OCI image-layout is provided (tar, zip,
HTTP, etc) the mechanism to "walk" the refs can vary in complexity and
expense. For HTTP in example, getting a directory listing is often
disabled, but even would require multiple fetches to build the map of refs.

Signed-off-by: Vincent Batts <vbatts@hashbangbash.com>
@vbatts vbatts force-pushed the image-layout_index branch from 9b6dd3d to 04404f0 Compare December 15, 2016 21:11
@vbatts
Copy link
Member Author

vbatts commented Dec 15, 2016

i've just rebased this, but haven't had a chance to merge it with @stevvooe thoughts on an index.json that is a manifest-list. Nor updates to the manifest-list.md that would make it more generic to be a descriptor-list. 😬

@vbatts vbatts added this to the v1.0.0-rc4 milestone Jan 18, 2017
@RobDolinMS
Copy link
Collaborator

@vbatts has some hesitation on this potentially being too generic.
@stevvooe Can you comment on this?

@stevvooe
Copy link
Contributor

@vbatts @RobDolinMS I thought we had agreed that these were structurally identical to manifest lists.

That would entail closing this PR and fixing it to take that into account.

@xiekeyang
Copy link
Contributor

@vbatts
If we should restrain that objects in Index field MUST be manifest (maybe or layer) type? These might be all possible types for Index.

And if we should NOTE the different of Index and manifest-list in this section? Currently manifest-list is mainly for pointing to one manifest under specific platform. While Index is for including many manifests, with some sequential dependency.

@vbatts
Copy link
Member Author

vbatts commented Jan 25, 2017

Next steps here to move forward and satisfy the requirements would be:

  • keeping manifest-list as "the entry point" ( it was a lot work to get it there for schema 2)
  • loosen up required fields
  • optional /index.json
  • add to manifest-list a field like "channels" or "descriptors"

Last thing for me to do is clarify the scope/context of annotations and expectations around conveying them.

@stevvooe stevvooe modified the milestones: v1.0.0, v1.0.0-rc4 Jan 25, 2017
vbatts added a commit to vbatts/oci-image-spec that referenced this pull request Jan 26, 2017
From the 2017-01-25 call we agreed to keep the manifest list as the
entry point for accessing objects. The index concept is only a more
generic use of the manifest-list.
opencontainers#438 (comment)

This change uses the manifest-list as an index that allows
implementations to work around needing to walk/traverse the `./refs/` or
`./blobs/` directories.

Obsoletes opencontainers#438

Signed-off-by: Vincent Batts <vbatts@hashbangbash.com>
vbatts added a commit to vbatts/oci-image-spec that referenced this pull request Jan 27, 2017
From the 2017-01-25 call we agreed to keep the manifest list as the
entry point for accessing objects. The index concept is only a more
generic use of the manifest-list.
opencontainers#438 (comment)

This change uses the manifest-list as an index that allows
implementations to work around needing to walk/traverse the `./refs/` or
`./blobs/` directories.

Obsoletes opencontainers#438

Signed-off-by: Vincent Batts <vbatts@hashbangbash.com>
vbatts added a commit to vbatts/oci-image-spec that referenced this pull request Jan 27, 2017
From the 2017-01-25 call we agreed to keep the manifest list as the
entry point for accessing objects. The index concept is only a more
generic use of the manifest-list.
opencontainers#438 (comment)

This change uses the manifest-list as an index that allows
implementations to work around needing to walk/traverse the `./refs/` or
`./blobs/` directories.

This includes validating the image-layout example.

This also makes `validate-examples` automatically update `schema-fs` if
there have been changes to the JSON schema.

Obsoletes opencontainers#438

Signed-off-by: Vincent Batts <vbatts@hashbangbash.com>
vbatts added a commit to vbatts/oci-image-spec that referenced this pull request Jan 27, 2017
From the 2017-01-25 call we agreed to keep the manifest list as the
entry point for accessing objects. The index concept is only a more
generic use of the manifest-list.
opencontainers#438 (comment)

This change uses the manifest-list as an index that allows
implementations to work around needing to walk/traverse the `./refs/` or
`./blobs/` directories.

This includes validating the image-layout example.

This also makes `validate-examples` automatically update `schema-fs` if
there have been changes to the JSON schema.

Obsoletes opencontainers#438

Signed-off-by: Vincent Batts <vbatts@hashbangbash.com>
vbatts added a commit to vbatts/oci-image-spec that referenced this pull request Jan 28, 2017
From the 2017-01-25 call we agreed to keep the manifest list as the
entry point for accessing objects. The index concept is only a more
generic use of the manifest-list.
opencontainers#438 (comment)

This change uses the manifest-list as an index that allows
implementations to work around needing to walk/traverse the `./refs/` or
`./blobs/` directories.

This includes validating the image-layout example.

This also makes `validate-examples` automatically update `schema-fs` if
there have been changes to the JSON schema.

Obsoletes opencontainers#438

Signed-off-by: Vincent Batts <vbatts@hashbangbash.com>
vbatts added a commit to vbatts/oci-image-spec that referenced this pull request Jan 28, 2017
From the 2017-01-25 call we agreed to keep the manifest list as the
entry point for accessing objects. The index concept is only a more
generic use of the manifest-list.
opencontainers#438 (comment)

This change uses the manifest-list as an index that allows
implementations to work around needing to walk/traverse the `./refs/` or
`./blobs/` directories.

This includes validating the image-layout example.

This also makes `validate-examples` automatically update `schema-fs` if
there have been changes to the JSON schema.

Obsoletes opencontainers#438

Signed-off-by: Vincent Batts <vbatts@hashbangbash.com>
vbatts added a commit to vbatts/oci-image-spec that referenced this pull request Jan 30, 2017
From the 2017-01-25 call we agreed to keep the manifest list as the
entry point for accessing objects. The index concept is only a more
generic use of the manifest-list.
opencontainers#438 (comment)

This change uses the manifest-list as an index that allows
implementations to work around needing to walk/traverse the `./refs/` or
`./blobs/` directories.

This includes validating the image-layout example.

This also makes `validate-examples` automatically update `schema-fs` if
there have been changes to the JSON schema.

Obsoletes opencontainers#438

Signed-off-by: Vincent Batts <vbatts@hashbangbash.com>
@vbatts vbatts modified the milestones: v1.0.0-rc5, v1.0.0 Feb 1, 2017
vbatts added a commit to vbatts/oci-image-spec that referenced this pull request Feb 3, 2017
From the 2017-01-25 call we agreed to keep the manifest list as the
entry point for accessing objects. The index concept is only a more
generic use of the manifest-list.
opencontainers#438 (comment)

This change uses the manifest-list as an index that allows
implementations to work around needing to walk/traverse the `./refs/`
directory.

As the `./refs/` directory was REQUIRED to exist, with its removal this
`index.json` is REQUIRED to be present.

This includes validating the image-layout example.

This also makes `validate-examples` automatically update `schema-fs` if
there have been changes to the JSON schema.

Obsoletes opencontainers#438

Signed-off-by: Vincent Batts <vbatts@hashbangbash.com>
vbatts added a commit to vbatts/oci-image-spec that referenced this pull request Feb 6, 2017
From the 2017-01-25 call we agreed to keep the manifest list as the
entry point for accessing objects. The index concept is only a more
generic use of the manifest-list.
opencontainers#438 (comment)

This change uses the manifest-list as an index that allows
implementations to work around needing to walk/traverse the `./refs/`
directory.

As the `./refs/` directory was REQUIRED to exist, with its removal this
`index.json` is REQUIRED to be present.

This includes validating the image-layout example.

This also makes `validate-examples` automatically update `schema-fs` if
there have been changes to the JSON schema.

Obsoletes opencontainers#438

Signed-off-by: Vincent Batts <vbatts@hashbangbash.com>
@vbatts
Copy link
Member Author

vbatts commented Feb 8, 2017

#533 merged

@vbatts vbatts closed this Feb 8, 2017
@vbatts vbatts deleted the image-layout_index branch February 8, 2017 13:58
dattgoswami9lk5g added a commit to dattgoswami9lk5g/bremlinr that referenced this pull request Jun 6, 2022
From the 2017-01-25 call we agreed to keep the manifest list as the
entry point for accessing objects. The index concept is only a more
generic use of the manifest-list.
opencontainers/image-spec#438 (comment)

This change uses the manifest-list as an index that allows
implementations to work around needing to walk/traverse the `./refs/`
directory.

As the `./refs/` directory was REQUIRED to exist, with its removal this
`index.json` is REQUIRED to be present.

This includes validating the image-layout example.

This also makes `validate-examples` automatically update `schema-fs` if
there have been changes to the JSON schema.

Obsoletes #438

Signed-off-by: Vincent Batts <vbatts@hashbangbash.com>
7c00d pushed a commit to 7c00d/J1nHyeockKim that referenced this pull request Jun 6, 2022
From the 2017-01-25 call we agreed to keep the manifest list as the
entry point for accessing objects. The index concept is only a more
generic use of the manifest-list.
opencontainers/image-spec#438 (comment)

This change uses the manifest-list as an index that allows
implementations to work around needing to walk/traverse the `./refs/`
directory.

As the `./refs/` directory was REQUIRED to exist, with its removal this
`index.json` is REQUIRED to be present.

This includes validating the image-layout example.

This also makes `validate-examples` automatically update `schema-fs` if
there have been changes to the JSON schema.

Obsoletes #438

Signed-off-by: Vincent Batts <vbatts@hashbangbash.com>
7c00d added a commit to 7c00d/J1nHyeockKim that referenced this pull request Jun 6, 2022
From the 2017-01-25 call we agreed to keep the manifest list as the
entry point for accessing objects. The index concept is only a more
generic use of the manifest-list.
opencontainers/image-spec#438 (comment)

This change uses the manifest-list as an index that allows
implementations to work around needing to walk/traverse the `./refs/`
directory.

As the `./refs/` directory was REQUIRED to exist, with its removal this
`index.json` is REQUIRED to be present.

This includes validating the image-layout example.

This also makes `validate-examples` automatically update `schema-fs` if
there have been changes to the JSON schema.

Obsoletes #438

Signed-off-by: Vincent Batts <vbatts@hashbangbash.com>
laventuraw added a commit to laventuraw/Kihara-tony0 that referenced this pull request Jun 6, 2022
From the 2017-01-25 call we agreed to keep the manifest list as the
entry point for accessing objects. The index concept is only a more
generic use of the manifest-list.
opencontainers/image-spec#438 (comment)

This change uses the manifest-list as an index that allows
implementations to work around needing to walk/traverse the `./refs/`
directory.

As the `./refs/` directory was REQUIRED to exist, with its removal this
`index.json` is REQUIRED to be present.

This includes validating the image-layout example.

This also makes `validate-examples` automatically update `schema-fs` if
there have been changes to the JSON schema.

Obsoletes #438

Signed-off-by: Vincent Batts <vbatts@hashbangbash.com>
tomalopbsr0tt added a commit to tomalopbsr0tt/fabiojosej that referenced this pull request Oct 6, 2022
From the 2017-01-25 call we agreed to keep the manifest list as the
entry point for accessing objects. The index concept is only a more
generic use of the manifest-list.
opencontainers/image-spec#438 (comment)

This change uses the manifest-list as an index that allows
implementations to work around needing to walk/traverse the `./refs/`
directory.

As the `./refs/` directory was REQUIRED to exist, with its removal this
`index.json` is REQUIRED to be present.

This includes validating the image-layout example.

This also makes `validate-examples` automatically update `schema-fs` if
there have been changes to the JSON schema.

Obsoletes #438

Signed-off-by: Vincent Batts <vbatts@hashbangbash.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

8 participants