config: Do not allow runtimes to ignore properties defined by the spec#680
config: Do not allow runtimes to ignore properties defined by the spec#680wking wants to merge 1 commit intoopencontainers:mainfrom
Conversation
|
We are going to figure out a better way to word this. |
| ## Extensibility | ||
| Implementations that are reading/processing this configuration file MUST NOT generate an error if they encounter an unknown property. | ||
| Instead they MUST ignore unknown properties. | ||
| Properties defined for the [target platform](#platform) by the [declared version](#specification-version) of this specification MUST NOT be ignored. |
There was a problem hiding this comment.
@tianon questioned the “for the target platform” portion of this in #819, saying he would be surprised if the runtime did not error when the config set a property that this spec only defined for another platform (e.g. the Windows-only process.user.username in a Linux config). I, on the other hand, would be very surprised if the runtime cared about those properties at all (and I see no code in runC checking Process.Username). So whatever we end up doing to clarify the intended behavior, we'll want to cover what happens in situations like that.
|
let's make a decision on whether this is required for v1.0.0 |
|
IMO we can decide on the specifics of this edge case post-1.0 @crosbymichael what's your opinion on clarifying this being a 1.0 or 1.1 concern? |
|
On Wed, May 24, 2017 at 08:48:07AM -0700, v1.0.0.batts wrote:
let's make a decision on whether this is required for v1.0.0
I don't think the current spec is particularly clear, but if folks
read the current wording like I do [1] and we end up landing wording
settling on @tianon's interpretation [1], that would be a breaking
change (e.g. configs targeting Linux that set process.user.username
would go from being legal to being illegal). So if we punt to
post-1.0, settle on @tianon's interpretation, and feel like my current
reading has any merit, we'd have to bump to 2.0 when we landed wording
for @tianon's interpretation.
[1]: https://github.com/opencontainers/runtime-spec/pull/680/files#r116554735
|
Otherwise a runtime could silently ignore a property it didn't want to implement, which would be confusing for runtime callers [1]. This closes a potential loophole in the restriction from 766abd6 (runtime.md: Require 'create' to fail if config.json asks for the impossible, 2016-09-08, opencontainers#559). [1]: opencontainers#472 (comment) Signed-off-by: W. Trevor King <[email protected]>
|
Does this mean that everything that cannot be defined for one platform must be moved to platform specific code or explicitly annotated? eg currently |
|
house keeping: |
Otherwise a runtime could silently ignore a property it didn't want to implement, which would be confusing for runtime callers. This closes a potential loophole in the restriction from #559.