From 08e2c256bbbe76bfdde695bfdcc3e7860aa92566 Mon Sep 17 00:00:00 2001 From: "W. Trevor King" Date: Wed, 4 Oct 2017 14:14:06 -0700 Subject: [PATCH] config: Drop "subset of the valid values" line In 718f9f3 (minor narrative cleanup regarding config compatibility, 2017-01-30, #673) we got: Implementations MUST error out when invalid values are encountered and MUST generate an error message and error out when encountering valid values it chooses to not support In c763e641 (config: Move valid-value rules to their own section, 2017-02-07, #681), I'd moved that out into the current "Valid values" section with the line I'm removing in this commit. However, giving runtimes a blanket clause to ignore valid values makes it harder to use runtimes, because you can't be sure an OCI-compliant runtime supports the spec-defined value you need [1]. There have been concerns about requiring runtimes to support values which are not supported by the host system [2]. But since 766abd6f (runtime.md: Require 'create' to fail if config.json asks for the impossible, 2016-09-08, #559) we've had runtime.md wording that gives the runtime the ability to compliantly die in those cases. That text had a wording tweak in 72e80620 (runtime: Explicitly make process.* timing implementation-defined, 2017-02-27, #700), and is now: If the runtime cannot apply a property as specified in the configuration, it MUST generate an error and a new container MUST NOT be created. As it stands both before and after this commit, a runtime can *still* die in 'create' because it cannot apply values supported by the host. This commit is just a step towards requiring runtimes to support as many values as the host supports; it doesn't get us all the way there. Many properties could use clearer runtimes-MUST-support wording for those values, but we can sort those out on a per-property basis in follow-up work. And runtimes are still allowed to support extention values not defined in the spec (e.g. new capability types, or mount options, or whatever). Like all extentions, it is up to the runtime and runtime-caller to negotiate support in those cases. [1]: https://github.com/opencontainers/runtime-spec/issues/813#issue-228291125 [2]: https://github.com/opencontainers/runtime-spec/pull/673#discussion_r99696863 Signed-off-by: W. Trevor King --- config.md | 1 - 1 file changed, 1 deletion(-) diff --git a/config.md b/config.md index 46937051b..7d95d09b6 100644 --- a/config.md +++ b/config.md @@ -460,7 +460,6 @@ Instead they MUST ignore unknown properties. ## Valid values Runtimes that are reading or processing this configuration file MUST generate an error when invalid or unsupported values are encountered. -Unless support for a valid value is explicitly required, runtimes MAY choose which subset of the valid values it will support. ## Configuration Schema Example