Class: Krane::ClusterResourceDiscovery

Inherits:
Object
  • Object
show all
Defined in:
lib/krane/cluster_resource_discovery.rb

Instance Method Summary collapse

Constructor Details

#initialize(task_config:, namespace_tags: []) ⇒ ClusterResourceDiscovery

Returns a new instance of ClusterResourceDiscovery.



7
8
9
10
# File 'lib/krane/cluster_resource_discovery.rb', line 7

def initialize(task_config:, namespace_tags: [])
  @task_config = task_config
  @namespace_tags = namespace_tags
end

Instance Method Details

#crdsObject



12
13
14
15
16
17
# File 'lib/krane/cluster_resource_discovery.rb', line 12

def crds
  @crds ||= fetch_crds.map do |cr_def|
    CustomResourceDefinition.new(namespace: namespace, context: context, logger: logger,
      definition: cr_def, statsd_tags: @namespace_tags)
  end
end

#global_resource_kindsObject



19
20
21
# File 'lib/krane/cluster_resource_discovery.rb', line 19

def global_resource_kinds
  @globals ||= fetch_resources(namespaced: false).map { |g| g["kind"] }
end

#prunable_resources(namespaced:) ⇒ Object



23
24
25
26
27
28
29
30
31
32
33
# File 'lib/krane/cluster_resource_discovery.rb', line 23

def prunable_resources(namespaced:)
  black_list = %w(Namespace Node)
  api_versions = fetch_api_versions

  fetch_resources(namespaced: namespaced).map do |resource|
    next unless resource['verbs'].one? { |v| v == "delete" }
    next if black_list.include?(resource['kind'])
    version = api_versions[resource['apigroup'].to_s].last
    [resource['apigroup'], version, resource['kind']].compact.join("/")
  end.compact
end