From bc0d114f274eae3ef7981019b838bfbabf8e12f7 Mon Sep 17 00:00:00 2001 From: Kris De Volder Date: Mon, 4 Jun 2018 09:31:25 -0700 Subject: [PATCH] Add support for new DockerImageSource properties - aws_session_token - max_concurrent_downloads - max_concurrent_uploads --- .../vscode/concourse/PipelineYmlSchema.java | 19 +++++++++++++------ .../DockerImageSource/aws_session_token.md | 2 ++ .../max_concurrent_downloads.md | 3 +++ .../max_concurrent_uploads.md | 3 +++ .../vscode/concourse/ConcourseEditorTest.java | 8 ++++++++ 5 files changed, 29 insertions(+), 6 deletions(-) create mode 100644 headless-services/concourse-language-server/src/main/resources/desc/DockerImageSource/aws_session_token.md create mode 100644 headless-services/concourse-language-server/src/main/resources/desc/DockerImageSource/max_concurrent_downloads.md create mode 100644 headless-services/concourse-language-server/src/main/resources/desc/DockerImageSource/max_concurrent_uploads.md diff --git a/headless-services/concourse-language-server/src/main/java/org/springframework/ide/vscode/concourse/PipelineYmlSchema.java b/headless-services/concourse-language-server/src/main/java/org/springframework/ide/vscode/concourse/PipelineYmlSchema.java index 3fda51e44..32d0b5eb5 100644 --- a/headless-services/concourse-language-server/src/main/java/org/springframework/ide/vscode/concourse/PipelineYmlSchema.java +++ b/headless-services/concourse-language-server/src/main/java/org/springframework/ide/vscode/concourse/PipelineYmlSchema.java @@ -477,6 +477,7 @@ public class PipelineYmlSchema implements YamlSchema { addProp(source, "password", t_ne_string); addProp(source, "aws_access_key_id", t_ne_string); addProp(source, "aws_secret_access_key", t_ne_string); + addProp(source, "aws_session_token", t_ne_string); addProp(source, "insecure_registries", t_strings); addProp(source, "registry_mirror", t_ne_string); addProp(source, "ca_certs", f.yseq(f.ybean("CaCertsEntry", @@ -488,6 +489,8 @@ public class PipelineYmlSchema implements YamlSchema { f.yprop("key", t_ne_string), f.yprop("cert", t_ne_string) ))); + addProp(source, "max_concurrent_downloads", t_pos_integer); + addProp(source, "max_concurrent_uploads", t_pos_integer); AbstractType get = f.ybean("DockerImageGetParams"); addProp(get, "save", t_boolean); @@ -495,23 +498,27 @@ public class PipelineYmlSchema implements YamlSchema { addProp(get, "skip_download", t_boolean); AbstractType put = f.ybean("DockerImagePutParams"); + //TODO 'additional_tags' addProp(put, "build", t_ne_string); - addProp(put, "load", t_ne_string); - addProp(put, "dockerfile", t_ne_string); + addProp(put, "build_args", t_string_params); + addProp(put, "build_args_file", t_ne_string); addProp(put, "cache", t_boolean); + //TODO 'cache_from' addProp(put, "cache_tag", t_ne_string); + addProp(put, "dockerfile", t_ne_string); + addProp(put, "import_file", t_ne_string); + addProp(put, "load", t_ne_string); addProp(put, "load_base", t_ne_string); + //TODO 'load_bases' addProp(put, "load_file", t_ne_string); addProp(put, "load_repository", t_ne_string); addProp(put, "load_tag", t_ne_string); - addProp(put, "import_file", t_ne_string); addProp(put, "pull_repository", t_ne_string).isDeprecated(true); addProp(put, "pull_tag", t_ne_string).isDeprecated(true); addProp(put, "tag", t_ne_string); - addProp(put, "tag_prefix", t_ne_string); addProp(put, "tag_as_latest", t_boolean); - addProp(put, "build_args", t_string_params); - addProp(put, "build_args_file", t_ne_string); + addProp(put, "tag_prefix", t_ne_string); + //TODO 'target_name' resourceTypes.def("docker-image", source, get, put); } diff --git a/headless-services/concourse-language-server/src/main/resources/desc/DockerImageSource/aws_session_token.md b/headless-services/concourse-language-server/src/main/resources/desc/DockerImageSource/aws_session_token.md new file mode 100644 index 000000000..423cb4bdd --- /dev/null +++ b/headless-services/concourse-language-server/src/main/resources/desc/DockerImageSource/aws_session_token.md @@ -0,0 +1,2 @@ +*Optional*. AWS session token (assumed role) to use for acquiring ECR credentials. + diff --git a/headless-services/concourse-language-server/src/main/resources/desc/DockerImageSource/max_concurrent_downloads.md b/headless-services/concourse-language-server/src/main/resources/desc/DockerImageSource/max_concurrent_downloads.md new file mode 100644 index 000000000..302b1ab3b --- /dev/null +++ b/headless-services/concourse-language-server/src/main/resources/desc/DockerImageSource/max_concurrent_downloads.md @@ -0,0 +1,3 @@ +*Optional*. Maximum concurrent downloads. + +Limits the number of concurrent download threads. \ No newline at end of file diff --git a/headless-services/concourse-language-server/src/main/resources/desc/DockerImageSource/max_concurrent_uploads.md b/headless-services/concourse-language-server/src/main/resources/desc/DockerImageSource/max_concurrent_uploads.md new file mode 100644 index 000000000..8f3c77e8d --- /dev/null +++ b/headless-services/concourse-language-server/src/main/resources/desc/DockerImageSource/max_concurrent_uploads.md @@ -0,0 +1,3 @@ +*Optional*. Maximum concurrent uploads. + +Limits the number of concurrent upload threads. \ No newline at end of file diff --git a/headless-services/concourse-language-server/src/test/java/org/springframework/ide/vscode/concourse/ConcourseEditorTest.java b/headless-services/concourse-language-server/src/test/java/org/springframework/ide/vscode/concourse/ConcourseEditorTest.java index b27444084..ce81bbc87 100644 --- a/headless-services/concourse-language-server/src/test/java/org/springframework/ide/vscode/concourse/ConcourseEditorTest.java +++ b/headless-services/concourse-language-server/src/test/java/org/springframework/ide/vscode/concourse/ConcourseEditorTest.java @@ -1622,8 +1622,11 @@ public class ConcourseEditorTest { " password: {{docker_password}}\n" + " aws_access_key_id: {{aws_access_key}}\n" + " aws_secret_access_key: {{aws_secret_key}}\n" + + " aws_session_token: ((aws_token))\n" + " insecure_registries: no-list\n" + " registry_mirror: https://my-docker-registry.com\n" + + " max_concurrent_downloads: num-down\n" + + " max_concurrent_uploads: num-up\n" + " ca_certs:\n" + " - domain: example.com:443\n" + " cert: |\n" + @@ -1646,6 +1649,8 @@ public class ConcourseEditorTest { editor.assertProblems( "my-docker-image|Unused 'Resource'", "no-list|Expecting a 'Sequence'", + "num-down|NumberFormat", + "num-up|NumberFormat", "bogus_ca_certs_prop|Unknown property", //ca_certs "bogus_client_cert_prop|Unknown property" //client_certs ); @@ -1656,10 +1661,13 @@ public class ConcourseEditorTest { editor.assertHoverContains("password", "password to use"); editor.assertHoverContains("aws_access_key_id", "AWS access key to use"); editor.assertHoverContains("aws_secret_access_key", "AWS secret key to use"); + editor.assertHoverContains("aws_session_token", "AWS session token (assumed role)"); editor.assertHoverContains("insecure_registries", "array of CIDRs"); editor.assertHoverContains("registry_mirror", "URL pointing to a docker registry"); editor.assertHoverContains("ca_certs", "Each entry specifies the x509 CA certificate for"); editor.assertHoverContains("client_certs", "Each entry specifies the x509 certificate and key"); + editor.assertHoverContains("max_concurrent_downloads", "Limits the number of concurrent download threads"); + editor.assertHoverContains("max_concurrent_uploads", "Limits the number of concurrent upload threads"); } @Test public void dockerImageResourceGetParamsReconcileAndHovers() throws Exception {