mirror of
				https://github.com/optim-enterprises-bv/kubernetes.git
				synced 2025-11-03 19:58:17 +00:00 
			
		
		
		
	Dependency chain is now api -> api/rest -> apiserver. Makes the interfaces much cleaner to read, and cleans up some inconsistenties that crept in along the way.
		
			
				
	
	
		
			148 lines
		
	
	
		
			6.1 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			148 lines
		
	
	
		
			6.1 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
/*
 | 
						|
Copyright 2014 Google Inc. 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 rest
 | 
						|
 | 
						|
import (
 | 
						|
	"github.com/GoogleCloudPlatform/kubernetes/pkg/api"
 | 
						|
	"github.com/GoogleCloudPlatform/kubernetes/pkg/fields"
 | 
						|
	"github.com/GoogleCloudPlatform/kubernetes/pkg/labels"
 | 
						|
	"github.com/GoogleCloudPlatform/kubernetes/pkg/runtime"
 | 
						|
	"github.com/GoogleCloudPlatform/kubernetes/pkg/watch"
 | 
						|
)
 | 
						|
 | 
						|
// RESTStorage is a generic interface for RESTful storage services.
 | 
						|
// Resources which are exported to the RESTful API of apiserver need to implement this interface. It is expected
 | 
						|
// that objects may implement any of the below interfaces.
 | 
						|
type Storage interface {
 | 
						|
	// New returns an empty object that can be used with Create and Update after request data has been put into it.
 | 
						|
	// This object must be a pointer type for use with Codec.DecodeInto([]byte, runtime.Object)
 | 
						|
	New() runtime.Object
 | 
						|
}
 | 
						|
 | 
						|
// Lister is an object that can retrieve resources that match the provided field and label criteria.
 | 
						|
type Lister interface {
 | 
						|
	// NewList returns an empty object that can be used with the List call.
 | 
						|
	// This object must be a pointer type for use with Codec.DecodeInto([]byte, runtime.Object)
 | 
						|
	NewList() runtime.Object
 | 
						|
	// List selects resources in the storage which match to the selector.
 | 
						|
	List(ctx api.Context, label labels.Selector, field fields.Selector) (runtime.Object, error)
 | 
						|
}
 | 
						|
 | 
						|
// Getter is an object that can retrieve a named RESTful resource.
 | 
						|
type Getter interface {
 | 
						|
	// Get finds a resource in the storage by name and returns it.
 | 
						|
	// Although it can return an arbitrary error value, IsNotFound(err) is true for the
 | 
						|
	// returned error value err when the specified resource is not found.
 | 
						|
	Get(ctx api.Context, name string) (runtime.Object, error)
 | 
						|
}
 | 
						|
 | 
						|
// Deleter is an object that can delete a named RESTful resource.
 | 
						|
type Deleter interface {
 | 
						|
	// Delete finds a resource in the storage and deletes it.
 | 
						|
	// Although it can return an arbitrary error value, IsNotFound(err) is true for the
 | 
						|
	// returned error value err when the specified resource is not found.
 | 
						|
	// Delete *may* return the object that was deleted, or a status object indicating additional
 | 
						|
	// information about deletion.
 | 
						|
	Delete(ctx api.Context, name string) (runtime.Object, error)
 | 
						|
}
 | 
						|
 | 
						|
// GracefulDeleter knows how to pass deletion options to allow delayed deletion of a
 | 
						|
// RESTful object.
 | 
						|
type GracefulDeleter interface {
 | 
						|
	// Delete finds a resource in the storage and deletes it.
 | 
						|
	// If options are provided, the resource will attempt to honor them or return an invalid
 | 
						|
	// request error.
 | 
						|
	// Although it can return an arbitrary error value, IsNotFound(err) is true for the
 | 
						|
	// returned error value err when the specified resource is not found.
 | 
						|
	// Delete *may* return the object that was deleted, or a status object indicating additional
 | 
						|
	// information about deletion.
 | 
						|
	Delete(ctx api.Context, name string, options *api.DeleteOptions) (runtime.Object, error)
 | 
						|
}
 | 
						|
 | 
						|
// GracefulDeleteAdapter adapts the Deleter interface to GracefulDeleter
 | 
						|
type GracefulDeleteAdapter struct {
 | 
						|
	Deleter
 | 
						|
}
 | 
						|
 | 
						|
// Delete implements RESTGracefulDeleter in terms of Deleter
 | 
						|
func (w GracefulDeleteAdapter) Delete(ctx api.Context, name string, options *api.DeleteOptions) (runtime.Object, error) {
 | 
						|
	return w.Deleter.Delete(ctx, name)
 | 
						|
}
 | 
						|
 | 
						|
// Creater is an object that can create an instance of a RESTful object.
 | 
						|
type Creater interface {
 | 
						|
	// New returns an empty object that can be used with Create after request data has been put into it.
 | 
						|
	// This object must be a pointer type for use with Codec.DecodeInto([]byte, runtime.Object)
 | 
						|
	New() runtime.Object
 | 
						|
 | 
						|
	// Create creates a new version of a resource.
 | 
						|
	Create(ctx api.Context, obj runtime.Object) (runtime.Object, error)
 | 
						|
}
 | 
						|
 | 
						|
// Updater is an object that can update an instance of a RESTful object.
 | 
						|
type Updater interface {
 | 
						|
	// New returns an empty object that can be used with Update after request data has been put into it.
 | 
						|
	// This object must be a pointer type for use with Codec.DecodeInto([]byte, runtime.Object)
 | 
						|
	New() runtime.Object
 | 
						|
 | 
						|
	// Update finds a resource in the storage and updates it. Some implementations
 | 
						|
	// may allow updates creates the object - they should set the created boolean
 | 
						|
	// to true.
 | 
						|
	Update(ctx api.Context, obj runtime.Object) (runtime.Object, bool, error)
 | 
						|
}
 | 
						|
 | 
						|
// CreaterUpdater is a storage object that must support both create and update.
 | 
						|
// Go prevents embedded interfaces that implement the same method.
 | 
						|
type CreaterUpdater interface {
 | 
						|
	Creater
 | 
						|
	Update(ctx api.Context, obj runtime.Object) (runtime.Object, bool, error)
 | 
						|
}
 | 
						|
 | 
						|
// CreaterUpdater must satisfy the Updater interface.
 | 
						|
var _ Updater = CreaterUpdater(nil)
 | 
						|
 | 
						|
type Patcher interface {
 | 
						|
	Getter
 | 
						|
	Updater
 | 
						|
}
 | 
						|
 | 
						|
// Watcher should be implemented by all Storage objects that
 | 
						|
// want to offer the ability to watch for changes through the watch api.
 | 
						|
type Watcher interface {
 | 
						|
	// 'label' selects on labels; 'field' selects on the object's fields. Not all fields
 | 
						|
	// are supported; an error should be returned if 'field' tries to select on a field that
 | 
						|
	// isn't supported. 'resourceVersion' allows for continuing/starting a watch at a
 | 
						|
	// particular version.
 | 
						|
	Watch(ctx api.Context, label labels.Selector, field fields.Selector, resourceVersion string) (watch.Interface, error)
 | 
						|
}
 | 
						|
 | 
						|
// StandardStorage is an interface covering the common verbs. Provided for testing whether a
 | 
						|
// resource satisfies the normal storage methods. Use Storage when passing opaque storage objects.
 | 
						|
type StandardStorage interface {
 | 
						|
	Getter
 | 
						|
	Lister
 | 
						|
	CreaterUpdater
 | 
						|
	GracefulDeleter
 | 
						|
	Watcher
 | 
						|
}
 | 
						|
 | 
						|
// Redirector know how to return a remote resource's location.
 | 
						|
type Redirector interface {
 | 
						|
	// ResourceLocation should return the remote location of the given resource, or an error.
 | 
						|
	ResourceLocation(ctx api.Context, name string) (remoteLocation string, err error)
 | 
						|
}
 |