CA/reconcile for release versions stage 1

Doesn't yet consider version's relationship with release name.
This commit is contained in:
Kris De Volder
2017-07-27 13:44:10 -07:00
parent a92accde86
commit ca93d93d15
4 changed files with 51 additions and 4 deletions

View File

@@ -180,13 +180,13 @@ public class BoshDeploymentManifestSchema implements YamlSchema {
addProp(t_instance_group_env, "bosh", t_params);
addProp(t_instance_group_env, "password", t_ne_string);
YAtomicType t_version = f.yatomic("Version");
t_version.addHints("latest");
t_version.parseWith(ValueParsers.NE_STRING);
YAtomicType t_release_version = f.yenumFromDynamicValues("ReleaseVersion", dc -> releasesProvider.getModel(dc).getVersions());
t_release_version.addHints("latest");
t_release_version.alsoAccept("latest");
YBeanType t_release = f.ybean("Release");
addProp(t_release, "name", t_release_name_def).isPrimary(true);
addProp(t_release, "version", t_version);
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, "url", t_url);

View File

@@ -32,6 +32,9 @@ public class BoshCommandReleasesProvider extends BoshCommandBasedModelProvider<
private static final YamlTraversal RELEASE_NAMES = RELEASES
.thenValAt("name");
private static final YamlTraversal RELEASE_VERSIONS = RELEASES
.thenValAt("version");
public BoshCommandReleasesProvider(BoshCliConfig config) {
super(config);
}
@@ -62,6 +65,11 @@ public class BoshCommandReleasesProvider extends BoshCommandBasedModelProvider<
public Collection<String> getReleaseNames() {
return getNames(cursor, RELEASE_NAMES);
}
@Override
public Collection<String> getVersions() {
return getNames(cursor, RELEASE_VERSIONS);
}
};
}

View File

@@ -16,4 +16,5 @@ import java.util.List;
public interface ReleasesModel {
List<ReleaseData> getReleases();
Collection<String> getReleaseNames();
Collection<String> getVersions();
}

View File

@@ -1179,6 +1179,44 @@ public class BoshEditorTest {
editor.assertProblems("bogus|unknown 'ReleaseName'. Valid values are: [foo, bar]");
}
@Test public void contentAssistReleaseVersion() throws Exception {
releasesProvider = provideReleasesFrom(
new ReleaseData("foo", "123.4"),
new ReleaseData("foo", "222.2"),
new ReleaseData("bar", "222.2"),
new ReleaseData("bar", "333.3")
);
Editor editor = harness.newEditor(
"releases:\n" +
"- version: <*>"
);
editor.assertContextualCompletions("<*>",
"123.4<*>",
"222.2<*>",
"333.3<*>",
"latest<*>"
);
}
@Test public void reconcileReleaseVersion() throws Exception {
releasesProvider = provideReleasesFrom(
new ReleaseData("foo", "123.4"),
new ReleaseData("foo", "222.2"),
new ReleaseData("bar", "222.2"),
new ReleaseData("bar", "333.3")
);
Editor editor = harness.newEditor(
"releases:\n" +
"- version: 123.4\n" +
"- version: bogus\n"
);
editor.ignoreProblem(YamlSchemaProblems.MISSING_PROPERTY);
editor.assertProblems("bogus|unknown 'ReleaseVersion'. Valid values are: [123.4, 222.2, 333.3]");
}
private DynamicModelProvider<ReleasesModel> provideReleasesFrom(ReleaseData... stemcellData) {
return new BoshCommandReleasesProvider(cliConfig) {
@Override