class ScalingoBackupsManager::Configuration

Constants

FILE_NAME

Attributes

config[RW]

Public Class Methods

client() click to toggle source
# File lib/scalingo_backups_manager/configuration.rb, line 25
def self.client
  return @client if @client
  @client = Scalingo::Client.new
  @client.authenticate_with(access_token: ENV["SCALINGO_API_TOKEN"])
  @client
end
create_file() click to toggle source
# File lib/scalingo_backups_manager/configuration.rb, line 16
def self.create_file
  File.open(FILE_NAME, 'w+') do |f|
    f.flock(File::LOCK_EX)
    f.rewind
    f.write({ region: 'osc-fr-1', apps: []}.to_yaml)
    f.flush
  end
end
file_exists?() click to toggle source
# File lib/scalingo_backups_manager/configuration.rb, line 12
def self.file_exists?
  File.exist?(FILE_NAME)
end
new() click to toggle source
# File lib/scalingo_backups_manager/configuration.rb, line 41
def initialize
  @file = File.open(FILE_NAME)
  unless @file
    puts "Configuration file does not exist"
    return
  end
  @config = (YAML.load(@file.read) || { apps: [] }).with_indifferent_access
end
write_config(config) click to toggle source
# File lib/scalingo_backups_manager/configuration.rb, line 32
def self.write_config(config)
  File.open(FILE_NAME, "w+") do |f|
    f.flock(File::LOCK_EX)
    f.truncate(0)
    f.write(config.to_hash.to_yaml)
    f.flush
  end
end

Public Instance Methods

add_addon_to_app(application, addon) click to toggle source
# File lib/scalingo_backups_manager/configuration.rb, line 50
def add_addon_to_app(application, addon)
  @config.deep_merge!({ apps: { "#{application.name}": { id: application.id, addons: { "#{addon.addon_provider[:id]}": { id: addon.id, path: "backups/#{application.name}/#{addon.addon_provider[:id]}/" } } } } })
  self.class.write_config(@config)
end
for_each_addons(application_uid = nil, addon_uid = nil) { |application, addon| ... } click to toggle source
# File lib/scalingo_backups_manager/configuration.rb, line 55
def for_each_addons(application_uid = nil, addon_uid = nil)
  client_sftp_config = @config[:sftp] || {}

  @config[:apps].each do |application_name, application_config|
    next if application_uid && application_uid != application_name.to_s
    next unless application_config[:id]
    application = ScalingoBackupsManager::Application.find(application_config[:id])
    next unless application_config[:addons] && application_config[:addons].size > 0

    app_sftp_config = (application_config[:sftp] || {}).reverse_merge(client_sftp_config)

    application_config[:addons].each do |addon_name, addon_config|
      next if addon_uid && addon_uid != addon_name.to_s
      next unless addon_config[:id]
      addon = ScalingoBackupsManager::Addon.find(application, addon_config[:id], config: addon_config, sftp_config: (addon_config[:sftp] || {}).reverse_merge(app_sftp_config))
      yield(application, addon) if block_given?
    end
  end
end