mirror of
				https://github.com/optim-enterprises-bv/kubernetes.git
				synced 2025-11-04 12:18:16 +00:00 
			
		
		
		
	Instead of saying "Google Inc." (which is not always correct) say "The Kubernetes Authors", which is generic.
		
			
				
	
	
		
			90 lines
		
	
	
		
			2.8 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			90 lines
		
	
	
		
			2.8 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
/*
 | 
						|
Copyright 2014 The Kubernetes Authors All rights reserved.
 | 
						|
 | 
						|
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 kubelet
 | 
						|
 | 
						|
import (
 | 
						|
	"fmt"
 | 
						|
 | 
						|
	"github.com/GoogleCloudPlatform/kubernetes/pkg/api"
 | 
						|
)
 | 
						|
 | 
						|
const ConfigSourceAnnotationKey = "kubernetes.io/config.source"
 | 
						|
const ConfigMirrorAnnotationKey = "kubernetes.io/config.mirror"
 | 
						|
 | 
						|
// PodOperation defines what changes will be made on a pod configuration.
 | 
						|
type PodOperation int
 | 
						|
 | 
						|
const (
 | 
						|
	// This is the current pod configuration
 | 
						|
	SET PodOperation = iota
 | 
						|
	// Pods with the given ids are new to this source
 | 
						|
	ADD
 | 
						|
	// Pods with the given ids have been removed from this source
 | 
						|
	REMOVE
 | 
						|
	// Pods with the given ids have been updated in this source
 | 
						|
	UPDATE
 | 
						|
 | 
						|
	// These constants identify the sources of pods
 | 
						|
	// Updates from a file
 | 
						|
	FileSource = "file"
 | 
						|
	// Updates from querying a web page
 | 
						|
	HTTPSource = "http"
 | 
						|
	// Updates from Kubernetes API Server
 | 
						|
	ApiserverSource = "api"
 | 
						|
	// Updates from all sources
 | 
						|
	AllSource = "*"
 | 
						|
 | 
						|
	// Used for ConfigMirrorAnnotationKey.
 | 
						|
	MirrorType = "mirror"
 | 
						|
 | 
						|
	NamespaceDefault = api.NamespaceDefault
 | 
						|
)
 | 
						|
 | 
						|
// PodUpdate defines an operation sent on the channel. You can add or remove single services by
 | 
						|
// sending an array of size one and Op == ADD|REMOVE (with REMOVE, only the ID is required).
 | 
						|
// For setting the state of the system to a given state for this source configuration, set
 | 
						|
// Pods as desired and Op to SET, which will reset the system state to that specified in this
 | 
						|
// operation for this source channel. To remove all pods, set Pods to empty object and Op to SET.
 | 
						|
//
 | 
						|
// Additionally, Pods should never be nil - it should always point to an empty slice. While
 | 
						|
// functionally similar, this helps our unit tests properly check that the correct PodUpdates
 | 
						|
// are generated.
 | 
						|
type PodUpdate struct {
 | 
						|
	Pods   []*api.Pod
 | 
						|
	Op     PodOperation
 | 
						|
	Source string
 | 
						|
}
 | 
						|
 | 
						|
// Gets all validated sources from the specified sources.
 | 
						|
func GetValidatedSources(sources []string) ([]string, error) {
 | 
						|
	validated := make([]string, 0, len(sources))
 | 
						|
	for _, source := range sources {
 | 
						|
		switch source {
 | 
						|
		case AllSource:
 | 
						|
			return []string{FileSource, HTTPSource, ApiserverSource}, nil
 | 
						|
		case FileSource, HTTPSource, ApiserverSource:
 | 
						|
			validated = append(validated, source)
 | 
						|
			break
 | 
						|
		case "":
 | 
						|
			break
 | 
						|
		default:
 | 
						|
			return []string{}, fmt.Errorf("unknown pod source %q", source)
 | 
						|
		}
 | 
						|
	}
 | 
						|
	return validated, nil
 | 
						|
}
 |