Merge pull request #4982 from hashicorp/atlastokenwarn

atlas cloud token warn
pull/4987/head
Matthew Hooker 9 years ago committed by GitHub
commit 4444ef83b7

@ -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)

@ -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 {

@ -53,7 +53,9 @@ on Vagrant Cloud, as well as authentication and version information.
- `access_token` (string) - Your access token for the Vagrant Cloud API. This
can be generated on your [tokens
page](https://vagrantcloud.com/account/tokens).
page](https://vagrantcloud.com/account/tokens). If not specified, the
environment will be searched. First, `VAGRANT_CLOUD_TOKEN` is checked, and
if nothing is found, finally `ATLAS_TOKEN` will be used.
- `box_tag` (string) - The shorthand tag for your box that maps to Vagrant
Cloud, i.e `hashicorp/precise64` for `vagrantcloud.com/hashicorp/precise64`

Loading…
Cancel
Save