mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-07-27 21:47:07 +00:00
Merge pull request #39061 from xulike666/fix-typo-assistant
Automatic merge from submit-queue Fix typo for federation/* **What this PR does / why we need it**: Increase code readability for this new member in v1.5 **Which issue this PR fixes** *(optional, in `fixes #<issue number>(, fixes #<issue_number>, ...)` format, will close that issue when PR gets merged)*: **Special notes for your reviewer**: Could we develop a typo-fix bot along with a k8s terminology dictionary ? **Release note**: ```release-note ```
This commit is contained in:
commit
45d2449f13
@ -71,7 +71,7 @@ function setClusterInfo() {
|
|||||||
# Sanity check on $CNI_PLUGIN_CONF and $CNI_PLUGIN_EXES
|
# Sanity check on $CNI_PLUGIN_CONF and $CNI_PLUGIN_EXES
|
||||||
function check-CNI-config() {
|
function check-CNI-config() {
|
||||||
if [ -z "$CNI_PLUGIN_CONF" ] && [ -n "$CNI_PLUGIN_EXES" ]; then
|
if [ -z "$CNI_PLUGIN_CONF" ] && [ -n "$CNI_PLUGIN_EXES" ]; then
|
||||||
echo "Warning: CNI_PLUGIN_CONF is emtpy but CNI_PLUGIN_EXES is not (it is $CNI_PLUGIN_EXES); Flannel will be used" >& 2
|
echo "Warning: CNI_PLUGIN_CONF is empty but CNI_PLUGIN_EXES is not (it is $CNI_PLUGIN_EXES); Flannel will be used" >& 2
|
||||||
elif [ -n "$CNI_PLUGIN_CONF" ] && [ -z "$CNI_PLUGIN_EXES" ]; then
|
elif [ -n "$CNI_PLUGIN_CONF" ] && [ -z "$CNI_PLUGIN_EXES" ]; then
|
||||||
echo "Warning: CNI_PLUGIN_EXES is empty but CNI_PLUGIN_CONF is not (it is $CNI_PLUGIN_CONF); Flannel will be used" & 2
|
echo "Warning: CNI_PLUGIN_EXES is empty but CNI_PLUGIN_CONF is not (it is $CNI_PLUGIN_CONF); Flannel will be used" & 2
|
||||||
elif [ -n "$CNI_PLUGIN_CONF" ] && [ -n "$CNI_PLUGIN_EXES" ]; then
|
elif [ -n "$CNI_PLUGIN_CONF" ] && [ -n "$CNI_PLUGIN_EXES" ]; then
|
||||||
@ -545,7 +545,7 @@ function provision-node() {
|
|||||||
BASH_DEBUG_FLAGS="set -x"
|
BASH_DEBUG_FLAGS="set -x"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# remote login to node and configue k8s node
|
# remote login to node and configure k8s node
|
||||||
ssh $SSH_OPTS -t "$1" "
|
ssh $SSH_OPTS -t "$1" "
|
||||||
set +e
|
set +e
|
||||||
${BASH_DEBUG_FLAGS}
|
${BASH_DEBUG_FLAGS}
|
||||||
@ -638,7 +638,7 @@ function provision-masterandnode() {
|
|||||||
BASH_DEBUG_FLAGS="set -x"
|
BASH_DEBUG_FLAGS="set -x"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# remote login to the master/node and configue k8s
|
# remote login to the master/node and configure k8s
|
||||||
ssh $SSH_OPTS -t "$MASTER" "
|
ssh $SSH_OPTS -t "$MASTER" "
|
||||||
set +e
|
set +e
|
||||||
${BASH_DEBUG_FLAGS}
|
${BASH_DEBUG_FLAGS}
|
||||||
|
@ -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)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -11350,7 +11350,7 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"v1beta1.ClusterStatus": {
|
"v1beta1.ClusterStatus": {
|
||||||
"description": "ClusterStatus is information about the current status of a cluster updated by cluster controller peridocally.",
|
"description": "ClusterStatus is information about the current status of a cluster updated by cluster controller periodically.",
|
||||||
"properties": {
|
"properties": {
|
||||||
"conditions": {
|
"conditions": {
|
||||||
"description": "Conditions is an array of current cluster conditions.",
|
"description": "Conditions is an array of current cluster conditions.",
|
||||||
|
@ -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]
|
||||||
|
@ -9782,7 +9782,7 @@ var OpenAPIDefinitions *common.OpenAPIDefinitions = &common.OpenAPIDefinitions{
|
|||||||
"v1beta1.ClusterStatus": {
|
"v1beta1.ClusterStatus": {
|
||||||
Schema: spec.Schema{
|
Schema: spec.Schema{
|
||||||
SchemaProps: spec.SchemaProps{
|
SchemaProps: spec.SchemaProps{
|
||||||
Description: "ClusterStatus is information about the current status of a cluster updated by cluster controller peridocally.",
|
Description: "ClusterStatus is information about the current status of a cluster updated by cluster controller periodically.",
|
||||||
Properties: map[string]spec.Schema{
|
Properties: map[string]spec.Schema{
|
||||||
"conditions": {
|
"conditions": {
|
||||||
SchemaProps: spec.SchemaProps{
|
SchemaProps: spec.SchemaProps{
|
||||||
|
Loading…
Reference in New Issue
Block a user