Improve error handling in status configmap

This commit is contained in:
Maciej Pytel 2017-06-13 18:22:06 +02:00
parent 060b6c2284
commit 7c5679baaf
2 changed files with 8 additions and 5 deletions

View File

@ -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)

View File

@ -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)