From 7c5679baaf6eb64c55fc4e8249f420f23d7f1d40 Mon Sep 17 00:00:00 2001 From: Maciej Pytel Date: Tue, 13 Jun 2017 18:22:06 +0200 Subject: [PATCH] Improve error handling in status configmap --- cluster-autoscaler/clusterstate/utils/status.go | 7 +++++-- cluster-autoscaler/clusterstate/utils/status_test.go | 6 +++--- 2 files changed, 8 insertions(+), 5 deletions(-) diff --git a/cluster-autoscaler/clusterstate/utils/status.go b/cluster-autoscaler/clusterstate/utils/status.go index bbb34c1c4a..c2fa68e828 100644 --- a/cluster-autoscaler/clusterstate/utils/status.go +++ b/cluster-autoscaler/clusterstate/utils/status.go @@ -93,6 +93,9 @@ func WriteStatusConfigMap(kubeClient kube_client.Interface, msg string, logRecor configMap, getStatusError = maps.Get(StatusConfigMapName, metav1.GetOptions{}) if getStatusError == nil { configMap.Data["status"] = statusMsg + if configMap.ObjectMeta.Annotations == nil { + configMap.ObjectMeta.Annotations = make(map[string]string) + } configMap.ObjectMeta.Annotations[ConfigMapLastUpdatedKey] = fmt.Sprintf("%v", statusUpdateTime) configMap, writeStatusError = maps.Update(configMap) } else if kube_errors.IsNotFound(getStatusError) { @@ -110,10 +113,10 @@ func WriteStatusConfigMap(kubeClient kube_client.Interface, msg string, logRecor } configMap, writeStatusError = maps.Create(configMap) } else { - errMsg = "Failed to retrieve status configmap for update" + errMsg = fmt.Sprintf("Failed to retrieve status configmap for update: %v", getStatusError) } if writeStatusError != nil { - errMsg = "Failed to write status configmap" + errMsg = fmt.Sprintf("Failed to write status configmap: %v", writeStatusError) } if errMsg != "" { glog.Error(errMsg) diff --git a/cluster-autoscaler/clusterstate/utils/status_test.go b/cluster-autoscaler/clusterstate/utils/status_test.go index b3b48fa93c..38c7b44bb3 100644 --- a/cluster-autoscaler/clusterstate/utils/status_test.go +++ b/cluster-autoscaler/clusterstate/utils/status_test.go @@ -45,9 +45,8 @@ func setUpTest(t *testing.T) *testInfo { client: &fake.Clientset{}, configMap: &apiv1.ConfigMap{ ObjectMeta: metav1.ObjectMeta{ - Namespace: StatusConfigMapNamespace, - Name: StatusConfigMapName, - Annotations: map[string]string{}, + Namespace: StatusConfigMapNamespace, + Name: StatusConfigMapName, }, Data: map[string]string{}, }, @@ -112,6 +111,7 @@ func TestWriteStatusConfigMapError(t *testing.T) { ti.getError = errors.New("stuff bad") result, err := WriteStatusConfigMap(ti.client, "TEST_MSG", nil) assert.NotNil(t, err) + assert.Contains(t, err.Error(), "stuff bad") assert.Nil(t, result) assert.True(t, ti.getCalled) assert.False(t, ti.updateCalled)