Class: Captive::OneOffSpec

Inherits:
Object
  • Object
show all
Defined in:
lib/captive/one_off_spec.rb

Overview

Construit le manifeste Job one-off à partir du Deployment web courant. Labels app: -run pour ne jamais entrer dans le Service web (app=).

Toujours un Job, même pour la console interactive : ttlSecondsAfterFinished laisse vivre le pod terminé — donc son log — quelques minutes après la sortie, ce qu'un Pod nu ne sait pas faire (pas de TTL sur un Pod).

Constant Summary collapse

CONTAINER_NAME =
"one-off"
CONSOLE_DEADLINE_SECONDS =
4 * 3600
RUN_DEADLINE_SECONDS =
3600
TTL_SECONDS =
600
PRODUCTION_NODE_AFFINITY =
{
  "nodeAffinity" => {
    "requiredDuringSchedulingIgnoredDuringExecution" => {
      "nodeSelectorTerms" => [
        {
          "matchExpressions" => [
            {
              "key" => "captive.dev/workload",
              "operator" => "In",
              "values" => [ "production" ],
            },
          ],
        },
      ],
    },
  },
}.freeze

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(app:, deployment:, command:, interactive: false, session: nil) ⇒ OneOffSpec

Returns a new instance of OneOffSpec.



34
35
36
37
38
39
40
# File 'lib/captive/one_off_spec.rb', line 34

def initialize(app:, deployment:, command:, interactive: false, session: nil)
  @app = app
  @deployment = deployment
  @command = Array(command)
  @interactive = interactive
  @session = session
end

Class Method Details

.live_logs_selector(app) ⇒ Object



48
49
50
# File 'lib/captive/one_off_spec.rb', line 48

def self.live_logs_selector(app)
  "app in (#{app},#{run_app_label(app)})"
end

.run_app_label(app) ⇒ Object



44
45
46
# File 'lib/captive/one_off_spec.rb', line 44

def self.run_app_label(app)
  "#{app}-run"
end

Instance Method Details

#to_h ⇒ Object



42
# File 'lib/captive/one_off_spec.rb', line 42

def to_h = job_manifest