datadog_backup 1.0.4 → 1.1.2

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 7caee2d991c55f7dfc74c86ede132f8668a84a9a3e03edf6804c887e4134f8c3
4
- data.tar.gz: 3db5f4353abb8b193477ad34695d8aaa147ed0dd0757bb2e4ee7d39f02ee55c3
3
+ metadata.gz: 56ff82a616154e19aa71e5a9f552dae87569483259a6d7a9ab1e5e8ca19e6e81
4
+ data.tar.gz: 987f889873b25ae4addb9f0e8a6867828519d00268fa989b3af585438ae09494
5
5
  SHA512:
6
- metadata.gz: 9c192d88ef8ed33736649a9e9672bf92e09f043d92e9909393bc327773e11de011afa22afebc0d000253cfafa25de76aa31c88cb8a903a537b389acbdc9142c2
7
- data.tar.gz: f3029bf8449950a2584f0b6e6aa68ed359726e890cd5d399fb5fb715863a2a230d4f07cbfb1e23b67c4d4ae0cecdef3b875b98feae2c49073ad6f33e8edfa5ea
6
+ metadata.gz: 577e5a1ea30a389246313f6a1837fa2e2951536d18af16673379ca066c8d97c526e81b2f21456e43ef8ebe08fe70b4f1bcfa6e3831f26099f1bfe9165c85734e
7
+ data.tar.gz: 4554302c678bfd9ccdbce6e5606ebcc8ef74676aae47513bfefdb761664b5b488f7776b741d144080a65e9fc37d8b9a46bd8cc939d57eb2e1695769ff87464e3
@@ -12,10 +12,10 @@ jobs:
12
12
  matrix:
13
13
  os: [ubuntu-latest, macos-latest]
14
14
  # Due to https://github.com/actions/runner/issues/849, we have to use quotes for '3.0'
15
- ruby: [2.6, 2.7]
15
+ ruby: [2.5, 2.6, 2.7, '3.0']
16
16
  runs-on: ${{ matrix.os }}
17
17
  steps:
18
- - uses: actions/checkout@v2.3.4
18
+ - uses: actions/checkout@v2.4.0
19
19
  - name: Set up Ruby
20
20
  uses: ruby/setup-ruby@v1
21
21
  with:
@@ -31,7 +31,7 @@ jobs:
31
31
  env:
32
32
  BUNDLE_DEPLOYMENT: true
33
33
  steps:
34
- - uses: actions/checkout@v2.3.4
34
+ - uses: actions/checkout@v2.4.0
35
35
  - name: Set up Ruby
36
36
  uses: ruby/setup-ruby@v1
37
37
  with:
@@ -49,6 +49,6 @@ jobs:
49
49
  with:
50
50
  semantic_version: 17
51
51
  extra_plugins: |
52
- @semantic-release/changelog
53
- @semantic-release/git
54
- semantic-release-rubygem
52
+ @semantic-release/changelog@5
53
+ @semantic-release/git@9
54
+ semantic-release-rubygem@1
data/.gitignore CHANGED
@@ -119,3 +119,5 @@ spec/helpers/failures.txt
119
119
  backup/
120
120
 
121
121
  .envrc
