dogapi 1.37.1 → 1.42.0

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.
Files changed (90) hide show
  1. checksums.yaml +4 -4
  2. data/.azure-pipelines/all.yml +16 -7
  3. data/.github/CODEOWNERS +10 -0
  4. data/.github/ISSUE_TEMPLATE/bug_report.md +36 -0
  5. data/.github/ISSUE_TEMPLATE/feature_request.md +23 -0
  6. data/.github/PULL_REQUEST_TEMPLATE.md +77 -0
  7. data/.github/labeler.yml +5 -0
  8. data/.github/workflows/labeler.yml +11 -0
  9. data/.github/workflows/stale.yml +39 -0
  10. data/.rubocop_todo.yml +51 -71
  11. data/CHANGELOG.md +37 -0
  12. data/CONTRIBUTING.md +111 -0
  13. data/DEVELOPMENT.md +11 -0
  14. data/Gemfile +2 -0
  15. data/Gemfile_1.9 +13 -0
  16. data/LICENSE +21 -20
  17. data/LICENSE-3rdparty.csv +6 -0
  18. data/README.rdoc +14 -0
  19. data/RELEASING.md +46 -0
  20. data/SUPPORT.md +9 -0
  21. data/dogapi.gemspec +2 -0
  22. data/examples/custom_metric.rb +1 -1
  23. data/lib/capistrano/README.md +4 -1
  24. data/lib/capistrano/datadog.rb +8 -4
  25. data/lib/capistrano/datadog/v2.rb +9 -1
  26. data/lib/capistrano/datadog/v3.rb +10 -1
  27. data/lib/dogapi.rb +4 -0
  28. data/lib/dogapi/common.rb +90 -35
  29. data/lib/dogapi/event.rb +4 -0
  30. data/lib/dogapi/facade.rb +212 -10
  31. data/lib/dogapi/metric.rb +4 -0
  32. data/lib/dogapi/v1.rb +10 -0
  33. data/lib/dogapi/v1/alert.rb +4 -0
  34. data/lib/dogapi/v1/aws_integration.rb +117 -0
  35. data/lib/dogapi/v1/aws_logs.rb +107 -0
  36. data/lib/dogapi/v1/azure_integration.rb +85 -0
  37. data/lib/dogapi/v1/comment.rb +4 -0
  38. data/lib/dogapi/v1/dash.rb +10 -4
  39. data/lib/dogapi/v1/dashboard.rb +16 -0
  40. data/lib/dogapi/v1/dashboard_list.rb +4 -0
  41. data/lib/dogapi/v1/embed.rb +4 -0
  42. data/lib/dogapi/v1/event.rb +4 -0
  43. data/lib/dogapi/v1/gcp_integration.rb +76 -0
  44. data/lib/dogapi/v1/hosts.rb +4 -0
  45. data/lib/dogapi/v1/integration.rb +4 -0
  46. data/lib/dogapi/v1/metadata.rb +4 -0
  47. data/lib/dogapi/v1/metric.rb +4 -0
  48. data/lib/dogapi/v1/monitor.rb +20 -7
  49. data/lib/dogapi/v1/screenboard.rb +4 -0
  50. data/lib/dogapi/v1/search.rb +4 -0
  51. data/lib/dogapi/v1/service_check.rb +4 -0
  52. data/lib/dogapi/v1/service_level_objective.rb +113 -0
  53. data/lib/dogapi/v1/snapshot.rb +4 -0
  54. data/lib/dogapi/v1/synthetics.rb +80 -0
  55. data/lib/dogapi/v1/tag.rb +4 -0
  56. data/lib/dogapi/v1/usage.rb +4 -0
  57. data/lib/dogapi/v1/user.rb +4 -0
  58. data/lib/dogapi/v2.rb +4 -0
  59. data/lib/dogapi/v2/dashboard_list.rb +4 -0
  60. data/lib/dogapi/version.rb +5 -1
  61. data/spec/integration/alert_spec.rb +4 -0
  62. data/spec/integration/aws_integration_spec.rb +55 -0
  63. data/spec/integration/aws_logs_spec.rb +59 -0
  64. data/spec/integration/azure_integration_spec.rb +63 -0
  65. data/spec/integration/comment_spec.rb +5 -0
  66. data/spec/integration/common_spec.rb +4 -0
  67. data/spec/integration/dash_spec.rb +7 -1
  68. data/spec/integration/dashboard_list_spec.rb +4 -0
  69. data/spec/integration/dashboard_spec.rb +15 -1
  70. data/spec/integration/embed_spec.rb +4 -0
  71. data/spec/integration/event_spec.rb +5 -0
  72. data/spec/integration/gcp_integration_spec.rb +57 -0
  73. data/spec/integration/integration_spec.rb +4 -0
  74. data/spec/integration/metadata_spec.rb +4 -0
  75. data/spec/integration/metric_spec.rb +4 -0
  76. data/spec/integration/monitor_spec.rb +30 -1
  77. data/spec/integration/screenboard_spec.rb +4 -0
  78. data/spec/integration/search_spec.rb +4 -0
  79. data/spec/integration/service_check_spec.rb +4 -0
  80. data/spec/integration/service_level_objective_spec.rb +73 -0
  81. data/spec/integration/snapshot_spec.rb +4 -0
  82. data/spec/integration/synthetics_spec.rb +131 -0
  83. data/spec/integration/tag_spec.rb +4 -0
  84. data/spec/integration/usage_spec.rb +4 -0
  85. data/spec/integration/user_spec.rb +4 -0
  86. data/spec/spec_helper.rb +21 -0
  87. data/spec/unit/capistrano_spec.rb +4 -0
  88. data/spec/unit/common_spec.rb +64 -7
  89. data/spec/unit/facade_spec.rb +4 -0
  90. metadata +37 -7
