datadog-sync 0.0.2 → 0.0.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 76d02c9e4e60bab67d69c9433d13f8c54a13ee66
4
- data.tar.gz: 3689e39795d3a0af528add8829bb721df44636aa
3
+ metadata.gz: 362ba91faa77c572762565e3c667b04f7fbd0b84
4
+ data.tar.gz: 7f4a527f215f75d84469562ccd0c1e1ca0d678c9
5
5
  SHA512:
6
- metadata.gz: 869e8877bc21dd2e56d6a9bb6c6ff8e06fe4675b59fe1e8cf3fbf09abcb1f07cbb7dd52626522a9ba4f655ab2462ab8df34df55ae05ece84f56b6b3ba2752afd
7
- data.tar.gz: 367443a485eb1c51f76da3778a9ed90f7307826883f45cd1b99b92af167d28851d47ebe12225e4ad4467623b0384863731d27e59ba8bc3fafdeb2702b1d2f597
6
+ metadata.gz: 8045b667b2c03d28d358a3711e8b14418da5f20547c1fd80075169272ddd39c07ea86e01b8b1446edd160521e79b6e170aa48b6b9e2c5528ea7da9794035d3ef
7
+ data.tar.gz: 49e0885662df6d105f3b7de59c058a606c837baa38a26dfa84f9dc7f231ad6530354d7ca11a30e9a605a0fe36f89f1ba1d9613d56feeb80c711a31ff70e3e77d
data/Rakefile CHANGED
@@ -1,12 +1,15 @@
1
1
  require 'rubygems'
2
2
  require 'rubygems/package_task'
3
3
 
4
+ $:.push File.expand_path("../lib", __FILE__)
5
+ require "datadog_sync/version"
6
+
4
7
  gemspec = eval(File.read("datadog-sync.gemspec"))
5
8
  Gem::PackageTask.new(gemspec).define
6
9
 
7
10
  require 'rdoc/task'
8
11
  Rake::RDocTask.new do |rdoc|
9
- version = File.exist?("VERSION") ? File.read("VERSION") : ""
12
+ version = DatadogSync::VERSION
10
13
 
11
14
  rdoc.rdoc_dir = "rdoc"
12
15
  rdoc.title = "datadog-sync #{version}"
@@ -1,6 +1,19 @@
1
+ # Tool to import/export Datadog dashboards.
2
+ # * Backup in case if someone accidentally deletes dashboard and ability to recreate it with single command
3
+ # * Ability to keep dashboards in git repo, make modifications using text editor, suggest Pull Requests
4
+ # * YAML format providing simpler way to describe dashboards without repeating a lot of things in chatty JSON. Example: https://github.com/xeron/datadog-sync/blob/master/examples/dashboard_example.yml
5
+ # * Automation purposes (for example creating new dashboard or adding graphs when you deploy new version of application)
1
6
  class DatadogSync
2
- attr_reader :dd_client, :logger
7
+ attr_reader :dd_client, :logger # :nodoc:
3
8
 
9
+ # Create DatadogSync instance.
10
+ #
11
+ # ==== Attributes
12
+ # * +api_key+ - Datadog API key (String)
13
+ # * +app_key+ - Datadog APP key (String)
14
+ # * +options+ - Options (Hash)
15
+ # * +log_level+ - :debug < :info < :warn < :error < :fatal < :unknown
16
+ # * +log_target+ - log file path, +STDOUT+ by default
4
17
  def initialize(api_key, app_key, options={})
5
18
  default_options = {
6
19
  log_level: :info,
@@ -1,4 +1,7 @@
1
1
  class DatadogSync
2
+ # Raised when something doesn't exist
2
3
  DoesNotExist = Class.new(RuntimeError)
4
+
5
+ # Raised when something already exists
3
6
  AlreadyExists = Class.new(RuntimeError)
4
7
  end
@@ -1,4 +1,11 @@
1
1
  class DatadogSync
2
+ # Save dashboards from Datadog to the filesystem (export from DD).
3
+ #
4
+ # ==== Attributes
5
+ # * +dashboards_path+ - local path where to save json files with dashboard data (String)
6
+ # * +title_pattern+ - pattern to filter dashboards by name using regex, empty by default (String)
7
+ # ==== Returns
8
+ # * IDs of saved dashboards (Array)
2
9
  def save_dashboards(dashboards_path, title_pattern="")
3
10
  regex = Regexp.new(title_pattern)
4
11
  base_path = File.expand_path(dashboards_path)
@@ -16,7 +23,7 @@ class DatadogSync
16
23
  logger.info "Found #{all_dashes.count} dashboards"
17
24
 
18
25
  filtered_dashes = all_dashes.select { |dash| dash["title"] =~ regex }
19
- filtered_dashes_ids = filtered_dashes.collect { |dash| dash["id"] }
26
+ filtered_dashes_ids = filtered_dashes.collect { |dash| dash["id"].to_i }
20
27
 
21
28
  logger.info "Saving #{filtered_dashes.count} dashboards with pattern /#{title_pattern}/ into '#{base_path}'"
22
29
 
@@ -28,5 +35,7 @@ class DatadogSync
28
35
  f.puts JSON.pretty_generate(dash_data)
29
36
  end
30
37
  end
38
+
39
+ return filtered_dashes_ids
31
40
  end
32
41
  end
@@ -1,4 +1,11 @@
1
1
  class DatadogSync
2
+ # Update dashboards in Datadog from the local filesystem (import to DD).
3
+ #
4
+ # ==== Attributes
5
+ # * +dashboards_path+ - local path where to load json files from (String)
6
+ # * +title_pattern+ - pattern to filter dashboards by name using regex, empty by default (String)
7
+ # ==== Returns
8
+ # * IDs of updated dashboards (Array)
2
9
  def update_dashboards(dashboards_path, title_pattern="")
3
10
  regex = Regexp.new(title_pattern)
4
11
  base_path = File.expand_path(dashboards_path)
@@ -13,16 +20,21 @@ class DatadogSync
13
20
  logger.info "Found #{all_dash_files.count} local dashboards"
14
21
 
15
22
  filtered_dashes = []
23
+ filtered_dashes_ids = []
16
24
  all_dash_files.each do |file|
17
25
  data = JSON.parse(File.read(file))
18
- filtered_dashes << data if data["title"] =~ regex
26
+ if data["title"] =~ regex
27
+ filtered_dashes << data
28
+ filtered_dashes_ids << data["id"]
29
+ end
19
30
  end
20
- # filtered_dashes_ids = filtered_dashes.collect { |dash| dash["id"] }
21
31
 
22
32
  logger.info "Updating #{filtered_dashes.count} dashboards with pattern /#{title_pattern}/ from '#{base_path}'"
23
33
 
24
34
  filtered_dashes.each do |dash|
25
35
  dd_client.update_dashboard(dash["id"], dash["title"], dash["description"], dash["graphs"], dash["template_variables"])
26
36
  end
37
+
38
+ return filtered_dashes_ids
27
39
  end
28
40
  end
@@ -1,3 +1,4 @@
1
1
  class DatadogSync
2
- VERSION = '0.0.2'
2
+ # Version of library
3
+ VERSION = '0.0.3'
3
4
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: datadog-sync
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.2
4
+ version: 0.0.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ivan Larionov