|
|
|
@@ -35,6 +35,7 @@ import (
|
|
|
|
|
federationapi "k8s.io/kubernetes/federation/apis/federation/v1beta1"
|
|
|
|
|
federationclientset "k8s.io/kubernetes/federation/client/clientset_generated/federation_clientset"
|
|
|
|
|
"k8s.io/kubernetes/federation/pkg/federation-controller/util"
|
|
|
|
|
"k8s.io/kubernetes/federation/pkg/federation-controller/util/clusterselector"
|
|
|
|
|
"k8s.io/kubernetes/federation/pkg/federation-controller/util/deletionhelper"
|
|
|
|
|
"k8s.io/kubernetes/federation/pkg/federation-controller/util/eventsink"
|
|
|
|
|
"k8s.io/kubernetes/pkg/api"
|
|
|
|
@@ -765,7 +766,14 @@ func (ic *IngressController) reconcileIngress(ingress types.NamespacedName) {
|
|
|
|
|
desiredIngress.Spec = *objSpecCopy
|
|
|
|
|
glog.V(4).Infof("Desired Ingress: %v", desiredIngress)
|
|
|
|
|
|
|
|
|
|
if !clusterIngressFound {
|
|
|
|
|
send, err := clusterselector.SendToCluster(cluster.Labels, desiredIngress.ObjectMeta.Annotations)
|
|
|
|
|
if err != nil {
|
|
|
|
|
glog.Errorf("Error processing ClusterSelector cluster: %s for Ingress map: %s error: %s", cluster.Name, key, err.Error())
|
|
|
|
|
return
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
switch {
|
|
|
|
|
case !clusterIngressFound && send:
|
|
|
|
|
glog.V(4).Infof("No existing Ingress %s in cluster %s - checking if appropriate to queue a create operation", ingress, cluster.Name)
|
|
|
|
|
// We can't supply server-created fields when creating a new object.
|
|
|
|
|
desiredIngress.ObjectMeta = util.DeepCopyRelevantObjectMeta(baseIngress.ObjectMeta)
|
|
|
|
@@ -799,7 +807,15 @@ func (ic *IngressController) reconcileIngress(ingress types.NamespacedName) {
|
|
|
|
|
} else {
|
|
|
|
|
glog.V(4).Infof("No annotation %q exists on ingress %q in federation and waiting for ingress in cluster %s. Not queueing create operation for ingress until annotation exists", staticIPNameKeyWritable, ingress, firstClusterName)
|
|
|
|
|
}
|
|
|
|
|
} else {
|
|
|
|
|
case clusterIngressFound && !send:
|
|
|
|
|
glog.V(5).Infof("Removing Ingress: %s from cluster: %s reason: cluster selectors do not match: %-v %-v", key, cluster.Name, cluster.ObjectMeta.Labels, desiredIngress.ObjectMeta.Annotations[federationapi.FederationClusterSelectorAnnotation])
|
|
|
|
|
operations = append(operations, util.FederatedOperation{
|
|
|
|
|
Type: util.OperationTypeDelete,
|
|
|
|
|
Obj: desiredIngress,
|
|
|
|
|
ClusterName: cluster.Name,
|
|
|
|
|
Key: key,
|
|
|
|
|
})
|
|
|
|
|
case clusterIngressFound && send:
|
|
|
|
|
clusterIngress := clusterIngressObj.(*extensionsv1beta1.Ingress)
|
|
|
|
|
glog.V(4).Infof("Found existing Ingress %s in cluster %s - checking if update is required (in either direction)", ingress, cluster.Name)
|
|
|
|
|
clusterIPName, clusterIPNameExists := clusterIngress.ObjectMeta.Annotations[staticIPNameKeyReadonly]
|
|
|
|
|