@@ -1,3 +1,7 @@
1
+ # Unless explicitly stated otherwise all files in this repository are licensed under the BSD-3-Clause License.
2
+ # This product includes software developed at Datadog (https://www.datadoghq.com/).
3
+ # Copyright 2011-Present Datadog, Inc.
4
+
1
5
  require 'net/http'
2
6
 
3
7
  require 'rubygems'
@@ -1,3 +1,7 @@
1
+ # Unless explicitly stated otherwise all files in this repository are licensed under the BSD-3-Clause License.
2
+ # This product includes software developed at Datadog (https://www.datadoghq.com/).
3
+ # Copyright 2011-Present Datadog, Inc.
4
+
1
5
  require 'dogapi/v1/alert'
2
6
  require 'dogapi/v1/comment'
3
7
  require 'dogapi/v1/dash'
@@ -11,9 +15,15 @@ require 'dogapi/v1/monitor'
11
15
  require 'dogapi/v1/screenboard'
12
16
  require 'dogapi/v1/search'
13
17
  require 'dogapi/v1/service_check'
18
+ require 'dogapi/v1/service_level_objective'
14
19
  require 'dogapi/v1/snapshot'
20
+ require 'dogapi/v1/synthetics'
15
21
  require 'dogapi/v1/tag'
16
22
  require 'dogapi/v1/user'
17
23
  require 'dogapi/v1/hosts'
18
24
  require 'dogapi/v1/integration'
19
25
  require 'dogapi/v1/usage'
26
+ require 'dogapi/v1/aws_integration'
27
+ require 'dogapi/v1/aws_logs'
28
+ require 'dogapi/v1/azure_integration'
29
+ require 'dogapi/v1/gcp_integration'
@@ -1,3 +1,7 @@
1
+ # Unless explicitly stated otherwise all files in this repository are licensed under the BSD-3-Clause License.
2
+ # This product includes software developed at Datadog (https://www.datadoghq.com/).
3
+ # Copyright 2011-Present Datadog, Inc.
4
+
1
5
  require 'dogapi'
