mirror of
				https://github.com/optim-enterprises-bv/kubernetes.git
				synced 2025-11-04 04:08:16 +00:00 
			
		
		
		
	If CIDRAllocatorType is set to `CloudCIDRAllocator`, then allocation of CIDR allocation instead is done by the external cloud provider and the node controller is only responsible for reflecting the allocation into the node spec. - Splits off the rangeAllocator from the cidr_allocator.go file. - Adds cloudCIDRAllocator, which is used when the cloud provider allocates the CIDR ranges externally. (GCE support only) - Updates RBAC permission for node controller to include PATCH
		
			
				
	
	
		
			52 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			52 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
/*
 | 
						|
Copyright 2016 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 node
 | 
						|
 | 
						|
import (
 | 
						|
	"errors"
 | 
						|
	"net"
 | 
						|
 | 
						|
	v1 "k8s.io/kubernetes/pkg/api/v1"
 | 
						|
)
 | 
						|
 | 
						|
var errCIDRRangeNoCIDRsRemaining = errors.New(
 | 
						|
	"CIDR allocation failed; there are no remaining CIDRs left to allocate in the accepted range")
 | 
						|
 | 
						|
type nodeAndCIDR struct {
 | 
						|
	cidr     *net.IPNet
 | 
						|
	nodeName string
 | 
						|
}
 | 
						|
 | 
						|
// CIDRAllocatorType is the type of the allocator to use.
 | 
						|
type CIDRAllocatorType string
 | 
						|
 | 
						|
const (
 | 
						|
	RangeAllocatorType CIDRAllocatorType = "RangeAllocator"
 | 
						|
	CloudAllocatorType CIDRAllocatorType = "CloudAllocator"
 | 
						|
)
 | 
						|
 | 
						|
// CIDRAllocator is an interface implemented by things that know how to
 | 
						|
// allocate/occupy/recycle CIDR for nodes.
 | 
						|
type CIDRAllocator interface {
 | 
						|
	// AllocateOrOccupyCIDR looks at the given node, assigns it a valid
 | 
						|
	// CIDR if it doesn't currently have one or mark the CIDR as used if
 | 
						|
	// the node already have one.
 | 
						|
	AllocateOrOccupyCIDR(node *v1.Node) error
 | 
						|
	// ReleaseCIDR releases the CIDR of the removed node
 | 
						|
	ReleaseCIDR(node *v1.Node) error
 | 
						|
}
 |