52 lines
1.2 KiB
Go
Raw Normal View History

2018-01-12 14:12:15 -08:00
package classic
import (
"fmt"
2018-01-12 15:44:40 -08:00
"net/url"
2018-01-12 14:12:15 -08:00
"github.com/hashicorp/packer/common"
"github.com/hashicorp/packer/helper/communicator"
"github.com/hashicorp/packer/helper/config"
"github.com/hashicorp/packer/template/interpolate"
)
type Config struct {
common.PackerConfig `mapstructure:",squash"`
Comm communicator.Config `mapstructure:",squash"`
Access *AccessConfig
// Access config overrides
Username string `mapstructure:"username"`
Password string `mapstructure:"password"`
IdentityDomain string `mapstructure:"identity_domain"`
APIEndpoint string `mapstructure:"api_endpoint"`
2018-01-12 15:44:40 -08:00
apiEndpointURL *url.URL
2018-01-12 14:12:15 -08:00
// Image
Shape string `mapstructure:"shape"`
ImageList string `json:"image_list"`
ctx interpolate.Context
}
func NewConfig(raws ...interface{}) (*Config, error) {
c := &Config{}
// Decode from template
err := config.Decode(c, &config.DecodeOpts{
Interpolate: true,
InterpolateContext: &c.ctx,
}, raws...)
if err != nil {
return nil, fmt.Errorf("Failed to mapstructure Config: %+v", err)
}
2018-01-12 15:44:40 -08:00
c.apiEndpointURL, err = url.Parse(c.APIEndpoint)
if err != nil {
return nil, fmt.Errorf("Error parsing API Endpoint: %s", err)
}
2018-01-12 14:12:15 -08:00
return c, nil
}