2023-03-28 18:39:22 +00:00
|
|
|
// Copyright (c) HashiCorp, Inc.
|
|
|
|
// SPDX-License-Identifier: MPL-2.0
|
|
|
|
|
2022-09-26 18:58:15 +00:00
|
|
|
package config
|
|
|
|
|
|
|
|
import (
|
|
|
|
"crypto/tls"
|
|
|
|
|
|
|
|
hcpcfg "github.com/hashicorp/hcp-sdk-go/config"
|
|
|
|
)
|
|
|
|
|
|
|
|
// CloudConfig defines configuration for connecting to HCP services
|
|
|
|
type CloudConfig struct {
|
|
|
|
ResourceID string
|
|
|
|
ClientID string
|
|
|
|
ClientSecret string
|
|
|
|
Hostname string
|
|
|
|
AuthURL string
|
2022-10-13 09:31:28 +00:00
|
|
|
ScadaAddress string
|
2022-09-26 18:58:15 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
func (c *CloudConfig) HCPConfig(opts ...hcpcfg.HCPConfigOption) (hcpcfg.HCPConfig, error) {
|
|
|
|
if c.ClientID != "" && c.ClientSecret != "" {
|
|
|
|
opts = append(opts, hcpcfg.WithClientCredentials(c.ClientID, c.ClientSecret))
|
|
|
|
}
|
|
|
|
if c.AuthURL != "" {
|
|
|
|
opts = append(opts, hcpcfg.WithAuth(c.AuthURL, &tls.Config{}))
|
|
|
|
}
|
|
|
|
if c.Hostname != "" {
|
|
|
|
opts = append(opts, hcpcfg.WithAPI(c.Hostname, &tls.Config{}))
|
|
|
|
}
|
2022-10-13 09:31:28 +00:00
|
|
|
if c.ScadaAddress != "" {
|
|
|
|
opts = append(opts, hcpcfg.WithSCADA(c.ScadaAddress, &tls.Config{}))
|
|
|
|
}
|
2022-09-26 18:58:15 +00:00
|
|
|
opts = append(opts, hcpcfg.FromEnv())
|
|
|
|
return hcpcfg.NewHCPConfig(opts...)
|
|
|
|
}
|