Class: Clusters::KnativeServicesFinder
- Inherits:
-
Object
- Object
- Clusters::KnativeServicesFinder
show all
- Includes:
- Gitlab::Utils::StrongMemoize, ReactiveCaching
- Defined in:
- app/finders/clusters/knative_services_finder.rb
Constant Summary
collapse
- KNATIVE_STATES =
{
'checking' => 'checking',
'installed' => 'installed',
'not_found' => 'not_found'
}.freeze
ReactiveCaching::ExceededReactiveCacheLimit, ReactiveCaching::InvalidateReactiveCache, ReactiveCaching::WORK_TYPE
Instance Attribute Summary collapse
Class Method Summary
collapse
Instance Method Summary
collapse
Constructor Details
Returns a new instance of KnativeServicesFinder.
19
20
21
22
|
# File 'app/finders/clusters/knative_services_finder.rb', line 19
def initialize(cluster, environment)
@cluster = cluster
@environment = environment
end
|
Instance Attribute Details
#cluster ⇒ Object
Returns the value of attribute cluster.
17
18
19
|
# File 'app/finders/clusters/knative_services_finder.rb', line 17
def cluster
@cluster
end
|
#environment ⇒ Object
Returns the value of attribute environment.
17
18
19
|
# File 'app/finders/clusters/knative_services_finder.rb', line 17
def environment
@environment
end
|
Class Method Details
.from_cache(cluster_id, environment_id) ⇒ Object
34
35
36
37
38
39
|
# File 'app/finders/clusters/knative_services_finder.rb', line 34
def self.from_cache(cluster_id, environment_id)
cluster = Clusters::Cluster.find(cluster_id)
environment = Environment.find(environment_id)
new(cluster, environment)
end
|
Instance Method Details
#cache_args ⇒ Object
59
60
61
|
# File 'app/finders/clusters/knative_services_finder.rb', line 59
def cache_args
[cluster.id, environment.id]
end
|
#calculate_reactive_cache ⇒ Object
41
42
43
44
45
46
47
48
49
50
|
# File 'app/finders/clusters/knative_services_finder.rb', line 41
def calculate_reactive_cache(*)
ksvc = read_services
pods = knative_client.discovered ? read_pods : []
{ services: ksvc, pods: pods, knative_detected: knative_client.discovered }
end
|
#clear_cache! ⇒ Object
30
31
32
|
# File 'app/finders/clusters/knative_services_finder.rb', line 30
def clear_cache!
clear_reactive_cache!(*cache_args)
end
|
#knative_detected ⇒ Object
70
71
72
73
74
75
76
77
78
79
|
# File 'app/finders/clusters/knative_services_finder.rb', line 70
def knative_detected
cached_data = with_reactive_cache_memoized(*cache_args) { |data| data }
knative_state = cached_data.to_h[:knative_detected]
return KNATIVE_STATES['checking'] if knative_state.nil?
return KNATIVE_STATES['installed'] if knative_state
KNATIVE_STATES['uninstalled']
end
|
#model_name ⇒ Object
81
82
83
|
# File 'app/finders/clusters/knative_services_finder.rb', line 81
def model_name
self.class.name.underscore.tr('/', '_')
end
|
#service_pod_details(service) ⇒ Object
63
64
65
66
67
68
|
# File 'app/finders/clusters/knative_services_finder.rb', line 63
def service_pod_details(service)
cached_data = with_reactive_cache_memoized(*cache_args) { |data| data }
cached_data.to_h.fetch(:pods, []).select do |pod|
filter_pods(pod, service)
end
end
|
#services ⇒ Object
52
53
54
55
56
57
|
# File 'app/finders/clusters/knative_services_finder.rb', line 52
def services
return [] unless search_namespace
cached_data = with_reactive_cache_memoized(*cache_args) { |data| data }
cached_data.to_h.fetch(:services, [])
end
|
#with_reactive_cache_memoized(*cache_args, &block) ⇒ Object
24
25
26
27
28
|
# File 'app/finders/clusters/knative_services_finder.rb', line 24
def with_reactive_cache_memoized(*cache_args, &block)
strong_memoize(:reactive_cache) do
with_reactive_cache(*cache_args, &block)
end
end
|