provider.go 1.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940
  1. package shared
  2. import "strings"
  3. // TODO: reconsider "shared" as a package name
  4. // TODO: for this file, maybe core/pkg/model/cloud?
  5. // TODO: maybe even core/pkg/cloud?
  6. type Provider string
  7. const (
  8. ProviderEmpty Provider = ""
  9. ProviderAWS Provider = "AWS"
  10. ProviderGCP Provider = "GCP"
  11. ProviderAzure Provider = "Azure"
  12. ProviderAlibaba Provider = "Alibaba"
  13. ProviderDigitalOcean Provider = "DigitalOcean"
  14. ProviderOracle Provider = "Oracle"
  15. )
  16. // ParseProvider converts a string to a Provider type, performing case-insensitive matching.
  17. // Returns ProviderEmpty if the provider string is not recognized.
  18. func ParseProvider(provider string) Provider {
  19. switch strings.ToLower(provider) {
  20. case "aws", "amazon":
  21. return ProviderAWS
  22. case "gcp", "gce", "google":
  23. return ProviderGCP
  24. case "azure", "microsoft":
  25. return ProviderAzure
  26. case "alibaba":
  27. return ProviderAlibaba
  28. case "digitalocean", "do":
  29. return ProviderDigitalOcean
  30. case "oracle", "oci":
  31. return ProviderOracle
  32. default:
  33. return ProviderEmpty
  34. }
  35. }