Class: Captive::ClusterApps
- Inherits:
-
Object
- Object
- Captive::ClusterApps
- Defined in:
- lib/captive/cluster_apps.rb
Overview
Ce que le cluster sait des apps déployées. Le CLI développeur décrit l'état réellement servi, pas l'état désiré dans le repo GitOps — auquel il n'a pas accès.
Instance Method Summary collapse
- #all ⇒ Object
- #domains(app) ⇒ Object
-
#egress_ip(app) ⇒ Object
L'add-on peut ne pas être posé, ou la CRD absente du cluster : les deux se lisent comme « pas d'IP fixe », pas comme une panne.
-
#initialize(kubectl:) ⇒ ClusterApps
constructor
A new instance of ClusterApps.
- #postgres(app) ⇒ Object
- #stage(app) ⇒ Object
- #tier(app) ⇒ Object
- #workers(app) ⇒ Object
Constructor Details
#initialize(kubectl:) ⇒ ClusterApps
Returns a new instance of ClusterApps.
9 10 11 |
# File 'lib/captive/cluster_apps.rb', line 9 def initialize(kubectl:) @kubectl = kubectl end |
Instance Method Details
#all ⇒ Object
13 14 15 16 17 18 |
# File 'lib/captive/cluster_apps.rb', line 13 def all web_deployments.map do |deployment| namespace = deployment.dig("metadata", "namespace") { name: namespace, stage: stage_of(namespace), domains: domains_by_namespace[namespace] || [] } end end |
#domains(app) ⇒ Object
20 |
# File 'lib/captive/cluster_apps.rb', line 20 def domains(app) = domains_by_namespace[app] || [] |
#egress_ip(app) ⇒ Object
L'add-on peut ne pas être posé, ou la CRD absente du cluster : les deux se lisent comme « pas d'IP fixe », pas comme une panne.
30 31 32 |
# File 'lib/captive/cluster_apps.rb', line 30 def egress_ip(app) first_item("egresspolicy", app)&.dig("spec", "egressIP", "ipv4") end |
#postgres(app) ⇒ Object
34 35 36 37 38 39 40 |
# File 'lib/captive/cluster_apps.rb', line 34 def postgres(app) spec = first_item("cluster", app)&.fetch("spec", nil) or return nil { instances: spec["instances"], memory: spec.dig("resources", "limits", "memory"), storage: spec.dig("storage", "size"), }.compact end |
#stage(app) ⇒ Object
22 |
# File 'lib/captive/cluster_apps.rb', line 22 def stage(app) = stage_of(app) |
#tier(app) ⇒ Object
24 |
# File 'lib/captive/cluster_apps.rb', line 24 def tier(app) = web_of(app)&.dig("metadata", "annotations", "captive.dev/tier") |
#workers(app) ⇒ Object
26 |
# File 'lib/captive/cluster_apps.rb', line 26 def workers(app) = of_type(app, "worker").map { |d| d.dig("metadata", "name") } |