providers/octopusdeploy/octopusdeploy_provider.go (86 lines of code) (raw):
package octopusdeploy
import (
"errors"
"os"
"github.com/GoogleCloudPlatform/terraformer/terraformutils"
"github.com/zclconf/go-cty/cty"
)
type OctopusDeployProvider struct { //nolint
terraformutils.Provider
address string
apiKey string
}
func (p *OctopusDeployProvider) Init(args []string) error {
if args[0] != "" {
p.address = args[0]
} else {
if address := os.Getenv("OCTOPUS_CLI_SERVER"); address != "" {
p.address = address
} else {
return errors.New("server requirement")
}
}
if args[1] != "" {
p.apiKey = args[1]
} else {
if apiKey := os.Getenv("OCTOPUS_CLI_API_KEY"); apiKey != "" {
p.apiKey = apiKey
} else {
return errors.New("api-key requirement")
}
}
return nil
}
func (p *OctopusDeployProvider) GetName() string {
return "octopusdeploy"
}
func (p *OctopusDeployProvider) GetProviderData(arg ...string) map[string]interface{} {
return map[string]interface{}{
"provider": map[string]interface{}{
"octopusdeploy": map[string]interface{}{
"address": p.address,
},
},
}
}
func (OctopusDeployProvider) GetResourceConnections() map[string]map[string][]string {
return map[string]map[string][]string{}
}
func (p *OctopusDeployProvider) GetSupportedService() map[string]terraformutils.ServiceGenerator {
return map[string]terraformutils.ServiceGenerator{
"accounts": &GenericGenerator{APIService: "accounts"},
// "channels": &GenericGenerator{APIService: "channels"},
"certificates": &GenericGenerator{APIService: "certificates"},
"environments": &GenericGenerator{APIService: "environments"},
"feeds": &GenericGenerator{APIService: "feeds"},
"libraryvariablesets": &GenericGenerator{APIService: "libraryvariablesets"},
"lifecycles": &GenericGenerator{APIService: "lifecycles"},
"projects": &GenericGenerator{APIService: "projects"},
"projectgroups": &GenericGenerator{APIService: "projectgroups"},
"projecttriggers": &GenericGenerator{APIService: "projecttriggers"},
"tagsets": &GenericGenerator{APIService: "tagsets"},
// "variables": &GenericGenerator{APIService: "variables"},
}
}
func (p *OctopusDeployProvider) InitService(serviceName string, verbose bool) error {
var isSupported bool
if _, isSupported = p.GetSupportedService()[serviceName]; !isSupported {
return errors.New("octopusdeploy: " + serviceName + " not supported service, see list sub-command")
}
p.Service = p.GetSupportedService()[serviceName]
p.Service.SetName(serviceName)
p.Service.SetVerbose(verbose)
p.Service.SetProviderName(p.GetName())
p.Service.SetArgs(map[string]interface{}{
"api_key": p.apiKey,
"address": p.address,
})
return nil
}
// GetConfig return map of provider config for OctopusDeployProvider
func (p *OctopusDeployProvider) GetConfig() cty.Value {
return cty.ObjectVal(map[string]cty.Value{
"api_key": cty.StringVal(p.apiKey),
"address": cty.StringVal(p.address),
})
}
func (p *OctopusDeployProvider) GetBasicConfig() cty.Value {
return p.GetConfig()
}