Skip to content

Commit

Permalink
provider/google: Log HTTP requests and responses in DEBUG mode (hashi…
Browse files Browse the repository at this point in the history
  • Loading branch information
radeksimko authored May 10, 2017
1 parent 9ec0f53 commit f868a59
Show file tree
Hide file tree
Showing 2 changed files with 56 additions and 0 deletions.
3 changes: 3 additions & 0 deletions builtin/providers/google/config.go
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ import (
"runtime"
"strings"

"github.com/hashicorp/terraform/helper/logging"
"github.com/hashicorp/terraform/helper/pathorcontents"
"github.com/hashicorp/terraform/terraform"
"golang.org/x/oauth2"
Expand Down Expand Up @@ -95,6 +96,8 @@ func (c *Config) loadAndValidate() error {
}
}

client.Transport = logging.NewTransport("Google", client.Transport)

versionString := terraform.VersionString()
userAgent := fmt.Sprintf(
"(%s %s) Terraform/%s", runtime.GOOS, runtime.GOARCH, versionString)
Expand Down
53 changes: 53 additions & 0 deletions helper/logging/transport.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
package logging

import (
"log"
"net/http"
"net/http/httputil"
)

type transport struct {
name string
transport http.RoundTripper
}

func (t *transport) RoundTrip(req *http.Request) (*http.Response, error) {
if IsDebugOrHigher() {
reqData, err := httputil.DumpRequestOut(req, true)
if err == nil {
log.Printf("[DEBUG] "+logReqMsg, t.name, string(reqData))
} else {
log.Printf("[ERROR] %s API Request error: %#v", t.name, err)
}
}

resp, err := t.transport.RoundTrip(req)
if err != nil {
return resp, err
}

if IsDebugOrHigher() {
respData, err := httputil.DumpResponse(resp, true)
if err == nil {
log.Printf("[DEBUG] "+logRespMsg, t.name, string(respData))
} else {
log.Printf("[ERROR] %s API Response error: %#v", t.name, err)
}
}

return resp, nil
}

func NewTransport(name string, t http.RoundTripper) *transport {
return &transport{name, t}
}

const logReqMsg = `%s API Request Details:
---[ REQUEST ]---------------------------------------
%s
-----------------------------------------------------`

const logRespMsg = `%s API Response Details:
---[ RESPONSE ]--------------------------------------
%s
-----------------------------------------------------`

0 comments on commit f868a59

Please sign in to comment.