Class: Kdep::ContextGuard

Inherits:
Object
  • Object
show all
Defined in:
lib/kdep/context_guard.rb

Instance Method Summary collapse

Constructor Details

#initialize(expected_context) ⇒ ContextGuard

Returns a new instance of ContextGuard.



3
4
5
6
# File 'lib/kdep/context_guard.rb', line 3

def initialize(expected_context)
  @expected_context = expected_context
  @ui = Kdep::UI.new(color: false)
end

Instance Method Details

#validate!Object



8
9
10
11
12
13
14
15
16
17
18
19
20
21
# File 'lib/kdep/context_guard.rb', line 8

def validate!
  if @expected_context.nil? || @expected_context.to_s.strip.empty?
    @ui.warn("No context specified in app.yml -- skipping context validation. Add 'context: your-cluster' for safety.")
    return
  end

  actual = Kdep::Kubectl.current_context
  return if actual == @expected_context

  raise Kdep::Kubectl::Error,
    "Context mismatch: kubectl is set to '#{actual}' but app.yml expects '#{@expected_context}'. " \
    "Aborting to prevent wrong-cluster deployment. " \
    "Run: kubectl config use-context #{@expected_context}"
end