CA/reconcile for release versions stage 1
Doesn't yet consider version's relationship with release name.
This commit is contained in:
@@ -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);
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
@@ -16,4 +16,5 @@ import java.util.List;
|
||||
public interface ReleasesModel {
|
||||
List<ReleaseData> getReleases();
|
||||
Collection<String> getReleaseNames();
|
||||
Collection<String> getVersions();
|
||||
}
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user