Merge pull request #164 from mitchellh/do-env-vars
builder/digitalocean: use detected env variables for credentials
This commit is contained in:
commit
13182d97b5
|
@ -12,6 +12,7 @@ import (
|
||||||
"github.com/mitchellh/packer/builder/common"
|
"github.com/mitchellh/packer/builder/common"
|
||||||
"github.com/mitchellh/packer/packer"
|
"github.com/mitchellh/packer/packer"
|
||||||
"log"
|
"log"
|
||||||
|
"os"
|
||||||
"strconv"
|
"strconv"
|
||||||
"text/template"
|
"text/template"
|
||||||
"time"
|
"time"
|
||||||
|
@ -64,6 +65,16 @@ func (b *Builder) Prepare(raws ...interface{}) error {
|
||||||
|
|
||||||
// Optional configuration with defaults
|
// Optional configuration with defaults
|
||||||
//
|
//
|
||||||
|
if b.config.APIKey == "" {
|
||||||
|
// Default to environment variable for api_key, if it exists
|
||||||
|
b.config.APIKey = os.Getenv("DIGITALOCEAN_API_KEY")
|
||||||
|
}
|
||||||
|
|
||||||
|
if b.config.ClientID == "" {
|
||||||
|
// Default to environment variable for client_id, if it exists
|
||||||
|
b.config.ClientID = os.Getenv("DIGITALOCEAN_CLIENT_ID")
|
||||||
|
}
|
||||||
|
|
||||||
if b.config.RegionID == 0 {
|
if b.config.RegionID == 0 {
|
||||||
// Default to Region "New York"
|
// Default to Region "New York"
|
||||||
b.config.RegionID = 1
|
b.config.RegionID = 1
|
||||||
|
|
|
@ -2,10 +2,17 @@ package digitalocean
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"github.com/mitchellh/packer/packer"
|
"github.com/mitchellh/packer/packer"
|
||||||
|
"os"
|
||||||
"strconv"
|
"strconv"
|
||||||
"testing"
|
"testing"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
func init() {
|
||||||
|
// Clear out the credential env vars
|
||||||
|
os.Setenv("DIGITALOCEAN_API_KEY", "")
|
||||||
|
os.Setenv("DIGITALOCEAN_CLIENT_ID", "")
|
||||||
|
}
|
||||||
|
|
||||||
func testConfig() map[string]interface{} {
|
func testConfig() map[string]interface{} {
|
||||||
return map[string]interface{}{
|
return map[string]interface{}{
|
||||||
"client_id": "foo",
|
"client_id": "foo",
|
||||||
|
@ -55,6 +62,15 @@ func TestBuilderPrepare_APIKey(t *testing.T) {
|
||||||
if err == nil {
|
if err == nil {
|
||||||
t.Fatal("should have error")
|
t.Fatal("should have error")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Test env variable
|
||||||
|
delete(config, "api_key")
|
||||||
|
os.Setenv("DIGITALOCEAN_API_KEY", "foo")
|
||||||
|
defer os.Setenv("DIGITALOCEAN_API_KEY", "")
|
||||||
|
err = b.Prepare(config)
|
||||||
|
if err != nil {
|
||||||
|
t.Fatalf("should not have error: %s", err)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestBuilderPrepare_ClientID(t *testing.T) {
|
func TestBuilderPrepare_ClientID(t *testing.T) {
|
||||||
|
@ -79,6 +95,15 @@ func TestBuilderPrepare_ClientID(t *testing.T) {
|
||||||
if err == nil {
|
if err == nil {
|
||||||
t.Fatal("should have error")
|
t.Fatal("should have error")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Test env variable
|
||||||
|
delete(config, "client_id")
|
||||||
|
os.Setenv("DIGITALOCEAN_CLIENT_ID", "foo")
|
||||||
|
defer os.Setenv("DIGITALOCEAN_CLIENT_ID", "")
|
||||||
|
err = b.Prepare(config)
|
||||||
|
if err != nil {
|
||||||
|
t.Fatalf("should not have error: %s", err)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestBuilderPrepare_RegionID(t *testing.T) {
|
func TestBuilderPrepare_RegionID(t *testing.T) {
|
||||||
|
|
|
@ -25,11 +25,13 @@ Required:
|
||||||
|
|
||||||
* `api_key` (string) - The API key to use to access your account. You can
|
* `api_key` (string) - The API key to use to access your account. You can
|
||||||
retrieve this on the "API" page visible after logging into your account
|
retrieve this on the "API" page visible after logging into your account
|
||||||
on DigitalOcean.
|
on DigitalOcean. Alternatively, the builder looks for the environment
|
||||||
|
variable `DIGITALOCEAN_API_KEY`.
|
||||||
|
|
||||||
* `client_id` (string) - The client ID to use to access your account. You can
|
* `client_id` (string) - The client ID to use to access your account. You can
|
||||||
find this on the "API" page visible after logging into your account on
|
find this on the "API" page visible after logging into your account on
|
||||||
DigitalOcean.
|
DigitalOcean. Alternatively, the builder looks for the environment
|
||||||
|
variable `DIGITALOCEAN_CLIENT_ID`.
|
||||||
|
|
||||||
Optional:
|
Optional:
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue