Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
17 changes: 17 additions & 0 deletions .generator/schemas/v2/openapi.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -22824,6 +22824,13 @@ components:
product for this service account. Note: This requires resource_collection_enabled
to be set to true.'
type: boolean
is_global_location_enabled:
default: true
description: "When enabled, metrics where location is explicitly stated
as \u201Cglobal\u201D or where location information cannot be deduced
from GCP labels is collected."
example: true
type: boolean
is_per_project_quota_enabled:
default: false
description: When enabled, Datadog applies the `X-Goog-User-Project` header,
Expand Down Expand Up @@ -22865,6 +22872,16 @@ components:
items:
$ref: '#/components/schemas/GCPMonitoredResourceConfig'
type: array
region_filter_configs:
description: Filters to limit metric collection by GCP location, such as
region, multi-region, or zone. By default, Datadog collects from all locations.
example:
- nam4
- europe-north1
items:
description: Region Filter Configs
type: string
type: array
resource_collection_enabled:
description: When enabled, Datadog scans for all resources in your GCP environment.
type: boolean
Expand Down
8 changes: 4 additions & 4 deletions features/v2/gcp_integration.feature
Original file line number Diff line number Diff line change
Expand Up @@ -34,14 +34,14 @@ Feature: GCP Integration
@generated @skip @team:DataDog/gcp-integrations
Scenario: Create a new entry for your service account returns "Bad Request" response
Given new "CreateGCPSTSAccount" request
And body with value {"data": {"attributes": {"account_tags": [], "client_email": "datadog-service-account@test-project.iam.gserviceaccount.com", "cloud_run_revision_filters": ["$KEY:$VALUE"], "host_filters": ["$KEY:$VALUE"], "is_per_project_quota_enabled": true, "is_resource_change_collection_enabled": true, "is_security_command_center_enabled": true, "metric_namespace_configs": [{"disabled": true, "id": "aiplatform"}, {"filters": ["snapshot.*", "!*_by_region"], "id": "pubsub"}], "monitored_resource_configs": [{"filters": ["$KEY:$VALUE"], "type": "gce_instance"}]}, "type": "gcp_service_account"}}
And body with value {"data": {"attributes": {"account_tags": [], "client_email": "datadog-service-account@test-project.iam.gserviceaccount.com", "cloud_run_revision_filters": ["$KEY:$VALUE"], "host_filters": ["$KEY:$VALUE"], "is_global_location_enabled": true, "is_per_project_quota_enabled": true, "is_resource_change_collection_enabled": true, "is_security_command_center_enabled": true, "metric_namespace_configs": [{"disabled": true, "id": "aiplatform"}, {"filters": ["snapshot.*", "!*_by_region"], "id": "pubsub"}], "monitored_resource_configs": [{"filters": ["$KEY:$VALUE"], "type": "gce_instance"}], "region_filter_configs": ["nam4", "europe-north1"]}, "type": "gcp_service_account"}}
When the request is sent
Then the response status is 400 Bad Request

@generated @skip @team:DataDog/gcp-integrations
Scenario: Create a new entry for your service account returns "Conflict" response
Given new "CreateGCPSTSAccount" request
And body with value {"data": {"attributes": {"account_tags": [], "client_email": "datadog-service-account@test-project.iam.gserviceaccount.com", "cloud_run_revision_filters": ["$KEY:$VALUE"], "host_filters": ["$KEY:$VALUE"], "is_per_project_quota_enabled": true, "is_resource_change_collection_enabled": true, "is_security_command_center_enabled": true, "metric_namespace_configs": [{"disabled": true, "id": "aiplatform"}, {"filters": ["snapshot.*", "!*_by_region"], "id": "pubsub"}], "monitored_resource_configs": [{"filters": ["$KEY:$VALUE"], "type": "gce_instance"}]}, "type": "gcp_service_account"}}
And body with value {"data": {"attributes": {"account_tags": [], "client_email": "datadog-service-account@test-project.iam.gserviceaccount.com", "cloud_run_revision_filters": ["$KEY:$VALUE"], "host_filters": ["$KEY:$VALUE"], "is_global_location_enabled": true, "is_per_project_quota_enabled": true, "is_resource_change_collection_enabled": true, "is_security_command_center_enabled": true, "metric_namespace_configs": [{"disabled": true, "id": "aiplatform"}, {"filters": ["snapshot.*", "!*_by_region"], "id": "pubsub"}], "monitored_resource_configs": [{"filters": ["$KEY:$VALUE"], "type": "gce_instance"}], "region_filter_configs": ["nam4", "europe-north1"]}, "type": "gcp_service_account"}}
When the request is sent
Then the response status is 409 Conflict

