Introduce containerd-shim-runhcs-v1 on Windows
Implements the containerd-shim-runhcs-v1 shim on Windows for the runtime v2 shim API. Signed-off-by: Justin Terry (VM) <juterry@microsoft.com>
This commit is contained in:
		
							
								
								
									
										228
									
								
								vendor/github.com/Microsoft/hcsshim/internal/schema1/schema1.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										228
									
								
								vendor/github.com/Microsoft/hcsshim/internal/schema1/schema1.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,228 @@
 | 
			
		||||
package schema1
 | 
			
		||||
 | 
			
		||||
import (
 | 
			
		||||
	"encoding/json"
 | 
			
		||||
	"time"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
// ProcessConfig is used as both the input of Container.CreateProcess
 | 
			
		||||
// and to convert the parameters to JSON for passing onto the HCS
 | 
			
		||||
type ProcessConfig struct {
 | 
			
		||||
	ApplicationName   string            `json:",omitempty"`
 | 
			
		||||
	CommandLine       string            `json:",omitempty"`
 | 
			
		||||
	CommandArgs       []string          `json:",omitempty"` // Used by Linux Containers on Windows
 | 
			
		||||
	User              string            `json:",omitempty"`
 | 
			
		||||
	WorkingDirectory  string            `json:",omitempty"`
 | 
			
		||||
	Environment       map[string]string `json:",omitempty"`
 | 
			
		||||
	EmulateConsole    bool              `json:",omitempty"`
 | 
			
		||||
	CreateStdInPipe   bool              `json:",omitempty"`
 | 
			
		||||
	CreateStdOutPipe  bool              `json:",omitempty"`
 | 
			
		||||
	CreateStdErrPipe  bool              `json:",omitempty"`
 | 
			
		||||
	ConsoleSize       [2]uint           `json:",omitempty"`
 | 
			
		||||
	CreateInUtilityVm bool              `json:",omitempty"` // Used by Linux Containers on Windows
 | 
			
		||||
	OCISpecification  *json.RawMessage  `json:",omitempty"` // Used by Linux Containers on Windows
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
type Layer struct {
 | 
			
		||||
	ID   string
 | 
			
		||||
	Path string
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
type MappedDir struct {
 | 
			
		||||
	HostPath          string
 | 
			
		||||
	ContainerPath     string
 | 
			
		||||
	ReadOnly          bool
 | 
			
		||||
	BandwidthMaximum  uint64
 | 
			
		||||
	IOPSMaximum       uint64
 | 
			
		||||
	CreateInUtilityVM bool
 | 
			
		||||
	// LinuxMetadata - Support added in 1803/RS4+.
 | 
			
		||||
	LinuxMetadata bool `json:",omitempty"`
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
type MappedPipe struct {
 | 
			
		||||
	HostPath          string
 | 
			
		||||
	ContainerPipeName string
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
type HvRuntime struct {
 | 
			
		||||
	ImagePath           string `json:",omitempty"`
 | 
			
		||||
	SkipTemplate        bool   `json:",omitempty"`
 | 
			
		||||
	LinuxInitrdFile     string `json:",omitempty"` // File under ImagePath on host containing an initrd image for starting a Linux utility VM
 | 
			
		||||
	LinuxKernelFile     string `json:",omitempty"` // File under ImagePath on host containing a kernel for starting a Linux utility VM
 | 
			
		||||
	LinuxBootParameters string `json:",omitempty"` // Additional boot parameters for starting a Linux Utility VM in initrd mode
 | 
			
		||||
	BootSource          string `json:",omitempty"` // "Vhd" for Linux Utility VM booting from VHD
 | 
			
		||||
	WritableBootSource  bool   `json:",omitempty"` // Linux Utility VM booting from VHD
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
type MappedVirtualDisk struct {
 | 
			
		||||
	HostPath          string `json:",omitempty"` // Path to VHD on the host
 | 
			
		||||
	ContainerPath     string // Platform-specific mount point path in the container
 | 
			
		||||
	CreateInUtilityVM bool   `json:",omitempty"`
 | 
			
		||||
	ReadOnly          bool   `json:",omitempty"`
 | 
			
		||||
	Cache             string `json:",omitempty"` // "" (Unspecified); "Disabled"; "Enabled"; "Private"; "PrivateAllowSharing"
 | 
			
		||||
	AttachOnly        bool   `json:",omitempty:`
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// AssignedDevice represents a device that has been directly assigned to a container
 | 
			
		||||
//
 | 
			
		||||
// NOTE: Support added in RS5
 | 
			
		||||
type AssignedDevice struct {
 | 
			
		||||
	//  InterfaceClassGUID of the device to assign to container.
 | 
			
		||||
	InterfaceClassGUID string `json:"InterfaceClassGuid,omitempty"`
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// ContainerConfig is used as both the input of CreateContainer
 | 
			
		||||
// and to convert the parameters to JSON for passing onto the HCS
 | 
			
		||||
type ContainerConfig struct {
 | 
			
		||||
	SystemType                  string              // HCS requires this to be hard-coded to "Container"
 | 
			
		||||
	Name                        string              // Name of the container. We use the docker ID.
 | 
			
		||||
	Owner                       string              `json:",omitempty"` // The management platform that created this container
 | 
			
		||||
	VolumePath                  string              `json:",omitempty"` // Windows volume path for scratch space. Used by Windows Server Containers only. Format \\?\\Volume{GUID}
 | 
			
		||||
	IgnoreFlushesDuringBoot     bool                `json:",omitempty"` // Optimization hint for container startup in Windows
 | 
			
		||||
	LayerFolderPath             string              `json:",omitempty"` // Where the layer folders are located. Used by Windows Server Containers only. Format  %root%\windowsfilter\containerID
 | 
			
		||||
	Layers                      []Layer             // List of storage layers. Required for Windows Server and Hyper-V Containers. Format ID=GUID;Path=%root%\windowsfilter\layerID
 | 
			
		||||
	Credentials                 string              `json:",omitempty"` // Credentials information
 | 
			
		||||
	ProcessorCount              uint32              `json:",omitempty"` // Number of processors to assign to the container.
 | 
			
		||||
	ProcessorWeight             uint64              `json:",omitempty"` // CPU shares (relative weight to other containers with cpu shares). Range is from 1 to 10000. A value of 0 results in default shares.
 | 
			
		||||
	ProcessorMaximum            int64               `json:",omitempty"` // Specifies the portion of processor cycles that this container can use as a percentage times 100. Range is from 1 to 10000. A value of 0 results in no limit.
 | 
			
		||||
	StorageIOPSMaximum          uint64              `json:",omitempty"` // Maximum Storage IOPS
 | 
			
		||||
	StorageBandwidthMaximum     uint64              `json:",omitempty"` // Maximum Storage Bandwidth in bytes per second
 | 
			
		||||
	StorageSandboxSize          uint64              `json:",omitempty"` // Size in bytes that the container system drive should be expanded to if smaller
 | 
			
		||||
	MemoryMaximumInMB           int64               `json:",omitempty"` // Maximum memory available to the container in Megabytes
 | 
			
		||||
	HostName                    string              `json:",omitempty"` // Hostname
 | 
			
		||||
	MappedDirectories           []MappedDir         `json:",omitempty"` // List of mapped directories (volumes/mounts)
 | 
			
		||||
	MappedPipes                 []MappedPipe        `json:",omitempty"` // List of mapped Windows named pipes
 | 
			
		||||
	HvPartition                 bool                // True if it a Hyper-V Container
 | 
			
		||||
	NetworkSharedContainerName  string              `json:",omitempty"` // Name (ID) of the container that we will share the network stack with.
 | 
			
		||||
	EndpointList                []string            `json:",omitempty"` // List of networking endpoints to be attached to container
 | 
			
		||||
	HvRuntime                   *HvRuntime          `json:",omitempty"` // Hyper-V container settings. Used by Hyper-V containers only. Format ImagePath=%root%\BaseLayerID\UtilityVM
 | 
			
		||||
	Servicing                   bool                `json:",omitempty"` // True if this container is for servicing
 | 
			
		||||
	AllowUnqualifiedDNSQuery    bool                `json:",omitempty"` // True to allow unqualified DNS name resolution
 | 
			
		||||
	DNSSearchList               string              `json:",omitempty"` // Comma seperated list of DNS suffixes to use for name resolution
 | 
			
		||||
	ContainerType               string              `json:",omitempty"` // "Linux" for Linux containers on Windows. Omitted otherwise.
 | 
			
		||||
	TerminateOnLastHandleClosed bool                `json:",omitempty"` // Should HCS terminate the container once all handles have been closed
 | 
			
		||||
	MappedVirtualDisks          []MappedVirtualDisk `json:",omitempty"` // Array of virtual disks to mount at start
 | 
			
		||||
	AssignedDevices             []AssignedDevice    `json:",omitempty"` // Array of devices to assign. NOTE: Support added in RS5
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
type ComputeSystemQuery struct {
 | 
			
		||||
	IDs    []string `json:"Ids,omitempty"`
 | 
			
		||||
	Types  []string `json:",omitempty"`
 | 
			
		||||
	Names  []string `json:",omitempty"`
 | 
			
		||||
	Owners []string `json:",omitempty"`
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
type PropertyType string
 | 
			
		||||
 | 
			
		||||
const (
 | 
			
		||||
	PropertyTypeStatistics        PropertyType = "Statistics"
 | 
			
		||||
	PropertyTypeProcessList                    = "ProcessList"
 | 
			
		||||
	PropertyTypeMappedVirtualDisk              = "MappedVirtualDisk"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
type PropertyQuery struct {
 | 
			
		||||
	PropertyTypes []PropertyType `json:",omitempty"`
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// ContainerProperties holds the properties for a container and the processes running in that container
 | 
			
		||||
type ContainerProperties struct {
 | 
			
		||||
	ID                           string `json:"Id"`
 | 
			
		||||
	State                        string
 | 
			
		||||
	Name                         string
 | 
			
		||||
	SystemType                   string
 | 
			
		||||
	Owner                        string
 | 
			
		||||
	SiloGUID                     string                              `json:"SiloGuid,omitempty"`
 | 
			
		||||
	RuntimeID                    string                              `json:"RuntimeId,omitempty"`
 | 
			
		||||
	IsRuntimeTemplate            bool                                `json:",omitempty"`
 | 
			
		||||
	RuntimeImagePath             string                              `json:",omitempty"`
 | 
			
		||||
	Stopped                      bool                                `json:",omitempty"`
 | 
			
		||||
	ExitType                     string                              `json:",omitempty"`
 | 
			
		||||
	AreUpdatesPending            bool                                `json:",omitempty"`
 | 
			
		||||
	ObRoot                       string                              `json:",omitempty"`
 | 
			
		||||
	Statistics                   Statistics                          `json:",omitempty"`
 | 
			
		||||
	ProcessList                  []ProcessListItem                   `json:",omitempty"`
 | 
			
		||||
	MappedVirtualDiskControllers map[int]MappedVirtualDiskController `json:",omitempty"`
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// MemoryStats holds the memory statistics for a container
 | 
			
		||||
type MemoryStats struct {
 | 
			
		||||
	UsageCommitBytes            uint64 `json:"MemoryUsageCommitBytes,omitempty"`
 | 
			
		||||
	UsageCommitPeakBytes        uint64 `json:"MemoryUsageCommitPeakBytes,omitempty"`
 | 
			
		||||
	UsagePrivateWorkingSetBytes uint64 `json:"MemoryUsagePrivateWorkingSetBytes,omitempty"`
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// ProcessorStats holds the processor statistics for a container
 | 
			
		||||
type ProcessorStats struct {
 | 
			
		||||
	TotalRuntime100ns  uint64 `json:",omitempty"`
 | 
			
		||||
	RuntimeUser100ns   uint64 `json:",omitempty"`
 | 
			
		||||
	RuntimeKernel100ns uint64 `json:",omitempty"`
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// StorageStats holds the storage statistics for a container
 | 
			
		||||
type StorageStats struct {
 | 
			
		||||
	ReadCountNormalized  uint64 `json:",omitempty"`
 | 
			
		||||
	ReadSizeBytes        uint64 `json:",omitempty"`
 | 
			
		||||
	WriteCountNormalized uint64 `json:",omitempty"`
 | 
			
		||||
	WriteSizeBytes       uint64 `json:",omitempty"`
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// NetworkStats holds the network statistics for a container
 | 
			
		||||
type NetworkStats struct {
 | 
			
		||||
	BytesReceived          uint64 `json:",omitempty"`
 | 
			
		||||
	BytesSent              uint64 `json:",omitempty"`
 | 
			
		||||
	PacketsReceived        uint64 `json:",omitempty"`
 | 
			
		||||
	PacketsSent            uint64 `json:",omitempty"`
 | 
			
		||||
	DroppedPacketsIncoming uint64 `json:",omitempty"`
 | 
			
		||||
	DroppedPacketsOutgoing uint64 `json:",omitempty"`
 | 
			
		||||
	EndpointId             string `json:",omitempty"`
 | 
			
		||||
	InstanceId             string `json:",omitempty"`
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// Statistics is the structure returned by a statistics call on a container
 | 
			
		||||
type Statistics struct {
 | 
			
		||||
	Timestamp          time.Time      `json:",omitempty"`
 | 
			
		||||
	ContainerStartTime time.Time      `json:",omitempty"`
 | 
			
		||||
	Uptime100ns        uint64         `json:",omitempty"`
 | 
			
		||||
	Memory             MemoryStats    `json:",omitempty"`
 | 
			
		||||
	Processor          ProcessorStats `json:",omitempty"`
 | 
			
		||||
	Storage            StorageStats   `json:",omitempty"`
 | 
			
		||||
	Network            []NetworkStats `json:",omitempty"`
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// ProcessList is the structure of an item returned by a ProcessList call on a container
 | 
			
		||||
type ProcessListItem struct {
 | 
			
		||||
	CreateTimestamp              time.Time `json:",omitempty"`
 | 
			
		||||
	ImageName                    string    `json:",omitempty"`
 | 
			
		||||
	KernelTime100ns              uint64    `json:",omitempty"`
 | 
			
		||||
	MemoryCommitBytes            uint64    `json:",omitempty"`
 | 
			
		||||
	MemoryWorkingSetPrivateBytes uint64    `json:",omitempty"`
 | 
			
		||||
	MemoryWorkingSetSharedBytes  uint64    `json:",omitempty"`
 | 
			
		||||
	ProcessId                    uint32    `json:",omitempty"`
 | 
			
		||||
	UserTime100ns                uint64    `json:",omitempty"`
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// MappedVirtualDiskController is the structure of an item returned by a MappedVirtualDiskList call on a container
 | 
			
		||||
type MappedVirtualDiskController struct {
 | 
			
		||||
	MappedVirtualDisks map[int]MappedVirtualDisk `json:",omitempty"`
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// Type of Request Support in ModifySystem
 | 
			
		||||
type RequestType string
 | 
			
		||||
 | 
			
		||||
// Type of Resource Support in ModifySystem
 | 
			
		||||
type ResourceType string
 | 
			
		||||
 | 
			
		||||
// RequestType const
 | 
			
		||||
const (
 | 
			
		||||
	Add     RequestType  = "Add"
 | 
			
		||||
	Remove  RequestType  = "Remove"
 | 
			
		||||
	Network ResourceType = "Network"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
// ResourceModificationRequestResponse is the structure used to send request to the container to modify the system
 | 
			
		||||
// Supported resource types are Network and Request Types are Add/Remove
 | 
			
		||||
type ResourceModificationRequestResponse struct {
 | 
			
		||||
	Resource ResourceType `json:"ResourceType"`
 | 
			
		||||
	Data     interface{}  `json:"Settings"`
 | 
			
		||||
	Request  RequestType  `json:"RequestType,omitempty"`
 | 
			
		||||
}
 | 
			
		||||
		Reference in New Issue
	
	Block a user