Module: DatadogBackup::LocalFilesystem

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

Overview

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

Instance Method Summary collapse

Instance Method Details

#all_file_idsObject



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

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

#all_file_ids_for_selected_resourcesObject



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

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

#all_filesObject



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

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

#class_from_id(id) ⇒ Object



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

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



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

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

#file_type(filepath) ⇒ Object



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

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

#filename(id) ⇒ Object



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

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

#find_file_by_id(id) ⇒ Object



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

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

#load_from_file(string, output_format) ⇒ Object



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

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



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

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

#mydirObject



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

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

#purgeObject



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

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

#write_file(data, filename) ⇒ Object



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

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