Expand Down Expand Up @@ -151,15 +151,15 @@ Feature: GCP Integration
Scenario: Update STS Service Account returns "Bad Request" response
Given new "UpdateGCPSTSAccount" request
And request contains "account_id" parameter from "REPLACE.ME"
And body with value {"data": {"attributes": {"account_tags": [], "client_email": "datadog-service-account@test-project.iam.gserviceaccount.com", "cloud_run_revision_filters": ["$KEY:$VALUE"], "host_filters": ["$KEY:$VALUE"], "is_per_project_quota_enabled": true, "is_resource_change_collection_enabled": true, "is_security_command_center_enabled": true, "metric_namespace_configs": [{"disabled": true, "id": "aiplatform"}, {"filters": ["snapshot.*", "!*_by_region"], "id": "pubsub"}], "monitored_resource_configs": [{"filters": ["$KEY:$VALUE"], "type": "gce_instance"}]}, "id": "d291291f-12c2-22g4-j290-123456678897", "type": "gcp_service_account"}}
And body with value {"data": {"attributes": {"account_tags": [], "client_email": "datadog-service-account@test-project.iam.gserviceaccount.com", "cloud_run_revision_filters": ["$KEY:$VALUE"], "host_filters": ["$KEY:$VALUE"], "is_global_location_enabled": true, "is_per_project_quota_enabled": true, "is_resource_change_collection_enabled": true, "is_security_command_center_enabled": true, "metric_namespace_configs": [{"disabled": true, "id": "aiplatform"}, {"filters": ["snapshot.*", "!*_by_region"], "id": "pubsub"}], "monitored_resource_configs": [{"filters": ["$KEY:$VALUE"], "type": "gce_instance"}], "region_filter_configs": ["nam4", "europe-north1"]}, "id": "d291291f-12c2-22g4-j290-123456678897", "type": "gcp_service_account"}}
When the request is sent
Then the response status is 400 Bad Request

@generated @skip @team:DataDog/gcp-integrations
Scenario: Update STS Service Account returns "Not Found" response
Given new "UpdateGCPSTSAccount" request
And request contains "account_id" parameter from "REPLACE.ME"
And body with value {"data": {"attributes": {"account_tags": [], "client_email": "datadog-service-account@test-project.iam.gserviceaccount.com", "cloud_run_revision_filters": ["$KEY:$VALUE"], "host_filters": ["$KEY:$VALUE"], "is_per_project_quota_enabled": true, "is_resource_change_collection_enabled": true, "is_security_command_center_enabled": true, "metric_namespace_configs": [{"disabled": true, "id": "aiplatform"}, {"filters": ["snapshot.*", "!*_by_region"], "id": "pubsub"}], "monitored_resource_configs": [{"filters": ["$KEY:$VALUE"], "type": "gce_instance"}]}, "id": "d291291f-12c2-22g4-j290-123456678897", "type": "gcp_service_account"}}
And body with value {"data": {"attributes": {"account_tags": [], "client_email": "datadog-service-account@test-project.iam.gserviceaccount.com", "cloud_run_revision_filters": ["$KEY:$VALUE"], "host_filters": ["$KEY:$VALUE"], "is_global_location_enabled": true, "is_per_project_quota_enabled": true, "is_resource_change_collection_enabled": true, "is_security_command_center_enabled": true, "metric_namespace_configs": [{"disabled": true, "id": "aiplatform"}, {"filters": ["snapshot.*", "!*_by_region"], "id": "pubsub"}], "monitored_resource_configs": [{"filters": ["$KEY:$VALUE"], "type": "gce_instance"}], "region_filter_configs": ["nam4", "europe-north1"]}, "id": "d291291f-12c2-22g4-j290-123456678897", "type": "gcp_service_account"}}
When the request is sent
Then the response status is 404 Not Found

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,9 @@ class GCPSTSServiceAccountAttributes
# When enabled, Datadog will activate the Cloud Security Monitoring product for this service account. Note: This requires resource_collection_enabled to be set to true.
attr_accessor :is_cspm_enabled

# When enabled, metrics where location is explicitly stated as “global” or where location information cannot be deduced from GCP labels is collected.
attr_accessor :is_global_location_enabled

# When enabled, Datadog applies the `X-Goog-User-Project` header, attributing Google Cloud billing and quota usage to the project being monitored rather than the default service account project.
attr_accessor :is_per_project_quota_enabled