122
+
123
+ .vscode
data/.rubocop.yml CHANGED
@@ -1 +1,78 @@
1
- require: rubocop-rspec
1
+ require: rubocop-rspec
2
+
3
+ Gemspec/DateAssignment: # (new in 1.10)
4
+ Enabled: true
5
+ Layout/LineEndStringConcatenationIndentation: # (new in 1.18)
6
+ Enabled: true
7
+ Layout/SpaceBeforeBrackets: # (new in 1.7)
8
+ Enabled: true
9
+ Lint/AmbiguousAssignment: # (new in 1.7)
10
+ Enabled: true
11
+ Lint/DeprecatedConstants: # (new in 1.8)
12
+ Enabled: true
13
+ Lint/DuplicateBranch: # (new in 1.3)
14
+ Enabled: true
15
+ Lint/DuplicateRegexpCharacterClassElement: # (new in 1.1)
16
+ Enabled: true
17
+ Lint/EmptyBlock: # (new in 1.1)
18
+ Enabled: true
19
+ Lint/EmptyClass: # (new in 1.3)
20
+ Enabled: true
21
+ Lint/EmptyInPattern: # (new in 1.16)
22
+ Enabled: true
23
+ Lint/LambdaWithoutLiteralBlock: # (new in 1.8)
24
+ Enabled: true
25
+ Lint/NoReturnInBeginEndBlocks: # (new in 1.2)
26
+ Enabled: true
27
+ Lint/NumberedParameterAssignment: # (new in 1.9)
28
+ Enabled: true
29
+ Lint/OrAssignmentToConstant: # (new in 1.9)
30
+ Enabled: true
31
+ Lint/RedundantDirGlobSort: # (new in 1.8)
32
+ Enabled: true
33
+ Lint/SymbolConversion: # (new in 1.9)
34
+ Enabled: true
35
+ Lint/ToEnumArguments: # (new in 1.1)
36
+ Enabled: true
37
+ Lint/TripleQuotes: # (new in 1.9)
38
+ Enabled: true
39
+ Lint/UnexpectedBlockArity: # (new in 1.5)
40
+ Enabled: true
41
+ Lint/UnmodifiedReduceAccumulator: # (new in 1.1)
42
+ Enabled: true
43
+ Naming/InclusiveLanguage: # (new in 1.18)
44
+ Enabled: true
45
+ Style/ArgumentsForwarding: # (new in 1.1)
46
+ Enabled: true
47
+ Style/CollectionCompact: # (new in 1.2)
48
+ Enabled: true
49
+ Style/DocumentDynamicEvalDefinition: # (new in 1.1)
50
+ Enabled: true
51
+ Style/EndlessMethod: # (new in 1.8)
52
+ Enabled: true
53
+ Style/HashConversion: # (new in 1.10)
54
+ Enabled: true
55
+ Style/HashExcept: # (new in 1.7)
56
+ Enabled: true
57
+ Style/IfWithBooleanLiteralBranches: # (new in 1.9)
58
+ Enabled: true
59
+ Style/InPatternThen: # (new in 1.16)
60
+ Enabled: true
61
+ Style/MultilineInPatternThen: # (new in 1.16)
62
+ Enabled: true
63
+ Style/NegatedIfElseCondition: # (new in 1.2)
64
+ Enabled: true
65
+ Style/NilLambda: # (new in 1.3)
66
+ Enabled: true
67
+ Style/QuotedSymbols: # (new in 1.16)
68
+ Enabled: true
69
+ Style/RedundantArgument: # (new in 1.4)
70
+ Enabled: true
71
+ Style/StringChars: # (new in 1.12)
72
+ Enabled: true
73
+ Style/SwapValues: # (new in 1.1)
74
+ Enabled: true
75
+ RSpec/IdenticalEqualityAssertion: # (new in 2.4)
76
+ Enabled: true
77
+ RSpec/Rails/AvoidSetupHook: # (new in 2.4)
78
+ Enabled: true
data/CHANGELOG.md CHANGED
@@ -1,3 +1,31 @@
1
+ ## [1.1.2](https://github.com/scribd/datadog_backup/compare/v1.1.1...v1.1.2) (2022-02-01)
2
+
3
+
4
+ ### Bug Fixes
5
+
6
+ * pin semantic release plugins ([5e92303](https://github.com/scribd/datadog_backup/commit/5e9230362f0b112de190fb1458fc9a3f32423c63))
7
+
8
+ ## [1.1.1](https://github.com/scribd/datadog_backup/compare/v1.1.0...v1.1.1) (2021-10-26)
9
+
10
+
11
+ ### Bug Fixes
12
+
13
+ * **deps:** update amazing_print requirement from = 1.3.0 to = 1.4.0 ([b7e0ca6](https://github.com/scribd/datadog_backup/commit/b7e0ca61f0fb5acbeb541d3b173aa526a0edcf3d))
14
+
15
+ # [1.1.0](https://github.com/scribd/datadog_backup/compare/v1.0.5...v1.1.0) (2021-07-14)
16
+
17
+
18
+ ### Features
19
+
20
+ * Add support for ruby 2.5 and 3.0 ([#89](https://github.com/scribd/datadog_backup/issues/89)) ([a181dbc](https://github.com/scribd/datadog_backup/commit/a181dbcfd55220e2fd7ce92d384738f71c50baa8))
21
+
22
+ ## [1.0.5](https://github.com/scribd/datadog_backup/compare/v1.0.4...v1.0.5) (2021-07-12)
23
+
24
+
25
+ ### Bug Fixes
26
+
27
+ * Add documentation for DATADOG_HOST usage ([69acc25](https://github.com/scribd/datadog_backup/commit/69acc2574d17310ee090486ec46cb06ab0f450db))
28
+
1
29
  ## [1.0.4](https://github.com/scribd/datadog_backup/compare/v1.0.3...v1.0.4) (2021-07-08)
2
30
 
3
31
 
data/Gemfile CHANGED
@@ -5,7 +5,6 @@ source 'https://rubygems.org'
5
5
  gemspec
6
6
 
7
7
  group :development, :test do
8
- gem 'climate_control'
9
8
  gem 'guard-rspec'
10
9
  gem 'rspec'
11
10
  gem 'rubocop'
data/Gemfile.lock CHANGED
@@ -2,9 +2,8 @@ PATH
2
2
  remote: .
3
3
  specs:
4
4
  datadog_backup (0.6.0)
5
- amazing_print (= 1.3.0)
5
+ amazing_print (= 1.4.0)
6
6
  concurrent-ruby (= 1.1.9)
7
- concurrent-ruby-edge (= 0.6.0)
8
7
  deepsort (= 0.4.5)
9
8
  diffy (= 3.4.0)
10
9
  dogapi (= 1.45.0)
@@ -12,21 +11,18 @@ PATH
12
11
  GEM
13
12
  remote: https://rubygems.org/
14
13
  specs:
15
- amazing_print (1.3.0)
14
+ amazing_print (1.4.0)
16
15
  ast (2.4.2)
17
- climate_control (1.0.1)
18
16
  coderay (1.1.3)
19
17
  concurrent-ruby (1.1.9)
20
- concurrent-ruby-edge (0.6.0)
21
- concurrent-ruby (~> 1.1.6)
22
18
  deepsort (0.4.5)
23
19
  diff-lcs (1.4.4)
24
20
  diffy (3.4.0)
25
21
  dogapi (1.45.0)
26
22
  multi_json
27
- ffi (1.13.1)
28
- formatador (0.2.5)
29
- guard (2.16.2)
23
+ ffi (1.15.3)
24
+ formatador (0.3.0)
25
+ guard (2.17.0)
30
26
  formatador (>= 0.2.4)
31
27
  listen (>= 2.7, < 4.0)
32
28
  lumberjack (>= 1.0.12, < 2.0)
@@ -40,66 +36,64 @@ GEM
40
36
  guard (~> 2.1)
41
37
  guard-compat (~> 1.1)
42
38
  rspec (>= 2.99.0, < 4.0)
43
- listen (3.2.1)
39
+ listen (3.5.1)
44
40
  rb-fsevent (~> 0.10, >= 0.10.3)
45
41
  rb-inotify (~> 0.9, >= 0.9.10)
46
- lumberjack (1.2.6)
42
+ lumberjack (1.2.8)
47
43
  method_source (1.0.0)
48
44
  multi_json (1.15.0)
49
45
  nenv (0.3.0)
50
46
  notiffany (0.1.3)
51
47
  nenv (~> 0.1)
52
48
  shellany (~> 0.0)
53
- parallel (1.20.1)
54
- parser (3.0.1.1)
49
+ parallel (1.21.0)
50
+ parser (3.0.3.2)
55
51
  ast (~> 2.4.1)
56
52
  pry (0.14.1)
57
53
  coderay (~> 1.1)
58
54
  method_source (~> 1.0)
59
55
  rainbow (3.0.0)
60
- rb-fsevent (0.10.4)
56
+ rb-fsevent (0.11.0)
61
57
  rb-inotify (0.10.1)
62
58
  ffi (~> 1.0)
63
- regexp_parser (2.1.1)
59
+ regexp_parser (2.2.0)
64
60
  rexml (3.2.5)
65
61
  rspec (3.10.0)
66
62
  rspec-core (~> 3.10.0)
67
63
  rspec-expectations (~> 3.10.0)
68
64
  rspec-mocks (~> 3.10.0)
69
- rspec-core (3.10.0)
65
+ rspec-core (3.10.1)
70
66
  rspec-support (~> 3.10.0)
71
- rspec-expectations (3.10.0)
67
+ rspec-expectations (3.10.1)
72
68
  diff-lcs (>= 1.2.0, < 2.0)
73
69
  rspec-support (~> 3.10.0)
74
- rspec-mocks (3.10.0)
70
+ rspec-mocks (3.10.2)
75
71
  diff-lcs (>= 1.2.0, < 2.0)
76
72
  rspec-support (~> 3.10.0)
77
- rspec-support (3.10.0)
78
- rubocop (1.18.3)
73
+ rspec-support (3.10.2)
74
+ rubocop (1.22.2)
79
75
  parallel (~> 1.10)
80
76
  parser (>= 3.0.0.0)
81
77
  rainbow (>= 2.2.2, < 4.0)
82
78
  regexp_parser (>= 1.8, < 3.0)
83
79
  rexml
84
- rubocop-ast (>= 1.7.0, < 2.0)
80
+ rubocop-ast (>= 1.12.0, < 2.0)
85
81
  ruby-progressbar (~> 1.7)
86
82
  unicode-display_width (>= 1.4.0, < 3.0)
87
- rubocop-ast (1.7.0)
83
+ rubocop-ast (1.15.0)
88
84
  parser (>= 3.0.1.1)
89
- rubocop-rspec (2.4.0)
90
- rubocop (~> 1.0)
91
- rubocop-ast (>= 1.1.0)
85
+ rubocop-rspec (2.7.0)
86
+ rubocop (~> 1.19)
92
87
  ruby-progressbar (1.11.0)
93
88
  shellany (0.0.1)
94
- thor (1.0.1)
95
- unicode-display_width (2.0.0)
89
+ thor (1.1.0)
90
+ unicode-display_width (2.1.0)
96
91
 
97
92
  PLATFORMS
98
93
  ruby
99
94
 
100
95
  DEPENDENCIES
101
96
  bundler
102
- climate_control
103
97
  datadog_backup!
104
98
  guard-rspec
105
99
  pry
@@ -108,4 +102,4 @@ DEPENDENCIES
108
102
  rubocop-rspec
109
103
 
110
104
  BUNDLED WITH
111
- 2.1.4
105
+ 2.2.21
data/README.md CHANGED
@@ -16,12 +16,6 @@ Additional features may be built out over time.
16
16
  ```
17
17
  gem install datadog_backup
18
18
  ```
19
- or
20
-
21
- ```
22
- gem build datadog_backup.gemspec
23
- gem install datadog_backup-*.gem
24
- ```
25
19
 
26
20
  ## Usage
27
21
 
@@ -36,18 +30,47 @@ gem install datadog_backup
36
30
  export DATADOG_API_KEY=abc123
37
31
  export DATADOG_APP_KEY=abc123
38
32
 
39
- # Perform backup to optional/path/to/backupdir using YAML encoding
40
- datadog_backup backup --backup-dir optional/path/to/backupdir
33
+ # Perform backup to `./backup/` using YAML encoding
34
+ datadog_backup backup
41
35
 
42
36
  # Make some changes
43
37
 
44
38
  # Just review the changes since last backup
45
- datadog_backup diffs --backup-dir optional/path/to/backupdir
39
+ datadog_backup diffs
46
40
 
47
- # Review and apply local changes to datadog
41
+ # Review the changes since last backup and apply local changes to datadog
48
42
 
49
- datadog_backup restore --backup-dir optional/path/to/backupdir
43
+ datadog_backup restore
50
44
  ```
45
+ ## Parameters
46
+
47
+ Supply the following parameters in order to customize datadog_backup:
48
+
49
+ parameter | description | default
50
+ ---------------------|-------------------------------------------------------------------------------------------------------------------------------|--------------------------
51
+ --debug | log debug and above | info
52
+ --shh | log warnings and above | info
53
+ --shhh | log errors and above | info
54
+ --backup-dir PATH | path to the directory to backup to or restore from | `./backup/`
55
+ --monitors-only | only backup monitors | backup monitors and dashboards
56
+ --dashboards-only | only backup dashboards | backup monitors and dashboards
57
+ --json | format backups as JSON instead of YAML. Does not impact `diffs` nor `restore`, but do not mix formats in the same backup-dir. | YAML
58
+ --no-color | removes colored output from diff format
59
+ --diff-format FORMAT | one of `color`, `html_simple`, `html` | `color`
60
+ --force-restore | Force restore to Datadog. Do not ask to validate. Non-interactive.
61
+ --h, --help | help
62
+
63
+ ## Environment variables
64
+
65
+ The following environment variables can be set in order to further customize datadog_backup:
66
+
67
+ environment variable | description | default
68
+ ---------------------|--------------------------------------------------------------------------------|--------------------------
69
+ DATADOG_HOST | Describe the API endpoint to connect to (https://api.datadoghq.eu for example) | https://api.datadoghq.com
70
+ http_proxy | Instruct Dogapi to connect via a differnt proxy address | none
71
+ https_proxy | Same as `http_proxy` | none
72
+ dd_proxy_https | Same as `http_proxy` | none
73
+
51
74
 
52
75
  ### Usage in a Github repo
53
76
 
data/bin/datadog_backup CHANGED
@@ -13,25 +13,24 @@ $stdout.sync = $stderr.sync = true
13
13
  LOGGER = Logger.new($stderr) unless defined?(LOGGER)
14
14
  LOGGER.level = Logger::INFO
15
15
 
16
- ##
17
- # Default parameters
18
- @options = {
19
- action: nil,
20
- datadog_api_key: ENV.fetch('DATADOG_API_KEY'),
21
- datadog_app_key: ENV.fetch('DATADOG_APP_KEY'),
22
- backup_dir: File.join(ENV.fetch('PWD'), 'backup'),
23
- diff_format: :color,
24
- resources: [DatadogBackup::Dashboards, DatadogBackup::Monitors],
25
- output_format: :yaml,
26
- force_restore: false,
27
- logger: LOGGER
28
- }
16
+ def fatal(message)
17
+ LOGGER.fatal(message)
18
+ exit 1
19
+ end
20
+
21
+ def options_valid?(options)
22
+ %w[backup diffs restore].include?(options[:action]) &&
23
+ options[:datadog_api_key] &&
24
+ options[:datadog_app_key]
25
+ end
29
26
 
30
- def prereqs
27
+ def prereqs(defaults)
31
28
  ARGV << '--help' if ARGV.empty?
32
29
 
30
+ result = defaults.dup
31
+
33
32
  options = OptionParser.new do |opts|
34
- opts.banner = "Usage: #{File.basename($PROGRAM_NAME)} <backup|diffs|restore>"
33
+ opts.banner = "Usage: DATADOG_API_KEY=abc123 DATADOG_APP_KEY=abc123 #{File.basename($PROGRAM_NAME)} <backup|diffs|restore>"
35
34
  opts.separator ''
36
35
  opts.on_tail('-h', '--help', 'Show this message') do
37
36
  puts opts
@@ -47,40 +46,49 @@ def prereqs
47
46
  LOGGER.level = Logger::ERROR
48
47
  end
49
48
  opts.on('--backup-dir PATH', '`backup` by default') do |path|
50
- @options[:backup_dir] = path
49
+ result[:backup_dir] = path
51
50
  end
52
51
  opts.on('--monitors-only') do
53
- @options[:resources] = [DatadogBackup::Monitors]
52
+ result[:resources] = [DatadogBackup::Monitors]
54
53
  end
55
54
  opts.on('--dashboards-only') do
56
- @options[:resources] = [DatadogBackup::Dashboards]
55
+ result[:resources] = [DatadogBackup::Dashboards]
57
56
  end
58
57
  opts.on(
59
58
  '--json',
60
59
  'format backups as JSON instead of YAML. Does not impact `diffs` nor `restore`, but do not mix formats in the same backup-dir.'
61
60
  ) do
62
- @options[:output_format] = :json
61
+ result[:output_format] = :json
63
62
  end
64
63
  opts.on('--no-color', 'removes colored output from diff format') do
65
- @options[:diff_format] = nil
64
+ result[:diff_format] = nil
66
65
  end
67
66
  opts.on('--diff-format FORMAT', 'one of `color`, `html_simple`, `html`') do |format|
68
- @options[:diff_format] = format.to_sym
67
+ result[:diff_format] = format.to_sym
69
68
  end
70
- opts.on('--force-restore', 'force restore to Datadog') do
71
- @options[:force_restore] = true
69
+ opts.on('--force-restore', 'Force restore to Datadog. Do not ask to validate. Non-interactive.') do
70
+ result[:force_restore] = true
72
71
  end
73
72
  end
74
73
  options.parse!
75
74
 
76
- @options[:action] = ARGV.first
77
- if %w[backup diffs restore].include?(@options[:action])
78
- else
79
- puts options
80
- exit 0
81
- end
75
+ result[:action] = ARGV.first
76
+ fatal(options) unless options_valid?(result)
77
+ result
82
78
  end
83
79
 
84
- prereqs
80
+ ##
81
+ # Default parameters
82
+ defaults = {
83
+ action: nil,
84
+ datadog_api_key: ENV.fetch('DATADOG_API_KEY', nil),
85
+ datadog_app_key: ENV.fetch('DATADOG_APP_KEY', nil),
86
+ backup_dir: File.join(ENV.fetch('PWD'), 'backup'),
87
+ diff_format: :color,
88
+ resources: [DatadogBackup::Dashboards, DatadogBackup::Monitors],
89
+ output_format: :yaml,
90
+ force_restore: false,
91
+ logger: LOGGER
92
+ }
85
93
 
86
- DatadogBackup::Cli.new(@options).run!
94
+ DatadogBackup::Cli.new(prereqs(defaults)).run!
@@ -19,9 +19,10 @@ Gem::Specification.new do |spec|
19
19
  spec.test_files = spec.files.grep(%r{^spec/})
20
20
  spec.require_paths = ['lib']
21
21
 
22
- spec.add_dependency 'amazing_print', '1.3.0'
22
+ spec.required_ruby_version = ['>= 2.5']
23
+
24
+ spec.add_dependency 'amazing_print', '1.4.0'
23
25
  spec.add_dependency 'concurrent-ruby', '1.1.9'
24
- spec.add_dependency 'concurrent-ruby-edge', '0.6.0'
25
26
  spec.add_dependency 'deepsort', '0.4.5'
26
27
  spec.add_dependency 'diffy', '3.4.0'
27
28
  spec.add_dependency 'dogapi', '1.45.0'
@@ -48,7 +48,7 @@ module DatadogBackup
48
48
  Concurrent::Promises
49
49
  .zip(*futures)
50
50
  .value!
51
- .reject { |_k, v| v.nil? }
51
+ .compact
52
52
  )
53
53
  end
54
54
 
@@ -49,6 +49,7 @@ module DatadogBackup
49
49
  end
50
50
  rescue RuntimeError => e
51
51
  return {} if e.message.include?('Request failed with error ["404"')
52
+
52
53
  raise e.message
53
54
  end
54
55
 
@@ -46,7 +46,7 @@ module DatadogBackup
46
46
  end
47
47
 
48
48
  def file_type(filepath)
49
- ::File.extname(filepath).strip.downcase[1..].to_sym
49
+ ::File.extname(filepath).strip.downcase[1..-1].to_sym
50
50
  end
51
51
 
52
52
  def find_file_by_id(id)
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module DatadogBackup
4
- VERSION = '1.0.4'
4
+ VERSION = '1.1.2'
5
5
  end
@@ -1,7 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require 'concurrent'
4
- require 'concurrent-edge'
5
4
 
6
5
  require 'dogapi'
7
6
 
@@ -26,6 +26,36 @@ describe DatadogBackup::Cli do
26
26
  allow(cli).to receive(:resource_instances).and_return([dashboards])
27
27
  end
28
28
 
29
+ describe '#initialize_client' do
30
+ subject { described_class.new({ datadog_api_key: 1, datadog_app_key: 1 }).initialize_client }
31
+
32
+ it { is_expected.to be_a(Dogapi::Client) }
33
+
34
+ context 'when the environment variable DATADOG_HOST is set to a custom host like https://api.datadoghq.eu' do
35
+ before do
36
+ stub_const('ENV', 'DATADOG_HOST' => 'https://api.datadoghq.eu')
37
+ end
38
+
39
+ describe 'then #datadog_host is https://api.datadoghq.eu' do
40
+ subject { described_class.new({ datadog_api_key: 1, datadog_app_key: 1 }).initialize_client.datadog_host }
41
+
42
+ it { is_expected.to eq('https://api.datadoghq.eu') }
43
+ end
44
+ end
45
+
46
+ context 'when the environment variable DATADOG_HOST is not set' do
47
+ before do
48
+ stub_const('ENV', {})
49
+ end
50
+
51
+ describe 'then #datadog_host is https://api.datadoghq.eu' do
52
+ subject { described_class.new({ datadog_api_key: 1, datadog_app_key: 1 }).initialize_client.datadog_host }
53
+
54
+ it { is_expected.to eq('https://api.datadoghq.com') }
55
+ end
56
+ end
57
+ end
58
+
29
59
  describe '#backup' do
30
60
  context 'when dashboards are deleted in datadog' do
31
61
  let(:all_boards) do
@@ -1,7 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require 'open3'
4
- require 'climate_control'
5
4
  require 'timeout'
6
5
 
7
6
  describe 'bin/datadog_backup' do
@@ -37,23 +36,23 @@ describe 'bin/datadog_backup' do
37
36
  DATADOG_APP_KEY
38
37
  ]
39
38
 
40
- before do
41
- required_vars.each do |v|
42
- ClimateControl.env[v] = v.downcase
43
- end
39
+ env = {}
40
+ required_vars.each do |v|
41
+ env[v] = v.downcase
44
42
  end
45
43
 
46
44
  required_vars.map do |v|
47
45
  it "dies unless given ENV[#{v}]" do
48
- ClimateControl.env[v] = nil
46
+ stub_const('ENV', env.dup.tap { |h| h.delete(v) })
49
47
  _, status = run_bin('backup')
50
48
  expect(status).not_to be_success
51
49
  end
52
50
  end
53
51
 
54
52
  it 'supplies help' do
53
+ stub_const('ENV', env)
55
54
  out_err, status = run_bin('--help')
56
- expect(out_err).to match(/Usage: datadog_backup/)
55
+ expect(out_err).to match(/Usage: DATADOG_API_KEY=/)
57
56
  expect(status).to be_success
58
57
  end
59
58
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: datadog_backup
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.4
4
+ version: 1.1.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Kamran Farhadi
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2021-07-08 00:00:00.000000000 Z
12
+ date: 2022-02-01 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: amazing_print
@@ -17,14 +17,14 @@ dependencies:
17
17
  requirements:
18
18
  - - '='
19
19
  - !ruby/object:Gem::Version
20
- version: 1.3.0
20
+ version: 1.4.0
21
21
  type: :runtime
22
22
  prerelease: false
23
23
  version_requirements: !ruby/object:Gem::Requirement
24
24
  requirements:
25
25
  - - '='
26
26
  - !ruby/object:Gem::Version
27
- version: 1.3.0
27
+ version: 1.4.0
28
28
  - !ruby/object:Gem::Dependency
29
29
  name: concurrent-ruby
30
30
  requirement: !ruby/object:Gem::Requirement
@@ -39,20 +39,6 @@ dependencies:
39
39
  - - '='
40
40
  - !ruby/object:Gem::Version
41
41
  version: 1.1.9
42
- - !ruby/object:Gem::Dependency
43
- name: concurrent-ruby-edge
44
- requirement: !ruby/object:Gem::Requirement
45
- requirements:
46
- - - '='
47
- - !ruby/object:Gem::Version
48
- version: 0.6.0
49
- type: :runtime
50
- prerelease: false
51
- version_requirements: !ruby/object:Gem::Requirement
52
- requirements:
53
- - - '='
54
- - !ruby/object:Gem::Version
55
- version: 0.6.0
56
42
  - !ruby/object:Gem::Dependency
57
43
  name: deepsort
58
44
  requirement: !ruby/object:Gem::Requirement
@@ -181,7 +167,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
181
167
  requirements:
182
168
  - - ">="
183
169
  - !ruby/object:Gem::Version
184
- version: '0'
170
+ version: '2.5'
185
171
  required_rubygems_version: !ruby/object:Gem::Requirement
186
172
  requirements:
187
173
  - - ">="