From 6ade5461adfc0dad63d8bea65d649839faf485a5 Mon Sep 17 00:00:00 2001 From: Michelle Au Date: Wed, 19 Apr 2017 23:00:59 -0700 Subject: [PATCH] Add GetNodeLabels to VolumeHost interface --- .../volume/attachdetach/attach_detach_controller.go | 4 ++++ pkg/controller/volume/persistentvolume/volume_host.go | 4 ++++ pkg/kubelet/volume_host.go | 8 ++++++++ pkg/volume/plugins.go | 3 +++ pkg/volume/testing/testing.go | 4 ++++ 5 files changed, 23 insertions(+) diff --git a/pkg/controller/volume/attachdetach/attach_detach_controller.go b/pkg/controller/volume/attachdetach/attach_detach_controller.go index 6bdb7715ee..cd450195d6 100644 --- a/pkg/controller/volume/attachdetach/attach_detach_controller.go +++ b/pkg/controller/volume/attachdetach/attach_detach_controller.go @@ -564,3 +564,7 @@ func (adc *attachDetachController) addNodeToDswp(node *v1.Node, nodeName types.N adc.desiredStateOfWorld.AddNode(nodeName, keepTerminatedPodVolumes) } } + +func (adc *attachDetachController) GetNodeLabels() (map[string]string, error) { + return nil, fmt.Errorf("GetNodeLabels() unsupported in Attach/Detach controller") +} diff --git a/pkg/controller/volume/persistentvolume/volume_host.go b/pkg/controller/volume/persistentvolume/volume_host.go index c495c00215..111c2c0d8d 100644 --- a/pkg/controller/volume/persistentvolume/volume_host.go +++ b/pkg/controller/volume/persistentvolume/volume_host.go @@ -86,3 +86,7 @@ func (adc *PersistentVolumeController) GetSecretFunc() func(namespace, name stri return nil, fmt.Errorf("GetSecret unsupported in PersistentVolumeController") } } + +func (ctrl *PersistentVolumeController) GetNodeLabels() (map[string]string, error) { + return nil, fmt.Errorf("GetNodeLabels() unsupported in PersistentVolumeController") +} diff --git a/pkg/kubelet/volume_host.go b/pkg/kubelet/volume_host.go index 547bf9b0cc..87d625f33a 100644 --- a/pkg/kubelet/volume_host.go +++ b/pkg/kubelet/volume_host.go @@ -140,3 +140,11 @@ func (kvh *kubeletVolumeHost) GetNodeAllocatable() (v1.ResourceList, error) { func (kvh *kubeletVolumeHost) GetSecretFunc() func(namespace, name string) (*v1.Secret, error) { return kvh.secretManager.GetSecret } + +func (kvh *kubeletVolumeHost) GetNodeLabels() (map[string]string, error) { + node, err := kvh.kubelet.GetNode() + if err != nil { + return nil, fmt.Errorf("error retrieving node: %v", err) + } + return node.Labels, nil +} diff --git a/pkg/volume/plugins.go b/pkg/volume/plugins.go index 23dec32969..0b607d5cc0 100644 --- a/pkg/volume/plugins.go +++ b/pkg/volume/plugins.go @@ -232,6 +232,9 @@ type VolumeHost interface { // Returns a function that returns a secret. GetSecretFunc() func(namespace, name string) (*v1.Secret, error) + + // Returns the labels on the node + GetNodeLabels() (map[string]string, error) } // VolumePluginMgr tracks registered plugins. diff --git a/pkg/volume/testing/testing.go b/pkg/volume/testing/testing.go index 8eccc091bf..29acf514fa 100644 --- a/pkg/volume/testing/testing.go +++ b/pkg/volume/testing/testing.go @@ -133,6 +133,10 @@ func (f *fakeVolumeHost) GetSecretFunc() func(namespace, name string) (*v1.Secre } } +func (f *fakeVolumeHost) GetNodeLabels() (map[string]string, error) { + return map[string]string{"test-label": "test-value"}, nil +} + func ProbeVolumePlugins(config VolumeConfig) []VolumePlugin { if _, ok := config.OtherAttributes["fake-property"]; ok { return []VolumePlugin{