From 44f890aaff6586d31963e059f227f6d5299ee4ec Mon Sep 17 00:00:00 2001 From: timothysmith0609 Date: Fri, 18 Jan 2019 13:37:31 -0500 Subject: [PATCH] pr review --- lib/kubernetes-deploy/kubernetes_resource.rb | 21 +++++++------------ test/fixtures/crd/with_custom_conditions.yml | 1 - .../custom_resource_definition_test.rb | 11 ++++++---- .../kubernetes_resource_test.rb | 2 ++ 4 files changed, 16 insertions(+), 19 deletions(-) diff --git a/lib/kubernetes-deploy/kubernetes_resource.rb b/lib/kubernetes-deploy/kubernetes_resource.rb index 6bf232fb1..3bb7dbead 100644 --- a/lib/kubernetes-deploy/kubernetes_resource.rb +++ b/lib/kubernetes-deploy/kubernetes_resource.rb @@ -36,17 +36,7 @@ def build(namespace:, context:, definition:, logger:, statsd_tags:, crd: nil) statsd_tags: statsd_tags } if definition["kind"].blank? raise InvalidTemplateError.new("Template missing 'Kind'", content: definition.to_yaml) - elsif KubernetesDeploy.const_defined?(definition["kind"]) - klass = KubernetesDeploy.const_get(definition["kind"]) - klass.new(**opts) - elsif crd - CustomResource.new(crd: crd, **opts) - else - inst = new(**opts) - inst.type = definition["kind"] - inst end - begin if KubernetesDeploy.const_defined?(definition["kind"]) klass = KubernetesDeploy.const_get(definition["kind"]) @@ -54,10 +44,13 @@ def build(namespace:, context:, definition:, logger:, statsd_tags:, crd: nil) end rescue NameError end - - inst = new(**opts) - inst.type = definition["kind"] - inst + if crd + CustomResource.new(crd: crd, **opts) + else + inst = new(**opts) + inst.type = definition["kind"] + inst + end end def timeout diff --git a/test/fixtures/crd/with_custom_conditions.yml b/test/fixtures/crd/with_custom_conditions.yml index c4228d274..d31130250 100644 --- a/test/fixtures/crd/with_custom_conditions.yml +++ b/test/fixtures/crd/with_custom_conditions.yml @@ -3,7 +3,6 @@ kind: CustomResourceDefinition metadata: name: customizeds.stable.example.io annotations: - kubernetes-deploy.shopify.io/instance-timeout: '5S' kubernetes-deploy.shopify.io/instance-rollout-conditions: '{ "success_conditions": [ { 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 8c81e30f9..fc9f979d2 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 @@ -90,10 +90,13 @@ def test_cr_instance_fails_validation_when_rollout_conditions_for_crd_invalid "metadata" => { "name" => "test" }, }) cr.validate_definition(kubectl) - assert(cr.validation_error_msg.match( - "Annotation #{KubernetesDeploy::CustomResourceDefinition::ROLLOUT_CONDITIONS_ANNOTATION} " \ - "on #{crd.name} is invalid: Rollout conditions are not valid JSON:" - )) + assert_equal(cr.validation_error_msg, + "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" + ) end def test_cr_instance_valid_when_rollout_conditions_for_crd_valid diff --git a/test/unit/kubernetes-deploy/kubernetes_resource_test.rb b/test/unit/kubernetes-deploy/kubernetes_resource_test.rb index 69edeac3c..5f47c8d09 100644 --- a/test/unit/kubernetes-deploy/kubernetes_resource_test.rb +++ b/test/unit/kubernetes-deploy/kubernetes_resource_test.rb @@ -297,6 +297,8 @@ def test_lowercase_custom_resource_kind_does_not_raise logger: logger, statsd_tags: [] ) + end + def test_build_handles_hardcoded_and_core_and_dynamic_objects # Hardcoded CRs redis_crd = KubernetesDeploy::KubernetesResource.build(namespace: "test", context: "test",