Class: Chef::Provider::HouseKeeping::PurgeFlushBinge

Inherits:
Object
  • Object
show all
Defined in:
lib/garcon/chef/provider/house_keeping.rb

Instance Method Summary collapse

Constructor Details

#initialize(new_resource) ⇒ PurgeFlushBinge

Returns a new instance of PurgeFlushBinge.



125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
# File 'lib/garcon/chef/provider/house_keeping.rb', line 125

def initialize(new_resource)
  search_path = if new_resource.recursive
    ::File.join(new_resource.path, '**', '*')
  else
    ::File.join(new_resource.path, '*')
  end
  @file_map = Hash.new
  @dir_size = 0

  Dir[search_path].select { |f| ::File.file?(f) }.map do |file|
    fstat = ::File.stat(file)
    @dir_size += fstat.size
    @file_map.store(file,
      ctime: fstat.ctime.to_i,
      mtime: fstat.mtime.to_i,
      size:  fstat.size)
  end
end

Instance Method Details

#exclude(regexp) ⇒ Object



172
173
174
# File 'lib/garcon/chef/provider/house_keeping.rb', line 172

def exclude(regexp)
  @file_map.delete_if { |file| file.match(Regexp.new(regexp)) }
end

#larger_than(size) ⇒ Object



149
150
151
152
153
154
# File 'lib/garcon/chef/provider/house_keeping.rb', line 149

def larger_than(size)
  @file_map.select do |file, data|
    c = Humanize.new(size.to_s)
    data[:size].to_f > c.to_size(:b).to_f
  end
end

#num_filesObject



176
177
178
# File 'lib/garcon/chef/provider/house_keeping.rb', line 176

def num_files
  @file_map.length
end

#older_than(days) ⇒ Object



144
145
146
147
# File 'lib/garcon/chef/provider/house_keeping.rb', line 144

def older_than(days)
  purge_time = Time.now - (60 * 60 * 24 * days.to_i)
  @file_map.select { |file, data| data[:mtime] < purge_time.to_i }
end

#to_dir_size(size) ⇒ Object



156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
# File 'lib/garcon/chef/provider/house_keeping.rb', line 156

def to_dir_size(size)
  sorted = @file_map.sort_by { |k,v| v[:mtime] }
  c = Humanize.new(size.to_s)
  delete_size = @dir_size - c.to_size(:b).to_f
  return {} if delete_size <= 0

  f_size = 0
  list   = {}
  sorted.each do |f|
    list[f[0]] = f[1]
    f_size += f[1][:size]
    break if f_size >= delete_size
  end
  list
end