From ce88a0831d36b30d2f1529d266073954275ef6a3 Mon Sep 17 00:00:00 2001 From: Scott Morgan Date: Mon, 24 Feb 2020 11:52:05 -0600 Subject: [PATCH] fix: add an override for Job in cluster resource discovery (#696) * fix: add an override for Job in cluster resource discovery * separate assertions for group/version/kind overrides --- lib/krane/cluster_resource_discovery.rb | 3 ++- test/fixtures/for_unit_tests/api_versions.txt | 1 + test/unit/cluster_resource_discovery_test.rb | 11 +++++++++++ 3 files changed, 14 insertions(+), 1 deletion(-) diff --git a/lib/krane/cluster_resource_discovery.rb b/lib/krane/cluster_resource_discovery.rb index d18d8697c..56f58c4bf 100644 --- a/lib/krane/cluster_resource_discovery.rb +++ b/lib/krane/cluster_resource_discovery.rb @@ -85,7 +85,8 @@ def fetch_api_versions def version_for_kind(versions, kind) # Override list for kinds that don't appear in the lastest version of a group version_override = { "CronJob" => "v1beta1", "VolumeAttachment" => "v1beta1", - "CSIDriver" => "v1beta1", "Ingress" => "v1beta1", "CSINode" => "v1beta1" } + "CSIDriver" => "v1beta1", "Ingress" => "v1beta1", + "CSINode" => "v1beta1", "Job" => "v1" } pattern = /v(?\d+)(?
alpha|beta)?(?\d+)?/
       latest = versions.sort_by do |version|
diff --git a/test/fixtures/for_unit_tests/api_versions.txt b/test/fixtures/for_unit_tests/api_versions.txt
index 1f3ded43a..a60792530 100644
--- a/test/fixtures/for_unit_tests/api_versions.txt
+++ b/test/fixtures/for_unit_tests/api_versions.txt
@@ -14,6 +14,7 @@ autoscaling/v2beta1
 autoscaling/v2beta2
 batch/v1
 batch/v1beta1
+batch/v2alpha1
 certificates.k8s.io/v1beta1
 coordination.k8s.io/v1
 coordination.k8s.io/v1beta1
diff --git a/test/unit/cluster_resource_discovery_test.rb b/test/unit/cluster_resource_discovery_test.rb
index 542a5aa4b..04e90f929 100644
--- a/test/unit/cluster_resource_discovery_test.rb
+++ b/test/unit/cluster_resource_discovery_test.rb
@@ -54,4 +54,15 @@ def test_prunable_namespaced_resources
       assert kinds.one? { |k| k.include?(expected_kind) }
     end
   end
+
+  def test_prunable_namespaced_resources_apply_group_version_kind_overrides
+    Krane::Kubectl.any_instance.stubs(:run).with("api-versions", attempts: 5, use_namespace: false)
+      .returns([api_versions_full_response, "", stub(success?: true)])
+    crd = mocked_cluster_resource_discovery(api_resources_namespaced_full_response, namespaced: true)
+    kinds = crd.prunable_resources(namespaced: true)
+
+    %w(batch/v1/Job extensions/v1beta1/Ingress).each do |expected_kind|
+      assert kinds.one? { |k| k.include?(expected_kind) }
+    end
+  end
 end