github.com/niedbalski/juju@v0.0.0-20190215020005-8ff100488e47/caas/kubernetes/provider/init.go (about)

     1  // Copyright 2018 Canonical Ltd.
     2  // Licensed under the AGPLv3, see LICENCE file for details.
     3  
     4  package provider
     5  
     6  import (
     7  	k8slabels "k8s.io/apimachinery/pkg/labels"
     8  	"k8s.io/apimachinery/pkg/selection"
     9  
    10  	"github.com/juju/juju/caas"
    11  )
    12  
    13  const (
    14  	providerType = "kubernetes"
    15  )
    16  
    17  var k8sCloudCheckers map[string]k8slabels.Selector
    18  
    19  func init() {
    20  	caas.RegisterContainerProvider(providerType, providerInstance)
    21  
    22  	// k8sCloudCheckers is a collection of k8s node selector requirement definitions
    23  	// used for detecting cloud provider from node labels.
    24  	k8sCloudCheckers = compileK8sCloudCheckers()
    25  }
    26  
    27  // compileK8sCloudCheckers compiles/validates the collection of
    28  // k8s node selector requirement definitions used for detecting
    29  // cloud provider from node labels.
    30  func compileK8sCloudCheckers() map[string]k8slabels.Selector {
    31  	return map[string]k8slabels.Selector{
    32  		"gce": newLabelRequirements(
    33  			requirementParams{"cloud.google.com/gke-nodepool", selection.Exists, nil},
    34  			requirementParams{"cloud.google.com/gke-os-distribution", selection.Exists, nil},
    35  		),
    36  		"ec2": newLabelRequirements(
    37  			requirementParams{"manufacturer", selection.Equals, []string{"amazon_ec2"}},
    38  		),
    39  		"azure": newLabelRequirements(
    40  			requirementParams{"kubernetes.azure.com/cluster", selection.Exists, nil},
    41  		),
    42  		// format - cloudType: requirements.
    43  		// TODO(caas): add support for cdk, etc.
    44  	}
    45  }