Expand All @@ -58,6 +61,9 @@ class GCPSTSServiceAccountAttributes
# Configurations for GCP monitored resources.
attr_accessor :monitored_resource_configs

# Filters to limit metric collection by GCP location, such as region, multi-region, or zone. By default, Datadog collects from all locations.
attr_accessor :region_filter_configs

# When enabled, Datadog scans for all resources in your GCP environment.
attr_accessor :resource_collection_enabled

Expand All @@ -73,11 +79,13 @@ def self.attribute_map
:'cloud_run_revision_filters' => :'cloud_run_revision_filters',
:'host_filters' => :'host_filters',
:'is_cspm_enabled' => :'is_cspm_enabled',
:'is_global_location_enabled' => :'is_global_location_enabled',
:'is_per_project_quota_enabled' => :'is_per_project_quota_enabled',
:'is_resource_change_collection_enabled' => :'is_resource_change_collection_enabled',
:'is_security_command_center_enabled' => :'is_security_command_center_enabled',
:'metric_namespace_configs' => :'metric_namespace_configs',
:'monitored_resource_configs' => :'monitored_resource_configs',
:'region_filter_configs' => :'region_filter_configs',
:'resource_collection_enabled' => :'resource_collection_enabled'
}
end
Expand All @@ -92,11 +100,13 @@ def self.openapi_types
:'cloud_run_revision_filters' => :'Array<String>',
:'host_filters' => :'Array<String>',
:'is_cspm_enabled' => :'Boolean',
:'is_global_location_enabled' => :'Boolean',
:'is_per_project_quota_enabled' => :'Boolean',
:'is_resource_change_collection_enabled' => :'Boolean',
:'is_security_command_center_enabled' => :'Boolean',
:'metric_namespace_configs' => :'Array<GCPMetricNamespaceConfig>',
:'monitored_resource_configs' => :'Array<GCPMonitoredResourceConfig>',
:'region_filter_configs' => :'Array<String>',
:'resource_collection_enabled' => :'Boolean'
}
end
Expand Down Expand Up @@ -149,6 +159,10 @@ def initialize(attributes = {})
self.is_cspm_enabled = attributes[:'is_cspm_enabled']
end

if attributes.key?(:'is_global_location_enabled')
self.is_global_location_enabled = attributes[:'is_global_location_enabled']
end

if attributes.key?(:'is_per_project_quota_enabled')
self.is_per_project_quota_enabled = attributes[:'is_per_project_quota_enabled']
end
Expand All @@ -173,6 +187,12 @@ def initialize(attributes = {})
end
end

if attributes.key?(:'region_filter_configs')
if (value = attributes[:'region_filter_configs']).is_a?(Array)
self.region_filter_configs = value
end
end

if attributes.key?(:'resource_collection_enabled')
self.resource_collection_enabled = attributes[:'resource_collection_enabled']
end
Expand Down Expand Up @@ -210,11 +230,13 @@ def ==(o)
cloud_run_revision_filters == o.cloud_run_revision_filters &&
host_filters == o.host_filters &&
is_cspm_enabled == o.is_cspm_enabled &&
is_global_location_enabled == o.is_global_location_enabled &&
is_per_project_quota_enabled == o.is_per_project_quota_enabled &&
is_resource_change_collection_enabled == o.is_resource_change_collection_enabled &&
is_security_command_center_enabled == o.is_security_command_center_enabled &&
metric_namespace_configs == o.metric_namespace_configs &&
monitored_resource_configs == o.monitored_resource_configs &&
region_filter_configs == o.region_filter_configs &&
resource_collection_enabled == o.resource_collection_enabled &&
additional_properties == o.additional_properties
end
Expand All @@ -223,7 +245,7 @@ def ==(o)
# @return [Integer] Hash code
# @!visibility private
def hash
[account_tags, automute, client_email, cloud_run_revision_filters, host_filters, is_cspm_enabled, is_per_project_quota_enabled, is_resource_change_collection_enabled, is_security_command_center_enabled, metric_namespace_configs, monitored_resource_configs, resource_collection_enabled, additional_properties].hash
[account_tags, automute, client_email, cloud_run_revision_filters, host_filters, is_cspm_enabled, is_global_location_enabled, is_per_project_quota_enabled, is_resource_change_collection_enabled, is_security_command_center_enabled, metric_namespace_configs, monitored_resource_configs, region_filter_configs, resource_collection_enabled, additional_properties].hash
end
end
end
Loading