From 50cc31f14905bbae57ff71f16a658edb116d6f3f Mon Sep 17 00:00:00 2001 From: Kris De Volder Date: Wed, 21 Dec 2016 11:38:52 -0800 Subject: [PATCH] Concourse: basic support for 'tags' attribute --- .../ide/vscode/concourse/PipelineYmlSchema.java | 1 + .../src/main/resources/desc/Step/tags.md | 9 +++++++++ .../vscode/concourse/PipelineYamlEditorTest.java | 13 +++++++++++++ 3 files changed, 23 insertions(+) create mode 100644 vscode-extensions/vscode-concourse/src/main/resources/desc/Step/tags.md diff --git a/vscode-extensions/vscode-concourse/src/main/java/org/springframework/ide/vscode/concourse/PipelineYmlSchema.java b/vscode-extensions/vscode-concourse/src/main/java/org/springframework/ide/vscode/concourse/PipelineYmlSchema.java index f45fb29d6..8e29256cf 100644 --- a/vscode-extensions/vscode-concourse/src/main/java/org/springframework/ide/vscode/concourse/PipelineYmlSchema.java +++ b/vscode-extensions/vscode-concourse/src/main/java/org/springframework/ide/vscode/concourse/PipelineYmlSchema.java @@ -135,6 +135,7 @@ public class PipelineYmlSchema implements YamlSchema { prop(step, "on_failure", step); prop(step, "ensure", step); prop(step, "attempts", t_strictly_pos_integer); + prop(step, "tags", t_strings); YBeanType resource = f.ybean("Resource"); prop(resource, "name", t_ne_string); diff --git a/vscode-extensions/vscode-concourse/src/main/resources/desc/Step/tags.md b/vscode-extensions/vscode-concourse/src/main/resources/desc/Step/tags.md new file mode 100644 index 000000000..51c02b011 --- /dev/null +++ b/vscode-extensions/vscode-concourse/src/main/resources/desc/Step/tags.md @@ -0,0 +1,9 @@ +Perform a step on certain workers. + +Any step can be directed at a pool of workers for a given set of tags, by adding the `tags` attribute to it. + + tags: [string] + +*Optional. Default* `[]`. The tags by which to match workers. + +For example, if `[a, b]` is specified, only workers advertising the `a` and `b` tags (or any others) will be used for running the step. \ No newline at end of file diff --git a/vscode-extensions/vscode-concourse/src/test/java/org/springframework/ide/vscode/concourse/PipelineYamlEditorTest.java b/vscode-extensions/vscode-concourse/src/test/java/org/springframework/ide/vscode/concourse/PipelineYamlEditorTest.java index 6de96600b..8759b57cc 100644 --- a/vscode-extensions/vscode-concourse/src/test/java/org/springframework/ide/vscode/concourse/PipelineYamlEditorTest.java +++ b/vscode-extensions/vscode-concourse/src/test/java/org/springframework/ide/vscode/concourse/PipelineYamlEditorTest.java @@ -106,6 +106,17 @@ public class PipelineYamlEditorTest { editor.assertProblems( "name: git\n type: git|Expecting a 'Sequence' but found a 'Map'" ); + + editor = harness.newEditor( + "jobs:\n" + + "- name: a-job\n" + + " plan:\n" + + " - task: a-task\n" + + " tags: a-single-string\n" + ); + editor.assertProblems( + "a-single-string|Expecting a 'Sequence'" + ); //TODO: Add more test cases for structural problem? } @@ -217,6 +228,7 @@ public class PipelineYamlEditorTest { " output_mapping:\n" + " map: of-stuff\n" + " config: some-config\n" + + " tags: [a, b, c]\n"+ " attempts: 10\n" + " ensure:\n" + " bogus: bad\n" + @@ -232,6 +244,7 @@ public class PipelineYamlEditorTest { editor.assertHoverContains("input_mapping", "A map from task input names to concrete names in the build plan"); editor.assertHoverContains("output_mapping", "A map from task output names to concrete names"); editor.assertHoverContains("config", "Use `config` to inline the task config"); + editor.assertHoverContains("tags", "Any step can be directed at a pool of workers"); } @Test