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

*: Remove "bundle" and go straight to config.json #423

Closed
wants to merge 2 commits into from

Conversation

wking
Copy link
Contributor

@wking wking commented May 4, 2016

I think the root filesystem should be optional, but even folks who disagree on that point have come to the conclusion that it doesn't need to be in the bundle (#389, #394). #394 seems partially unfinished, with “MUST be included” and “single directory” wording still applying to the root filesystem, but I think the intention was clear (why allow absolute paths if the root filesystem must still be in the bundle directory?). Once you relax the “bundle must contain the root filesystem” requirement, the only thing that the bundle must contain is config.json. It doesn't seem to be worth the trouble to name a “bundle” construct if its only meaning is “the directory that holds config.json”, so this commit removes all remaining references to the term “bundle”.

We use the word “bundle” a lot, so this PR is split up into a few commits. The earlier commits stand alone (at least, to my eye), and I expect they, or something like them, should land regardless of how the bundle removal goes down. I'm happy to spin them off into separate PRs if that makes them easier to review. Once the early commits are out of the way, the final commit clears out any remaining “bundle” wording. More detailed motivation for each commit is in the commit message.

@vbatts
Copy link
Member

vbatts commented May 4, 2016

...

@wking
Copy link
Contributor Author

wking commented May 24, 2016 via email

@wking
Copy link
Contributor Author

wking commented May 24, 2016 via email

@crosbymichael
Copy link
Member

We discussed this on the call and all said that there is benefits of keeping the bundle and we don't want to remove it.

@wking
Copy link
Contributor Author

wking commented May 24, 2016

On Tue, May 24, 2016 at 03:01:14PM -0700, Michael Crosby wrote:

We discussed this on the call and all said that there is benefits of
keeping the bundle and we don't want to remove it.

There were certainly folks who wanted to keep it (most people who
chimed in?). But the end result (at least as I recorded it in the
minutes) was “needs more discussion in the PR” 1.

Let me pull out the the schema commit into it's own PR, and we can
take another look at this once it's down to just the final removal.
If we end up keeping the “bundle” word (which I don't think we want,
but that's currently not at consensus), I expect we'll still want at
least some parts of that last commit.

And this is rebased again with b08f2f439c3618 now that #451 and
#452 have landed.

The bundle contains 'config.json' and other things, but this schema is
just for 'config.json'.  This is mostly:

  $ sed -i 's|/bundle|/runtime/config|' schema/*.json

for the 'id' fields, but I also tweaked 'root.description' and the
schema.json 'description'.

Signed-off-by: W. Trevor King <[email protected]>
@wking
Copy link
Contributor Author

wking commented May 24, 2016

On Tue, May 24, 2016 at 03:32:00PM -0700, W. Trevor King wrote:

Let me pull out the the schema commit into it's own PR…

Done with #453, and I tweaked the commit to also adjust the Solaris
schema (which landed via #411). Rebased the final bundle-dropping
commit onto #453 with 39c36185a3bda6.

Some history behind bundle requirements:

* 77d44b1 (Update runtime.md, 2015-06-16) lands the initial reference
  to a root filesystem, requiring a relative path.  It also lands the
  "bundle" construct, which at this point includes content
  directories, signatures, and the configuration file.  The content
  directories "at least" include the root filesystem.

* 5d2eb18 (*: re-org the spec, 2015-06-24) shifts the bundle docs to
  bundle.md and demotes signatures to "other related content".

* 91f5ad7 (bundle.md: various updates to latest spec, 2015-07-02,
  opencontainers#55) finishes the signature demotion and strengthens the
  root-inclusion requirement with another "must include".

* 7232e4b (specs: introduce the concept of a runtime.json,
  2015-07-30, opencontainers#88) split out runtime.json, required the root directory
  to exist at `rootfs`, and dropped most references to "content
  directories".

* 106ec2d (Cleanup bundle.md, 2015-10-02, opencontainers#210) kept the requirement
  for a rootfs directory in the bundle root, but relaxed the name
  requirement to allow other single-component names
  (e.g. `my-rootfs`).  Dropped the last reference to "content
  directories".

* cb2da54 (config: Single, unified config file, 2015-12-28, opencontainers#284)
  rolled runtime.json back into config.json.

* b2e9154 (Remove requirement for rootfs path to be relative,
  2016-04-22, opencontainers#394) allowed absolute paths for root.path and removed
  some "same directory" language while leaving other "same directory"
  language.

I think the root filesystem should be optional [1], but even folks who
disagree on that point have come to the conclusion that it doesn't
need to be in the bundle [2].  opencontainers#394 seems partially unfinished, but I
think the intention was clear.  Once you relax the "bundle must
contain the root filesystem" requirement, the only thing that the
bundle must contain is config.json.  It doesn't seem to be worth the
trouble to name a "bundle" construct if its only meaning is "the
directory that holds config.json", so this commit removes all
remaining references to the term "bundle".

[1]: https://groups.google.com/a/opencontainers.org/forum/#!topic/dev/6ZKMNWujDhU
     Subject: Dropping the rootfs requirement and restoring arbitrary bundle content
     Date: Wed, 26 Aug 2015 12:54:47 -0700
     Message-ID: <[email protected]>
[2]: opencontainers#389 (comment)

Signed-off-by: W. Trevor King <[email protected]>
@wking
Copy link
Contributor Author

wking commented May 24, 2016

On Tue, May 24, 2016 at 03:41:18PM -0700, W. Trevor King wrote:

Rebased the final bundle-dropping commit onto #453 with 39c3618
5a3bda6.

And I adjusted that tip commit to remove some new bundle references
with 5a3bda6bc306b5.

@crosbymichael
Copy link
Member

-1

@dpc
Copy link

dpc commented Jun 12, 2017

Hi. So I am a random dev that is doing something using runc, and this bundle thing doesn't click in my head. It doesn't seem to have any purpose in this layer of abstraction. I have a use-case that uses rootfs from outside of "bundle directory" and my initial prototypes seem to work.

So, is there any technical reason for requiring rootfs to be in the same directory? If not (and clearly it's very useful to be able to get it from the outside), and it's officially supported, then the spec file is all that matters, and I don't see why I need to put the spec file in a directory and have its name hardcoded.

I get that it might be useful during packaging, image managment and delivery, etc. to talk about a "bundle" of some kind, and have a standard format of it, but then again: that's another level of abstraction, above just "running a container".

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.

4 participants