2
6
 
3
7
  module Dogapi
@@ -0,0 +1,117 @@
1
+ # Unless explicitly stated otherwise all files in this repository are licensed under the BSD-3-Clause License.
2
+ # This product includes software developed at Datadog (https://www.datadoghq.com/).
3
+ # Copyright 2011-Present Datadog, Inc.
4
+
5
+ require 'dogapi'
6
+
7
+ module Dogapi
8
+ class V1 # for namespacing
9
+
10
+ # AwsIntegrationService for user interaction with AWS configs.
11
+ class AwsIntegrationService < Dogapi::APIService
12
+
13
+ API_VERSION = 'v1'
14
+
15
+ # Retrieve AWS integration information
16
+ def aws_integration_list
17
+ request(Net::HTTP::Get, "/api/#{API_VERSION}/integration/aws", nil, nil, false)
18
+ end
19
+
20
+ # Create an AWS integration
21
+ # :config => Hash: integration config.
22
+ # config = {
23
+ # :account_id => '<AWS_ACCOUNT>',
24
+ # :host_tags => ['api:example'],
25
+ # :role_name => '<AWS_ROLE_NAME>'
26
+ # }
27
+ #
28
+ # Access Key/Secret Access Key based accounts (GovCloud and China only)
29
+ #
30
+ # config = {
31
+ # :access_key_id => '<AWS_ACCESS_KEY_ID>',
32
+ # :host_tags => ['api:example'],
33
+ # :secret_access_key => '<AWS_SECRET_ACCESS_KEY>'
34
+ # }
35
+ #
36
+ # dog = Dogapi::Client.new(api_key, app_key)
37
+ #
38
+ # puts dog.aws_integration_create(config)
39
+ def aws_integration_create(config)
40
+ request(Net::HTTP::Post, "/api/#{API_VERSION}/integration/aws", nil, config, true)
41
+ end
42
+
43
+ # Delete an integration
44
+ # :config => Hash: integration config.
45
+ # config = {
46
+ # :account_id => '<AWS_ACCOUNT>',
47
+ # :role_name => '<AWS_ROLE_NAME>'
48
+ # }
49
+ # Access Key/Secret Access Key based accounts (GovCloud and China only)
50
+ #
51
+ # config = {
52
+ # :access_key_id => '<AWS_ACCESS_KEY_ID>',
53
+ # }
54
+ #
55
+ # dog = Dogapi::Client.new(api_key, app_key)
56
+ #
57
+ # puts dog.aws_integration_delete(config)
58
+ def aws_integration_delete(config)
59
+ request(Net::HTTP::Delete, "/api/#{API_VERSION}/integration/aws", nil, config, true)
60
+ end
61
+
62
+ # List available AWS namespaces
63
+ def aws_integration_list_namespaces
64
+ request(Net::HTTP::Get, "/api/#{API_VERSION}/integration/aws/available_namespace_rules", nil, nil, false)
65
+ end
66
+
67
+ # Generate new AWS external ID for a specific integrated account
68
+ # :config => Hash: integration config.
69
+ # config = {
70
+ # :account_id => '<AWS_ACCOUNT>',
71
+ # :role_name => '<AWS_ROLE_NAME>'
72
+ # }
73
+ #
74
+ # dog = Dogapi::Client.new(api_key, app_key)
75
+ #
76
+ # puts dog.aws_integration_generate_external_id(config)
77
+ def aws_integration_generate_external_id(config)
78
+ request(Net::HTTP::Put, "/api/#{API_VERSION}/integration/aws/generate_new_external_id", nil, config, true)
79
+ end
80
+
81
+ # Update integrated AWS account.
82
+ # :config => Hash: integration config.
83
+ # config = {
84
+ # "account_id": '<EXISTING_AWS_ACCOUNT>',
85
+ # "role_name": '<EXISTING_AWS_ROLE_NAME>'
86
+ # }
87
+ #
88
+ # new_config = {
89
+ # "account_id": '<NEW_AWS_ACCOUNT>',
90
+ # "host_tags": ['tag:example1,tag:example2'],
91
+ # "filter_tags": ['datadog:true']
92
+ # }
93
+ #
94
+ # Access Key/Secret Access Key based accounts (GovCloud and China only)
95
+ #
96
+ # config = {
97
+ # "access_key_id": '<EXISTING_ACCESS_KEY_ID>',
98
+ # "secret_access_key": '<EXISTING_SECRET_ACCESS_KEY>'
99
+ # }
100
+ #
101
+ # new_config = {
102
+ # "access_key_id": '<NEW_ACCESS_KEY_ID>',
103
+ # "host_tags": ['new:tags'],
104
+ # "filter_tags": ['datadog:true']
105
+ # }
106
+ #
107
+ # dog = Dogapi::Client.new(api_key, app_key)
108
+
109
+ # puts dog.aws_integration_update(config, new_config)
110
+ def aws_integration_update(config, new_config)
111
+ request(Net::HTTP::Put, "/api/#{API_VERSION}/integration/aws", config, new_config, true)
112
+ end
113
+
114
+ end
115
+
116
+ end
117
+ end
@@ -0,0 +1,107 @@
1
+ # Unless explicitly stated otherwise all files in this repository are licensed under the BSD-3-Clause License.
2
+ # This product includes software developed at Datadog (https://www.datadoghq.com/).
3
+ # Copyright 2011-Present Datadog, Inc.
4
+
5
+ require 'dogapi'
6
+
7
+ module Dogapi
8
+ class V1 # for namespacing
9
+
10
+ # AwsLogsService for user interaction with AWS configs.
11
+ class AwsLogsService < Dogapi::APIService
12
+
13
+ API_VERSION = 'v1'
14
+
15
+ # Get the list of current AWS services for which Datadog offers automatic log collection.
16
+ # Use returned service IDs with the services parameter for the Enable
17
+ # an AWS service log collection API endpoint.
18
+ def aws_logs_list_services
19
+ request(Net::HTTP::Get, "/api/#{API_VERSION}/integration/aws/logs/services", nil, nil, false)
20
+ end
21
+
22
+ # Create an AWS integration
23
+ # :config => Hash: integration config.
24
+ # config = {
25
+ # :account_id => '<AWS_ACCOUNT>',
26
+ # :lambda_arn => '<LAMBDA_ARN>'
27
+ # }
28
+ #
29
+ # dog = Dogapi::Client.new(api_key, app_key)
30
+ #
31
+ # puts dog.aws_logs_add_lambda(config)
32
+ def aws_logs_add_lambda(config)
33
+ request(Net::HTTP::Post, "/api/#{API_VERSION}/integration/aws/logs", nil, config, true)
34
+ end
35
+
36
+ # List all Datadog-AWS Logs integrations configured in your Datadog account.
37
+ def aws_logs_integrations_list
38
+ request(Net::HTTP::Get, "/api/#{API_VERSION}/integration/aws/logs", nil, nil, false)
39
+ end
40
+
41
+ # Enable automatic log collection for a list of services.
42
+ # This should be run after running 'aws_logs_add_lambda' to save the config.
43
+ # config = {
44
+ # :account_id => '<AWS_ACCOUNT>',
45
+ # :services => ['s3', 'elb', 'elbv2', 'cloudfront', 'redshift', 'lambda']
46
+ # }
47
+ #
48
+ # dog = Dogapi::Client.new(api_key, app_key)
49
+ #
50
+ # puts dog.aws_logs_save_services(config)
51
+ def aws_logs_save_services(config)
52
+ request(Net::HTTP::Post, "/api/#{API_VERSION}/integration/aws/logs/services", nil, config, true)
53
+ end
54
+
55
+ # Delete an AWS Logs integration
56
+ # :config => Hash: integration config.
57
+ # config = {
58
+ # :account_id => '<AWS_ACCOUNT>',
59
+ # :lambda_arn => '<LAMBDA_ARN>'
60
+ # }
61
+ #
62
+ # dog = Dogapi::Client.new(api_key, app_key)
63
+ #
64
+ # puts dog.aws_logs_integration_delete(config)
65
+ def aws_logs_integration_delete(config)
66
+ request(Net::HTTP::Delete, "/api/#{API_VERSION}/integration/aws/logs", nil, config, true)
67
+ end
68
+
69
+ # Check function to see if a lambda_arn exists within an account.
70
+ # This sends a job on our side if it does not exist, then immediately returns
71
+ # the status of that job. Subsequent requests will always repeat the above, so this endpoint
72
+ # can be polled intermittently instead of blocking.
73
+
74
+ # Returns a status of 'created' when it's checking if the Lambda exists in the account.
75
+ # Returns a status of 'waiting' while checking.
76
+ # Returns a status of 'checked and ok' if the Lambda exists.
77
+ # Returns a status of 'error' if the Lambda does not exist.
78
+
79
+ # contents of config should be
80
+ # >>> :account_id => '<AWS_ACCOUNT_ID>'
81
+ # >>> :lambda_arn => '<AWS_LAMBDA_ARN>'
82
+
83
+ def aws_logs_check_lambda(config)
84
+ request(Net::HTTP::Post, "/api/#{API_VERSION}/integration/aws/logs/check_async", nil, config, true)
85
+ end
86
+
87
+ # Test if permissions are present to add log-forwarding triggers for the
88
+ # given services + AWS account. Input is the same as for save_services.
89
+ # Done async, so can be repeatedly polled in a non-blocking fashion until
90
+ # the async request completes
91
+
92
+ # Returns a status of 'created' when it's checking if the permissions exists in the AWS account.
93
+ # Returns a status of 'waiting' while checking.
94
+ # Returns a status of 'checked and ok' if the Lambda exists.
95
+ # Returns a status of 'error' if the Lambda does not exist.
96
+
97
+ # contents of config should be
98
+ # :account_id => '<AWS_ACCOUNT_ID>'
99
+ # :services => ['s3', 'elb', 'elbv2', 'cloudfront', 'redshift', 'lambda']
100
+ def aws_logs_check_services(config)
101
+ request(Net::HTTP::Post, "/api/#{API_VERSION}/integration/aws/logs/services_async", nil, config, true)
102
+ end
103
+
104
+ end
105
+
106
+ end
107
+ end
@@ -0,0 +1,85 @@
1
+ # Unless explicitly stated otherwise all files in this repository are licensed under the BSD-3-Clause License.
2
+ # This product includes software developed at Datadog (https://www.datadoghq.com/).
3
+ # Copyright 2011-Present Datadog, Inc.
4
+
5
+ require 'dogapi'
6
+
7
+ module Dogapi
8
+ class V1 # for namespacing
9
+
10
+ # AzureIntegrationService for user interaction with Azure configs.
11
+ class AzureIntegrationService < Dogapi::APIService
12
+
13
+ API_VERSION = 'v1'
14
+
15
+ # Retrieve Azure integration information
16
+ def azure_integration_list
17
+ request(Net::HTTP::Get, "/api/#{API_VERSION}/integration/azure", nil, nil, false)
18
+ end
19
+
20
+ # Delete an Azure integration
21
+ # :config => Hash: integration config.
22
+ # config = {
23
+ # :tenant_name => '<TENANT_NAME>',
24
+ # :client_id => '<CLIENT_ID>'
25
+ # }
26
+ #
27
+ # dog = Dogapi::Client.new(api_key, app_key)
28
+ #
29
+ # puts dog.azure_integration_delete(config)
30
+ def azure_integration_delete(config)
31
+ request(Net::HTTP::Delete, "/api/#{API_VERSION}/integration/azure", nil, config, true)
32
+ end
33
+
34
+ # Create an Azure integration
35
+ # :config => Hash: integration config.
36
+ # config = {
37
+ # :tenant_name => '<TENANT_NAME>',
38
+ # :host_filters => 'new:filter',
39
+ # :client_id => '<CLIENT_ID>',
40
+ # :client_secret => '<CLIENT_SECRET>'
41
+ # }
42
+ #
43
+ # dog = Dogapi::Client.new(api_key, app_key)
44
+ #
45
+ # puts dog.azure_integration_create(config)
46
+ def azure_integration_create(config)
47
+ request(Net::HTTP::Post, "/api/#{API_VERSION}/integration/azure", nil, config, true)
48
+ end
49
+
50
+ # Update an Azure integrations host filters
51
+ # :config => Hash: integration config.
52
+ # config = {
53
+ # :tenant_name => '<TENANT_NAME>',
54
+ # :host_filters => 'new:filter',
55
+ # :client_id => '<CLIENT_ID>'
56
+ # }
57
+ #
58
+ # dog = Dogapi::Client.new(api_key, app_key)
59
+ #
60
+ # puts dog.azure_integration_update_host_filters(config)
61
+ def azure_integration_update_host_filters(config)
62
+ request(Net::HTTP::Post, "/api/#{API_VERSION}/integration/azure/host_filters", nil, config, true)
63
+ end
64
+
65
+ # Update a configured Azure account.
66
+ # :config => Hash: integration config.
67
+ # config = {
68
+ # :tenant_name => '<TENANT_NAME>',
69
+ # :new_tenant_name => '<NEW_TENANT_NAME>',
70
+ # :host_filters => '<KEY>:<VALUE>,<KEY>:<VALUE>',
71
+ # :client_id => '<CLIENT_ID>',
72
+ # :new_client_id => '<NEW_CLIENT_ID>'
73
+ # }
74
+ #
75
+ # dog = Dogapi::Client.new(api_key, app_key)
76
+ #
77
+ # puts dog.azure_integration_update(config)
78
+ def azure_integration_update(config)
79
+ request(Net::HTTP::Put, "/api/#{API_VERSION}/integration/azure", nil, config, true)
80
+ end
81
+
82
+ end
83
+
84
+ end
85
+ end
@@ -1,3 +1,7 @@
1
+ # Unless explicitly stated otherwise all files in this repository are licensed under the BSD-3-Clause License.
2
+ # This product includes software developed at Datadog (https://www.datadoghq.com/).
3
+ # Copyright 2011-Present Datadog, Inc.
4
+
1
5
  require 'dogapi'
