github.com/olli-ai/jx/v2@v2.0.400-0.20210921045218-14731b4dd448/pkg/cluster/factory/factory.go (about) 1 package factory 2 3 import ( 4 "fmt" 5 "os" 6 7 "github.com/olli-ai/jx/v2/pkg/cloud" 8 "github.com/olli-ai/jx/v2/pkg/cluster" 9 "github.com/olli-ai/jx/v2/pkg/cluster/eks" 10 "github.com/olli-ai/jx/v2/pkg/cluster/gke" 11 ) 12 13 // NewClientFromEnv uses environment variables to detect which kind of cluster we are running inside 14 func NewClientFromEnv() (cluster.Client, error) { 15 if os.Getenv(cluster.EnvGKEProject) != "" && os.Getenv(cluster.EnvGKERegion) != "" { 16 return gke.NewGKEFromEnv() 17 } 18 // lets try discover the current project 19 return nil, fmt.Errorf("could not detect the cluter.Client from the environment variables") 20 } 21 22 // NewClientForProvider will return a provider specific cluster client or an error if the provider has no client 23 func NewClientForProvider(provider string) (cluster.Client, error) { 24 switch provider { 25 case cloud.GKE: 26 return gke.NewGKEFromEnv() 27 case cloud.AWS: 28 fallthrough 29 case cloud.EKS: 30 return eks.NewAWSClusterClient() 31 default: 32 return nil, fmt.Errorf("no cluster client found for provier %s", provider) 33 } 34 }