From 4835a1389138b127e97438c17664d06e5610180c Mon Sep 17 00:00:00 2001 From: Kris De Volder Date: Mon, 10 Jul 2017 14:39:57 -0700 Subject: [PATCH] Add some more properties to bosh manifest schema --- .../bosh/BoshDeploymentManifestSchema.java | 12 ++++++++++++ .../desc/BoshDeploymentManifest/director_uuid.md | 6 ++++++ .../desc/BoshDeploymentManifest/releases.md | 6 ++++++ .../src/main/resources/desc/Release/name.md | 1 + .../src/main/resources/desc/Release/version.md | 1 + .../ide/vscode/concourse/BoshEditorTest.java | 16 ++++++++++++++-- 6 files changed, 40 insertions(+), 2 deletions(-) create mode 100644 headless-services/bosh-language-server/src/main/resources/desc/BoshDeploymentManifest/director_uuid.md create mode 100644 headless-services/bosh-language-server/src/main/resources/desc/BoshDeploymentManifest/releases.md create mode 100644 headless-services/bosh-language-server/src/main/resources/desc/Release/name.md create mode 100644 headless-services/bosh-language-server/src/main/resources/desc/Release/version.md diff --git a/headless-services/bosh-language-server/src/main/java/org/springframework/ide/vscode/bosh/BoshDeploymentManifestSchema.java b/headless-services/bosh-language-server/src/main/java/org/springframework/ide/vscode/bosh/BoshDeploymentManifestSchema.java index 3ad4d94c6..78a9a4c38 100644 --- a/headless-services/bosh-language-server/src/main/java/org/springframework/ide/vscode/bosh/BoshDeploymentManifestSchema.java +++ b/headless-services/bosh-language-server/src/main/java/org/springframework/ide/vscode/bosh/BoshDeploymentManifestSchema.java @@ -17,6 +17,7 @@ import org.springframework.ide.vscode.commons.yaml.schema.YType; import org.springframework.ide.vscode.commons.yaml.schema.YTypeFactory; import org.springframework.ide.vscode.commons.yaml.schema.YTypeFactory.AbstractType; import org.springframework.ide.vscode.commons.yaml.schema.YTypeFactory.YAtomicType; +import org.springframework.ide.vscode.commons.yaml.schema.YTypeFactory.YBeanType; import org.springframework.ide.vscode.commons.yaml.schema.YTypeFactory.YTypedPropertyImpl; import org.springframework.ide.vscode.commons.yaml.schema.YTypeUtil; import org.springframework.ide.vscode.commons.yaml.schema.YamlSchema; @@ -50,6 +51,17 @@ public class BoshDeploymentManifestSchema implements YamlSchema { TOPLEVEL_TYPE = f.ybean("BoshDeploymentManifest"); addProp(TOPLEVEL_TYPE, "name", t_ne_string); + addProp(TOPLEVEL_TYPE, "director_uuid", t_ne_string); + + YAtomicType t_version = f.yatomic("Version"); + t_version.addHints("latest"); + t_version.parseWith(ValueParsers.NE_STRING); + + YBeanType t_release = f.ybean("Release"); + addProp(t_release, "name", t_ne_string); + addProp(t_release, "version", t_version); + + addProp(TOPLEVEL_TYPE, "releases", f.yseq(t_release)); } @Override diff --git a/headless-services/bosh-language-server/src/main/resources/desc/BoshDeploymentManifest/director_uuid.md b/headless-services/bosh-language-server/src/main/resources/desc/BoshDeploymentManifest/director_uuid.md new file mode 100644 index 000000000..5b0b5ee67 --- /dev/null +++ b/headless-services/bosh-language-server/src/main/resources/desc/BoshDeploymentManifest/director_uuid.md @@ -0,0 +1,6 @@ +*Required*. This string must match the UUID of the currently targeted Director for the CLI to allow any operations on the deployment. Use `bosh env` to display the UUID of the currently targeted Director. + +Example: + + name: my-redis + director_uuid: cf8dc1fc-9c42-4ffc-96f1-fbad983a6ce6 diff --git a/headless-services/bosh-language-server/src/main/resources/desc/BoshDeploymentManifest/releases.md b/headless-services/bosh-language-server/src/main/resources/desc/BoshDeploymentManifest/releases.md new file mode 100644 index 000000000..378cc8674 --- /dev/null +++ b/headless-services/bosh-language-server/src/main/resources/desc/BoshDeploymentManifest/releases.md @@ -0,0 +1,6 @@ +*Required*. The name and version of each release in the deployment. + +Example: + + releases: + - {name: redis, version: 12} diff --git a/headless-services/bosh-language-server/src/main/resources/desc/Release/name.md b/headless-services/bosh-language-server/src/main/resources/desc/Release/name.md new file mode 100644 index 000000000..91af0ba37 --- /dev/null +++ b/headless-services/bosh-language-server/src/main/resources/desc/Release/name.md @@ -0,0 +1 @@ +*Required*. Name of a release used in the deployment. \ No newline at end of file diff --git a/headless-services/bosh-language-server/src/main/resources/desc/Release/version.md b/headless-services/bosh-language-server/src/main/resources/desc/Release/version.md new file mode 100644 index 000000000..b039fb87a --- /dev/null +++ b/headless-services/bosh-language-server/src/main/resources/desc/Release/version.md @@ -0,0 +1 @@ +*Required.* The version of the release to use. Version can be `latest`. \ No newline at end of file diff --git a/headless-services/bosh-language-server/src/test/java/org/springframework/ide/vscode/concourse/BoshEditorTest.java b/headless-services/bosh-language-server/src/test/java/org/springframework/ide/vscode/concourse/BoshEditorTest.java index f424f28e6..defdc2e9c 100644 --- a/headless-services/bosh-language-server/src/test/java/org/springframework/ide/vscode/concourse/BoshEditorTest.java +++ b/headless-services/bosh-language-server/src/test/java/org/springframework/ide/vscode/concourse/BoshEditorTest.java @@ -34,6 +34,10 @@ public class BoshEditorTest { @Test public void toplevelV2PropertyNamesKnown() throws Exception { Editor editor = harness.newEditor( "name: some-name\n" + + "director_uuid: cf8dc1fc-9c42-4ffc-96f1-fbad983a6ce6\n" + + "releases:\n" + + "- name: redis\n" + + " version: 12\n" + "blah: hoooo\n" ); editor.assertProblems( @@ -44,17 +48,25 @@ public class BoshEditorTest { @Test public void toplevelV2PropertyHovers() throws Exception { Editor editor = harness.newEditor( "name: some-name\n" + + "director_uuid: cf8dc1fc-9c42-4ffc-96f1-fbad983a6ce6\n" + + "releases:\n" + + "- name: redis\n" + + " version: 12\n" + "blah: hoooo\n" ); editor.assertHoverContains("name", "The name of the deployment"); + editor.assertHoverContains("director_uuid", "This string must match the UUID of the currently targeted Director"); + editor.assertHoverContains("releases", "The name and version of each release in the deployment"); } @Test public void toplevelV2PropertyCompletions() throws Exception { Editor editor = harness.newEditor( - "<*>\n" + "<*>" ); editor.assertCompletions( - "name: <*>\n" + "director_uuid: <*>", + "name: <*>", + "releases:\n- <*>" ); }