Module: DatadogBackup::LocalFilesystem

Included in:
Core
Defined in:
lib/datadog_backup/local_filesystem.rb

Instance Method Summary collapse

Instance Method Details

#all_file_idsObject



18
19
20
# File 'lib/datadog_backup/local_filesystem.rb', line 18

def all_file_ids
  all_files.map { |file| ::File.basename(file, '.*') }
end

#all_file_ids_for_selected_resourcesObject



22
23
24
25
26
# File 'lib/datadog_backup/local_filesystem.rb', line 22

def all_file_ids_for_selected_resources
  all_file_ids.select do |id|
    resources.include? class_from_id(id)
  end
end

#all_filesObject

Meant to be mixed into DatadogBackup::Core Relies on @options and @options



14
15
16
# File 'lib/datadog_backup/local_filesystem.rb', line 14

def all_files
  ::Dir.glob(::File.join(backup_dir, '**', '*')).select { |f| ::File.file?(f) }
end

#class_from_id(id) ⇒ Object



28
29
30
31
# File 'lib/datadog_backup/local_filesystem.rb', line 28

def class_from_id(id)
  class_string = ::File.dirname(find_file_by_id(id)).split('/').last.capitalize
  ::DatadogBackup.const_get(class_string)
end

#dump(object) ⇒ Object



33
34
35
36
37
38
39
40
41
42
# File 'lib/datadog_backup/local_filesystem.rb', line 33

def dump(object)
  case output_format
  when :json
    JSON.pretty_generate(object.deep_sort)
  when :yaml
    YAML.dump(object.deep_sort)
  else
    raise 'invalid output_format specified or not specified'
  end
end

#file_type(filepath) ⇒ Object



48
49
50
# File 'lib/datadog_backup/local_filesystem.rb', line 48

def file_type(filepath)
  ::File.extname(filepath).strip.downcase[1..-1].to_sym
end

#filename(id) ⇒ Object



44
45
46
# File 'lib/datadog_backup/local_filesystem.rb', line 44

def filename(id)
  ::File.join(mydir, "#{id}.#{output_format}")
end

#find_file_by_id(id) ⇒ Object



52
53
54
# File 'lib/datadog_backup/local_filesystem.rb', line 52

def find_file_by_id(id)
  ::Dir.glob(::File.join(backup_dir, '**', "#{id}.*")).first
end

#load_from_file(string, output_format) ⇒ Object



56
57
58
59
60
61
62
63
64
65
# File 'lib/datadog_backup/local_filesystem.rb', line 56

def load_from_file(string, output_format)
  case output_format
  when :json
    JSON.parse(string)
  when :yaml
    YAML.safe_load(string)
  else
    raise 'invalid output_format specified or not specified'
  end
end

#load_from_file_by_id(id) ⇒ Object



67
68
69
70
# File 'lib/datadog_backup/local_filesystem.rb', line 67

def load_from_file_by_id(id)
  filepath = find_file_by_id(id)
  load_from_file(::File.read(filepath), file_type(filepath))
end

#mydirObject



72
73
74
# File 'lib/datadog_backup/local_filesystem.rb', line 72

def mydir
  ::File.join(backup_dir, myclass)
end

#purgeObject



76
77
78
# File 'lib/datadog_backup/local_filesystem.rb', line 76

def purge
  ::FileUtils.rm(::Dir.glob(File.join(mydir, '*')))
end

#write_file(data, filename) ⇒ Object



80
81
82
83
84
85
86
# File 'lib/datadog_backup/local_filesystem.rb', line 80

def write_file(data, filename)
  logger.info "Backing up #{filename}"
  file = ::File.open(filename, 'w')
  file.write(data)
ensure
  file.close
end