class Dopv::PersistentDisk::DB
Public Class Methods
new(state_store, node_name)
click to toggle source
# File lib/dopv/persistent_disk.rb, line 56 def initialize(state_store, node_name) @state_store = state_store @node_name = node_name @state_store.transaction do @state_store[:data_volumes] ||= {} @state_store[:data_volumes][@node_name] ||= [] end end
Public Instance Methods
<<(entry)
click to toggle source
# File lib/dopv/persistent_disk.rb, line 86 def <<(entry) append(entry) end
Also aliased as: add
append(entry)
click to toggle source
# File lib/dopv/persistent_disk.rb, line 69 def append(entry) @state_store.transaction do entries.each do |disk| if disk == entry raise PersistentDiskError, "Disk #{disk.name} already exists for node #{disk.node}" end end if entry.is_a?(Entry) @entries << entry @state_store[:data_volumes][@node_name] << entry.to_hash else @entries << Entry.new(entry) @state_store[:data_volumes][@node_name] << entry end end end
delete(entry)
click to toggle source
# File lib/dopv/persistent_disk.rb, line 103 def delete(entry) @state_store.transaction do index = entries.index {|stored_entry| stored_entry = entry} if index.nil? raise PersistentDiskError, "Entry update: Disk entry not found #{entry.to_s}" end @entries.delete_at(index) @state_store[:data_volumes][@node_name].delete_at(index) entry end end
update(entry, attrs={})
click to toggle source
# File lib/dopv/persistent_disk.rb, line 91 def update(entry, attrs={}) @state_store.transaction do index = entries.index {|stored_entry| stored_entry = entry} if index.nil? raise PersistentDiskError, "Entry update: Disk entry not found #{entry.to_s}" end @entries[index].update(attrs) @state_store[:data_volumes][@node_name][index] = @entries[index] @entries[index] end end
volumes()
click to toggle source
# File lib/dopv/persistent_disk.rb, line 65 def volumes @state_store.transaction(true) { entries }.dup end
Private Instance Methods
entries()
click to toggle source
# File lib/dopv/persistent_disk.rb, line 118 def entries @entries ||= @state_store[:data_volumes][@node_name].map do |raw_entry| symbolized_entry = Hash[raw_entry.map {|k1, v1| [k1.to_sym, v1] }] merged_entry = symbolized_entry.merge({:node => @node_name}) Dopv::PersistentDisk::Entry.new(merged_entry) end end