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 }