mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-09-15 06:01:50 +00:00
Merge pull request #33605 from quinton-hoole/2016-09-27-fix-fed-e2e-resource-cleanup
Automatic merge from submit-queue Use UpdateStatus, not Update, to add LoadBalancerStatus to Federated Ingress. See https://github.com/kubernetes/kubernetes/pull/33502 for detailed description.
This commit is contained in:
@@ -678,6 +678,16 @@ func (ic *IngressController) reconcileIngress(ingress types.NamespacedName) {
|
|||||||
glog.V(4).Infof(logStr, "Transferring")
|
glog.V(4).Infof(logStr, "Transferring")
|
||||||
if !baseIPAnnotationExists && clusterIPNameExists {
|
if !baseIPAnnotationExists && clusterIPNameExists {
|
||||||
baseIngress.ObjectMeta.Annotations[staticIPNameKeyWritable] = clusterIPName
|
baseIngress.ObjectMeta.Annotations[staticIPNameKeyWritable] = clusterIPName
|
||||||
|
glog.V(4).Infof("Attempting to update base federated ingress annotations: %v", baseIngress)
|
||||||
|
if updatedFedIngress, err := ic.federatedApiClient.Extensions().Ingresses(baseIngress.Namespace).Update(baseIngress); err != nil {
|
||||||
|
glog.Errorf("Failed to add static IP annotation to federated ingress %q, will try again later: %v", ingress, err)
|
||||||
|
ic.deliverIngress(ingress, ic.ingressReviewDelay, true)
|
||||||
|
return
|
||||||
|
} else {
|
||||||
|
glog.V(4).Infof("Successfully updated federated ingress %q (added IP annotation), after update: %q", ingress, updatedFedIngress)
|
||||||
|
ic.deliverIngress(ingress, ic.smallDelay, false)
|
||||||
|
return
|
||||||
|
}
|
||||||
}
|
}
|
||||||
if !baseLBStatusExists && clusterLBStatusExists {
|
if !baseLBStatusExists && clusterLBStatusExists {
|
||||||
lbstatusObj, lbErr := conversion.NewCloner().DeepCopy(&clusterIngress.Status.LoadBalancer)
|
lbstatusObj, lbErr := conversion.NewCloner().DeepCopy(&clusterIngress.Status.LoadBalancer)
|
||||||
@@ -688,16 +698,16 @@ func (ic *IngressController) reconcileIngress(ingress types.NamespacedName) {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
baseIngress.Status.LoadBalancer = *lbstatus
|
baseIngress.Status.LoadBalancer = *lbstatus
|
||||||
}
|
glog.V(4).Infof("Attempting to update base federated ingress status: %v", baseIngress)
|
||||||
glog.V(4).Infof("Attempting to update base federated ingress: %v", baseIngress)
|
if updatedFedIngress, err := ic.federatedApiClient.Extensions().Ingresses(baseIngress.Namespace).UpdateStatus(baseIngress); err != nil {
|
||||||
if _, err = ic.federatedApiClient.Extensions().Ingresses(baseIngress.Namespace).Update(baseIngress); err != nil {
|
glog.Errorf("Failed to update federated ingress status of %q (loadbalancer status), will try again later: %v", ingress, err)
|
||||||
glog.Errorf("Failed to add static IP annotation to federated ingress %q, will try again later: %v", ingress, err)
|
ic.deliverIngress(ingress, ic.ingressReviewDelay, true)
|
||||||
ic.deliverIngress(ingress, ic.ingressReviewDelay, true)
|
return
|
||||||
return
|
} else {
|
||||||
} else {
|
glog.V(4).Infof("Successfully updated federated ingress status of %q (added loadbalancer status), after update: %q", ingress, updatedFedIngress)
|
||||||
glog.V(4).Infof("Successfully added static IP annotation to federated ingress: %q", ingress)
|
ic.deliverIngress(ingress, ic.smallDelay, false)
|
||||||
ic.deliverIngress(ingress, ic.smallDelay, false)
|
return
|
||||||
return
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
glog.V(4).Infof(logStr, "Not transferring")
|
glog.V(4).Infof(logStr, "Not transferring")
|
||||||
@@ -711,10 +721,13 @@ func (ic *IngressController) reconcileIngress(ingress types.NamespacedName) {
|
|||||||
objMeta, err := conversion.NewCloner().DeepCopy(clusterIngress.ObjectMeta)
|
objMeta, err := conversion.NewCloner().DeepCopy(clusterIngress.ObjectMeta)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
glog.Errorf("Error deep copying ObjectMeta: %v", err)
|
glog.Errorf("Error deep copying ObjectMeta: %v", err)
|
||||||
|
ic.deliverIngress(ingress, ic.ingressReviewDelay, true)
|
||||||
|
|
||||||
}
|
}
|
||||||
desiredIngress.ObjectMeta, ok = objMeta.(v1.ObjectMeta)
|
desiredIngress.ObjectMeta, ok = objMeta.(v1.ObjectMeta)
|
||||||
if !ok {
|
if !ok {
|
||||||
glog.Errorf("Internal error: Failed to cast to v1.ObjectMeta: %v", objMeta)
|
glog.Errorf("Internal error: Failed to cast to v1.ObjectMeta: %v", objMeta)
|
||||||
|
ic.deliverIngress(ingress, ic.ingressReviewDelay, true)
|
||||||
}
|
}
|
||||||
// Merge any annotations and labels on the federated ingress onto the underlying cluster ingress,
|
// Merge any annotations and labels on the federated ingress onto the underlying cluster ingress,
|
||||||
// overwriting duplicates.
|
// overwriting duplicates.
|
||||||
@@ -747,6 +760,7 @@ func (ic *IngressController) reconcileIngress(ingress types.NamespacedName) {
|
|||||||
if len(operations) == 0 {
|
if len(operations) == 0 {
|
||||||
// Everything is in order
|
// Everything is in order
|
||||||
glog.V(4).Infof("Ingress %q is up-to-date in all clusters - no propagation to clusters required.", ingress)
|
glog.V(4).Infof("Ingress %q is up-to-date in all clusters - no propagation to clusters required.", ingress)
|
||||||
|
ic.deliverIngress(ingress, ic.ingressReviewDelay, false)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
glog.V(4).Infof("Calling federatedUpdater.Update() - operations: %v", operations)
|
glog.V(4).Infof("Calling federatedUpdater.Update() - operations: %v", operations)
|
||||||
@@ -759,4 +773,6 @@ func (ic *IngressController) reconcileIngress(ingress types.NamespacedName) {
|
|||||||
ic.deliverIngress(ingress, ic.ingressReviewDelay, true)
|
ic.deliverIngress(ingress, ic.ingressReviewDelay, true)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
// Schedule another periodic reconciliation, only to account for possible bugs in watch processing.
|
||||||
|
ic.deliverIngress(ingress, ic.ingressReviewDelay, false)
|
||||||
}
|
}
|
||||||
|
@@ -99,7 +99,6 @@ func TestIngressController(t *testing.T) {
|
|||||||
Name: "test-ingress",
|
Name: "test-ingress",
|
||||||
Namespace: "mynamespace",
|
Namespace: "mynamespace",
|
||||||
SelfLink: "/api/v1/namespaces/mynamespace/ingress/test-ingress",
|
SelfLink: "/api/v1/namespaces/mynamespace/ingress/test-ingress",
|
||||||
// TODO: Remove: Annotations: map[string]string{},
|
|
||||||
},
|
},
|
||||||
Status: extensions_v1beta1.IngressStatus{
|
Status: extensions_v1beta1.IngressStatus{
|
||||||
LoadBalancer: api_v1.LoadBalancerStatus{
|
LoadBalancer: api_v1.LoadBalancerStatus{
|
||||||
|
Reference in New Issue
Block a user