Skip to content

Commit d25b323

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

2 files changed

Lines changed: 16 additions & 2 deletions

File tree

lib/krane/cluster_resource_discovery.rb

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,9 +19,12 @@ def crds
1919
end
2020

2121
def prunable_resources(namespaced:)
22-
black_list = %w(Namespace Node ControllerRevision Event)
22+
black_list = %w(Namespace Node ControllerRevision Event Elasticsearch)
2323
fetch_resources(namespaced: namespaced).map do |resource|
2424
next unless resource["verbs"].one? { |v| v == "delete" }
25+
if resource["kind"] == "Elasticsearch"
26+
StatsD.client.increment('elasticsearch_resource_deletion_attempt.count', 1, %W(context:#{context} namespace:#{namespace}))
27+
end
2528
next if black_list.include?(resource["kind"])
2629
[resource["apigroup"], resource["version"], resource["kind"]].compact.join("/")
2730
end.compact

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_increment_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+
increment_metric = metrics.find { |m| m.name == 'Krane.elasticsearch_resource_deletion_attempt.count' && m.type == :i }
73+
assert_nil(increment_metric, "Expected elasticsearch_resource_deletion_attempt.count NOT to be emitted when no Elasticsearch exists")
74+
end
6475
end

0 commit comments

Comments
 (0)