ServiceExternalTrafficPolicyType: s/Type//

Rename ServiceExternalTrafficPolicyType => ServiceExternalTrafficPolicy
This commit is contained in:
Tim Hockin 2021-11-09 23:25:43 -08:00
parent 23c65ec590
commit d0e2b06850
No known key found for this signature in database
39 changed files with 394 additions and 385 deletions

View File

@ -72,7 +72,7 @@ func SetTypeClusterIP(svc *api.Service) {
// SetTypeNodePort sets the service type to NodePort and clears other fields. // SetTypeNodePort sets the service type to NodePort and clears other fields.
func SetTypeNodePort(svc *api.Service) { func SetTypeNodePort(svc *api.Service) {
svc.Spec.Type = api.ServiceTypeNodePort svc.Spec.Type = api.ServiceTypeNodePort
svc.Spec.ExternalTrafficPolicy = api.ServiceExternalTrafficPolicyTypeCluster svc.Spec.ExternalTrafficPolicy = api.ServiceExternalTrafficPolicyCluster
svc.Spec.ExternalName = "" svc.Spec.ExternalName = ""
svc.Spec.AllocateLoadBalancerNodePorts = nil svc.Spec.AllocateLoadBalancerNodePorts = nil
internalTrafficPolicy := api.ServiceInternalTrafficPolicyCluster internalTrafficPolicy := api.ServiceInternalTrafficPolicyCluster
@ -82,7 +82,7 @@ func SetTypeNodePort(svc *api.Service) {
// SetTypeLoadBalancer sets the service type to LoadBalancer and clears other fields. // SetTypeLoadBalancer sets the service type to LoadBalancer and clears other fields.
func SetTypeLoadBalancer(svc *api.Service) { func SetTypeLoadBalancer(svc *api.Service) {
svc.Spec.Type = api.ServiceTypeLoadBalancer svc.Spec.Type = api.ServiceTypeLoadBalancer
svc.Spec.ExternalTrafficPolicy = api.ServiceExternalTrafficPolicyTypeCluster svc.Spec.ExternalTrafficPolicy = api.ServiceExternalTrafficPolicyCluster
svc.Spec.AllocateLoadBalancerNodePorts = utilpointer.BoolPtr(true) svc.Spec.AllocateLoadBalancerNodePorts = utilpointer.BoolPtr(true)
svc.Spec.ExternalName = "" svc.Spec.ExternalName = ""
internalTrafficPolicy := api.ServiceInternalTrafficPolicyCluster internalTrafficPolicy := api.ServiceInternalTrafficPolicyCluster
@ -184,7 +184,7 @@ func SetInternalTrafficPolicy(policy api.ServiceInternalTrafficPolicyType) Tweak
} }
// SetExternalTrafficPolicy sets the externalTrafficPolicy field for a Service. // SetExternalTrafficPolicy sets the externalTrafficPolicy field for a Service.
func SetExternalTrafficPolicy(policy api.ServiceExternalTrafficPolicyType) Tweak { func SetExternalTrafficPolicy(policy api.ServiceExternalTrafficPolicy) Tweak {
return func(svc *api.Service) { return func(svc *api.Service) {
svc.Spec.ExternalTrafficPolicy = policy svc.Spec.ExternalTrafficPolicy = policy
} }

View File

@ -74,7 +74,7 @@ func RequestsOnlyLocalTraffic(service *api.Service) bool {
return false return false
} }
return service.Spec.ExternalTrafficPolicy == api.ServiceExternalTrafficPolicyTypeLocal return service.Spec.ExternalTrafficPolicy == api.ServiceExternalTrafficPolicyLocal
} }
// NeedsHealthCheck checks if service needs health check. // NeedsHealthCheck checks if service needs health check.

View File

@ -152,25 +152,25 @@ func TestRequestsOnlyLocalTraffic(t *testing.T) {
checkRequestsOnlyLocalTraffic(false, &api.Service{ checkRequestsOnlyLocalTraffic(false, &api.Service{
Spec: api.ServiceSpec{ Spec: api.ServiceSpec{
Type: api.ServiceTypeNodePort, Type: api.ServiceTypeNodePort,
ExternalTrafficPolicy: api.ServiceExternalTrafficPolicyTypeCluster, ExternalTrafficPolicy: api.ServiceExternalTrafficPolicyCluster,
}, },
}) })
checkRequestsOnlyLocalTraffic(true, &api.Service{ checkRequestsOnlyLocalTraffic(true, &api.Service{
Spec: api.ServiceSpec{ Spec: api.ServiceSpec{
Type: api.ServiceTypeNodePort, Type: api.ServiceTypeNodePort,
ExternalTrafficPolicy: api.ServiceExternalTrafficPolicyTypeLocal, ExternalTrafficPolicy: api.ServiceExternalTrafficPolicyLocal,
}, },
}) })
checkRequestsOnlyLocalTraffic(false, &api.Service{ checkRequestsOnlyLocalTraffic(false, &api.Service{
Spec: api.ServiceSpec{ Spec: api.ServiceSpec{
Type: api.ServiceTypeLoadBalancer, Type: api.ServiceTypeLoadBalancer,
ExternalTrafficPolicy: api.ServiceExternalTrafficPolicyTypeCluster, ExternalTrafficPolicy: api.ServiceExternalTrafficPolicyCluster,
}, },
}) })
checkRequestsOnlyLocalTraffic(true, &api.Service{ checkRequestsOnlyLocalTraffic(true, &api.Service{
Spec: api.ServiceSpec{ Spec: api.ServiceSpec{
Type: api.ServiceTypeLoadBalancer, Type: api.ServiceTypeLoadBalancer,
ExternalTrafficPolicy: api.ServiceExternalTrafficPolicyTypeLocal, ExternalTrafficPolicy: api.ServiceExternalTrafficPolicyLocal,
}, },
}) })
} }
@ -192,25 +192,25 @@ func TestNeedsHealthCheck(t *testing.T) {
checkNeedsHealthCheck(false, &api.Service{ checkNeedsHealthCheck(false, &api.Service{
Spec: api.ServiceSpec{ Spec: api.ServiceSpec{
Type: api.ServiceTypeNodePort, Type: api.ServiceTypeNodePort,
ExternalTrafficPolicy: api.ServiceExternalTrafficPolicyTypeCluster, ExternalTrafficPolicy: api.ServiceExternalTrafficPolicyCluster,
}, },
}) })
checkNeedsHealthCheck(false, &api.Service{ checkNeedsHealthCheck(false, &api.Service{
Spec: api.ServiceSpec{ Spec: api.ServiceSpec{
Type: api.ServiceTypeNodePort, Type: api.ServiceTypeNodePort,
ExternalTrafficPolicy: api.ServiceExternalTrafficPolicyTypeLocal, ExternalTrafficPolicy: api.ServiceExternalTrafficPolicyLocal,
}, },
}) })
checkNeedsHealthCheck(false, &api.Service{ checkNeedsHealthCheck(false, &api.Service{
Spec: api.ServiceSpec{ Spec: api.ServiceSpec{
Type: api.ServiceTypeLoadBalancer, Type: api.ServiceTypeLoadBalancer,
ExternalTrafficPolicy: api.ServiceExternalTrafficPolicyTypeCluster, ExternalTrafficPolicy: api.ServiceExternalTrafficPolicyCluster,
}, },
}) })
checkNeedsHealthCheck(true, &api.Service{ checkNeedsHealthCheck(true, &api.Service{
Spec: api.ServiceSpec{ Spec: api.ServiceSpec{
Type: api.ServiceTypeLoadBalancer, Type: api.ServiceTypeLoadBalancer,
ExternalTrafficPolicy: api.ServiceExternalTrafficPolicyTypeLocal, ExternalTrafficPolicy: api.ServiceExternalTrafficPolicyLocal,
}, },
}) })
} }

View File

@ -73,7 +73,7 @@ func ExternalPolicyLocal(service *v1.Service) bool {
service.Spec.Type != v1.ServiceTypeNodePort { service.Spec.Type != v1.ServiceTypeNodePort {
return false return false
} }
return service.Spec.ExternalTrafficPolicy == v1.ServiceExternalTrafficPolicyTypeLocal return service.Spec.ExternalTrafficPolicy == v1.ServiceExternalTrafficPolicyLocal
} }
// InternalPolicyLocal checks if service has ITP = Local. // InternalPolicyLocal checks if service has ITP = Local.

View File

@ -152,25 +152,25 @@ func TestExternalPolicyLocal(t *testing.T) {
checkExternalPolicyLocal(false, &v1.Service{ checkExternalPolicyLocal(false, &v1.Service{
Spec: v1.ServiceSpec{ Spec: v1.ServiceSpec{
Type: v1.ServiceTypeNodePort, Type: v1.ServiceTypeNodePort,
ExternalTrafficPolicy: v1.ServiceExternalTrafficPolicyTypeCluster, ExternalTrafficPolicy: v1.ServiceExternalTrafficPolicyCluster,
}, },
}) })
checkExternalPolicyLocal(true, &v1.Service{ checkExternalPolicyLocal(true, &v1.Service{
Spec: v1.ServiceSpec{ Spec: v1.ServiceSpec{
Type: v1.ServiceTypeNodePort, Type: v1.ServiceTypeNodePort,
ExternalTrafficPolicy: v1.ServiceExternalTrafficPolicyTypeLocal, ExternalTrafficPolicy: v1.ServiceExternalTrafficPolicyLocal,
}, },
}) })
checkExternalPolicyLocal(false, &v1.Service{ checkExternalPolicyLocal(false, &v1.Service{
Spec: v1.ServiceSpec{ Spec: v1.ServiceSpec{
Type: v1.ServiceTypeLoadBalancer, Type: v1.ServiceTypeLoadBalancer,
ExternalTrafficPolicy: v1.ServiceExternalTrafficPolicyTypeCluster, ExternalTrafficPolicy: v1.ServiceExternalTrafficPolicyCluster,
}, },
}) })
checkExternalPolicyLocal(true, &v1.Service{ checkExternalPolicyLocal(true, &v1.Service{
Spec: v1.ServiceSpec{ Spec: v1.ServiceSpec{
Type: v1.ServiceTypeLoadBalancer, Type: v1.ServiceTypeLoadBalancer,
ExternalTrafficPolicy: v1.ServiceExternalTrafficPolicyTypeLocal, ExternalTrafficPolicy: v1.ServiceExternalTrafficPolicyLocal,
}, },
}) })
} }
@ -192,25 +192,25 @@ func TestNeedsHealthCheck(t *testing.T) {
checkNeedsHealthCheck(false, &v1.Service{ checkNeedsHealthCheck(false, &v1.Service{
Spec: v1.ServiceSpec{ Spec: v1.ServiceSpec{
Type: v1.ServiceTypeNodePort, Type: v1.ServiceTypeNodePort,
ExternalTrafficPolicy: v1.ServiceExternalTrafficPolicyTypeCluster, ExternalTrafficPolicy: v1.ServiceExternalTrafficPolicyCluster,
}, },
}) })
checkNeedsHealthCheck(false, &v1.Service{ checkNeedsHealthCheck(false, &v1.Service{
Spec: v1.ServiceSpec{ Spec: v1.ServiceSpec{
Type: v1.ServiceTypeNodePort, Type: v1.ServiceTypeNodePort,
ExternalTrafficPolicy: v1.ServiceExternalTrafficPolicyTypeLocal, ExternalTrafficPolicy: v1.ServiceExternalTrafficPolicyLocal,
}, },
}) })
checkNeedsHealthCheck(false, &v1.Service{ checkNeedsHealthCheck(false, &v1.Service{
Spec: v1.ServiceSpec{ Spec: v1.ServiceSpec{
Type: v1.ServiceTypeLoadBalancer, Type: v1.ServiceTypeLoadBalancer,
ExternalTrafficPolicy: v1.ServiceExternalTrafficPolicyTypeCluster, ExternalTrafficPolicy: v1.ServiceExternalTrafficPolicyCluster,
}, },
}) })
checkNeedsHealthCheck(true, &v1.Service{ checkNeedsHealthCheck(true, &v1.Service{
Spec: v1.ServiceSpec{ Spec: v1.ServiceSpec{
Type: v1.ServiceTypeLoadBalancer, Type: v1.ServiceTypeLoadBalancer,
ExternalTrafficPolicy: v1.ServiceExternalTrafficPolicyTypeLocal, ExternalTrafficPolicy: v1.ServiceExternalTrafficPolicyLocal,
}, },
}) })
} }

View File

