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  }