theforeman/foreman_maintain

View on GitHub
definitions/procedures/restore/configs.rb

Summary

Maintainability
A
0 mins
Test Coverage
module Procedures::Restore
  class Configs < ForemanMaintain::Procedure
    metadata do
      description 'Restore configs from backup'

      param :backup_dir,
        'Path to backup directory',
        :required => true
    end

    def run
      backup = ForemanMaintain::Utils::Backup.new(@backup_dir)
      with_spinner('Resetting') do |spinner|
        spinner.update('Restoring configs')
        clean_conflicting_data
        restore_configs(backup)
      end
    end

    def restore_configs(backup)
      tar_options = {
        :overwrite => true,
        :listed_incremental => '/dev/null',
        :command => 'extract',
        :directory => '/',
        :archive => backup.file_map[:config_files][:path],
        :gzip => true,
      }

      feature(:tar).run(tar_options)
    end

    private

    def clean_conflicting_data
      # tar is unable to --overwrite dir with symlink
      execute('rm -rf /usr/share/foreman-proxy/.ssh')
    end
  end
end