From 743cf80f92d8cd98901b0dd5b68ebc68e6a68f85 Mon Sep 17 00:00:00 2001 From: Paul Bellamy Date: Tue, 10 May 2016 13:17:33 +0100 Subject: [PATCH] Disable deployments and replica sets if k8s is 1.1 --- probe/kubernetes/client.go | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) diff --git a/probe/kubernetes/client.go b/probe/kubernetes/client.go index 8aee202d9..c5112c991 100644 --- a/probe/kubernetes/client.go +++ b/probe/kubernetes/client.go @@ -97,10 +97,19 @@ func NewClient(addr string, resyncPeriod time.Duration) (Client, error) { result.podStore = &cache.StoreToPodLister{Store: result.setupStore(c, "pods", &api.Pod{})} result.serviceStore = &cache.StoreToServiceLister{Store: result.setupStore(c, "services", &api.Service{})} - result.deploymentStore = &cache.StoreToDeploymentLister{Store: result.setupStore(ec, "deployments", &extensions.Deployment{})} - result.replicaSetStore = &cache.StoreToReplicaSetLister{Store: result.setupStore(ec, "replicasets", &extensions.ReplicaSet{})} result.replicationControllerStore = &cache.StoreToReplicationControllerLister{Store: result.setupStore(c, "replicationcontrollers", &api.ReplicationController{})} result.nodeStore = &cache.StoreToNodeLister{Store: result.setupStore(c, "nodes", &api.Node{})} + + // We list deployments here to check if this version of kubernetes is >= 1.2. + // We would use NegotiateVersion, but Kubernetes 1.1 "supports" + // extensions/v1beta1, but not deployments or replicasets. + if _, err := ec.Deployments(api.NamespaceAll).List(api.ListOptions{}); err != nil { + log.Infof("Deployments and ReplicaSets are not supported by this Kubernetes version") + } else { + result.deploymentStore = &cache.StoreToDeploymentLister{Store: result.setupStore(ec, "deployments", &extensions.Deployment{})} + result.replicaSetStore = &cache.StoreToReplicaSetLister{Store: result.setupStore(ec, "replicasets", &extensions.ReplicaSet{})} + } + return result, nil } @@ -152,6 +161,9 @@ func (c *client) WalkServices(f func(Service) error) error { } func (c *client) WalkDeployments(f func(Deployment) error) error { + if c.deploymentStore == nil { + return nil + } list, err := c.deploymentStore.List() if err != nil { return err @@ -166,6 +178,9 @@ func (c *client) WalkDeployments(f func(Deployment) error) error { // WalkReplicaSets calls f for each replica set func (c *client) WalkReplicaSets(f func(ReplicaSet) error) error { + if c.replicaSetStore == nil { + return nil + } list, err := c.replicaSetStore.List() if err != nil { return err