Class: Elesai::Megacli::Megacli::Context

Inherits:
Object
  • Object
show all
Defined in:
lib/elesai/megacli/megacli.rb

Overview

Context

Instance Method Summary collapse

Constructor Details

#initialize(current_state, lsi) ⇒ Context

Returns a new instance of Context.



15
16
17
18
19
20
# File 'lib/elesai/megacli/megacli.rb', line 15

def initialize(current_state,lsi)
  current_state.meta[:context] = { :stack => [] }
  @context = current_state.meta[:context]
  @lsi = lsi
  @log = Elesai::Logger.instance.log
end

Instance Method Details

#adapterObject



58
59
60
# File 'lib/elesai/megacli/megacli.rb', line 58

def adapter
  @context[Elesai::LSI::Adapter]
end

#bbuObject



70
71
72
# File 'lib/elesai/megacli/megacli.rb', line 70

def bbu
  @context[Elesai::LSI::BBU]
end

#closeObject



36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
# File 'lib/elesai/megacli/megacli.rb', line 36

def close
  component = @context[:stack].pop
  @context[component.class] = nil
  @log.debug "         * Close #{component.inspect}"
  case component
    when Elesai::LSI::PhysicalDrive
      pd = @lsi.add(component)
      pd.add_adapter(adapter)
      pd.add_virtualdrive(virtualdrive) unless virtualdrive.nil?
      adapter.add_physicaldrive(pd)
    when Elesai::LSI::VirtualDrive
      vd = @lsi.add(component)
    when Elesai::LSI::BBU
      @lsi.add(component)
  end
  @log.debug "           + context: #{@context[:stack]}"
end

#currentObject



54
55
56
# File 'lib/elesai/megacli/megacli.rb', line 54

def current
  @context[:stack][-1]
end

#flash!(new_state) ⇒ Object



29
30
31
32
33
34
# File 'lib/elesai/megacli/megacli.rb', line 29

def flash!(new_state)
  new_state.meta[:context] = @context
  @context = nil
  @context = new_state.meta[:context]
  @log.debug "         + Flash context: #{@context[:stack]}"
end

#open(component) ⇒ Object



22
23
24
25
26
27
# File 'lib/elesai/megacli/megacli.rb', line 22

def open(component)
  @log.debug "         * Open #{component.inspect}"
  @context[:stack].push(component)
  @context[component.class] = component
  @log.debug "           + context: #{@context[:stack]}"
end

#physicaldriveObject



66
67
68
# File 'lib/elesai/megacli/megacli.rb', line 66

def physicaldrive
  @context[Elesai::LSI::PhysicalDrive]
end

#virtualdriveObject



62
63
64
# File 'lib/elesai/megacli/megacli.rb', line 62

def virtualdrive
  @context[Elesai::LSI::VirtualDrive]
end