mirror of https://github.com/k3s-io/k3s
Merge pull request #43229 from mwielgus/cm-fix
Automatic merge from submit-queue Fix federated config map unit tests Fixes #41419 and #42847 and possibly other issues in this area. cc: @nikhiljindal @csbell @perotinuspull/6/head
commit
8752bfb526
|
@ -323,13 +323,18 @@ func (configmapcontroller *ConfigMapController) reconcileConfigMap(configmap typ
|
|||
glog.V(8).Infof("Skipping not federated config map: %s", key)
|
||||
return
|
||||
}
|
||||
baseConfigMap := baseConfigMapObj.(*apiv1.ConfigMap)
|
||||
obj, err := api.Scheme.DeepCopy(baseConfigMapObj)
|
||||
configMap, ok := obj.(*apiv1.ConfigMap)
|
||||
if err != nil || !ok {
|
||||
glog.Errorf("Error in retrieving obj from store: %v, %v", ok, err)
|
||||
return
|
||||
}
|
||||
|
||||
// Check if deletion has been requested.
|
||||
if baseConfigMap.DeletionTimestamp != nil {
|
||||
if err := configmapcontroller.delete(baseConfigMap); err != nil {
|
||||
if configMap.DeletionTimestamp != nil {
|
||||
if err := configmapcontroller.delete(configMap); err != nil {
|
||||
glog.Errorf("Failed to delete %s: %v", configmap, err)
|
||||
configmapcontroller.eventRecorder.Eventf(baseConfigMap, api.EventTypeNormal, "DeleteFailed",
|
||||
configmapcontroller.eventRecorder.Eventf(configMap, api.EventTypeNormal, "DeleteFailed",
|
||||
"ConfigMap delete failed: %v", err)
|
||||
configmapcontroller.deliverConfigMap(configmap, 0, true)
|
||||
}
|
||||
|
@ -337,18 +342,18 @@ func (configmapcontroller *ConfigMapController) reconcileConfigMap(configmap typ
|
|||
}
|
||||
|
||||
glog.V(3).Infof("Ensuring delete object from underlying clusters finalizer for configmap: %s",
|
||||
baseConfigMap.Name)
|
||||
configMap.Name)
|
||||
// Add the required finalizers before creating a configmap in underlying clusters.
|
||||
updatedConfigMapObj, err := configmapcontroller.deletionHelper.EnsureFinalizers(baseConfigMap)
|
||||
updatedConfigMapObj, err := configmapcontroller.deletionHelper.EnsureFinalizers(configMap)
|
||||
if err != nil {
|
||||
glog.Errorf("Failed to ensure delete object from underlying clusters finalizer in configmap %s: %v",
|
||||
baseConfigMap.Name, err)
|
||||
configMap.Name, err)
|
||||
configmapcontroller.deliverConfigMap(configmap, 0, false)
|
||||
return
|
||||
}
|
||||
baseConfigMap = updatedConfigMapObj.(*apiv1.ConfigMap)
|
||||
configMap = updatedConfigMapObj.(*apiv1.ConfigMap)
|
||||
|
||||
glog.V(3).Infof("Syncing configmap %s in underlying clusters", baseConfigMap.Name)
|
||||
glog.V(3).Infof("Syncing configmap %s in underlying clusters", configMap.Name)
|
||||
|
||||
clusters, err := configmapcontroller.configmapFederatedInformer.GetReadyClusters()
|
||||
if err != nil {
|
||||
|
@ -368,12 +373,12 @@ func (configmapcontroller *ConfigMapController) reconcileConfigMap(configmap typ
|
|||
|
||||
// Do not modify data.
|
||||
desiredConfigMap := &apiv1.ConfigMap{
|
||||
ObjectMeta: util.DeepCopyRelevantObjectMeta(baseConfigMap.ObjectMeta),
|
||||
Data: baseConfigMap.Data,
|
||||
ObjectMeta: util.DeepCopyRelevantObjectMeta(configMap.ObjectMeta),
|
||||
Data: configMap.Data,
|
||||
}
|
||||
|
||||
if !found {
|
||||
configmapcontroller.eventRecorder.Eventf(baseConfigMap, api.EventTypeNormal, "CreateInCluster",
|
||||
configmapcontroller.eventRecorder.Eventf(configMap, api.EventTypeNormal, "CreateInCluster",
|
||||
"Creating configmap in cluster %s", cluster.Name)
|
||||
|
||||
operations = append(operations, util.FederatedOperation{
|
||||
|
@ -386,7 +391,7 @@ func (configmapcontroller *ConfigMapController) reconcileConfigMap(configmap typ
|
|||
|
||||
// Update existing configmap, if needed.
|
||||
if !util.ConfigMapEquivalent(desiredConfigMap, clusterConfigMap) {
|
||||
configmapcontroller.eventRecorder.Eventf(baseConfigMap, api.EventTypeNormal, "UpdateInCluster",
|
||||
configmapcontroller.eventRecorder.Eventf(configMap, api.EventTypeNormal, "UpdateInCluster",
|
||||
"Updating configmap in cluster %s", cluster.Name)
|
||||
operations = append(operations, util.FederatedOperation{
|
||||
Type: util.OperationTypeUpdate,
|
||||
|
@ -404,7 +409,7 @@ func (configmapcontroller *ConfigMapController) reconcileConfigMap(configmap typ
|
|||
}
|
||||
err = configmapcontroller.federatedUpdater.UpdateWithOnError(operations, configmapcontroller.updateTimeout,
|
||||
func(op util.FederatedOperation, operror error) {
|
||||
configmapcontroller.eventRecorder.Eventf(baseConfigMap, api.EventTypeNormal, "UpdateInClusterFailed",
|
||||
configmapcontroller.eventRecorder.Eventf(configMap, api.EventTypeNormal, "UpdateInClusterFailed",
|
||||
"ConfigMap update in cluster %s failed: %v", op.ClusterName, operror)
|
||||
})
|
||||
|
||||
|
|
|
@ -143,11 +143,18 @@ func TestConfigMapController(t *testing.T) {
|
|||
}
|
||||
|
||||
configmapWatch.Modify(configmap1)
|
||||
updatedConfigMap = GetConfigMapFromChan(cluster1UpdateChan)
|
||||
assert.NotNil(t, updatedConfigMap)
|
||||
assert.Equal(t, configmap1.Name, updatedConfigMap.Name)
|
||||
assert.Equal(t, configmap1.Namespace, updatedConfigMap.Namespace)
|
||||
assert.True(t, util.ConfigMapEquivalent(configmap1, updatedConfigMap))
|
||||
for {
|
||||
updatedConfigMap := GetConfigMapFromChan(cluster1UpdateChan)
|
||||
assert.NotNil(t, updatedConfigMap)
|
||||
if updatedConfigMap == nil {
|
||||
break
|
||||
}
|
||||
assert.Equal(t, configmap1.Name, updatedConfigMap.Name)
|
||||
assert.Equal(t, configmap1.Namespace, updatedConfigMap.Namespace)
|
||||
if util.ConfigMapEquivalent(configmap1, updatedConfigMap) {
|
||||
break
|
||||
}
|
||||
}
|
||||
|
||||
// Test add cluster
|
||||
clusterWatch.Add(cluster2)
|
||||
|
|
Loading…
Reference in New Issue