mirror of
				https://github.com/optim-enterprises-bv/kubernetes.git
				synced 2025-10-31 02:08:13 +00:00 
			
		
		
		
	 a73b275031
			
		
	
	a73b275031
	
	
	
		
			
			Move the ServicePort/BaseServicePortInfo types to serviceport.go. Move the Endpoint/BaseEndpointInfo types to endpoint.go. To avoid confusion with the new filenames, rename service.go to servicechangetracker.go and endpoints.go to endpointschangetracker.go. (No code changes; this just moves some code from types.go and services.go to serviceport.go, and some code from types.go and endpoints.go to endpoint.go.)
		
			
				
	
	
		
			139 lines
		
	
	
		
			4.4 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			139 lines
		
	
	
		
			4.4 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
| /*
 | |
| Copyright 2017 The Kubernetes Authors.
 | |
| 
 | |
| Licensed under the Apache License, Version 2.0 (the "License");
 | |
| you may not use this file except in compliance with the License.
 | |
| You may obtain a copy of the License at
 | |
| 
 | |
|     http://www.apache.org/licenses/LICENSE-2.0
 | |
| 
 | |
| Unless required by applicable law or agreed to in writing, software
 | |
| distributed under the License is distributed on an "AS IS" BASIS,
 | |
| WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 | |
| See the License for the specific language governing permissions and
 | |
| limitations under the License.
 | |
| */
 | |
| 
 | |
| package proxy
 | |
| 
 | |
| import (
 | |
| 	"net"
 | |
| 	"strconv"
 | |
| 
 | |
| 	"k8s.io/apimachinery/pkg/util/sets"
 | |
| )
 | |
| 
 | |
| // Endpoint in an interface which abstracts information about an endpoint.
 | |
| type Endpoint interface {
 | |
| 	// String returns endpoint string.  An example format can be: `IP:Port`.
 | |
| 	// We take the returned value as ServiceEndpoint.Endpoint.
 | |
| 	String() string
 | |
| 	// IP returns IP part of the endpoint.
 | |
| 	IP() string
 | |
| 	// Port returns the Port part of the endpoint.
 | |
| 	Port() int
 | |
| 
 | |
| 	// IsLocal returns true if the endpoint is running on the same host as kube-proxy.
 | |
| 	IsLocal() bool
 | |
| 	// IsReady returns true if an endpoint is ready and not terminating, or
 | |
| 	// if PublishNotReadyAddresses is set on the service.
 | |
| 	IsReady() bool
 | |
| 	// IsServing returns true if an endpoint is ready. It does not account
 | |
| 	// for terminating state.
 | |
| 	IsServing() bool
 | |
| 	// IsTerminating returns true if an endpoint is terminating. For pods,
 | |
| 	// that is any pod with a deletion timestamp.
 | |
| 	IsTerminating() bool
 | |
| 
 | |
| 	// ZoneHints returns the zone hint for the endpoint. This is based on
 | |
| 	// endpoint.hints.forZones[0].name in the EndpointSlice API.
 | |
| 	ZoneHints() sets.Set[string]
 | |
| }
 | |
| 
 | |
| // BaseEndpointInfo contains base information that defines an endpoint.
 | |
| // This could be used directly by proxier while processing endpoints,
 | |
| // or can be used for constructing a more specific EndpointInfo struct
 | |
| // defined by the proxier if needed.
 | |
| type BaseEndpointInfo struct {
 | |
| 	// Cache this values to improve performance
 | |
| 	ip   string
 | |
| 	port int
 | |
| 	// endpoint is the same as net.JoinHostPort(ip,port)
 | |
| 	endpoint string
 | |
| 
 | |
| 	// isLocal indicates whether the endpoint is running on same host as kube-proxy.
 | |
| 	isLocal bool
 | |
| 
 | |
| 	// ready indicates whether this endpoint is ready and NOT terminating, unless
 | |
| 	// PublishNotReadyAddresses is set on the service, in which case it will just
 | |
| 	// always be true.
 | |
| 	ready bool
 | |
| 	// serving indicates whether this endpoint is ready regardless of its terminating state.
 | |
| 	// For pods this is true if it has a ready status regardless of its deletion timestamp.
 | |
| 	serving bool
 | |
| 	// terminating indicates whether this endpoint is terminating.
 | |
| 	// For pods this is true if it has a non-nil deletion timestamp.
 | |
| 	terminating bool
 | |
| 
 | |
| 	// zoneHints represent the zone hints for the endpoint. This is based on
 | |
| 	// endpoint.hints.forZones[*].name in the EndpointSlice API.
 | |
| 	zoneHints sets.Set[string]
 | |
| }
 | |
| 
 | |
| var _ Endpoint = &BaseEndpointInfo{}
 | |
| 
 | |
| // String is part of proxy.Endpoint interface.
 | |
| func (info *BaseEndpointInfo) String() string {
 | |
| 	return info.endpoint
 | |
| }
 | |
| 
 | |
| // IP returns just the IP part of the endpoint, it's a part of proxy.Endpoint interface.
 | |
| func (info *BaseEndpointInfo) IP() string {
 | |
| 	return info.ip
 | |
| }
 | |
| 
 | |
| // Port returns just the Port part of the endpoint.
 | |
| func (info *BaseEndpointInfo) Port() int {
 | |
| 	return info.port
 | |
| }
 | |
| 
 | |
| // IsLocal is part of proxy.Endpoint interface.
 | |
| func (info *BaseEndpointInfo) IsLocal() bool {
 | |
| 	return info.isLocal
 | |
| }
 | |
| 
 | |
| // IsReady returns true if an endpoint is ready and not terminating.
 | |
| func (info *BaseEndpointInfo) IsReady() bool {
 | |
| 	return info.ready
 | |
| }
 | |
| 
 | |
| // IsServing returns true if an endpoint is ready, regardless of if the
 | |
| // endpoint is terminating.
 | |
| func (info *BaseEndpointInfo) IsServing() bool {
 | |
| 	return info.serving
 | |
| }
 | |
| 
 | |
| // IsTerminating retruns true if an endpoint is terminating. For pods,
 | |
| // that is any pod with a deletion timestamp.
 | |
| func (info *BaseEndpointInfo) IsTerminating() bool {
 | |
| 	return info.terminating
 | |
| }
 | |
| 
 | |
| // ZoneHints returns the zone hint for the endpoint.
 | |
| func (info *BaseEndpointInfo) ZoneHints() sets.Set[string] {
 | |
| 	return info.zoneHints
 | |
| }
 | |
| 
 | |
| func newBaseEndpointInfo(ip string, port int, isLocal, ready, serving, terminating bool, zoneHints sets.Set[string]) *BaseEndpointInfo {
 | |
| 	return &BaseEndpointInfo{
 | |
| 		ip:          ip,
 | |
| 		port:        port,
 | |
| 		endpoint:    net.JoinHostPort(ip, strconv.Itoa(port)),
 | |
| 		isLocal:     isLocal,
 | |
| 		ready:       ready,
 | |
| 		serving:     serving,
 | |
| 		terminating: terminating,
 | |
| 		zoneHints:   zoneHints,
 | |
| 	}
 | |
| }
 |