Class: FileSystem

Inherits:
Sequel::Model
  • Object
show all
Defined in:
app/models/file_system.rb

Instance Method Summary collapse

Instance Method Details

#available_in_GbObject



45
46
47
48
49
50
51
# File 'app/models/file_system.rb', line 45

def available_in_Gb
 if latest_disk_entry
    latest_disk_entry.available / 1024 / 1024
  else
    0
  end
end

#available_space_in_GbObject



53
54
55
# File 'app/models/file_system.rb', line 53

def available_space_in_Gb
  available_in_Gb
end

#available_space_in_percentObject



57
58
59
# File 'app/models/file_system.rb', line 57

def available_space_in_percent
  sprintf('%.2f', available_space_in_Gb.to_f / total_space_in_Gb * 100)
end

#disks_15_min_grain(start_time, end_time) ⇒ Object



96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
# File 'app/models/file_system.rb', line 96

def disks_15_min_grain(start_time, end_time)
  disk = DB.fetch("SELECT ROUND(AVG(available)/1024/1024, 1) AS available, ROUND(AVG(used)/1024/1024, 1) AS used, grain_15_min FROM disks WHERE file_system_id = #{self.id} AND grain_15_min >= '#{start_time.to_fifteen_minute_grain_format.to_sql_format}' AND grain_15_min <= '#{end_time.to_fifteen_minute_grain_format.to_sql_format}' GROUP BY grain_15_min;").all
  
  time_range = (start_time..end_time)
  
  series = []
  series[0] = []
  series[1] = []
  series[2] = []
  series[3] = []
  time_range.step(900) do |fifteen|
    series[0] << fifteen.to_minute_format
    if disk.size > 0 and disk[0][:grain_15_min].to_minute_format == fifteen.to_minute_format
      disk_for_this_dim = disk.shift
      series[1] << (disk_for_this_dim[:available] + disk_for_this_dim[:used]).to_f
      series[2] << disk_for_this_dim[:used].to_f
    else
      series[1] << -1
      series[2] << -1
    end
  end
  
  series
end

#disks_5_min_grain(start_time, end_time) ⇒ Object



71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
# File 'app/models/file_system.rb', line 71

def disks_5_min_grain(start_time, end_time)
  disk = DB.fetch("SELECT ROUND(AVG(available)/1024/1024, 1) AS available, ROUND(AVG(used)/1024/1024, 1) AS used, grain_5_min FROM disks WHERE file_system_id = #{self.id} AND grain_5_min >= '#{start_time.to_five_minute_grain_format.to_sql_format}' AND grain_5_min <= '#{end_time.to_five_minute_grain_format.to_sql_format}' GROUP BY grain_5_min;").all
  
  time_range = (start_time..end_time)
  
  series = []
  series[0] = []
  series[1] = []
  series[2] = []
  series[3] = []
  time_range.step(300) do |five|
    series[0] << five.to_minute_format
    if disk.size > 0 and disk[0][:grain_5_min].to_minute_format == five.to_minute_format
      disk_for_this_dim = disk.shift
      series[1] << (disk_for_this_dim[:available] + disk_for_this_dim[:used]).to_f
      series[2] << disk_for_this_dim[:used].to_f
    else
      series[1] << -1
      series[2] << -1
    end
  end
  
  series
end

#is_dev?Boolean

Returns:

  • (Boolean)


21
22
23
# File 'app/models/file_system.rb', line 21

def is_dev?
  self.name.scan(/^\/dev/).size > 0
end

#latest_disk_entryObject



6
7
8
# File 'app/models/file_system.rb', line 6

def latest_disk_entry
  @latest_disk_entry ||= self.disks_dataset.order(:created_at).last
end

#size_in_GbObject



25
26
27
# File 'app/models/file_system.rb', line 25

def size_in_Gb
  available_in_Gb + used_in_Gb
end

#statusObject



61
62
63
64
65
66
67
68
69
# File 'app/models/file_system.rb', line 61

def status
  if available_space_in_percent.to_i > 30
    STATUS_GREEN
  elsif available_space_in_percent.to_i > 10
    STATUS_YELLOW
  else
      STATUS_RED
  end
end

#total_space_in_GbObject



29
30
31
# File 'app/models/file_system.rb', line 29

def total_space_in_Gb
  size_in_Gb
end

#used_in_GbObject



33
34
35
36
37
38
39
# File 'app/models/file_system.rb', line 33

def used_in_Gb
 if latest_disk_entry
    latest_disk_entry.used / 1024 / 1024
  else
    0
  end
end

#used_space_in_GbObject



41
42
43
# File 'app/models/file_system.rb', line 41

def used_space_in_Gb
  used_in_Gb
end