From cd7ce6d6468d6b7ebf3faf1f42003afb3b5178aa Mon Sep 17 00:00:00 2001 From: Bartek Gola Date: Wed, 5 Jul 2023 19:19:02 +0200 Subject: [PATCH 1/2] Remove cloud services validation from AWS/Azure/GCP integrations Service names are validated on the Splunk Observability Cloud API anyway so there is no need to do the same thing on the Terraform level. --- go.mod | 2 +- go.sum | 4 +- signalfx/data_source_aws_services.go | 40 ------------------- signalfx/data_source_azure_services.go | 40 ------------------- signalfx/data_source_gcp_services.go | 40 ------------------- signalfx/provider.go | 3 -- signalfx/resource_signalfx_aws_integration.go | 21 ++-------- .../resource_signalfx_aws_integration_test.go | 8 ---- .../resource_signalfx_azure_integration.go | 20 ++-------- ...esource_signalfx_azure_integration_test.go | 10 ----- signalfx/resource_signalfx_gcp_integration.go | 14 +------ .../resource_signalfx_gcp_integration_test.go | 10 ----- website/docs/d/aws_services.markdown | 35 ---------------- website/docs/d/azure_services.markdown | 35 ---------------- website/docs/d/gcp_services.markdown | 35 ---------------- website/docs/r/aws_integration.html.markdown | 8 +--- .../docs/r/azure_integration.html.markdown | 6 +-- website/docs/r/gcp_integration.html.markdown | 2 +- website/signalfx.erb | 9 ----- 19 files changed, 16 insertions(+), 326 deletions(-) delete mode 100644 signalfx/data_source_aws_services.go delete mode 100644 signalfx/data_source_azure_services.go delete mode 100644 signalfx/data_source_gcp_services.go delete mode 100644 website/docs/d/aws_services.markdown delete mode 100644 website/docs/d/azure_services.markdown delete mode 100644 website/docs/d/gcp_services.markdown diff --git a/go.mod b/go.mod index ed780659..557dabf5 100644 --- a/go.mod +++ b/go.mod @@ -8,7 +8,7 @@ require ( github.com/hashicorp/go-retryablehttp v0.7.4 github.com/hashicorp/terraform-plugin-sdk/v2 v2.26.1 github.com/mitchellh/go-homedir v1.1.0 - github.com/signalfx/signalfx-go v1.32.0 + github.com/signalfx/signalfx-go v1.33.0 github.com/stretchr/testify v1.8.2 ) diff --git a/go.sum b/go.sum index f838a862..130246a7 100644 --- a/go.sum +++ b/go.sum @@ -122,8 +122,8 @@ github.com/rogpeppe/go-internal v1.6.1/go.mod h1:xXDCJY+GAPziupqXw64V24skbSoqbTE github.com/rogpeppe/go-internal v1.6.2 h1:aIihoIOHCiLZHxyoNQ+ABL4NKhFTgKLBdMLyEAh98m0= github.com/rogpeppe/go-internal v1.6.2/go.mod h1:xXDCJY+GAPziupqXw64V24skbSoqbTEfhy4qGm1nDQc= github.com/sergi/go-diff v1.2.0 h1:XU+rvMAioB0UC3q1MFrIQy4Vo5/4VsRDQQXHsEya6xQ= -github.com/signalfx/signalfx-go v1.32.0 h1:b3zgMR8lz2EAYFbaGO0XInanWmMfkmJ5IPgKv6mstyg= -github.com/signalfx/signalfx-go v1.32.0/go.mod h1:IpGZLPvCKNFyspAXoS480jB02mocTpo0KYd8jbl6/T8= +github.com/signalfx/signalfx-go v1.33.0 h1:+v1fa+is8rYSxGoN1W+9PiDj1dCF5sVjJx60dhNLsTA= +github.com/signalfx/signalfx-go v1.33.0/go.mod h1:IpGZLPvCKNFyspAXoS480jB02mocTpo0KYd8jbl6/T8= github.com/skeema/knownhosts v1.1.0 h1:Wvr9V0MxhjRbl3f9nMnKnFfiWTJmtECJ9Njkea3ysW0= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw= diff --git a/signalfx/data_source_aws_services.go b/signalfx/data_source_aws_services.go deleted file mode 100644 index 8a4565d5..00000000 --- a/signalfx/data_source_aws_services.go +++ /dev/null @@ -1,40 +0,0 @@ -package signalfx - -import ( - "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" - "github.com/signalfx/signalfx-go/integration" -) - -func dataSourceAwsServices() *schema.Resource { - return &schema.Resource{ - Read: dataSourceAwsServicesRead, - Schema: map[string]*schema.Schema{ - "services": { - Type: schema.TypeSet, - Optional: true, - Elem: &schema.Resource{ - Schema: map[string]*schema.Schema{ - "name": { - Type: schema.TypeString, - Required: true, - }, - }, - }, - }, - }, - } -} - -func dataSourceAwsServicesRead(d *schema.ResourceData, meta interface{}) error { - services := make([]map[string]interface{}, len(integration.AWSServiceNames)) - i := 0 - for k := range integration.AWSServiceNames { - services[i] = map[string]interface{}{ - "name": k, - } - i++ - } - d.SetId("AWS") - d.Set("services", services) - return nil -} diff --git a/signalfx/data_source_azure_services.go b/signalfx/data_source_azure_services.go deleted file mode 100644 index d27e04d6..00000000 --- a/signalfx/data_source_azure_services.go +++ /dev/null @@ -1,40 +0,0 @@ -package signalfx - -import ( - "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" - "github.com/signalfx/signalfx-go/integration" -) - -func dataSourceAzureServices() *schema.Resource { - return &schema.Resource{ - Read: dataSourceAzureServicesRead, - Schema: map[string]*schema.Schema{ - "services": { - Type: schema.TypeSet, - Optional: true, - Elem: &schema.Resource{ - Schema: map[string]*schema.Schema{ - "name": { - Type: schema.TypeString, - Required: true, - }, - }, - }, - }, - }, - } -} - -func dataSourceAzureServicesRead(d *schema.ResourceData, meta interface{}) error { - services := make([]map[string]interface{}, len(integration.AzureServiceNames)) - i := 0 - for k := range integration.AzureServiceNames { - services[i] = map[string]interface{}{ - "name": k, - } - i++ - } - d.SetId("AZURE") - d.Set("services", services) - return nil -} diff --git a/signalfx/data_source_gcp_services.go b/signalfx/data_source_gcp_services.go deleted file mode 100644 index 4b7c76d2..00000000 --- a/signalfx/data_source_gcp_services.go +++ /dev/null @@ -1,40 +0,0 @@ -package signalfx - -import ( - "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" - "github.com/signalfx/signalfx-go/integration" -) - -func dataSourceGcpServices() *schema.Resource { - return &schema.Resource{ - Read: dataSourceGcpServicesRead, - Schema: map[string]*schema.Schema{ - "services": { - Type: schema.TypeSet, - Optional: true, - Elem: &schema.Resource{ - Schema: map[string]*schema.Schema{ - "name": { - Type: schema.TypeString, - Required: true, - }, - }, - }, - }, - }, - } -} - -func dataSourceGcpServicesRead(d *schema.ResourceData, meta interface{}) error { - services := make([]map[string]interface{}, len(integration.GcpServiceNames)) - i := 0 - for k := range integration.GcpServiceNames { - services[i] = map[string]interface{}{ - "name": k, - } - i++ - } - d.SetId("GCP") - d.Set("services", services) - return nil -} diff --git a/signalfx/provider.go b/signalfx/provider.go index a153fc18..110649d4 100644 --- a/signalfx/provider.go +++ b/signalfx/provider.go @@ -82,9 +82,6 @@ func Provider() *schema.Provider { }, }, DataSourcesMap: map[string]*schema.Resource{ - "signalfx_aws_services": dataSourceAwsServices(), - "signalfx_azure_services": dataSourceAzureServices(), - "signalfx_gcp_services": dataSourceGcpServices(), "signalfx_dimension_values": dataSourceDimensionValues(), "signalfx_pagerduty_integration": dataSourcePagerDutyIntegration(), }, diff --git a/signalfx/resource_signalfx_aws_integration.go b/signalfx/resource_signalfx_aws_integration.go index 0873695d..14b10636 100644 --- a/signalfx/resource_signalfx_aws_integration.go +++ b/signalfx/resource_signalfx_aws_integration.go @@ -114,10 +114,9 @@ func integrationAWSResource() *schema.Resource { Description: "Expression that selects the data that SignalFx should sync for the custom namespace associated with this sync rule. The expression uses the syntax defined for the SignalFlow `filter()` function; it can be any valid SignalFlow filter expression.", }, "namespace": { - Type: schema.TypeString, - Required: true, - ValidateFunc: validateAwsService, - Description: "An AWS namespace having custom AWS metrics that you want to sync with SignalFx. See the AWS documentation on publishing metrics for more information.", + Type: schema.TypeString, + Required: true, + Description: "An AWS namespace having custom AWS metrics that you want to sync with SignalFx. See the AWS documentation on publishing metrics for more information.", }, }, }, @@ -157,8 +156,7 @@ func integrationAWSResource() *schema.Resource { Type: schema.TypeSet, Optional: true, Elem: &schema.Schema{ - Type: schema.TypeString, - ValidateFunc: validateAwsService, + Type: schema.TypeString, }, Description: "List of AWS services that you want SignalFx to monitor. Each element is a string designating an AWS service.", }, @@ -747,14 +745,3 @@ func validateFilterAction(v interface{}, k string) (we []string, errors []error) } return } - -func validateAwsService(v interface{}, k string) (we []string, errors []error) { - value := v.(string) - for key, _ := range integration.AWSServiceNames { - if key == value { - return - } - } - errors = append(errors, fmt.Errorf("%s not allowed; consult the documentation for a list of valid AWS Service names", value)) - return -} diff --git a/signalfx/resource_signalfx_aws_integration_test.go b/signalfx/resource_signalfx_aws_integration_test.go index f1be9dfd..72233c1c 100644 --- a/signalfx/resource_signalfx_aws_integration_test.go +++ b/signalfx/resource_signalfx_aws_integration_test.go @@ -360,14 +360,6 @@ func testAccIntegrationAWSDestroy(s *terraform.State) error { return nil } -func TestValidateAwsService(t *testing.T) { - _, errors := validateAwsService("AWS/Logs", "") - assert.Equal(t, 0, len(errors), "No errors for valid value") - - _, errors = validateAwsService("InvalidService", "") - assert.Equal(t, 1, len(errors), "Errors for invalid value") -} - func TestValidateFilterAction(t *testing.T) { _, errors := validateFilterAction("Exclude", "") assert.Equal(t, 0, len(errors), "No errors for valid value") diff --git a/signalfx/resource_signalfx_azure_integration.go b/signalfx/resource_signalfx_azure_integration.go index 664c8ae3..974a7b0f 100644 --- a/signalfx/resource_signalfx_azure_integration.go +++ b/signalfx/resource_signalfx_azure_integration.go @@ -79,8 +79,7 @@ func integrationAzureResource() *schema.Resource { Required: true, MinItems: 1, Elem: &schema.Schema{ - Type: schema.TypeString, - ValidateFunc: validateAzureService, + Type: schema.TypeString, }, Description: "List of Microsoft Azure service names for the Azure services you want SignalFx to monitor. SignalFx only supports certain services, and if you specify an unsupported one, you receive an API error.", }, @@ -286,9 +285,9 @@ func getPayloadAzureIntegration(d *schema.ResourceData) (*integration.AzureInteg if val, ok := d.GetOk("services"); ok { tfServices := val.(*schema.Set).List() services := make([]integration.AzureService, len(tfServices)) - for i, s := range tfServices { - s := s.(string) - services[i] = integration.AzureServiceNames[s] + for i, v := range tfServices { + v := integration.AzureService(v.(string)) + services[i] = v } azure.Services = services } @@ -391,14 +390,3 @@ func integrationAzureDelete(d *schema.ResourceData, meta interface{}) error { return config.Client.DeleteAzureIntegration(context.TODO(), d.Id()) } - -func validateAzureService(v interface{}, k string) (we []string, errors []error) { - value := v.(string) - for key, _ := range integration.AzureServiceNames { - if key == value { - return - } - } - errors = append(errors, fmt.Errorf("%s not allowed; consult the documentation for a list of valid Azure service names", value)) - return -} diff --git a/signalfx/resource_signalfx_azure_integration_test.go b/signalfx/resource_signalfx_azure_integration_test.go index dd5e823a..4a0629d3 100644 --- a/signalfx/resource_signalfx_azure_integration_test.go +++ b/signalfx/resource_signalfx_azure_integration_test.go @@ -7,8 +7,6 @@ import ( "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/terraform" - - "github.com/stretchr/testify/assert" ) const newIntegrationAzureConfig = ` @@ -143,11 +141,3 @@ func testAccIntegrationAzureDestroy(s *terraform.State) error { return nil } - -func TestValidateAzureService(t *testing.T) { - _, errors := validateAzureService("microsoft.batch/batchaccounts", "") - assert.Equal(t, 0, len(errors), "No errors for valid value") - - _, errors = validateAzureService("unknown/service", "") - assert.Equal(t, 1, len(errors), "Errors for invalid value") -} diff --git a/signalfx/resource_signalfx_gcp_integration.go b/signalfx/resource_signalfx_gcp_integration.go index ba51aa2b..7118d2f9 100644 --- a/signalfx/resource_signalfx_gcp_integration.go +++ b/signalfx/resource_signalfx_gcp_integration.go @@ -37,8 +37,7 @@ func integrationGCPResource() *schema.Resource { Optional: true, Description: "GCP enabled services", Elem: &schema.Schema{ - Type: schema.TypeString, - ValidateFunc: validateGcpService, + Type: schema.TypeString, }, }, "custom_metric_type_domains": &schema.Schema{ @@ -274,14 +273,3 @@ func integrationGCPDelete(d *schema.ResourceData, meta interface{}) error { return config.Client.DeleteGCPIntegration(context.TODO(), d.Id()) } - -func validateGcpService(v interface{}, k string) (we []string, errors []error) { - value := v.(string) - for key, _ := range integration.GcpServiceNames { - if key == value { - return - } - } - errors = append(errors, fmt.Errorf("%s not allowed; consult the documentation for a list of valid GCP service names", value)) - return -} diff --git a/signalfx/resource_signalfx_gcp_integration_test.go b/signalfx/resource_signalfx_gcp_integration_test.go index b6b5dbd6..32e9c3eb 100644 --- a/signalfx/resource_signalfx_gcp_integration_test.go +++ b/signalfx/resource_signalfx_gcp_integration_test.go @@ -7,8 +7,6 @@ import ( "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/terraform" - - "github.com/stretchr/testify/assert" ) const newIntegrationGCPConfig = ` @@ -140,11 +138,3 @@ func testAccIntegrationGCPDestroy(s *terraform.State) error { return nil } - -func TestValidateGcpService(t *testing.T) { - _, errors := validateGcpService("appengine", "") - assert.Equal(t, 0, len(errors), "No errors for valid value") - - _, errors = validateGcpService("InvalidService", "") - assert.Equal(t, 1, len(errors), "Errors for invalid value") -} diff --git a/website/docs/d/aws_services.markdown b/website/docs/d/aws_services.markdown deleted file mode 100644 index 88ba707e..00000000 --- a/website/docs/d/aws_services.markdown +++ /dev/null @@ -1,35 +0,0 @@ ---- -layout: "signalfx" -page_title: "SignalFx: signalfx_aws_services" -sidebar_current: "docs-signalfx-signalfx-aws-services" -description: |- - Provides a list AWS service names. ---- - -# Data Source: signalfx_aws_services - -Use this data source to get a list of AWS service names. - -## Example Usage - -```hcl -data "signalfx_aws_services" "aws_services" { -} - -# Leaves out most of the integration bits, see the docs -# for signalfx_aws_integration for more -resource "signalfx_aws_integration" "aws_myteam" { - # … - - # All supported services! - services = data.signalfx_aws_services.aws_services.services.*.name -} -``` - -## Argument Reference - -None - -## Attributes Reference - -`services` is set to all available service names supported by SignalFx diff --git a/website/docs/d/azure_services.markdown b/website/docs/d/azure_services.markdown deleted file mode 100644 index 0135adb3..00000000 --- a/website/docs/d/azure_services.markdown +++ /dev/null @@ -1,35 +0,0 @@ ---- -layout: "signalfx" -page_title: "SignalFx: signalfx_azure_services" -sidebar_current: "docs-signalfx-signalfx-azure-services" -description: |- - Provides a list Azure service names. ---- - -# Data Source: signalfx_azure_services - -Use this data source to get a list of Azure service names. - -## Example Usage - -```hcl -data "signalfx_azure_services" "azure_services" { -} - -# Leaves out most of the integration bits, see the docs -# for signalfx_azure_integration for more -resource "signalfx_azure_integration" "azure_myteam" { - # … - - # All supported services! - services = data.signalfx_azure_services.azure_services.services.*.name -} -``` - -## Argument Reference - -None - -## Attributes Reference - -`services` is set to all available service names supported by SignalFx diff --git a/website/docs/d/gcp_services.markdown b/website/docs/d/gcp_services.markdown deleted file mode 100644 index 51f77eae..00000000 --- a/website/docs/d/gcp_services.markdown +++ /dev/null @@ -1,35 +0,0 @@ ---- -layout: "signalfx" -page_title: "SignalFx: signalfx_gcp_services" -sidebar_current: "docs-signalfx-signalfx-gcp-services" -description: |- - Provides a list GCP service names. ---- - -# Data Source: signalfx_gcp_services - -Use this data source to get a list of GCP service names. - -## Example Usage - -```hcl -data "signalfx_gcp_services" "gcp_services" { -} - -# Leaves out most of the integration bits, see the docs -# for signalfx_gcp_integration for more -resource "signalfx_gcp_integration" "gcp_myteam" { - # … - - # All supported services! - services = data.signalfx_gcp_services.gcp_services.services.*.name -} -``` - -## Argument Reference - -None - -## Attributes Reference - -`services` is set to all available service names supported by SignalFx diff --git a/website/docs/r/aws_integration.html.markdown b/website/docs/r/aws_integration.html.markdown index 2073c8e1..8336e0c6 100644 --- a/website/docs/r/aws_integration.html.markdown +++ b/website/docs/r/aws_integration.html.markdown @@ -60,10 +60,6 @@ resource "signalfx_aws_integration" "aws_myteam" { } ``` -## Service Names - -~> **NOTE** You can use the data source "signalfx_aws_services" to specify all services. - ## Argument Reference * `enable_aws_usage` - (Optional) Flag that controls how SignalFx imports usage metrics from AWS to use with AWS Cost Optimizer. If `true`, SignalFx imports the metrics. @@ -90,11 +86,11 @@ resource "signalfx_aws_integration" "aws_myteam" { * `default_action` - (Optional) Controls the SignalFx default behavior for processing data from an AWS namespace. If you do specify a filter, use this property to control how SignalFx treats data that doesn't match the filter. The available actions are one of `"Include"` or `"Exclude"`. * `filter_action` - (Optional) Controls how SignalFx processes data from a custom AWS namespace. The available actions are one of `"Include"` or `"Exclude"`. * `filter_source` - (Optional) Expression that selects the data that SignalFx should sync for the custom namespace associated with this sync rule. The expression uses the syntax defined for the SignalFlow `filter()` function; it can be any valid SignalFlow filter expression. - * `namespace` - (Required) An AWS custom namespace having custom AWS metrics that you want to sync with SignalFx. See the AWS documentation on publishing metrics for more information. + * `namespace` - (Required) An AWS custom namespace having custom AWS metrics that you want to sync with SignalFx. See `services` field description below for additional information. * `poll_rate` - (Optional) AWS poll rate (in seconds). Value between `60` and `600`. Default: `300`. * `regions` - (Optional) List of AWS regions that SignalFx should monitor. * `role_arn` - (Optional) Role ARN that you add to an existing AWS integration object. **Note**: Ensure you use the `arn` property of your role, not the id! -* `services` - (Optional) List of AWS services that you want SignalFx to monitor. Each element is a string designating an AWS service. Conflicts with `namespace_sync_rule`. See the documentation for [Creating Integrations](https://developers.signalfx.com/integrations_reference.html#operation/Create%20Integration) for valida values. +* `services` - (Optional) List of AWS services that you want SignalFx to monitor. Each element is a string designating an AWS service. Can be an empty list to import data for all supported services. Conflicts with `namespace_sync_rule`. See [Amazon Web Services](https://docs.splunk.com/Observability/gdi/get-data-in/integrations.html#amazon-web-services) for a list of valid values. * `sync_custom_namespaces_only` - (Optional) Indicates that SignalFx should sync metrics and metadata from custom AWS namespaces only (see the `custom_namespace_sync_rule` above). Defaults to `false`. * `token` - (Optional) If you specify `auth_method = \"SecurityToken\"` in your request to create an AWS integration object, use this property to specify the token (this is typically equivalent to the `AWS_ACCESS_KEY_ID` environment variable). * `use_metric_streams_sync` - (Optional) Enable the use of Amazon Cloudwatch Metric Streams for ingesting metrics.
diff --git a/website/docs/r/azure_integration.html.markdown b/website/docs/r/azure_integration.html.markdown index 3efef0ff..6077b56a 100644 --- a/website/docs/r/azure_integration.html.markdown +++ b/website/docs/r/azure_integration.html.markdown @@ -52,10 +52,6 @@ resource "signalfx_azure_integration" "azure_myteam" { } ``` -## Service Names - -~> **NOTE** You can use the data source "signalfx_azure_services" to specify all services. - ## Argument Reference * `app_id` - (Required) Azure application ID for the SignalFx app. To learn how to get this ID, see the topic [Connect to Microsoft Azure](https://docs.signalfx.com/en/latest/getting-started/send-data.html#connect-to-microsoft-azure) in the product documentation. @@ -70,7 +66,7 @@ resource "signalfx_azure_integration" "azure_myteam" { * `resource_filter_rules` - (Optional) List of rules for filtering Azure resources by their tags. * `filter_source` - (Required) Expression that selects the data that SignalFx should sync for the resource associated with this sync rule. The expression uses the syntax defined for the SignalFlow `filter()` function. The source of each filter rule must be in the form filter('key', 'value'). You can join multiple filter statements using the and and or operators. Referenced keys are limited to tags and must start with the azure_tag_ prefix. * `secret_key` - (Required) Azure secret key that associates the SignalFx app in Azure with the Azure tenant ID. To learn how to get this ID, see the topic [Connect to Microsoft Azure](https://docs.signalfx.com/en/latest/integrations/azure-info.html#connect-to-azure) in the product documentation. -* `services` - (Required) List of Microsoft Azure service names for the Azure services you want SignalFx to monitor. See the documentation for [Creating Integrations](https://developers.signalfx.com/integrations_reference.html#operation/Create%20Integration) for valida values. +* `services` - (Required) List of Microsoft Azure service names for the Azure services you want SignalFx to monitor. Can be an empty list to import data for all supported services. See [Microsoft Azure services](https://docs.splunk.com/Observability/gdi/get-data-in/integrations.html#azure-integrations) for a list of valid values. * `subscriptions` - (Required) List of Azure subscriptions that SignalFx should monitor. * `sync_guest_os_namespaces` - (Optional) If enabled, SignalFx will try to sync additional namespaces for VMs (including VMs in scale sets): telegraf/mem, telegraf/cpu, azure.vm.windows.guest (these are namespaces recommended by Azure when enabling their Diagnostic Extension). If there are no metrics there, no new datapoints will be ingested. Defaults to false. * `import_azure_monitor` - (Optional) If enabled, SignalFx will sync also Azure Monitor data. If disabled, SignalFx will import only metadata. Defaults to true. diff --git a/website/docs/r/gcp_integration.html.markdown b/website/docs/r/gcp_integration.html.markdown index 3b271642..d6d3f26e 100644 --- a/website/docs/r/gcp_integration.html.markdown +++ b/website/docs/r/gcp_integration.html.markdown @@ -39,7 +39,7 @@ resource "signalfx_gcp_integration" "gcp_myteam" { * `named_token` - (Optional) Name of the org token to be used for data ingestion. If not specified then default access token is used. * `poll_rate` - (Optional) GCP integration poll rate (in seconds). Value between `60` and `600`. Default: `300`. * `project_service_keys` - (Required) GCP projects to add. -* `services` - (Optional) GCP service metrics to import. Can be an empty list, or not included, to import 'All services'. See the documentation for [Creating Integrations](https://dev.splunk.com/observability/reference/api/integrations/latest#endpoint-create-integration) for valid values. +* `services` - (Optional) GCP service metrics to import. Can be an empty list, or not included, to import 'All services'. See [Google Cloud Platform services](https://docs.splunk.com/Observability/gdi/get-data-in/integrations.html#google-cloud-platform-services) for a list of valid values. * `use_metric_source_project_for_quota` - (Optional) When this value is set to true Observability Cloud will force usage of a quota from the project where metrics are stored. For this to work the service account provided for the project needs to be provided with serviceusage.services.use permission or Service Usage Consumer role in this project. When set to false default quota settings are used. ## Attributes Reference diff --git a/website/signalfx.erb b/website/signalfx.erb index d417fc93..99ddf273 100644 --- a/website/signalfx.erb +++ b/website/signalfx.erb @@ -13,18 +13,9 @@ > Data Sources