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 7ca0e5f9b..e0f25605b 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 @@ -68,6 +68,8 @@ public class BoshDeploymentManifestSchema implements YamlSchema { YType t_update = t_params; //TODO: https://www.pivotaltracker.com/story/show/148627121 addProp(TOPLEVEL_TYPE, "update", t_update).isRequired(true); + YType t_instance_group = t_params; //TODO: https://www.pivotaltracker.com/story/show/148627121 + addProp(TOPLEVEL_TYPE, "instance_groups", f.yseq(t_update)).isRequired(true); } @Override diff --git a/headless-services/bosh-language-server/src/main/resources/desc/BoshDeploymentManifest/instance_groups.md b/headless-services/bosh-language-server/src/main/resources/desc/BoshDeploymentManifest/instance_groups.md new file mode 100644 index 000000000..697b33741 --- /dev/null +++ b/headless-services/bosh-language-server/src/main/resources/desc/BoshDeploymentManifest/instance_groups.md @@ -0,0 +1,32 @@ +*Required*. Specifies the mapping between release [jobs](https://bosh.io/docs/terminology.html#job) and instance groups. + +Example: + + instance_groups: + - name: redis-master + instances: 1 + azs: [z1, z2] + jobs: + - name: redis-server + release: redis + properties: + port: 3606 + vm_type: medium + vm_extensions: [public-lbs] + stemcell: default + persistent_disk_type: medium + networks: + - name: default + + - name: redis-slave + instances: 2 + azs: [z1, z2] + jobs: + - name: redis-server + release: redis + properties: {} + vm_type: medium + stemcell: default + persistent_disk_type: medium + networks: + - name: default 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 6a5daa20d..0aa0a14d2 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 @@ -48,6 +48,33 @@ public class BoshEditorTest { " max_in_flight: 10\n" + " canary_watch_time: 1000-30000\n" + " update_watch_time: 1000-30000\n" + + "instance_groups:\n" + + "- name: redis-master\n" + + " instances: 1\n" + + " azs: [z1, z2]\n" + + " jobs:\n" + + " - name: redis-server\n" + + " release: redis\n" + + " properties:\n" + + " port: 3606\n" + + " vm_type: medium\n" + + " vm_extensions: [public-lbs]\n" + + " stemcell: default\n" + + " persistent_disk_type: medium\n" + + " networks:\n" + + " - name: default\n" + + "- name: redis-slave\n" + + " instances: 2\n" + + " azs: [z1, z2]\n" + + " jobs:\n" + + " - name: redis-server\n" + + " release: redis\n" + + " properties: {}\n" + + " vm_type: medium\n" + + " stemcell: default\n" + + " persistent_disk_type: medium\n" + + " networks:\n" + + " - name: default\n" + "blah: hoooo\n" ); editor.assertProblems( @@ -59,6 +86,7 @@ public class BoshEditorTest { editor.assertHoverContains("releases", "The name and version of each release in the deployment"); editor.assertHoverContains("stemcells", "The name and version of each stemcell"); editor.assertHoverContains("update", "This specifies instance update properties"); + editor.assertHoverContains("instance_groups", "Specifies the mapping between release [jobs](https://bosh.io/docs/terminology.html#job) and instance groups."); } @@ -68,6 +96,7 @@ public class BoshEditorTest { ); editor.assertCompletions( "director_uuid: <*>", + "instance_groups:\n- <*>", "name: <*>", "releases:\n- <*>", "stemcells:\n- <*>",