From dde40d54c6a957665320b95ef2f5729d5f200bd4 Mon Sep 17 00:00:00 2001 From: Matthew Hooker Date: Wed, 7 Jun 2017 10:40:31 -0700 Subject: [PATCH] atlas cloud token warn --- .../vagrant-cloud/post-processor.go | 23 ++++++++-- .../vagrant-cloud/post-processor_test.go | 43 +++++++++++++++++++ 2 files changed, 63 insertions(+), 3 deletions(-) diff --git a/post-processor/vagrant-cloud/post-processor.go b/post-processor/vagrant-cloud/post-processor.go index ef1af114b..419944153 100644 --- a/post-processor/vagrant-cloud/post-processor.go +++ b/post-processor/vagrant-cloud/post-processor.go @@ -7,6 +7,7 @@ package vagrantcloud import ( "fmt" "log" + "os" "strings" "github.com/hashicorp/packer/common" @@ -40,9 +41,10 @@ type boxDownloadUrlTemplate struct { } type PostProcessor struct { - config Config - client *VagrantCloudClient - runner multistep.Runner + config Config + client *VagrantCloudClient + runner multistep.Runner + warnAtlasToken bool } func (p *PostProcessor) Configure(raws ...interface{}) error { @@ -64,6 +66,17 @@ func (p *PostProcessor) Configure(raws ...interface{}) error { p.config.VagrantCloudUrl = VAGRANT_CLOUD_URL } + if p.config.AccessToken == "" { + envToken := os.Getenv("VAGRANT_CLOUD_TOKEN") + if envToken == "" { + envToken = os.Getenv("ATLAS_TOKEN") + if envToken != "" { + p.warnAtlasToken = true + } + } + p.config.AccessToken = envToken + } + // Accumulate any errors errs := new(packer.MultiError) @@ -101,6 +114,10 @@ func (p *PostProcessor) PostProcess(ui packer.Ui, artifact packer.Artifact) (pac "Unknown files in artifact from vagrant post-processor: %s", artifact.Files()) } + if p.warnAtlasToken { + ui.Message("Warning: Using Vagrant Cloud token found in ATLAS_TOKEN. Please make sure it is correct, or set VAGRANT_CLOUD_TOKEN") + } + // create the HTTP client p.client = VagrantCloudClient{}.New(p.config.VagrantCloudUrl, p.config.AccessToken) diff --git a/post-processor/vagrant-cloud/post-processor_test.go b/post-processor/vagrant-cloud/post-processor_test.go index 53cc64e84..29d786fa3 100644 --- a/post-processor/vagrant-cloud/post-processor_test.go +++ b/post-processor/vagrant-cloud/post-processor_test.go @@ -2,6 +2,7 @@ package vagrantcloud import ( "bytes" + "os" "testing" "github.com/hashicorp/packer/packer" @@ -24,6 +25,48 @@ func testBadConfig() map[string]interface{} { } } +func TestPostProcessor_Configure_fromVagrantEnv(t *testing.T) { + var p PostProcessor + config := testGoodConfig() + config["access_token"] = "" + os.Setenv("VAGRANT_CLOUD_TOKEN", "bar") + defer func() { + os.Setenv("VAGRANT_CLOUD_TOKEN", "") + }() + + if err := p.Configure(config); err != nil { + t.Fatalf("err: %s", err) + } + + if p.config.AccessToken != "bar" { + t.Fatalf("Expected to get token from VAGRANT_CLOUD_TOKEN env var. Got '%s' instead", + p.config.AccessToken) + } +} + +func TestPostProcessor_Configure_fromAtlasEnv(t *testing.T) { + var p PostProcessor + config := testGoodConfig() + config["access_token"] = "" + os.Setenv("ATLAS_TOKEN", "foo") + defer func() { + os.Setenv("ATLAS_TOKEN", "") + }() + + if err := p.Configure(config); err != nil { + t.Fatalf("err: %s", err) + } + + if p.config.AccessToken != "foo" { + t.Fatalf("Expected to get token from ATLAS_TOKEN env var. Got '%s' instead", + p.config.AccessToken) + } + + if !p.warnAtlasToken { + t.Fatal("Expected warn flag to be set when getting token from atlas env var.") + } +} + func TestPostProcessor_Configure_Good(t *testing.T) { var p PostProcessor if err := p.Configure(testGoodConfig()); err != nil {