141 lines
		
	
	
		
			7.2 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			141 lines
		
	
	
		
			7.2 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
/*
 | 
						|
   Copyright The containerd 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.
 | 
						|
*/
 | 
						|
 | 
						|
/*
 | 
						|
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.
 | 
						|
*/
 | 
						|
 | 
						|
// this file is from k8s.io/cri-api/pkg/apis only it points to v1 as the runtimeapi not v1alpha
 | 
						|
 | 
						|
package cri
 | 
						|
 | 
						|
import (
 | 
						|
	"context"
 | 
						|
	"time"
 | 
						|
 | 
						|
	"google.golang.org/grpc"
 | 
						|
	runtimeapi "k8s.io/cri-api/pkg/apis/runtime/v1"
 | 
						|
)
 | 
						|
 | 
						|
// RuntimeVersioner contains methods for runtime name, version and API version.
 | 
						|
type RuntimeVersioner interface {
 | 
						|
	// Version returns the runtime name, runtime version and runtime API version
 | 
						|
	Version(apiVersion string, opts ...grpc.CallOption) (*runtimeapi.VersionResponse, error)
 | 
						|
}
 | 
						|
 | 
						|
// ContainerManager contains methods to manipulate containers managed by a
 | 
						|
// container runtime. The methods are thread-safe.
 | 
						|
type ContainerManager interface {
 | 
						|
	// CreateContainer creates a new container in specified PodSandbox.
 | 
						|
	CreateContainer(podSandboxID string, config *runtimeapi.ContainerConfig, sandboxConfig *runtimeapi.PodSandboxConfig, opts ...grpc.CallOption) (string, error)
 | 
						|
	// StartContainer starts the container.
 | 
						|
	StartContainer(containerID string, opts ...grpc.CallOption) error
 | 
						|
	// StopContainer stops a running container with a grace period (i.e., timeout).
 | 
						|
	StopContainer(containerID string, timeout int64, opts ...grpc.CallOption) error
 | 
						|
	// RemoveContainer removes the container.
 | 
						|
	RemoveContainer(containerID string, opts ...grpc.CallOption) error
 | 
						|
	// ListContainers lists all containers by filters.
 | 
						|
	ListContainers(filter *runtimeapi.ContainerFilter, opts ...grpc.CallOption) ([]*runtimeapi.Container, error)
 | 
						|
	// ContainerStatus returns the status of the container.
 | 
						|
	ContainerStatus(containerID string, opts ...grpc.CallOption) (*runtimeapi.ContainerStatus, error)
 | 
						|
	// UpdateContainerResources updates the cgroup resources for the container.
 | 
						|
	UpdateContainerResources(containerID string, resources *runtimeapi.LinuxContainerResources, windowsResources *runtimeapi.WindowsContainerResources, opts ...grpc.CallOption) error
 | 
						|
	// ExecSync executes a command in the container, and returns the stdout output.
 | 
						|
	// If command exits with a non-zero exit code, an error is returned.
 | 
						|
	ExecSync(containerID string, cmd []string, timeout time.Duration, opts ...grpc.CallOption) (stdout []byte, stderr []byte, err error)
 | 
						|
	// Exec prepares a streaming endpoint to execute a command in the container, and returns the address.
 | 
						|
	Exec(req *runtimeapi.ExecRequest, opts ...grpc.CallOption) (*runtimeapi.ExecResponse, error)
 | 
						|
	// Attach prepares a streaming endpoint to attach to a running container, and returns the address.
 | 
						|
	Attach(req *runtimeapi.AttachRequest, opts ...grpc.CallOption) (*runtimeapi.AttachResponse, error)
 | 
						|
	// ReopenContainerLog asks runtime to reopen the stdout/stderr log file
 | 
						|
	// for the container. If it returns error, new container log file MUST NOT
 | 
						|
	// be created.
 | 
						|
	ReopenContainerLog(ContainerID string, opts ...grpc.CallOption) error
 | 
						|
	GetContainerEvents(ctx context.Context, request *runtimeapi.GetEventsRequest, opts ...grpc.CallOption) (runtimeapi.RuntimeService_GetContainerEventsClient, error)
 | 
						|
}
 | 
						|
 | 
						|
// PodSandboxManager contains methods for operating on PodSandboxes. The methods
 | 
						|
// are thread-safe.
 | 
						|