2
6
 
3
7
  module Dogapi
@@ -1,3 +1,7 @@
1
+ # Unless explicitly stated otherwise all files in this repository are licensed under the BSD-3-Clause License.
2
+ # This product includes software developed at Datadog (https://www.datadoghq.com/).
3
+ # Copyright 2011-Present Datadog, Inc.
4
+
1
5
  require 'dogapi'
2
6
 
3
7
  module Dogapi
@@ -7,23 +11,25 @@ module Dogapi
7
11
 
8
12
  API_VERSION = 'v1'
9
13
 
10
- def create_dashboard(title, description, graphs, template_variables = nil)
14
+ def create_dashboard(title, description, graphs, template_variables = nil, read_only = false)
11
15
  body = {
12
16
  :title => title,
13
17
  :description => description,
14
18
  :graphs => graphs,
15
- :template_variables => (template_variables or [])
19
+ :template_variables => (template_variables or []),
20
+ :read_only => read_only
16
21
  }
17
22
 
18
23
  request(Net::HTTP::Post, "/api/#{API_VERSION}/dash", nil, body, true)
19
24
  end
20
25
 
21
- def update_dashboard(dash_id, title, description, graphs, template_variables=nil)
26
+ def update_dashboard(dash_id, title, description, graphs, template_variables = nil, read_only = false)
22
27
  body = {
23
28
  :title => title,
24
29
  :description => description,
25
30
  :graphs => graphs,
26
- :template_variables => (template_variables or [])
31
+ :template_variables => (template_variables or []),
32
+ :read_only => read_only
27
33
  }