@ -293,8 +293,8 @@ var Funcs = func(codecs runtimeserializer.CodecFactory) []interface{} {
selected := types[c.Rand.Intn(len(types))] selected := types[c.Rand.Intn(len(types))]
*p = selected *p = selected
}, },
func(p *core.ServiceExternalTrafficPolicyType, c fuzz.Continue) { func(p *core.ServiceExternalTrafficPolicy, c fuzz.Continue) {
types := []core.ServiceExternalTrafficPolicyType{core.ServiceExternalTrafficPolicyTypeCluster, core.ServiceExternalTrafficPolicyTypeLocal} types := []core.ServiceExternalTrafficPolicy{core.ServiceExternalTrafficPolicyCluster, core.ServiceExternalTrafficPolicyLocal}
*p = types[c.Rand.Intn(len(types))] *p = types[c.Rand.Intn(len(types))]
}, },
func(p *core.ServiceInternalTrafficPolicyType, c fuzz.Continue) { func(p *core.ServiceInternalTrafficPolicyType, c fuzz.Continue) {

View File

@ -3795,19 +3795,19 @@ const (
ServiceInternalTrafficPolicyLocal ServiceInternalTrafficPolicyType = "Local" ServiceInternalTrafficPolicyLocal ServiceInternalTrafficPolicyType = "Local"
) )
// ServiceExternalTrafficPolicyType describes the endpoint-selection policy for // ServiceExternalTrafficPolicy describes the endpoint-selection policy for
// traffic to external service entrypoints (NodePorts, ExternalIPs, and // traffic to external service entrypoints (NodePorts, ExternalIPs, and
// LoadBalancer IPs). // LoadBalancer IPs).
type ServiceExternalTrafficPolicyType string type ServiceExternalTrafficPolicy string
const ( const (
// ServiceExternalTrafficPolicyTypeCluster routes traffic to all endpoints. // ServiceExternalTrafficPolicyCluster routes traffic to all endpoints.
ServiceExternalTrafficPolicyTypeCluster ServiceExternalTrafficPolicyType = "Cluster" ServiceExternalTrafficPolicyCluster ServiceExternalTrafficPolicy = "Cluster"
// ServiceExternalTrafficPolicyTypeLocal preserves the source IP of the traffic by // ServiceExternalTrafficPolicyLocal preserves the source IP of the traffic by
// routing only to endpoints on the same node as the traffic was received on // routing only to endpoints on the same node as the traffic was received on
// (dropping the traffic if there are no local endpoints). // (dropping the traffic if there are no local endpoints).
ServiceExternalTrafficPolicyTypeLocal ServiceExternalTrafficPolicyType = "Local" ServiceExternalTrafficPolicyLocal ServiceExternalTrafficPolicy = "Local"
) )
// These are the valid conditions of a service. // These are the valid conditions of a service.
@ -4013,7 +4013,7 @@ type ServiceSpec struct {
// a NodePort from within the cluster may need to take traffic policy into account // a NodePort from within the cluster may need to take traffic policy into account
// when picking a node. // when picking a node.
// +optional // +optional
ExternalTrafficPolicy ServiceExternalTrafficPolicyType ExternalTrafficPolicy ServiceExternalTrafficPolicy
// healthCheckNodePort specifies the healthcheck nodePort for the service. // healthCheckNodePort specifies the healthcheck nodePort for the service.
// If not specified, HealthCheckNodePort is created by the service api // If not specified, HealthCheckNodePort is created by the service api

View File

@ -125,7 +125,7 @@ func SetDefaults_Service(obj *v1.Service) {
if (obj.Spec.Type == v1.ServiceTypeNodePort || if (obj.Spec.Type == v1.ServiceTypeNodePort ||
obj.Spec.Type == v1.ServiceTypeLoadBalancer) && obj.Spec.Type == v1.ServiceTypeLoadBalancer) &&
obj.Spec.ExternalTrafficPolicy == "" { obj.Spec.ExternalTrafficPolicy == "" {
obj.Spec.ExternalTrafficPolicy = v1.ServiceExternalTrafficPolicyTypeCluster obj.Spec.ExternalTrafficPolicy = v1.ServiceExternalTrafficPolicyCluster
} }
if obj.Spec.InternalTrafficPolicy == nil { if obj.Spec.InternalTrafficPolicy == nil {

View File

@ -1431,15 +1431,15 @@ func TestSetDefaultServiceExternalTraffic(t *testing.T) {
in = &v1.Service{Spec: v1.ServiceSpec{Type: v1.ServiceTypeNodePort}} in = &v1.Service{Spec: v1.ServiceSpec{Type: v1.ServiceTypeNodePort}}
obj = roundTrip(t, runtime.Object(in)) obj = roundTrip(t, runtime.Object(in))
out = obj.(*v1.Service) out = obj.(*v1.Service)
if out.Spec.ExternalTrafficPolicy != v1.ServiceExternalTrafficPolicyTypeCluster { if out.Spec.ExternalTrafficPolicy != v1.ServiceExternalTrafficPolicyCluster {
t.Errorf("Expected ExternalTrafficPolicy to be %v, got %v", v1.ServiceExternalTrafficPolicyTypeCluster, out.Spec.ExternalTrafficPolicy) t.Errorf("Expected ExternalTrafficPolicy to be %v, got %v", v1.ServiceExternalTrafficPolicyCluster, out.Spec.ExternalTrafficPolicy)
} }
in = &v1.Service{Spec: v1.ServiceSpec{Type: v1.ServiceTypeLoadBalancer}} in = &v1.Service{Spec: v1.ServiceSpec{Type: v1.ServiceTypeLoadBalancer}}
obj = roundTrip(t, runtime.Object(in)) obj = roundTrip(t, runtime.Object(in))
out = obj.(*v1.Service) out = obj.(*v1.Service)
if out.Spec.ExternalTrafficPolicy != v1.ServiceExternalTrafficPolicyTypeCluster { if out.Spec.ExternalTrafficPolicy != v1.ServiceExternalTrafficPolicyCluster {
t.Errorf("Expected ExternalTrafficPolicy to be %v, got %v", v1.ServiceExternalTrafficPolicyTypeCluster, out.Spec.ExternalTrafficPolicy) t.Errorf("Expected ExternalTrafficPolicy to be %v, got %v", v1.ServiceExternalTrafficPolicyCluster, out.Spec.ExternalTrafficPolicy)
} }
} }

View File

@ -7850,7 +7850,7 @@ func autoConvert_v1_ServiceSpec_To_core_ServiceSpec(in *v1.ServiceSpec, out *cor
out.LoadBalancerIP = in.LoadBalancerIP out.LoadBalancerIP = in.LoadBalancerIP
out.LoadBalancerSourceRanges = *(*[]string)(unsafe.Pointer(&in.LoadBalancerSourceRanges)) out.LoadBalancerSourceRanges = *(*[]string)(unsafe.Pointer(&in.LoadBalancerSourceRanges))
out.ExternalName = in.ExternalName out.ExternalName = in.ExternalName
out.ExternalTrafficPolicy = core.ServiceExternalTrafficPolicyType(in.ExternalTrafficPolicy) out.ExternalTrafficPolicy = core.ServiceExternalTrafficPolicy(in.ExternalTrafficPolicy)
out.HealthCheckNodePort = in.HealthCheckNodePort out.HealthCheckNodePort = in.HealthCheckNodePort
out.PublishNotReadyAddresses = in.PublishNotReadyAddresses out.PublishNotReadyAddresses = in.PublishNotReadyAddresses
out.SessionAffinityConfig = (*core.SessionAffinityConfig)(unsafe.Pointer(in.SessionAffinityConfig)) out.SessionAffinityConfig = (*core.SessionAffinityConfig)(unsafe.Pointer(in.SessionAffinityConfig))
@ -7881,7 +7881,7 @@ func autoConvert_core_ServiceSpec_To_v1_ServiceSpec(in *core.ServiceSpec, out *v
out.SessionAffinity = v1.ServiceAffinity(in.SessionAffinity) out.SessionAffinity = v1.ServiceAffinity(in.SessionAffinity)
out.SessionAffinityConfig = (*v1.SessionAffinityConfig)(unsafe.Pointer(in.SessionAffinityConfig)) out.SessionAffinityConfig = (*v1.SessionAffinityConfig)(unsafe.Pointer(in.SessionAffinityConfig))
out.LoadBalancerSourceRanges = *(*[]string)(unsafe.Pointer(&in.LoadBalancerSourceRanges)) out.LoadBalancerSourceRanges = *(*[]string)(unsafe.Pointer(&in.LoadBalancerSourceRanges))
out.ExternalTrafficPolicy = v1.ServiceExternalTrafficPolicyType(in.ExternalTrafficPolicy) out.ExternalTrafficPolicy = v1.ServiceExternalTrafficPolicy(in.ExternalTrafficPolicy)
out.HealthCheckNodePort = in.HealthCheckNodePort out.HealthCheckNodePort = in.HealthCheckNodePort
out.PublishNotReadyAddresses = in.PublishNotReadyAddresses out.PublishNotReadyAddresses = in.PublishNotReadyAddresses
out.AllocateLoadBalancerNodePorts = (*bool)(unsafe.Pointer(in.AllocateLoadBalancerNodePorts)) out.AllocateLoadBalancerNodePorts = (*bool)(unsafe.Pointer(in.AllocateLoadBalancerNodePorts))

View File

@ -4744,7 +4744,7 @@ var supportedSessionAffinityType = sets.NewString(string(core.ServiceAffinityCli
var supportedServiceType = sets.NewString(string(core.ServiceTypeClusterIP), string(core.ServiceTypeNodePort), var supportedServiceType = sets.NewString(string(core.ServiceTypeClusterIP), string(core.ServiceTypeNodePort),
string(core.ServiceTypeLoadBalancer), string(core.ServiceTypeExternalName)) string(core.ServiceTypeLoadBalancer), string(core.ServiceTypeExternalName))
var supportedServiceInternalTrafficPolicy = sets.NewString(string(core.ServiceInternalTrafficPolicyCluster), string(core.ServiceExternalTrafficPolicyTypeLocal)) var supportedServiceInternalTrafficPolicy = sets.NewString(string(core.ServiceInternalTrafficPolicyCluster), string(core.ServiceExternalTrafficPolicyLocal))
var supportedServiceIPFamily = sets.NewString(string(core.IPv4Protocol), string(core.IPv6Protocol)) var supportedServiceIPFamily = sets.NewString(string(core.IPv4Protocol), string(core.IPv6Protocol))
var supportedServiceIPFamilyPolicy = sets.NewString(string(core.IPFamilyPolicySingleStack), string(core.IPFamilyPolicyPreferDualStack), string(core.IPFamilyPolicyRequireDualStack)) var supportedServiceIPFamilyPolicy = sets.NewString(string(core.IPFamilyPolicySingleStack), string(core.IPFamilyPolicyPreferDualStack), string(core.IPFamilyPolicyRequireDualStack))
@ -4976,8 +4976,8 @@ func needsExternalTrafficPolicy(svc *core.Service) bool {
} }
var validExternalTrafficPolicies = sets.NewString( var validExternalTrafficPolicies = sets.NewString(
string(core.ServiceExternalTrafficPolicyTypeCluster), string(core.ServiceExternalTrafficPolicyCluster),
string(core.ServiceExternalTrafficPolicyTypeLocal)) string(core.ServiceExternalTrafficPolicyLocal))
func validateServiceExternalTrafficPolicy(service *core.Service) field.ErrorList { func validateServiceExternalTrafficPolicy(service *core.Service) field.ErrorList {
allErrs := field.ErrorList{} allErrs := field.ErrorList{}

View File

@ -13060,7 +13060,7 @@ func TestValidateServiceCreate(t *testing.T) {
name: "valid load balancer protocol UDP 1", name: "valid load balancer protocol UDP 1",
tweakSvc: func(s *core.Service) { tweakSvc: func(s *core.Service) {
s.Spec.Type = core.ServiceTypeLoadBalancer s.Spec.Type = core.ServiceTypeLoadBalancer
s.Spec.ExternalTrafficPolicy = core.ServiceExternalTrafficPolicyTypeCluster s.Spec.ExternalTrafficPolicy = core.ServiceExternalTrafficPolicyCluster
s.Spec.AllocateLoadBalancerNodePorts = utilpointer.BoolPtr(true) s.Spec.AllocateLoadBalancerNodePorts = utilpointer.BoolPtr(true)
s.Spec.Ports[0].Protocol = "UDP" s.Spec.Ports[0].Protocol = "UDP"
}, },
@ -13070,7 +13070,7 @@ func TestValidateServiceCreate(t *testing.T) {
name: "valid load balancer protocol UDP 2", name: "valid load balancer protocol UDP 2",
tweakSvc: func(s *core.Service) { tweakSvc: func(s *core.Service) {
s.Spec.Type = core.ServiceTypeLoadBalancer s.Spec.Type = core.ServiceTypeLoadBalancer
s.Spec.ExternalTrafficPolicy = core.ServiceExternalTrafficPolicyTypeCluster s.Spec.ExternalTrafficPolicy = core.ServiceExternalTrafficPolicyCluster
s.Spec.AllocateLoadBalancerNodePorts = utilpointer.BoolPtr(true) s.Spec.AllocateLoadBalancerNodePorts = utilpointer.BoolPtr(true)
s.Spec.Ports[0] = core.ServicePort{Name: "q", Port: 12345, Protocol: "UDP", TargetPort: intstr.FromInt(12345)} s.Spec.Ports[0] = core.ServicePort{Name: "q", Port: 12345, Protocol: "UDP", TargetPort: intstr.FromInt(12345)}
}, },
@ -13080,7 +13080,7 @@ func TestValidateServiceCreate(t *testing.T) {
name: "load balancer with mix protocol", name: "load balancer with mix protocol",
tweakSvc: func(s *core.Service) { tweakSvc: func(s *core.Service) {
s.Spec.Type = core.ServiceTypeLoadBalancer s.Spec.Type = core.ServiceTypeLoadBalancer
s.Spec.ExternalTrafficPolicy = core.ServiceExternalTrafficPolicyTypeCluster s.Spec.ExternalTrafficPolicy = core.ServiceExternalTrafficPolicyCluster
s.Spec.AllocateLoadBalancerNodePorts = utilpointer.BoolPtr(true) s.Spec.AllocateLoadBalancerNodePorts = utilpointer.BoolPtr(true)
s.Spec.Ports = append(s.Spec.Ports, core.ServicePort{Name: "q", Port: 12345, Protocol: "UDP", TargetPort: intstr.FromInt(12345)}) s.Spec.Ports = append(s.Spec.Ports, core.ServicePort{Name: "q", Port: 12345, Protocol: "UDP", TargetPort: intstr.FromInt(12345)})
}, },
@ -13135,7 +13135,7 @@ func TestValidateServiceCreate(t *testing.T) {
name: "valid type - loadbalancer", name: "valid type - loadbalancer",
tweakSvc: func(s *core.Service) { tweakSvc: func(s *core.Service) {
s.Spec.Type = core.ServiceTypeLoadBalancer s.Spec.Type = core.ServiceTypeLoadBalancer
s.Spec.ExternalTrafficPolicy = core.ServiceExternalTrafficPolicyTypeCluster s.Spec.ExternalTrafficPolicy = core.ServiceExternalTrafficPolicyCluster
s.Spec.AllocateLoadBalancerNodePorts = utilpointer.BoolPtr(true) s.Spec.AllocateLoadBalancerNodePorts = utilpointer.BoolPtr(true)
}, },
numErrs: 0, numErrs: 0,
@ -13144,7 +13144,7 @@ func TestValidateServiceCreate(t *testing.T) {
name: "valid type - loadbalancer with allocateLoadBalancerNodePorts=false", name: "valid type - loadbalancer with allocateLoadBalancerNodePorts=false",
tweakSvc: func(s *core.Service) { tweakSvc: func(s *core.Service) {
s.Spec.Type = core.ServiceTypeLoadBalancer s.Spec.Type = core.ServiceTypeLoadBalancer
s.Spec.ExternalTrafficPolicy = core.ServiceExternalTrafficPolicyTypeCluster s.Spec.ExternalTrafficPolicy = core.ServiceExternalTrafficPolicyCluster
s.Spec.AllocateLoadBalancerNodePorts = utilpointer.BoolPtr(false) s.Spec.AllocateLoadBalancerNodePorts = utilpointer.BoolPtr(false)
}, },
numErrs: 0, numErrs: 0,
@ -13153,7 +13153,7 @@ func TestValidateServiceCreate(t *testing.T) {
name: "invalid type - missing AllocateLoadBalancerNodePorts for loadbalancer type", name: "invalid type - missing AllocateLoadBalancerNodePorts for loadbalancer type",
tweakSvc: func(s *core.Service) { tweakSvc: func(s *core.Service) {
s.Spec.Type = core.ServiceTypeLoadBalancer s.Spec.Type = core.ServiceTypeLoadBalancer
s.Spec.ExternalTrafficPolicy = core.ServiceExternalTrafficPolicyTypeCluster s.Spec.ExternalTrafficPolicy = core.ServiceExternalTrafficPolicyCluster
}, },
numErrs: 1, numErrs: 1,
}, },
@ -13161,7 +13161,7 @@ func TestValidateServiceCreate(t *testing.T) {
name: "valid type loadbalancer 2 ports", name: "valid type loadbalancer 2 ports",
tweakSvc: func(s *core.Service) { tweakSvc: func(s *core.Service) {
s.Spec.Type = core.ServiceTypeLoadBalancer s.Spec.Type = core.ServiceTypeLoadBalancer
s.Spec.ExternalTrafficPolicy = core.ServiceExternalTrafficPolicyTypeCluster s.Spec.ExternalTrafficPolicy = core.ServiceExternalTrafficPolicyCluster
s.Spec.AllocateLoadBalancerNodePorts = utilpointer.BoolPtr(true) s.Spec.AllocateLoadBalancerNodePorts = utilpointer.BoolPtr(true)
s.Spec.Ports = append(s.Spec.Ports, core.ServicePort{Name: "q", Port: 12345, Protocol: "TCP", TargetPort: intstr.FromInt(12345)}) s.Spec.Ports = append(s.Spec.Ports, core.ServicePort{Name: "q", Port: 12345, Protocol: "TCP", TargetPort: intstr.FromInt(12345)})
}, },
@ -13171,7 +13171,7 @@ func TestValidateServiceCreate(t *testing.T) {
name: "valid external load balancer 2 ports", name: "valid external load balancer 2 ports",
tweakSvc: func(s *core.Service) { tweakSvc: func(s *core.Service) {
s.Spec.Type = core.ServiceTypeLoadBalancer s.Spec.Type = core.ServiceTypeLoadBalancer
s.Spec.ExternalTrafficPolicy = core.ServiceExternalTrafficPolicyTypeCluster s.Spec.ExternalTrafficPolicy = core.ServiceExternalTrafficPolicyCluster
s.Spec.AllocateLoadBalancerNodePorts = utilpointer.BoolPtr(true) s.Spec.AllocateLoadBalancerNodePorts = utilpointer.BoolPtr(true)
s.Spec.Ports = append(s.Spec.Ports, core.ServicePort{Name: "q", Port: 12345, Protocol: "TCP", TargetPort: intstr.FromInt(12345)}) s.Spec.Ports = append(s.Spec.Ports, core.ServicePort{Name: "q", Port: 12345, Protocol: "TCP", TargetPort: intstr.FromInt(12345)})
}, },
@ -13181,7 +13181,7 @@ func TestValidateServiceCreate(t *testing.T) {
name: "duplicate nodeports", name: "duplicate nodeports",
tweakSvc: func(s *core.Service) { tweakSvc: func(s *core.Service) {
s.Spec.Type = core.ServiceTypeNodePort s.Spec.Type = core.ServiceTypeNodePort
s.Spec.ExternalTrafficPolicy = core.ServiceExternalTrafficPolicyTypeCluster s.Spec.ExternalTrafficPolicy = core.ServiceExternalTrafficPolicyCluster
s.Spec.Ports = append(s.Spec.Ports, core.ServicePort{Name: "q", Port: 1, Protocol: "TCP", NodePort: 1, TargetPort: intstr.FromInt(1)}) s.Spec.Ports = append(s.Spec.Ports, core.ServicePort{Name: "q", Port: 1, Protocol: "TCP", NodePort: 1, TargetPort: intstr.FromInt(1)})
s.Spec.Ports = append(s.Spec.Ports, core.ServicePort{Name: "r", Port: 2, Protocol: "TCP", NodePort: 1, TargetPort: intstr.FromInt(2)}) s.Spec.Ports = append(s.Spec.Ports, core.ServicePort{Name: "r", Port: 2, Protocol: "TCP", NodePort: 1, TargetPort: intstr.FromInt(2)})
}, },
@ -13191,7 +13191,7 @@ func TestValidateServiceCreate(t *testing.T) {
name: "duplicate nodeports (different protocols)", name: "duplicate nodeports (different protocols)",
tweakSvc: func(s *core.Service) { tweakSvc: func(s *core.Service) {
s.Spec.Type = core.ServiceTypeNodePort s.Spec.Type = core.ServiceTypeNodePort
s.Spec.ExternalTrafficPolicy = core.ServiceExternalTrafficPolicyTypeCluster s.Spec.ExternalTrafficPolicy = core.ServiceExternalTrafficPolicyCluster
s.Spec.Ports = append(s.Spec.Ports, core.ServicePort{Name: "q", Port: 1, Protocol: "TCP", NodePort: 1, TargetPort: intstr.FromInt(1)}) s.Spec.Ports = append(s.Spec.Ports, core.ServicePort{Name: "q", Port: 1, Protocol: "TCP", NodePort: 1, TargetPort: intstr.FromInt(1)})
s.Spec.Ports = append(s.Spec.Ports, core.ServicePort{Name: "r", Port: 2, Protocol: "UDP", NodePort: 1, TargetPort: intstr.FromInt(2)}) s.Spec.Ports = append(s.Spec.Ports, core.ServicePort{Name: "r", Port: 2, Protocol: "UDP", NodePort: 1, TargetPort: intstr.FromInt(2)})
s.Spec.Ports = append(s.Spec.Ports, core.ServicePort{Name: "s", Port: 3, Protocol: "SCTP", NodePort: 1, TargetPort: intstr.FromInt(3)}) s.Spec.Ports = append(s.Spec.Ports, core.ServicePort{Name: "s", Port: 3, Protocol: "SCTP", NodePort: 1, TargetPort: intstr.FromInt(3)})
@ -13228,7 +13228,7 @@ func TestValidateServiceCreate(t *testing.T) {
name: "valid type - nodeport", name: "valid type - nodeport",
tweakSvc: func(s *core.Service) { tweakSvc: func(s *core.Service) {
s.Spec.Type = core.ServiceTypeNodePort s.Spec.Type = core.ServiceTypeNodePort
s.Spec.ExternalTrafficPolicy = core.ServiceExternalTrafficPolicyTypeCluster s.Spec.ExternalTrafficPolicy = core.ServiceExternalTrafficPolicyCluster
}, },
numErrs: 0, numErrs: 0,
}, },
@ -13236,7 +13236,7 @@ func TestValidateServiceCreate(t *testing.T) {
name: "valid type - loadbalancer with allocateLoadBalancerNodePorts=true", name: "valid type - loadbalancer with allocateLoadBalancerNodePorts=true",
tweakSvc: func(s *core.Service) { tweakSvc: func(s *core.Service) {
s.Spec.Type = core.ServiceTypeLoadBalancer s.Spec.Type = core.ServiceTypeLoadBalancer
s.Spec.ExternalTrafficPolicy = core.ServiceExternalTrafficPolicyTypeCluster s.Spec.ExternalTrafficPolicy = core.ServiceExternalTrafficPolicyCluster
s.Spec.AllocateLoadBalancerNodePorts = utilpointer.BoolPtr(true) s.Spec.AllocateLoadBalancerNodePorts = utilpointer.BoolPtr(true)
}, },
numErrs: 0, numErrs: 0,
@ -13245,7 +13245,7 @@ func TestValidateServiceCreate(t *testing.T) {
name: "valid type loadbalancer 2 ports", name: "valid type loadbalancer 2 ports",
tweakSvc: func(s *core.Service) { tweakSvc: func(s *core.Service) {
s.Spec.Type = core.ServiceTypeLoadBalancer s.Spec.Type = core.ServiceTypeLoadBalancer
s.Spec.ExternalTrafficPolicy = core.ServiceExternalTrafficPolicyTypeCluster s.Spec.ExternalTrafficPolicy = core.ServiceExternalTrafficPolicyCluster
s.Spec.AllocateLoadBalancerNodePorts = utilpointer.BoolPtr(true) s.Spec.AllocateLoadBalancerNodePorts = utilpointer.BoolPtr(true)
s.Spec.Ports = append(s.Spec.Ports, core.ServicePort{Name: "q", Port: 12345, Protocol: "TCP", TargetPort: intstr.FromInt(12345)}) s.Spec.Ports = append(s.Spec.Ports, core.ServicePort{Name: "q", Port: 12345, Protocol: "TCP", TargetPort: intstr.FromInt(12345)})
}, },
@ -13255,7 +13255,7 @@ func TestValidateServiceCreate(t *testing.T) {
name: "valid type loadbalancer with NodePort", name: "valid type loadbalancer with NodePort",
tweakSvc: func(s *core.Service) { tweakSvc: func(s *core.Service) {
s.Spec.Type = core.ServiceTypeLoadBalancer s.Spec.Type = core.ServiceTypeLoadBalancer
s.Spec.ExternalTrafficPolicy = core.ServiceExternalTrafficPolicyTypeCluster s.Spec.ExternalTrafficPolicy = core.ServiceExternalTrafficPolicyCluster
s.Spec.AllocateLoadBalancerNodePorts = utilpointer.BoolPtr(true) s.Spec.AllocateLoadBalancerNodePorts = utilpointer.BoolPtr(true)
s.Spec.Ports = append(s.Spec.Ports, core.ServicePort{Name: "q", Port: 12345, Protocol: "TCP", NodePort: 12345, TargetPort: intstr.FromInt(12345)}) s.Spec.Ports = append(s.Spec.Ports, core.ServicePort{Name: "q", Port: 12345, Protocol: "TCP", NodePort: 12345, TargetPort: intstr.FromInt(12345)})
}, },
@ -13265,7 +13265,7 @@ func TestValidateServiceCreate(t *testing.T) {
name: "valid type=NodePort service with NodePort", name: "valid type=NodePort service with NodePort",
tweakSvc: func(s *core.Service) { tweakSvc: func(s *core.Service) {
s.Spec.Type = core.ServiceTypeNodePort s.Spec.Type = core.ServiceTypeNodePort
s.Spec.ExternalTrafficPolicy = core.ServiceExternalTrafficPolicyTypeCluster s.Spec.ExternalTrafficPolicy = core.ServiceExternalTrafficPolicyCluster
s.Spec.Ports = append(s.Spec.Ports, core.ServicePort{Name: "q", Port: 12345, Protocol: "TCP", NodePort: 12345, TargetPort: intstr.FromInt(12345)}) s.Spec.Ports = append(s.Spec.Ports, core.ServicePort{Name: "q", Port: 12345, Protocol: "TCP", NodePort: 12345, TargetPort: intstr.FromInt(12345)})
}, },
numErrs: 0, numErrs: 0,
@ -13274,7 +13274,7 @@ func TestValidateServiceCreate(t *testing.T) {
name: "valid type=NodePort service without NodePort", name: "valid type=NodePort service without NodePort",
tweakSvc: func(s *core.Service) { tweakSvc: func(s *core.Service) {
s.Spec.Type = core.ServiceTypeNodePort s.Spec.Type = core.ServiceTypeNodePort
s.Spec.ExternalTrafficPolicy = core.ServiceExternalTrafficPolicyTypeCluster s.Spec.ExternalTrafficPolicy = core.ServiceExternalTrafficPolicyCluster
s.Spec.Ports = append(s.Spec.Ports, core.ServicePort{Name: "q", Port: 12345, Protocol: "TCP", TargetPort: intstr.FromInt(12345)}) s.Spec.Ports = append(s.Spec.Ports, core.ServicePort{Name: "q", Port: 12345, Protocol: "TCP", TargetPort: intstr.FromInt(12345)})
}, },
numErrs: 0, numErrs: 0,
@ -13299,7 +13299,7 @@ func TestValidateServiceCreate(t *testing.T) {
name: "invalid public service with duplicate NodePort", name: "invalid public service with duplicate NodePort",
tweakSvc: func(s *core.Service) { tweakSvc: func(s *core.Service) {
s.Spec.Type = core.ServiceTypeNodePort s.Spec.Type = core.ServiceTypeNodePort
s.Spec.ExternalTrafficPolicy = core.ServiceExternalTrafficPolicyTypeCluster s.Spec.ExternalTrafficPolicy = core.ServiceExternalTrafficPolicyCluster
s.Spec.Ports = append(s.Spec.Ports, core.ServicePort{Name: "p1", Port: 1, Protocol: "TCP", NodePort: 1, TargetPort: intstr.FromInt(1)}) s.Spec.Ports = append(s.Spec.Ports, core.ServicePort{Name: "p1", Port: 1, Protocol: "TCP", NodePort: 1, TargetPort: intstr.FromInt(1)})
s.Spec.Ports = append(s.Spec.Ports, core.ServicePort{Name: "p2", Port: 2, Protocol: "TCP", NodePort: 1, TargetPort: intstr.FromInt(2)}) s.Spec.Ports = append(s.Spec.Ports, core.ServicePort{Name: "p2", Port: 2, Protocol: "TCP", NodePort: 1, TargetPort: intstr.FromInt(2)})
}, },
@ -13309,7 +13309,7 @@ func TestValidateServiceCreate(t *testing.T) {
name: "valid type=LoadBalancer", name: "valid type=LoadBalancer",
tweakSvc: func(s *core.Service) { tweakSvc: func(s *core.Service) {
s.Spec.Type = core.ServiceTypeLoadBalancer s.Spec.Type = core.ServiceTypeLoadBalancer
s.Spec.ExternalTrafficPolicy = core.ServiceExternalTrafficPolicyTypeCluster s.Spec.ExternalTrafficPolicy = core.ServiceExternalTrafficPolicyCluster
s.Spec.AllocateLoadBalancerNodePorts = utilpointer.BoolPtr(true) s.Spec.AllocateLoadBalancerNodePorts = utilpointer.BoolPtr(true)
s.Spec.Ports = append(s.Spec.Ports, core.ServicePort{Name: "q", Port: 12345, Protocol: "TCP", TargetPort: intstr.FromInt(12345)}) s.Spec.Ports = append(s.Spec.Ports, core.ServicePort{Name: "q", Port: 12345, Protocol: "TCP", TargetPort: intstr.FromInt(12345)})
}, },
@ -13321,7 +13321,7 @@ func TestValidateServiceCreate(t *testing.T) {
name: "invalid port type=LoadBalancer", name: "invalid port type=LoadBalancer",
tweakSvc: func(s *core.Service) { tweakSvc: func(s *core.Service) {
s.Spec.Type = core.ServiceTypeLoadBalancer s.Spec.Type = core.ServiceTypeLoadBalancer
s.Spec.ExternalTrafficPolicy = core.ServiceExternalTrafficPolicyTypeCluster s.Spec.ExternalTrafficPolicy = core.ServiceExternalTrafficPolicyCluster
s.Spec.AllocateLoadBalancerNodePorts = utilpointer.BoolPtr(true) s.Spec.AllocateLoadBalancerNodePorts = utilpointer.BoolPtr(true)
s.Spec.Ports = append(s.Spec.Ports, core.ServicePort{Name: "kubelet", Port: 10250, Protocol: "TCP", TargetPort: intstr.FromInt(12345)}) s.Spec.Ports = append(s.Spec.Ports, core.ServicePort{Name: "kubelet", Port: 10250, Protocol: "TCP", TargetPort: intstr.FromInt(12345)})
}, },
@ -13331,7 +13331,7 @@ func TestValidateServiceCreate(t *testing.T) {
name: "valid LoadBalancer source range annotation", name: "valid LoadBalancer source range annotation",
tweakSvc: func(s *core.Service) { tweakSvc: func(s *core.Service) {
s.Spec.Type = core.ServiceTypeLoadBalancer s.Spec.Type = core.ServiceTypeLoadBalancer
s.Spec.ExternalTrafficPolicy = core.ServiceExternalTrafficPolicyTypeCluster s.Spec.ExternalTrafficPolicy = core.ServiceExternalTrafficPolicyCluster
s.Spec.AllocateLoadBalancerNodePorts = utilpointer.BoolPtr(true) s.Spec.AllocateLoadBalancerNodePorts = utilpointer.BoolPtr(true)
s.Annotations[core.AnnotationLoadBalancerSourceRangesKey] = "1.2.3.4/8, 5.6.7.8/16" s.Annotations[core.AnnotationLoadBalancerSourceRangesKey] = "1.2.3.4/8, 5.6.7.8/16"
}, },
@ -13341,7 +13341,7 @@ func TestValidateServiceCreate(t *testing.T) {
name: "empty LoadBalancer source range annotation", name: "empty LoadBalancer source range annotation",
tweakSvc: func(s *core.Service) { tweakSvc: func(s *core.Service) {
s.Spec.Type = core.ServiceTypeLoadBalancer s.Spec.Type = core.ServiceTypeLoadBalancer
s.Spec.ExternalTrafficPolicy = core.ServiceExternalTrafficPolicyTypeCluster s.Spec.ExternalTrafficPolicy = core.ServiceExternalTrafficPolicyCluster
s.Spec.AllocateLoadBalancerNodePorts = utilpointer.BoolPtr(true) s.Spec.AllocateLoadBalancerNodePorts = utilpointer.BoolPtr(true)
s.Annotations[core.AnnotationLoadBalancerSourceRangesKey] = "" s.Annotations[core.AnnotationLoadBalancerSourceRangesKey] = ""
}, },
@ -13358,7 +13358,7 @@ func TestValidateServiceCreate(t *testing.T) {
name: "invalid LoadBalancer source range annotation (invalid CIDR)", name: "invalid LoadBalancer source range annotation (invalid CIDR)",
tweakSvc: func(s *core.Service) { tweakSvc: func(s *core.Service) {
s.Spec.Type = core.ServiceTypeLoadBalancer s.Spec.Type = core.ServiceTypeLoadBalancer
s.Spec.ExternalTrafficPolicy = core.ServiceExternalTrafficPolicyTypeCluster s.Spec.ExternalTrafficPolicy = core.ServiceExternalTrafficPolicyCluster
s.Spec.AllocateLoadBalancerNodePorts = utilpointer.BoolPtr(true) s.Spec.AllocateLoadBalancerNodePorts = utilpointer.BoolPtr(true)
s.Annotations[core.AnnotationLoadBalancerSourceRangesKey] = "1.2.3.4/33" s.Annotations[core.AnnotationLoadBalancerSourceRangesKey] = "1.2.3.4/33"
}, },
@ -13375,7 +13375,7 @@ func TestValidateServiceCreate(t *testing.T) {
name: "valid LoadBalancer source range", name: "valid LoadBalancer source range",
tweakSvc: func(s *core.Service) { tweakSvc: func(s *core.Service) {
s.Spec.Type = core.ServiceTypeLoadBalancer s.Spec.Type = core.ServiceTypeLoadBalancer
s.Spec.ExternalTrafficPolicy = core.ServiceExternalTrafficPolicyTypeCluster s.Spec.ExternalTrafficPolicy = core.ServiceExternalTrafficPolicyCluster
s.Spec.AllocateLoadBalancerNodePorts = utilpointer.BoolPtr(true) s.Spec.AllocateLoadBalancerNodePorts = utilpointer.BoolPtr(true)
s.Spec.LoadBalancerSourceRanges = []string{"1.2.3.4/8", "5.6.7.8/16"} s.Spec.LoadBalancerSourceRanges = []string{"1.2.3.4/8", "5.6.7.8/16"}
}, },
@ -13385,7 +13385,7 @@ func TestValidateServiceCreate(t *testing.T) {
name: "empty LoadBalancer source range", name: "empty LoadBalancer source range",
tweakSvc: func(s *core.Service) { tweakSvc: func(s *core.Service) {
s.Spec.Type = core.ServiceTypeLoadBalancer s.Spec.Type = core.ServiceTypeLoadBalancer
s.Spec.ExternalTrafficPolicy = core.ServiceExternalTrafficPolicyTypeCluster s.Spec.ExternalTrafficPolicy = core.ServiceExternalTrafficPolicyCluster
s.Spec.AllocateLoadBalancerNodePorts = utilpointer.BoolPtr(true) s.Spec.AllocateLoadBalancerNodePorts = utilpointer.BoolPtr(true)
s.Spec.LoadBalancerSourceRanges = []string{" "} s.Spec.LoadBalancerSourceRanges = []string{" "}
}, },
@ -13395,7 +13395,7 @@ func TestValidateServiceCreate(t *testing.T) {
name: "invalid LoadBalancer source range", name: "invalid LoadBalancer source range",
tweakSvc: func(s *core.Service) { tweakSvc: func(s *core.Service) {
s.Spec.Type = core.ServiceTypeLoadBalancer s.Spec.Type = core.ServiceTypeLoadBalancer
s.Spec.ExternalTrafficPolicy = core.ServiceExternalTrafficPolicyTypeCluster s.Spec.ExternalTrafficPolicy = core.ServiceExternalTrafficPolicyCluster
s.Spec.AllocateLoadBalancerNodePorts = utilpointer.BoolPtr(true) s.Spec.AllocateLoadBalancerNodePorts = utilpointer.BoolPtr(true)
s.Spec.LoadBalancerSourceRanges = []string{"foo.bar"} s.Spec.LoadBalancerSourceRanges = []string{"foo.bar"}
}, },
@ -13451,7 +13451,7 @@ func TestValidateServiceCreate(t *testing.T) {
s.Spec.ClusterIP = "None" s.Spec.ClusterIP = "None"
s.Spec.ClusterIPs = []string{"None"} s.Spec.ClusterIPs = []string{"None"}
s.Spec.Type = core.ServiceTypeLoadBalancer s.Spec.Type = core.ServiceTypeLoadBalancer
s.Spec.ExternalTrafficPolicy = core.ServiceExternalTrafficPolicyTypeCluster s.Spec.ExternalTrafficPolicy = core.ServiceExternalTrafficPolicyCluster
s.Spec.AllocateLoadBalancerNodePorts = utilpointer.BoolPtr(true) s.Spec.AllocateLoadBalancerNodePorts = utilpointer.BoolPtr(true)
}, },
numErrs: 1, numErrs: 1,
@ -13460,7 +13460,7 @@ func TestValidateServiceCreate(t *testing.T) {
name: "invalid node port with clusterIP None", name: "invalid node port with clusterIP None",
tweakSvc: func(s *core.Service) { tweakSvc: func(s *core.Service) {
s.Spec.Type = core.ServiceTypeNodePort s.Spec.Type = core.ServiceTypeNodePort
s.Spec.ExternalTrafficPolicy = core.ServiceExternalTrafficPolicyTypeCluster s.Spec.ExternalTrafficPolicy = core.ServiceExternalTrafficPolicyCluster
s.Spec.Ports = append(s.Spec.Ports, core.ServicePort{Name: "q", Port: 1, Protocol: "TCP", NodePort: 1, TargetPort: intstr.FromInt(1)}) s.Spec.Ports = append(s.Spec.Ports, core.ServicePort{Name: "q", Port: 1, Protocol: "TCP", NodePort: 1, TargetPort: intstr.FromInt(1)})
s.Spec.ClusterIP = "None" s.Spec.ClusterIP = "None"
s.Spec.ClusterIPs = []string{"None"} s.Spec.ClusterIPs = []string{"None"}
@ -13536,7 +13536,7 @@ func TestValidateServiceCreate(t *testing.T) {
tweakSvc: func(s *core.Service) { tweakSvc: func(s *core.Service) {
s.Spec.Type = core.ServiceTypeLoadBalancer s.Spec.Type = core.ServiceTypeLoadBalancer
s.Spec.AllocateLoadBalancerNodePorts = utilpointer.BoolPtr(true) s.Spec.AllocateLoadBalancerNodePorts = utilpointer.BoolPtr(true)
s.Spec.ExternalTrafficPolicy = core.ServiceExternalTrafficPolicyTypeLocal s.Spec.ExternalTrafficPolicy = core.ServiceExternalTrafficPolicyLocal
s.Spec.HealthCheckNodePort = -1 s.Spec.HealthCheckNodePort = -1
}, },
numErrs: 1, numErrs: 1,
@ -13546,7 +13546,7 @@ func TestValidateServiceCreate(t *testing.T) {
tweakSvc: func(s *core.Service) { tweakSvc: func(s *core.Service) {
s.Spec.Type = core.ServiceTypeLoadBalancer s.Spec.Type = core.ServiceTypeLoadBalancer
s.Spec.AllocateLoadBalancerNodePorts = utilpointer.BoolPtr(true) s.Spec.AllocateLoadBalancerNodePorts = utilpointer.BoolPtr(true)
s.Spec.ExternalTrafficPolicy = core.ServiceExternalTrafficPolicyTypeLocal s.Spec.ExternalTrafficPolicy = core.ServiceExternalTrafficPolicyLocal
s.Spec.HealthCheckNodePort = 31100 s.Spec.HealthCheckNodePort = 31100
}, },
numErrs: 0, numErrs: 0,
@ -13569,7 +13569,7 @@ func TestValidateServiceCreate(t *testing.T) {
name: "sessionAffinityConfig can't be set when session affinity is None", name: "sessionAffinityConfig can't be set when session affinity is None",
tweakSvc: func(s *core.Service) { tweakSvc: func(s *core.Service) {
s.Spec.Type = core.ServiceTypeLoadBalancer s.Spec.Type = core.ServiceTypeLoadBalancer
s.Spec.ExternalTrafficPolicy = core.ServiceExternalTrafficPolicyTypeCluster s.Spec.ExternalTrafficPolicy = core.ServiceExternalTrafficPolicyCluster
s.Spec.AllocateLoadBalancerNodePorts = utilpointer.BoolPtr(true) s.Spec.AllocateLoadBalancerNodePorts = utilpointer.BoolPtr(true)
s.Spec.SessionAffinity = core.ServiceAffinityNone s.Spec.SessionAffinity = core.ServiceAffinityNone
s.Spec.SessionAffinityConfig = &core.SessionAffinityConfig{ s.Spec.SessionAffinityConfig = &core.SessionAffinityConfig{
@ -14023,7 +14023,7 @@ func TestValidateServiceCreate(t *testing.T) {
name: "valid LoadBalancerClass when type is LoadBalancer", name: "valid LoadBalancerClass when type is LoadBalancer",
tweakSvc: func(s *core.Service) { tweakSvc: func(s *core.Service) {
s.Spec.Type = core.ServiceTypeLoadBalancer s.Spec.Type = core.ServiceTypeLoadBalancer
s.Spec.ExternalTrafficPolicy = core.ServiceExternalTrafficPolicyTypeCluster s.Spec.ExternalTrafficPolicy = core.ServiceExternalTrafficPolicyCluster
s.Spec.AllocateLoadBalancerNodePorts = utilpointer.BoolPtr(true) s.Spec.AllocateLoadBalancerNodePorts = utilpointer.BoolPtr(true)
s.Spec.LoadBalancerClass = utilpointer.StringPtr("test.com/test-load-balancer-class") s.Spec.LoadBalancerClass = utilpointer.StringPtr("test.com/test-load-balancer-class")
}, },
@ -14033,7 +14033,7 @@ func TestValidateServiceCreate(t *testing.T) {
name: "invalid LoadBalancerClass", name: "invalid LoadBalancerClass",
tweakSvc: func(s *core.Service) { tweakSvc: func(s *core.Service) {
s.Spec.Type = core.ServiceTypeLoadBalancer s.Spec.Type = core.ServiceTypeLoadBalancer
s.Spec.ExternalTrafficPolicy = core.ServiceExternalTrafficPolicyTypeCluster s.Spec.ExternalTrafficPolicy = core.ServiceExternalTrafficPolicyCluster
s.Spec.AllocateLoadBalancerNodePorts = utilpointer.BoolPtr(true) s.Spec.AllocateLoadBalancerNodePorts = utilpointer.BoolPtr(true)
s.Spec.LoadBalancerClass = utilpointer.StringPtr("Bad/LoadBalancerClass") s.Spec.LoadBalancerClass = utilpointer.StringPtr("Bad/LoadBalancerClass")
}, },
@ -14075,7 +14075,7 @@ func TestValidateServiceExternalTrafficPolicy(t *testing.T) {
tweakSvc: func(s *core.Service) { tweakSvc: func(s *core.Service) {
s.Spec.Type = core.ServiceTypeLoadBalancer s.Spec.Type = core.ServiceTypeLoadBalancer
s.Spec.AllocateLoadBalancerNodePorts = utilpointer.BoolPtr(true) s.Spec.AllocateLoadBalancerNodePorts = utilpointer.BoolPtr(true)
s.Spec.ExternalTrafficPolicy = core.ServiceExternalTrafficPolicyTypeLocal s.Spec.ExternalTrafficPolicy = core.ServiceExternalTrafficPolicyLocal
s.Spec.HealthCheckNodePort = 34567 s.Spec.HealthCheckNodePort = 34567
}, },
numErrs: 0, numErrs: 0,
@ -14084,7 +14084,7 @@ func TestValidateServiceExternalTrafficPolicy(t *testing.T) {
name: "valid nodePort service with externalTrafficPolicy set", name: "valid nodePort service with externalTrafficPolicy set",
tweakSvc: func(s *core.Service) { tweakSvc: func(s *core.Service) {
s.Spec.Type = core.ServiceTypeNodePort s.Spec.Type = core.ServiceTypeNodePort
s.Spec.ExternalTrafficPolicy = core.ServiceExternalTrafficPolicyTypeLocal s.Spec.ExternalTrafficPolicy = core.ServiceExternalTrafficPolicyLocal
}, },
numErrs: 0, numErrs: 0,
}, },
@ -14100,7 +14100,7 @@ func TestValidateServiceExternalTrafficPolicy(t *testing.T) {
tweakSvc: func(s *core.Service) { tweakSvc: func(s *core.Service) {
s.Spec.Type = core.ServiceTypeLoadBalancer s.Spec.Type = core.ServiceTypeLoadBalancer
s.Spec.AllocateLoadBalancerNodePorts = utilpointer.BoolPtr(true) s.Spec.AllocateLoadBalancerNodePorts = utilpointer.BoolPtr(true)
s.Spec.ExternalTrafficPolicy = core.ServiceExternalTrafficPolicyTypeCluster s.Spec.ExternalTrafficPolicy = core.ServiceExternalTrafficPolicyCluster
s.Spec.HealthCheckNodePort = 34567 s.Spec.HealthCheckNodePort = 34567
}, },
numErrs: 1, numErrs: 1,
@ -14109,7 +14109,7 @@ func TestValidateServiceExternalTrafficPolicy(t *testing.T) {
name: "cannot set healthCheckNodePort field on nodePort service", name: "cannot set healthCheckNodePort field on nodePort service",
tweakSvc: func(s *core.Service) { tweakSvc: func(s *core.Service) {
s.Spec.Type = core.ServiceTypeNodePort s.Spec.Type = core.ServiceTypeNodePort
s.Spec.ExternalTrafficPolicy = core.ServiceExternalTrafficPolicyTypeLocal s.Spec.ExternalTrafficPolicy = core.ServiceExternalTrafficPolicyLocal
s.Spec.HealthCheckNodePort = 34567 s.Spec.HealthCheckNodePort = 34567
}, },
numErrs: 1, numErrs: 1,
@ -14118,7 +14118,7 @@ func TestValidateServiceExternalTrafficPolicy(t *testing.T) {
name: "cannot set externalTrafficPolicy or healthCheckNodePort fields on clusterIP service", name: "cannot set externalTrafficPolicy or healthCheckNodePort fields on clusterIP service",
tweakSvc: func(s *core.Service) { tweakSvc: func(s *core.Service) {
s.Spec.Type = core.ServiceTypeClusterIP s.Spec.Type = core.ServiceTypeClusterIP
s.Spec.ExternalTrafficPolicy = core.ServiceExternalTrafficPolicyTypeLocal s.Spec.ExternalTrafficPolicy = core.ServiceExternalTrafficPolicyLocal
s.Spec.HealthCheckNodePort = 34567 s.Spec.HealthCheckNodePort = 34567
}, },
numErrs: 2, numErrs: 2,
@ -15633,7 +15633,7 @@ func TestValidateServiceUpdate(t *testing.T) {
name: "change type", name: "change type",
tweakSvc: func(oldSvc, newSvc *core.Service) { tweakSvc: func(oldSvc, newSvc *core.Service) {
newSvc.Spec.Type = core.ServiceTypeLoadBalancer newSvc.Spec.Type = core.ServiceTypeLoadBalancer
newSvc.Spec.ExternalTrafficPolicy = core.ServiceExternalTrafficPolicyTypeCluster newSvc.Spec.ExternalTrafficPolicy = core.ServiceExternalTrafficPolicyCluster
newSvc.Spec.AllocateLoadBalancerNodePorts = utilpointer.BoolPtr(true) newSvc.Spec.AllocateLoadBalancerNodePorts = utilpointer.BoolPtr(true)
}, },
numErrs: 0, numErrs: 0,
@ -15649,7 +15649,7 @@ func TestValidateServiceUpdate(t *testing.T) {
name: "change type -> nodeport", name: "change type -> nodeport",
tweakSvc: func(oldSvc, newSvc *core.Service) { tweakSvc: func(oldSvc, newSvc *core.Service) {
newSvc.Spec.Type = core.ServiceTypeNodePort newSvc.Spec.Type = core.ServiceTypeNodePort
newSvc.Spec.ExternalTrafficPolicy = core.ServiceExternalTrafficPolicyTypeCluster newSvc.Spec.ExternalTrafficPolicy = core.ServiceExternalTrafficPolicyCluster
}, },
numErrs: 0, numErrs: 0,
}, },
@ -15659,7 +15659,7 @@ func TestValidateServiceUpdate(t *testing.T) {
oldSvc.Spec.Type = core.ServiceTypeLoadBalancer oldSvc.Spec.Type = core.ServiceTypeLoadBalancer
oldSvc.Spec.AllocateLoadBalancerNodePorts = utilpointer.BoolPtr(true) oldSvc.Spec.AllocateLoadBalancerNodePorts = utilpointer.BoolPtr(true)
newSvc.Spec.Type = core.ServiceTypeLoadBalancer newSvc.Spec.Type = core.ServiceTypeLoadBalancer
newSvc.Spec.ExternalTrafficPolicy = core.ServiceExternalTrafficPolicyTypeCluster newSvc.Spec.ExternalTrafficPolicy = core.ServiceExternalTrafficPolicyCluster
newSvc.Spec.AllocateLoadBalancerNodePorts = utilpointer.BoolPtr(true) newSvc.Spec.AllocateLoadBalancerNodePorts = utilpointer.BoolPtr(true)
newSvc.Spec.LoadBalancerSourceRanges = []string{"10.0.0.0/8"} newSvc.Spec.LoadBalancerSourceRanges = []string{"10.0.0.0/8"}
}, },
@ -15672,7 +15672,7 @@ func TestValidateServiceUpdate(t *testing.T) {
oldSvc.Spec.AllocateLoadBalancerNodePorts = utilpointer.BoolPtr(true) oldSvc.Spec.AllocateLoadBalancerNodePorts = utilpointer.BoolPtr(true)
oldSvc.Spec.LoadBalancerSourceRanges = []string{"10.0.0.0/8"} oldSvc.Spec.LoadBalancerSourceRanges = []string{"10.0.0.0/8"}
newSvc.Spec.Type = core.ServiceTypeLoadBalancer newSvc.Spec.Type = core.ServiceTypeLoadBalancer
newSvc.Spec.ExternalTrafficPolicy = core.ServiceExternalTrafficPolicyTypeCluster newSvc.Spec.ExternalTrafficPolicy = core.ServiceExternalTrafficPolicyCluster
newSvc.Spec.AllocateLoadBalancerNodePorts = utilpointer.BoolPtr(true) newSvc.Spec.AllocateLoadBalancerNodePorts = utilpointer.BoolPtr(true)
newSvc.Spec.LoadBalancerSourceRanges = []string{"10.100.0.0/16"} newSvc.Spec.LoadBalancerSourceRanges = []string{"10.100.0.0/16"}
}, },
@ -15684,7 +15684,7 @@ func TestValidateServiceUpdate(t *testing.T) {
newSvc.Spec.ClusterIP = "None" newSvc.Spec.ClusterIP = "None"
newSvc.Spec.ClusterIPs = []string{"None"} newSvc.Spec.ClusterIPs = []string{"None"}
newSvc.Spec.Type = core.ServiceTypeLoadBalancer newSvc.Spec.Type = core.ServiceTypeLoadBalancer
newSvc.Spec.ExternalTrafficPolicy = core.ServiceExternalTrafficPolicyTypeCluster newSvc.Spec.ExternalTrafficPolicy = core.ServiceExternalTrafficPolicyCluster
newSvc.Spec.AllocateLoadBalancerNodePorts = utilpointer.BoolPtr(true) newSvc.Spec.AllocateLoadBalancerNodePorts = utilpointer.BoolPtr(true)
}, },
numErrs: 1, numErrs: 1,
@ -15758,7 +15758,7 @@ func TestValidateServiceUpdate(t *testing.T) {
tweakSvc: func(oldSvc, newSvc *core.Service) { tweakSvc: func(oldSvc, newSvc *core.Service) {
oldSvc.Spec.Type = core.ServiceTypeClusterIP oldSvc.Spec.Type = core.ServiceTypeClusterIP
newSvc.Spec.Type = core.ServiceTypeNodePort newSvc.Spec.Type = core.ServiceTypeNodePort
newSvc.Spec.ExternalTrafficPolicy = core.ServiceExternalTrafficPolicyTypeCluster newSvc.Spec.ExternalTrafficPolicy = core.ServiceExternalTrafficPolicyCluster
oldSvc.Spec.ClusterIP = "1.2.3.4" oldSvc.Spec.ClusterIP = "1.2.3.4"
oldSvc.Spec.ClusterIPs = []string{"1.2.3.4"} oldSvc.Spec.ClusterIPs = []string{"1.2.3.4"}
@ -15773,7 +15773,7 @@ func TestValidateServiceUpdate(t *testing.T) {
tweakSvc: func(oldSvc, newSvc *core.Service) { tweakSvc: func(oldSvc, newSvc *core.Service) {
oldSvc.Spec.Type = core.ServiceTypeClusterIP oldSvc.Spec.Type = core.ServiceTypeClusterIP
newSvc.Spec.Type = core.ServiceTypeNodePort newSvc.Spec.Type = core.ServiceTypeNodePort
newSvc.Spec.ExternalTrafficPolicy = core.ServiceExternalTrafficPolicyTypeCluster newSvc.Spec.ExternalTrafficPolicy = core.ServiceExternalTrafficPolicyCluster
oldSvc.Spec.ClusterIP = "" oldSvc.Spec.ClusterIP = ""
oldSvc.Spec.ClusterIPs = nil oldSvc.Spec.ClusterIPs = nil
@ -15788,7 +15788,7 @@ func TestValidateServiceUpdate(t *testing.T) {
tweakSvc: func(oldSvc, newSvc *core.Service) { tweakSvc: func(oldSvc, newSvc *core.Service) {
oldSvc.Spec.Type = core.ServiceTypeClusterIP oldSvc.Spec.Type = core.ServiceTypeClusterIP
newSvc.Spec.Type = core.ServiceTypeLoadBalancer newSvc.Spec.Type = core.ServiceTypeLoadBalancer
newSvc.Spec.ExternalTrafficPolicy = core.ServiceExternalTrafficPolicyTypeCluster newSvc.Spec.ExternalTrafficPolicy = core.ServiceExternalTrafficPolicyCluster
newSvc.Spec.AllocateLoadBalancerNodePorts = utilpointer.BoolPtr(true) newSvc.Spec.AllocateLoadBalancerNodePorts = utilpointer.BoolPtr(true)
oldSvc.Spec.ClusterIP = "1.2.3.4" oldSvc.Spec.ClusterIP = "1.2.3.4"
@ -15804,7 +15804,7 @@ func TestValidateServiceUpdate(t *testing.T) {
tweakSvc: func(oldSvc, newSvc *core.Service) { tweakSvc: func(oldSvc, newSvc *core.Service) {
oldSvc.Spec.Type = core.ServiceTypeClusterIP oldSvc.Spec.Type = core.ServiceTypeClusterIP
newSvc.Spec.Type = core.ServiceTypeLoadBalancer newSvc.Spec.Type = core.ServiceTypeLoadBalancer
newSvc.Spec.ExternalTrafficPolicy = core.ServiceExternalTrafficPolicyTypeCluster newSvc.Spec.ExternalTrafficPolicy = core.ServiceExternalTrafficPolicyCluster
newSvc.Spec.AllocateLoadBalancerNodePorts = utilpointer.BoolPtr(true) newSvc.Spec.AllocateLoadBalancerNodePorts = utilpointer.BoolPtr(true)
oldSvc.Spec.ClusterIP = "" oldSvc.Spec.ClusterIP = ""
@ -15821,7 +15821,7 @@ func TestValidateServiceUpdate(t *testing.T) {
oldSvc.Spec.Type = core.ServiceTypeLoadBalancer oldSvc.Spec.Type = core.ServiceTypeLoadBalancer
oldSvc.Spec.AllocateLoadBalancerNodePorts = utilpointer.BoolPtr(true) oldSvc.Spec.AllocateLoadBalancerNodePorts = utilpointer.BoolPtr(true)
newSvc.Spec.Type = core.ServiceTypeLoadBalancer newSvc.Spec.Type = core.ServiceTypeLoadBalancer
newSvc.Spec.ExternalTrafficPolicy = core.ServiceExternalTrafficPolicyTypeCluster newSvc.Spec.ExternalTrafficPolicy = core.ServiceExternalTrafficPolicyCluster
newSvc.Spec.AllocateLoadBalancerNodePorts = utilpointer.BoolPtr(false) newSvc.Spec.AllocateLoadBalancerNodePorts = utilpointer.BoolPtr(false)
}, },
numErrs: 0, numErrs: 0,
@ -15832,7 +15832,7 @@ func TestValidateServiceUpdate(t *testing.T) {
oldSvc.Spec.Type = core.ServiceTypeLoadBalancer oldSvc.Spec.Type = core.ServiceTypeLoadBalancer
oldSvc.Spec.AllocateLoadBalancerNodePorts = utilpointer.BoolPtr(false) oldSvc.Spec.AllocateLoadBalancerNodePorts = utilpointer.BoolPtr(false)
newSvc.Spec.Type = core.ServiceTypeLoadBalancer newSvc.Spec.Type = core.ServiceTypeLoadBalancer
newSvc.Spec.ExternalTrafficPolicy = core.ServiceExternalTrafficPolicyTypeCluster newSvc.Spec.ExternalTrafficPolicy = core.ServiceExternalTrafficPolicyCluster
newSvc.Spec.AllocateLoadBalancerNodePorts = utilpointer.BoolPtr(true) newSvc.Spec.AllocateLoadBalancerNodePorts = utilpointer.BoolPtr(true)
}, },
numErrs: 0, numErrs: 0,
@ -15842,7 +15842,7 @@ func TestValidateServiceUpdate(t *testing.T) {
tweakSvc: func(oldSvc, newSvc *core.Service) { tweakSvc: func(oldSvc, newSvc *core.Service) {
oldSvc.Spec.Type = core.ServiceTypeNodePort oldSvc.Spec.Type = core.ServiceTypeNodePort
newSvc.Spec.Type = core.ServiceTypeNodePort newSvc.Spec.Type = core.ServiceTypeNodePort
newSvc.Spec.ExternalTrafficPolicy = core.ServiceExternalTrafficPolicyTypeCluster newSvc.Spec.ExternalTrafficPolicy = core.ServiceExternalTrafficPolicyCluster
oldSvc.Spec.ClusterIP = "1.2.3.4" oldSvc.Spec.ClusterIP = "1.2.3.4"
oldSvc.Spec.ClusterIPs = []string{"1.2.3.4"} oldSvc.Spec.ClusterIPs = []string{"1.2.3.4"}
@ -15857,7 +15857,7 @@ func TestValidateServiceUpdate(t *testing.T) {
tweakSvc: func(oldSvc, newSvc *core.Service) { tweakSvc: func(oldSvc, newSvc *core.Service) {
oldSvc.Spec.Type = core.ServiceTypeNodePort oldSvc.Spec.Type = core.ServiceTypeNodePort
newSvc.Spec.Type = core.ServiceTypeNodePort newSvc.Spec.Type = core.ServiceTypeNodePort
newSvc.Spec.ExternalTrafficPolicy = core.ServiceExternalTrafficPolicyTypeCluster newSvc.Spec.ExternalTrafficPolicy = core.ServiceExternalTrafficPolicyCluster
oldSvc.Spec.ClusterIP = "" oldSvc.Spec.ClusterIP = ""
oldSvc.Spec.ClusterIPs = nil oldSvc.Spec.ClusterIPs = nil
@ -15900,7 +15900,7 @@ func TestValidateServiceUpdate(t *testing.T) {
tweakSvc: func(oldSvc, newSvc *core.Service) { tweakSvc: func(oldSvc, newSvc *core.Service) {
oldSvc.Spec.Type = core.ServiceTypeNodePort oldSvc.Spec.Type = core.ServiceTypeNodePort
newSvc.Spec.Type = core.ServiceTypeLoadBalancer newSvc.Spec.Type = core.ServiceTypeLoadBalancer
newSvc.Spec.ExternalTrafficPolicy = core.ServiceExternalTrafficPolicyTypeCluster newSvc.Spec.ExternalTrafficPolicy = core.ServiceExternalTrafficPolicyCluster
newSvc.Spec.AllocateLoadBalancerNodePorts = utilpointer.BoolPtr(true) newSvc.Spec.AllocateLoadBalancerNodePorts = utilpointer.BoolPtr(true)
oldSvc.Spec.ClusterIP = "1.2.3.4" oldSvc.Spec.ClusterIP = "1.2.3.4"
@ -15916,7 +15916,7 @@ func TestValidateServiceUpdate(t *testing.T) {
tweakSvc: func(oldSvc, newSvc *core.Service) { tweakSvc: func(oldSvc, newSvc *core.Service) {
oldSvc.Spec.Type = core.ServiceTypeNodePort oldSvc.Spec.Type = core.ServiceTypeNodePort
newSvc.Spec.Type = core.ServiceTypeLoadBalancer newSvc.Spec.Type = core.ServiceTypeLoadBalancer
newSvc.Spec.ExternalTrafficPolicy = core.ServiceExternalTrafficPolicyTypeCluster newSvc.Spec.ExternalTrafficPolicy = core.ServiceExternalTrafficPolicyCluster
newSvc.Spec.AllocateLoadBalancerNodePorts = utilpointer.BoolPtr(true) newSvc.Spec.AllocateLoadBalancerNodePorts = utilpointer.BoolPtr(true)
oldSvc.Spec.ClusterIP = "" oldSvc.Spec.ClusterIP = ""
@ -15933,7 +15933,7 @@ func TestValidateServiceUpdate(t *testing.T) {
oldSvc.Spec.Type = core.ServiceTypeLoadBalancer oldSvc.Spec.Type = core.ServiceTypeLoadBalancer
oldSvc.Spec.AllocateLoadBalancerNodePorts = utilpointer.BoolPtr(true) oldSvc.Spec.AllocateLoadBalancerNodePorts = utilpointer.BoolPtr(true)
newSvc.Spec.Type = core.ServiceTypeLoadBalancer newSvc.Spec.Type = core.ServiceTypeLoadBalancer
newSvc.Spec.ExternalTrafficPolicy = core.ServiceExternalTrafficPolicyTypeCluster newSvc.Spec.ExternalTrafficPolicy = core.ServiceExternalTrafficPolicyCluster
newSvc.Spec.AllocateLoadBalancerNodePorts = utilpointer.BoolPtr(true) newSvc.Spec.AllocateLoadBalancerNodePorts = utilpointer.BoolPtr(true)
oldSvc.Spec.ClusterIP = "1.2.3.4" oldSvc.Spec.ClusterIP = "1.2.3.4"
@ -15950,7 +15950,7 @@ func TestValidateServiceUpdate(t *testing.T) {
oldSvc.Spec.Type = core.ServiceTypeLoadBalancer oldSvc.Spec.Type = core.ServiceTypeLoadBalancer
oldSvc.Spec.AllocateLoadBalancerNodePorts = utilpointer.BoolPtr(true) oldSvc.Spec.AllocateLoadBalancerNodePorts = utilpointer.BoolPtr(true)
newSvc.Spec.Type = core.ServiceTypeLoadBalancer newSvc.Spec.Type = core.ServiceTypeLoadBalancer
newSvc.Spec.ExternalTrafficPolicy = core.ServiceExternalTrafficPolicyTypeCluster newSvc.Spec.ExternalTrafficPolicy = core.ServiceExternalTrafficPolicyCluster
newSvc.Spec.AllocateLoadBalancerNodePorts = utilpointer.BoolPtr(true) newSvc.Spec.AllocateLoadBalancerNodePorts = utilpointer.BoolPtr(true)
oldSvc.Spec.ClusterIP = "" oldSvc.Spec.ClusterIP = ""
@ -15997,7 +15997,7 @@ func TestValidateServiceUpdate(t *testing.T) {
oldSvc.Spec.Type = core.ServiceTypeLoadBalancer oldSvc.Spec.Type = core.ServiceTypeLoadBalancer
oldSvc.Spec.AllocateLoadBalancerNodePorts = utilpointer.BoolPtr(true) oldSvc.Spec.AllocateLoadBalancerNodePorts = utilpointer.BoolPtr(true)
newSvc.Spec.Type = core.ServiceTypeNodePort newSvc.Spec.Type = core.ServiceTypeNodePort
newSvc.Spec.ExternalTrafficPolicy = core.ServiceExternalTrafficPolicyTypeCluster newSvc.Spec.ExternalTrafficPolicy = core.ServiceExternalTrafficPolicyCluster
oldSvc.Spec.ClusterIP = "1.2.3.4" oldSvc.Spec.ClusterIP = "1.2.3.4"
oldSvc.Spec.ClusterIPs = []string{"1.2.3.4"} oldSvc.Spec.ClusterIPs = []string{"1.2.3.4"}
@ -16013,7 +16013,7 @@ func TestValidateServiceUpdate(t *testing.T) {
oldSvc.Spec.Type = core.ServiceTypeLoadBalancer oldSvc.Spec.Type = core.ServiceTypeLoadBalancer
oldSvc.Spec.AllocateLoadBalancerNodePorts = utilpointer.BoolPtr(true) oldSvc.Spec.AllocateLoadBalancerNodePorts = utilpointer.BoolPtr(true)
newSvc.Spec.Type = core.ServiceTypeNodePort newSvc.Spec.Type = core.ServiceTypeNodePort
newSvc.Spec.ExternalTrafficPolicy = core.ServiceExternalTrafficPolicyTypeCluster newSvc.Spec.ExternalTrafficPolicy = core.ServiceExternalTrafficPolicyCluster
oldSvc.Spec.ClusterIP = "" oldSvc.Spec.ClusterIP = ""
oldSvc.Spec.ClusterIPs = nil oldSvc.Spec.ClusterIPs = nil
@ -16056,7 +16056,7 @@ func TestValidateServiceUpdate(t *testing.T) {
tweakSvc: func(oldSvc, newSvc *core.Service) { tweakSvc: func(oldSvc, newSvc *core.Service) {
oldSvc.Spec.Type = core.ServiceTypeNodePort oldSvc.Spec.Type = core.ServiceTypeNodePort
newSvc.Spec.Type = core.ServiceTypeNodePort newSvc.Spec.Type = core.ServiceTypeNodePort
newSvc.Spec.ExternalTrafficPolicy = core.ServiceExternalTrafficPolicyTypeCluster newSvc.Spec.ExternalTrafficPolicy = core.ServiceExternalTrafficPolicyCluster
oldSvc.Spec.Ports = append(oldSvc.Spec.Ports, core.ServicePort{Name: "q", Port: 1, Protocol: "TCP", NodePort: 1, TargetPort: intstr.FromInt(1)}) oldSvc.Spec.Ports = append(oldSvc.Spec.Ports, core.ServicePort{Name: "q", Port: 1, Protocol: "TCP", NodePort: 1, TargetPort: intstr.FromInt(1)})
newSvc.Spec.Ports = append(newSvc.Spec.Ports, core.ServicePort{Name: "q", Port: 1, Protocol: "TCP", NodePort: 1, TargetPort: intstr.FromInt(1)}) newSvc.Spec.Ports = append(newSvc.Spec.Ports, core.ServicePort{Name: "q", Port: 1, Protocol: "TCP", NodePort: 1, TargetPort: intstr.FromInt(1)})
@ -16509,7 +16509,7 @@ func TestValidateServiceUpdate(t *testing.T) {
oldSvc.Spec.LoadBalancerClass = utilpointer.StringPtr("test.com/test-old") oldSvc.Spec.LoadBalancerClass = utilpointer.StringPtr("test.com/test-old")
newSvc.Spec.Type = core.ServiceTypeLoadBalancer newSvc.Spec.Type = core.ServiceTypeLoadBalancer
newSvc.Spec.ExternalTrafficPolicy = core.ServiceExternalTrafficPolicyTypeCluster newSvc.Spec.ExternalTrafficPolicy = core.ServiceExternalTrafficPolicyCluster
newSvc.Spec.AllocateLoadBalancerNodePorts = utilpointer.BoolPtr(true) newSvc.Spec.AllocateLoadBalancerNodePorts = utilpointer.BoolPtr(true)
newSvc.Spec.LoadBalancerClass = utilpointer.StringPtr("test.com/test-old") newSvc.Spec.LoadBalancerClass = utilpointer.StringPtr("test.com/test-old")
}, },
@ -16523,7 +16523,7 @@ func TestValidateServiceUpdate(t *testing.T) {
oldSvc.Spec.LoadBalancerClass = utilpointer.StringPtr("test.com/test-old") oldSvc.Spec.LoadBalancerClass = utilpointer.StringPtr("test.com/test-old")
newSvc.Spec.Type = core.ServiceTypeLoadBalancer newSvc.Spec.Type = core.ServiceTypeLoadBalancer
newSvc.Spec.ExternalTrafficPolicy = core.ServiceExternalTrafficPolicyTypeCluster newSvc.Spec.ExternalTrafficPolicy = core.ServiceExternalTrafficPolicyCluster
newSvc.Spec.AllocateLoadBalancerNodePorts = utilpointer.BoolPtr(true) newSvc.Spec.AllocateLoadBalancerNodePorts = utilpointer.BoolPtr(true)
newSvc.Spec.LoadBalancerClass = utilpointer.StringPtr("test.com/test-new") newSvc.Spec.LoadBalancerClass = utilpointer.StringPtr("test.com/test-new")
}, },
@ -16537,7 +16537,7 @@ func TestValidateServiceUpdate(t *testing.T) {
oldSvc.Spec.LoadBalancerClass = utilpointer.StringPtr("test.com/test-old") oldSvc.Spec.LoadBalancerClass = utilpointer.StringPtr("test.com/test-old")
newSvc.Spec.Type = core.ServiceTypeLoadBalancer newSvc.Spec.Type = core.ServiceTypeLoadBalancer
newSvc.Spec.ExternalTrafficPolicy = core.ServiceExternalTrafficPolicyTypeCluster newSvc.Spec.ExternalTrafficPolicy = core.ServiceExternalTrafficPolicyCluster
newSvc.Spec.AllocateLoadBalancerNodePorts = utilpointer.BoolPtr(true) newSvc.Spec.AllocateLoadBalancerNodePorts = utilpointer.BoolPtr(true)
newSvc.Spec.LoadBalancerClass = nil newSvc.Spec.LoadBalancerClass = nil
}, },
@ -16551,7 +16551,7 @@ func TestValidateServiceUpdate(t *testing.T) {
oldSvc.Spec.LoadBalancerClass = nil oldSvc.Spec.LoadBalancerClass = nil
newSvc.Spec.Type = core.ServiceTypeLoadBalancer newSvc.Spec.Type = core.ServiceTypeLoadBalancer
newSvc.Spec.ExternalTrafficPolicy = core.ServiceExternalTrafficPolicyTypeCluster newSvc.Spec.ExternalTrafficPolicy = core.ServiceExternalTrafficPolicyCluster
newSvc.Spec.AllocateLoadBalancerNodePorts = utilpointer.BoolPtr(true) newSvc.Spec.AllocateLoadBalancerNodePorts = utilpointer.BoolPtr(true)
newSvc.Spec.LoadBalancerClass = utilpointer.StringPtr("test.com/test-new") newSvc.Spec.LoadBalancerClass = utilpointer.StringPtr("test.com/test-new")
}, },
@ -16563,7 +16563,7 @@ func TestValidateServiceUpdate(t *testing.T) {
oldSvc.Spec.Type = core.ServiceTypeClusterIP oldSvc.Spec.Type = core.ServiceTypeClusterIP
newSvc.Spec.Type = core.ServiceTypeLoadBalancer newSvc.Spec.Type = core.ServiceTypeLoadBalancer
newSvc.Spec.ExternalTrafficPolicy = core.ServiceExternalTrafficPolicyTypeCluster newSvc.Spec.ExternalTrafficPolicy = core.ServiceExternalTrafficPolicyCluster
newSvc.Spec.AllocateLoadBalancerNodePorts = utilpointer.BoolPtr(true) newSvc.Spec.AllocateLoadBalancerNodePorts = utilpointer.BoolPtr(true)
newSvc.Spec.LoadBalancerClass = utilpointer.StringPtr("test.com/test-load-balancer-class") newSvc.Spec.LoadBalancerClass = utilpointer.StringPtr("test.com/test-load-balancer-class")
}, },
@ -16575,7 +16575,7 @@ func TestValidateServiceUpdate(t *testing.T) {
oldSvc.Spec.Type = core.ServiceTypeClusterIP oldSvc.Spec.Type = core.ServiceTypeClusterIP
newSvc.Spec.Type = core.ServiceTypeLoadBalancer newSvc.Spec.Type = core.ServiceTypeLoadBalancer
newSvc.Spec.ExternalTrafficPolicy = core.ServiceExternalTrafficPolicyTypeCluster newSvc.Spec.ExternalTrafficPolicy = core.ServiceExternalTrafficPolicyCluster
newSvc.Spec.AllocateLoadBalancerNodePorts = utilpointer.BoolPtr(true) newSvc.Spec.AllocateLoadBalancerNodePorts = utilpointer.BoolPtr(true)
newSvc.Spec.LoadBalancerClass = nil newSvc.Spec.LoadBalancerClass = nil
}, },
@ -16587,7 +16587,7 @@ func TestValidateServiceUpdate(t *testing.T) {
oldSvc.Spec.Type = core.ServiceTypeClusterIP oldSvc.Spec.Type = core.ServiceTypeClusterIP
newSvc.Spec.Type = core.ServiceTypeLoadBalancer newSvc.Spec.Type = core.ServiceTypeLoadBalancer
newSvc.Spec.ExternalTrafficPolicy = core.ServiceExternalTrafficPolicyTypeCluster newSvc.Spec.ExternalTrafficPolicy = core.ServiceExternalTrafficPolicyCluster
newSvc.Spec.AllocateLoadBalancerNodePorts = utilpointer.BoolPtr(true) newSvc.Spec.AllocateLoadBalancerNodePorts = utilpointer.BoolPtr(true)
newSvc.Spec.LoadBalancerClass = utilpointer.StringPtr("Bad/LoadBalancerclass") newSvc.Spec.LoadBalancerClass = utilpointer.StringPtr("Bad/LoadBalancerclass")
}, },
@ -16619,7 +16619,7 @@ func TestValidateServiceUpdate(t *testing.T) {
oldSvc.Spec.Type = core.ServiceTypeNodePort oldSvc.Spec.Type = core.ServiceTypeNodePort
newSvc.Spec.Type = core.ServiceTypeNodePort newSvc.Spec.Type = core.ServiceTypeNodePort
newSvc.Spec.ExternalTrafficPolicy = core.ServiceExternalTrafficPolicyTypeCluster newSvc.Spec.ExternalTrafficPolicy = core.ServiceExternalTrafficPolicyCluster
newSvc.Spec.LoadBalancerClass = utilpointer.StringPtr("test.com/test-load-balancer-class") newSvc.Spec.LoadBalancerClass = utilpointer.StringPtr("test.com/test-load-balancer-class")
}, },
numErrs: 2, numErrs: 2,
@ -16656,7 +16656,7 @@ func TestValidateServiceUpdate(t *testing.T) {
oldSvc.Spec.LoadBalancerClass = utilpointer.StringPtr("test.com/test-load-balancer-class") oldSvc.Spec.LoadBalancerClass = utilpointer.StringPtr("test.com/test-load-balancer-class")
newSvc.Spec.Type = core.ServiceTypeNodePort newSvc.Spec.Type = core.ServiceTypeNodePort
newSvc.Spec.ExternalTrafficPolicy = core.ServiceExternalTrafficPolicyTypeCluster newSvc.Spec.ExternalTrafficPolicy = core.ServiceExternalTrafficPolicyCluster
newSvc.Spec.LoadBalancerClass = utilpointer.StringPtr("test.com/test-load-balancer-class") newSvc.Spec.LoadBalancerClass = utilpointer.StringPtr("test.com/test-load-balancer-class")
}, },
numErrs: 2, numErrs: 2,

View File

@ -26359,10 +26359,10 @@ func schema_k8sio_api_core_v1_ServiceSpec(ref common.ReferenceCallback) common.O
}, },
"externalTrafficPolicy": { "externalTrafficPolicy": {
SchemaProps: spec.SchemaProps{ SchemaProps: spec.SchemaProps{
Description: "externalTrafficPolicy describes how nodes distribute service traffic they receive on one of the Service's \"externally-facing\" addresses (NodePorts, ExternalIPs, and LoadBalancer IPs). If set to \"Local\", the proxy will configure the service in a way that assumes that external load balancers will take care of balancing the service traffic between nodes, and so each node will deliver traffic only to the node-local endpoints of the service, without masquerading the client source IP. (Traffic mistakenly sent to a node with no endpoints will be dropped.) The default value, \"Cluster\", uses the standard behavior of routing to all endpoints evenly (possibly modified by topology and other features). Note that traffic sent to an External IP or LoadBalancer IP from within the cluster will always get \"Cluster\" semantics, but clients sending to a NodePort from within the cluster may need to take traffic policy into account when picking a node.\n\nPossible enum values:\n - `\"Cluster\"` routes traffic to all endpoints.\n - `\"Local\"` preserves the source IP of the traffic by routing only to endpoints on the same node as the traffic was received on (dropping the traffic if there are no local endpoints).", Description: "externalTrafficPolicy describes how nodes distribute service traffic they receive on one of the Service's \"externally-facing\" addresses (NodePorts, ExternalIPs, and LoadBalancer IPs). If set to \"Local\", the proxy will configure the service in a way that assumes that external load balancers will take care of balancing the service traffic between nodes, and so each node will deliver traffic only to the node-local endpoints of the service, without masquerading the client source IP. (Traffic mistakenly sent to a node with no endpoints will be dropped.) The default value, \"Cluster\", uses the standard behavior of routing to all endpoints evenly (possibly modified by topology and other features). Note that traffic sent to an External IP or LoadBalancer IP from within the cluster will always get \"Cluster\" semantics, but clients sending to a NodePort from within the cluster may need to take traffic policy into account when picking a node.\n\nPossible enum values:\n - `\"Cluster\"`\n - `\"Cluster\"` routes traffic to all endpoints.\n - `\"Local\"`\n - `\"Local\"` preserves the source IP of the traffic by routing only to endpoints on the same node as the traffic was received on (dropping the traffic if there are no local endpoints).",
Type: []string{"string"}, Type: []string{"string"},
Format: "", Format: "",
Enum: []interface{}{"Cluster", "Local"}}, Enum: []interface{}{"Cluster", "Cluster", "Local", "Local"}},
}, },
"healthCheckNodePort": { "healthCheckNodePort": {
SchemaProps: spec.SchemaProps{ SchemaProps: spec.SchemaProps{

View File

@ -158,7 +158,7 @@ func TestDeleteEndpointConnectionsIPv4(t *testing.T) {
Port: tc.svcPort, Port: tc.svcPort,
Protocol: tc.protocol, Protocol: tc.protocol,
}} }}
svc.Spec.ExternalTrafficPolicy = v1.ServiceExternalTrafficPolicyTypeLocal svc.Spec.ExternalTrafficPolicy = v1.ServiceExternalTrafficPolicyLocal
}), }),
) )
@ -301,7 +301,7 @@ func TestDeleteEndpointConnectionsIPv6(t *testing.T) {
Port: tc.svcPort, Port: tc.svcPort,
Protocol: tc.protocol, Protocol: tc.protocol,
}} }}
svc.Spec.ExternalTrafficPolicy = v1.ServiceExternalTrafficPolicyTypeLocal svc.Spec.ExternalTrafficPolicy = v1.ServiceExternalTrafficPolicyLocal
}), }),
) )
@ -1814,7 +1814,7 @@ func TestOverallIPTablesRulesWithMultipleServices(t *testing.T) {
// create LoadBalancer service with Local traffic policy // create LoadBalancer service with Local traffic policy
makeTestService("ns2", "svc2", func(svc *v1.Service) { makeTestService("ns2", "svc2", func(svc *v1.Service) {
svc.Spec.Type = "LoadBalancer" svc.Spec.Type = "LoadBalancer"
svc.Spec.ExternalTrafficPolicy = v1.ServiceExternalTrafficPolicyTypeLocal svc.Spec.ExternalTrafficPolicy = v1.ServiceExternalTrafficPolicyLocal
svc.Spec.ClusterIP = "172.30.0.42" svc.Spec.ClusterIP = "172.30.0.42"
svc.Spec.Ports = []v1.ServicePort{{ svc.Spec.Ports = []v1.ServicePort{{
Name: "p80", Name: "p80",
@ -1854,7 +1854,7 @@ func TestOverallIPTablesRulesWithMultipleServices(t *testing.T) {
// create LoadBalancer service with Cluster traffic policy and source ranges // create LoadBalancer service with Cluster traffic policy and source ranges
makeTestService("ns5", "svc5", func(svc *v1.Service) { makeTestService("ns5", "svc5", func(svc *v1.Service) {
svc.Spec.Type = "LoadBalancer" svc.Spec.Type = "LoadBalancer"
svc.Spec.ExternalTrafficPolicy = v1.ServiceExternalTrafficPolicyTypeCluster svc.Spec.ExternalTrafficPolicy = v1.ServiceExternalTrafficPolicyCluster
svc.Spec.ClusterIP = "172.30.0.45" svc.Spec.ClusterIP = "172.30.0.45"
svc.Spec.Ports = []v1.ServicePort{{ svc.Spec.Ports = []v1.ServicePort{{
Name: "p80", Name: "p80",
@ -2559,7 +2559,7 @@ func TestHealthCheckNodePort(t *testing.T) {
NodePort: int32(svcNodePort), NodePort: int32(svcNodePort),
}} }}
svc.Spec.HealthCheckNodePort = int32(svcHealthCheckNodePort) svc.Spec.HealthCheckNodePort = int32(svcHealthCheckNodePort)
svc.Spec.ExternalTrafficPolicy = v1.ServiceExternalTrafficPolicyTypeLocal svc.Spec.ExternalTrafficPolicy = v1.ServiceExternalTrafficPolicyLocal
}) })
makeServiceMap(fp, svc) makeServiceMap(fp, svc)
fp.syncProxyRules() fp.syncProxyRules()
@ -2743,7 +2743,7 @@ func TestOnlyLocalExternalIPs(t *testing.T) {
makeServiceMap(fp, makeServiceMap(fp,
makeTestService(svcPortName.Namespace, svcPortName.Name, func(svc *v1.Service) { makeTestService(svcPortName.Namespace, svcPortName.Name, func(svc *v1.Service) {
svc.Spec.Type = "NodePort" svc.Spec.Type = "NodePort"
svc.Spec.ExternalTrafficPolicy = v1.ServiceExternalTrafficPolicyTypeLocal svc.Spec.ExternalTrafficPolicy = v1.ServiceExternalTrafficPolicyLocal
svc.Spec.ClusterIP = svcIP svc.Spec.ClusterIP = svcIP
svc.Spec.ExternalIPs = []string{svcExternalIPs} svc.Spec.ExternalIPs = []string{svcExternalIPs}
svc.Spec.Ports = []v1.ServicePort{{ svc.Spec.Ports = []v1.ServicePort{{
@ -3054,7 +3054,7 @@ func TestLoadBalancerReject(t *testing.T) {
svc.Status.LoadBalancer.Ingress = []v1.LoadBalancerIngress{{ svc.Status.LoadBalancer.Ingress = []v1.LoadBalancerIngress{{
IP: svcLBIP, IP: svcLBIP,
}} }}
svc.Spec.ExternalTrafficPolicy = v1.ServiceExternalTrafficPolicyTypeLocal svc.Spec.ExternalTrafficPolicy = v1.ServiceExternalTrafficPolicyLocal
svc.Spec.SessionAffinity = v1.ServiceAffinityClientIP svc.Spec.SessionAffinity = v1.ServiceAffinityClientIP
svc.Spec.SessionAffinityConfig = &v1.SessionAffinityConfig{ svc.Spec.SessionAffinityConfig = &v1.SessionAffinityConfig{
ClientIP: &v1.ClientIPConfig{TimeoutSeconds: &svcSessionAffinityTimeout}, ClientIP: &v1.ClientIPConfig{TimeoutSeconds: &svcSessionAffinityTimeout},
@ -3147,7 +3147,7 @@ func TestOnlyLocalLoadBalancing(t *testing.T) {
svc.Status.LoadBalancer.Ingress = []v1.LoadBalancerIngress{{ svc.Status.LoadBalancer.Ingress = []v1.LoadBalancerIngress{{
IP: svcLBIP, IP: svcLBIP,
}} }}
svc.Spec.ExternalTrafficPolicy = v1.ServiceExternalTrafficPolicyTypeLocal svc.Spec.ExternalTrafficPolicy = v1.ServiceExternalTrafficPolicyLocal
svc.Spec.SessionAffinity = v1.ServiceAffinityClientIP svc.Spec.SessionAffinity = v1.ServiceAffinityClientIP
svc.Spec.SessionAffinityConfig = &v1.SessionAffinityConfig{ svc.Spec.SessionAffinityConfig = &v1.SessionAffinityConfig{
ClientIP: &v1.ClientIPConfig{TimeoutSeconds: &svcSessionAffinityTimeout}, ClientIP: &v1.ClientIPConfig{TimeoutSeconds: &svcSessionAffinityTimeout},
@ -3319,7 +3319,7 @@ func TestEnableLocalhostNodePortsIPv4(t *testing.T) {
Protocol: v1.ProtocolTCP, Protocol: v1.ProtocolTCP,
NodePort: int32(svcNodePort), NodePort: int32(svcNodePort),
}} }}
svc.Spec.ExternalTrafficPolicy = v1.ServiceExternalTrafficPolicyTypeLocal svc.Spec.ExternalTrafficPolicy = v1.ServiceExternalTrafficPolicyLocal
}), }),
) )
@ -3413,7 +3413,7 @@ func TestDisableLocalhostNodePortsIPv4(t *testing.T) {
Protocol: v1.ProtocolTCP, Protocol: v1.ProtocolTCP,
NodePort: int32(svcNodePort), NodePort: int32(svcNodePort),
}} }}
svc.Spec.ExternalTrafficPolicy = v1.ServiceExternalTrafficPolicyTypeLocal svc.Spec.ExternalTrafficPolicy = v1.ServiceExternalTrafficPolicyLocal
}), }),
) )
@ -3508,7 +3508,7 @@ func TestDisableLocalhostNodePortsIPv4WithNodeAddress(t *testing.T) {
Protocol: v1.ProtocolTCP, Protocol: v1.ProtocolTCP,
NodePort: int32(svcNodePort), NodePort: int32(svcNodePort),
}} }}
svc.Spec.ExternalTrafficPolicy = v1.ServiceExternalTrafficPolicyTypeLocal svc.Spec.ExternalTrafficPolicy = v1.ServiceExternalTrafficPolicyLocal
}), }),
) )
@ -3602,7 +3602,7 @@ func TestEnableLocalhostNodePortsIPv6(t *testing.T) {
Protocol: v1.ProtocolTCP, Protocol: v1.ProtocolTCP,
NodePort: int32(svcNodePort), NodePort: int32(svcNodePort),
}} }}
svc.Spec.ExternalTrafficPolicy = v1.ServiceExternalTrafficPolicyTypeLocal svc.Spec.ExternalTrafficPolicy = v1.ServiceExternalTrafficPolicyLocal
}), }),
) )
@ -3696,7 +3696,7 @@ func TestDisableLocalhostNodePortsIPv6(t *testing.T) {
Protocol: v1.ProtocolTCP, Protocol: v1.ProtocolTCP,
NodePort: int32(svcNodePort), NodePort: int32(svcNodePort),
}} }}
svc.Spec.ExternalTrafficPolicy = v1.ServiceExternalTrafficPolicyTypeLocal svc.Spec.ExternalTrafficPolicy = v1.ServiceExternalTrafficPolicyLocal
}), }),
) )
@ -3844,7 +3844,7 @@ func onlyLocalNodePorts(t *testing.T, fp *Proxier, ipt *iptablestest.FakeIPTable
Protocol: v1.ProtocolTCP, Protocol: v1.ProtocolTCP,
NodePort: int32(svcNodePort), NodePort: int32(svcNodePort),
}} }}
svc.Spec.ExternalTrafficPolicy = v1.ServiceExternalTrafficPolicyTypeLocal svc.Spec.ExternalTrafficPolicy = v1.ServiceExternalTrafficPolicyLocal
}), }),
) )
@ -4026,7 +4026,7 @@ func TestBuildServiceMapAddRemove(t *testing.T) {
{IP: "5.6.7.8"}, {IP: "5.6.7.8"},
}, },
} }
svc.Spec.ExternalTrafficPolicy = v1.ServiceExternalTrafficPolicyTypeLocal svc.Spec.ExternalTrafficPolicy = v1.ServiceExternalTrafficPolicyLocal
svc.Spec.HealthCheckNodePort = 345 svc.Spec.HealthCheckNodePort = 345
}), }),
} }
@ -4169,7 +4169,7 @@ func TestBuildServiceMapServiceUpdate(t *testing.T) {
{IP: "1.2.3.4"}, {IP: "1.2.3.4"},
}, },
} }
svc.Spec.ExternalTrafficPolicy = v1.ServiceExternalTrafficPolicyTypeLocal svc.Spec.ExternalTrafficPolicy = v1.ServiceExternalTrafficPolicyLocal
svc.Spec.HealthCheckNodePort = 345 svc.Spec.HealthCheckNodePort = 345
}) })
@ -5830,7 +5830,7 @@ func TestEndpointSliceWithTerminatingEndpointsTrafficPolicyLocal(t *testing.T) {
Spec: v1.ServiceSpec{ Spec: v1.ServiceSpec{
ClusterIP: "172.30.1.1", ClusterIP: "172.30.1.1",
Type: v1.ServiceTypeLoadBalancer, Type: v1.ServiceTypeLoadBalancer,
ExternalTrafficPolicy: v1.ServiceExternalTrafficPolicyTypeLocal, ExternalTrafficPolicy: v1.ServiceExternalTrafficPolicyLocal,
Selector: map[string]string{"foo": "bar"}, Selector: map[string]string{"foo": "bar"},
Ports: []v1.ServicePort{ Ports: []v1.ServicePort{
{ {
@ -6615,7 +6615,7 @@ func TestEndpointSliceWithTerminatingEndpointsTrafficPolicyCluster(t *testing.T)
Spec: v1.ServiceSpec{ Spec: v1.ServiceSpec{
ClusterIP: "172.30.1.1", ClusterIP: "172.30.1.1",
Type: v1.ServiceTypeLoadBalancer, Type: v1.ServiceTypeLoadBalancer,
ExternalTrafficPolicy: v1.ServiceExternalTrafficPolicyTypeCluster, ExternalTrafficPolicy: v1.ServiceExternalTrafficPolicyCluster,
Selector: map[string]string{"foo": "bar"}, Selector: map[string]string{"foo": "bar"},
Ports: []v1.ServicePort{ Ports: []v1.ServicePort{
{ {
@ -7383,7 +7383,7 @@ func TestInternalExternalMasquerade(t *testing.T) {
NodePort: int32(3002), NodePort: int32(3002),
}} }}
svc.Spec.HealthCheckNodePort = 30002 svc.Spec.HealthCheckNodePort = 30002
svc.Spec.ExternalTrafficPolicy = v1.ServiceExternalTrafficPolicyTypeLocal svc.Spec.ExternalTrafficPolicy = v1.ServiceExternalTrafficPolicyLocal
svc.Status.LoadBalancer.Ingress = []v1.LoadBalancerIngress{{ svc.Status.LoadBalancer.Ingress = []v1.LoadBalancerIngress{{
IP: "5.6.7.8", IP: "5.6.7.8",
}} }}
@ -8637,13 +8637,13 @@ func TestNoEndpointsMetric(t *testing.T) {
} }
internalTrafficPolicyLocal := v1.ServiceInternalTrafficPolicyLocal internalTrafficPolicyLocal := v1.ServiceInternalTrafficPolicyLocal
externalTrafficPolicyLocal := v1.ServiceExternalTrafficPolicyTypeLocal externalTrafficPolicyLocal := v1.ServiceExternalTrafficPolicyLocal
metrics.RegisterMetrics() metrics.RegisterMetrics()
testCases := []struct { testCases := []struct {
name string name string
internalTrafficPolicy *v1.ServiceInternalTrafficPolicyType internalTrafficPolicy *v1.ServiceInternalTrafficPolicyType
externalTrafficPolicy v1.ServiceExternalTrafficPolicyType externalTrafficPolicy v1.ServiceExternalTrafficPolicy
endpoints []endpoint endpoints []endpoint
expectedSyncProxyRulesNoLocalEndpointsTotalInternal int expectedSyncProxyRulesNoLocalEndpointsTotalInternal int
expectedSyncProxyRulesNoLocalEndpointsTotalExternal int expectedSyncProxyRulesNoLocalEndpointsTotalExternal int

View File

@ -900,7 +900,7 @@ func TestNodePortIPv4(t *testing.T) {
Protocol: v1.ProtocolSCTP, Protocol: v1.ProtocolSCTP,
NodePort: int32(3001), NodePort: int32(3001),
}} }}
svc.Spec.ExternalTrafficPolicy = v1.ServiceExternalTrafficPolicyTypeLocal svc.Spec.ExternalTrafficPolicy = v1.ServiceExternalTrafficPolicyLocal
}), }),
}, },
endpoints: []*discovery.EndpointSlice{ endpoints: []*discovery.EndpointSlice{
@ -1932,7 +1932,7 @@ func TestOnlyLocalExternalIPs(t *testing.T) {
Protocol: v1.ProtocolTCP, Protocol: v1.ProtocolTCP,
TargetPort: intstr.FromInt(svcPort), TargetPort: intstr.FromInt(svcPort),
}} }}
svc.Spec.ExternalTrafficPolicy = v1.ServiceExternalTrafficPolicyTypeLocal svc.Spec.ExternalTrafficPolicy = v1.ServiceExternalTrafficPolicyLocal
}), }),
) )
epIP := "10.180.0.1" epIP := "10.180.0.1"
@ -2098,7 +2098,7 @@ func TestOnlyLocalNodePorts(t *testing.T) {
Protocol: v1.ProtocolTCP, Protocol: v1.ProtocolTCP,
NodePort: int32(svcNodePort), NodePort: int32(svcNodePort),
}} }}
svc.Spec.ExternalTrafficPolicy = v1.ServiceExternalTrafficPolicyTypeLocal svc.Spec.ExternalTrafficPolicy = v1.ServiceExternalTrafficPolicyLocal
}), }),
) )
@ -2198,14 +2198,14 @@ func TestHealthCheckNodePort(t *testing.T) {
Protocol: v1.ProtocolTCP, Protocol: v1.ProtocolTCP,
NodePort: int32(svcNodePort), NodePort: int32(svcNodePort),
}} }}
svc.Spec.ExternalTrafficPolicy = v1.ServiceExternalTrafficPolicyTypeLocal svc.Spec.ExternalTrafficPolicy = v1.ServiceExternalTrafficPolicyLocal
}) })
svc1, svc2, invalidSvc3 := *sampleSvc, *sampleSvc, *sampleSvc svc1, svc2, invalidSvc3 := *sampleSvc, *sampleSvc, *sampleSvc
svc1.Name, svc1.Spec.HealthCheckNodePort = "valid-svc1", 30000 svc1.Name, svc1.Spec.HealthCheckNodePort = "valid-svc1", 30000
svc2.Name, svc2.Spec.HealthCheckNodePort = "valid-svc2", 30001 svc2.Name, svc2.Spec.HealthCheckNodePort = "valid-svc2", 30001
// make svc3 invalid by setting external traffic policy to cluster // make svc3 invalid by setting external traffic policy to cluster
invalidSvc3.Spec.ExternalTrafficPolicy = v1.ServiceExternalTrafficPolicyTypeCluster invalidSvc3.Spec.ExternalTrafficPolicy = v1.ServiceExternalTrafficPolicyCluster
invalidSvc3.Name, invalidSvc3.Spec.HealthCheckNodePort = "invalid-svc3", 30002 invalidSvc3.Name, invalidSvc3.Spec.HealthCheckNodePort = "invalid-svc3", 30002
makeServiceMap(fp, makeServiceMap(fp,
@ -2453,7 +2453,7 @@ func TestOnlyLocalLoadBalancing(t *testing.T) {
svc.Status.LoadBalancer.Ingress = []v1.LoadBalancerIngress{{ svc.Status.LoadBalancer.Ingress = []v1.LoadBalancerIngress{{
IP: svcLBIP, IP: svcLBIP,
}} }}
svc.Spec.ExternalTrafficPolicy = v1.ServiceExternalTrafficPolicyTypeLocal svc.Spec.ExternalTrafficPolicy = v1.ServiceExternalTrafficPolicyLocal
}), }),
) )
@ -2591,7 +2591,7 @@ func TestBuildServiceMapAddRemove(t *testing.T) {
{IP: "10.1.2.3"}, {IP: "10.1.2.3"},
}, },
} }
svc.Spec.ExternalTrafficPolicy = v1.ServiceExternalTrafficPolicyTypeLocal svc.Spec.ExternalTrafficPolicy = v1.ServiceExternalTrafficPolicyLocal
svc.Spec.HealthCheckNodePort = 345 svc.Spec.HealthCheckNodePort = 345
}), }),
} }
@ -2745,7 +2745,7 @@ func TestBuildServiceMapServiceUpdate(t *testing.T) {
{IP: "10.1.2.3"}, {IP: "10.1.2.3"},
}, },
} }
svc.Spec.ExternalTrafficPolicy = v1.ServiceExternalTrafficPolicyTypeLocal svc.Spec.ExternalTrafficPolicy = v1.ServiceExternalTrafficPolicyLocal
svc.Spec.HealthCheckNodePort = 345 svc.Spec.HealthCheckNodePort = 345
}) })
@ -4593,7 +4593,7 @@ func TestHealthCheckNodePortE2E(t *testing.T) {
Ports: []v1.ServicePort{{Name: "", TargetPort: intstr.FromInt(80), Protocol: v1.ProtocolTCP}}, Ports: []v1.ServicePort{{Name: "", TargetPort: intstr.FromInt(80), Protocol: v1.ProtocolTCP}},
Type: "LoadBalancer", Type: "LoadBalancer",
HealthCheckNodePort: 30000, HealthCheckNodePort: 30000,
ExternalTrafficPolicy: v1.ServiceExternalTrafficPolicyTypeLocal, ExternalTrafficPolicy: v1.ServiceExternalTrafficPolicyLocal,
}, },
} }
fp.OnServiceAdd(&svc) fp.OnServiceAdd(&svc)
@ -4994,7 +4994,7 @@ func Test_EndpointSliceReadyAndTerminatingCluster(t *testing.T) {
ClusterIP: "172.20.1.1", ClusterIP: "172.20.1.1",
Selector: map[string]string{"foo": "bar"}, Selector: map[string]string{"foo": "bar"},
Type: v1.ServiceTypeNodePort, Type: v1.ServiceTypeNodePort,
ExternalTrafficPolicy: v1.ServiceExternalTrafficPolicyTypeCluster, ExternalTrafficPolicy: v1.ServiceExternalTrafficPolicyCluster,
InternalTrafficPolicy: &clusterInternalTrafficPolicy, InternalTrafficPolicy: &clusterInternalTrafficPolicy,
ExternalIPs: []string{ ExternalIPs: []string{
"1.2.3.4", "1.2.3.4",
@ -5171,7 +5171,7 @@ func Test_EndpointSliceReadyAndTerminatingLocal(t *testing.T) {
ClusterIP: "172.20.1.1", ClusterIP: "172.20.1.1",
Selector: map[string]string{"foo": "bar"}, Selector: map[string]string{"foo": "bar"},
Type: v1.ServiceTypeNodePort, Type: v1.ServiceTypeNodePort,
ExternalTrafficPolicy: v1.ServiceExternalTrafficPolicyTypeLocal, ExternalTrafficPolicy: v1.ServiceExternalTrafficPolicyLocal,
InternalTrafficPolicy: &clusterInternalTrafficPolicy, InternalTrafficPolicy: &clusterInternalTrafficPolicy,
ExternalIPs: []string{ ExternalIPs: []string{
"1.2.3.4", "1.2.3.4",
@ -5347,7 +5347,7 @@ func Test_EndpointSliceOnlyReadyAndTerminatingCluster(t *testing.T) {
ClusterIP: "172.20.1.1", ClusterIP: "172.20.1.1",
Selector: map[string]string{"foo": "bar"}, Selector: map[string]string{"foo": "bar"},
Type: v1.ServiceTypeNodePort, Type: v1.ServiceTypeNodePort,
ExternalTrafficPolicy: v1.ServiceExternalTrafficPolicyTypeCluster, ExternalTrafficPolicy: v1.ServiceExternalTrafficPolicyCluster,
InternalTrafficPolicy: &clusterInternalTrafficPolicy, InternalTrafficPolicy: &clusterInternalTrafficPolicy,
ExternalIPs: []string{ ExternalIPs: []string{
"1.2.3.4", "1.2.3.4",
@ -5523,7 +5523,7 @@ func Test_EndpointSliceOnlyReadyAndTerminatingLocal(t *testing.T) {
ClusterIP: "172.20.1.1", ClusterIP: "172.20.1.1",
Selector: map[string]string{"foo": "bar"}, Selector: map[string]string{"foo": "bar"},
Type: v1.ServiceTypeNodePort, Type: v1.ServiceTypeNodePort,
ExternalTrafficPolicy: v1.ServiceExternalTrafficPolicyTypeLocal, ExternalTrafficPolicy: v1.ServiceExternalTrafficPolicyLocal,
InternalTrafficPolicy: &clusterInternalTrafficPolicy, InternalTrafficPolicy: &clusterInternalTrafficPolicy,
ExternalIPs: []string{ ExternalIPs: []string{
"1.2.3.4", "1.2.3.4",
@ -5696,7 +5696,7 @@ func Test_EndpointSliceOnlyReadyAndTerminatingLocalWithFeatureGateDisabled(t *te
ClusterIP: "172.20.1.1", ClusterIP: "172.20.1.1",
Selector: map[string]string{"foo": "bar"}, Selector: map[string]string{"foo": "bar"},
Type: v1.ServiceTypeNodePort, Type: v1.ServiceTypeNodePort,
ExternalTrafficPolicy: v1.ServiceExternalTrafficPolicyTypeLocal, ExternalTrafficPolicy: v1.ServiceExternalTrafficPolicyLocal,
InternalTrafficPolicy: &clusterInternalTrafficPolicy, InternalTrafficPolicy: &clusterInternalTrafficPolicy,
ExternalIPs: []string{ ExternalIPs: []string{
"1.2.3.4", "1.2.3.4",
@ -5942,13 +5942,13 @@ func TestNoEndpointsMetric(t *testing.T) {
} }
internalTrafficPolicyLocal := v1.ServiceInternalTrafficPolicyLocal internalTrafficPolicyLocal := v1.ServiceInternalTrafficPolicyLocal
externalTrafficPolicyLocal := v1.ServiceExternalTrafficPolicyTypeLocal externalTrafficPolicyLocal := v1.ServiceExternalTrafficPolicyLocal
metrics.RegisterMetrics() metrics.RegisterMetrics()
testCases := []struct { testCases := []struct {
name string name string
internalTrafficPolicy *v1.ServiceInternalTrafficPolicyType internalTrafficPolicy *v1.ServiceInternalTrafficPolicyType
externalTrafficPolicy v1.ServiceExternalTrafficPolicyType externalTrafficPolicy v1.ServiceExternalTrafficPolicy
endpoints []endpoint endpoints []endpoint
expectedSyncProxyRulesNoLocalEndpointsTotalInternal int expectedSyncProxyRulesNoLocalEndpointsTotalInternal int
expectedSyncProxyRulesNoLocalEndpointsTotalExternal int expectedSyncProxyRulesNoLocalEndpointsTotalExternal int

View File

@ -200,7 +200,7 @@ func TestServiceToServiceMap(t *testing.T) {
svc.Spec.Ports = addTestPort(svc.Spec.Ports, "portx", "UDP", 8677, 30063, 7002) svc.Spec.Ports = addTestPort(svc.Spec.Ports, "portx", "UDP", 8677, 30063, 7002)
svc.Spec.Ports = addTestPort(svc.Spec.Ports, "porty", "UDP", 8678, 30064, 7003) svc.Spec.Ports = addTestPort(svc.Spec.Ports, "porty", "UDP", 8678, 30064, 7003)
svc.Status.LoadBalancer.Ingress = []v1.LoadBalancerIngress{{IP: "10.1.2.3"}} svc.Status.LoadBalancer.Ingress = []v1.LoadBalancerIngress{{IP: "10.1.2.3"}}
svc.Spec.ExternalTrafficPolicy = v1.ServiceExternalTrafficPolicyTypeLocal svc.Spec.ExternalTrafficPolicy = v1.ServiceExternalTrafficPolicyLocal
svc.Spec.HealthCheckNodePort = 345 svc.Spec.HealthCheckNodePort = 345
}), }),
expected: map[ServicePortName]*BaseServicePortInfo{ expected: map[ServicePortName]*BaseServicePortInfo{
@ -651,7 +651,7 @@ func TestBuildServiceMapAddRemove(t *testing.T) {
{IP: "10.1.2.3"}, {IP: "10.1.2.3"},
}, },
} }
svc.Spec.ExternalTrafficPolicy = v1.ServiceExternalTrafficPolicyTypeLocal svc.Spec.ExternalTrafficPolicy = v1.ServiceExternalTrafficPolicyLocal
svc.Spec.HealthCheckNodePort = 345 svc.Spec.HealthCheckNodePort = 345
}), }),
} }
@ -751,7 +751,7 @@ func TestBuildServiceMapServiceUpdate(t *testing.T) {
{IP: "10.1.2.3"}, {IP: "10.1.2.3"},
}, },
} }
svc.Spec.ExternalTrafficPolicy = v1.ServiceExternalTrafficPolicyTypeLocal svc.Spec.ExternalTrafficPolicy = v1.ServiceExternalTrafficPolicyLocal
svc.Spec.HealthCheckNodePort = 345 svc.Spec.HealthCheckNodePort = 345
}) })

