Merge pull request #637 from johnbellone/master

builder/openstack: add ProxyUrl parameter for OpenStack builder
This commit is contained in:
Mitchell Hashimoto 2013-12-06 17:58:15 -08:00
commit d5341d7b00
2 changed files with 18 additions and 1 deletions

View File

@ -4,6 +4,8 @@ import (
"fmt"
"github.com/mitchellh/packer/packer"
"github.com/rackspace/gophercloud"
"net/http"
"net/url"
"os"
)
@ -14,6 +16,7 @@ type AccessConfig struct {
Project string `mapstructure:"project"`
Provider string `mapstructure:"provider"`
RawRegion string `mapstructure:"region"`
ProxyUrl string `mapstructure:"proxy_url"`
}
// Auth returns a valid Auth object for access to openstack services, or
@ -23,6 +26,7 @@ func (c *AccessConfig) Auth() (gophercloud.AccessProvider, error) {
password := c.Password
project := c.Project
provider := c.Provider
proxy := c.ProxyUrl
if username == "" {
username = os.Getenv("SDK_USERNAME")
@ -47,6 +51,19 @@ func (c *AccessConfig) Auth() (gophercloud.AccessProvider, error) {
authoptions.TenantName = project
}
// For corporate networks it may be the case where we want our API calls
// to be sent through a separate HTTP proxy than external traffic.
if proxy != "" {
url, err := url.Parse(proxy)
if err != nil {
return nil, err
}
// The gophercloud.Context has a UseCustomClient method which
// would allow us to override with a new instance of http.Client.
http.DefaultTransport = &http.Transport{Proxy: http.ProxyURL(url)}
}
return gophercloud.Authenticate(provider, authoptions)
}

View File

@ -59,7 +59,7 @@ Optional:
* `ssh_timeout` (string) - The time to wait for SSH to become available
before timing out. The format of this value is a duration such as "5s"
or "5m". The default SSH timeout is "1m".
or "1m". The default SSH timeout is "5m".
* `ssh_username` (string) - The username to use in order to communicate
over SSH to the running server. The default is "root".