28
34
 
29
35
  request(Net::HTTP::Put, "/api/#{API_VERSION}/dash/#{dash_id}", nil, body, true)
@@ -1,3 +1,7 @@
1
+ # Unless explicitly stated otherwise all files in this repository are licensed under the BSD-3-Clause License.
2
+ # This product includes software developed at Datadog (https://www.datadoghq.com/).
3
+ # Copyright 2011-Present Datadog, Inc.
4
+
1
5
  require 'dogapi'
2
6
 
3
7
  module Dogapi
@@ -24,6 +28,11 @@ module Dogapi
24
28
  # e.g. '["user1@domain.com", "user2@domain.com"]'
25
29
  # :template_variables => JSON: List of template variables for this dashboard.
26
30
  # e.g. [{"name": "host", "prefix": "host", "default": "my-host"}]
31
+ # :template_variable_presets => JSON: List of template variables saved views
32
+ # e.g. {
33
+ # "name": "my_template_variable_preset",
34
+ # "template_variables": [{"name": "host", "prefix": "host", "default": "my-host"}]
35
+ # }
27
36
  def create_board(title, widgets, layout_type, options)
28
37
  # Required arguments
29
38
  body = {
@@ -36,6 +45,7 @@ module Dogapi
36
45
  body[:is_read_only] = options[:is_read_only] if options[:is_read_only]
37
46
  body[:notify_list] = options[:notify_list] if options[:notify_list]
38
47
  body[:template_variables] = options[:template_variables] if options[:template_variables]
48
+ body[:template_variable_presets] = options[:template_variable_presets] if options[:template_variable_presets]
39
49
 
40
50
  request(Net::HTTP::Post, "/api/#{API_VERSION}/#{RESOURCE_NAME}", nil, body, true)
41
51
  end
@@ -56,6 +66,11 @@ module Dogapi
56
66
  # e.g. '["user1@domain.com", "user2@domain.com"]'
57
67
  # :template_variables => JSON: List of template variables for this dashboard.
58
68
  # e.g. [{"name": "host", "prefix": "host", "default": "my-host"}]
69
+ # :template_variable_presets => JSON: List of template variables saved views
70
+ # e.g. {
71
+ # "name": "my_template_variable_preset",
72
+ # "template_variables": [{"name": "host", "prefix": "host", "default": "my-host"}]
73
+ # }
59
74
  def update_board(dashboard_id, title, widgets, layout_type, options)
60
75
  # Required arguments
61
76
  body = {
@@ -68,6 +83,7 @@ module Dogapi
68
83
  body[:is_read_only] = options[:is_read_only] if options[:is_read_only]
69
84
  body[:notify_list] = options[:notify_list] if options[:notify_list]
70
85
  body[:template_variables] = options[:template_variables] if options[:template_variables]
86
+ body[:template_variable_presets] = options[:template_variable_presets] if options[:template_variable_presets]
71
87
 
72
88
  request(Net::HTTP::Put, "/api/#{API_VERSION}/#{RESOURCE_NAME}/#{dashboard_id}", nil, body, true)
73
89
  end
@@ -1,3 +1,7 @@
1
+ # Unless explicitly stated otherwise all files in this repository are licensed under the BSD-3-Clause License.
2
+ # This product includes software developed at Datadog (https://www.datadoghq.com/).
3
+ # Copyright 2011-Present Datadog, Inc.
4
+
1
5
  require 'dogapi'
2
6
 
3
7
  module Dogapi