Skip to content

Commit a4b4504

Browse files
committed
Do not prune kind: Elasticsearch and emit metric
1 parent d1d42e5 commit a4b4504

2 files changed

Lines changed: 22 additions & 3 deletions

File tree

lib/krane/cluster_resource_discovery.rb

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,12 +19,20 @@ def crds
1919
end
2020

2121
def prunable_resources(namespaced:)
22-
black_list = %w(Namespace Node ControllerRevision Event)
23-
fetch_resources(namespaced: namespaced).map do |resource|
22+
black_list = %w(Namespace Node ControllerRevision Event Elasticsearch)
23+
elasticsearch_found = false
24+
result = fetch_resources(namespaced: namespaced).map do |resource|
2425
next unless resource["verbs"].one? { |v| v == "delete" }
26+
if resource["kind"] == "Elasticsearch"
27+
elasticsearch_found = true
28+
next
29+
end
2530
next if black_list.include?(resource["kind"])
2631
[resource["apigroup"], resource["version"], resource["kind"]].compact.join("/")
2732
end.compact
33+
34+
StatsD.client.gauge('elasticsearch_resources.count', 1, tags: @namespace_tags) if elasticsearch_found
35+
result
2836
end
2937

3038
def fetch_resources(namespaced: false)

test/unit/cluster_resource_discovery_test.rb

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33

44
class ClusterResourceDiscoveryTest < Krane::TestCase
55
include ClusterResourceDiscoveryHelper
6+
include StatsD::Instrument::Assertions
67

78
def test_fetch_resources_failure
89
crd = mocked_cluster_resource_discovery(success: false)
@@ -49,7 +50,7 @@ def test_prunable_namespaced_resources
4950
%w(ConfigMap CronJob Deployment).each do |expected_kind|
5051
assert(kinds.one? { |k| k.include?(expected_kind) })
5152
end
52-
%w(controllerrevision event).each do |black_listed_kind|
53+
%w(controllerrevision event elasticsearch).each do |black_listed_kind|
5354
assert_empty(kinds.select { |k| k.downcase.include?(black_listed_kind) })
5455
end
5556
end
@@ -61,4 +62,14 @@ def test_prunable_namespaced_resources_apply_group_version_kind_overrides
6162
assert(kinds.one? { |k| k.include?(expected_kind) })
6263
end
6364
end
65+
66+
def test_elasticsearch_statsd_gauge_not_emitted_when_no_elasticsearch
67+
crd = mocked_cluster_resource_discovery
68+
metrics = capture_statsd_calls(client: Krane::StatsD.client) do
69+
crd.prunable_resources(namespaced: true)
70+
end
71+
72+
gauge_metric = metrics.find { |m| m.name == 'Krane.elasticsearch_resources.count' && m.type == :g }
73+
assert_nil(gauge_metric, "Expected elasticsearch_resources.count gauge NOT to be emitted when no Elasticsearch exists")
74+
end
6475
end

0 commit comments

Comments
 (0)