From 4e0e16976c47e4fe1a506886578f6082ed72e0b6 Mon Sep 17 00:00:00 2001 From: till Date: Thu, 13 May 2021 15:38:28 +0200 Subject: [PATCH] Update: enable debug logging in the provider - when TF_LOG is debug/trace (and OS_DEBUG is not set) - enable this by default (person probably wants it) Resolves: terraform-provider-openstack/terraform-provider-openstack#1203 --- openstack/provider.go | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/openstack/provider.go b/openstack/provider.go index 9f0a2f508..ff18c5dea 100644 --- a/openstack/provider.go +++ b/openstack/provider.go @@ -2,10 +2,12 @@ package openstack import ( "context" + "os" "github.com/hashicorp/terraform-plugin-sdk/v2/diag" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" "github.com/hashicorp/terraform-plugin-sdk/v2/meta" + "github.com/hashicorp/terraform/helper/logging" "github.com/gophercloud/utils/terraform/auth" "github.com/gophercloud/utils/terraform/mutexkv" @@ -245,6 +247,13 @@ func Provider() *schema.Provider { Default: false, Description: descriptions["disable_no_cache_header"], }, + + "enable_logging": { + Type: schema.TypeBool, + Optional: true, + Default: false, + Description: descriptions["enable_logging"], + }, }, DataSourcesMap: map[string]*schema.Resource{ @@ -487,10 +496,22 @@ func init() { "automatically, if the initial auth token get expired. Defaults to `true`", "max_retries": "How many times HTTP connection should be retried until giving up.", + + "enable_logging": "Outputs very verbose logs with all calls made to and responses from OpenStack", } } func configureProvider(d *schema.ResourceData, terraformVersion string) (interface{}, diag.Diagnostics) { + enableLogging := d.Get("enable_logging").(bool) + if !enableLogging { + // enforce logging (similar to OS_DEBUG) when TF_LOG is 'DEBUG' or 'TRACE' + if logLevel := logging.LogLevel(); logLevel != "" && os.Getenv("OS_DEBUG") == "" { + if logLevel == "DEBUG" || logLevel == "TRACE" { + enableLogging = true + } + } + } + config := Config{ auth.Config{ CACertFile: d.Get("cacert_file").(string), @@ -526,6 +547,7 @@ func configureProvider(d *schema.ResourceData, terraformVersion string) (interfa TerraformVersion: terraformVersion, SDKVersion: meta.SDKVersionString(), MutexKV: mutexkv.NewMutexKV(), + EnableLogger: enableLogging, }, }