Sha256: c723c64230b95a7406c56d13206f3adef3abd0c9aa4a548ecc34a46da55f7bcb

Contents?: true

Size: 935 Bytes

Versions: 2

Compression:

Stored size: 935 Bytes

Contents

# frozen_string_literal: true

module DatadogBackup
  # Dashboards specific overrides for backup and restore.
  class Dashboards < Resources
    def all
      get_all.fetch('dashboards')
    end

    def backup
      LOGGER.info("Starting diffs on #{::DatadogBackup::ThreadPool::TPOOL.max_length} threads")
      futures = all.map do |dashboard|
        Concurrent::Promises.future_on(::DatadogBackup::ThreadPool::TPOOL, dashboard) do |board|
          id = board[id_keyname]
          get_and_write_file(id)
        end
      end

      watcher = ::DatadogBackup::ThreadPool.watcher
      watcher.join if watcher.status

      Concurrent::Promises.zip(*futures).value!
    end

    def initialize(options)
      super(options)
      @banlist = %w[modified_at url].freeze
    end

    private

    def api_version
      'v1'
    end

    def api_resource_name
      'dashboard'
    end

    def id_keyname
      'id'
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
datadog_backup-3.2.0 lib/datadog_backup/dashboards.rb
datadog_backup-3.1.1 lib/datadog_backup/dashboards.rb