From eba638d0446ea56387ea0f5575e5efa96ccdae31 Mon Sep 17 00:00:00 2001 From: Jack Pearkes Date: Thu, 20 Aug 2015 13:49:51 -0700 Subject: [PATCH] remote/atlas: if `ATLAS_RUN_ID` is set, send it with remote state save This detects the presence of ATLAS_RUN_ID in the environment and sends it if exists with remote state PUT requests with query params. --- state/remote/atlas.go | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/state/remote/atlas.go b/state/remote/atlas.go index 116d88372..f52d834a2 100644 --- a/state/remote/atlas.go +++ b/state/remote/atlas.go @@ -51,6 +51,11 @@ func atlasFactory(conf map[string]string) (Client, error) { return nil, fmt.Errorf("malformed name '%s', expected format '/'", name) } + // If it exists, add the `ATLAS_RUN_ID` environment + // variable as a param, which is injected during Atlas Terraform + // runs. This is completely optional. + client.RunId = os.Getenv("ATLAS_RUN_ID") + client.Server = server client.ServerURL = url client.AccessToken = token @@ -67,6 +72,7 @@ type AtlasClient struct { User string Name string AccessToken string + RunId string } func (c *AtlasClient) Get() (*Payload, error) { @@ -218,10 +224,15 @@ func (c *AtlasClient) readBody(b io.Reader) string { } func (c *AtlasClient) url() *url.URL { + values := url.Values{} + + values.Add("atlas_run_id", c.RunId) + values.Add("access_token", c.AccessToken) + return &url.URL{ Scheme: c.ServerURL.Scheme, Host: c.ServerURL.Host, Path: path.Join("api/v1/terraform/state", c.User, c.Name), - RawQuery: fmt.Sprintf("access_token=%s", c.AccessToken), + RawQuery: values.Encode(), } }