type PodSandboxManager interface {
 | 
						|
	// RunPodSandbox creates and starts a pod-level sandbox. Runtimes should ensure
 | 
						|
	// the sandbox is in ready state.
 | 
						|
	RunPodSandbox(config *runtimeapi.PodSandboxConfig, runtimeHandler string, opts ...grpc.CallOption) (string, error)
 | 
						|
	// StopPodSandbox stops the sandbox. If there are any running containers in the
 | 
						|
	// sandbox, they should be force terminated.
 | 
						|
	StopPodSandbox(podSandboxID string, opts ...grpc.CallOption) error
 | 
						|
	// RemovePodSandbox removes the sandbox. If there are running containers in the
 | 
						|
	// sandbox, they should be forcibly removed.
 | 
						|
	RemovePodSandbox(podSandboxID string, opts ...grpc.CallOption) error
 | 
						|
	// PodSandboxStatus returns the Status of the PodSandbox.
 | 
						|
	PodSandboxStatus(podSandboxID string, opts ...grpc.CallOption) (*runtimeapi.PodSandboxStatus, error)
 | 
						|
	// ListPodSandbox returns a list of Sandbox.
 | 
						|
	ListPodSandbox(filter *runtimeapi.PodSandboxFilter, opts ...grpc.CallOption) ([]*runtimeapi.PodSandbox, error)
 | 
						|
	// PortForward prepares a streaming endpoint to forward ports from a PodSandbox, and returns the address.
 | 
						|
	PortForward(req *runtimeapi.PortForwardRequest, opts ...grpc.CallOption) (*runtimeapi.PortForwardResponse, error)
 | 
						|
}
 | 
						|
 | 
						|
// ContainerStatsManager contains methods for retrieving the container
 | 
						|
// statistics.
 | 
						|
type ContainerStatsManager interface {
 | 
						|
	// ContainerStats returns stats of the container. If the container does not
 | 
						|
	// exist, the call returns an error.
 | 
						|
	ContainerStats(containerID string, opts ...grpc.CallOption) (*runtimeapi.ContainerStats, error)
 | 
						|
	// ListContainerStats returns stats of all running containers.
 | 
						|
	ListContainerStats(filter *runtimeapi.ContainerStatsFilter, opts ...grpc.CallOption) ([]*runtimeapi.ContainerStats, error)
 | 
						|
}
 | 
						|
 | 
						|
// RuntimeService interface should be implemented by a container runtime.
 | 
						|
// The methods should be thread-safe.
 | 
						|
type RuntimeService interface {
 | 
						|
	RuntimeVersioner
 | 
						|
	ContainerManager
 | 
						|
	PodSandboxManager
 | 
						|
	ContainerStatsManager
 | 
						|
 | 
						|
	// UpdateRuntimeConfig updates runtime configuration if specified
 | 
						|
	UpdateRuntimeConfig(runtimeConfig *runtimeapi.RuntimeConfig, opts ...grpc.CallOption) error
 | 
						|
	// Status returns the status of the runtime.
 | 
						|
	Status(opts ...grpc.CallOption) (*runtimeapi.RuntimeStatus, error)
 | 
						|
}
 | 
						|
 | 
						|
// ImageManagerService interface should be implemented by a container image
 | 
						|
// manager.
 | 
						|
// The methods should be thread-safe.
 | 
						|
type ImageManagerService interface {
 | 
						|
	// ListImages lists the existing images.
 | 
						|
	ListImages(filter *runtimeapi.ImageFilter, opts ...grpc.CallOption) ([]*runtimeapi.Image, error)
 | 
						|
	// ImageStatus returns the status of the image.
 | 
						|
	ImageStatus(image *runtimeapi.ImageSpec, opts ...grpc.CallOption) (*runtimeapi.Image, error)
 | 
						|
	// PullImage pulls an image with the authentication config.
 | 
						|
	PullImage(image *runtimeapi.ImageSpec, auth *runtimeapi.AuthConfig, podSandboxConfig *runtimeapi.PodSandboxConfig, opts ...grpc.CallOption) (string, error)
 | 
						|
	// RemoveImage removes the image.
 | 
						|
	RemoveImage(image *runtimeapi.ImageSpec, opts ...grpc.CallOption) error
 | 
						|
	// ImageFsInfo returns information of the filesystem that is used to store images.
 | 
						|
	ImageFsInfo(opts ...grpc.CallOption) ([]*runtimeapi.FilesystemUsage, error)
 | 
						|
}
 |