Simplify contraints between release attributes

This commit is contained in:
Kris De Volder
2017-07-28 16:06:11 -07:00
parent af3ca76047
commit 51954fe306
2 changed files with 5 additions and 7 deletions

View File

@@ -219,16 +219,11 @@ public class BoshDeploymentManifestSchema implements YamlSchema {
YBeanType t_release = f.ybean("Release");
addProp(t_release, "name", t_release_name_def).isPrimary(true);
addProp(t_release, "version", t_release_version);
//TODO: the checking here is just 'my best guess'. Unclarity remains:
// See: https://github.com/cloudfoundry/docs-bosh/issues/330
addProp(t_release, "version", t_release_version).isRequired(true);
addProp(t_release, "url", t_url);
addProp(t_release, "sha1", t_ne_string);
addProp(v2Schema, "releases", f.yseq(t_release)).isRequired(true);
t_release.require(Constraints.requireAtLeastOneOf("url", "version"));
// ^^^^^^^ allthough docs seem to imply you shouldn't
// define both url and version it seems that bosh tolerates it.
t_release.require(BoshConstraints.SHA1_REQUIRED_FOR_HTTP_URL);
addProp(v2Schema, "releases", f.yseq(t_release)).isRequired(true);
YBeanType t_stemcell = f.ybean("Stemcell");

View File

@@ -294,12 +294,15 @@ public class BoshEditorTest {
"- name: some-release\n" +
" url: https://my.releases.com/funky.tar.gz\n" +
"- name: other-relase\n" +
" version: other-version\n" +
" url: file:///root/releases/a-nice-file.tar.gz\n" +
"- name: bad-url\n" +
" version: more-version\n" +
" url: proto://something.com\n" +
"#x"
);
editor.assertProblems(
"^-^ name: some-release|'version' is required",
"url|'sha1' is recommended when the 'url' is http(s)",
"proto|Url scheme must be one of [http, https, file]",
"x|are required"