diff --git a/lib/kubernetes-deploy/kubernetes_resource.rb b/lib/kubernetes-deploy/kubernetes_resource.rb index 8f6743849..774ea3a79 100644 --- a/lib/kubernetes-deploy/kubernetes_resource.rb +++ b/lib/kubernetes-deploy/kubernetes_resource.rb @@ -36,14 +36,19 @@ def build(namespace:, context:, definition:, logger:, statsd_tags:) 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) - else - inst = new(**opts) - inst.type = definition["kind"] - inst end + + begin + if KubernetesDeploy.const_defined?(definition["kind"]) + klass = KubernetesDeploy.const_get(definition["kind"]) + return klass.new(**opts) + end + rescue NameError + end + + inst = new(**opts) + inst.type = definition["kind"] + inst end def timeout diff --git a/test/unit/kubernetes-deploy/kubernetes_resource_test.rb b/test/unit/kubernetes-deploy/kubernetes_resource_test.rb index 83eaa47e5..5f75e283c 100644 --- a/test/unit/kubernetes-deploy/kubernetes_resource_test.rb +++ b/test/unit/kubernetes-deploy/kubernetes_resource_test.rb @@ -288,6 +288,17 @@ def test_disappeared_is_false_if_resource_has_been_deployed_and_we_get_a_server_ refute_predicate(dummy, :disappeared?) end + def test_lowercase_custom_resource_kind_does_not_raise + definition = { "kind" => "foobar", "metadata" => { "name" => "test" } } + KubernetesDeploy::KubernetesResource.build( + namespace: 'test', + context: 'test', + definition: definition, + logger: logger, + statsd_tags: [] + ) + end + private def kubectl