Class: VolumeVisualizer::ZFS::Filesystem

Inherits:
Object
  • Object
show all
Defined in:
lib/volume_visualizer/zfs/filesystem.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(string) ⇒ Filesystem

Returns a new instance of Filesystem.



7
8
9
10
11
12
13
14
15
16
17
18
# File 'lib/volume_visualizer/zfs/filesystem.rb', line 7

def initialize(string)
  @children = []

  params = string.split("\t")
  ATTRS.each do |attr|
    val = params.shift
    unless NON_BYTE_ATTRS.include? attr
      val = DataSizeString.new(val)
    end
    instance_variable_set "@#{attr.to_s}", val
  end
end

Instance Attribute Details

#childrenObject

Returns the value of attribute children.



5
6
7
# File 'lib/volume_visualizer/zfs/filesystem.rb', line 5

def children
  @children
end

#parentObject

Returns the value of attribute parent.



5
6
7
# File 'lib/volume_visualizer/zfs/filesystem.rb', line 5

def parent
  @parent
end

Instance Method Details

#depthObject



20
21
22
23
24
# File 'lib/volume_visualizer/zfs/filesystem.rb', line 20

def depth
  depth = name.split("/").size
  depth -= 1 unless snapshot?
  depth
end

#dumpObject



42
43
44
45
46
# File 'lib/volume_visualizer/zfs/filesystem.rb', line 42

def dump
  ATTRS.each do |attr|
    puts "%18s %s" % [attr, self.send(attr)]
  end
end

#parent_nameObject



26
27
28
29
30
31
32
# File 'lib/volume_visualizer/zfs/filesystem.rb', line 26

def parent_name
  if snapshot?
    name.split("@").first
  else
    File.dirname(name)
  end
end

#snapshot?Boolean

Returns:

  • (Boolean)


34
35
36
# File 'lib/volume_visualizer/zfs/filesystem.rb', line 34

def snapshot?
  type == "snapshot"
end

#to_hObject



48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
# File 'lib/volume_visualizer/zfs/filesystem.rb', line 48

def to_h
  hash = {
    :name => name,
    :type => type,
    :size => used.bytes,
    :size_human => used,
    :type => type,
  }
  unless children.empty?
    hash[:children] = [
      {
      :name => name + " (data)",
      :type => "filesystem",
      :size => referenced.bytes,
      :size_human => referenced
    }
    ]
    hash[:type] = "container"
    children.each do |child|
      hash[:children] << child.to_h
    end
  end

  hash
end

#zero?Boolean

Returns:

  • (Boolean)


38
39
40
# File 'lib/volume_visualizer/zfs/filesystem.rb', line 38

def zero?
  used.bytes == 0
end