mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-07-19 18:02:01 +00:00
This tag of hcsshim brings in a couple welcome features/improvements. One being exposing a way to query for hns endpoint statistics (Packets received/sent etc.). This tag also contains some optimizations for querying whether a certain HCN feature is supported, which is a common workflow in kube-proxy on Windows. The first result from querying HCN is now cached so further calls can skip the hcn query as well as the version range parsing that was performed. This also gets rid of some redundant logs that used to hit everytime the version range parsing occurred. The Go-winio dep bump, and all of the ctrd deps are transitive only. Nothing new is needed/intended to be used. Signed-off-by: Daniel Canter <dcanter@microsoft.com>
115 lines
3.7 KiB
Go
115 lines
3.7 KiB
Go
package hcsshim
|
|
|
|
import (
|
|
"io"
|
|
"time"
|
|
|
|
"github.com/Microsoft/hcsshim/internal/hcs/schema1"
|
|
)
|
|
|
|
// ProcessConfig is used as both the input of Container.CreateProcess
|
|
// and to convert the parameters to JSON for passing onto the HCS
|
|
type ProcessConfig = schema1.ProcessConfig
|
|
|
|
type Layer = schema1.Layer
|
|
type MappedDir = schema1.MappedDir
|
|
type MappedPipe = schema1.MappedPipe
|
|
type HvRuntime = schema1.HvRuntime
|
|
type MappedVirtualDisk = schema1.MappedVirtualDisk
|
|
|
|
// AssignedDevice represents a device that has been directly assigned to a container
|
|
//
|
|
// NOTE: Support added in RS5
|
|
type AssignedDevice = schema1.AssignedDevice
|
|
|
|
// ContainerConfig is used as both the input of CreateContainer
|
|
// and to convert the parameters to JSON for passing onto the HCS
|
|
type ContainerConfig = schema1.ContainerConfig
|
|
|
|
type ComputeSystemQuery = schema1.ComputeSystemQuery
|
|
|
|
// Container represents a created (but not necessarily running) container.
|
|
type Container interface {
|
|
// Start synchronously starts the container.
|
|
Start() error
|
|
|
|
// Shutdown requests a container shutdown, but it may not actually be shutdown until Wait() succeeds.
|
|
Shutdown() error
|
|
|
|
// Terminate requests a container terminate, but it may not actually be terminated until Wait() succeeds.
|
|
Terminate() error
|
|
|
|
// Waits synchronously waits for the container to shutdown or terminate.
|
|
Wait() error
|
|
|
|
// WaitTimeout synchronously waits for the container to terminate or the duration to elapse. It
|
|
// returns false if timeout occurs.
|
|
WaitTimeout(time.Duration) error
|
|
|
|
// Pause pauses the execution of a container.
|
|
Pause() error
|
|
|
|
// Resume resumes the execution of a container.
|
|
Resume() error
|
|
|
|
// HasPendingUpdates returns true if the container has updates pending to install.
|
|
HasPendingUpdates() (bool, error)
|
|
|
|
// Statistics returns statistics for a container.
|
|
Statistics() (Statistics, error)
|
|
|
|
// ProcessList returns details for the processes in a container.
|
|
ProcessList() ([]ProcessListItem, error)
|
|
|
|
// MappedVirtualDisks returns virtual disks mapped to a utility VM, indexed by controller
|
|
MappedVirtualDisks() (map[int]MappedVirtualDiskController, error)
|
|
|
|
// CreateProcess launches a new process within the container.
|
|
CreateProcess(c *ProcessConfig) (Process, error)
|
|
|
|
// OpenProcess gets an interface to an existing process within the container.
|
|
OpenProcess(pid int) (Process, error)
|
|
|
|
// Close cleans up any state associated with the container but does not terminate or wait for it.
|
|
Close() error
|
|
|
|
// Modify the System
|
|
Modify(config *ResourceModificationRequestResponse) error
|
|
}
|
|
|
|
// Process represents a running or exited process.
|
|
type Process interface {
|
|
// Pid returns the process ID of the process within the container.
|
|
Pid() int
|
|
|
|
// Kill signals the process to terminate but does not wait for it to finish terminating.
|
|
Kill() error
|
|
|
|
// Wait waits for the process to exit.
|
|
Wait() error
|
|
|
|
// WaitTimeout waits for the process to exit or the duration to elapse. It returns
|
|
// false if timeout occurs.
|
|
WaitTimeout(time.Duration) error
|
|
|
|
// ExitCode returns the exit code of the process. The process must have
|
|
// already terminated.
|
|
ExitCode() (int, error)
|
|
|
|
// ResizeConsole resizes the console of the process.
|
|
ResizeConsole(width, height uint16) error
|
|
|
|
// Stdio returns the stdin, stdout, and stderr pipes, respectively. Closing
|
|
// these pipes does not close the underlying pipes; it should be possible to
|
|
// call this multiple times to get multiple interfaces.
|
|
Stdio() (io.WriteCloser, io.ReadCloser, io.ReadCloser, error)
|
|
|
|
// CloseStdin closes the write side of the stdin pipe so that the process is
|
|
// notified on the read side that there is no more data in stdin.
|
|
CloseStdin() error
|
|
|
|
// Close cleans up any state associated with the process but does not kill
|
|
// or wait on it.
|
|
Close() error
|
|
}
|