Class: Elesai::Megacli::Context

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

Overview

Context

Instance Method Summary collapse

Constructor Details

#initialize(current_state, lsi) ⇒ Context

Returns a new instance of Context.



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

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



75
76
77
# File 'lib/elesai/megacli.rb', line 75

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

#bbuObject



87
88
89
# File 'lib/elesai/megacli.rb', line 87

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

#closeObject



51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
# File 'lib/elesai/megacli.rb', line 51

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

#currentObject



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

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

#flash!(new_state) ⇒ Object



44
45
46
47
48
49
# File 'lib/elesai/megacli.rb', line 44

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



37
38
39
40
41
42
# File 'lib/elesai/megacli.rb', line 37

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

#physicaldriveObject



83
84
85
# File 'lib/elesai/megacli.rb', line 83

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

#virtualdriveObject



79
80
81
# File 'lib/elesai/megacli.rb', line 79

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