View File

@ -461,7 +461,7 @@ func (refCountMap endPointsReferenceCountMap) getRefCount(hnsID string) *uint16
func (proxier *Proxier) newServiceInfo(port *v1.ServicePort, service *v1.Service, bsvcPortInfo *proxy.BaseServicePortInfo) proxy.ServicePort { func (proxier *Proxier) newServiceInfo(port *v1.ServicePort, service *v1.Service, bsvcPortInfo *proxy.BaseServicePortInfo) proxy.ServicePort {
info := &serviceInfo{BaseServicePortInfo: bsvcPortInfo} info := &serviceInfo{BaseServicePortInfo: bsvcPortInfo}
preserveDIP := service.Annotations["preserve-destination"] == "true" preserveDIP := service.Annotations["preserve-destination"] == "true"
localTrafficDSR := service.Spec.ExternalTrafficPolicy == v1.ServiceExternalTrafficPolicyTypeLocal localTrafficDSR := service.Spec.ExternalTrafficPolicy == v1.ServiceExternalTrafficPolicyLocal
err := hcn.DSRSupported() err := hcn.DSRSupported()
if err != nil { if err != nil {
preserveDIP = false preserveDIP = false

View File

@ -740,7 +740,7 @@ func TestCreateDsrLoadBalancer(t *testing.T) {
makeTestService(svcPortName.Namespace, svcPortName.Name, func(svc *v1.Service) { makeTestService(svcPortName.Namespace, svcPortName.Name, func(svc *v1.Service) {
svc.Spec.Type = "NodePort" svc.Spec.Type = "NodePort"
svc.Spec.ClusterIP = svcIP svc.Spec.ClusterIP = svcIP
svc.Spec.ExternalTrafficPolicy = v1.ServiceExternalTrafficPolicyTypeLocal svc.Spec.ExternalTrafficPolicy = v1.ServiceExternalTrafficPolicyLocal
svc.Spec.Ports = []v1.ServicePort{{ svc.Spec.Ports = []v1.ServicePort{{
Name: svcPortName.Port, Name: svcPortName.Port,
Port: int32(svcPort), Port: int32(svcPort),

View File

@ -652,7 +652,7 @@ func needsHCNodePort(svc *api.Service) bool {
if svc.Spec.Type != api.ServiceTypeLoadBalancer { if svc.Spec.Type != api.ServiceTypeLoadBalancer {
return false return false
} }
if svc.Spec.ExternalTrafficPolicy != api.ServiceExternalTrafficPolicyTypeLocal { if svc.Spec.ExternalTrafficPolicy != api.ServiceExternalTrafficPolicyLocal {
return false return false
} }
return true return true

View File

@ -436,13 +436,13 @@ func TestPatchAllocatedValues(t *testing.T) {
name: "all_patched", name: "all_patched",
before: svctest.MakeService("foo", before: svctest.MakeService("foo",
svctest.SetTypeLoadBalancer, svctest.SetTypeLoadBalancer,
svctest.SetExternalTrafficPolicy(api.ServiceExternalTrafficPolicyTypeLocal), svctest.SetExternalTrafficPolicy(api.ServiceExternalTrafficPolicyLocal),
svctest.SetClusterIPs("10.0.0.93", "2000::76"), svctest.SetClusterIPs("10.0.0.93", "2000::76"),
svctest.SetUniqueNodePorts, svctest.SetUniqueNodePorts,
svctest.SetHealthCheckNodePort(31234)), svctest.SetHealthCheckNodePort(31234)),
update: svctest.MakeService("foo", update: svctest.MakeService("foo",
svctest.SetTypeLoadBalancer, svctest.SetTypeLoadBalancer,
svctest.SetExternalTrafficPolicy(api.ServiceExternalTrafficPolicyTypeLocal)), svctest.SetExternalTrafficPolicy(api.ServiceExternalTrafficPolicyLocal)),
expectSameClusterIPs: true, expectSameClusterIPs: true,
expectSameNodePort: true, expectSameNodePort: true,
expectSameHCNP: true, expectSameHCNP: true,
@ -474,13 +474,13 @@ func TestPatchAllocatedValues(t *testing.T) {
name: "HCNP_patched", name: "HCNP_patched",
before: svctest.MakeService("foo", before: svctest.MakeService("foo",
svctest.SetTypeLoadBalancer, svctest.SetTypeLoadBalancer,
svctest.SetExternalTrafficPolicy(api.ServiceExternalTrafficPolicyTypeLocal), svctest.SetExternalTrafficPolicy(api.ServiceExternalTrafficPolicyLocal),
svctest.SetClusterIPs("10.0.0.93", "2000::76"), svctest.SetClusterIPs("10.0.0.93", "2000::76"),
svctest.SetUniqueNodePorts, svctest.SetUniqueNodePorts,
svctest.SetHealthCheckNodePort(31234)), svctest.SetHealthCheckNodePort(31234)),
update: svctest.MakeService("foo", update: svctest.MakeService("foo",
svctest.SetTypeLoadBalancer, svctest.SetTypeLoadBalancer,
svctest.SetExternalTrafficPolicy(api.ServiceExternalTrafficPolicyTypeLocal), svctest.SetExternalTrafficPolicy(api.ServiceExternalTrafficPolicyLocal),
svctest.SetClusterIPs("10.0.0.93", "2000::76"), svctest.SetClusterIPs("10.0.0.93", "2000::76"),
svctest.SetUniqueNodePorts), svctest.SetUniqueNodePorts),
expectSameClusterIPs: true, expectSameClusterIPs: true,
@ -491,13 +491,13 @@ func TestPatchAllocatedValues(t *testing.T) {
before: svctest.MakeService("foo", before: svctest.MakeService("foo",
svctest.SetTypeExternalName, svctest.SetTypeExternalName,
// these are not valid, but prove the test // these are not valid, but prove the test
svctest.SetExternalTrafficPolicy(api.ServiceExternalTrafficPolicyTypeLocal), svctest.SetExternalTrafficPolicy(api.ServiceExternalTrafficPolicyLocal),
svctest.SetClusterIPs("10.0.0.93", "2000::76"), svctest.SetClusterIPs("10.0.0.93", "2000::76"),
svctest.SetUniqueNodePorts, svctest.SetUniqueNodePorts,
svctest.SetHealthCheckNodePort(31234)), svctest.SetHealthCheckNodePort(31234)),
update: svctest.MakeService("foo", update: svctest.MakeService("foo",
svctest.SetTypeExternalName, svctest.SetTypeExternalName,
svctest.SetExternalTrafficPolicy(api.ServiceExternalTrafficPolicyTypeLocal)), svctest.SetExternalTrafficPolicy(api.ServiceExternalTrafficPolicyLocal)),
}} }}
for _, tc := range testCases { for _, tc := range testCases {
@ -973,41 +973,41 @@ func TestVerifyEquiv(t *testing.T) {
name: "HealthCheckNodePort_unspecified", name: "HealthCheckNodePort_unspecified",
input: svcTestCase{ input: svcTestCase{
svc: svctest.MakeService("foo", svctest.SetTypeLoadBalancer, svc: svctest.MakeService("foo", svctest.SetTypeLoadBalancer,
svctest.SetExternalTrafficPolicy(api.ServiceExternalTrafficPolicyTypeLocal)), svctest.SetExternalTrafficPolicy(api.ServiceExternalTrafficPolicyLocal)),
expectClusterIPs: true, expectClusterIPs: true,
expectNodePorts: true, expectNodePorts: true,
expectHealthCheckNodePort: true, expectHealthCheckNodePort: true,
}, },
output: svctest.MakeService("foo", svctest.SetTypeLoadBalancer, output: svctest.MakeService("foo", svctest.SetTypeLoadBalancer,
svctest.SetExternalTrafficPolicy(api.ServiceExternalTrafficPolicyTypeLocal), svctest.SetExternalTrafficPolicy(api.ServiceExternalTrafficPolicyLocal),
svctest.SetHealthCheckNodePort(93)), svctest.SetHealthCheckNodePort(93)),
expect: true, expect: true,
}, { }, {
name: "HealthCheckNodePort_specified", name: "HealthCheckNodePort_specified",
input: svcTestCase{ input: svcTestCase{
svc: svctest.MakeService("foo", svctest.SetTypeLoadBalancer, svc: svctest.MakeService("foo", svctest.SetTypeLoadBalancer,
svctest.SetExternalTrafficPolicy(api.ServiceExternalTrafficPolicyTypeLocal), svctest.SetExternalTrafficPolicy(api.ServiceExternalTrafficPolicyLocal),
svctest.SetHealthCheckNodePort(93)), svctest.SetHealthCheckNodePort(93)),
expectClusterIPs: true, expectClusterIPs: true,
expectNodePorts: true, expectNodePorts: true,
expectHealthCheckNodePort: true, expectHealthCheckNodePort: true,
}, },
output: svctest.MakeService("foo", svctest.SetTypeLoadBalancer, output: svctest.MakeService("foo", svctest.SetTypeLoadBalancer,
svctest.SetExternalTrafficPolicy(api.ServiceExternalTrafficPolicyTypeLocal), svctest.SetExternalTrafficPolicy(api.ServiceExternalTrafficPolicyLocal),
svctest.SetHealthCheckNodePort(93)), svctest.SetHealthCheckNodePort(93)),
expect: true, expect: true,
}, { }, {
name: "HealthCheckNodePort_wrong", name: "HealthCheckNodePort_wrong",
input: svcTestCase{ input: svcTestCase{
svc: svctest.MakeService("foo", svctest.SetTypeLoadBalancer, svc: svctest.MakeService("foo", svctest.SetTypeLoadBalancer,
svctest.SetExternalTrafficPolicy(api.ServiceExternalTrafficPolicyTypeLocal), svctest.SetExternalTrafficPolicy(api.ServiceExternalTrafficPolicyLocal),
svctest.SetHealthCheckNodePort(93)), svctest.SetHealthCheckNodePort(93)),
expectClusterIPs: true, expectClusterIPs: true,
expectNodePorts: true, expectNodePorts: true,
expectHealthCheckNodePort: true, expectHealthCheckNodePort: true,
}, },
output: svctest.MakeService("foo", svctest.SetTypeLoadBalancer, output: svctest.MakeService("foo", svctest.SetTypeLoadBalancer,
svctest.SetExternalTrafficPolicy(api.ServiceExternalTrafficPolicyTypeLocal), svctest.SetExternalTrafficPolicy(api.ServiceExternalTrafficPolicyLocal),
svctest.SetHealthCheckNodePort(76)), svctest.SetHealthCheckNodePort(76)),
expect: false, expect: false,
}} }}
@ -6538,7 +6538,7 @@ func TestDeleteWithFinalizer(t *testing.T) {
// This will allocate cluster IPs, NodePort, and HealthCheckNodePort. // This will allocate cluster IPs, NodePort, and HealthCheckNodePort.
svc := svctest.MakeService(svcName, svctest.SetTypeLoadBalancer, svc := svctest.MakeService(svcName, svctest.SetTypeLoadBalancer,
svctest.SetExternalTrafficPolicy(api.ServiceExternalTrafficPolicyTypeLocal), svctest.SetExternalTrafficPolicy(api.ServiceExternalTrafficPolicyLocal),
func(s *api.Service) { func(s *api.Service) {
s.Finalizers = []string{"example.com/test"} s.Finalizers = []string{"example.com/test"}
}) })
@ -6613,7 +6613,7 @@ func TestDeleteDryRun(t *testing.T) {
svc: svctest.MakeService("foo", svc: svctest.MakeService("foo",
svctest.SetTypeLoadBalancer, svctest.SetTypeLoadBalancer,
svctest.SetIPFamilies(api.IPv4Protocol), svctest.SetIPFamilies(api.IPv4Protocol),
svctest.SetExternalTrafficPolicy(api.ServiceExternalTrafficPolicyTypeLocal)), svctest.SetExternalTrafficPolicy(api.ServiceExternalTrafficPolicyLocal)),
}, },
{ {
name: "v4v6", name: "v4v6",
@ -6621,7 +6621,7 @@ func TestDeleteDryRun(t *testing.T) {
svctest.SetTypeLoadBalancer, svctest.SetTypeLoadBalancer,
svctest.SetIPFamilyPolicy(api.IPFamilyPolicyRequireDualStack), svctest.SetIPFamilyPolicy(api.IPFamilyPolicyRequireDualStack),
svctest.SetIPFamilies(api.IPv4Protocol, api.IPv6Protocol), svctest.SetIPFamilies(api.IPv4Protocol, api.IPv6Protocol),
svctest.SetExternalTrafficPolicy(api.ServiceExternalTrafficPolicyTypeLocal)), svctest.SetExternalTrafficPolicy(api.ServiceExternalTrafficPolicyLocal)),
}} }}
for _, tc := range testCases { for _, tc := range testCases {
@ -6669,13 +6669,13 @@ func TestUpdateDryRun(t *testing.T) {
clusterFamilies: []api.IPFamily{api.IPv4Protocol}, clusterFamilies: []api.IPFamily{api.IPv4Protocol},
svc: svctest.MakeService("foo", svctest.SetTypeExternalName), svc: svctest.MakeService("foo", svctest.SetTypeExternalName),
update: svctest.MakeService("foo", svctest.SetTypeLoadBalancer, update: svctest.MakeService("foo", svctest.SetTypeLoadBalancer,
svctest.SetExternalTrafficPolicy(api.ServiceExternalTrafficPolicyTypeLocal)), svctest.SetExternalTrafficPolicy(api.ServiceExternalTrafficPolicyLocal)),
verifyDryAllocs: true, // make sure values were not allocated. verifyDryAllocs: true, // make sure values were not allocated.
}, { }, {
name: "singlestack:v4_Allocs-NoAllocs", name: "singlestack:v4_Allocs-NoAllocs",
clusterFamilies: []api.IPFamily{api.IPv4Protocol}, clusterFamilies: []api.IPFamily{api.IPv4Protocol},
svc: svctest.MakeService("foo", svctest.SetTypeLoadBalancer, svc: svctest.MakeService("foo", svctest.SetTypeLoadBalancer,
svctest.SetExternalTrafficPolicy(api.ServiceExternalTrafficPolicyTypeLocal)), svctest.SetExternalTrafficPolicy(api.ServiceExternalTrafficPolicyLocal)),
update: svctest.MakeService("foo", svctest.SetTypeExternalName), update: svctest.MakeService("foo", svctest.SetTypeExternalName),
verifyDryAllocs: false, // make sure values were not released. verifyDryAllocs: false, // make sure values were not released.
}, { }, {
@ -6683,13 +6683,13 @@ func TestUpdateDryRun(t *testing.T) {
clusterFamilies: []api.IPFamily{api.IPv6Protocol}, clusterFamilies: []api.IPFamily{api.IPv6Protocol},
svc: svctest.MakeService("foo", svctest.SetTypeExternalName), svc: svctest.MakeService("foo", svctest.SetTypeExternalName),
update: svctest.MakeService("foo", svctest.SetTypeLoadBalancer, update: svctest.MakeService("foo", svctest.SetTypeLoadBalancer,
svctest.SetExternalTrafficPolicy(api.ServiceExternalTrafficPolicyTypeLocal)), svctest.SetExternalTrafficPolicy(api.ServiceExternalTrafficPolicyLocal)),
verifyDryAllocs: true, // make sure values were not allocated. verifyDryAllocs: true, // make sure values were not allocated.
}, { }, {
name: "singlestack:v6_Allocs-NoAllocs", name: "singlestack:v6_Allocs-NoAllocs",
clusterFamilies: []api.IPFamily{api.IPv6Protocol}, clusterFamilies: []api.IPFamily{api.IPv6Protocol},
svc: svctest.MakeService("foo", svctest.SetTypeLoadBalancer, svc: svctest.MakeService("foo", svctest.SetTypeLoadBalancer,
svctest.SetExternalTrafficPolicy(api.ServiceExternalTrafficPolicyTypeLocal)), svctest.SetExternalTrafficPolicy(api.ServiceExternalTrafficPolicyLocal)),
update: svctest.MakeService("foo", svctest.SetTypeExternalName), update: svctest.MakeService("foo", svctest.SetTypeExternalName),
verifyDryAllocs: false, // make sure values were not released. verifyDryAllocs: false, // make sure values were not released.
}, { }, {
@ -6697,13 +6697,13 @@ func TestUpdateDryRun(t *testing.T) {
clusterFamilies: []api.IPFamily{api.IPv4Protocol, api.IPv6Protocol}, clusterFamilies: []api.IPFamily{api.IPv4Protocol, api.IPv6Protocol},
svc: svctest.MakeService("foo", svctest.SetTypeExternalName), svc: svctest.MakeService("foo", svctest.SetTypeExternalName),
update: svctest.MakeService("foo", svctest.SetTypeLoadBalancer, update: svctest.MakeService("foo", svctest.SetTypeLoadBalancer,
svctest.SetExternalTrafficPolicy(api.ServiceExternalTrafficPolicyTypeLocal)), svctest.SetExternalTrafficPolicy(api.ServiceExternalTrafficPolicyLocal)),
verifyDryAllocs: true, // make sure values were not allocated. verifyDryAllocs: true, // make sure values were not allocated.
}, { }, {
name: "dualstack:v4v6_Allocs-NoAllocs", name: "dualstack:v4v6_Allocs-NoAllocs",
clusterFamilies: []api.IPFamily{api.IPv4Protocol, api.IPv6Protocol}, clusterFamilies: []api.IPFamily{api.IPv4Protocol, api.IPv6Protocol},
svc: svctest.MakeService("foo", svctest.SetTypeLoadBalancer, svc: svctest.MakeService("foo", svctest.SetTypeLoadBalancer,
svctest.SetExternalTrafficPolicy(api.ServiceExternalTrafficPolicyTypeLocal)), svctest.SetExternalTrafficPolicy(api.ServiceExternalTrafficPolicyLocal)),
update: svctest.MakeService("foo", svctest.SetTypeExternalName), update: svctest.MakeService("foo", svctest.SetTypeExternalName),
verifyDryAllocs: false, // make sure values were not released. verifyDryAllocs: false, // make sure values were not released.
}, { }, {
@ -6711,13 +6711,13 @@ func TestUpdateDryRun(t *testing.T) {
clusterFamilies: []api.IPFamily{api.IPv6Protocol, api.IPv4Protocol}, clusterFamilies: []api.IPFamily{api.IPv6Protocol, api.IPv4Protocol},
svc: svctest.MakeService("foo", svctest.SetTypeExternalName), svc: svctest.MakeService("foo", svctest.SetTypeExternalName),
update: svctest.MakeService("foo", svctest.SetTypeLoadBalancer, update: svctest.MakeService("foo", svctest.SetTypeLoadBalancer,
svctest.SetExternalTrafficPolicy(api.ServiceExternalTrafficPolicyTypeLocal)), svctest.SetExternalTrafficPolicy(api.ServiceExternalTrafficPolicyLocal)),
verifyDryAllocs: true, // make sure values were not allocated. verifyDryAllocs: true, // make sure values were not allocated.
}, { }, {
name: "dualstack:v6v4_Allocs-NoAllocs", name: "dualstack:v6v4_Allocs-NoAllocs",
clusterFamilies: []api.IPFamily{api.IPv6Protocol, api.IPv4Protocol}, clusterFamilies: []api.IPFamily{api.IPv6Protocol, api.IPv4Protocol},
svc: svctest.MakeService("foo", svctest.SetTypeLoadBalancer, svc: svctest.MakeService("foo", svctest.SetTypeLoadBalancer,
svctest.SetExternalTrafficPolicy(api.ServiceExternalTrafficPolicyTypeLocal)), svctest.SetExternalTrafficPolicy(api.ServiceExternalTrafficPolicyLocal)),
update: svctest.MakeService("foo", svctest.SetTypeExternalName), update: svctest.MakeService("foo", svctest.SetTypeExternalName),
verifyDryAllocs: false, // make sure values were not released. verifyDryAllocs: false, // make sure values were not released.
}} }}
@ -6860,7 +6860,7 @@ func TestUpdatePatchAllocatedValues(t *testing.T) {
create: svcTestCase{ create: svcTestCase{
svc: svctest.MakeService("foo", svc: svctest.MakeService("foo",
svctest.SetTypeLoadBalancer, svctest.SetTypeLoadBalancer,
svctest.SetExternalTrafficPolicy(api.ServiceExternalTrafficPolicyTypeLocal), svctest.SetExternalTrafficPolicy(api.ServiceExternalTrafficPolicyLocal),
svctest.SetClusterIPs("10.0.0.1"), svctest.SetClusterIPs("10.0.0.1"),
svctest.SetNodePorts(30093), svctest.SetNodePorts(30093),
svctest.SetHealthCheckNodePort(30118)), svctest.SetHealthCheckNodePort(30118)),
@ -6871,7 +6871,7 @@ func TestUpdatePatchAllocatedValues(t *testing.T) {
update: svcTestCase{ update: svcTestCase{
svc: svctest.MakeService("foo", svc: svctest.MakeService("foo",
svctest.SetTypeLoadBalancer, svctest.SetTypeLoadBalancer,
svctest.SetExternalTrafficPolicy(api.ServiceExternalTrafficPolicyTypeLocal)), svctest.SetExternalTrafficPolicy(api.ServiceExternalTrafficPolicyLocal)),
expectClusterIPs: true, expectClusterIPs: true,
expectNodePorts: true, expectNodePorts: true,
expectHealthCheckNodePort: true, expectHealthCheckNodePort: true,
@ -6885,7 +6885,7 @@ func TestUpdatePatchAllocatedValues(t *testing.T) {
create: svcTestCase{ create: svcTestCase{
svc: svctest.MakeService("foo", svc: svctest.MakeService("foo",
svctest.SetTypeLoadBalancer, svctest.SetTypeLoadBalancer,
svctest.SetExternalTrafficPolicy(api.ServiceExternalTrafficPolicyTypeLocal), svctest.SetExternalTrafficPolicy(api.ServiceExternalTrafficPolicyLocal),
svctest.SetIPFamilyPolicy(api.IPFamilyPolicyPreferDualStack), svctest.SetIPFamilyPolicy(api.IPFamilyPolicyPreferDualStack),
svctest.SetClusterIPs("10.0.0.1", "2000::1"), svctest.SetClusterIPs("10.0.0.1", "2000::1"),
svctest.SetPorts( svctest.SetPorts(
@ -6900,7 +6900,7 @@ func TestUpdatePatchAllocatedValues(t *testing.T) {
update: svcTestCase{ update: svcTestCase{
svc: svctest.MakeService("foo", svc: svctest.MakeService("foo",
svctest.SetTypeLoadBalancer, svctest.SetTypeLoadBalancer,
svctest.SetExternalTrafficPolicy(api.ServiceExternalTrafficPolicyTypeLocal), svctest.SetExternalTrafficPolicy(api.ServiceExternalTrafficPolicyLocal),
svctest.SetPorts( svctest.SetPorts(
svctest.MakeServicePort("p", 867, intstr.FromInt(867), api.ProtocolTCP), svctest.MakeServicePort("p", 867, intstr.FromInt(867), api.ProtocolTCP),
svctest.MakeServicePort("q", 5309, intstr.FromInt(5309), api.ProtocolTCP))), svctest.MakeServicePort("q", 5309, intstr.FromInt(5309), api.ProtocolTCP))),
@ -6919,7 +6919,7 @@ func TestUpdatePatchAllocatedValues(t *testing.T) {
create: svcTestCase{ create: svcTestCase{
svc: svctest.MakeService("foo", svc: svctest.MakeService("foo",
svctest.SetTypeLoadBalancer, svctest.SetTypeLoadBalancer,
svctest.SetExternalTrafficPolicy(api.ServiceExternalTrafficPolicyTypeLocal), svctest.SetExternalTrafficPolicy(api.ServiceExternalTrafficPolicyLocal),
svctest.SetIPFamilyPolicy(api.IPFamilyPolicyPreferDualStack), svctest.SetIPFamilyPolicy(api.IPFamilyPolicyPreferDualStack),
svctest.SetClusterIPs("10.0.0.1", "2000::1"), svctest.SetClusterIPs("10.0.0.1", "2000::1"),
svctest.SetPorts( svctest.SetPorts(
@ -6934,7 +6934,7 @@ func TestUpdatePatchAllocatedValues(t *testing.T) {
update: svcTestCase{ update: svcTestCase{
svc: svctest.MakeService("foo", svc: svctest.MakeService("foo",
svctest.SetTypeLoadBalancer, svctest.SetTypeLoadBalancer,
svctest.SetExternalTrafficPolicy(api.ServiceExternalTrafficPolicyTypeLocal), svctest.SetExternalTrafficPolicy(api.ServiceExternalTrafficPolicyLocal),
svctest.SetClusterIPs("10.0.0.1")), svctest.SetClusterIPs("10.0.0.1")),
expectError: true, expectError: true,
}, },
@ -6943,7 +6943,7 @@ func TestUpdatePatchAllocatedValues(t *testing.T) {
create: svcTestCase{ create: svcTestCase{
svc: svctest.MakeService("foo", svc: svctest.MakeService("foo",
svctest.SetTypeLoadBalancer, svctest.SetTypeLoadBalancer,
svctest.SetExternalTrafficPolicy(api.ServiceExternalTrafficPolicyTypeLocal), svctest.SetExternalTrafficPolicy(api.ServiceExternalTrafficPolicyLocal),
svctest.SetPorts( svctest.SetPorts(
svctest.MakeServicePort("p", 867, intstr.FromInt(867), api.ProtocolTCP), svctest.MakeServicePort("p", 867, intstr.FromInt(867), api.ProtocolTCP),
svctest.MakeServicePort("q", 5309, intstr.FromInt(5309), api.ProtocolTCP)), svctest.MakeServicePort("q", 5309, intstr.FromInt(5309), api.ProtocolTCP)),
@ -6956,7 +6956,7 @@ func TestUpdatePatchAllocatedValues(t *testing.T) {
update: svcTestCase{ update: svcTestCase{
svc: svctest.MakeService("foo", svc: svctest.MakeService("foo",
svctest.SetTypeLoadBalancer, svctest.SetTypeLoadBalancer,
svctest.SetExternalTrafficPolicy(api.ServiceExternalTrafficPolicyTypeLocal), svctest.SetExternalTrafficPolicy(api.ServiceExternalTrafficPolicyLocal),
svctest.SetPorts( svctest.SetPorts(
svctest.MakeServicePort("p", 867, intstr.FromInt(867), api.ProtocolTCP), svctest.MakeServicePort("p", 867, intstr.FromInt(867), api.ProtocolTCP),
svctest.MakeServicePort("q", 5309, intstr.FromInt(5309), api.ProtocolTCP)), svctest.MakeServicePort("q", 5309, intstr.FromInt(5309), api.ProtocolTCP)),
@ -6974,7 +6974,7 @@ func TestUpdatePatchAllocatedValues(t *testing.T) {
create: svcTestCase{ create: svcTestCase{
svc: svctest.MakeService("foo", svc: svctest.MakeService("foo",
svctest.SetTypeLoadBalancer, svctest.SetTypeLoadBalancer,
svctest.SetExternalTrafficPolicy(api.ServiceExternalTrafficPolicyTypeLocal), svctest.SetExternalTrafficPolicy(api.ServiceExternalTrafficPolicyLocal),
svctest.SetPorts( svctest.SetPorts(
svctest.MakeServicePort("p", 867, intstr.FromInt(867), api.ProtocolTCP), svctest.MakeServicePort("p", 867, intstr.FromInt(867), api.ProtocolTCP),
svctest.MakeServicePort("q", 5309, intstr.FromInt(5309), api.ProtocolTCP)), svctest.MakeServicePort("q", 5309, intstr.FromInt(5309), api.ProtocolTCP)),
@ -6987,7 +6987,7 @@ func TestUpdatePatchAllocatedValues(t *testing.T) {
update: svcTestCase{ update: svcTestCase{
svc: svctest.MakeService("foo", svc: svctest.MakeService("foo",
svctest.SetTypeLoadBalancer, svctest.SetTypeLoadBalancer,
svctest.SetExternalTrafficPolicy(api.ServiceExternalTrafficPolicyTypeLocal), svctest.SetExternalTrafficPolicy(api.ServiceExternalTrafficPolicyLocal),
svctest.SetPorts( svctest.SetPorts(
// swapped from above // swapped from above
svctest.MakeServicePort("q", 5309, intstr.FromInt(5309), api.ProtocolTCP), svctest.MakeServicePort("q", 5309, intstr.FromInt(5309), api.ProtocolTCP),
@ -7005,7 +7005,7 @@ func TestUpdatePatchAllocatedValues(t *testing.T) {
create: svcTestCase{ create: svcTestCase{
svc: svctest.MakeService("foo", svc: svctest.MakeService("foo",
svctest.SetTypeLoadBalancer, svctest.SetTypeLoadBalancer,
svctest.SetExternalTrafficPolicy(api.ServiceExternalTrafficPolicyTypeLocal), svctest.SetExternalTrafficPolicy(api.ServiceExternalTrafficPolicyLocal),
svctest.SetPorts( svctest.SetPorts(
svctest.MakeServicePort("p", 867, intstr.FromInt(867), api.ProtocolTCP), svctest.MakeServicePort("p", 867, intstr.FromInt(867), api.ProtocolTCP),
svctest.MakeServicePort("q", 5309, intstr.FromInt(5309), api.ProtocolTCP)), svctest.MakeServicePort("q", 5309, intstr.FromInt(5309), api.ProtocolTCP)),
@ -7018,7 +7018,7 @@ func TestUpdatePatchAllocatedValues(t *testing.T) {
update: svcTestCase{ update: svcTestCase{
svc: svctest.MakeService("foo", svc: svctest.MakeService("foo",
svctest.SetTypeLoadBalancer, svctest.SetTypeLoadBalancer,
svctest.SetExternalTrafficPolicy(api.ServiceExternalTrafficPolicyTypeLocal), svctest.SetExternalTrafficPolicy(api.ServiceExternalTrafficPolicyLocal),
svctest.SetPorts( svctest.SetPorts(
svctest.MakeServicePort("p", 867, intstr.FromInt(867), api.ProtocolTCP), svctest.MakeServicePort("p", 867, intstr.FromInt(867), api.ProtocolTCP),
svctest.MakeServicePort("q", 5309, intstr.FromInt(5309), api.ProtocolTCP)), svctest.MakeServicePort("q", 5309, intstr.FromInt(5309), api.ProtocolTCP)),
@ -7037,7 +7037,7 @@ func TestUpdatePatchAllocatedValues(t *testing.T) {
create: svcTestCase{ create: svcTestCase{
svc: svctest.MakeService("foo", svc: svctest.MakeService("foo",
svctest.SetTypeLoadBalancer, svctest.SetTypeLoadBalancer,
svctest.SetExternalTrafficPolicy(api.ServiceExternalTrafficPolicyTypeLocal), svctest.SetExternalTrafficPolicy(api.ServiceExternalTrafficPolicyLocal),
svctest.SetPorts( svctest.SetPorts(
svctest.MakeServicePort("p", 867, intstr.FromInt(867), api.ProtocolTCP), svctest.MakeServicePort("p", 867, intstr.FromInt(867), api.ProtocolTCP),
svctest.MakeServicePort("q", 5309, intstr.FromInt(5309), api.ProtocolTCP)), svctest.MakeServicePort("q", 5309, intstr.FromInt(5309), api.ProtocolTCP)),
@ -7050,7 +7050,7 @@ func TestUpdatePatchAllocatedValues(t *testing.T) {
update: svcTestCase{ update: svcTestCase{
svc: svctest.MakeService("foo", svc: svctest.MakeService("foo",
svctest.SetTypeLoadBalancer, svctest.SetTypeLoadBalancer,
svctest.SetExternalTrafficPolicy(api.ServiceExternalTrafficPolicyTypeLocal), svctest.SetExternalTrafficPolicy(api.ServiceExternalTrafficPolicyLocal),
svctest.SetPorts( svctest.SetPorts(
svctest.MakeServicePort("p", 867, intstr.FromInt(867), api.ProtocolTCP), svctest.MakeServicePort("p", 867, intstr.FromInt(867), api.ProtocolTCP),
svctest.MakeServicePort("q", 5309, intstr.FromInt(5309), api.ProtocolTCP)), svctest.MakeServicePort("q", 5309, intstr.FromInt(5309), api.ProtocolTCP)),
@ -7062,7 +7062,7 @@ func TestUpdatePatchAllocatedValues(t *testing.T) {
create: svcTestCase{ create: svcTestCase{
svc: svctest.MakeService("foo", svc: svctest.MakeService("foo",
svctest.SetTypeLoadBalancer, svctest.SetTypeLoadBalancer,
svctest.SetExternalTrafficPolicy(api.ServiceExternalTrafficPolicyTypeLocal), svctest.SetExternalTrafficPolicy(api.ServiceExternalTrafficPolicyLocal),
svctest.SetPorts( svctest.SetPorts(
svctest.MakeServicePort("p", 867, intstr.FromInt(867), api.ProtocolTCP), svctest.MakeServicePort("p", 867, intstr.FromInt(867), api.ProtocolTCP),
svctest.MakeServicePort("q", 5309, intstr.FromInt(5309), api.ProtocolTCP)), svctest.MakeServicePort("q", 5309, intstr.FromInt(5309), api.ProtocolTCP)),
@ -7075,7 +7075,7 @@ func TestUpdatePatchAllocatedValues(t *testing.T) {
update: svcTestCase{ update: svcTestCase{
svc: svctest.MakeService("foo", svc: svctest.MakeService("foo",
svctest.SetTypeLoadBalancer, svctest.SetTypeLoadBalancer,
svctest.SetExternalTrafficPolicy(api.ServiceExternalTrafficPolicyTypeLocal), svctest.SetExternalTrafficPolicy(api.ServiceExternalTrafficPolicyLocal),
svctest.SetPorts( svctest.SetPorts(
svctest.MakeServicePort("p", 867, intstr.FromInt(867), api.ProtocolTCP), svctest.MakeServicePort("p", 867, intstr.FromInt(867), api.ProtocolTCP),
svctest.MakeServicePort("q", 5309, intstr.FromInt(5309), api.ProtocolTCP)), svctest.MakeServicePort("q", 5309, intstr.FromInt(5309), api.ProtocolTCP)),
@ -7087,7 +7087,7 @@ func TestUpdatePatchAllocatedValues(t *testing.T) {
create: svcTestCase{ create: svcTestCase{
svc: svctest.MakeService("foo", svc: svctest.MakeService("foo",
svctest.SetTypeLoadBalancer, svctest.SetTypeLoadBalancer,
svctest.SetExternalTrafficPolicy(api.ServiceExternalTrafficPolicyTypeLocal), svctest.SetExternalTrafficPolicy(api.ServiceExternalTrafficPolicyLocal),
svctest.SetPorts( svctest.SetPorts(
svctest.MakeServicePort("p", 867, intstr.FromInt(867), api.ProtocolTCP), svctest.MakeServicePort("p", 867, intstr.FromInt(867), api.ProtocolTCP),
svctest.MakeServicePort("q", 5309, intstr.FromInt(5309), api.ProtocolTCP)), svctest.MakeServicePort("q", 5309, intstr.FromInt(5309), api.ProtocolTCP)),
@ -7100,7 +7100,7 @@ func TestUpdatePatchAllocatedValues(t *testing.T) {
update: svcTestCase{ update: svcTestCase{
svc: svctest.MakeService("foo", svc: svctest.MakeService("foo",
svctest.SetTypeLoadBalancer, svctest.SetTypeLoadBalancer,
svctest.SetExternalTrafficPolicy(api.ServiceExternalTrafficPolicyTypeLocal), svctest.SetExternalTrafficPolicy(api.ServiceExternalTrafficPolicyLocal),
svctest.SetPorts( svctest.SetPorts(
svctest.MakeServicePort("p", 867, intstr.FromInt(867), api.ProtocolTCP), svctest.MakeServicePort("p", 867, intstr.FromInt(867), api.ProtocolTCP),
svctest.MakeServicePort("q", 5309, intstr.FromInt(5309), api.ProtocolTCP)), svctest.MakeServicePort("q", 5309, intstr.FromInt(5309), api.ProtocolTCP)),
@ -11047,7 +11047,7 @@ func TestFeatureExternalTrafficPolicy(t *testing.T) {
create: svcTestCase{ create: svcTestCase{
svc: svctest.MakeService("foo", svc: svctest.MakeService("foo",
svctest.SetTypeExternalName, svctest.SetTypeExternalName,
svctest.SetExternalTrafficPolicy(api.ServiceExternalTrafficPolicyTypeCluster)), svctest.SetExternalTrafficPolicy(api.ServiceExternalTrafficPolicyCluster)),
expectError: true, expectError: true,
}, },
}, { }, {
@ -11055,7 +11055,7 @@ func TestFeatureExternalTrafficPolicy(t *testing.T) {
create: svcTestCase{ create: svcTestCase{
svc: svctest.MakeService("foo", svc: svctest.MakeService("foo",
svctest.SetTypeExternalName, svctest.SetTypeExternalName,
svctest.SetExternalTrafficPolicy(api.ServiceExternalTrafficPolicyTypeCluster), svctest.SetExternalTrafficPolicy(api.ServiceExternalTrafficPolicyCluster),
svctest.SetHealthCheckNodePort(30000)), svctest.SetHealthCheckNodePort(30000)),
expectError: true, expectError: true,
}, },
@ -11064,7 +11064,7 @@ func TestFeatureExternalTrafficPolicy(t *testing.T) {
create: svcTestCase{ create: svcTestCase{
svc: svctest.MakeService("foo", svc: svctest.MakeService("foo",
svctest.SetTypeExternalName, svctest.SetTypeExternalName,
svctest.SetExternalTrafficPolicy(api.ServiceExternalTrafficPolicyTypeLocal)), svctest.SetExternalTrafficPolicy(api.ServiceExternalTrafficPolicyLocal)),
expectError: true, expectError: true,
}, },
}, { }, {
@ -11072,7 +11072,7 @@ func TestFeatureExternalTrafficPolicy(t *testing.T) {
create: svcTestCase{ create: svcTestCase{
svc: svctest.MakeService("foo", svc: svctest.MakeService("foo",
svctest.SetTypeExternalName, svctest.SetTypeExternalName,
svctest.SetExternalTrafficPolicy(api.ServiceExternalTrafficPolicyTypeLocal), svctest.SetExternalTrafficPolicy(api.ServiceExternalTrafficPolicyLocal),
svctest.SetHealthCheckNodePort(30000)), svctest.SetHealthCheckNodePort(30000)),
expectError: true, expectError: true,
}, },
@ -11087,7 +11087,7 @@ func TestFeatureExternalTrafficPolicy(t *testing.T) {
update: svcTestCase{ update: svcTestCase{
svc: svctest.MakeService("foo", svc: svctest.MakeService("foo",
svctest.SetTypeClusterIP, svctest.SetTypeClusterIP,
svctest.SetExternalTrafficPolicy(api.ServiceExternalTrafficPolicyTypeCluster)), svctest.SetExternalTrafficPolicy(api.ServiceExternalTrafficPolicyCluster)),
expectError: true, expectError: true,
}, },
}, { }, {
@ -11104,7 +11104,7 @@ func TestFeatureExternalTrafficPolicy(t *testing.T) {
create: svcTestCase{ create: svcTestCase{
svc: svctest.MakeService("foo", svc: svctest.MakeService("foo",
svctest.SetTypeClusterIP, svctest.SetTypeClusterIP,
svctest.SetExternalTrafficPolicy(api.ServiceExternalTrafficPolicyTypeCluster)), svctest.SetExternalTrafficPolicy(api.ServiceExternalTrafficPolicyCluster)),
expectError: true, expectError: true,
}, },
}, { }, {
@ -11112,7 +11112,7 @@ func TestFeatureExternalTrafficPolicy(t *testing.T) {
create: svcTestCase{ create: svcTestCase{
svc: svctest.MakeService("foo", svc: svctest.MakeService("foo",
svctest.SetTypeClusterIP, svctest.SetTypeClusterIP,
svctest.SetExternalTrafficPolicy(api.ServiceExternalTrafficPolicyTypeCluster), svctest.SetExternalTrafficPolicy(api.ServiceExternalTrafficPolicyCluster),
svctest.SetHealthCheckNodePort(30000)), svctest.SetHealthCheckNodePort(30000)),
expectError: true, expectError: true,
}, },
@ -11121,7 +11121,7 @@ func TestFeatureExternalTrafficPolicy(t *testing.T) {
create: svcTestCase{ create: svcTestCase{
svc: svctest.MakeService("foo", svc: svctest.MakeService("foo",
svctest.SetTypeClusterIP, svctest.SetTypeClusterIP,
svctest.SetExternalTrafficPolicy(api.ServiceExternalTrafficPolicyTypeLocal)), svctest.SetExternalTrafficPolicy(api.ServiceExternalTrafficPolicyLocal)),
expectError: true, expectError: true,
}, },
}, { }, {
@ -11129,7 +11129,7 @@ func TestFeatureExternalTrafficPolicy(t *testing.T) {
create: svcTestCase{ create: svcTestCase{
svc: svctest.MakeService("foo", svc: svctest.MakeService("foo",
svctest.SetTypeClusterIP, svctest.SetTypeClusterIP,
svctest.SetExternalTrafficPolicy(api.ServiceExternalTrafficPolicyTypeLocal), svctest.SetExternalTrafficPolicy(api.ServiceExternalTrafficPolicyLocal),
svctest.SetHealthCheckNodePort(30000)), svctest.SetHealthCheckNodePort(30000)),
expectError: true, expectError: true,
}, },
@ -11155,7 +11155,7 @@ func TestFeatureExternalTrafficPolicy(t *testing.T) {
create: svcTestCase{ create: svcTestCase{
svc: svctest.MakeService("foo", svc: svctest.MakeService("foo",
svctest.SetTypeNodePort, svctest.SetTypeNodePort,
svctest.SetExternalTrafficPolicy(api.ServiceExternalTrafficPolicyTypeCluster)), svctest.SetExternalTrafficPolicy(api.ServiceExternalTrafficPolicyCluster)),
expectClusterIPs: true, expectClusterIPs: true,
expectNodePorts: true, expectNodePorts: true,
expectHealthCheckNodePort: false, expectHealthCheckNodePort: false,
@ -11163,7 +11163,7 @@ func TestFeatureExternalTrafficPolicy(t *testing.T) {
update: svcTestCase{ update: svcTestCase{
svc: svctest.MakeService("foo", svc: svctest.MakeService("foo",
svctest.SetTypeNodePort, svctest.SetTypeNodePort,
svctest.SetExternalTrafficPolicy(api.ServiceExternalTrafficPolicyTypeLocal)), svctest.SetExternalTrafficPolicy(api.ServiceExternalTrafficPolicyLocal)),
expectClusterIPs: true, expectClusterIPs: true,
expectNodePorts: true, expectNodePorts: true,
expectHealthCheckNodePort: false, expectHealthCheckNodePort: false,
@ -11173,7 +11173,7 @@ func TestFeatureExternalTrafficPolicy(t *testing.T) {
create: svcTestCase{ create: svcTestCase{
svc: svctest.MakeService("foo", svc: svctest.MakeService("foo",
svctest.SetTypeNodePort, svctest.SetTypeNodePort,
svctest.SetExternalTrafficPolicy(api.ServiceExternalTrafficPolicyTypeCluster), svctest.SetExternalTrafficPolicy(api.ServiceExternalTrafficPolicyCluster),
svctest.SetHealthCheckNodePort(30000)), svctest.SetHealthCheckNodePort(30000)),
expectError: true, expectError: true,
}, },
@ -11182,7 +11182,7 @@ func TestFeatureExternalTrafficPolicy(t *testing.T) {
create: svcTestCase{ create: svcTestCase{
svc: svctest.MakeService("foo", svc: svctest.MakeService("foo",
svctest.SetTypeNodePort, svctest.SetTypeNodePort,
svctest.SetExternalTrafficPolicy(api.ServiceExternalTrafficPolicyTypeLocal)), svctest.SetExternalTrafficPolicy(api.ServiceExternalTrafficPolicyLocal)),
expectClusterIPs: true, expectClusterIPs: true,
expectNodePorts: true, expectNodePorts: true,
expectHealthCheckNodePort: false, expectHealthCheckNodePort: false,
@ -11190,7 +11190,7 @@ func TestFeatureExternalTrafficPolicy(t *testing.T) {
update: svcTestCase{ update: svcTestCase{
svc: svctest.MakeService("foo", svc: svctest.MakeService("foo",
svctest.SetTypeNodePort, svctest.SetTypeNodePort,
svctest.SetExternalTrafficPolicy(api.ServiceExternalTrafficPolicyTypeCluster)), svctest.SetExternalTrafficPolicy(api.ServiceExternalTrafficPolicyCluster)),
expectClusterIPs: true, expectClusterIPs: true,
expectNodePorts: true, expectNodePorts: true,
expectHealthCheckNodePort: false, expectHealthCheckNodePort: false,
@ -11200,7 +11200,7 @@ func TestFeatureExternalTrafficPolicy(t *testing.T) {
create: svcTestCase{ create: svcTestCase{
svc: svctest.MakeService("foo", svc: svctest.MakeService("foo",
svctest.SetTypeNodePort, svctest.SetTypeNodePort,
svctest.SetExternalTrafficPolicy(api.ServiceExternalTrafficPolicyTypeLocal), svctest.SetExternalTrafficPolicy(api.ServiceExternalTrafficPolicyLocal),
svctest.SetHealthCheckNodePort(30000)), svctest.SetHealthCheckNodePort(30000)),
expectError: true, expectError: true,
}, },
@ -11226,7 +11226,7 @@ func TestFeatureExternalTrafficPolicy(t *testing.T) {
create: svcTestCase{ create: svcTestCase{
svc: svctest.MakeService("foo", svc: svctest.MakeService("foo",
svctest.SetTypeLoadBalancer, svctest.SetTypeLoadBalancer,
svctest.SetExternalTrafficPolicy(api.ServiceExternalTrafficPolicyTypeCluster)), svctest.SetExternalTrafficPolicy(api.ServiceExternalTrafficPolicyCluster)),
expectClusterIPs: true, expectClusterIPs: true,
expectNodePorts: true, expectNodePorts: true,
expectHealthCheckNodePort: false, expectHealthCheckNodePort: false,
@ -11234,7 +11234,7 @@ func TestFeatureExternalTrafficPolicy(t *testing.T) {
update: svcTestCase{ update: svcTestCase{
svc: svctest.MakeService("foo", svc: svctest.MakeService("foo",
svctest.SetTypeLoadBalancer, svctest.SetTypeLoadBalancer,
svctest.SetExternalTrafficPolicy(api.ServiceExternalTrafficPolicyTypeLocal)), svctest.SetExternalTrafficPolicy(api.ServiceExternalTrafficPolicyLocal)),
expectClusterIPs: true, expectClusterIPs: true,
expectNodePorts: true, expectNodePorts: true,
expectHealthCheckNodePort: true, expectHealthCheckNodePort: true,
@ -11244,7 +11244,7 @@ func TestFeatureExternalTrafficPolicy(t *testing.T) {
create: svcTestCase{ create: svcTestCase{
svc: svctest.MakeService("foo", svc: svctest.MakeService("foo",
svctest.SetTypeLoadBalancer, svctest.SetTypeLoadBalancer,
svctest.SetExternalTrafficPolicy(api.ServiceExternalTrafficPolicyTypeCluster)), svctest.SetExternalTrafficPolicy(api.ServiceExternalTrafficPolicyCluster)),
expectClusterIPs: true, expectClusterIPs: true,
expectNodePorts: true, expectNodePorts: true,
expectHealthCheckNodePort: false, expectHealthCheckNodePort: false,
@ -11252,7 +11252,7 @@ func TestFeatureExternalTrafficPolicy(t *testing.T) {
update: svcTestCase{ update: svcTestCase{
svc: svctest.MakeService("foo", svc: svctest.MakeService("foo",
svctest.SetTypeLoadBalancer, svctest.SetTypeLoadBalancer,
svctest.SetExternalTrafficPolicy(api.ServiceExternalTrafficPolicyTypeLocal), svctest.SetExternalTrafficPolicy(api.ServiceExternalTrafficPolicyLocal),
svctest.SetHealthCheckNodePort(30000)), svctest.SetHealthCheckNodePort(30000)),
expectClusterIPs: true, expectClusterIPs: true,
expectNodePorts: true, expectNodePorts: true,
@ -11263,7 +11263,7 @@ func TestFeatureExternalTrafficPolicy(t *testing.T) {
create: svcTestCase{ create: svcTestCase{
svc: svctest.MakeService("foo", svc: svctest.MakeService("foo",
svctest.SetTypeLoadBalancer, svctest.SetTypeLoadBalancer,
svctest.SetExternalTrafficPolicy(api.ServiceExternalTrafficPolicyTypeCluster), svctest.SetExternalTrafficPolicy(api.ServiceExternalTrafficPolicyCluster),
svctest.SetHealthCheckNodePort(30000)), svctest.SetHealthCheckNodePort(30000)),
expectError: true, expectError: true,
}, },
@ -11272,7 +11272,7 @@ func TestFeatureExternalTrafficPolicy(t *testing.T) {
create: svcTestCase{ create: svcTestCase{
svc: svctest.MakeService("foo", svc: svctest.MakeService("foo",
svctest.SetTypeLoadBalancer, svctest.SetTypeLoadBalancer,
svctest.SetExternalTrafficPolicy(api.ServiceExternalTrafficPolicyTypeLocal)), svctest.SetExternalTrafficPolicy(api.ServiceExternalTrafficPolicyLocal)),
expectClusterIPs: true, expectClusterIPs: true,
expectNodePorts: true, expectNodePorts: true,
expectHealthCheckNodePort: true, expectHealthCheckNodePort: true,
@ -11280,7 +11280,7 @@ func TestFeatureExternalTrafficPolicy(t *testing.T) {
update: svcTestCase{ update: svcTestCase{
svc: svctest.MakeService("foo", svc: svctest.MakeService("foo",
svctest.SetTypeLoadBalancer, svctest.SetTypeLoadBalancer,
svctest.SetExternalTrafficPolicy(api.ServiceExternalTrafficPolicyTypeCluster)), svctest.SetExternalTrafficPolicy(api.ServiceExternalTrafficPolicyCluster)),
expectClusterIPs: true, expectClusterIPs: true,
expectNodePorts: true, expectNodePorts: true,
expectHealthCheckNodePort: false, expectHealthCheckNodePort: false,
@ -11290,7 +11290,7 @@ func TestFeatureExternalTrafficPolicy(t *testing.T) {
create: svcTestCase{ create: svcTestCase{
svc: svctest.MakeService("foo", svc: svctest.MakeService("foo",
svctest.SetTypeLoadBalancer, svctest.SetTypeLoadBalancer,
svctest.SetExternalTrafficPolicy(api.ServiceExternalTrafficPolicyTypeLocal), svctest.SetExternalTrafficPolicy(api.ServiceExternalTrafficPolicyLocal),
svctest.SetHealthCheckNodePort(30000)), svctest.SetHealthCheckNodePort(30000)),
expectClusterIPs: true, expectClusterIPs: true,
expectNodePorts: true, expectNodePorts: true,
@ -11299,7 +11299,7 @@ func TestFeatureExternalTrafficPolicy(t *testing.T) {
update: svcTestCase{ update: svcTestCase{
svc: svctest.MakeService("foo", svc: svctest.MakeService("foo",
svctest.SetTypeLoadBalancer, svctest.SetTypeLoadBalancer,
svctest.SetExternalTrafficPolicy(api.ServiceExternalTrafficPolicyTypeCluster)), svctest.SetExternalTrafficPolicy(api.ServiceExternalTrafficPolicyCluster)),
expectClusterIPs: true, expectClusterIPs: true,
expectNodePorts: true, expectNodePorts: true,
expectHealthCheckNodePort: false, expectHealthCheckNodePort: false,
@ -11309,7 +11309,7 @@ func TestFeatureExternalTrafficPolicy(t *testing.T) {
create: svcTestCase{ create: svcTestCase{
svc: svctest.MakeService("foo", svc: svctest.MakeService("foo",
svctest.SetTypeLoadBalancer, svctest.SetTypeLoadBalancer,
svctest.SetExternalTrafficPolicy(api.ServiceExternalTrafficPolicyTypeLocal), svctest.SetExternalTrafficPolicy(api.ServiceExternalTrafficPolicyLocal),
svctest.SetHealthCheckNodePort(30000)), svctest.SetHealthCheckNodePort(30000)),
expectClusterIPs: true, expectClusterIPs: true,
expectNodePorts: true, expectNodePorts: true,
@ -11318,7 +11318,7 @@ func TestFeatureExternalTrafficPolicy(t *testing.T) {
update: svcTestCase{ update: svcTestCase{
svc: svctest.MakeService("foo", svc: svctest.MakeService("foo",
svctest.SetTypeLoadBalancer, svctest.SetTypeLoadBalancer,
svctest.SetExternalTrafficPolicy(api.ServiceExternalTrafficPolicyTypeLocal), svctest.SetExternalTrafficPolicy(api.ServiceExternalTrafficPolicyLocal),
svctest.SetHealthCheckNodePort(30001)), svctest.SetHealthCheckNodePort(30001)),
expectError: true, expectError: true,
}, },
@ -11327,7 +11327,7 @@ func TestFeatureExternalTrafficPolicy(t *testing.T) {
create: svcTestCase{ create: svcTestCase{
svc: svctest.MakeService("foo", svc: svctest.MakeService("foo",
svctest.SetTypeLoadBalancer, svctest.SetTypeLoadBalancer,
svctest.SetExternalTrafficPolicy(api.ServiceExternalTrafficPolicyTypeLocal)), svctest.SetExternalTrafficPolicy(api.ServiceExternalTrafficPolicyLocal)),
expectClusterIPs: true, expectClusterIPs: true,
expectNodePorts: true, expectNodePorts: true,
expectHealthCheckNodePort: true, expectHealthCheckNodePort: true,
@ -11343,7 +11343,7 @@ func TestFeatureExternalTrafficPolicy(t *testing.T) {
create: svcTestCase{ create: svcTestCase{
svc: svctest.MakeService("foo", svc: svctest.MakeService("foo",
svctest.SetTypeLoadBalancer, svctest.SetTypeLoadBalancer,
svctest.SetExternalTrafficPolicy(api.ServiceExternalTrafficPolicyTypeLocal), svctest.SetExternalTrafficPolicy(api.ServiceExternalTrafficPolicyLocal),
svctest.SetHealthCheckNodePort(-1)), svctest.SetHealthCheckNodePort(-1)),
expectError: true, expectError: true,
}, },

View File

@ -243,7 +243,7 @@ func dropTypeDependentFields(newSvc *api.Service, oldSvc *api.Service) {
// If a user is switching to a type that doesn't need ExternalTrafficPolicy // If a user is switching to a type that doesn't need ExternalTrafficPolicy
// AND they did not change this field, it is safe to drop it. // AND they did not change this field, it is safe to drop it.
if needsExternalTrafficPolicy(oldSvc) && !needsExternalTrafficPolicy(newSvc) && sameExternalTrafficPolicy(oldSvc, newSvc) { if needsExternalTrafficPolicy(oldSvc) && !needsExternalTrafficPolicy(newSvc) && sameExternalTrafficPolicy(oldSvc, newSvc) {
newSvc.Spec.ExternalTrafficPolicy = api.ServiceExternalTrafficPolicyType("") newSvc.Spec.ExternalTrafficPolicy = api.ServiceExternalTrafficPolicy("")
} }
// NOTE: there are other fields like `selector` which we could wipe. // NOTE: there are other fields like `selector` which we could wipe.
@ -317,7 +317,7 @@ func needsHCNodePort(svc *api.Service) bool {
if svc.Spec.Type != api.ServiceTypeLoadBalancer { if svc.Spec.Type != api.ServiceTypeLoadBalancer {
return false return false
} }
if svc.Spec.ExternalTrafficPolicy != api.ServiceExternalTrafficPolicyTypeLocal { if svc.Spec.ExternalTrafficPolicy != api.ServiceExternalTrafficPolicyLocal {
return false return false
} }
return true return true

View File

@ -285,7 +285,7 @@ func TestDropTypeDependentFields(t *testing.T) {
svc.Spec.Ports[0].Protocol = "UDP" svc.Spec.Ports[0].Protocol = "UDP"
} }
setHCNodePort := func(svc *api.Service) { setHCNodePort := func(svc *api.Service) {
svc.Spec.ExternalTrafficPolicy = api.ServiceExternalTrafficPolicyTypeLocal svc.Spec.ExternalTrafficPolicy = api.ServiceExternalTrafficPolicyLocal
svc.Spec.HealthCheckNodePort = int32(32000) svc.Spec.HealthCheckNodePort = int32(32000)
} }
changeHCNodePort := func(svc *api.Service) { changeHCNodePort := func(svc *api.Service) {

View File

@ -6320,7 +6320,7 @@ func init() {
} }
var fileDescriptor_83c10c24ec417dc9 = []byte{ var fileDescriptor_83c10c24ec417dc9 = []byte{
// 14547 bytes of a gzipped FileDescriptorProto // 14548 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xec, 0x7d, 0x69, 0x8c, 0x24, 0xd7, 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xec, 0x7d, 0x69, 0x8c, 0x24, 0xd7,
0x79, 0x98, 0xaa, 0x7b, 0xae, 0xfe, 0xe6, 0x7e, 0xb3, 0xbb, 0x9c, 0x1d, 0x72, 0x77, 0x96, 0x45, 0x79, 0x98, 0xaa, 0x7b, 0xae, 0xfe, 0xe6, 0x7e, 0xb3, 0xbb, 0x9c, 0x1d, 0x72, 0x77, 0x96, 0x45,
0x72, 0xb9, 0x14, 0xc9, 0x19, 0x2d, 0x0f, 0x89, 0x26, 0x25, 0x5a, 0x73, 0xee, 0x36, 0x77, 0x67, 0x72, 0xb9, 0x14, 0xc9, 0x19, 0x2d, 0x0f, 0x89, 0x26, 0x25, 0x5a, 0x73, 0xee, 0x36, 0x77, 0x67,
@ -7111,126 +7111,126 @@ var fileDescriptor_83c10c24ec417dc9 = []byte{
0x88, 0xc2, 0x84, 0xc3, 0x6e, 0xfe, 0x7e, 0xd3, 0x8e, 0xdc, 0xc6, 0x9c, 0xeb, 0x45, 0x61, 0x14, 0x88, 0xc2, 0x84, 0xc3, 0x6e, 0xfe, 0x7e, 0xd3, 0x8e, 0xdc, 0xc6, 0x9c, 0xeb, 0x45, 0x61, 0x14,
0xcc, 0x95, 0xbd, 0xe8, 0x46, 0xc0, 0xaf, 0x90, 0x5a, 0x78, 0x2f, 0xc5, 0x0b, 0x6b, 0x7c, 0x65, 0xcc, 0x95, 0xbd, 0xe8, 0x46, 0xc0, 0xaf, 0x90, 0x5a, 0x78, 0x2f, 0xc5, 0x0b, 0x6b, 0x7c, 0x65,
0xf8, 0x06, 0x56, 0x47, 0xbf, 0xe9, 0x4a, 0xb1, 0x2e, 0xe0, 0x58, 0x51, 0xd8, 0x1f, 0x60, 0xa7, 0xf8, 0x06, 0x56, 0x47, 0xbf, 0xe9, 0x4a, 0xb1, 0x2e, 0xe0, 0x58, 0x51, 0xd8, 0x1f, 0x60, 0xa7,
0x0f, 0xeb, 0xd3, 0xa3, 0x85, 0xb6, 0xfa, 0xf2, 0x88, 0x1a, 0x0d, 0x66, 0x14, 0x5d, 0xd6, 0x03, 0x0f, 0xeb, 0xd3, 0xa3, 0x85, 0xb6, 0xfa, 0xe9, 0x11, 0x35, 0x1a, 0xcc, 0x28, 0xba, 0xac, 0x07,
0x68, 0x75, 0xde, 0xec, 0x69, 0xc5, 0xfa, 0xab, 0xc2, 0x38, 0xca, 0x16, 0xfa, 0x78, 0xca, 0x3d, 0xd0, 0xea, 0xbc, 0xd9, 0xd3, 0x8a, 0xf5, 0x57, 0x85, 0x71, 0x94, 0x2d, 0xf4, 0xf1, 0x94, 0x7b,
0xe6, 0xd9, 0x2e, 0xa7, 0xc6, 0x11, 0x1c, 0x62, 0x58, 0xfe, 0x1d, 0x96, 0x9d, 0xa4, 0x5c, 0x11, 0xcc, 0xb3, 0x5d, 0x4e, 0x8d, 0x23, 0x38, 0xc4, 0xb0, 0xfc, 0x3b, 0x2c, 0x3b, 0x49, 0xb9, 0x22,
0xeb, 0x42, 0xcb, 0xbf, 0x23, 0x10, 0x38, 0xa6, 0xa1, 0xc2, 0x94, 0xfa, 0x13, 0x4e, 0xa3, 0x38, 0xd6, 0x85, 0x96, 0x7f, 0x47, 0x20, 0x70, 0x4c, 0x43, 0x85, 0x29, 0xf5, 0x27, 0x9c, 0x46, 0x71,
0x0e, 0xad, 0xa2, 0x0e, 0xb1, 0x46, 0x81, 0xe6, 0x85, 0x42, 0x81, 0xdb, 0x05, 0x1e, 0x4e, 0x28, 0x1c, 0x5a, 0x45, 0x1d, 0x62, 0x8d, 0x02, 0xcd, 0x0b, 0x85, 0x02, 0xb7, 0x0b, 0x3c, 0x9c, 0x50,
0x14, 0x64, 0x77, 0x69, 0x5a, 0xa0, 0xcb, 0x30, 0xac, 0xb2, 0xad, 0x57, 0x78, 0xe6, 0x2b, 0x31, 0x28, 0xc8, 0xee, 0xd2, 0xb4, 0x40, 0x97, 0x61, 0x58, 0x65, 0x5b, 0xaf, 0xf0, 0xcc, 0x57, 0x62,
0xcd, 0x56, 0x62, 0x30, 0xd6, 0x69, 0xd0, 0x06, 0x8c, 0x87, 0x5c, 0xcf, 0xa6, 0x82, 0x83, 0x73, 0x9a, 0xad, 0xc4, 0x60, 0xac, 0xd3, 0xa0, 0x0d, 0x18, 0x0f, 0xb9, 0x9e, 0x4d, 0x05, 0x07, 0xe7,
0x7d, 0xe5, 0x7b, 0xd5, 0x63, 0x62, 0x13, 0x7d, 0xc8, 0x40, 0x7c, 0x77, 0x92, 0x21, 0x16, 0x92, 0xfa, 0xca, 0xf7, 0xaa, 0xc7, 0xc4, 0x26, 0xfa, 0x90, 0x81, 0xf8, 0xee, 0x24, 0x43, 0x2c, 0x24,
0x2c, 0xd0, 0xab, 0x30, 0xd6, 0xf0, 0x9d, 0xfa, 0xa2, 0xd3, 0x70, 0xbc, 0x1a, 0xeb, 0x9f, 0x21, 0x59, 0xa0, 0x57, 0x61, 0xac, 0xe1, 0x3b, 0xf5, 0x45, 0xa7, 0xe1, 0x78, 0x35, 0xd6, 0x3f, 0x43,
0x33, 0x69, 0xef, 0x75, 0x03, 0x8b, 0x13, 0xd4, 0x54, 0x78, 0xd3, 0x21, 0x22, 0x44, 0x98, 0xe3, 0x66, 0xd2, 0xde, 0xeb, 0x06, 0x16, 0x27, 0xa8, 0xa9, 0xf0, 0xa6, 0x43, 0x44, 0x88, 0x30, 0xc7,
0x6d, 0x93, 0x50, 0xe4, 0xce, 0x66, 0xc2, 0xdb, 0xf5, 0x1c, 0x1a, 0x9c, 0x5b, 0x1a, 0xbd, 0x04, 0xdb, 0x26, 0xa1, 0xc8, 0x9d, 0xcd, 0x84, 0xb7, 0xeb, 0x39, 0x34, 0x38, 0xb7, 0x34, 0x7a, 0x09,
0x23, 0xf2, 0xf3, 0xb5, 0x88, 0x24, 0xf1, 0x93, 0x18, 0x0d, 0x87, 0x0d, 0x4a, 0x74, 0x07, 0x4e, 0x46, 0xe4, 0xe7, 0x6b, 0x11, 0x49, 0xe2, 0x27, 0x31, 0x1a, 0x0e, 0x1b, 0x94, 0x28, 0x84, 0xd3,
0xcb, 0xff, 0x1b, 0x81, 0xb3, 0xb5, 0xe5, 0xd6, 0xc4, 0x33, 0x7d, 0xfe, 0x76, 0x76, 0x41, 0x3e, 0xf2, 0xff, 0x46, 0xe0, 0x6c, 0x6d, 0xb9, 0x35, 0xf1, 0x4c, 0x9f, 0xbf, 0x9d, 0xfd, 0x90, 0x7c,
0xf0, 0x5c, 0xc9, 0x22, 0x3a, 0x3c, 0x98, 0xbd, 0x20, 0x7a, 0x2d, 0x13, 0xcf, 0x06, 0x31, 0x9b, 0xe0, 0xb9, 0x92, 0x45, 0x74, 0x78, 0x30, 0xfb, 0x88, 0xe8, 0xb5, 0x4c, 0x3c, 0xce, 0xe6, 0x8d,
0x3f, 0x5a, 0x83, 0xa9, 0x1d, 0xe2, 0x34, 0xa2, 0x9d, 0xa5, 0x1d, 0x52, 0xdb, 0x95, 0x8b, 0x8e, 0xd6, 0x60, 0x6a, 0x87, 0x38, 0x8d, 0x68, 0x67, 0x69, 0x87, 0xd4, 0x76, 0xe5, 0x82, 0x63, 0x31,
0xc5, 0x39, 0xd1, 0x9e, 0x8f, 0x5c, 0x4d, 0x93, 0xe0, 0xac, 0x72, 0xe8, 0x0d, 0x98, 0x6e, 0xb5, 0x4e, 0xb4, 0xa7, 0x23, 0x57, 0xd3, 0x24, 0x38, 0xab, 0x1c, 0x7a, 0x03, 0xa6, 0x5b, 0xed, 0xcd,
0x37, 0x1b, 0x6e, 0xb8, 0xb3, 0xee, 0x47, 0xcc, 0x11, 0x49, 0x25, 0x6f, 0x17, 0x01, 0x51, 0x54, 0x86, 0x1b, 0xee, 0xac, 0xfb, 0x11, 0x73, 0x42, 0x52, 0x89, 0xdb, 0x45, 0x30, 0x14, 0x15, 0x45,
0x24, 0x99, 0x4a, 0x0e, 0x1d, 0xce, 0xe5, 0x80, 0xde, 0x82, 0xd3, 0x89, 0xc9, 0x20, 0x42, 0x42, 0xa6, 0x92, 0x43, 0x87, 0x73, 0x39, 0xa0, 0xb7, 0xe0, 0x74, 0x62, 0x22, 0x88, 0x70, 0x10, 0x63,
0x8c, 0xe5, 0xa7, 0x07, 0xa9, 0x66, 0x15, 0x10, 0xd1, 0x55, 0xb2, 0x50, 0x38, 0xbb, 0x0a, 0xf4, 0xf9, 0xa9, 0x41, 0xaa, 0x59, 0x05, 0x44, 0x64, 0x95, 0x2c, 0x14, 0xce, 0xae, 0x02, 0xbd, 0x0c,
0x32, 0x80, 0xdb, 0x5a, 0x75, 0x9a, 0x6e, 0x83, 0x5e, 0x17, 0xa7, 0xd8, 0x3c, 0xa1, 0x57, 0x07, 0xe0, 0xb6, 0x56, 0x9d, 0xa6, 0xdb, 0xa0, 0x57, 0xc5, 0x29, 0x36, 0x47, 0xe8, 0xb5, 0x01, 0xca,
0x28, 0x57, 0x24, 0x94, 0xee, 0xcf, 0xe2, 0xdf, 0x3e, 0xd6, 0xa8, 0xd1, 0x75, 0x18, 0x13, 0xff, 0x15, 0x09, 0xa5, 0x7b, 0xb3, 0xf8, 0xb7, 0x8f, 0x35, 0x6a, 0x74, 0x1d, 0xc6, 0xc4, 0xbf, 0x7d,
0xf6, 0xc5, 0xb0, 0xf2, 0xc8, 0x24, 0x8f, 0xb3, 0xb0, 0x52, 0x15, 0x1d, 0x73, 0x98, 0x82, 0xe0, 0x31, 0xa4, 0x3c, 0x2a, 0xc9, 0xe3, 0x2c, 0xa4, 0x54, 0x45, 0xc7, 0x1c, 0xa6, 0x20, 0x38, 0x51,
0x44, 0x59, 0xb4, 0x0d, 0xe7, 0x64, 0xaa, 0x37, 0x7d, 0x8e, 0xca, 0x31, 0x08, 0x59, 0x4e, 0x8e, 0x16, 0x6d, 0xc3, 0x39, 0x99, 0xe6, 0x4d, 0x9f, 0x9f, 0x72, 0x0c, 0x42, 0x96, 0x8f, 0x63, 0x88,
0x21, 0xfe, 0x32, 0x65, 0xa1, 0x13, 0x21, 0xee, 0xcc, 0x87, 0x9e, 0xed, 0xfa, 0x54, 0xe7, 0x6f, 0xbf, 0x4a, 0x59, 0xe8, 0x44, 0x88, 0x3b, 0xf3, 0xa1, 0xe7, 0xba, 0x3e, 0xcd, 0xf9, 0xbb, 0xdd,
0x77, 0x4f, 0x73, 0x2f, 0x27, 0x7a, 0xb6, 0x5f, 0x4f, 0x22, 0x71, 0x9a, 0x1e, 0x85, 0x70, 0xda, 0xd3, 0xdc, 0xc3, 0x89, 0x9e, 0xeb, 0xd7, 0x93, 0x48, 0x9c, 0xa6, 0xa7, 0xb3, 0xda, 0xf5, 0xb2,
0xf5, 0xb2, 0x66, 0xf6, 0x19, 0xc6, 0xe8, 0x43, 0xfc, 0xd9, 0x72, 0xe7, 0x59, 0x9d, 0x89, 0xe7, 0x66, 0xf5, 0x19, 0x3e, 0xab, 0xf9, 0x93, 0xe5, 0xec, 0x19, 0x7d, 0x41, 0xcc, 0xe8, 0x4c, 0x3c,
0xb3, 0x3a, 0x93, 0xf7, 0xdb, 0xf3, 0xff, 0xfb, 0x2d, 0x8b, 0x96, 0xd6, 0xa4, 0x74, 0xf4, 0x29, 0xdb, 0x96, 0xb2, 0x79, 0xbf, 0x3d, 0xdf, 0xbf, 0xdf, 0xb2, 0x68, 0x69, 0x4d, 0x42, 0x47, 0x9f,
0x18, 0xd1, 0x3f, 0x4c, 0x48, 0x1c, 0x17, 0xb3, 0x85, 0x58, 0x6d, 0x6f, 0xe0, 0x32, 0xbe, 0x5a, 0x82, 0x11, 0xfd, 0xc3, 0x84, 0xb4, 0x71, 0x31, 0x5b, 0x80, 0xd5, 0xf6, 0x05, 0x2e, 0xdf, 0xab,
0xff, 0x3a, 0x0e, 0x1b, 0x1c, 0x51, 0x2d, 0xe3, 0x81, 0xff, 0x7c, 0x6f, 0x12, 0x4d, 0xef, 0xee, 0xb5, 0xaf, 0xe3, 0xb0, 0xc1, 0x11, 0xd5, 0x32, 0x1e, 0xf7, 0xcf, 0xf7, 0x26, 0xcd, 0xf4, 0xee,
0x6f, 0x04, 0xb2, 0xa7, 0x3c, 0xba, 0x0e, 0x43, 0xb5, 0x86, 0x4b, 0xbc, 0xa8, 0x5c, 0xe9, 0x14, 0xfa, 0x46, 0x20, 0x7b, 0xca, 0xa3, 0xeb, 0x30, 0x54, 0x6b, 0xb8, 0xc4, 0x8b, 0xca, 0x95, 0x4e,
0xc2, 0x70, 0x49, 0xd0, 0x88, 0x35, 0x24, 0x52, 0x6c, 0x70, 0x18, 0x56, 0x1c, 0xec, 0x5f, 0x2d, 0xe1, 0x0b, 0x97, 0x04, 0x8d, 0x58, 0x43, 0x22, 0xbd, 0x06, 0x87, 0x61, 0xc5, 0xc1, 0xfe, 0xd5,
0xc0, 0x6c, 0x97, 0x7c, 0x2d, 0x09, 0x73, 0x94, 0xd5, 0x93, 0x39, 0x6a, 0x01, 0xc6, 0xe3, 0x7f, 0x02, 0xcc, 0x76, 0xc9, 0xd5, 0x92, 0x30, 0x45, 0x59, 0x3d, 0x99, 0xa2, 0x16, 0x60, 0x3c, 0xfe,
0xba, 0xa6, 0x4b, 0x79, 0xb4, 0xde, 0x32, 0xd1, 0x38, 0x49, 0xdf, 0xf3, 0xe3, 0x04, 0xdd, 0xa2, 0xa7, 0x6b, 0xb9, 0x94, 0x37, 0xeb, 0x2d, 0x13, 0x8d, 0x93, 0xf4, 0x3d, 0x3f, 0x4c, 0xd0, 0xad,
0xd5, 0xd7, 0xf5, 0x79, 0x8d, 0x61, 0xc9, 0xee, 0xef, 0xfd, 0xfa, 0x9b, 0x6b, 0x95, 0xb4, 0xbf, 0x59, 0x7d, 0x5d, 0x9f, 0xd6, 0x18, 0x56, 0xec, 0xfe, 0xde, 0xaf, 0xbe, 0xb9, 0x16, 0x49, 0xfb,
0x56, 0x80, 0xd3, 0xaa, 0x0b, 0xbf, 0x7d, 0x3b, 0xee, 0x66, 0xba, 0xe3, 0x8e, 0xc1, 0xa6, 0x6b, 0x6b, 0x05, 0x38, 0xad, 0xba, 0xf0, 0xdb, 0xb7, 0xe3, 0x6e, 0xa6, 0x3b, 0xee, 0x18, 0xec, 0xb9,
0xdf, 0x80, 0x01, 0x1e, 0x93, 0xb1, 0x07, 0xb1, 0xfb, 0x31, 0x33, 0x52, 0xb3, 0x92, 0xf4, 0x8c, 0xf6, 0x0d, 0x18, 0xe0, 0xf1, 0x18, 0x7b, 0x10, 0xb9, 0x1f, 0x33, 0xa3, 0x34, 0x2b, 0x29, 0xcf,
0x68, 0xcd, 0xdf, 0x6f, 0xc1, 0x78, 0xe2, 0x95, 0x1b, 0xc2, 0xda, 0x53, 0xe8, 0xfb, 0x11, 0x8d, 0x88, 0xd4, 0xfc, 0xfd, 0x16, 0x8c, 0x27, 0x5e, 0xb8, 0x21, 0xac, 0x3d, 0x83, 0xbe, 0x1f, 0xb1,
0xb3, 0x84, 0xee, 0x0b, 0xd0, 0xb7, 0xe3, 0x87, 0x51, 0xd2, 0xe1, 0xe3, 0xaa, 0x1f, 0x46, 0x98, 0x38, 0x4b, 0xe0, 0xbe, 0x00, 0x7d, 0x3b, 0x7e, 0x18, 0x25, 0x9d, 0x3d, 0xae, 0xfa, 0x61, 0x84,
0x61, 0xec, 0xdf, 0xb1, 0xa0, 0x7f, 0xc3, 0x71, 0xbd, 0x48, 0x1a, 0x07, 0xac, 0x1c, 0xe3, 0x40, 0x19, 0xc6, 0xfe, 0x1d, 0x0b, 0xfa, 0x37, 0x1c, 0xd7, 0x8b, 0xa4, 0x61, 0xc0, 0xca, 0x31, 0x0c,
0x2f, 0xdf, 0x85, 0x5e, 0x84, 0x01, 0xb2, 0xb5, 0x45, 0x6a, 0x91, 0x18, 0x55, 0x19, 0x47, 0x62, 0xf4, 0xf2, 0x5d, 0xe8, 0x45, 0x18, 0x20, 0x5b, 0x5b, 0xa4, 0x16, 0x89, 0x51, 0x95, 0x31, 0x24,
0x60, 0x85, 0x41, 0xa9, 0x1c, 0xc8, 0x2a, 0xe3, 0x7f, 0xb1, 0x20, 0x46, 0xb7, 0xa1, 0x14, 0xb9, 0x06, 0x56, 0x18, 0x94, 0xca, 0x80, 0xac, 0x32, 0xfe, 0x17, 0x0b, 0x62, 0x74, 0x1b, 0x4a, 0x91,
0x4d, 0xb2, 0x50, 0xaf, 0x0b, 0x93, 0xf9, 0x7d, 0xc4, 0xc2, 0xd8, 0x90, 0x0c, 0x70, 0xcc, 0xcb, 0xdb, 0x24, 0x0b, 0xf5, 0xba, 0x30, 0x97, 0xdf, 0x47, 0x1c, 0x8c, 0x0d, 0xc9, 0x00, 0xc7, 0xbc,
0xfe, 0x42, 0x01, 0x20, 0x0e, 0x66, 0xd5, 0xed, 0x13, 0x17, 0x53, 0xc6, 0xd4, 0x8b, 0x19, 0xc6, 0xec, 0x2f, 0x14, 0x00, 0xe2, 0x40, 0x56, 0xdd, 0x3e, 0x71, 0x31, 0x65, 0x48, 0xbd, 0x98, 0x61,
0x54, 0x14, 0x33, 0xcc, 0xb0, 0xa4, 0xaa, 0x6e, 0x2a, 0xf6, 0xd4, 0x4d, 0x7d, 0x47, 0xe9, 0xa6, 0x48, 0x45, 0x31, 0xc3, 0x0c, 0x2b, 0xaa, 0xea, 0xa6, 0x62, 0x4f, 0xdd, 0xd4, 0x77, 0x94, 0x6e,
0x25, 0x98, 0x8c, 0x83, 0x71, 0x99, 0xb1, 0x08, 0xd9, 0xf1, 0xb9, 0x91, 0x44, 0xe2, 0x34, 0xbd, 0x5a, 0x82, 0xc9, 0x38, 0x10, 0x97, 0x19, 0x87, 0x90, 0x1d, 0x9f, 0x1b, 0x49, 0x24, 0x4e, 0xd3,
0x4d, 0xe0, 0x82, 0x8a, 0x49, 0x24, 0x4e, 0x34, 0xe6, 0x0f, 0xae, 0x1b, 0xa7, 0xbb, 0xf4, 0x53, 0xdb, 0x04, 0x2e, 0xa8, 0x78, 0x44, 0xe2, 0x44, 0x63, 0xbe, 0xe0, 0xba, 0x61, 0xba, 0x4b, 0x3f,
0x6c, 0x2d, 0x2e, 0xe4, 0x5a, 0x8b, 0x7f, 0xc2, 0x82, 0x53, 0xc9, 0x7a, 0xd8, 0xe3, 0xe9, 0xcf, 0xc5, 0x96, 0xe2, 0x42, 0xae, 0xa5, 0xf8, 0x27, 0x2c, 0x38, 0x95, 0xac, 0x87, 0x3d, 0x9c, 0xfe,
0x5b, 0x70, 0x9a, 0xd9, 0xcc, 0x59, 0xad, 0x69, 0x0b, 0xfd, 0x0b, 0x1d, 0xe3, 0x2c, 0xe5, 0xb4, 0xbc, 0x05, 0xa7, 0x99, 0xbd, 0x9c, 0xd5, 0x9a, 0xb6, 0xce, 0xbf, 0xd0, 0x31, 0xc6, 0x52, 0x4e,
0x38, 0x0e, 0x58, 0xb2, 0x96, 0xc5, 0x1a, 0x67, 0xd7, 0x68, 0xff, 0xaf, 0x3e, 0x98, 0xce, 0x0b, 0x8b, 0xe3, 0x60, 0x25, 0x6b, 0x59, 0xac, 0x71, 0x76, 0x8d, 0xf6, 0xff, 0xea, 0x83, 0xe9, 0xbc,
0xd0, 0xc4, 0x9e, 0x8b, 0x38, 0x77, 0xab, 0xbb, 0xe4, 0x8e, 0x70, 0xca, 0x8f, 0x9f, 0x8b, 0x70, 0xe0, 0x4c, 0xec, 0xa9, 0x88, 0x73, 0xb7, 0xba, 0x4b, 0xee, 0x08, 0x87, 0xfc, 0xf8, 0xa9, 0x08,
0x30, 0x96, 0xf8, 0x64, 0x0a, 0x8e, 0x42, 0x8f, 0x29, 0x38, 0x76, 0x60, 0xf2, 0xce, 0x0e, 0xf1, 0x07, 0x63, 0x89, 0x4f, 0xa6, 0xdf, 0x28, 0xf4, 0x98, 0x7e, 0x63, 0x07, 0x26, 0xef, 0xec, 0x10,
0x6e, 0x7a, 0xa1, 0x13, 0xb9, 0xe1, 0x96, 0xcb, 0xec, 0xcb, 0x7c, 0xde, 0xc8, 0xbc, 0xbd, 0x93, 0xef, 0xa6, 0x17, 0x3a, 0x91, 0x1b, 0x6e, 0xb9, 0xcc, 0xb6, 0xcc, 0xe7, 0x8d, 0xcc, 0xd9, 0x3b,
0xb7, 0x93, 0x04, 0x87, 0x07, 0xb3, 0xe7, 0x0c, 0x40, 0xdc, 0x64, 0xbe, 0x91, 0xe0, 0x34, 0xd3, 0x79, 0x3b, 0x49, 0x70, 0x78, 0x30, 0x7b, 0xce, 0x00, 0xc4, 0x4d, 0xe6, 0x1b, 0x09, 0x4e, 0x33,
0x74, 0x06, 0x93, 0xbe, 0x07, 0x9c, 0xc1, 0xa4, 0xe9, 0x0a, 0xaf, 0x14, 0xf9, 0x16, 0x80, 0xdd, 0x4d, 0x67, 0x2f, 0xe9, 0x7b, 0xc0, 0xd9, 0x4b, 0x9a, 0xae, 0xf0, 0x48, 0x91, 0xef, 0x00, 0xd8,
0x1c, 0xd7, 0x14, 0x14, 0x6b, 0x14, 0xe8, 0x13, 0x80, 0xf4, 0x0c, 0x4d, 0x46, 0x7c, 0xcc, 0x67, 0xad, 0x71, 0x4d, 0x41, 0xb1, 0x46, 0x81, 0x3e, 0x01, 0x48, 0xcf, 0xce, 0x64, 0xc4, 0xc6, 0x7c,
0xef, 0x1d, 0xcc, 0xa2, 0xf5, 0x14, 0xf6, 0xf0, 0x60, 0x76, 0x8a, 0x42, 0xcb, 0x1e, 0xbd, 0x81, 0xf6, 0xde, 0xc1, 0x2c, 0x5a, 0x4f, 0x61, 0x0f, 0x0f, 0x66, 0xa7, 0x28, 0xb4, 0xec, 0xd1, 0xdb,
0xc6, 0x41, 0xc5, 0x32, 0x18, 0xa1, 0xdb, 0x30, 0x41, 0xa1, 0x6c, 0x45, 0xc9, 0xe0, 0x9b, 0xfc, 0x67, 0x1c, 0x50, 0x2c, 0x83, 0x11, 0xba, 0x0d, 0x13, 0x14, 0xca, 0x56, 0x94, 0x0c, 0xbc, 0xc9,
0xd6, 0xf8, 0xf4, 0xbd, 0x83, 0xd9, 0x89, 0xf5, 0x04, 0x2e, 0x8f, 0x75, 0x8a, 0x09, 0x7a, 0x19, 0x6f, 0x8c, 0x4f, 0xdf, 0x3b, 0x98, 0x9d, 0x58, 0x4f, 0xe0, 0xf2, 0x58, 0xa7, 0x98, 0xa0, 0x97,
0xc6, 0xe2, 0x79, 0x75, 0x8d, 0xec, 0xf3, 0x60, 0x37, 0x25, 0xae, 0xf8, 0x5e, 0x33, 0x30, 0x38, 0x61, 0x2c, 0x9e, 0x57, 0xd7, 0xc8, 0x3e, 0x0f, 0x74, 0x53, 0xe2, 0x4a, 0xef, 0x35, 0x03, 0x83,
0x41, 0x69, 0x7f, 0xde, 0x82, 0xb3, 0xb9, 0x59, 0xc4, 0xd1, 0x25, 0x18, 0x72, 0x5a, 0x2e, 0x37, 0x13, 0x94, 0xf6, 0xe7, 0x2d, 0x38, 0x9b, 0x9b, 0x41, 0x1c, 0x5d, 0x82, 0x21, 0xa7, 0xe5, 0x72,
0x63, 0x88, 0xa3, 0x86, 0xa9, 0xcb, 0x2a, 0x65, 0x6e, 0xc4, 0x50, 0x58, 0xba, 0xc3, 0xef, 0xba, 0x13, 0x86, 0x38, 0x6a, 0x98, 0xaa, 0xac, 0x52, 0xe6, 0x06, 0x0c, 0x85, 0xa5, 0x3b, 0xfc, 0xae,
0x5e, 0x3d, 0xb9, 0xc3, 0x5f, 0x73, 0xbd, 0x3a, 0x66, 0x18, 0x75, 0x64, 0x15, 0x73, 0x9f, 0x24, 0xeb, 0xd5, 0x93, 0x3b, 0xfc, 0x35, 0xd7, 0xab, 0x63, 0x86, 0x51, 0x47, 0x56, 0x31, 0xf7, 0x39,
0x7c, 0x85, 0xae, 0xd5, 0x8c, 0x7c, 0xe3, 0x27, 0xdb, 0x0c, 0xf4, 0xb4, 0x6e, 0x72, 0x14, 0xde, 0xc2, 0x57, 0xe8, 0x5a, 0xcd, 0xc8, 0x35, 0x7e, 0xb2, 0xcd, 0x40, 0x4f, 0xeb, 0xe6, 0x46, 0xe1,
0x85, 0xb9, 0xe6, 0xc6, 0xef, 0xb3, 0x40, 0x3c, 0x61, 0xee, 0xe1, 0x4c, 0xfe, 0x18, 0x8c, 0xec, 0x59, 0x98, 0x6b, 0x6a, 0xfc, 0x3e, 0x0b, 0xc4, 0xf3, 0xe5, 0x1e, 0xce, 0xe4, 0x8f, 0xc1, 0xc8,
0xa5, 0xb3, 0xd7, 0x5d, 0xc8, 0x7f, 0xd3, 0x2d, 0xa2, 0x7e, 0x2b, 0x41, 0xdb, 0xc8, 0x54, 0x67, 0x5e, 0x3a, 0x73, 0xdd, 0x85, 0xfc, 0xf7, 0xdc, 0x22, 0xe2, 0xb7, 0x12, 0xb4, 0x8d, 0x2c, 0x75,
0xf0, 0xb2, 0xeb, 0x20, 0xb0, 0xcb, 0x84, 0x19, 0x16, 0xba, 0xb7, 0xe6, 0x39, 0x80, 0x3a, 0xa3, 0x06, 0x2f, 0xbb, 0x0e, 0x02, 0xbb, 0x4c, 0x98, 0x51, 0xa1, 0x7b, 0x6b, 0x9e, 0x03, 0xa8, 0x33,
0x65, 0x29, 0x6d, 0x0b, 0xa6, 0xc4, 0xb5, 0xac, 0x30, 0x58, 0xa3, 0xb2, 0xff, 0x75, 0x01, 0x86, 0x5a, 0x96, 0xce, 0xb6, 0x60, 0x4a, 0x5c, 0xcb, 0x0a, 0x83, 0x35, 0x2a, 0xfb, 0x5f, 0x17, 0x60,
0x65, 0xb6, 0xb4, 0xb6, 0xd7, 0x8b, 0xfa, 0xef, 0x48, 0xe9, 0x93, 0xd1, 0x3c, 0x94, 0x98, 0x7e, 0x58, 0x66, 0x4a, 0x6b, 0x7b, 0xbd, 0xa8, 0xfe, 0x8e, 0x94, 0x3a, 0x19, 0xcd, 0x43, 0x89, 0xe9,
0xba, 0x12, 0x6b, 0x4d, 0x95, 0x76, 0x68, 0x4d, 0x22, 0x70, 0x4c, 0x43, 0x77, 0xc7, 0xb0, 0xbd, 0xa6, 0x2b, 0xb1, 0xc6, 0x54, 0x69, 0x86, 0xd6, 0x24, 0x02, 0xc7, 0x34, 0x74, 0x77, 0x0c, 0xdb,
0xc9, 0xc8, 0x13, 0x0f, 0x6e, 0xab, 0x1c, 0x8c, 0x25, 0x1e, 0x7d, 0x04, 0x26, 0x78, 0xb9, 0xc0, 0x9b, 0x8c, 0x3c, 0xf1, 0xd8, 0xb6, 0xca, 0xc1, 0x58, 0xe2, 0xd1, 0x47, 0x60, 0x82, 0x97, 0x0b,
0x6f, 0x39, 0xdb, 0xdc, 0xa6, 0xd5, 0xaf, 0xa2, 0x98, 0x4c, 0xac, 0x25, 0x70, 0x87, 0x07, 0xb3, 0xfc, 0x96, 0xb3, 0xcd, 0xed, 0x59, 0xfd, 0x2a, 0x82, 0xc9, 0xc4, 0x5a, 0x02, 0x77, 0x78, 0x30,
0xa7, 0x92, 0x30, 0x66, 0xac, 0x4d, 0x71, 0x61, 0xae, 0x6b, 0xbc, 0x12, 0xba, 0xab, 0xa7, 0x3c, 0x7b, 0x2a, 0x09, 0x63, 0x86, 0xda, 0x14, 0x17, 0xe6, 0xb6, 0xc6, 0x2b, 0xa1, 0xbb, 0x7a, 0xca,
0xde, 0x62, 0x14, 0xd6, 0xe9, 0xec, 0x4f, 0x01, 0x4a, 0xe7, 0x8d, 0x43, 0xaf, 0x71, 0xd7, 0x67, 0xdb, 0x2d, 0x46, 0x61, 0x9d, 0xce, 0xfe, 0x14, 0xa0, 0x74, 0xce, 0x38, 0xf4, 0x1a, 0x77, 0x7b,
0x37, 0x20, 0xf5, 0x4e, 0xc6, 0x5b, 0x3d, 0x56, 0x87, 0x7c, 0x2b, 0xc7, 0x4b, 0x61, 0x55, 0xde, 0x76, 0x03, 0x52, 0xef, 0x64, 0xb8, 0xd5, 0xe3, 0x74, 0xc8, 0x77, 0x72, 0xbc, 0x14, 0x56, 0xe5,
0xfe, 0x0b, 0x45, 0x98, 0x48, 0x46, 0x07, 0x40, 0x57, 0x61, 0x80, 0x8b, 0x94, 0x82, 0x7d, 0x07, 0xed, 0xbf, 0x50, 0x84, 0x89, 0x64, 0x64, 0x00, 0x74, 0x15, 0x06, 0xb8, 0x48, 0x29, 0xd8, 0x77,
0xdf, 0x20, 0x2d, 0xa6, 0x00, 0x3b, 0x5c, 0x85, 0x54, 0x2a, 0xca, 0xa3, 0x37, 0x60, 0xb8, 0xee, 0xf0, 0x0b, 0xd2, 0xe2, 0x09, 0xb0, 0xc3, 0x55, 0x48, 0xa5, 0xa2, 0x3c, 0x7a, 0x03, 0x86, 0xeb,
0xdf, 0xf1, 0xee, 0x38, 0x41, 0x7d, 0xa1, 0x52, 0x16, 0xd3, 0x39, 0x53, 0x59, 0xb1, 0x1c, 0x93, 0xfe, 0x1d, 0xef, 0x8e, 0x13, 0xd4, 0x17, 0x2a, 0x65, 0x31, 0x9d, 0x33, 0x95, 0x15, 0xcb, 0x31,
0xe9, 0x71, 0x0a, 0x98, 0x1d, 0x3c, 0x46, 0x61, 0x9d, 0x1d, 0xda, 0x60, 0xc9, 0x26, 0xb6, 0xdc, 0x99, 0x1e, 0xa3, 0x80, 0xd9, 0xc0, 0x63, 0x14, 0xd6, 0xd9, 0xa1, 0x0d, 0x96, 0x68, 0x62, 0xcb,
0xed, 0x35, 0xa7, 0xd5, 0xe9, 0x1d, 0xcc, 0x92, 0x24, 0xd2, 0x38, 0x8f, 0x8a, 0x8c, 0x14, 0x1c, 0xdd, 0x5e, 0x73, 0x5a, 0x9d, 0xde, 0xc0, 0x2c, 0x49, 0x22, 0x8d, 0xf3, 0xa8, 0xc8, 0x46, 0xc1,
0x81, 0x63, 0x46, 0xe8, 0x33, 0x30, 0x15, 0xe6, 0x98, 0x50, 0xf2, 0xd2, 0x88, 0x76, 0xb2, 0x2a, 0x11, 0x38, 0x66, 0x84, 0x3e, 0x03, 0x53, 0x61, 0x8e, 0xf9, 0x24, 0x2f, 0x85, 0x68, 0x27, 0x8b,
0x2c, 0x3e, 0x74, 0xef, 0x60, 0x76, 0x2a, 0xcb, 0xd8, 0x92, 0x55, 0x8d, 0xfd, 0xc5, 0x53, 0x60, 0xc2, 0xe2, 0x43, 0xf7, 0x0e, 0x66, 0xa7, 0xb2, 0x0c, 0x2d, 0x59, 0xd5, 0xd8, 0x5f, 0x3c, 0x05,
0x2c, 0x62, 0x23, 0xab, 0xb4, 0x75, 0x4c, 0x59, 0xa5, 0x31, 0x0c, 0x91, 0x66, 0x2b, 0xda, 0x5f, 0xc6, 0x22, 0x36, 0x32, 0x4a, 0x5b, 0xc7, 0x94, 0x51, 0x1a, 0xc3, 0x10, 0x69, 0xb6, 0xa2, 0xfd,
0x76, 0x03, 0x31, 0x26, 0x99, 0x3c, 0x57, 0x04, 0x4d, 0x9a, 0xa7, 0xc4, 0x60, 0xc5, 0x27, 0x3b, 0x65, 0x37, 0x10, 0x63, 0x92, 0xc9, 0x73, 0x45, 0xd0, 0xa4, 0x79, 0x4a, 0x0c, 0x56, 0x7c, 0xb2,
0xf5, 0x77, 0xf1, 0x9b, 0x98, 0xfa, 0xbb, 0xef, 0x04, 0x53, 0x7f, 0xaf, 0xc3, 0xe0, 0xb6, 0x1b, 0xd3, 0x7e, 0x17, 0xbf, 0x89, 0x69, 0xbf, 0xfb, 0x4e, 0x30, 0xed, 0xf7, 0x3a, 0x0c, 0x6e, 0xbb,
0x61, 0xd2, 0xf2, 0xc5, 0x65, 0x2e, 0x73, 0x1e, 0x5e, 0xe1, 0x24, 0xe9, 0x24, 0xb3, 0x02, 0x81, 0x11, 0x26, 0x2d, 0x5f, 0x5c, 0xe6, 0x32, 0xe7, 0xe1, 0x15, 0x4e, 0x92, 0x4e, 0x30, 0x2b, 0x10,
0x25, 0x13, 0xf4, 0x9a, 0x5a, 0x81, 0x03, 0xf9, 0x0a, 0x97, 0xb4, 0x13, 0x4b, 0xe6, 0x1a, 0x14, 0x58, 0x32, 0x41, 0xaf, 0xa9, 0x15, 0x38, 0x90, 0xaf, 0x70, 0x49, 0x3b, 0xb0, 0x64, 0xae, 0x41,
0x09, 0xbe, 0x07, 0xef, 0x37, 0xc1, 0xf7, 0xaa, 0x4c, 0xcb, 0x3d, 0x94, 0xff, 0x68, 0x8d, 0x65, 0x91, 0xdc, 0x7b, 0xf0, 0x7e, 0x93, 0x7b, 0xaf, 0xca, 0x94, 0xdc, 0x43, 0xf9, 0x0f, 0xd6, 0x58,
0xdd, 0xee, 0x92, 0x8c, 0xfb, 0x96, 0x9e, 0xca, 0xbc, 0x94, 0xbf, 0x13, 0xa8, 0x2c, 0xe5, 0x3d, 0xc6, 0xed, 0x2e, 0x89, 0xb8, 0x6f, 0xe9, 0x69, 0xcc, 0x4b, 0xf9, 0x3b, 0x81, 0xca, 0x50, 0xde,
0x26, 0x30, 0xff, 0x3e, 0x0b, 0x4e, 0xb7, 0xb2, 0xb2, 0xfa, 0x0b, 0x7f, 0x8f, 0x17, 0x7b, 0xc9, 0x63, 0xf2, 0xf2, 0xef, 0xb3, 0xe0, 0x74, 0x2b, 0x2b, 0xa3, 0xbf, 0xf0, 0xf5, 0x78, 0xb1, 0x97,
0xfd, 0xca, 0x0a, 0x18, 0x15, 0x32, 0x3d, 0x69, 0x26, 0x19, 0xce, 0xae, 0x8e, 0x76, 0x74, 0xb0, 0xbc, 0xaf, 0xac, 0x80, 0x51, 0x21, 0xd3, 0x93, 0x66, 0x92, 0xe1, 0xec, 0xea, 0x68, 0x47, 0x07,
0x59, 0x17, 0x7e, 0x07, 0x8f, 0xe5, 0x64, 0x42, 0xef, 0x90, 0xff, 0x7c, 0x23, 0x23, 0xeb, 0xf6, 0x9b, 0x75, 0xe1, 0x73, 0xf0, 0x58, 0x4e, 0x16, 0xf4, 0x0e, 0xb9, 0xcf, 0x37, 0x32, 0x32, 0x6e,
0xe3, 0x79, 0x59, 0xb7, 0x7b, 0xce, 0xb5, 0xfd, 0x9a, 0xca, 0x81, 0x3e, 0x9a, 0x3f, 0x95, 0x78, 0x3f, 0x9e, 0x97, 0x71, 0xbb, 0xe7, 0x3c, 0xdb, 0xaf, 0xa9, 0xfc, 0xe7, 0xa3, 0xf9, 0x53, 0x89,
0x86, 0xf3, 0xae, 0x99, 0xcf, 0x5f, 0x53, 0x99, 0xcf, 0x3b, 0x84, 0xd7, 0xe6, 0x79, 0xcd, 0xbb, 0x67, 0x37, 0xef, 0x9a, 0xf5, 0xfc, 0x35, 0x95, 0xf5, 0xbc, 0x43, 0x68, 0x6d, 0x9e, 0xd3, 0xbc,
0xe6, 0x3b, 0xd7, 0x72, 0x96, 0x8f, 0x1f, 0x4f, 0xce, 0x72, 0xe3, 0xa8, 0xe1, 0x69, 0xb3, 0x9f, 0x6b, 0xae, 0x73, 0x2d, 0x5f, 0xf9, 0xf8, 0xf1, 0xe4, 0x2b, 0x37, 0x8e, 0x1a, 0x9e, 0x32, 0xfb,
0xee, 0x72, 0xd4, 0x18, 0x7c, 0x3b, 0x1f, 0x36, 0x3c, 0x3f, 0xfb, 0xe4, 0x7d, 0xe5, 0x67, 0xbf, 0xe9, 0x2e, 0x47, 0x8d, 0xc1, 0xb7, 0xf3, 0x61, 0xc3, 0x73, 0xb3, 0x4f, 0xde, 0x57, 0x6e, 0xf6,
0xa5, 0xe7, 0x3b, 0x47, 0x5d, 0x12, 0x7a, 0x53, 0xa2, 0x1e, 0xb3, 0x9c, 0xdf, 0xd2, 0x0f, 0xc0, 0x5b, 0x7a, 0xae, 0x73, 0xd4, 0x25, 0x99, 0x37, 0x25, 0xea, 0x31, 0xc3, 0xf9, 0x2d, 0xfd, 0x00,
0xa9, 0x7c, 0xbe, 0xea, 0x9c, 0x4b, 0xf3, 0xcd, 0x3c, 0x02, 0x53, 0xd9, 0xd3, 0x4f, 0x9d, 0x4c, 0x9c, 0xca, 0xe7, 0xab, 0xce, 0xb9, 0x34, 0xdf, 0xcc, 0x23, 0x30, 0x95, 0x39, 0xfd, 0xd4, 0xc9,
0xf6, 0xf4, 0xd3, 0xc7, 0x9e, 0x3d, 0xfd, 0xcc, 0x09, 0x64, 0x4f, 0x7f, 0xe8, 0x04, 0xb3, 0xa7, 0x64, 0x4e, 0x3f, 0x7d, 0xec, 0x99, 0xd3, 0xcf, 0x9c, 0x40, 0xe6, 0xf4, 0x87, 0x4e, 0x30, 0x73,
0xdf, 0x62, 0x4e, 0x52, 0x3c, 0x10, 0x94, 0x08, 0x07, 0xfe, 0x54, 0x4e, 0x1c, 0xb5, 0x74, 0xb4, 0xfa, 0x2d, 0xe6, 0x20, 0xc5, 0x83, 0x40, 0x89, 0x50, 0xe0, 0x4f, 0xe5, 0xc4, 0x50, 0x4b, 0x47,
0x28, 0xfe, 0x71, 0x0a, 0x85, 0x63, 0x56, 0x19, 0x59, 0xd9, 0xa7, 0x1f, 0x40, 0x56, 0xf6, 0xf5, 0x8a, 0xe2, 0x1f, 0xa7, 0x50, 0x38, 0x66, 0x95, 0x91, 0x91, 0x7d, 0xfa, 0x01, 0x64, 0x64, 0x5f,
0x38, 0x2b, 0xfb, 0xd9, 0xfc, 0xa1, 0xce, 0x78, 0x56, 0x93, 0x93, 0x8b, 0xfd, 0x96, 0x9e, 0x43, 0x8f, 0x33, 0xb2, 0x9f, 0xcd, 0x1f, 0xea, 0x8c, 0x27, 0x35, 0x39, 0x79, 0xd8, 0x6f, 0xe9, 0xf9,
0xfd, 0xe1, 0x0e, 0x96, 0xb0, 0x2c, 0x85, 0x72, 0x87, 0xcc, 0xe9, 0xaf, 0xf2, 0xcc, 0xe9, 0x8f, 0xd3, 0x1f, 0xee, 0x60, 0x09, 0xcb, 0x52, 0x28, 0x77, 0xc8, 0x9a, 0xfe, 0x2a, 0xcf, 0x9a, 0xfe,
0xe4, 0xef, 0xe4, 0xc9, 0xe3, 0xce, 0xc8, 0x97, 0x4e, 0xdb, 0xa5, 0x02, 0xa9, 0xb2, 0xc0, 0xe7, 0x48, 0xfe, 0x4e, 0x9e, 0x3c, 0xee, 0x8c, 0x5c, 0xe9, 0xb4, 0x5d, 0x2a, 0x88, 0x2a, 0x0b, 0x7a,
0x39, 0xed, 0x52, 0x91, 0x58, 0xd3, 0xed, 0x52, 0x28, 0x1c, 0xb3, 0xb2, 0x7f, 0xa0, 0x00, 0xe7, 0x9e, 0xd3, 0x2e, 0x15, 0x85, 0x35, 0xdd, 0x2e, 0x85, 0xc2, 0x31, 0x2b, 0xfb, 0x07, 0x0a, 0x70,
0x3b, 0xaf, 0xb7, 0x58, 0x4b, 0x5e, 0x89, 0x1d, 0x03, 0x12, 0x5a, 0x72, 0x7e, 0x67, 0x8b, 0xa9, 0xbe, 0xf3, 0x7a, 0x8b, 0xb5, 0xe4, 0x95, 0xd8, 0x29, 0x20, 0xa1, 0x25, 0xe7, 0x77, 0xb6, 0x98,
0x7a, 0x8e, 0x0b, 0x79, 0x05, 0x26, 0xd5, 0x7b, 0x9c, 0x86, 0x5b, 0xdb, 0x5f, 0x8f, 0xaf, 0xc9, 0xaa, 0xe7, 0x98, 0x90, 0x57, 0x60, 0x52, 0xbd, 0xc5, 0x69, 0xb8, 0xb5, 0xfd, 0xf5, 0xf8, 0x9a,
0x2a, 0x82, 0x42, 0x35, 0x49, 0x80, 0xd3, 0x65, 0xd0, 0x02, 0x8c, 0x1b, 0xc0, 0xf2, 0xb2, 0xb8, 0xac, 0xa2, 0x27, 0x54, 0x93, 0x04, 0x38, 0x5d, 0x06, 0x2d, 0xc0, 0xb8, 0x01, 0x2c, 0x2f, 0x8b,
0x9b, 0xc5, 0xa1, 0xb6, 0x4d, 0x34, 0x4e, 0xd2, 0xdb, 0x5f, 0xb2, 0xe0, 0xa1, 0x9c, 0xb4, 0xa3, 0xbb, 0x59, 0x1c, 0x66, 0xdb, 0x44, 0xe3, 0x24, 0xbd, 0xfd, 0x25, 0x0b, 0x1e, 0xca, 0x49, 0x39,
0x3d, 0x87, 0x3d, 0xdc, 0x82, 0xf1, 0x96, 0x59, 0xb4, 0x4b, 0xa4, 0x56, 0x23, 0xb9, 0xa9, 0x6a, 0xda, 0x73, 0xc8, 0xc3, 0x2d, 0x18, 0x6f, 0x99, 0x45, 0xbb, 0x44, 0x69, 0x35, 0x12, 0x9b, 0xaa,
0x6b, 0x02, 0x81, 0x93, 0x4c, 0xed, 0x9f, 0x2e, 0xc0, 0xb9, 0x8e, 0x0e, 0xa6, 0x08, 0xc3, 0x99, 0xb6, 0x26, 0x10, 0x38, 0xc9, 0xd4, 0xfe, 0xe9, 0x02, 0x9c, 0xeb, 0xe8, 0x5c, 0x8a, 0x30, 0x9c,
0xed, 0x66, 0xe8, 0x2c, 0x05, 0xa4, 0x4e, 0xbc, 0xc8, 0x75, 0x1a, 0xd5, 0x16, 0xa9, 0x69, 0x76, 0xd9, 0x6e, 0x86, 0xce, 0x52, 0x40, 0xea, 0xc4, 0x8b, 0x5c, 0xa7, 0x51, 0x6d, 0x91, 0x9a, 0x66,
0x0e, 0xe6, 0xa9, 0x79, 0x65, 0xad, 0xba, 0x90, 0xa6, 0xc0, 0x39, 0x25, 0xd1, 0x2a, 0xa0, 0x34, 0xe7, 0x60, 0x5e, 0x9a, 0x57, 0xd6, 0xaa, 0x0b, 0x69, 0x0a, 0x9c, 0x53, 0x12, 0xad, 0x02, 0x4a,
0x46, 0x8c, 0x30, 0x0b, 0xa1, 0x9f, 0xe6, 0x87, 0x33, 0x4a, 0xa0, 0x0f, 0xc0, 0xa8, 0x72, 0x5c, 0x63, 0xc4, 0x08, 0xb3, 0xf0, 0xf9, 0x69, 0x7e, 0x38, 0xa3, 0x04, 0xfa, 0x00, 0x8c, 0x2a, 0xa7,
0xd5, 0x46, 0x9c, 0x6d, 0xec, 0x58, 0x47, 0x60, 0x93, 0x0e, 0x5d, 0xe6, 0x39, 0x18, 0x44, 0xb6, 0x55, 0x6d, 0xc4, 0xd9, 0xc6, 0x8e, 0x75, 0x04, 0x36, 0xe9, 0xd0, 0x65, 0x9e, 0x7f, 0x41, 0x64,
0x0e, 0x61, 0x14, 0x19, 0x97, 0x09, 0x16, 0x04, 0x18, 0xeb, 0x34, 0x8b, 0x2f, 0xfd, 0xda, 0xef, 0xea, 0x10, 0x46, 0x91, 0x71, 0x99, 0x5c, 0x41, 0x80, 0xb1, 0x4e, 0xb3, 0xf8, 0xd2, 0xaf, 0xfd,
0x9d, 0x7f, 0xcf, 0x6f, 0xfc, 0xde, 0xf9, 0xf7, 0xfc, 0xf6, 0xef, 0x9d, 0x7f, 0xcf, 0x77, 0xdd, 0xde, 0xf9, 0xf7, 0xfc, 0xc6, 0xef, 0x9d, 0x7f, 0xcf, 0x6f, 0xff, 0xde, 0xf9, 0xf7, 0x7c, 0xd7,
0x3b, 0x6f, 0xfd, 0xda, 0xbd, 0xf3, 0xd6, 0x6f, 0xdc, 0x3b, 0x6f, 0xfd, 0xf6, 0xbd, 0xf3, 0xd6, 0xbd, 0xf3, 0xd6, 0xaf, 0xdd, 0x3b, 0x6f, 0xfd, 0xc6, 0xbd, 0xf3, 0xd6, 0x6f, 0xdf, 0x3b, 0x6f,
0xef, 0xde, 0x3b, 0x6f, 0x7d, 0xe1, 0xf7, 0xcf, 0xbf, 0xe7, 0x63, 0x28, 0x0e, 0x24, 0x3a, 0x4f, 0xfd, 0xee, 0xbd, 0xf3, 0xd6, 0x17, 0x7e, 0xff, 0xfc, 0x7b, 0x3e, 0x86, 0xe2, 0x20, 0xa2, 0xf3,
0x47, 0x67, 0x7e, 0xef, 0xf2, 0xff, 0x0f, 0x00, 0x00, 0xff, 0xff, 0x52, 0x56, 0xa0, 0x3b, 0xf7, 0x74, 0x74, 0xe6, 0xf7, 0x2e, 0xff, 0xff, 0x00, 0x00, 0x00, 0xff, 0xff, 0xad, 0xc7, 0x7d, 0xad,
0x0c, 0x01, 0x00, 0xf3, 0x0c, 0x01, 0x00,
} }
func (m *AWSElasticBlockStoreVolumeSource) Marshal() (dAtA []byte, err error) { func (m *AWSElasticBlockStoreVolumeSource) Marshal() (dAtA []byte, err error) {
@ -65016,7 +65016,7 @@ func (m *ServiceSpec) Unmarshal(dAtA []byte) error {
if postIndex > l { if postIndex > l {
return io.ErrUnexpectedEOF return io.ErrUnexpectedEOF
} }
m.ExternalTrafficPolicy = ServiceExternalTrafficPolicyType(dAtA[iNdEx:postIndex]) m.ExternalTrafficPolicy = ServiceExternalTrafficPolicy(dAtA[iNdEx:postIndex])
iNdEx = postIndex iNdEx = postIndex
case 12: case 12:
if wireType != 0 { if wireType != 0 {

View File

@ -4382,20 +4382,29 @@ const (
ServiceInternalTrafficPolicyLocal ServiceInternalTrafficPolicyType = "Local" ServiceInternalTrafficPolicyLocal ServiceInternalTrafficPolicyType = "Local"
) )
// ServiceExternalTrafficPolicyType describes how nodes distribute service traffic they // ServiceExternalTrafficPolicy describes how nodes distribute service traffic they
// receive on one of the Service's "externally-facing" addresses (NodePorts, ExternalIPs, // receive on one of the Service's "externally-facing" addresses (NodePorts, ExternalIPs,
// and LoadBalancer IPs). // and LoadBalancer IPs.
// +enum // +enum
type ServiceExternalTrafficPolicyType string type ServiceExternalTrafficPolicy string
const ( const (
// ServiceExternalTrafficPolicyTypeCluster routes traffic to all endpoints. // ServiceExternalTrafficPolicyCluster routes traffic to all endpoints.
ServiceExternalTrafficPolicyTypeCluster ServiceExternalTrafficPolicyType = "Cluster" ServiceExternalTrafficPolicyCluster ServiceExternalTrafficPolicy = "Cluster"
// ServiceExternalTrafficPolicyTypeLocal preserves the source IP of the traffic by // ServiceExternalTrafficPolicyLocal preserves the source IP of the traffic by
// routing only to endpoints on the same node as the traffic was received on // routing only to endpoints on the same node as the traffic was received on
// (dropping the traffic if there are no local endpoints). // (dropping the traffic if there are no local endpoints).
ServiceExternalTrafficPolicyTypeLocal ServiceExternalTrafficPolicyType = "Local" ServiceExternalTrafficPolicyLocal ServiceExternalTrafficPolicy = "Local"
)
// for backwards compat
// +enum
type ServiceExternalTrafficPolicyType = ServiceExternalTrafficPolicy
const (
ServiceExternalTrafficPolicyTypeLocal = ServiceExternalTrafficPolicyLocal
ServiceExternalTrafficPolicyTypeCluster = ServiceExternalTrafficPolicyCluster
) )
// These are the valid conditions of a service. // These are the valid conditions of a service.
@ -4628,7 +4637,7 @@ type ServiceSpec struct {
// a NodePort from within the cluster may need to take traffic policy into account // a NodePort from within the cluster may need to take traffic policy into account
// when picking a node. // when picking a node.
// +optional // +optional
ExternalTrafficPolicy ServiceExternalTrafficPolicyType `json:"externalTrafficPolicy,omitempty" protobuf:"bytes,11,opt,name=externalTrafficPolicy"` ExternalTrafficPolicy ServiceExternalTrafficPolicy `json:"externalTrafficPolicy,omitempty" protobuf:"bytes,11,opt,name=externalTrafficPolicy"`
// healthCheckNodePort specifies the healthcheck nodePort for the service. // healthCheckNodePort specifies the healthcheck nodePort for the service.
// This only applies when type is set to LoadBalancer and // This only applies when type is set to LoadBalancer and

View File

@ -35,7 +35,7 @@ type ServiceSpecApplyConfiguration struct {
LoadBalancerIP *string `json:"loadBalancerIP,omitempty"` LoadBalancerIP *string `json:"loadBalancerIP,omitempty"`
LoadBalancerSourceRanges []string `json:"loadBalancerSourceRanges,omitempty"` LoadBalancerSourceRanges []string `json:"loadBalancerSourceRanges,omitempty"`
ExternalName *string `json:"externalName,omitempty"` ExternalName *string `json:"externalName,omitempty"`
ExternalTrafficPolicy *corev1.ServiceExternalTrafficPolicyType `json:"externalTrafficPolicy,omitempty"` ExternalTrafficPolicy *corev1.ServiceExternalTrafficPolicy `json:"externalTrafficPolicy,omitempty"`
HealthCheckNodePort *int32 `json:"healthCheckNodePort,omitempty"` HealthCheckNodePort *int32 `json:"healthCheckNodePort,omitempty"`
PublishNotReadyAddresses *bool `json:"publishNotReadyAddresses,omitempty"` PublishNotReadyAddresses *bool `json:"publishNotReadyAddresses,omitempty"`
SessionAffinityConfig *SessionAffinityConfigApplyConfiguration `json:"sessionAffinityConfig,omitempty"` SessionAffinityConfig *SessionAffinityConfigApplyConfiguration `json:"sessionAffinityConfig,omitempty"`
@ -152,7 +152,7 @@ func (b *ServiceSpecApplyConfiguration) WithExternalName(value string) *ServiceS
// WithExternalTrafficPolicy sets the ExternalTrafficPolicy field in the declarative configuration to the given value // WithExternalTrafficPolicy sets the ExternalTrafficPolicy field in the declarative configuration to the given value
// and returns the receiver, so that objects can be built by chaining "With" function invocations. // and returns the receiver, so that objects can be built by chaining "With" function invocations.
// If called multiple times, the ExternalTrafficPolicy field is set to the value of the last call. // If called multiple times, the ExternalTrafficPolicy field is set to the value of the last call.
func (b *ServiceSpecApplyConfiguration) WithExternalTrafficPolicy(value corev1.ServiceExternalTrafficPolicyType) *ServiceSpecApplyConfiguration { func (b *ServiceSpecApplyConfiguration) WithExternalTrafficPolicy(value corev1.ServiceExternalTrafficPolicy) *ServiceSpecApplyConfiguration {
b.ExternalTrafficPolicy = &value b.ExternalTrafficPolicy = &value
return b return b
} }

View File

@ -935,7 +935,7 @@ var (
) )
func getNodePredicatesForService(service *v1.Service) []NodeConditionPredicate { func getNodePredicatesForService(service *v1.Service) []NodeConditionPredicate {
if service.Spec.ExternalTrafficPolicy == v1.ServiceExternalTrafficPolicyTypeLocal { if service.Spec.ExternalTrafficPolicy == v1.ServiceExternalTrafficPolicyLocal {
return etpLocalNodePredicates return etpLocalNodePredicates
} }
return allNodePredicates return allNodePredicates

View File

@ -73,7 +73,7 @@ func newETPLocalService(name string, serviceType v1.ServiceType) *v1.Service {
}, },
Spec: v1.ServiceSpec{ Spec: v1.ServiceSpec{
Type: serviceType, Type: serviceType,
ExternalTrafficPolicy: v1.ServiceExternalTrafficPolicyTypeLocal, ExternalTrafficPolicy: v1.ServiceExternalTrafficPolicyLocal,
}, },
} }
} }
@ -1334,7 +1334,7 @@ func TestNeedsUpdate(t *testing.T) {
updateFn: func() { updateFn: func() {
oldSvc = defaultExternalService() oldSvc = defaultExternalService()
newSvc = defaultExternalService() newSvc = defaultExternalService()
newSvc.Spec.ExternalTrafficPolicy = v1.ServiceExternalTrafficPolicyTypeLocal newSvc.Spec.ExternalTrafficPolicy = v1.ServiceExternalTrafficPolicyLocal
}, },
expectedNeedsUpdate: true, expectedNeedsUpdate: true,
}, },

View File

@ -101,7 +101,7 @@ func RequestsOnlyLocalTraffic(service *v1.Service) bool {
service.Spec.Type != v1.ServiceTypeNodePort { service.Spec.Type != v1.ServiceTypeNodePort {
return false return false
} }
return service.Spec.ExternalTrafficPolicy == v1.ServiceExternalTrafficPolicyTypeLocal return service.Spec.ExternalTrafficPolicy == v1.ServiceExternalTrafficPolicyLocal
} }
// NeedsHealthCheck checks if service needs health check. // NeedsHealthCheck checks if service needs health check.

View File

@ -161,25 +161,25 @@ func TestRequestsOnlyLocalTraffic(t *testing.T) {
checkRequestsOnlyLocalTraffic(false, &v1.Service{ checkRequestsOnlyLocalTraffic(false, &v1.Service{
Spec: v1.ServiceSpec{ Spec: v1.ServiceSpec{
Type: v1.ServiceTypeNodePort, Type: v1.ServiceTypeNodePort,
ExternalTrafficPolicy: v1.ServiceExternalTrafficPolicyTypeCluster, ExternalTrafficPolicy: v1.ServiceExternalTrafficPolicyCluster,
}, },
}) })
checkRequestsOnlyLocalTraffic(true, &v1.Service{ checkRequestsOnlyLocalTraffic(true, &v1.Service{
Spec: v1.ServiceSpec{ Spec: v1.ServiceSpec{
Type: v1.ServiceTypeNodePort, Type: v1.ServiceTypeNodePort,
ExternalTrafficPolicy: v1.ServiceExternalTrafficPolicyTypeLocal, ExternalTrafficPolicy: v1.ServiceExternalTrafficPolicyLocal,
}, },
}) })
checkRequestsOnlyLocalTraffic(false, &v1.Service{ checkRequestsOnlyLocalTraffic(false, &v1.Service{
Spec: v1.ServiceSpec{ Spec: v1.ServiceSpec{
Type: v1.ServiceTypeLoadBalancer, Type: v1.ServiceTypeLoadBalancer,
ExternalTrafficPolicy: v1.ServiceExternalTrafficPolicyTypeCluster, ExternalTrafficPolicy: v1.ServiceExternalTrafficPolicyCluster,
}, },
}) })
checkRequestsOnlyLocalTraffic(true, &v1.Service{ checkRequestsOnlyLocalTraffic(true, &v1.Service{
Spec: v1.ServiceSpec{ Spec: v1.ServiceSpec{
Type: v1.ServiceTypeLoadBalancer, Type: v1.ServiceTypeLoadBalancer,
ExternalTrafficPolicy: v1.ServiceExternalTrafficPolicyTypeLocal, ExternalTrafficPolicy: v1.ServiceExternalTrafficPolicyLocal,
}, },
}) })
} }
@ -201,25 +201,25 @@ func TestNeedsHealthCheck(t *testing.T) {
checkNeedsHealthCheck(false, &v1.Service{ checkNeedsHealthCheck(false, &v1.Service{
Spec: v1.ServiceSpec{ Spec: v1.ServiceSpec{
Type: v1.ServiceTypeNodePort, Type: v1.ServiceTypeNodePort,
ExternalTrafficPolicy: v1.ServiceExternalTrafficPolicyTypeCluster, ExternalTrafficPolicy: v1.ServiceExternalTrafficPolicyCluster,
}, },
}) })
checkNeedsHealthCheck(false, &v1.Service{ checkNeedsHealthCheck(false, &v1.Service{
Spec: v1.ServiceSpec{ Spec: v1.ServiceSpec{
Type: v1.ServiceTypeNodePort, Type: v1.ServiceTypeNodePort,
ExternalTrafficPolicy: v1.ServiceExternalTrafficPolicyTypeLocal, ExternalTrafficPolicy: v1.ServiceExternalTrafficPolicyLocal,
}, },
}) })
checkNeedsHealthCheck(false, &v1.Service{ checkNeedsHealthCheck(false, &v1.Service{
Spec: v1.ServiceSpec{ Spec: v1.ServiceSpec{
Type: v1.ServiceTypeLoadBalancer, Type: v1.ServiceTypeLoadBalancer,
ExternalTrafficPolicy: v1.ServiceExternalTrafficPolicyTypeCluster, ExternalTrafficPolicy: v1.ServiceExternalTrafficPolicyCluster,
}, },
}) })
checkNeedsHealthCheck(true, &v1.Service{ checkNeedsHealthCheck(true, &v1.Service{
Spec: v1.ServiceSpec{ Spec: v1.ServiceSpec{
Type: v1.ServiceTypeLoadBalancer, Type: v1.ServiceTypeLoadBalancer,
ExternalTrafficPolicy: v1.ServiceExternalTrafficPolicyTypeLocal, ExternalTrafficPolicy: v1.ServiceExternalTrafficPolicyLocal,
}, },
}) })
} }

View File

@ -3899,7 +3899,7 @@ func (c *Cloud) buildNLBHealthCheckConfiguration(svc *v1.Service) (healthCheckCo
HealthyThreshold: defaultNlbHealthCheckThreshold, HealthyThreshold: defaultNlbHealthCheckThreshold,
UnhealthyThreshold: defaultNlbHealthCheckThreshold, UnhealthyThreshold: defaultNlbHealthCheckThreshold,
} }
if svc.Spec.ExternalTrafficPolicy == v1.ServiceExternalTrafficPolicyTypeLocal { if svc.Spec.ExternalTrafficPolicy == v1.ServiceExternalTrafficPolicyLocal {
path, port := servicehelpers.GetServiceHealthCheckPathPort(svc) path, port := servicehelpers.GetServiceHealthCheckPathPort(svc)
hc = healthCheckConfig{ hc = healthCheckConfig{
Port: strconv.Itoa(int(port)), Port: strconv.Itoa(int(port)),

View File

@ -3293,7 +3293,7 @@ func TestCloud_buildNLBHealthCheckConfiguration(t *testing.T) {
NodePort: 32205, NodePort: 32205,
}, },
}, },
ExternalTrafficPolicy: v1.ServiceExternalTrafficPolicyTypeLocal, ExternalTrafficPolicy: v1.ServiceExternalTrafficPolicyLocal,
HealthCheckNodePort: 32213, HealthCheckNodePort: 32213,
}, },
}, },
@ -3335,7 +3335,7 @@ func TestCloud_buildNLBHealthCheckConfiguration(t *testing.T) {
NodePort: 32205, NodePort: 32205,
}, },
}, },
ExternalTrafficPolicy: v1.ServiceExternalTrafficPolicyTypeLocal, ExternalTrafficPolicy: v1.ServiceExternalTrafficPolicyLocal,
HealthCheckNodePort: 32213, HealthCheckNodePort: 32213,
}, },
}, },

View File

@ -2102,7 +2102,7 @@ func TestReconcileLoadBalancer(t *testing.T) {
service7 := getTestService("service1", v1.ProtocolUDP, nil, false, 80) service7 := getTestService("service1", v1.ProtocolUDP, nil, false, 80)
service7.Spec.HealthCheckNodePort = 10081 service7.Spec.HealthCheckNodePort = 10081
service7.Spec.ExternalTrafficPolicy = v1.ServiceExternalTrafficPolicyTypeLocal service7.Spec.ExternalTrafficPolicy = v1.ServiceExternalTrafficPolicyLocal
lb7 := getTestLoadBalancer(pointer.String("testCluster"), pointer.String("rg"), pointer.String("testCluster"), pointer.String("aservice1"), service7, "basic") lb7 := getTestLoadBalancer(pointer.String("testCluster"), pointer.String("rg"), pointer.String("testCluster"), pointer.String("aservice1"), service7, "basic")
lb7.FrontendIPConfigurations = &[]network.FrontendIPConfiguration{} lb7.FrontendIPConfigurations = &[]network.FrontendIPConfiguration{}
lb7.Probes = &[]network.Probe{} lb7.Probes = &[]network.Probe{}

View File

@ -783,7 +783,7 @@ func TestReconcileLoadBalancerNodeHealth(t *testing.T) {
setMockEnv(az, ctrl, expectedInterfaces, expectedVirtualMachines, 1) setMockEnv(az, ctrl, expectedInterfaces, expectedVirtualMachines, 1)
svc := getTestService("service1", v1.ProtocolTCP, nil, false, 80) svc := getTestService("service1", v1.ProtocolTCP, nil, false, 80)
svc.Spec.ExternalTrafficPolicy = v1.ServiceExternalTrafficPolicyTypeLocal svc.Spec.ExternalTrafficPolicy = v1.ServiceExternalTrafficPolicyLocal
svc.Spec.HealthCheckNodePort = int32(32456) svc.Spec.HealthCheckNodePort = int32(32456)
expectedLBs := make([]network.LoadBalancer, 0) expectedLBs := make([]network.LoadBalancer, 0)

View File

@ -608,7 +608,7 @@ func TestEnsureInternalLoadBalancerWithSpecialHealthCheck(t *testing.T) {
svc := fakeLoadbalancerService(string(LBTypeInternal)) svc := fakeLoadbalancerService(string(LBTypeInternal))
svc.Spec.HealthCheckNodePort = healthCheckNodePort svc.Spec.HealthCheckNodePort = healthCheckNodePort
svc.Spec.Type = v1.ServiceTypeLoadBalancer svc.Spec.Type = v1.ServiceTypeLoadBalancer
svc.Spec.ExternalTrafficPolicy = v1.ServiceExternalTrafficPolicyTypeLocal svc.Spec.ExternalTrafficPolicy = v1.ServiceExternalTrafficPolicyLocal
svc, err = gce.client.CoreV1().Services(svc.Namespace).Create(context.TODO(), svc, metav1.CreateOptions{}) svc, err = gce.client.CoreV1().Services(svc.Namespace).Create(context.TODO(), svc, metav1.CreateOptions{})
require.NoError(t, err) require.NoError(t, err)
status, err := createInternalLoadBalancer(gce, svc, nil, []string{nodeName}, vals.ClusterName, vals.ClusterID, vals.ZoneName) status, err := createInternalLoadBalancer(gce, svc, nil, []string{nodeName}, vals.ClusterName, vals.ClusterID, vals.ZoneName)

View File

@ -1381,7 +1381,7 @@ func testRollingUpdateDeploymentWithLocalTrafficLoadBalancer(f *framework.Framew
jig := e2eservice.NewTestJig(c, ns, name) jig := e2eservice.NewTestJig(c, ns, name)
jig.Labels = podLabels jig.Labels = podLabels
service, err := jig.CreateLoadBalancerService(e2eservice.GetServiceLoadBalancerCreationTimeout(c), func(svc *v1.Service) { service, err := jig.CreateLoadBalancerService(e2eservice.GetServiceLoadBalancerCreationTimeout(c), func(svc *v1.Service) {
svc.Spec.ExternalTrafficPolicy = v1.ServiceExternalTrafficPolicyTypeLocal svc.Spec.ExternalTrafficPolicy = v1.ServiceExternalTrafficPolicyLocal
}) })
framework.ExpectNoError(err) framework.ExpectNoError(err)

View File

@ -196,7 +196,7 @@ func (j *TestJig) CreateOnlyLocalNodePortService(createPod bool) (*v1.Service, e
ginkgo.By("creating a service " + j.Namespace + "/" + j.Name + " with type=NodePort and ExternalTrafficPolicy=Local") ginkgo.By("creating a service " + j.Namespace + "/" + j.Name + " with type=NodePort and ExternalTrafficPolicy=Local")
svc, err := j.CreateTCPService(func(svc *v1.Service) { svc, err := j.CreateTCPService(func(svc *v1.Service) {
svc.Spec.Type = v1.ServiceTypeNodePort svc.Spec.Type = v1.ServiceTypeNodePort
svc.Spec.ExternalTrafficPolicy = v1.ServiceExternalTrafficPolicyTypeLocal svc.Spec.ExternalTrafficPolicy = v1.ServiceExternalTrafficPolicyLocal
svc.Spec.Ports = []v1.ServicePort{{Protocol: v1.ProtocolTCP, Port: 80}} svc.Spec.Ports = []v1.ServicePort{{Protocol: v1.ProtocolTCP, Port: 80}}
}) })
if err != nil { if err != nil {
@ -221,7 +221,7 @@ func (j *TestJig) CreateOnlyLocalLoadBalancerService(timeout time.Duration, crea
tweak func(svc *v1.Service)) (*v1.Service, error) { tweak func(svc *v1.Service)) (*v1.Service, error) {
_, err := j.CreateLoadBalancerService(timeout, func(svc *v1.Service) { _, err := j.CreateLoadBalancerService(timeout, func(svc *v1.Service) {
ginkgo.By("setting ExternalTrafficPolicy=Local") ginkgo.By("setting ExternalTrafficPolicy=Local")
svc.Spec.ExternalTrafficPolicy = v1.ServiceExternalTrafficPolicyTypeLocal svc.Spec.ExternalTrafficPolicy = v1.ServiceExternalTrafficPolicyLocal
if tweak != nil { if tweak != nil {
tweak(svc) tweak(svc)
} }

View File

@ -130,7 +130,7 @@ var _ = common.SIGDescribe("Firewall rule", func() {
// OnlyLocal service is needed to examine which exact nodes the requests are being forwarded to by the Load Balancer on GCE // OnlyLocal service is needed to examine which exact nodes the requests are being forwarded to by the Load Balancer on GCE
ginkgo.By("Updating LoadBalancer service to ExternalTrafficPolicy=Local") ginkgo.By("Updating LoadBalancer service to ExternalTrafficPolicy=Local")
svc, err = jig.UpdateService(func(svc *v1.Service) { svc, err = jig.UpdateService(func(svc *v1.Service) {
svc.Spec.ExternalTrafficPolicy = v1.ServiceExternalTrafficPolicyTypeLocal svc.Spec.ExternalTrafficPolicy = v1.ServiceExternalTrafficPolicyLocal
}) })
framework.ExpectNoError(err) framework.ExpectNoError(err)

View File

@ -772,7 +772,7 @@ var _ = common.SIGDescribe("LoadBalancers", func() {
svc := getServeHostnameService("affinity-lb-esipp") svc := getServeHostnameService("affinity-lb-esipp")
svc.Spec.Type = v1.ServiceTypeLoadBalancer svc.Spec.Type = v1.ServiceTypeLoadBalancer
svc.Spec.ExternalTrafficPolicy = v1.ServiceExternalTrafficPolicyTypeLocal svc.Spec.ExternalTrafficPolicy = v1.ServiceExternalTrafficPolicyLocal
execAffinityTestForLBService(f, cs, svc) execAffinityTestForLBService(f, cs, svc)
}) })
@ -783,7 +783,7 @@ var _ = common.SIGDescribe("LoadBalancers", func() {
svc := getServeHostnameService("affinity-lb-esipp-transition") svc := getServeHostnameService("affinity-lb-esipp-transition")
svc.Spec.Type = v1.ServiceTypeLoadBalancer svc.Spec.Type = v1.ServiceTypeLoadBalancer
svc.Spec.ExternalTrafficPolicy = v1.ServiceExternalTrafficPolicyTypeLocal svc.Spec.ExternalTrafficPolicy = v1.ServiceExternalTrafficPolicyLocal
execAffinityTestForLBServiceWithTransition(f, cs, svc) execAffinityTestForLBServiceWithTransition(f, cs, svc)
}) })
@ -794,7 +794,7 @@ var _ = common.SIGDescribe("LoadBalancers", func() {
svc := getServeHostnameService("affinity-lb") svc := getServeHostnameService("affinity-lb")
svc.Spec.Type = v1.ServiceTypeLoadBalancer svc.Spec.Type = v1.ServiceTypeLoadBalancer
svc.Spec.ExternalTrafficPolicy = v1.ServiceExternalTrafficPolicyTypeCluster svc.Spec.ExternalTrafficPolicy = v1.ServiceExternalTrafficPolicyCluster
execAffinityTestForLBService(f, cs, svc) execAffinityTestForLBService(f, cs, svc)
}) })
@ -805,7 +805,7 @@ var _ = common.SIGDescribe("LoadBalancers", func() {
svc := getServeHostnameService("affinity-lb-transition") svc := getServeHostnameService("affinity-lb-transition")
svc.Spec.Type = v1.ServiceTypeLoadBalancer svc.Spec.Type = v1.ServiceTypeLoadBalancer
svc.Spec.ExternalTrafficPolicy = v1.ServiceExternalTrafficPolicyTypeCluster svc.Spec.ExternalTrafficPolicy = v1.ServiceExternalTrafficPolicyCluster
execAffinityTestForLBServiceWithTransition(f, cs, svc) execAffinityTestForLBServiceWithTransition(f, cs, svc)
}) })
@ -1502,7 +1502,7 @@ var _ = common.SIGDescribe("LoadBalancers ESIPP [Slow]", func() {
ginkgo.By("turning ESIPP off") ginkgo.By("turning ESIPP off")
svc, err = jig.UpdateService(func(svc *v1.Service) { svc, err = jig.UpdateService(func(svc *v1.Service) {
svc.Spec.ExternalTrafficPolicy = v1.ServiceExternalTrafficPolicyTypeCluster svc.Spec.ExternalTrafficPolicy = v1.ServiceExternalTrafficPolicyCluster
}) })
framework.ExpectNoError(err) framework.ExpectNoError(err)
if svc.Spec.HealthCheckNodePort > 0 { if svc.Spec.HealthCheckNodePort > 0 {
@ -1602,7 +1602,7 @@ var _ = common.SIGDescribe("LoadBalancers ESIPP [Slow]", func() {
ginkgo.By("setting ExternalTraffic field back to OnlyLocal") ginkgo.By("setting ExternalTraffic field back to OnlyLocal")
svc, err = jig.UpdateService(func(svc *v1.Service) { svc, err = jig.UpdateService(func(svc *v1.Service) {
svc.Spec.ExternalTrafficPolicy = v1.ServiceExternalTrafficPolicyTypeLocal svc.Spec.ExternalTrafficPolicy = v1.ServiceExternalTrafficPolicyLocal
// Request the same healthCheckNodePort as before, to test the user-requested allocation path // Request the same healthCheckNodePort as before, to test the user-requested allocation path
svc.Spec.HealthCheckNodePort = int32(healthCheckNodePort) svc.Spec.HealthCheckNodePort = int32(healthCheckNodePort)
}) })

View File

@ -2794,7 +2794,7 @@ var _ = common.SIGDescribe("Services", func() {
{Port: 80, Name: "http", Protocol: v1.ProtocolTCP, TargetPort: intstr.FromInt(80)}, {Port: 80, Name: "http", Protocol: v1.ProtocolTCP, TargetPort: intstr.FromInt(80)},
} }
svc.Spec.Type = v1.ServiceTypeLoadBalancer svc.Spec.Type = v1.ServiceTypeLoadBalancer
svc.Spec.ExternalTrafficPolicy = v1.ServiceExternalTrafficPolicyTypeLocal svc.Spec.ExternalTrafficPolicy = v1.ServiceExternalTrafficPolicyLocal
}) })
framework.ExpectNoError(err) framework.ExpectNoError(err)
@ -3150,7 +3150,7 @@ var _ = common.SIGDescribe("Services", func() {
{Port: 80, Name: "http", Protocol: v1.ProtocolTCP, TargetPort: intstr.FromInt(80)}, {Port: 80, Name: "http", Protocol: v1.ProtocolTCP, TargetPort: intstr.FromInt(80)},
} }
svc.Spec.Type = v1.ServiceTypeNodePort svc.Spec.Type = v1.ServiceTypeNodePort
svc.Spec.ExternalTrafficPolicy = v1.ServiceExternalTrafficPolicyTypeLocal svc.Spec.ExternalTrafficPolicy = v1.ServiceExternalTrafficPolicyLocal
}) })
framework.ExpectNoError(err) framework.ExpectNoError(err)