From c84e4ea92d6f9b16715df12d800152e495370f15 Mon Sep 17 00:00:00 2001 From: timothysmith0609 Date: Thu, 24 Jan 2019 14:26:56 -0500 Subject: [PATCH 01/11] Get rid of GoogleFriendly --- kubernetes-deploy.gemspec | 2 +- lib/kubernetes-deploy/kubeclient_builder.rb | 4 +- .../google_friendly_config.rb | 42 ------------------- .../kubeclient_builder/kube_config.rb | 21 ++++++++++ ...dly_config_test.rb => kube_config_test.rb} | 10 ++--- 5 files changed, 29 insertions(+), 50 deletions(-) delete mode 100644 lib/kubernetes-deploy/kubeclient_builder/google_friendly_config.rb create mode 100644 lib/kubernetes-deploy/kubeclient_builder/kube_config.rb rename test/unit/kubernetes-deploy/{google_friendly_config_test.rb => kube_config_test.rb} (86%) diff --git a/kubernetes-deploy.gemspec b/kubernetes-deploy.gemspec index 8fbcb1860..92430ee53 100644 --- a/kubernetes-deploy.gemspec +++ b/kubernetes-deploy.gemspec @@ -24,7 +24,7 @@ Gem::Specification.new do |spec| spec.required_ruby_version = '>= 2.3.0' spec.add_dependency("activesupport", ">= 5.0") - spec.add_dependency("kubeclient", "~> 3.0") + spec.add_dependency("kubeclient", "~> 4.0") spec.add_dependency("googleauth", "~> 0.6.6") # https://github.com/google/google-auth-library-ruby/issues/153 spec.add_dependency("ejson", "~> 1.0") spec.add_dependency("colorize", "~> 0.8") diff --git a/lib/kubernetes-deploy/kubeclient_builder.rb b/lib/kubernetes-deploy/kubeclient_builder.rb index ac55282d7..480697754 100644 --- a/lib/kubernetes-deploy/kubeclient_builder.rb +++ b/lib/kubernetes-deploy/kubeclient_builder.rb @@ -1,6 +1,6 @@ # frozen_string_literal: true require 'kubeclient' -require 'kubernetes-deploy/kubeclient_builder/google_friendly_config' +require 'kubernetes-deploy/kubeclient_builder/kube_config' module KubernetesDeploy module KubeclientBuilder @@ -86,7 +86,7 @@ def build_rbac_v1_kubeclient(context) def _build_kubeclient(api_version:, context:, endpoint_path: nil) # Find a context defined in kube conf files that matches the input context by name - friendly_configs = config_files.map { |f| GoogleFriendlyConfig.read(f) } + friendly_configs = config_files.map { |f| KubeConfig.read(f) } config = friendly_configs.find { |c| c.contexts.include?(context) } raise ContextMissingError, context unless config diff --git a/lib/kubernetes-deploy/kubeclient_builder/google_friendly_config.rb b/lib/kubernetes-deploy/kubeclient_builder/google_friendly_config.rb deleted file mode 100644 index 51566c88f..000000000 --- a/lib/kubernetes-deploy/kubeclient_builder/google_friendly_config.rb +++ /dev/null @@ -1,42 +0,0 @@ -# frozen_string_literal: true - -require 'googleauth' -module KubernetesDeploy - module KubeclientBuilder - class GoogleFriendlyConfig < Kubeclient::Config - def fetch_user_auth_options(user) - if user.dig('auth-provider', 'name') == 'gcp' - { bearer_token: new_token } - else - super - end - end - - def self.read(filename) - new(YAML.safe_load(File.read(filename), [Time]), File.dirname(filename)) - end - - def new_token - scopes = ['https://www.googleapis.com/auth/cloud-platform'] - authorization = Google::Auth.get_application_default(scopes) - - authorization.apply({}) - - authorization.access_token - - rescue Signet::AuthorizationError => e - err_message = json_error_message(e.response.body) || e.message - raise KubeException.new(e.response.status, err_message, e.response.body) - end - - private - - def json_error_message(body) - err = JSON.parse(body || '') || {} - err['message'] - rescue JSON::ParserError - nil - end - end - end -end diff --git a/lib/kubernetes-deploy/kubeclient_builder/kube_config.rb b/lib/kubernetes-deploy/kubeclient_builder/kube_config.rb new file mode 100644 index 000000000..01c865925 --- /dev/null +++ b/lib/kubernetes-deploy/kubeclient_builder/kube_config.rb @@ -0,0 +1,21 @@ +# frozen_string_literal: true + +require 'googleauth' +module KubernetesDeploy + module KubeclientBuilder + class KubeConfig < Kubeclient::Config + def self.read(filename) + parsed = YAML.safe_load(File.read(filename), [Date, Time]) + new(parsed, File.dirname(filename)) + end + + def fetch_user_auth_options(user) + if user.dig('auth-provider', 'name') == 'gcp' + { bearer_token: Kubeclient::GoogleApplicationDefaultCredentials.token } + else + super + end + end + end + end +end diff --git a/test/unit/kubernetes-deploy/google_friendly_config_test.rb b/test/unit/kubernetes-deploy/kube_config_test.rb similarity index 86% rename from test/unit/kubernetes-deploy/google_friendly_config_test.rb rename to test/unit/kubernetes-deploy/kube_config_test.rb index 1858672b6..12a37f55a 100644 --- a/test/unit/kubernetes-deploy/google_friendly_config_test.rb +++ b/test/unit/kubernetes-deploy/kube_config_test.rb @@ -1,7 +1,7 @@ # frozen_string_literal: true require 'test_helper' -class GoogleFriendlyConfigTest < KubernetesDeploy::TestCase +class KubeConfigTest < KubernetesDeploy::TestCase def setup WebMock.disable_net_connect! set_google_env_vars @@ -12,7 +12,7 @@ def teardown end def test_auth_use_default_gcp_success - config = KubernetesDeploy::KubeclientBuilder::GoogleFriendlyConfig.new(kubeconfig, "") + config = KubernetesDeploy::KubeclientBuilder::KubeConfig.new(kubeconfig, "") stub_request(:post, 'https://oauth2.googleapis.com/token') .to_return( @@ -31,7 +31,7 @@ def test_auth_use_default_gcp_success end def test_auth_use_default_gcp_failure - config = KubernetesDeploy::KubeclientBuilder::GoogleFriendlyConfig.new(kubeconfig, "") + config = KubernetesDeploy::KubeclientBuilder::KubeConfig.new(kubeconfig, "") stub_request(:post, 'https://oauth2.googleapis.com/token') .to_return( @@ -40,13 +40,13 @@ def test_auth_use_default_gcp_failure status: 401 ) - assert_raises(KubeException) do + assert_raises(Signet::AuthorizationError) do config.context("google") end end def test_non_google_auth_works - config = KubernetesDeploy::KubeclientBuilder::GoogleFriendlyConfig.new(kubeconfig, "") + config = KubernetesDeploy::KubeclientBuilder::KubeConfig.new(kubeconfig, "") context = config.context("minikube") From 95be383408ff071328a23f7e317028415dc45bdf Mon Sep 17 00:00:00 2001 From: timothysmith0609 Date: Thu, 24 Jan 2019 14:36:08 -0500 Subject: [PATCH 02/11] KubeException deprecation tidy-up --- lib/kubernetes-deploy/kubeclient_builder/kube_config.rb | 2 +- lib/kubernetes-deploy/restart_task.rb | 4 ++-- lib/kubernetes-deploy/runner_task.rb | 6 +++--- test/helpers/fixture_set.rb | 2 +- test/helpers/test_provisioner.rb | 2 +- 5 files changed, 8 insertions(+), 8 deletions(-) diff --git a/lib/kubernetes-deploy/kubeclient_builder/kube_config.rb b/lib/kubernetes-deploy/kubeclient_builder/kube_config.rb index 01c865925..11690317f 100644 --- a/lib/kubernetes-deploy/kubeclient_builder/kube_config.rb +++ b/lib/kubernetes-deploy/kubeclient_builder/kube_config.rb @@ -8,7 +8,7 @@ def self.read(filename) parsed = YAML.safe_load(File.read(filename), [Date, Time]) new(parsed, File.dirname(filename)) end - + def fetch_user_auth_options(user) if user.dig('auth-provider', 'name') == 'gcp' { bearer_token: Kubeclient::GoogleApplicationDefaultCredentials.token } diff --git a/lib/kubernetes-deploy/restart_task.rb b/lib/kubernetes-deploy/restart_task.rb index db5a18706..179dee81f 100644 --- a/lib/kubernetes-deploy/restart_task.rb +++ b/lib/kubernetes-deploy/restart_task.rb @@ -112,7 +112,7 @@ def build_watchables(kubeclient_resources, started) def verify_namespace kubeclient.get_namespace(@namespace) @logger.info("Namespace #{@namespace} found in context #{@context}") - rescue KubeException => error + rescue Kubeclient::HttpError => error if error.error_code == 404 raise NamespaceNotFoundError.new(@namespace, @context) else @@ -144,7 +144,7 @@ def fetch_deployments(list) record = nil begin record = v1beta1_kubeclient.get_deployment(name, @namespace) - rescue KubeException => error + rescue Kubeclient::HttpError => error if error.error_code == 404 raise FatalRestartError, "Deployment `#{name}` not found in namespace `#{@namespace}`" else diff --git a/lib/kubernetes-deploy/runner_task.rb b/lib/kubernetes-deploy/runner_task.rb index 7f8298832..4935a95cf 100644 --- a/lib/kubernetes-deploy/runner_task.rb +++ b/lib/kubernetes-deploy/runner_task.rb @@ -64,7 +64,7 @@ def create_pod(pod) kubeclient.create_pod(pod.to_kubeclient_resource) @pod_name = pod.name @logger.info("Pod creation succeeded") - rescue KubeException => e + rescue Kubeclient::HttpError => e msg = "Failed to create pod: #{e.class.name}: #{e.message}" @logger.summary.add_paragraph(msg) raise FatalDeploymentError, msg @@ -122,7 +122,7 @@ def validate_configuration(task_template, args) begin kubeclient.get_namespace(@namespace) if @namespace.present? @logger.info("Using namespace '#{@namespace}' in context '#{@context}'") - rescue KubeException => e + rescue Kubeclient::HttpError => e msg = e.error_code == 404 ? "Namespace was not found" : "Could not connect to kubernetes cluster" errors << msg end @@ -142,7 +142,7 @@ def get_template(template_name) pod_template = kubeclient.get_pod_template(template_name, @namespace) pod_template.template - rescue KubeException => error + rescue Kubeclient::HttpError => error if error.error_code == 404 msg = "Pod template `#{template_name}` not found in namespace `#{@namespace}`, context `#{@context}`" @logger.summary.add_paragraph(msg) diff --git a/test/helpers/fixture_set.rb b/test/helpers/fixture_set.rb index 6d027d5d6..224935523 100644 --- a/test/helpers/fixture_set.rb +++ b/test/helpers/fixture_set.rb @@ -33,7 +33,7 @@ def refute_resource_exists(type, name, beta: false) if res.metadata.deletionTimestamp.blank? flunk("#{type} #{name} unexpectedly existed and is not being deleted.") end - rescue KubeException => e + rescue Kubeclient::HttpError => e raise unless e.to_s.include?("not found") end diff --git a/test/helpers/test_provisioner.rb b/test/helpers/test_provisioner.rb index 8be17be52..b1091c497 100644 --- a/test/helpers/test_provisioner.rb +++ b/test/helpers/test_provisioner.rb @@ -28,7 +28,7 @@ def claim_namespace(test_name) def delete_namespace(namespace) kubeclient.delete_namespace(namespace) if namespace.present? - rescue KubeException => e + rescue Kubeclient::HttpError => e raise unless e.to_s.include?("not found") end From ceeddd0868acda6462ecde813cc7f716ca7e3c6c Mon Sep 17 00:00:00 2001 From: timothysmith0609 Date: Thu, 24 Jan 2019 14:51:09 -0500 Subject: [PATCH 03/11] Not friendly anymore :( --- lib/kubernetes-deploy/kubeclient_builder.rb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/kubernetes-deploy/kubeclient_builder.rb b/lib/kubernetes-deploy/kubeclient_builder.rb index 480697754..07a2b5dba 100644 --- a/lib/kubernetes-deploy/kubeclient_builder.rb +++ b/lib/kubernetes-deploy/kubeclient_builder.rb @@ -86,8 +86,8 @@ def build_rbac_v1_kubeclient(context) def _build_kubeclient(api_version:, context:, endpoint_path: nil) # Find a context defined in kube conf files that matches the input context by name - friendly_configs = config_files.map { |f| KubeConfig.read(f) } - config = friendly_configs.find { |c| c.contexts.include?(context) } + configs = config_files.map { |f| KubeConfig.read(f) } + config = configs.find { |c| c.contexts.include?(context) } raise ContextMissingError, context unless config From 25c5bd76c8ae8cdfd6bb7d5c1bd5938148356953 Mon Sep 17 00:00:00 2001 From: timothysmith0609 Date: Thu, 24 Jan 2019 14:26:56 -0500 Subject: [PATCH 04/11] Get rid of GoogleFriendly --- lib/kubernetes-deploy/kubeclient_builder/kube_config.rb | 1 - 1 file changed, 1 deletion(-) diff --git a/lib/kubernetes-deploy/kubeclient_builder/kube_config.rb b/lib/kubernetes-deploy/kubeclient_builder/kube_config.rb index 11690317f..57603a079 100644 --- a/lib/kubernetes-deploy/kubeclient_builder/kube_config.rb +++ b/lib/kubernetes-deploy/kubeclient_builder/kube_config.rb @@ -8,7 +8,6 @@ def self.read(filename) parsed = YAML.safe_load(File.read(filename), [Date, Time]) new(parsed, File.dirname(filename)) end - def fetch_user_auth_options(user) if user.dig('auth-provider', 'name') == 'gcp' { bearer_token: Kubeclient::GoogleApplicationDefaultCredentials.token } From 511d27f420135003708add26d2a78e32bcba2a9b Mon Sep 17 00:00:00 2001 From: timothysmith0609 Date: Thu, 24 Jan 2019 14:36:08 -0500 Subject: [PATCH 05/11] KubeException deprecation tidy-up --- lib/kubernetes-deploy/kubeclient_builder.rb | 1 - 1 file changed, 1 deletion(-) diff --git a/lib/kubernetes-deploy/kubeclient_builder.rb b/lib/kubernetes-deploy/kubeclient_builder.rb index 07a2b5dba..cc30260a3 100644 --- a/lib/kubernetes-deploy/kubeclient_builder.rb +++ b/lib/kubernetes-deploy/kubeclient_builder.rb @@ -92,7 +92,6 @@ def _build_kubeclient(api_version:, context:, endpoint_path: nil) raise ContextMissingError, context unless config kube_context = config.context(context) - client = Kubeclient::Client.new( "#{kube_context.api_endpoint}#{endpoint_path}", api_version, From 341369e3ad3f16f07019a67723d769fd05620c31 Mon Sep 17 00:00:00 2001 From: timothysmith0609 Date: Fri, 15 Feb 2019 08:37:06 -0500 Subject: [PATCH 06/11] explicitly rescue ResourceNotFound error --- lib/kubernetes-deploy/restart_task.rb | 18 +++++------------- lib/kubernetes-deploy/runner_task.rb | 21 ++++++++++----------- test/helpers/fixture_set.rb | 3 +-- test/helpers/test_provisioner.rb | 3 +-- 4 files changed, 17 insertions(+), 28 deletions(-) diff --git a/lib/kubernetes-deploy/restart_task.rb b/lib/kubernetes-deploy/restart_task.rb index 179dee81f..3dc4e50fc 100644 --- a/lib/kubernetes-deploy/restart_task.rb +++ b/lib/kubernetes-deploy/restart_task.rb @@ -112,12 +112,8 @@ def build_watchables(kubeclient_resources, started) def verify_namespace kubeclient.get_namespace(@namespace) @logger.info("Namespace #{@namespace} found in context #{@context}") - rescue Kubeclient::HttpError => error - if error.error_code == 404 - raise NamespaceNotFoundError.new(@namespace, @context) - else - raise - end + rescue Kubeclient::ResourceNotFoundError + raise NamespaceNotFoundError.new(@namespace, @context) end def patch_deployment_with_restart(record) @@ -133,7 +129,7 @@ def patch_kubeclient_deployments(deployments) begin patch_deployment_with_restart(record) @logger.info("Triggered `#{record.metadata.name}` restart") - rescue Kubeclient::ResourceNotFoundError, Kubeclient::HttpError => e + rescue Kubeclient::HttpError => e raise RestartAPIError.new(record.metadata.name, e.message) end end @@ -144,12 +140,8 @@ def fetch_deployments(list) record = nil begin record = v1beta1_kubeclient.get_deployment(name, @namespace) - rescue Kubeclient::HttpError => error - if error.error_code == 404 - raise FatalRestartError, "Deployment `#{name}` not found in namespace `#{@namespace}`" - else - raise - end + rescue Kubeclient::ResourceNotFoundError + raise FatalRestartError, "Deployment `#{name}` not found in namespace `#{@namespace}`" end record end diff --git a/lib/kubernetes-deploy/runner_task.rb b/lib/kubernetes-deploy/runner_task.rb index 4935a95cf..a6eb3fa27 100644 --- a/lib/kubernetes-deploy/runner_task.rb +++ b/lib/kubernetes-deploy/runner_task.rb @@ -122,9 +122,11 @@ def validate_configuration(task_template, args) begin kubeclient.get_namespace(@namespace) if @namespace.present? @logger.info("Using namespace '#{@namespace}' in context '#{@context}'") - rescue Kubeclient::HttpError => e - msg = e.error_code == 404 ? "Namespace was not found" : "Could not connect to kubernetes cluster" - errors << msg + + rescue Kubeclient::ResourceNotFoundError + errors << "Namespace was not found" + rescue Kubeclient::HttpError + errors << "Could not connect to kubernetes cluster" end unless errors.empty? @@ -140,16 +142,13 @@ def validate_configuration(task_template, args) def get_template(template_name) pod_template = kubeclient.get_pod_template(template_name, @namespace) - pod_template.template + rescue Kubeclient::ResourceNotFoundError + msg = "Pod template `#{template_name}` not found in namespace `#{@namespace}`, context `#{@context}`" + @logger.summary.add_paragraph(msg) + raise TaskTemplateMissingError, msg rescue Kubeclient::HttpError => error - if error.error_code == 404 - msg = "Pod template `#{template_name}` not found in namespace `#{@namespace}`, context `#{@context}`" - @logger.summary.add_paragraph(msg) - raise TaskTemplateMissingError, msg - else - raise FatalKubeAPIError, "Error retrieving pod template: #{error.class.name}: #{error.message}" - end + raise FatalKubeAPIError, "Error retrieving pod template: #{error.class.name}: #{error.message}" end def build_pod_definition(base_template) diff --git a/test/helpers/fixture_set.rb b/test/helpers/fixture_set.rb index 224935523..c27b19e8c 100644 --- a/test/helpers/fixture_set.rb +++ b/test/helpers/fixture_set.rb @@ -33,8 +33,7 @@ def refute_resource_exists(type, name, beta: false) if res.metadata.deletionTimestamp.blank? flunk("#{type} #{name} unexpectedly existed and is not being deleted.") end - rescue Kubeclient::HttpError => e - raise unless e.to_s.include?("not found") + rescue Kubeclient::ResourceNotFoundError end def assert_pod_status(pod_name, status, count = 1) diff --git a/test/helpers/test_provisioner.rb b/test/helpers/test_provisioner.rb index b1091c497..a38128695 100644 --- a/test/helpers/test_provisioner.rb +++ b/test/helpers/test_provisioner.rb @@ -28,8 +28,7 @@ def claim_namespace(test_name) def delete_namespace(namespace) kubeclient.delete_namespace(namespace) if namespace.present? - rescue Kubeclient::HttpError => e - raise unless e.to_s.include?("not found") + rescue Kubeclient::ResourceNotFoundError end private From 782ca9fab21af345c4850c8620506925a7f1cba8 Mon Sep 17 00:00:00 2001 From: timothysmith0609 Date: Fri, 15 Feb 2019 12:23:26 -0500 Subject: [PATCH 07/11] changelog --- CHANGELOG.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index c053001ba..0fe67bfd3 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,9 @@ *Bug fixes* - Attempting to deploy from a directory that only contains `secrets.ejson` will no longer fail deploy ([#416](https://github.com/Shopify/kubernetes-deploy/pull/416)) +*Other* +- Update kubeclient gem to 4.2.2 ([#418](https://github.com/Shopify/kubernetes-deploy/pull/418)) + ## 0.24.0 *Features* From e46eca1356b65b5176540bc4732ecff429ab0e82 Mon Sep 17 00:00:00 2001 From: timothysmith0609 Date: Tue, 19 Feb 2019 09:51:26 -0500 Subject: [PATCH 08/11] Policial fix, more info in changelog --- CHANGELOG.md | 2 +- lib/kubernetes-deploy/kubeclient_builder/kube_config.rb | 1 + test/helpers/fixture_set.rb | 3 ++- test/helpers/test_provisioner.rb | 3 ++- 4 files changed, 6 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 0fe67bfd3..ae5a159f1 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,7 +4,7 @@ - Attempting to deploy from a directory that only contains `secrets.ejson` will no longer fail deploy ([#416](https://github.com/Shopify/kubernetes-deploy/pull/416)) *Other* -- Update kubeclient gem to 4.2.2 ([#418](https://github.com/Shopify/kubernetes-deploy/pull/418)) +- Update kubeclient gem to 4.2.2. Note this replaces the `KubeclientBuilder::GoogleFriendlyConfig` class with `KubeclientBuilder::KubeConfig` ([#418](https://github.com/Shopify/kubernetes-deploy/pull/418)) ## 0.24.0 diff --git a/lib/kubernetes-deploy/kubeclient_builder/kube_config.rb b/lib/kubernetes-deploy/kubeclient_builder/kube_config.rb index 57603a079..11690317f 100644 --- a/lib/kubernetes-deploy/kubeclient_builder/kube_config.rb +++ b/lib/kubernetes-deploy/kubeclient_builder/kube_config.rb @@ -8,6 +8,7 @@ def self.read(filename) parsed = YAML.safe_load(File.read(filename), [Date, Time]) new(parsed, File.dirname(filename)) end + def fetch_user_auth_options(user) if user.dig('auth-provider', 'name') == 'gcp' { bearer_token: Kubeclient::GoogleApplicationDefaultCredentials.token } diff --git a/test/helpers/fixture_set.rb b/test/helpers/fixture_set.rb index c27b19e8c..23514935f 100644 --- a/test/helpers/fixture_set.rb +++ b/test/helpers/fixture_set.rb @@ -33,7 +33,8 @@ def refute_resource_exists(type, name, beta: false) if res.metadata.deletionTimestamp.blank? flunk("#{type} #{name} unexpectedly existed and is not being deleted.") end - rescue Kubeclient::ResourceNotFoundError + rescue KubeException => e + raise unless e.is_a?(Kubeclient::ResourceNotFoundError) end def assert_pod_status(pod_name, status, count = 1) diff --git a/test/helpers/test_provisioner.rb b/test/helpers/test_provisioner.rb index a38128695..c10fc0985 100644 --- a/test/helpers/test_provisioner.rb +++ b/test/helpers/test_provisioner.rb @@ -28,7 +28,8 @@ def claim_namespace(test_name) def delete_namespace(namespace) kubeclient.delete_namespace(namespace) if namespace.present? - rescue Kubeclient::ResourceNotFoundError + rescue KubeException => e + raise unless e.is_a?(Kubeclient::ResourceNotFoundError) end private From a78907b747d74d4f2bf04b1bc96a28ab754c68b0 Mon Sep 17 00:00:00 2001 From: timothysmith0609 Date: Tue, 19 Feb 2019 10:26:30 -0500 Subject: [PATCH 09/11] Fix test --- .../kubernetes_resource/custom_resource_definition_test.rb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/test/unit/kubernetes-deploy/kubernetes_resource/custom_resource_definition_test.rb b/test/unit/kubernetes-deploy/kubernetes_resource/custom_resource_definition_test.rb index d823f6af0..82414770b 100644 --- a/test/unit/kubernetes-deploy/kubernetes_resource/custom_resource_definition_test.rb +++ b/test/unit/kubernetes-deploy/kubernetes_resource/custom_resource_definition_test.rb @@ -99,12 +99,12 @@ def test_cr_instance_fails_validation_when_rollout_conditions_for_crd_invalid "metadata" => { "name" => "test" }, }) cr.validate_definition(kubectl) - assert_equal(cr.validation_error_msg, + assert(cr.validation_error_msg.include?( "The CRD that specifies this resource is using invalid rollout conditions. Kubernetes-deploy will not be " \ "able to continue until those rollout conditions are fixed.\nRollout conditions can be found on the CRD " \ "that defines this resource (unittests.stable.example.io), under the annotation " \ "kubernetes-deploy.shopify.io/instance-rollout-conditions.\nValidation failed with: " \ - "Rollout conditions are not valid JSON: Empty input () at line 1, column 1 [parse.c:963] in 'bad string") + "Rollout conditions are not valid JSON:")) end def test_cr_instance_valid_when_rollout_conditions_for_crd_valid From fc972355d9b3b333ab8ea6bddc00c3c5a73a63c7 Mon Sep 17 00:00:00 2001 From: Timothy Smith Date: Tue, 19 Feb 2019 10:41:37 -0500 Subject: [PATCH 10/11] Automatic corrections for test/unit/kubernetes-deploy/kubernetes_resource/custom_resource_definition_test.rb --- .../kubernetes_resource/custom_resource_definition_test.rb | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/test/unit/kubernetes-deploy/kubernetes_resource/custom_resource_definition_test.rb b/test/unit/kubernetes-deploy/kubernetes_resource/custom_resource_definition_test.rb index 82414770b..11767d489 100644 --- a/test/unit/kubernetes-deploy/kubernetes_resource/custom_resource_definition_test.rb +++ b/test/unit/kubernetes-deploy/kubernetes_resource/custom_resource_definition_test.rb @@ -104,7 +104,8 @@ def test_cr_instance_fails_validation_when_rollout_conditions_for_crd_invalid "able to continue until those rollout conditions are fixed.\nRollout conditions can be found on the CRD " \ "that defines this resource (unittests.stable.example.io), under the annotation " \ "kubernetes-deploy.shopify.io/instance-rollout-conditions.\nValidation failed with: " \ - "Rollout conditions are not valid JSON:")) + "Rollout conditions are not valid JSON:" +)) end def test_cr_instance_valid_when_rollout_conditions_for_crd_valid From 8f623e6a16bf280c58a7b52218b9a7af5f76b85a Mon Sep 17 00:00:00 2001 From: timothysmith0609 Date: Tue, 19 Feb 2019 10:44:39 -0500 Subject: [PATCH 11/11] Fix cop --- .../kubernetes_resource/custom_resource_definition_test.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/unit/kubernetes-deploy/kubernetes_resource/custom_resource_definition_test.rb b/test/unit/kubernetes-deploy/kubernetes_resource/custom_resource_definition_test.rb index 11767d489..68f9c0931 100644 --- a/test/unit/kubernetes-deploy/kubernetes_resource/custom_resource_definition_test.rb +++ b/test/unit/kubernetes-deploy/kubernetes_resource/custom_resource_definition_test.rb @@ -105,7 +105,7 @@ def test_cr_instance_fails_validation_when_rollout_conditions_for_crd_invalid "that defines this resource (unittests.stable.example.io), under the annotation " \ "kubernetes-deploy.shopify.io/instance-rollout-conditions.\nValidation failed with: " \ "Rollout conditions are not valid JSON:" -)) + )) end def test_cr_instance_valid_when_rollout_conditions_for_crd_valid