mirror of
				https://github.com/optim-enterprises-bv/kubernetes.git
				synced 2025-11-04 12:18:16 +00:00 
			
		
		
		
	fix typo for federation/*
This commit is contained in:
		@@ -76,7 +76,7 @@ type ClusterCondition struct {
 | 
				
			|||||||
	Message string
 | 
						Message string
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// ClusterStatus is information about the current status of a cluster updated by cluster controller peridocally.
 | 
					// ClusterStatus is information about the current status of a cluster updated by cluster controller periodically.
 | 
				
			||||||
type ClusterStatus struct {
 | 
					type ClusterStatus struct {
 | 
				
			||||||
	// Conditions is an array of current cluster conditions.
 | 
						// Conditions is an array of current cluster conditions.
 | 
				
			||||||
	// +optional
 | 
						// +optional
 | 
				
			||||||
@@ -124,8 +124,8 @@ type ClusterList struct {
 | 
				
			|||||||
// Temporary/alpha structures to support custom replica assignments within FederatedReplicaSet.
 | 
					// Temporary/alpha structures to support custom replica assignments within FederatedReplicaSet.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// A set of preferences that can be added to federated version of ReplicaSet as a json-serialized annotation.
 | 
					// A set of preferences that can be added to federated version of ReplicaSet as a json-serialized annotation.
 | 
				
			||||||
// The preferences allow the user to express in which culsters he wants to put his replicas within the
 | 
					// The preferences allow the user to express in which clusters he wants to put his replicas within the
 | 
				
			||||||
// mentiond FederatedReplicaSet.
 | 
					// mentioned FederatedReplicaSet.
 | 
				
			||||||
type FederatedReplicaSetPreferences struct {
 | 
					type FederatedReplicaSetPreferences struct {
 | 
				
			||||||
	// If set to true then already scheduled and running replicas may be moved to other clusters to
 | 
						// If set to true then already scheduled and running replicas may be moved to other clusters to
 | 
				
			||||||
	// in order to bring cluster replicasets towards a desired state. Otherwise, if set to false,
 | 
						// in order to bring cluster replicasets towards a desired state. Otherwise, if set to false,
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -76,7 +76,7 @@ type ClusterCondition struct {
 | 
				
			|||||||
	Message string `json:"message,omitempty" protobuf:"bytes,6,opt,name=message"`
 | 
						Message string `json:"message,omitempty" protobuf:"bytes,6,opt,name=message"`
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// ClusterStatus is information about the current status of a cluster updated by cluster controller peridocally.
 | 
					// ClusterStatus is information about the current status of a cluster updated by cluster controller periodically.
 | 
				
			||||||
type ClusterStatus struct {
 | 
					type ClusterStatus struct {
 | 
				
			||||||
	// Conditions is an array of current cluster conditions.
 | 
						// Conditions is an array of current cluster conditions.
 | 
				
			||||||
	// +optional
 | 
						// +optional
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -76,7 +76,7 @@ func TestValidateCluster(t *testing.T) {
 | 
				
			|||||||
	for testName, errorCase := range errorCases {
 | 
						for testName, errorCase := range errorCases {
 | 
				
			||||||
		errs := ValidateCluster(&errorCase)
 | 
							errs := ValidateCluster(&errorCase)
 | 
				
			||||||
		if len(errs) == 0 {
 | 
							if len(errs) == 0 {
 | 
				
			||||||
			t.Errorf("expected failur for %s", testName)
 | 
								t.Errorf("expected failure for %s", testName)
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -51,7 +51,7 @@ func RegisterDnsProvider(name string, cloud Factory) {
 | 
				
			|||||||
// the name is not known.  The error return is only used if the named provider
 | 
					// the name is not known.  The error return is only used if the named provider
 | 
				
			||||||
// was known but failed to initialize. The config parameter specifies the
 | 
					// was known but failed to initialize. The config parameter specifies the
 | 
				
			||||||
// io.Reader handler of the configuration file for the DNS provider, or nil
 | 
					// io.Reader handler of the configuration file for the DNS provider, or nil
 | 
				
			||||||
// for no configuation.
 | 
					// for no configuration.
 | 
				
			||||||
func GetDnsProvider(name string, config io.Reader) (Interface, error) {
 | 
					func GetDnsProvider(name string, config io.Reader) (Interface, error) {
 | 
				
			||||||
	providersMutex.Lock()
 | 
						providersMutex.Lock()
 | 
				
			||||||
	defer providersMutex.Unlock()
 | 
						defer providersMutex.Unlock()
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -21,7 +21,7 @@ import (
 | 
				
			|||||||
	"k8s.io/kubernetes/federation/pkg/dnsprovider/providers/aws/route53/stubs"
 | 
						"k8s.io/kubernetes/federation/pkg/dnsprovider/providers/aws/route53/stubs"
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// Compile time check for interface adeherence
 | 
					// Compile time check for interface adherence
 | 
				
			||||||
var _ dnsprovider.Interface = Interface{}
 | 
					var _ dnsprovider.Interface = Interface{}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
type Interface struct {
 | 
					type Interface struct {
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -44,7 +44,7 @@ type Route53APIStub struct {
 | 
				
			|||||||
	recordSets map[string]map[string][]*route53.ResourceRecordSet
 | 
						recordSets map[string]map[string][]*route53.ResourceRecordSet
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// NewRoute53APIStub returns an initlialized Route53APIStub
 | 
					// NewRoute53APIStub returns an initialized Route53APIStub
 | 
				
			||||||
func NewRoute53APIStub() *Route53APIStub {
 | 
					func NewRoute53APIStub() *Route53APIStub {
 | 
				
			||||||
	return &Route53APIStub{
 | 
						return &Route53APIStub{
 | 
				
			||||||
		zones:      make(map[string]*route53.HostedZone),
 | 
							zones:      make(map[string]*route53.HostedZone),
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -24,7 +24,7 @@ import (
 | 
				
			|||||||
	"k8s.io/kubernetes/federation/pkg/dnsprovider"
 | 
						"k8s.io/kubernetes/federation/pkg/dnsprovider"
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// Compile time check for interface adeherence
 | 
					// Compile time check for interface adherence
 | 
				
			||||||
var _ dnsprovider.Zone = &Zone{}
 | 
					var _ dnsprovider.Zone = &Zone{}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
type Zone struct {
 | 
					type Zone struct {
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -23,7 +23,7 @@ import (
 | 
				
			|||||||
	"k8s.io/kubernetes/pkg/util/uuid"
 | 
						"k8s.io/kubernetes/pkg/util/uuid"
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// Compile time check for interface adeherence
 | 
					// Compile time check for interface adherence
 | 
				
			||||||
var _ dnsprovider.Zones = Zones{}
 | 
					var _ dnsprovider.Zones = Zones{}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
type Zones struct {
 | 
					type Zones struct {
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -23,7 +23,7 @@ import (
 | 
				
			|||||||
	"k8s.io/kubernetes/federation/pkg/dnsprovider/providers/google/clouddns/internal/interfaces"
 | 
						"k8s.io/kubernetes/federation/pkg/dnsprovider/providers/google/clouddns/internal/interfaces"
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// Compile time check for interface adeherence
 | 
					// Compile time check for interface adherence
 | 
				
			||||||
var _ interfaces.ChangesCreateCall = ChangesCreateCall{}
 | 
					var _ interfaces.ChangesCreateCall = ChangesCreateCall{}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
type ChangesCreateCall struct{ impl *dns.ChangesCreateCall }
 | 
					type ChangesCreateCall struct{ impl *dns.ChangesCreateCall }
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -21,7 +21,7 @@ import (
 | 
				
			|||||||
	"k8s.io/kubernetes/federation/pkg/dnsprovider/providers/google/clouddns/internal/interfaces"
 | 
						"k8s.io/kubernetes/federation/pkg/dnsprovider/providers/google/clouddns/internal/interfaces"
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// Compile time check for interface adeherence
 | 
					// Compile time check for interface adherence
 | 
				
			||||||
var _ interfaces.ChangesService = ChangesService{}
 | 
					var _ interfaces.ChangesService = ChangesService{}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
type ChangesService struct{ impl *dns.ChangesService }
 | 
					type ChangesService struct{ impl *dns.ChangesService }
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -21,7 +21,7 @@ import (
 | 
				
			|||||||
	"k8s.io/kubernetes/federation/pkg/dnsprovider/providers/google/clouddns/internal/interfaces"
 | 
						"k8s.io/kubernetes/federation/pkg/dnsprovider/providers/google/clouddns/internal/interfaces"
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// Compile time check for interface adeherence
 | 
					// Compile time check for interface adherence
 | 
				
			||||||
var _ interfaces.ManagedZone = ManagedZone{}
 | 
					var _ interfaces.ManagedZone = ManagedZone{}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
type ManagedZone struct{ impl *dns.ManagedZone }
 | 
					type ManagedZone struct{ impl *dns.ManagedZone }
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -22,7 +22,7 @@ import (
 | 
				
			|||||||
	"k8s.io/kubernetes/federation/pkg/dnsprovider/providers/google/clouddns/internal/interfaces"
 | 
						"k8s.io/kubernetes/federation/pkg/dnsprovider/providers/google/clouddns/internal/interfaces"
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// Compile time check for interface adeherence
 | 
					// Compile time check for interface adherence
 | 
				
			||||||
var _ interfaces.ManagedZonesCreateCall = ManagedZonesCreateCall{}
 | 
					var _ interfaces.ManagedZonesCreateCall = ManagedZonesCreateCall{}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
type ManagedZonesCreateCall struct{ impl *dns.ManagedZonesCreateCall }
 | 
					type ManagedZonesCreateCall struct{ impl *dns.ManagedZonesCreateCall }
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -22,7 +22,7 @@ import (
 | 
				
			|||||||
	"k8s.io/kubernetes/federation/pkg/dnsprovider/providers/google/clouddns/internal/interfaces"
 | 
						"k8s.io/kubernetes/federation/pkg/dnsprovider/providers/google/clouddns/internal/interfaces"
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// Compile time check for interface adeherence
 | 
					// Compile time check for interface adherence
 | 
				
			||||||
var _ interfaces.ManagedZonesDeleteCall = ManagedZonesDeleteCall{}
 | 
					var _ interfaces.ManagedZonesDeleteCall = ManagedZonesDeleteCall{}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
type ManagedZonesDeleteCall struct{ impl *dns.ManagedZonesDeleteCall }
 | 
					type ManagedZonesDeleteCall struct{ impl *dns.ManagedZonesDeleteCall }
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -22,7 +22,7 @@ import (
 | 
				
			|||||||
	"k8s.io/kubernetes/federation/pkg/dnsprovider/providers/google/clouddns/internal/interfaces"
 | 
						"k8s.io/kubernetes/federation/pkg/dnsprovider/providers/google/clouddns/internal/interfaces"
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// Compile time check for interface adeherence
 | 
					// Compile time check for interface adherence
 | 
				
			||||||
var _ interfaces.ManagedZonesGetCall = ManagedZonesGetCall{}
 | 
					var _ interfaces.ManagedZonesGetCall = ManagedZonesGetCall{}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
type ManagedZonesGetCall struct{ impl *dns.ManagedZonesGetCall }
 | 
					type ManagedZonesGetCall struct{ impl *dns.ManagedZonesGetCall }
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -22,7 +22,7 @@ import (
 | 
				
			|||||||
	"k8s.io/kubernetes/federation/pkg/dnsprovider/providers/google/clouddns/internal/interfaces"
 | 
						"k8s.io/kubernetes/federation/pkg/dnsprovider/providers/google/clouddns/internal/interfaces"
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// Compile time check for interface adeherence
 | 
					// Compile time check for interface adherence
 | 
				
			||||||
var _ interfaces.ManagedZonesListCall = &ManagedZonesListCall{}
 | 
					var _ interfaces.ManagedZonesListCall = &ManagedZonesListCall{}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
type ManagedZonesListCall struct{ impl *dns.ManagedZonesListCall }
 | 
					type ManagedZonesListCall struct{ impl *dns.ManagedZonesListCall }
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -21,7 +21,7 @@ import (
 | 
				
			|||||||
	"k8s.io/kubernetes/federation/pkg/dnsprovider/providers/google/clouddns/internal/interfaces"
 | 
						"k8s.io/kubernetes/federation/pkg/dnsprovider/providers/google/clouddns/internal/interfaces"
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// Compile time check for interface adeherence
 | 
					// Compile time check for interface adherence
 | 
				
			||||||
var _ interfaces.ManagedZonesListResponse = &ManagedZonesListResponse{}
 | 
					var _ interfaces.ManagedZonesListResponse = &ManagedZonesListResponse{}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
type ManagedZonesListResponse struct{ impl *dns.ManagedZonesListResponse }
 | 
					type ManagedZonesListResponse struct{ impl *dns.ManagedZonesListResponse }
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -24,7 +24,7 @@ import (
 | 
				
			|||||||
	"k8s.io/kubernetes/pkg/util/uuid"
 | 
						"k8s.io/kubernetes/pkg/util/uuid"
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// Compile time check for interface adeherence
 | 
					// Compile time check for interface adherence
 | 
				
			||||||
var _ interfaces.ManagedZonesService = &ManagedZonesService{}
 | 
					var _ interfaces.ManagedZonesService = &ManagedZonesService{}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
type ManagedZonesService struct{ impl *dns.ManagedZonesService }
 | 
					type ManagedZonesService struct{ impl *dns.ManagedZonesService }
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -21,7 +21,7 @@ import (
 | 
				
			|||||||
	"k8s.io/kubernetes/federation/pkg/dnsprovider/providers/google/clouddns/internal/interfaces"
 | 
						"k8s.io/kubernetes/federation/pkg/dnsprovider/providers/google/clouddns/internal/interfaces"
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// Compile time check for interface adeherence
 | 
					// Compile time check for interface adherence
 | 
				
			||||||
var _ interfaces.ResourceRecordSet = ResourceRecordSet{}
 | 
					var _ interfaces.ResourceRecordSet = ResourceRecordSet{}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
type ResourceRecordSet struct{ impl *dns.ResourceRecordSet }
 | 
					type ResourceRecordSet struct{ impl *dns.ResourceRecordSet }
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -22,7 +22,7 @@ import (
 | 
				
			|||||||
	"k8s.io/kubernetes/federation/pkg/dnsprovider/providers/google/clouddns/internal/interfaces"
 | 
						"k8s.io/kubernetes/federation/pkg/dnsprovider/providers/google/clouddns/internal/interfaces"
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// Compile time check for interface adeherence
 | 
					// Compile time check for interface adherence
 | 
				
			||||||
var _ interfaces.ResourceRecordSetsListCall = &ResourceRecordSetsListCall{}
 | 
					var _ interfaces.ResourceRecordSetsListCall = &ResourceRecordSetsListCall{}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
type ResourceRecordSetsListCall struct {
 | 
					type ResourceRecordSetsListCall struct {
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -21,7 +21,7 @@ import (
 | 
				
			|||||||
	"k8s.io/kubernetes/federation/pkg/dnsprovider/providers/google/clouddns/internal/interfaces"
 | 
						"k8s.io/kubernetes/federation/pkg/dnsprovider/providers/google/clouddns/internal/interfaces"
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// Compile time check for interface adeherence
 | 
					// Compile time check for interface adherence
 | 
				
			||||||
var _ interfaces.ResourceRecordSetsListResponse = &ResourceRecordSetsListResponse{}
 | 
					var _ interfaces.ResourceRecordSetsListResponse = &ResourceRecordSetsListResponse{}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
type ResourceRecordSetsListResponse struct {
 | 
					type ResourceRecordSetsListResponse struct {
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -22,7 +22,7 @@ import (
 | 
				
			|||||||
	"k8s.io/kubernetes/federation/pkg/dnsprovider/rrstype"
 | 
						"k8s.io/kubernetes/federation/pkg/dnsprovider/rrstype"
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// Compile time check for interface adeherence
 | 
					// Compile time check for interface adherence
 | 
				
			||||||
var _ interfaces.ResourceRecordSetsService = &ResourceRecordSetsService{}
 | 
					var _ interfaces.ResourceRecordSetsService = &ResourceRecordSetsService{}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
type ResourceRecordSetsService struct {
 | 
					type ResourceRecordSetsService struct {
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -21,7 +21,7 @@ import (
 | 
				
			|||||||
	"k8s.io/kubernetes/federation/pkg/dnsprovider/providers/google/clouddns/internal/interfaces"
 | 
						"k8s.io/kubernetes/federation/pkg/dnsprovider/providers/google/clouddns/internal/interfaces"
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// Compile time check for interface adeherence
 | 
					// Compile time check for interface adherence
 | 
				
			||||||
var _ interfaces.Service = &Service{}
 | 
					var _ interfaces.Service = &Service{}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
type Service struct {
 | 
					type Service struct {
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -18,7 +18,7 @@ package stubs
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
import "k8s.io/kubernetes/federation/pkg/dnsprovider/providers/google/clouddns/internal/interfaces"
 | 
					import "k8s.io/kubernetes/federation/pkg/dnsprovider/providers/google/clouddns/internal/interfaces"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// Compile time check for interface adeherence
 | 
					// Compile time check for interface adherence
 | 
				
			||||||
var _ interfaces.Change = &Change{}
 | 
					var _ interfaces.Change = &Change{}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
type Change struct {
 | 
					type Change struct {
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -23,7 +23,7 @@ import (
 | 
				
			|||||||
	"k8s.io/kubernetes/federation/pkg/dnsprovider/providers/google/clouddns/internal/interfaces"
 | 
						"k8s.io/kubernetes/federation/pkg/dnsprovider/providers/google/clouddns/internal/interfaces"
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// Compile time check for interface adeherence
 | 
					// Compile time check for interface adherence
 | 
				
			||||||
var _ interfaces.ChangesCreateCall = ChangesCreateCall{}
 | 
					var _ interfaces.ChangesCreateCall = ChangesCreateCall{}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
type ChangesCreateCall struct {
 | 
					type ChangesCreateCall struct {
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -18,7 +18,7 @@ package stubs
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
import "k8s.io/kubernetes/federation/pkg/dnsprovider/providers/google/clouddns/internal/interfaces"
 | 
					import "k8s.io/kubernetes/federation/pkg/dnsprovider/providers/google/clouddns/internal/interfaces"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// Compile time check for interface adeherence
 | 
					// Compile time check for interface adherence
 | 
				
			||||||
var _ interfaces.ChangesService = &ChangesService{}
 | 
					var _ interfaces.ChangesService = &ChangesService{}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
type ChangesService struct {
 | 
					type ChangesService struct {
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -18,7 +18,7 @@ package stubs
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
import "k8s.io/kubernetes/federation/pkg/dnsprovider/providers/google/clouddns/internal/interfaces"
 | 
					import "k8s.io/kubernetes/federation/pkg/dnsprovider/providers/google/clouddns/internal/interfaces"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// Compile time check for interface adeherence
 | 
					// Compile time check for interface adherence
 | 
				
			||||||
var _ interfaces.ManagedZone = ManagedZone{}
 | 
					var _ interfaces.ManagedZone = ManagedZone{}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
type ManagedZone struct {
 | 
					type ManagedZone struct {
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -23,7 +23,7 @@ import (
 | 
				
			|||||||
	"k8s.io/kubernetes/federation/pkg/dnsprovider/providers/google/clouddns/internal/interfaces"
 | 
						"k8s.io/kubernetes/federation/pkg/dnsprovider/providers/google/clouddns/internal/interfaces"
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// Compile time check for interface adeherence
 | 
					// Compile time check for interface adherence
 | 
				
			||||||
var _ interfaces.ManagedZonesCreateCall = ManagedZonesCreateCall{}
 | 
					var _ interfaces.ManagedZonesCreateCall = ManagedZonesCreateCall{}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
type ManagedZonesCreateCall struct {
 | 
					type ManagedZonesCreateCall struct {
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -23,7 +23,7 @@ import (
 | 
				
			|||||||
	"k8s.io/kubernetes/federation/pkg/dnsprovider/providers/google/clouddns/internal/interfaces"
 | 
						"k8s.io/kubernetes/federation/pkg/dnsprovider/providers/google/clouddns/internal/interfaces"
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// Compile time check for interface adeherence
 | 
					// Compile time check for interface adherence
 | 
				
			||||||
var _ interfaces.ManagedZonesDeleteCall = ManagedZonesDeleteCall{}
 | 
					var _ interfaces.ManagedZonesDeleteCall = ManagedZonesDeleteCall{}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
type ManagedZonesDeleteCall struct {
 | 
					type ManagedZonesDeleteCall struct {
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -21,7 +21,7 @@ import (
 | 
				
			|||||||
	"k8s.io/kubernetes/federation/pkg/dnsprovider/providers/google/clouddns/internal/interfaces"
 | 
						"k8s.io/kubernetes/federation/pkg/dnsprovider/providers/google/clouddns/internal/interfaces"
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// Compile time check for interface adeherence
 | 
					// Compile time check for interface adherence
 | 
				
			||||||
var _ interfaces.ManagedZonesGetCall = ManagedZonesGetCall{}
 | 
					var _ interfaces.ManagedZonesGetCall = ManagedZonesGetCall{}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
type ManagedZonesGetCall struct {
 | 
					type ManagedZonesGetCall struct {
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -23,7 +23,7 @@ import (
 | 
				
			|||||||
	"k8s.io/kubernetes/federation/pkg/dnsprovider/providers/google/clouddns/internal/interfaces"
 | 
						"k8s.io/kubernetes/federation/pkg/dnsprovider/providers/google/clouddns/internal/interfaces"
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// Compile time check for interface adeherence
 | 
					// Compile time check for interface adherence
 | 
				
			||||||
var _ interfaces.ManagedZonesListCall = &ManagedZonesListCall{}
 | 
					var _ interfaces.ManagedZonesListCall = &ManagedZonesListCall{}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
type ManagedZonesListCall struct {
 | 
					type ManagedZonesListCall struct {
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -18,7 +18,7 @@ package stubs
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
import "k8s.io/kubernetes/federation/pkg/dnsprovider/providers/google/clouddns/internal/interfaces"
 | 
					import "k8s.io/kubernetes/federation/pkg/dnsprovider/providers/google/clouddns/internal/interfaces"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// Compile time check for interface adeherence
 | 
					// Compile time check for interface adherence
 | 
				
			||||||
var _ interfaces.ManagedZonesListResponse = &ManagedZonesListResponse{}
 | 
					var _ interfaces.ManagedZonesListResponse = &ManagedZonesListResponse{}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
type ManagedZonesListResponse struct{ ManagedZones_ []interfaces.ManagedZone }
 | 
					type ManagedZonesListResponse struct{ ManagedZones_ []interfaces.ManagedZone }
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -18,7 +18,7 @@ package stubs
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
import "k8s.io/kubernetes/federation/pkg/dnsprovider/providers/google/clouddns/internal/interfaces"
 | 
					import "k8s.io/kubernetes/federation/pkg/dnsprovider/providers/google/clouddns/internal/interfaces"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// Compile time check for interface adeherence
 | 
					// Compile time check for interface adherence
 | 
				
			||||||
var _ interfaces.ManagedZonesService = &ManagedZonesService{}
 | 
					var _ interfaces.ManagedZonesService = &ManagedZonesService{}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
type ManagedZonesService struct {
 | 
					type ManagedZonesService struct {
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -18,7 +18,7 @@ package stubs
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
import "k8s.io/kubernetes/federation/pkg/dnsprovider/providers/google/clouddns/internal/interfaces"
 | 
					import "k8s.io/kubernetes/federation/pkg/dnsprovider/providers/google/clouddns/internal/interfaces"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// Compile time check for interface adeherence
 | 
					// Compile time check for interface adherence
 | 
				
			||||||
var _ interfaces.ResourceRecordSet = ResourceRecordSet{}
 | 
					var _ interfaces.ResourceRecordSet = ResourceRecordSet{}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
type ResourceRecordSet struct {
 | 
					type ResourceRecordSet struct {
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -21,7 +21,7 @@ import (
 | 
				
			|||||||
	"k8s.io/kubernetes/federation/pkg/dnsprovider/providers/google/clouddns/internal/interfaces"
 | 
						"k8s.io/kubernetes/federation/pkg/dnsprovider/providers/google/clouddns/internal/interfaces"
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// Compile time check for interface adeherence
 | 
					// Compile time check for interface adherence
 | 
				
			||||||
var _ interfaces.ResourceRecordSetsListCall = &ResourceRecordSetsListCall{}
 | 
					var _ interfaces.ResourceRecordSetsListCall = &ResourceRecordSetsListCall{}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
type ResourceRecordSetsListCall struct {
 | 
					type ResourceRecordSetsListCall struct {
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -18,7 +18,7 @@ package stubs
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
import "k8s.io/kubernetes/federation/pkg/dnsprovider/providers/google/clouddns/internal/interfaces"
 | 
					import "k8s.io/kubernetes/federation/pkg/dnsprovider/providers/google/clouddns/internal/interfaces"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// Compile time check for interface adeherence
 | 
					// Compile time check for interface adherence
 | 
				
			||||||
var _ interfaces.ResourceRecordSetsListResponse = &ResourceRecordSetsListResponse{}
 | 
					var _ interfaces.ResourceRecordSetsListResponse = &ResourceRecordSetsListResponse{}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
type ResourceRecordSetsListResponse struct {
 | 
					type ResourceRecordSetsListResponse struct {
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -23,12 +23,12 @@ import (
 | 
				
			|||||||
	"k8s.io/kubernetes/federation/pkg/dnsprovider/rrstype"
 | 
						"k8s.io/kubernetes/federation/pkg/dnsprovider/rrstype"
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// Compile time check for interface adeherence
 | 
					// Compile time check for interface adherence
 | 
				
			||||||
var _ interfaces.ResourceRecordSetsService = &ResourceRecordSetsService{}
 | 
					var _ interfaces.ResourceRecordSetsService = &ResourceRecordSetsService{}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
type ResourceRecordSetsService struct {
 | 
					type ResourceRecordSetsService struct {
 | 
				
			||||||
	Service  *Service
 | 
						Service  *Service
 | 
				
			||||||
	ListCall interfaces.ResourceRecordSetsListCall // Use to override response if reqired for testing
 | 
						ListCall interfaces.ResourceRecordSetsListCall // Use to override response if required for testing
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func (s ResourceRecordSetsService) List(project string, managedZone string) interfaces.ResourceRecordSetsListCall {
 | 
					func (s ResourceRecordSetsService) List(project string, managedZone string) interfaces.ResourceRecordSetsListCall {
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -24,7 +24,7 @@ import (
 | 
				
			|||||||
	"k8s.io/kubernetes/federation/pkg/dnsprovider/rrstype"
 | 
						"k8s.io/kubernetes/federation/pkg/dnsprovider/rrstype"
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// Compile time check for interface adeherence
 | 
					// Compile time check for interface adherence
 | 
				
			||||||
var _ dnsprovider.ResourceRecordSet = ResourceRecordSet{}
 | 
					var _ dnsprovider.ResourceRecordSet = ResourceRecordSet{}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
type ResourceRecordSet struct {
 | 
					type ResourceRecordSet struct {
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -67,16 +67,16 @@ var (
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
type IngressController struct {
 | 
					type IngressController struct {
 | 
				
			||||||
	sync.Mutex // Lock used for leader election
 | 
						sync.Mutex // Lock used for leader election
 | 
				
			||||||
	// For triggering single ingress reconcilation. This is used when there is an
 | 
						// For triggering single ingress reconciliation. This is used when there is an
 | 
				
			||||||
	// add/update/delete operation on an ingress in either federated API server or
 | 
						// add/update/delete operation on an ingress in either federated API server or
 | 
				
			||||||
	// in some member of the federation.
 | 
						// in some member of the federation.
 | 
				
			||||||
	ingressDeliverer *util.DelayingDeliverer
 | 
						ingressDeliverer *util.DelayingDeliverer
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// For triggering reconcilation of cluster ingress controller configmap and
 | 
						// For triggering reconciliation of cluster ingress controller configmap and
 | 
				
			||||||
	// all ingresses. This is used when a new cluster becomes available.
 | 
						// all ingresses. This is used when a new cluster becomes available.
 | 
				
			||||||
	clusterDeliverer *util.DelayingDeliverer
 | 
						clusterDeliverer *util.DelayingDeliverer
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// For triggering reconcilation of cluster ingress controller configmap.
 | 
						// For triggering reconciliation of cluster ingress controller configmap.
 | 
				
			||||||
	// This is used when a configmap is updated in the cluster.
 | 
						// This is used when a configmap is updated in the cluster.
 | 
				
			||||||
	configMapDeliverer *util.DelayingDeliverer
 | 
						configMapDeliverer *util.DelayingDeliverer
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -208,7 +208,7 @@ func NewIngressController(client federationclientset.Interface) *IngressControll
 | 
				
			|||||||
				},
 | 
									},
 | 
				
			||||||
				&v1.ConfigMap{},
 | 
									&v1.ConfigMap{},
 | 
				
			||||||
				controller.NoResyncPeriodFunc(),
 | 
									controller.NoResyncPeriodFunc(),
 | 
				
			||||||
				// Trigger reconcilation whenever the ingress controller's configmap in a federated cluster is changed. In most cases it
 | 
									// Trigger reconciliation whenever the ingress controller's configmap in a federated cluster is changed. In most cases it
 | 
				
			||||||
				// would be just confirmation that the configmap for the ingress controller is correct.
 | 
									// would be just confirmation that the configmap for the ingress controller is correct.
 | 
				
			||||||
				util.NewTriggerOnAllChanges(
 | 
									util.NewTriggerOnAllChanges(
 | 
				
			||||||
					func(obj pkgruntime.Object) {
 | 
										func(obj pkgruntime.Object) {
 | 
				
			||||||
@@ -362,7 +362,7 @@ func (ic *IngressController) Run(stopChan <-chan struct{}) {
 | 
				
			|||||||
		ic.ingressFederatedInformer.Stop()
 | 
							ic.ingressFederatedInformer.Stop()
 | 
				
			||||||
		glog.Infof("Stopping ConfigMap Federated Informer")
 | 
							glog.Infof("Stopping ConfigMap Federated Informer")
 | 
				
			||||||
		ic.configMapFederatedInformer.Stop()
 | 
							ic.configMapFederatedInformer.Stop()
 | 
				
			||||||
		glog.Infof("Stopoing ingress deliverer")
 | 
							glog.Infof("Stopping ingress deliverer")
 | 
				
			||||||
		ic.ingressDeliverer.Stop()
 | 
							ic.ingressDeliverer.Stop()
 | 
				
			||||||
		glog.Infof("Stopping configmap deliverer")
 | 
							glog.Infof("Stopping configmap deliverer")
 | 
				
			||||||
		ic.configMapDeliverer.Stop()
 | 
							ic.configMapDeliverer.Stop()
 | 
				
			||||||
@@ -465,7 +465,7 @@ func (ic *IngressController) isSynced() bool {
 | 
				
			|||||||
	return true
 | 
						return true
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// The function triggers reconcilation of all federated ingresses.  clusterName is the name of the cluster that changed
 | 
					// The function triggers reconciliation of all federated ingresses.  clusterName is the name of the cluster that changed
 | 
				
			||||||
// but all ingresses in all clusters are reconciled
 | 
					// but all ingresses in all clusters are reconciled
 | 
				
			||||||
func (ic *IngressController) reconcileIngressesOnClusterChange(clusterName string) {
 | 
					func (ic *IngressController) reconcileIngressesOnClusterChange(clusterName string) {
 | 
				
			||||||
	glog.V(4).Infof("Reconciling ingresses on cluster change for cluster %q", clusterName)
 | 
						glog.V(4).Infof("Reconciling ingresses on cluster change for cluster %q", clusterName)
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -138,7 +138,7 @@ func TestIngressController(t *testing.T) {
 | 
				
			|||||||
	assert.NotNil(t, cluster)
 | 
						assert.NotNil(t, cluster)
 | 
				
			||||||
	assert.Equal(t, cluster.ObjectMeta.Annotations[uidAnnotationKey], cfg1.Data[uidKey])
 | 
						assert.Equal(t, cluster.ObjectMeta.Annotations[uidAnnotationKey], cfg1.Data[uidKey])
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	t.Logf("Checking that approproate finalizers are added")
 | 
						t.Logf("Checking that appropriate finalizers are added")
 | 
				
			||||||
	// There should be 2 updates to add both the finalizers.
 | 
						// There should be 2 updates to add both the finalizers.
 | 
				
			||||||
	updatedIngress := GetIngressFromChan(t, fedIngressUpdateChan)
 | 
						updatedIngress := GetIngressFromChan(t, fedIngressUpdateChan)
 | 
				
			||||||
	assert.True(t, ingressController.hasFinalizerFunc(updatedIngress, deletionhelper.FinalizerDeleteFromUnderlyingClusters))
 | 
						assert.True(t, ingressController.hasFinalizerFunc(updatedIngress, deletionhelper.FinalizerDeleteFromUnderlyingClusters))
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -95,7 +95,7 @@ func NewNamespaceController(client federationclientset.Interface) *NamespaceCont
 | 
				
			|||||||
		eventRecorder:         recorder,
 | 
							eventRecorder:         recorder,
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// Build delivereres for triggering reconciliations.
 | 
						// Build deliverers for triggering reconciliations.
 | 
				
			||||||
	nc.namespaceDeliverer = util.NewDelayingDeliverer()
 | 
						nc.namespaceDeliverer = util.NewDelayingDeliverer()
 | 
				
			||||||
	nc.clusterDeliverer = util.NewDelayingDeliverer()
 | 
						nc.clusterDeliverer = util.NewDelayingDeliverer()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -129,7 +129,7 @@ func NewNamespaceController(client federationclientset.Interface) *NamespaceCont
 | 
				
			|||||||
				&apiv1.Namespace{},
 | 
									&apiv1.Namespace{},
 | 
				
			||||||
				controller.NoResyncPeriodFunc(),
 | 
									controller.NoResyncPeriodFunc(),
 | 
				
			||||||
				// Trigger reconciliation whenever something in federated cluster is changed. In most cases it
 | 
									// Trigger reconciliation whenever something in federated cluster is changed. In most cases it
 | 
				
			||||||
				// would be just confirmation that some namespace opration succeeded.
 | 
									// would be just confirmation that some namespace operation succeeded.
 | 
				
			||||||
				util.NewTriggerOnMetaAndSpecChanges(
 | 
									util.NewTriggerOnMetaAndSpecChanges(
 | 
				
			||||||
					func(obj runtime.Object) { nc.deliverNamespaceObj(obj, nc.namespaceReviewDelay, false) },
 | 
										func(obj runtime.Object) { nc.deliverNamespaceObj(obj, nc.namespaceReviewDelay, false) },
 | 
				
			||||||
				))
 | 
									))
 | 
				
			||||||
@@ -142,7 +142,7 @@ func NewNamespaceController(client federationclientset.Interface) *NamespaceCont
 | 
				
			|||||||
		},
 | 
							},
 | 
				
			||||||
	)
 | 
						)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// Federated updeater along with Create/Update/Delete operations.
 | 
						// Federated updater along with Create/Update/Delete operations.
 | 
				
			||||||
	nc.federatedUpdater = util.NewFederatedUpdater(nc.namespaceFederatedInformer,
 | 
						nc.federatedUpdater = util.NewFederatedUpdater(nc.namespaceFederatedInformer,
 | 
				
			||||||
		func(client kubeclientset.Interface, obj runtime.Object) error {
 | 
							func(client kubeclientset.Interface, obj runtime.Object) error {
 | 
				
			||||||
			namespace := obj.(*apiv1.Namespace)
 | 
								namespace := obj.(*apiv1.Namespace)
 | 
				
			||||||
@@ -435,7 +435,7 @@ func (nc *NamespaceController) reconcileNamespace(namespace string) {
 | 
				
			|||||||
		return
 | 
							return
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// Evertyhing is in order but lets be double sure
 | 
						// Everything is in order but lets be double sure
 | 
				
			||||||
	nc.deliverNamespace(namespace, nc.namespaceReviewDelay, false)
 | 
						nc.deliverNamespace(namespace, nc.namespaceReviewDelay, false)
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -489,7 +489,7 @@ func (nc *NamespaceController) delete(namespace *apiv1.Namespace) error {
 | 
				
			|||||||
// Ensures that all resources in this namespace are deleted and then removes the kubernetes finalizer.
 | 
					// Ensures that all resources in this namespace are deleted and then removes the kubernetes finalizer.
 | 
				
			||||||
func (nc *NamespaceController) removeKubernetesFinalizer(namespace *apiv1.Namespace) (*apiv1.Namespace, error) {
 | 
					func (nc *NamespaceController) removeKubernetesFinalizer(namespace *apiv1.Namespace) (*apiv1.Namespace, error) {
 | 
				
			||||||
	// Right now there are just 7 types of objects: Deployments, DaemonSets, ReplicaSet, Secret, Ingress, Events and Service.
 | 
						// Right now there are just 7 types of objects: Deployments, DaemonSets, ReplicaSet, Secret, Ingress, Events and Service.
 | 
				
			||||||
	// Temporarly these items are simply deleted one by one to squeeze this code into 1.4.
 | 
						// Temporarily these items are simply deleted one by one to squeeze this code into 1.4.
 | 
				
			||||||
	// TODO: Make it generic (like in the regular namespace controller) and parallel.
 | 
						// TODO: Make it generic (like in the regular namespace controller) and parallel.
 | 
				
			||||||
	err := nc.federatedApiClient.Core().Services(namespace.Name).DeleteCollection(&apiv1.DeleteOptions{}, apiv1.ListOptions{})
 | 
						err := nc.federatedApiClient.Core().Services(namespace.Name).DeleteCollection(&apiv1.DeleteOptions{}, apiv1.ListOptions{})
 | 
				
			||||||
	if err != nil {
 | 
						if err != nil {
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -130,7 +130,7 @@ func NewSecretController(client federationclientset.Interface) *SecretController
 | 
				
			|||||||
				&apiv1.Secret{},
 | 
									&apiv1.Secret{},
 | 
				
			||||||
				controller.NoResyncPeriodFunc(),
 | 
									controller.NoResyncPeriodFunc(),
 | 
				
			||||||
				// Trigger reconciliation whenever something in federated cluster is changed. In most cases it
 | 
									// Trigger reconciliation whenever something in federated cluster is changed. In most cases it
 | 
				
			||||||
				// would be just confirmation that some secret opration succeeded.
 | 
									// would be just confirmation that some secret operation succeeded.
 | 
				
			||||||
				util.NewTriggerOnAllChanges(
 | 
									util.NewTriggerOnAllChanges(
 | 
				
			||||||
					func(obj pkgruntime.Object) {
 | 
										func(obj pkgruntime.Object) {
 | 
				
			||||||
						secretcontroller.deliverSecretObj(obj, secretcontroller.secretReviewDelay, false)
 | 
											secretcontroller.deliverSecretObj(obj, secretcontroller.secretReviewDelay, false)
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -176,7 +176,7 @@ func setClientFactory(informer util.FederatedInformer, informerClientFactory fun
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
func secretsEqual(a, b apiv1.Secret) bool {
 | 
					func secretsEqual(a, b apiv1.Secret) bool {
 | 
				
			||||||
	// Clear the SelfLink and ObjectMeta.Finalizers since they will be different
 | 
						// Clear the SelfLink and ObjectMeta.Finalizers since they will be different
 | 
				
			||||||
	// in resoure in federation control plane and resource in underlying cluster.
 | 
						// in resource in federation control plane and resource in underlying cluster.
 | 
				
			||||||
	a.SelfLink = ""
 | 
						a.SelfLink = ""
 | 
				
			||||||
	b.SelfLink = ""
 | 
						b.SelfLink = ""
 | 
				
			||||||
	a.ObjectMeta.Finalizers = []string{}
 | 
						a.ObjectMeta.Finalizers = []string{}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -145,7 +145,7 @@ func (cc *clusterClientCache) startClusterLW(cluster *v1beta1.Cluster, clusterNa
 | 
				
			|||||||
				DeleteFunc: func(obj interface{}) {
 | 
									DeleteFunc: func(obj interface{}) {
 | 
				
			||||||
					service, _ := obj.(*v1.Service)
 | 
										service, _ := obj.(*v1.Service)
 | 
				
			||||||
					cc.enqueueService(obj, clusterName)
 | 
										cc.enqueueService(obj, clusterName)
 | 
				
			||||||
					glog.V(2).Infof("Service %s/%s deletion found and enque to service store %s", service.Namespace, service.Name, clusterName)
 | 
										glog.V(2).Infof("Service %s/%s deletion found and enqueue to service store %s", service.Namespace, service.Name, clusterName)
 | 
				
			||||||
				},
 | 
									},
 | 
				
			||||||
			},
 | 
								},
 | 
				
			||||||
			cache.Indexers{cache.NamespaceIndex: cache.MetaNamespaceIndexFunc},
 | 
								cache.Indexers{cache.NamespaceIndex: cache.MetaNamespaceIndexFunc},
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -82,7 +82,7 @@ type cachedService struct {
 | 
				
			|||||||
	serviceStatusMap map[string]v1.LoadBalancerStatus
 | 
						serviceStatusMap map[string]v1.LoadBalancerStatus
 | 
				
			||||||
	// Ensures only one goroutine can operate on this service at any given time.
 | 
						// Ensures only one goroutine can operate on this service at any given time.
 | 
				
			||||||
	rwlock sync.Mutex
 | 
						rwlock sync.Mutex
 | 
				
			||||||
	// Controls error back-off for procceeding federation service to k8s clusters
 | 
						// Controls error back-off for proceeding federation service to k8s clusters
 | 
				
			||||||
	lastRetryDelay time.Duration
 | 
						lastRetryDelay time.Duration
 | 
				
			||||||
	// Controls error back-off for updating federation service back to federation apiserver
 | 
						// Controls error back-off for updating federation service back to federation apiserver
 | 
				
			||||||
	lastFedUpdateDelay time.Duration
 | 
						lastFedUpdateDelay time.Duration
 | 
				
			||||||
@@ -381,7 +381,7 @@ func (s *ServiceController) updateFederationService(key string, cachedService *c
 | 
				
			|||||||
		}(cache, clusterName)
 | 
							}(cache, clusterName)
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	if hasErr {
 | 
						if hasErr {
 | 
				
			||||||
		// detail error has been dumpped inside the loop
 | 
							// detail error has been dumped inside the loop
 | 
				
			||||||
		return fmt.Errorf("Service %s/%s was not successfully updated to all clusters", service.Namespace, service.Name), retryable
 | 
							return fmt.Errorf("Service %s/%s was not successfully updated to all clusters", service.Namespace, service.Name), retryable
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	return nil, !retryable
 | 
						return nil, !retryable
 | 
				
			||||||
@@ -880,7 +880,7 @@ func (s *ServiceController) processServiceUpdate(cachedService *cachedService, s
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
	cachedService.appliedState = service
 | 
						cachedService.appliedState = service
 | 
				
			||||||
	s.serviceCache.set(key, cachedService)
 | 
						s.serviceCache.set(key, cachedService)
 | 
				
			||||||
	glog.V(4).Infof("Successfully procceeded services %s", key)
 | 
						glog.V(4).Infof("Successfully proceeded services %s", key)
 | 
				
			||||||
	cachedService.resetRetryDelay()
 | 
						cachedService.resetRetryDelay()
 | 
				
			||||||
	return nil, doNotRetry
 | 
						return nil, doNotRetry
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -92,7 +92,7 @@ var KubeconfigGetterForCluster = func(c *federation_v1beta1.Cluster) clientcmd.K
 | 
				
			|||||||
	}
 | 
						}
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// KubeconfigGettterForSecret is used to get the kubeconfig from the given secret.
 | 
					// KubeconfigGetterForSecret is used to get the kubeconfig from the given secret.
 | 
				
			||||||
var KubeconfigGetterForSecret = func(secretName string) clientcmd.KubeconfigGetter {
 | 
					var KubeconfigGetterForSecret = func(secretName string) clientcmd.KubeconfigGetter {
 | 
				
			||||||
	return func() (*clientcmdapi.Config, error) {
 | 
						return func() (*clientcmdapi.Config, error) {
 | 
				
			||||||
		var data []byte
 | 
							var data []byte
 | 
				
			||||||
@@ -137,7 +137,7 @@ var KubeconfigGetterForSecret = func(secretName string) clientcmd.KubeconfigGett
 | 
				
			|||||||
	}
 | 
						}
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// Retruns Clientset for the given cluster.
 | 
					// Returns Clientset for the given cluster.
 | 
				
			||||||
func GetClientsetForCluster(cluster *federation_v1beta1.Cluster) (*fedclientset.Clientset, error) {
 | 
					func GetClientsetForCluster(cluster *federation_v1beta1.Cluster) (*fedclientset.Clientset, error) {
 | 
				
			||||||
	clusterConfig, err := BuildClusterConfig(cluster)
 | 
						clusterConfig, err := BuildClusterConfig(cluster)
 | 
				
			||||||
	if err != nil && clusterConfig != nil {
 | 
						if err != nil && clusterConfig != nil {
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -22,7 +22,7 @@ import (
 | 
				
			|||||||
	api_v1 "k8s.io/kubernetes/pkg/api/v1"
 | 
						api_v1 "k8s.io/kubernetes/pkg/api/v1"
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// Checks if cluster-independent, user provided data in two given ConfigMapss are eqaul. If in
 | 
					// Checks if cluster-independent, user provided data in two given ConfigMaps are equal. If in
 | 
				
			||||||
// the future the ConfigMap structure is expanded then any field that is not populated.
 | 
					// the future the ConfigMap structure is expanded then any field that is not populated.
 | 
				
			||||||
// by the api server should be included here.
 | 
					// by the api server should be included here.
 | 
				
			||||||
func ConfigMapEquivalent(s1, s2 *api_v1.ConfigMap) bool {
 | 
					func ConfigMapEquivalent(s1, s2 *api_v1.ConfigMap) bool {
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -24,7 +24,7 @@ import (
 | 
				
			|||||||
	deputils "k8s.io/kubernetes/pkg/controller/deployment/util"
 | 
						deputils "k8s.io/kubernetes/pkg/controller/deployment/util"
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// Checks if cluster-independent, user provided data in two given Deployment are eqaul.
 | 
					// Checks if cluster-independent, user provided data in two given Deployment are equal.
 | 
				
			||||||
// This function assumes that revisions are not kept in sync across the clusters.
 | 
					// This function assumes that revisions are not kept in sync across the clusters.
 | 
				
			||||||
func DeploymentEquivalent(a, b *extensions_v1.Deployment) bool {
 | 
					func DeploymentEquivalent(a, b *extensions_v1.Deployment) bool {
 | 
				
			||||||
	if a.Name != b.Name {
 | 
						if a.Name != b.Name {
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -23,7 +23,7 @@ import (
 | 
				
			|||||||
	"k8s.io/kubernetes/pkg/client/record"
 | 
						"k8s.io/kubernetes/pkg/client/record"
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// Implemnts k8s.io/kubernetes/pkg/client/record.EventSink.
 | 
					// Implements k8s.io/kubernetes/pkg/client/record.EventSink.
 | 
				
			||||||
type FederatedEventSink struct {
 | 
					type FederatedEventSink struct {
 | 
				
			||||||
	clientset fedclientset.Interface
 | 
						clientset fedclientset.Interface
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -79,7 +79,7 @@ type FederationView interface {
 | 
				
			|||||||
	// GetUnreadyClusters returns a list of all clusters that are not ready yet.
 | 
						// GetUnreadyClusters returns a list of all clusters that are not ready yet.
 | 
				
			||||||
	GetUnreadyClusters() ([]*federationapi.Cluster, error)
 | 
						GetUnreadyClusters() ([]*federationapi.Cluster, error)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// GetReadyClusers returns all clusters for which the sub-informers are run.
 | 
						// GetReadyClusters returns all clusters for which the sub-informers are run.
 | 
				
			||||||
	GetReadyClusters() ([]*federationapi.Cluster, error)
 | 
						GetReadyClusters() ([]*federationapi.Cluster, error)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// GetReadyCluster returns the cluster with the given name, if found.
 | 
						// GetReadyCluster returns the cluster with the given name, if found.
 | 
				
			||||||
@@ -337,7 +337,7 @@ func (f *federatedInformerImpl) GetUnreadyClusters() ([]*federationapi.Cluster,
 | 
				
			|||||||
	return result, nil
 | 
						return result, nil
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// GetReadyClusers returns all clusters for which the sub-informers are run.
 | 
					// GetReadyClusters returns all clusters for which the sub-informers are run.
 | 
				
			||||||
func (f *federatedInformerImpl) GetReadyClusters() ([]*federationapi.Cluster, error) {
 | 
					func (f *federatedInformerImpl) GetReadyClusters() ([]*federationapi.Cluster, error) {
 | 
				
			||||||
	f.Lock()
 | 
						f.Lock()
 | 
				
			||||||
	defer f.Unlock()
 | 
						defer f.Unlock()
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -58,12 +58,12 @@ func NewPlanner(preferences *fedapi.FederatedReplicaSetPreferences) *Planner {
 | 
				
			|||||||
// have all of the replicas assigned. In such case a cluster with higher weight has priority over
 | 
					// have all of the replicas assigned. In such case a cluster with higher weight has priority over
 | 
				
			||||||
// cluster with lower weight (or with lexicographically smaller name in case of draw).
 | 
					// cluster with lower weight (or with lexicographically smaller name in case of draw).
 | 
				
			||||||
// It can also use the current replica count and estimated capacity to provide better planning and
 | 
					// It can also use the current replica count and estimated capacity to provide better planning and
 | 
				
			||||||
// adhere to rebalance policy. To avoid prioritization of clusters with smaller lexiconographical names
 | 
					// adhere to rebalance policy. To avoid prioritization of clusters with smaller lexicographical names
 | 
				
			||||||
// a semi-random string (like replica set name) can be provided.
 | 
					// a semi-random string (like replica set name) can be provided.
 | 
				
			||||||
// Two maps are returned:
 | 
					// Two maps are returned:
 | 
				
			||||||
// * a map that contains information how many replicas will be possible to run in a cluster.
 | 
					// * a map that contains information how many replicas will be possible to run in a cluster.
 | 
				
			||||||
// * a map that contains information how many extra replicas would be nice to schedule in a cluster so,
 | 
					// * a map that contains information how many extra replicas would be nice to schedule in a cluster so,
 | 
				
			||||||
//   if by chance, they are scheudled we will be closer to the desired replicas layout.
 | 
					//   if by chance, they are scheduled we will be closer to the desired replicas layout.
 | 
				
			||||||
func (p *Planner) Plan(replicasToDistribute int64, availableClusters []string, currentReplicaCount map[string]int64,
 | 
					func (p *Planner) Plan(replicasToDistribute int64, availableClusters []string, currentReplicaCount map[string]int64,
 | 
				
			||||||
	estimatedCapacity map[string]int64, replicaSetKey string) (map[string]int64, map[string]int64) {
 | 
						estimatedCapacity map[string]int64, replicaSetKey string) (map[string]int64, map[string]int64) {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -140,7 +140,7 @@ func (p *Planner) Plan(replicasToDistribute int64, availableClusters []string, c
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
	modified := true
 | 
						modified := true
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// It is possible single pass of the loop is not enough to distribue all replicas among clusters due
 | 
						// It is possible single pass of the loop is not enough to distribute all replicas among clusters due
 | 
				
			||||||
	// to weight, max and rounding corner cases. In such case we iterate until either
 | 
						// to weight, max and rounding corner cases. In such case we iterate until either
 | 
				
			||||||
	// there is no replicas or no cluster gets any more replicas or the number
 | 
						// there is no replicas or no cluster gets any more replicas or the number
 | 
				
			||||||
	// of attempts is less than available cluster count. If there is no preallocated pods
 | 
						// of attempts is less than available cluster count. If there is no preallocated pods
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -22,7 +22,7 @@ import (
 | 
				
			|||||||
	api_v1 "k8s.io/kubernetes/pkg/api/v1"
 | 
						api_v1 "k8s.io/kubernetes/pkg/api/v1"
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// Checks if cluster-independent, user provided data in two given Secrets are eqaul. If in
 | 
					// Checks if cluster-independent, user provided data in two given Secrets are equal. If in
 | 
				
			||||||
// the future the Secret structure is expanded then any field that is not populated.
 | 
					// the future the Secret structure is expanded then any field that is not populated.
 | 
				
			||||||
// by the api server should be included here.
 | 
					// by the api server should be included here.
 | 
				
			||||||
func SecretEquivalent(s1, s2 api_v1.Secret) bool {
 | 
					func SecretEquivalent(s1, s2 api_v1.Secret) bool {
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -40,7 +40,7 @@ const (
 | 
				
			|||||||
	pushTimeout = 5 * time.Second
 | 
						pushTimeout = 5 * time.Second
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// A structure that distributes eventes to multiple watchers.
 | 
					// A structure that distributes events to multiple watchers.
 | 
				
			||||||
type WatcherDispatcher struct {
 | 
					type WatcherDispatcher struct {
 | 
				
			||||||
	sync.Mutex
 | 
						sync.Mutex
 | 
				
			||||||
	watchers       []*watch.RaceFreeFakeWatcher
 | 
						watchers       []*watch.RaceFreeFakeWatcher
 | 
				
			||||||
@@ -272,10 +272,10 @@ func CompareObjectMeta(a, b apiv1.ObjectMeta) error {
 | 
				
			|||||||
		return fmt.Errorf("Different name expected:%s observed:%s", a.Namespace, b.Namespace)
 | 
							return fmt.Errorf("Different name expected:%s observed:%s", a.Namespace, b.Namespace)
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	if !reflect.DeepEqual(a.Labels, b.Labels) && (len(a.Labels) != 0 || len(b.Labels) != 0) {
 | 
						if !reflect.DeepEqual(a.Labels, b.Labels) && (len(a.Labels) != 0 || len(b.Labels) != 0) {
 | 
				
			||||||
		return fmt.Errorf("Labels are different expected:%v observerd:%v", a.Labels, b.Labels)
 | 
							return fmt.Errorf("Labels are different expected:%v observed:%v", a.Labels, b.Labels)
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	if !reflect.DeepEqual(a.Annotations, b.Annotations) && (len(a.Annotations) != 0 || len(b.Annotations) != 0) {
 | 
						if !reflect.DeepEqual(a.Annotations, b.Annotations) && (len(a.Annotations) != 0 || len(b.Annotations) != 0) {
 | 
				
			||||||
		return fmt.Errorf("Annotations are different expected:%v observerd:%v", a.Annotations, b.Annotations)
 | 
							return fmt.Errorf("Annotations are different expected:%v observed:%v", a.Annotations, b.Annotations)
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	return nil
 | 
						return nil
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -199,7 +199,7 @@ func initFederation(cmdOut io.Writer, config util.AdminConfig, cmd *cobra.Comman
 | 
				
			|||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// Since only one IP address can be specified as advertise address,
 | 
						// Since only one IP address can be specified as advertise address,
 | 
				
			||||||
	// we arbitrarily pick the first availabe IP address
 | 
						// we arbitrarily pick the first available IP address
 | 
				
			||||||
	advertiseAddress := ""
 | 
						advertiseAddress := ""
 | 
				
			||||||
	if len(ips) > 0 {
 | 
						if len(ips) > 0 {
 | 
				
			||||||
		advertiseAddress = ips[0]
 | 
							advertiseAddress = ips[0]
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -115,7 +115,7 @@ func CreateKubeconfigSecret(clientset *client.Clientset, kubeconfig *clientcmdap
 | 
				
			|||||||
		return nil, err
 | 
							return nil, err
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// Build the secret object with the minified and flattened
 | 
						// Build the secret object with the minimized and flattened
 | 
				
			||||||
	// kubeconfig content.
 | 
						// kubeconfig content.
 | 
				
			||||||
	secret := &api.Secret{
 | 
						secret := &api.Secret{
 | 
				
			||||||
		ObjectMeta: api.ObjectMeta{
 | 
							ObjectMeta: api.ObjectMeta{
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user