mirror of
				https://github.com/moby/moby.git
				synced 2022-11-09 12:21:53 -05:00 
			
		
		
		
	Bump hcsshim to b3f49c06ffaeef24d09c6c08ec8ec8425a
Among other things, this is required to pull in microsoft/hcsshim#718 Also fixes microsoft/hcsshim#737 which was caught by checks while attempting to bump up hcsshim version. Signed-off-by: Vikram bir Singh <vikrambir.singh@docker.com>
This commit is contained in:
		
							parent
							
								
									c530c9cbb0
								
							
						
					
					
						commit
						a7b6c3f0bf
					
				
					 97 changed files with 1985 additions and 1105 deletions
				
			
		| 
						 | 
					@ -1,5 +1,5 @@
 | 
				
			||||||
github.com/Azure/go-ansiterm                        d6e3b3328b783f23731bc4d058875b0371ff8109
 | 
					github.com/Azure/go-ansiterm                        d6e3b3328b783f23731bc4d058875b0371ff8109
 | 
				
			||||||
github.com/Microsoft/hcsshim                        2226e083fc390003ae5aa8325c3c92789afa0e7a
 | 
					github.com/Microsoft/hcsshim                        b3f49c06ffaeef24d09c6c08ec8ec8425a0303e2
 | 
				
			||||||
github.com/Microsoft/go-winio                       6c72808b55902eae4c5943626030429ff20f3b63 # v0.4.14
 | 
					github.com/Microsoft/go-winio                       6c72808b55902eae4c5943626030429ff20f3b63 # v0.4.14
 | 
				
			||||||
github.com/docker/libtrust                          9cbd2a1374f46905c68a4eb3694a130610adc62a
 | 
					github.com/docker/libtrust                          9cbd2a1374f46905c68a4eb3694a130610adc62a
 | 
				
			||||||
github.com/golang/gddo                              72a348e765d293ed6d1ded7b699591f14d6cd921
 | 
					github.com/golang/gddo                              72a348e765d293ed6d1ded7b699591f14d6cd921
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
							
								
								
									
										336
									
								
								vendor/github.com/Microsoft/hcsshim/cmd/containerd-shim-runhcs-v1/options/runhcs.pb.go
									
										
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										336
									
								
								vendor/github.com/Microsoft/hcsshim/cmd/containerd-shim-runhcs-v1/options/runhcs.pb.go
									
										
									
										generated
									
									
										vendored
									
									
								
							| 
						 | 
					@ -1,33 +1,19 @@
 | 
				
			||||||
// Code generated by protoc-gen-gogo. DO NOT EDIT.
 | 
					// Code generated by protoc-gen-gogo. DO NOT EDIT.
 | 
				
			||||||
// source: github.com/Microsoft/hcsshim/cmd/containerd-shim-runhcs-v1/options/runhcs.proto
 | 
					// source: github.com/Microsoft/hcsshim/cmd/containerd-shim-runhcs-v1/options/runhcs.proto
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/*
 | 
					 | 
				
			||||||
	Package options is a generated protocol buffer package.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	It is generated from these files:
 | 
					 | 
				
			||||||
		github.com/Microsoft/hcsshim/cmd/containerd-shim-runhcs-v1/options/runhcs.proto
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	It has these top-level messages:
 | 
					 | 
				
			||||||
		Options
 | 
					 | 
				
			||||||
		ProcessDetails
 | 
					 | 
				
			||||||
*/
 | 
					 | 
				
			||||||
package options
 | 
					package options
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import proto "github.com/gogo/protobuf/proto"
 | 
					import (
 | 
				
			||||||
import fmt "fmt"
 | 
						fmt "fmt"
 | 
				
			||||||
import math "math"
 | 
						proto "github.com/gogo/protobuf/proto"
 | 
				
			||||||
 | 
						_ "github.com/gogo/protobuf/types"
 | 
				
			||||||
// skipping weak import gogoproto "github.com/gogo/protobuf/gogoproto"
 | 
						github_com_gogo_protobuf_types "github.com/gogo/protobuf/types"
 | 
				
			||||||
import _ "github.com/gogo/protobuf/types"
 | 
						io "io"
 | 
				
			||||||
 | 
						math "math"
 | 
				
			||||||
import time "time"
 | 
						reflect "reflect"
 | 
				
			||||||
 | 
						strings "strings"
 | 
				
			||||||
import types "github.com/gogo/protobuf/types"
 | 
						time "time"
 | 
				
			||||||
 | 
					)
 | 
				
			||||||
import strings "strings"
 | 
					 | 
				
			||||||
import reflect "reflect"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
import io "io"
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
// Reference imports to suppress errors if they are not otherwise used.
 | 
					// Reference imports to suppress errors if they are not otherwise used.
 | 
				
			||||||
var _ = proto.Marshal
 | 
					var _ = proto.Marshal
 | 
				
			||||||
| 
						 | 
					@ -54,6 +40,7 @@ var Options_DebugType_name = map[int32]string{
 | 
				
			||||||
	1: "FILE",
 | 
						1: "FILE",
 | 
				
			||||||
	2: "ETW",
 | 
						2: "ETW",
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
var Options_DebugType_value = map[string]int32{
 | 
					var Options_DebugType_value = map[string]int32{
 | 
				
			||||||
	"NPIPE": 0,
 | 
						"NPIPE": 0,
 | 
				
			||||||
	"FILE":  1,
 | 
						"FILE":  1,
 | 
				
			||||||
| 
						 | 
					@ -63,7 +50,10 @@ var Options_DebugType_value = map[string]int32{
 | 
				
			||||||
func (x Options_DebugType) String() string {
 | 
					func (x Options_DebugType) String() string {
 | 
				
			||||||
	return proto.EnumName(Options_DebugType_name, int32(x))
 | 
						return proto.EnumName(Options_DebugType_name, int32(x))
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
func (Options_DebugType) EnumDescriptor() ([]byte, []int) { return fileDescriptorRunhcs, []int{0, 0} }
 | 
					
 | 
				
			||||||
 | 
					func (Options_DebugType) EnumDescriptor() ([]byte, []int) {
 | 
				
			||||||
 | 
						return fileDescriptor_b643df6839c75082, []int{0, 0}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
type Options_SandboxIsolation int32
 | 
					type Options_SandboxIsolation int32
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -76,6 +66,7 @@ var Options_SandboxIsolation_name = map[int32]string{
 | 
				
			||||||
	0: "PROCESS",
 | 
						0: "PROCESS",
 | 
				
			||||||
	1: "HYPERVISOR",
 | 
						1: "HYPERVISOR",
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
var Options_SandboxIsolation_value = map[string]int32{
 | 
					var Options_SandboxIsolation_value = map[string]int32{
 | 
				
			||||||
	"PROCESS":    0,
 | 
						"PROCESS":    0,
 | 
				
			||||||
	"HYPERVISOR": 1,
 | 
						"HYPERVISOR": 1,
 | 
				
			||||||
| 
						 | 
					@ -84,8 +75,9 @@ var Options_SandboxIsolation_value = map[string]int32{
 | 
				
			||||||
func (x Options_SandboxIsolation) String() string {
 | 
					func (x Options_SandboxIsolation) String() string {
 | 
				
			||||||
	return proto.EnumName(Options_SandboxIsolation_name, int32(x))
 | 
						return proto.EnumName(Options_SandboxIsolation_name, int32(x))
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func (Options_SandboxIsolation) EnumDescriptor() ([]byte, []int) {
 | 
					func (Options_SandboxIsolation) EnumDescriptor() ([]byte, []int) {
 | 
				
			||||||
	return fileDescriptorRunhcs, []int{0, 1}
 | 
						return fileDescriptor_b643df6839c75082, []int{0, 1}
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// Options are the set of customizations that can be passed at Create time.
 | 
					// Options are the set of customizations that can be passed at Create time.
 | 
				
			||||||
| 
						 | 
					@ -109,18 +101,49 @@ type Options struct {
 | 
				
			||||||
	SandboxIsolation Options_SandboxIsolation `protobuf:"varint,6,opt,name=sandbox_isolation,json=sandboxIsolation,proto3,enum=containerd.runhcs.v1.Options_SandboxIsolation" json:"sandbox_isolation,omitempty"`
 | 
						SandboxIsolation Options_SandboxIsolation `protobuf:"varint,6,opt,name=sandbox_isolation,json=sandboxIsolation,proto3,enum=containerd.runhcs.v1.Options_SandboxIsolation" json:"sandbox_isolation,omitempty"`
 | 
				
			||||||
	// boot_files_root_path is the path to the directory containing the LCOW
 | 
						// boot_files_root_path is the path to the directory containing the LCOW
 | 
				
			||||||
	// kernel and root FS files.
 | 
						// kernel and root FS files.
 | 
				
			||||||
	BootFilesRootPath string `protobuf:"bytes,7,opt,name=boot_files_root_path,json=bootFilesRootPath,proto3" json:"boot_files_root_path,omitempty"`
 | 
						BootFilesRootPath    string   `protobuf:"bytes,7,opt,name=boot_files_root_path,json=bootFilesRootPath,proto3" json:"boot_files_root_path,omitempty"`
 | 
				
			||||||
 | 
						XXX_NoUnkeyedLiteral struct{} `json:"-"`
 | 
				
			||||||
 | 
						XXX_unrecognized     []byte   `json:"-"`
 | 
				
			||||||
 | 
						XXX_sizecache        int32    `json:"-"`
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func (m *Options) Reset()                    { *m = Options{} }
 | 
					func (m *Options) Reset()      { *m = Options{} }
 | 
				
			||||||
func (*Options) ProtoMessage()               {}
 | 
					func (*Options) ProtoMessage() {}
 | 
				
			||||||
func (*Options) Descriptor() ([]byte, []int) { return fileDescriptorRunhcs, []int{0} }
 | 
					func (*Options) Descriptor() ([]byte, []int) {
 | 
				
			||||||
 | 
						return fileDescriptor_b643df6839c75082, []int{0}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					func (m *Options) XXX_Unmarshal(b []byte) error {
 | 
				
			||||||
 | 
						return m.Unmarshal(b)
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					func (m *Options) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 | 
				
			||||||
 | 
						if deterministic {
 | 
				
			||||||
 | 
							return xxx_messageInfo_Options.Marshal(b, m, deterministic)
 | 
				
			||||||
 | 
						} else {
 | 
				
			||||||
 | 
							b = b[:cap(b)]
 | 
				
			||||||
 | 
							n, err := m.MarshalTo(b)
 | 
				
			||||||
 | 
							if err != nil {
 | 
				
			||||||
 | 
								return nil, err
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							return b[:n], nil
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					func (m *Options) XXX_Merge(src proto.Message) {
 | 
				
			||||||
 | 
						xxx_messageInfo_Options.Merge(m, src)
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					func (m *Options) XXX_Size() int {
 | 
				
			||||||
 | 
						return m.Size()
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					func (m *Options) XXX_DiscardUnknown() {
 | 
				
			||||||
 | 
						xxx_messageInfo_Options.DiscardUnknown(m)
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					var xxx_messageInfo_Options proto.InternalMessageInfo
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// ProcessDetails contains additional information about a process. This is the additional
 | 
					// ProcessDetails contains additional information about a process. This is the additional
 | 
				
			||||||
// info returned in the Pids query.
 | 
					// info returned in the Pids query.
 | 
				
			||||||
type ProcessDetails struct {
 | 
					type ProcessDetails struct {
 | 
				
			||||||
	ImageName                    string    `protobuf:"bytes,1,opt,name=image_name,json=imageName,proto3" json:"image_name,omitempty"`
 | 
						ImageName                    string    `protobuf:"bytes,1,opt,name=image_name,json=imageName,proto3" json:"image_name,omitempty"`
 | 
				
			||||||
	CreatedAt                    time.Time `protobuf:"bytes,2,opt,name=created_at,json=createdAt,stdtime" json:"created_at"`
 | 
						CreatedAt                    time.Time `protobuf:"bytes,2,opt,name=created_at,json=createdAt,proto3,stdtime" json:"created_at"`
 | 
				
			||||||
	KernelTime_100Ns             uint64    `protobuf:"varint,3,opt,name=kernel_time_100_ns,json=kernelTime100Ns,proto3" json:"kernel_time_100_ns,omitempty"`
 | 
						KernelTime_100Ns             uint64    `protobuf:"varint,3,opt,name=kernel_time_100_ns,json=kernelTime100Ns,proto3" json:"kernel_time_100_ns,omitempty"`
 | 
				
			||||||
	MemoryCommitBytes            uint64    `protobuf:"varint,4,opt,name=memory_commit_bytes,json=memoryCommitBytes,proto3" json:"memory_commit_bytes,omitempty"`
 | 
						MemoryCommitBytes            uint64    `protobuf:"varint,4,opt,name=memory_commit_bytes,json=memoryCommitBytes,proto3" json:"memory_commit_bytes,omitempty"`
 | 
				
			||||||
	MemoryWorkingSetPrivateBytes uint64    `protobuf:"varint,5,opt,name=memory_working_set_private_bytes,json=memoryWorkingSetPrivateBytes,proto3" json:"memory_working_set_private_bytes,omitempty"`
 | 
						MemoryWorkingSetPrivateBytes uint64    `protobuf:"varint,5,opt,name=memory_working_set_private_bytes,json=memoryWorkingSetPrivateBytes,proto3" json:"memory_working_set_private_bytes,omitempty"`
 | 
				
			||||||
| 
						 | 
					@ -128,18 +151,102 @@ type ProcessDetails struct {
 | 
				
			||||||
	ProcessID                    uint32    `protobuf:"varint,7,opt,name=process_id,json=processId,proto3" json:"process_id,omitempty"`
 | 
						ProcessID                    uint32    `protobuf:"varint,7,opt,name=process_id,json=processId,proto3" json:"process_id,omitempty"`
 | 
				
			||||||
	UserTime_100Ns               uint64    `protobuf:"varint,8,opt,name=user_time_100_ns,json=userTime100Ns,proto3" json:"user_time_100_ns,omitempty"`
 | 
						UserTime_100Ns               uint64    `protobuf:"varint,8,opt,name=user_time_100_ns,json=userTime100Ns,proto3" json:"user_time_100_ns,omitempty"`
 | 
				
			||||||
	ExecID                       string    `protobuf:"bytes,9,opt,name=exec_id,json=execId,proto3" json:"exec_id,omitempty"`
 | 
						ExecID                       string    `protobuf:"bytes,9,opt,name=exec_id,json=execId,proto3" json:"exec_id,omitempty"`
 | 
				
			||||||
 | 
						XXX_NoUnkeyedLiteral         struct{}  `json:"-"`
 | 
				
			||||||
 | 
						XXX_unrecognized             []byte    `json:"-"`
 | 
				
			||||||
 | 
						XXX_sizecache                int32     `json:"-"`
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func (m *ProcessDetails) Reset()                    { *m = ProcessDetails{} }
 | 
					func (m *ProcessDetails) Reset()      { *m = ProcessDetails{} }
 | 
				
			||||||
func (*ProcessDetails) ProtoMessage()               {}
 | 
					func (*ProcessDetails) ProtoMessage() {}
 | 
				
			||||||
func (*ProcessDetails) Descriptor() ([]byte, []int) { return fileDescriptorRunhcs, []int{1} }
 | 
					func (*ProcessDetails) Descriptor() ([]byte, []int) {
 | 
				
			||||||
 | 
						return fileDescriptor_b643df6839c75082, []int{1}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					func (m *ProcessDetails) XXX_Unmarshal(b []byte) error {
 | 
				
			||||||
 | 
						return m.Unmarshal(b)
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					func (m *ProcessDetails) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 | 
				
			||||||
 | 
						if deterministic {
 | 
				
			||||||
 | 
							return xxx_messageInfo_ProcessDetails.Marshal(b, m, deterministic)
 | 
				
			||||||
 | 
						} else {
 | 
				
			||||||
 | 
							b = b[:cap(b)]
 | 
				
			||||||
 | 
							n, err := m.MarshalTo(b)
 | 
				
			||||||
 | 
							if err != nil {
 | 
				
			||||||
 | 
								return nil, err
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							return b[:n], nil
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					func (m *ProcessDetails) XXX_Merge(src proto.Message) {
 | 
				
			||||||
 | 
						xxx_messageInfo_ProcessDetails.Merge(m, src)
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					func (m *ProcessDetails) XXX_Size() int {
 | 
				
			||||||
 | 
						return m.Size()
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					func (m *ProcessDetails) XXX_DiscardUnknown() {
 | 
				
			||||||
 | 
						xxx_messageInfo_ProcessDetails.DiscardUnknown(m)
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					var xxx_messageInfo_ProcessDetails proto.InternalMessageInfo
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func init() {
 | 
					func init() {
 | 
				
			||||||
	proto.RegisterType((*Options)(nil), "containerd.runhcs.v1.Options")
 | 
					 | 
				
			||||||
	proto.RegisterType((*ProcessDetails)(nil), "containerd.runhcs.v1.ProcessDetails")
 | 
					 | 
				
			||||||
	proto.RegisterEnum("containerd.runhcs.v1.Options_DebugType", Options_DebugType_name, Options_DebugType_value)
 | 
						proto.RegisterEnum("containerd.runhcs.v1.Options_DebugType", Options_DebugType_name, Options_DebugType_value)
 | 
				
			||||||
	proto.RegisterEnum("containerd.runhcs.v1.Options_SandboxIsolation", Options_SandboxIsolation_name, Options_SandboxIsolation_value)
 | 
						proto.RegisterEnum("containerd.runhcs.v1.Options_SandboxIsolation", Options_SandboxIsolation_name, Options_SandboxIsolation_value)
 | 
				
			||||||
 | 
						proto.RegisterType((*Options)(nil), "containerd.runhcs.v1.Options")
 | 
				
			||||||
 | 
						proto.RegisterType((*ProcessDetails)(nil), "containerd.runhcs.v1.ProcessDetails")
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func init() {
 | 
				
			||||||
 | 
						proto.RegisterFile("github.com/Microsoft/hcsshim/cmd/containerd-shim-runhcs-v1/options/runhcs.proto", fileDescriptor_b643df6839c75082)
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					var fileDescriptor_b643df6839c75082 = []byte{
 | 
				
			||||||
 | 
						// 704 bytes of a gzipped FileDescriptorProto
 | 
				
			||||||
 | 
						0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xa4, 0x54, 0x4d, 0x6f, 0xda, 0x48,
 | 
				
			||||||
 | 
						0x18, 0xc6, 0xe1, 0xd3, 0x6f, 0x96, 0xc4, 0x99, 0xe5, 0x80, 0xb2, 0xbb, 0x80, 0xc8, 0x21, 0x89,
 | 
				
			||||||
 | 
						0x76, 0x63, 0x43, 0xf6, 0xd8, 0x53, 0x09, 0xa0, 0xba, 0x6a, 0x83, 0x65, 0xa2, 0xa6, 0x1f, 0x07,
 | 
				
			||||||
 | 
						0xcb, 0xd8, 0x83, 0xb1, 0x82, 0x3d, 0xd6, 0xcc, 0x90, 0x86, 0x5b, 0x7f, 0x42, 0x7f, 0x55, 0x95,
 | 
				
			||||||
 | 
						0x63, 0x8f, 0x95, 0x2a, 0xa5, 0x0d, 0xbf, 0xa4, 0x9a, 0xb1, 0x49, 0xd4, 0x28, 0xea, 0xa5, 0x27,
 | 
				
			||||||
 | 
						0xc6, 0xcf, 0xf3, 0xbc, 0xcf, 0xfb, 0x29, 0x60, 0x14, 0x84, 0x7c, 0xb6, 0x98, 0xe8, 0x1e, 0x89,
 | 
				
			||||||
 | 
						0x8c, 0x97, 0xa1, 0x47, 0x09, 0x23, 0x53, 0x6e, 0xcc, 0x3c, 0xc6, 0x66, 0x61, 0x64, 0x78, 0x91,
 | 
				
			||||||
 | 
						0x6f, 0x78, 0x24, 0xe6, 0x6e, 0x18, 0x63, 0xea, 0x1f, 0x09, 0xec, 0x88, 0x2e, 0xe2, 0x99, 0xc7,
 | 
				
			||||||
 | 
						0x8e, 0x2e, 0xbb, 0x06, 0x49, 0x78, 0x48, 0x62, 0x66, 0xa4, 0x88, 0x9e, 0x50, 0xc2, 0x09, 0xaa,
 | 
				
			||||||
 | 
						0xdd, 0xeb, 0xf5, 0x8c, 0xb8, 0xec, 0xee, 0xd6, 0x02, 0x12, 0x10, 0x29, 0x30, 0xc4, 0x2b, 0xd5,
 | 
				
			||||||
 | 
						0xee, 0x36, 0x03, 0x42, 0x82, 0x39, 0x36, 0xe4, 0xd7, 0x64, 0x31, 0x35, 0x78, 0x18, 0x61, 0xc6,
 | 
				
			||||||
 | 
						0xdd, 0x28, 0x49, 0x05, 0xed, 0x4f, 0x79, 0x28, 0x8f, 0xd2, 0x2c, 0xa8, 0x06, 0x45, 0x1f, 0x4f,
 | 
				
			||||||
 | 
						0x16, 0x41, 0x5d, 0x69, 0x29, 0x07, 0x15, 0x3b, 0xfd, 0x40, 0x43, 0x00, 0xf9, 0x70, 0xf8, 0x32,
 | 
				
			||||||
 | 
						0xc1, 0xf5, 0x8d, 0x96, 0x72, 0xb0, 0x75, 0xbc, 0xaf, 0x3f, 0x56, 0x83, 0x9e, 0x19, 0xe9, 0x7d,
 | 
				
			||||||
 | 
						0xa1, 0x3f, 0x5b, 0x26, 0xd8, 0x56, 0xfd, 0xf5, 0x13, 0xed, 0x41, 0x95, 0xe2, 0x20, 0x64, 0x9c,
 | 
				
			||||||
 | 
						0x2e, 0x1d, 0x4a, 0x08, 0xaf, 0xe7, 0x5b, 0xca, 0x81, 0x6a, 0xff, 0xb1, 0x06, 0x6d, 0x42, 0xb8,
 | 
				
			||||||
 | 
						0x10, 0x31, 0x37, 0xf6, 0x27, 0xe4, 0xca, 0x09, 0x23, 0x37, 0xc0, 0xf5, 0x42, 0x2a, 0xca, 0x40,
 | 
				
			||||||
 | 
						0x53, 0x60, 0xe8, 0x10, 0xb4, 0xb5, 0x28, 0x99, 0xbb, 0x7c, 0x4a, 0x68, 0x54, 0x2f, 0x4a, 0xdd,
 | 
				
			||||||
 | 
						0x76, 0x86, 0x5b, 0x19, 0x8c, 0xde, 0xc1, 0xce, 0x9d, 0x1f, 0x23, 0x73, 0x57, 0xd4, 0x57, 0x2f,
 | 
				
			||||||
 | 
						0xc9, 0x1e, 0xf4, 0x5f, 0xf7, 0x30, 0xce, 0x32, 0xae, 0xa3, 0xec, 0x75, 0xce, 0x3b, 0x04, 0x19,
 | 
				
			||||||
 | 
						0x50, 0x9b, 0x10, 0xc2, 0x9d, 0x69, 0x38, 0xc7, 0x4c, 0xf6, 0xe4, 0x24, 0x2e, 0x9f, 0xd5, 0xcb,
 | 
				
			||||||
 | 
						0xb2, 0x96, 0x1d, 0xc1, 0x0d, 0x05, 0x25, 0x3a, 0xb3, 0x5c, 0x3e, 0x6b, 0x1f, 0x82, 0x7a, 0x37,
 | 
				
			||||||
 | 
						0x1a, 0xa4, 0x42, 0xf1, 0xd4, 0x32, 0xad, 0x81, 0x96, 0x43, 0x15, 0x28, 0x0c, 0xcd, 0x17, 0x03,
 | 
				
			||||||
 | 
						0x4d, 0x41, 0x65, 0xc8, 0x0f, 0xce, 0xce, 0xb5, 0x8d, 0xb6, 0x01, 0xda, 0xc3, 0x0a, 0xd0, 0x26,
 | 
				
			||||||
 | 
						0x94, 0x2d, 0x7b, 0x74, 0x32, 0x18, 0x8f, 0xb5, 0x1c, 0xda, 0x02, 0x78, 0xf6, 0xc6, 0x1a, 0xd8,
 | 
				
			||||||
 | 
						0xaf, 0xcc, 0xf1, 0xc8, 0xd6, 0x94, 0xf6, 0xd7, 0x3c, 0x6c, 0x59, 0x94, 0x78, 0x98, 0xb1, 0x3e,
 | 
				
			||||||
 | 
						0xe6, 0x6e, 0x38, 0x67, 0xe8, 0x1f, 0x00, 0x39, 0x44, 0x27, 0x76, 0x23, 0x2c, 0x97, 0xaa, 0xda,
 | 
				
			||||||
 | 
						0xaa, 0x44, 0x4e, 0xdd, 0x08, 0xa3, 0x13, 0x00, 0x8f, 0x62, 0x97, 0x63, 0xdf, 0x71, 0xb9, 0x5c,
 | 
				
			||||||
 | 
						0xec, 0xe6, 0xf1, 0xae, 0x9e, 0x1e, 0x8c, 0xbe, 0x3e, 0x18, 0xfd, 0x6c, 0x7d, 0x30, 0xbd, 0xca,
 | 
				
			||||||
 | 
						0xf5, 0x4d, 0x33, 0xf7, 0xf1, 0x5b, 0x53, 0xb1, 0xd5, 0x2c, 0xee, 0x29, 0x47, 0xff, 0x02, 0xba,
 | 
				
			||||||
 | 
						0xc0, 0x34, 0xc6, 0x73, 0x47, 0x5c, 0x96, 0xd3, 0xed, 0x74, 0x9c, 0x98, 0xc9, 0xd5, 0x16, 0xec,
 | 
				
			||||||
 | 
						0xed, 0x94, 0x11, 0x0e, 0xdd, 0x4e, 0xe7, 0x94, 0x21, 0x1d, 0xfe, 0x8c, 0x70, 0x44, 0xe8, 0xd2,
 | 
				
			||||||
 | 
						0xf1, 0x48, 0x14, 0x85, 0xdc, 0x99, 0x2c, 0x39, 0x66, 0x72, 0xc7, 0x05, 0x7b, 0x27, 0xa5, 0x4e,
 | 
				
			||||||
 | 
						0x24, 0xd3, 0x13, 0x04, 0x1a, 0x42, 0x2b, 0xd3, 0xbf, 0x27, 0xf4, 0x22, 0x8c, 0x03, 0x87, 0x61,
 | 
				
			||||||
 | 
						0xee, 0x24, 0x34, 0xbc, 0x74, 0x39, 0xce, 0x82, 0x8b, 0x32, 0xf8, 0xef, 0x54, 0x77, 0x9e, 0xca,
 | 
				
			||||||
 | 
						0xc6, 0x98, 0x5b, 0xa9, 0x28, 0xf5, 0xe9, 0x43, 0xf3, 0x11, 0x1f, 0x36, 0x73, 0x29, 0xf6, 0x33,
 | 
				
			||||||
 | 
						0x9b, 0x92, 0xb4, 0xf9, 0xeb, 0xa1, 0xcd, 0x58, 0x6a, 0x52, 0x97, 0xff, 0x00, 0x92, 0x74, 0xc0,
 | 
				
			||||||
 | 
						0x4e, 0xe8, 0xcb, 0x25, 0x57, 0x7b, 0xd5, 0xd5, 0x4d, 0x53, 0xcd, 0xc6, 0x6e, 0xf6, 0x6d, 0x35,
 | 
				
			||||||
 | 
						0x13, 0x98, 0x3e, 0xda, 0x07, 0x6d, 0xc1, 0x30, 0xfd, 0x69, 0x2c, 0x15, 0x99, 0xa4, 0x2a, 0xf0,
 | 
				
			||||||
 | 
						0xfb, 0xa1, 0xec, 0x41, 0x19, 0x5f, 0x61, 0x4f, 0x78, 0xaa, 0x62, 0x45, 0x3d, 0x58, 0xdd, 0x34,
 | 
				
			||||||
 | 
						0x4b, 0x83, 0x2b, 0xec, 0x99, 0x7d, 0xbb, 0x24, 0x28, 0xd3, 0xef, 0xf9, 0xd7, 0xb7, 0x8d, 0xdc,
 | 
				
			||||||
 | 
						0x97, 0xdb, 0x46, 0xee, 0xc3, 0xaa, 0xa1, 0x5c, 0xaf, 0x1a, 0xca, 0xe7, 0x55, 0x43, 0xf9, 0xbe,
 | 
				
			||||||
 | 
						0x6a, 0x28, 0x6f, 0x9f, 0xff, 0xfe, 0xdf, 0xcb, 0x93, 0xec, 0xf7, 0x75, 0x6e, 0x52, 0x92, 0x7b,
 | 
				
			||||||
 | 
						0xff, 0xff, 0x47, 0x00, 0x00, 0x00, 0xff, 0xff, 0xa3, 0x9a, 0x54, 0x17, 0xb5, 0x04, 0x00, 0x00,
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func (m *Options) Marshal() (dAtA []byte, err error) {
 | 
					func (m *Options) Marshal() (dAtA []byte, err error) {
 | 
				
			||||||
	size := m.Size()
 | 
						size := m.Size()
 | 
				
			||||||
	dAtA = make([]byte, size)
 | 
						dAtA = make([]byte, size)
 | 
				
			||||||
| 
						 | 
					@ -199,6 +306,9 @@ func (m *Options) MarshalTo(dAtA []byte) (int, error) {
 | 
				
			||||||
		i = encodeVarintRunhcs(dAtA, i, uint64(len(m.BootFilesRootPath)))
 | 
							i = encodeVarintRunhcs(dAtA, i, uint64(len(m.BootFilesRootPath)))
 | 
				
			||||||
		i += copy(dAtA[i:], m.BootFilesRootPath)
 | 
							i += copy(dAtA[i:], m.BootFilesRootPath)
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
						if m.XXX_unrecognized != nil {
 | 
				
			||||||
 | 
							i += copy(dAtA[i:], m.XXX_unrecognized)
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
	return i, nil
 | 
						return i, nil
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -225,8 +335,8 @@ func (m *ProcessDetails) MarshalTo(dAtA []byte) (int, error) {
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	dAtA[i] = 0x12
 | 
						dAtA[i] = 0x12
 | 
				
			||||||
	i++
 | 
						i++
 | 
				
			||||||
	i = encodeVarintRunhcs(dAtA, i, uint64(types.SizeOfStdTime(m.CreatedAt)))
 | 
						i = encodeVarintRunhcs(dAtA, i, uint64(github_com_gogo_protobuf_types.SizeOfStdTime(m.CreatedAt)))
 | 
				
			||||||
	n1, err := types.StdTimeMarshalTo(m.CreatedAt, dAtA[i:])
 | 
						n1, err := github_com_gogo_protobuf_types.StdTimeMarshalTo(m.CreatedAt, dAtA[i:])
 | 
				
			||||||
	if err != nil {
 | 
						if err != nil {
 | 
				
			||||||
		return 0, err
 | 
							return 0, err
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
| 
						 | 
					@ -267,6 +377,9 @@ func (m *ProcessDetails) MarshalTo(dAtA []byte) (int, error) {
 | 
				
			||||||
		i = encodeVarintRunhcs(dAtA, i, uint64(len(m.ExecID)))
 | 
							i = encodeVarintRunhcs(dAtA, i, uint64(len(m.ExecID)))
 | 
				
			||||||
		i += copy(dAtA[i:], m.ExecID)
 | 
							i += copy(dAtA[i:], m.ExecID)
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
						if m.XXX_unrecognized != nil {
 | 
				
			||||||
 | 
							i += copy(dAtA[i:], m.XXX_unrecognized)
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
	return i, nil
 | 
						return i, nil
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -280,6 +393,9 @@ func encodeVarintRunhcs(dAtA []byte, offset int, v uint64) int {
 | 
				
			||||||
	return offset + 1
 | 
						return offset + 1
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
func (m *Options) Size() (n int) {
 | 
					func (m *Options) Size() (n int) {
 | 
				
			||||||
 | 
						if m == nil {
 | 
				
			||||||
 | 
							return 0
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
	var l int
 | 
						var l int
 | 
				
			||||||
	_ = l
 | 
						_ = l
 | 
				
			||||||
	if m.Debug {
 | 
						if m.Debug {
 | 
				
			||||||
| 
						 | 
					@ -307,17 +423,23 @@ func (m *Options) Size() (n int) {
 | 
				
			||||||
	if l > 0 {
 | 
						if l > 0 {
 | 
				
			||||||
		n += 1 + l + sovRunhcs(uint64(l))
 | 
							n += 1 + l + sovRunhcs(uint64(l))
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
						if m.XXX_unrecognized != nil {
 | 
				
			||||||
 | 
							n += len(m.XXX_unrecognized)
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
	return n
 | 
						return n
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func (m *ProcessDetails) Size() (n int) {
 | 
					func (m *ProcessDetails) Size() (n int) {
 | 
				
			||||||
 | 
						if m == nil {
 | 
				
			||||||
 | 
							return 0
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
	var l int
 | 
						var l int
 | 
				
			||||||
	_ = l
 | 
						_ = l
 | 
				
			||||||
	l = len(m.ImageName)
 | 
						l = len(m.ImageName)
 | 
				
			||||||
	if l > 0 {
 | 
						if l > 0 {
 | 
				
			||||||
		n += 1 + l + sovRunhcs(uint64(l))
 | 
							n += 1 + l + sovRunhcs(uint64(l))
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	l = types.SizeOfStdTime(m.CreatedAt)
 | 
						l = github_com_gogo_protobuf_types.SizeOfStdTime(m.CreatedAt)
 | 
				
			||||||
	n += 1 + l + sovRunhcs(uint64(l))
 | 
						n += 1 + l + sovRunhcs(uint64(l))
 | 
				
			||||||
	if m.KernelTime_100Ns != 0 {
 | 
						if m.KernelTime_100Ns != 0 {
 | 
				
			||||||
		n += 1 + sovRunhcs(uint64(m.KernelTime_100Ns))
 | 
							n += 1 + sovRunhcs(uint64(m.KernelTime_100Ns))
 | 
				
			||||||
| 
						 | 
					@ -341,6 +463,9 @@ func (m *ProcessDetails) Size() (n int) {
 | 
				
			||||||
	if l > 0 {
 | 
						if l > 0 {
 | 
				
			||||||
		n += 1 + l + sovRunhcs(uint64(l))
 | 
							n += 1 + l + sovRunhcs(uint64(l))
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
						if m.XXX_unrecognized != nil {
 | 
				
			||||||
 | 
							n += len(m.XXX_unrecognized)
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
	return n
 | 
						return n
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -369,6 +494,7 @@ func (this *Options) String() string {
 | 
				
			||||||
		`SandboxPlatform:` + fmt.Sprintf("%v", this.SandboxPlatform) + `,`,
 | 
							`SandboxPlatform:` + fmt.Sprintf("%v", this.SandboxPlatform) + `,`,
 | 
				
			||||||
		`SandboxIsolation:` + fmt.Sprintf("%v", this.SandboxIsolation) + `,`,
 | 
							`SandboxIsolation:` + fmt.Sprintf("%v", this.SandboxIsolation) + `,`,
 | 
				
			||||||
		`BootFilesRootPath:` + fmt.Sprintf("%v", this.BootFilesRootPath) + `,`,
 | 
							`BootFilesRootPath:` + fmt.Sprintf("%v", this.BootFilesRootPath) + `,`,
 | 
				
			||||||
 | 
							`XXX_unrecognized:` + fmt.Sprintf("%v", this.XXX_unrecognized) + `,`,
 | 
				
			||||||
		`}`,
 | 
							`}`,
 | 
				
			||||||
	}, "")
 | 
						}, "")
 | 
				
			||||||
	return s
 | 
						return s
 | 
				
			||||||
| 
						 | 
					@ -379,7 +505,7 @@ func (this *ProcessDetails) String() string {
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	s := strings.Join([]string{`&ProcessDetails{`,
 | 
						s := strings.Join([]string{`&ProcessDetails{`,
 | 
				
			||||||
		`ImageName:` + fmt.Sprintf("%v", this.ImageName) + `,`,
 | 
							`ImageName:` + fmt.Sprintf("%v", this.ImageName) + `,`,
 | 
				
			||||||
		`CreatedAt:` + strings.Replace(strings.Replace(this.CreatedAt.String(), "Timestamp", "google_protobuf1.Timestamp", 1), `&`, ``, 1) + `,`,
 | 
							`CreatedAt:` + strings.Replace(strings.Replace(this.CreatedAt.String(), "Timestamp", "types.Timestamp", 1), `&`, ``, 1) + `,`,
 | 
				
			||||||
		`KernelTime_100Ns:` + fmt.Sprintf("%v", this.KernelTime_100Ns) + `,`,
 | 
							`KernelTime_100Ns:` + fmt.Sprintf("%v", this.KernelTime_100Ns) + `,`,
 | 
				
			||||||
		`MemoryCommitBytes:` + fmt.Sprintf("%v", this.MemoryCommitBytes) + `,`,
 | 
							`MemoryCommitBytes:` + fmt.Sprintf("%v", this.MemoryCommitBytes) + `,`,
 | 
				
			||||||
		`MemoryWorkingSetPrivateBytes:` + fmt.Sprintf("%v", this.MemoryWorkingSetPrivateBytes) + `,`,
 | 
							`MemoryWorkingSetPrivateBytes:` + fmt.Sprintf("%v", this.MemoryWorkingSetPrivateBytes) + `,`,
 | 
				
			||||||
| 
						 | 
					@ -387,6 +513,7 @@ func (this *ProcessDetails) String() string {
 | 
				
			||||||
		`ProcessID:` + fmt.Sprintf("%v", this.ProcessID) + `,`,
 | 
							`ProcessID:` + fmt.Sprintf("%v", this.ProcessID) + `,`,
 | 
				
			||||||
		`UserTime_100Ns:` + fmt.Sprintf("%v", this.UserTime_100Ns) + `,`,
 | 
							`UserTime_100Ns:` + fmt.Sprintf("%v", this.UserTime_100Ns) + `,`,
 | 
				
			||||||
		`ExecID:` + fmt.Sprintf("%v", this.ExecID) + `,`,
 | 
							`ExecID:` + fmt.Sprintf("%v", this.ExecID) + `,`,
 | 
				
			||||||
 | 
							`XXX_unrecognized:` + fmt.Sprintf("%v", this.XXX_unrecognized) + `,`,
 | 
				
			||||||
		`}`,
 | 
							`}`,
 | 
				
			||||||
	}, "")
 | 
						}, "")
 | 
				
			||||||
	return s
 | 
						return s
 | 
				
			||||||
| 
						 | 
					@ -414,7 +541,7 @@ func (m *Options) Unmarshal(dAtA []byte) error {
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
			b := dAtA[iNdEx]
 | 
								b := dAtA[iNdEx]
 | 
				
			||||||
			iNdEx++
 | 
								iNdEx++
 | 
				
			||||||
			wire |= (uint64(b) & 0x7F) << shift
 | 
								wire |= uint64(b&0x7F) << shift
 | 
				
			||||||
			if b < 0x80 {
 | 
								if b < 0x80 {
 | 
				
			||||||
				break
 | 
									break
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
| 
						 | 
					@ -442,7 +569,7 @@ func (m *Options) Unmarshal(dAtA []byte) error {
 | 
				
			||||||
				}
 | 
									}
 | 
				
			||||||
				b := dAtA[iNdEx]
 | 
									b := dAtA[iNdEx]
 | 
				
			||||||
				iNdEx++
 | 
									iNdEx++
 | 
				
			||||||
				v |= (int(b) & 0x7F) << shift
 | 
									v |= int(b&0x7F) << shift
 | 
				
			||||||
				if b < 0x80 {
 | 
									if b < 0x80 {
 | 
				
			||||||
					break
 | 
										break
 | 
				
			||||||
				}
 | 
									}
 | 
				
			||||||
| 
						 | 
					@ -462,7 +589,7 @@ func (m *Options) Unmarshal(dAtA []byte) error {
 | 
				
			||||||
				}
 | 
									}
 | 
				
			||||||
				b := dAtA[iNdEx]
 | 
									b := dAtA[iNdEx]
 | 
				
			||||||
				iNdEx++
 | 
									iNdEx++
 | 
				
			||||||
				m.DebugType |= (Options_DebugType(b) & 0x7F) << shift
 | 
									m.DebugType |= Options_DebugType(b&0x7F) << shift
 | 
				
			||||||
				if b < 0x80 {
 | 
									if b < 0x80 {
 | 
				
			||||||
					break
 | 
										break
 | 
				
			||||||
				}
 | 
									}
 | 
				
			||||||
| 
						 | 
					@ -481,7 +608,7 @@ func (m *Options) Unmarshal(dAtA []byte) error {
 | 
				
			||||||
				}
 | 
									}
 | 
				
			||||||
				b := dAtA[iNdEx]
 | 
									b := dAtA[iNdEx]
 | 
				
			||||||
				iNdEx++
 | 
									iNdEx++
 | 
				
			||||||
				stringLen |= (uint64(b) & 0x7F) << shift
 | 
									stringLen |= uint64(b&0x7F) << shift
 | 
				
			||||||
				if b < 0x80 {
 | 
									if b < 0x80 {
 | 
				
			||||||
					break
 | 
										break
 | 
				
			||||||
				}
 | 
									}
 | 
				
			||||||
| 
						 | 
					@ -491,6 +618,9 @@ func (m *Options) Unmarshal(dAtA []byte) error {
 | 
				
			||||||
				return ErrInvalidLengthRunhcs
 | 
									return ErrInvalidLengthRunhcs
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
			postIndex := iNdEx + intStringLen
 | 
								postIndex := iNdEx + intStringLen
 | 
				
			||||||
 | 
								if postIndex < 0 {
 | 
				
			||||||
 | 
									return ErrInvalidLengthRunhcs
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
			if postIndex > l {
 | 
								if postIndex > l {
 | 
				
			||||||
				return io.ErrUnexpectedEOF
 | 
									return io.ErrUnexpectedEOF
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
| 
						 | 
					@ -510,7 +640,7 @@ func (m *Options) Unmarshal(dAtA []byte) error {
 | 
				
			||||||
				}
 | 
									}
 | 
				
			||||||
				b := dAtA[iNdEx]
 | 
									b := dAtA[iNdEx]
 | 
				
			||||||
				iNdEx++
 | 
									iNdEx++
 | 
				
			||||||
				stringLen |= (uint64(b) & 0x7F) << shift
 | 
									stringLen |= uint64(b&0x7F) << shift
 | 
				
			||||||
				if b < 0x80 {
 | 
									if b < 0x80 {
 | 
				
			||||||
					break
 | 
										break
 | 
				
			||||||
				}
 | 
									}
 | 
				
			||||||
| 
						 | 
					@ -520,6 +650,9 @@ func (m *Options) Unmarshal(dAtA []byte) error {
 | 
				
			||||||
				return ErrInvalidLengthRunhcs
 | 
									return ErrInvalidLengthRunhcs
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
			postIndex := iNdEx + intStringLen
 | 
								postIndex := iNdEx + intStringLen
 | 
				
			||||||
 | 
								if postIndex < 0 {
 | 
				
			||||||
 | 
									return ErrInvalidLengthRunhcs
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
			if postIndex > l {
 | 
								if postIndex > l {
 | 
				
			||||||
				return io.ErrUnexpectedEOF
 | 
									return io.ErrUnexpectedEOF
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
| 
						 | 
					@ -539,7 +672,7 @@ func (m *Options) Unmarshal(dAtA []byte) error {
 | 
				
			||||||
				}
 | 
									}
 | 
				
			||||||
				b := dAtA[iNdEx]
 | 
									b := dAtA[iNdEx]
 | 
				
			||||||
				iNdEx++
 | 
									iNdEx++
 | 
				
			||||||
				stringLen |= (uint64(b) & 0x7F) << shift
 | 
									stringLen |= uint64(b&0x7F) << shift
 | 
				
			||||||
				if b < 0x80 {
 | 
									if b < 0x80 {
 | 
				
			||||||
					break
 | 
										break
 | 
				
			||||||
				}
 | 
									}
 | 
				
			||||||
| 
						 | 
					@ -549,6 +682,9 @@ func (m *Options) Unmarshal(dAtA []byte) error {
 | 
				
			||||||
				return ErrInvalidLengthRunhcs
 | 
									return ErrInvalidLengthRunhcs
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
			postIndex := iNdEx + intStringLen
 | 
								postIndex := iNdEx + intStringLen
 | 
				
			||||||
 | 
								if postIndex < 0 {
 | 
				
			||||||
 | 
									return ErrInvalidLengthRunhcs
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
			if postIndex > l {
 | 
								if postIndex > l {
 | 
				
			||||||
				return io.ErrUnexpectedEOF
 | 
									return io.ErrUnexpectedEOF
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
| 
						 | 
					@ -568,7 +704,7 @@ func (m *Options) Unmarshal(dAtA []byte) error {
 | 
				
			||||||
				}
 | 
									}
 | 
				
			||||||
				b := dAtA[iNdEx]
 | 
									b := dAtA[iNdEx]
 | 
				
			||||||
				iNdEx++
 | 
									iNdEx++
 | 
				
			||||||
				m.SandboxIsolation |= (Options_SandboxIsolation(b) & 0x7F) << shift
 | 
									m.SandboxIsolation |= Options_SandboxIsolation(b&0x7F) << shift
 | 
				
			||||||
				if b < 0x80 {
 | 
									if b < 0x80 {
 | 
				
			||||||
					break
 | 
										break
 | 
				
			||||||
				}
 | 
									}
 | 
				
			||||||
| 
						 | 
					@ -587,7 +723,7 @@ func (m *Options) Unmarshal(dAtA []byte) error {
 | 
				
			||||||
				}
 | 
									}
 | 
				
			||||||
				b := dAtA[iNdEx]
 | 
									b := dAtA[iNdEx]
 | 
				
			||||||
				iNdEx++
 | 
									iNdEx++
 | 
				
			||||||
				stringLen |= (uint64(b) & 0x7F) << shift
 | 
									stringLen |= uint64(b&0x7F) << shift
 | 
				
			||||||
				if b < 0x80 {
 | 
									if b < 0x80 {
 | 
				
			||||||
					break
 | 
										break
 | 
				
			||||||
				}
 | 
									}
 | 
				
			||||||
| 
						 | 
					@ -597,6 +733,9 @@ func (m *Options) Unmarshal(dAtA []byte) error {
 | 
				
			||||||
				return ErrInvalidLengthRunhcs
 | 
									return ErrInvalidLengthRunhcs
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
			postIndex := iNdEx + intStringLen
 | 
								postIndex := iNdEx + intStringLen
 | 
				
			||||||
 | 
								if postIndex < 0 {
 | 
				
			||||||
 | 
									return ErrInvalidLengthRunhcs
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
			if postIndex > l {
 | 
								if postIndex > l {
 | 
				
			||||||
				return io.ErrUnexpectedEOF
 | 
									return io.ErrUnexpectedEOF
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
| 
						 | 
					@ -611,9 +750,13 @@ func (m *Options) Unmarshal(dAtA []byte) error {
 | 
				
			||||||
			if skippy < 0 {
 | 
								if skippy < 0 {
 | 
				
			||||||
				return ErrInvalidLengthRunhcs
 | 
									return ErrInvalidLengthRunhcs
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
 | 
								if (iNdEx + skippy) < 0 {
 | 
				
			||||||
 | 
									return ErrInvalidLengthRunhcs
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
			if (iNdEx + skippy) > l {
 | 
								if (iNdEx + skippy) > l {
 | 
				
			||||||
				return io.ErrUnexpectedEOF
 | 
									return io.ErrUnexpectedEOF
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
 | 
								m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
 | 
				
			||||||
			iNdEx += skippy
 | 
								iNdEx += skippy
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
| 
						 | 
					@ -638,7 +781,7 @@ func (m *ProcessDetails) Unmarshal(dAtA []byte) error {
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
			b := dAtA[iNdEx]
 | 
								b := dAtA[iNdEx]
 | 
				
			||||||
			iNdEx++
 | 
								iNdEx++
 | 
				
			||||||
			wire |= (uint64(b) & 0x7F) << shift
 | 
								wire |= uint64(b&0x7F) << shift
 | 
				
			||||||
			if b < 0x80 {
 | 
								if b < 0x80 {
 | 
				
			||||||
				break
 | 
									break
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
| 
						 | 
					@ -666,7 +809,7 @@ func (m *ProcessDetails) Unmarshal(dAtA []byte) error {
 | 
				
			||||||
				}
 | 
									}
 | 
				
			||||||
				b := dAtA[iNdEx]
 | 
									b := dAtA[iNdEx]
 | 
				
			||||||
				iNdEx++
 | 
									iNdEx++
 | 
				
			||||||
				stringLen |= (uint64(b) & 0x7F) << shift
 | 
									stringLen |= uint64(b&0x7F) << shift
 | 
				
			||||||
				if b < 0x80 {
 | 
									if b < 0x80 {
 | 
				
			||||||
					break
 | 
										break
 | 
				
			||||||
				}
 | 
									}
 | 
				
			||||||
| 
						 | 
					@ -676,6 +819,9 @@ func (m *ProcessDetails) Unmarshal(dAtA []byte) error {
 | 
				
			||||||
				return ErrInvalidLengthRunhcs
 | 
									return ErrInvalidLengthRunhcs
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
			postIndex := iNdEx + intStringLen
 | 
								postIndex := iNdEx + intStringLen
 | 
				
			||||||
 | 
								if postIndex < 0 {
 | 
				
			||||||
 | 
									return ErrInvalidLengthRunhcs
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
			if postIndex > l {
 | 
								if postIndex > l {
 | 
				
			||||||
				return io.ErrUnexpectedEOF
 | 
									return io.ErrUnexpectedEOF
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
| 
						 | 
					@ -695,7 +841,7 @@ func (m *ProcessDetails) Unmarshal(dAtA []byte) error {
 | 
				
			||||||
				}
 | 
									}
 | 
				
			||||||
				b := dAtA[iNdEx]
 | 
									b := dAtA[iNdEx]
 | 
				
			||||||
				iNdEx++
 | 
									iNdEx++
 | 
				
			||||||
				msglen |= (int(b) & 0x7F) << shift
 | 
									msglen |= int(b&0x7F) << shift
 | 
				
			||||||
				if b < 0x80 {
 | 
									if b < 0x80 {
 | 
				
			||||||
					break
 | 
										break
 | 
				
			||||||
				}
 | 
									}
 | 
				
			||||||
| 
						 | 
					@ -704,10 +850,13 @@ func (m *ProcessDetails) Unmarshal(dAtA []byte) error {
 | 
				
			||||||
				return ErrInvalidLengthRunhcs
 | 
									return ErrInvalidLengthRunhcs
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
			postIndex := iNdEx + msglen
 | 
								postIndex := iNdEx + msglen
 | 
				
			||||||
 | 
								if postIndex < 0 {
 | 
				
			||||||
 | 
									return ErrInvalidLengthRunhcs
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
			if postIndex > l {
 | 
								if postIndex > l {
 | 
				
			||||||
				return io.ErrUnexpectedEOF
 | 
									return io.ErrUnexpectedEOF
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
			if err := types.StdTimeUnmarshal(&m.CreatedAt, dAtA[iNdEx:postIndex]); err != nil {
 | 
								if err := github_com_gogo_protobuf_types.StdTimeUnmarshal(&m.CreatedAt, dAtA[iNdEx:postIndex]); err != nil {
 | 
				
			||||||
				return err
 | 
									return err
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
			iNdEx = postIndex
 | 
								iNdEx = postIndex
 | 
				
			||||||
| 
						 | 
					@ -725,7 +874,7 @@ func (m *ProcessDetails) Unmarshal(dAtA []byte) error {
 | 
				
			||||||
				}
 | 
									}
 | 
				
			||||||
				b := dAtA[iNdEx]
 | 
									b := dAtA[iNdEx]
 | 
				
			||||||
				iNdEx++
 | 
									iNdEx++
 | 
				
			||||||
				m.KernelTime_100Ns |= (uint64(b) & 0x7F) << shift
 | 
									m.KernelTime_100Ns |= uint64(b&0x7F) << shift
 | 
				
			||||||
				if b < 0x80 {
 | 
									if b < 0x80 {
 | 
				
			||||||
					break
 | 
										break
 | 
				
			||||||
				}
 | 
									}
 | 
				
			||||||
| 
						 | 
					@ -744,7 +893,7 @@ func (m *ProcessDetails) Unmarshal(dAtA []byte) error {
 | 
				
			||||||
				}
 | 
									}
 | 
				
			||||||
				b := dAtA[iNdEx]
 | 
									b := dAtA[iNdEx]
 | 
				
			||||||
				iNdEx++
 | 
									iNdEx++
 | 
				
			||||||
				m.MemoryCommitBytes |= (uint64(b) & 0x7F) << shift
 | 
									m.MemoryCommitBytes |= uint64(b&0x7F) << shift
 | 
				
			||||||
				if b < 0x80 {
 | 
									if b < 0x80 {
 | 
				
			||||||
					break
 | 
										break
 | 
				
			||||||
				}
 | 
									}
 | 
				
			||||||
| 
						 | 
					@ -763,7 +912,7 @@ func (m *ProcessDetails) Unmarshal(dAtA []byte) error {
 | 
				
			||||||
				}
 | 
									}
 | 
				
			||||||
				b := dAtA[iNdEx]
 | 
									b := dAtA[iNdEx]
 | 
				
			||||||
				iNdEx++
 | 
									iNdEx++
 | 
				
			||||||
				m.MemoryWorkingSetPrivateBytes |= (uint64(b) & 0x7F) << shift
 | 
									m.MemoryWorkingSetPrivateBytes |= uint64(b&0x7F) << shift
 | 
				
			||||||
				if b < 0x80 {
 | 
									if b < 0x80 {
 | 
				
			||||||
					break
 | 
										break
 | 
				
			||||||
				}
 | 
									}
 | 
				
			||||||
| 
						 | 
					@ -782,7 +931,7 @@ func (m *ProcessDetails) Unmarshal(dAtA []byte) error {
 | 
				
			||||||
				}
 | 
									}
 | 
				
			||||||
				b := dAtA[iNdEx]
 | 
									b := dAtA[iNdEx]
 | 
				
			||||||
				iNdEx++
 | 
									iNdEx++
 | 
				
			||||||
				m.MemoryWorkingSetSharedBytes |= (uint64(b) & 0x7F) << shift
 | 
									m.MemoryWorkingSetSharedBytes |= uint64(b&0x7F) << shift
 | 
				
			||||||
				if b < 0x80 {
 | 
									if b < 0x80 {
 | 
				
			||||||
					break
 | 
										break
 | 
				
			||||||
				}
 | 
									}
 | 
				
			||||||
| 
						 | 
					@ -801,7 +950,7 @@ func (m *ProcessDetails) Unmarshal(dAtA []byte) error {
 | 
				
			||||||
				}
 | 
									}
 | 
				
			||||||
				b := dAtA[iNdEx]
 | 
									b := dAtA[iNdEx]
 | 
				
			||||||
				iNdEx++
 | 
									iNdEx++
 | 
				
			||||||
				m.ProcessID |= (uint32(b) & 0x7F) << shift
 | 
									m.ProcessID |= uint32(b&0x7F) << shift
 | 
				
			||||||
				if b < 0x80 {
 | 
									if b < 0x80 {
 | 
				
			||||||
					break
 | 
										break
 | 
				
			||||||
				}
 | 
									}
 | 
				
			||||||
| 
						 | 
					@ -820,7 +969,7 @@ func (m *ProcessDetails) Unmarshal(dAtA []byte) error {
 | 
				
			||||||
				}
 | 
									}
 | 
				
			||||||
				b := dAtA[iNdEx]
 | 
									b := dAtA[iNdEx]
 | 
				
			||||||
				iNdEx++
 | 
									iNdEx++
 | 
				
			||||||
				m.UserTime_100Ns |= (uint64(b) & 0x7F) << shift
 | 
									m.UserTime_100Ns |= uint64(b&0x7F) << shift
 | 
				
			||||||
				if b < 0x80 {
 | 
									if b < 0x80 {
 | 
				
			||||||
					break
 | 
										break
 | 
				
			||||||
				}
 | 
									}
 | 
				
			||||||
| 
						 | 
					@ -839,7 +988,7 @@ func (m *ProcessDetails) Unmarshal(dAtA []byte) error {
 | 
				
			||||||
				}
 | 
									}
 | 
				
			||||||
				b := dAtA[iNdEx]
 | 
									b := dAtA[iNdEx]
 | 
				
			||||||
				iNdEx++
 | 
									iNdEx++
 | 
				
			||||||
				stringLen |= (uint64(b) & 0x7F) << shift
 | 
									stringLen |= uint64(b&0x7F) << shift
 | 
				
			||||||
				if b < 0x80 {
 | 
									if b < 0x80 {
 | 
				
			||||||
					break
 | 
										break
 | 
				
			||||||
				}
 | 
									}
 | 
				
			||||||
| 
						 | 
					@ -849,6 +998,9 @@ func (m *ProcessDetails) Unmarshal(dAtA []byte) error {
 | 
				
			||||||
				return ErrInvalidLengthRunhcs
 | 
									return ErrInvalidLengthRunhcs
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
			postIndex := iNdEx + intStringLen
 | 
								postIndex := iNdEx + intStringLen
 | 
				
			||||||
 | 
								if postIndex < 0 {
 | 
				
			||||||
 | 
									return ErrInvalidLengthRunhcs
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
			if postIndex > l {
 | 
								if postIndex > l {
 | 
				
			||||||
				return io.ErrUnexpectedEOF
 | 
									return io.ErrUnexpectedEOF
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
| 
						 | 
					@ -863,9 +1015,13 @@ func (m *ProcessDetails) Unmarshal(dAtA []byte) error {
 | 
				
			||||||
			if skippy < 0 {
 | 
								if skippy < 0 {
 | 
				
			||||||
				return ErrInvalidLengthRunhcs
 | 
									return ErrInvalidLengthRunhcs
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
 | 
								if (iNdEx + skippy) < 0 {
 | 
				
			||||||
 | 
									return ErrInvalidLengthRunhcs
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
			if (iNdEx + skippy) > l {
 | 
								if (iNdEx + skippy) > l {
 | 
				
			||||||
				return io.ErrUnexpectedEOF
 | 
									return io.ErrUnexpectedEOF
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
 | 
								m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
 | 
				
			||||||
			iNdEx += skippy
 | 
								iNdEx += skippy
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
| 
						 | 
					@ -929,10 +1085,13 @@ func skipRunhcs(dAtA []byte) (n int, err error) {
 | 
				
			||||||
					break
 | 
										break
 | 
				
			||||||
				}
 | 
									}
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
			iNdEx += length
 | 
					 | 
				
			||||||
			if length < 0 {
 | 
								if length < 0 {
 | 
				
			||||||
				return 0, ErrInvalidLengthRunhcs
 | 
									return 0, ErrInvalidLengthRunhcs
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
 | 
								iNdEx += length
 | 
				
			||||||
 | 
								if iNdEx < 0 {
 | 
				
			||||||
 | 
									return 0, ErrInvalidLengthRunhcs
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
			return iNdEx, nil
 | 
								return iNdEx, nil
 | 
				
			||||||
		case 3:
 | 
							case 3:
 | 
				
			||||||
			for {
 | 
								for {
 | 
				
			||||||
| 
						 | 
					@ -961,6 +1120,9 @@ func skipRunhcs(dAtA []byte) (n int, err error) {
 | 
				
			||||||
					return 0, err
 | 
										return 0, err
 | 
				
			||||||
				}
 | 
									}
 | 
				
			||||||
				iNdEx = start + next
 | 
									iNdEx = start + next
 | 
				
			||||||
 | 
									if iNdEx < 0 {
 | 
				
			||||||
 | 
										return 0, ErrInvalidLengthRunhcs
 | 
				
			||||||
 | 
									}
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
			return iNdEx, nil
 | 
								return iNdEx, nil
 | 
				
			||||||
		case 4:
 | 
							case 4:
 | 
				
			||||||
| 
						 | 
					@ -979,55 +1141,3 @@ var (
 | 
				
			||||||
	ErrInvalidLengthRunhcs = fmt.Errorf("proto: negative length found during unmarshaling")
 | 
						ErrInvalidLengthRunhcs = fmt.Errorf("proto: negative length found during unmarshaling")
 | 
				
			||||||
	ErrIntOverflowRunhcs   = fmt.Errorf("proto: integer overflow")
 | 
						ErrIntOverflowRunhcs   = fmt.Errorf("proto: integer overflow")
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
 | 
					 | 
				
			||||||
func init() {
 | 
					 | 
				
			||||||
	proto.RegisterFile("github.com/Microsoft/hcsshim/cmd/containerd-shim-runhcs-v1/options/runhcs.proto", fileDescriptorRunhcs)
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
var fileDescriptorRunhcs = []byte{
 | 
					 | 
				
			||||||
	// 704 bytes of a gzipped FileDescriptorProto
 | 
					 | 
				
			||||||
	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xa4, 0x54, 0x4d, 0x6f, 0xda, 0x48,
 | 
					 | 
				
			||||||
	0x18, 0xc6, 0xe1, 0xd3, 0x6f, 0x96, 0xc4, 0x99, 0xe5, 0x80, 0xb2, 0xbb, 0x80, 0xc8, 0x21, 0x89,
 | 
					 | 
				
			||||||
	0x76, 0x63, 0x43, 0xf6, 0xd8, 0x53, 0x09, 0xa0, 0xba, 0x6a, 0x83, 0x65, 0xa2, 0xa6, 0x1f, 0x07,
 | 
					 | 
				
			||||||
	0xcb, 0xd8, 0x83, 0xb1, 0x82, 0x3d, 0xd6, 0xcc, 0x90, 0x86, 0x5b, 0x7f, 0x42, 0x7f, 0x55, 0x95,
 | 
					 | 
				
			||||||
	0x63, 0x8f, 0x95, 0x2a, 0xa5, 0x0d, 0xbf, 0xa4, 0x9a, 0xb1, 0x49, 0xd4, 0x28, 0xea, 0xa5, 0x27,
 | 
					 | 
				
			||||||
	0xc6, 0xcf, 0xf3, 0xbc, 0xcf, 0xfb, 0x29, 0x60, 0x14, 0x84, 0x7c, 0xb6, 0x98, 0xe8, 0x1e, 0x89,
 | 
					 | 
				
			||||||
	0x8c, 0x97, 0xa1, 0x47, 0x09, 0x23, 0x53, 0x6e, 0xcc, 0x3c, 0xc6, 0x66, 0x61, 0x64, 0x78, 0x91,
 | 
					 | 
				
			||||||
	0x6f, 0x78, 0x24, 0xe6, 0x6e, 0x18, 0x63, 0xea, 0x1f, 0x09, 0xec, 0x88, 0x2e, 0xe2, 0x99, 0xc7,
 | 
					 | 
				
			||||||
	0x8e, 0x2e, 0xbb, 0x06, 0x49, 0x78, 0x48, 0x62, 0x66, 0xa4, 0x88, 0x9e, 0x50, 0xc2, 0x09, 0xaa,
 | 
					 | 
				
			||||||
	0xdd, 0xeb, 0xf5, 0x8c, 0xb8, 0xec, 0xee, 0xd6, 0x02, 0x12, 0x10, 0x29, 0x30, 0xc4, 0x2b, 0xd5,
 | 
					 | 
				
			||||||
	0xee, 0x36, 0x03, 0x42, 0x82, 0x39, 0x36, 0xe4, 0xd7, 0x64, 0x31, 0x35, 0x78, 0x18, 0x61, 0xc6,
 | 
					 | 
				
			||||||
	0xdd, 0x28, 0x49, 0x05, 0xed, 0x4f, 0x79, 0x28, 0x8f, 0xd2, 0x2c, 0xa8, 0x06, 0x45, 0x1f, 0x4f,
 | 
					 | 
				
			||||||
	0x16, 0x41, 0x5d, 0x69, 0x29, 0x07, 0x15, 0x3b, 0xfd, 0x40, 0x43, 0x00, 0xf9, 0x70, 0xf8, 0x32,
 | 
					 | 
				
			||||||
	0xc1, 0xf5, 0x8d, 0x96, 0x72, 0xb0, 0x75, 0xbc, 0xaf, 0x3f, 0x56, 0x83, 0x9e, 0x19, 0xe9, 0x7d,
 | 
					 | 
				
			||||||
	0xa1, 0x3f, 0x5b, 0x26, 0xd8, 0x56, 0xfd, 0xf5, 0x13, 0xed, 0x41, 0x95, 0xe2, 0x20, 0x64, 0x9c,
 | 
					 | 
				
			||||||
	0x2e, 0x1d, 0x4a, 0x08, 0xaf, 0xe7, 0x5b, 0xca, 0x81, 0x6a, 0xff, 0xb1, 0x06, 0x6d, 0x42, 0xb8,
 | 
					 | 
				
			||||||
	0x10, 0x31, 0x37, 0xf6, 0x27, 0xe4, 0xca, 0x09, 0x23, 0x37, 0xc0, 0xf5, 0x42, 0x2a, 0xca, 0x40,
 | 
					 | 
				
			||||||
	0x53, 0x60, 0xe8, 0x10, 0xb4, 0xb5, 0x28, 0x99, 0xbb, 0x7c, 0x4a, 0x68, 0x54, 0x2f, 0x4a, 0xdd,
 | 
					 | 
				
			||||||
	0x76, 0x86, 0x5b, 0x19, 0x8c, 0xde, 0xc1, 0xce, 0x9d, 0x1f, 0x23, 0x73, 0x57, 0xd4, 0x57, 0x2f,
 | 
					 | 
				
			||||||
	0xc9, 0x1e, 0xf4, 0x5f, 0xf7, 0x30, 0xce, 0x32, 0xae, 0xa3, 0xec, 0x75, 0xce, 0x3b, 0x04, 0x19,
 | 
					 | 
				
			||||||
	0x50, 0x9b, 0x10, 0xc2, 0x9d, 0x69, 0x38, 0xc7, 0x4c, 0xf6, 0xe4, 0x24, 0x2e, 0x9f, 0xd5, 0xcb,
 | 
					 | 
				
			||||||
	0xb2, 0x96, 0x1d, 0xc1, 0x0d, 0x05, 0x25, 0x3a, 0xb3, 0x5c, 0x3e, 0x6b, 0x1f, 0x82, 0x7a, 0x37,
 | 
					 | 
				
			||||||
	0x1a, 0xa4, 0x42, 0xf1, 0xd4, 0x32, 0xad, 0x81, 0x96, 0x43, 0x15, 0x28, 0x0c, 0xcd, 0x17, 0x03,
 | 
					 | 
				
			||||||
	0x4d, 0x41, 0x65, 0xc8, 0x0f, 0xce, 0xce, 0xb5, 0x8d, 0xb6, 0x01, 0xda, 0xc3, 0x0a, 0xd0, 0x26,
 | 
					 | 
				
			||||||
	0x94, 0x2d, 0x7b, 0x74, 0x32, 0x18, 0x8f, 0xb5, 0x1c, 0xda, 0x02, 0x78, 0xf6, 0xc6, 0x1a, 0xd8,
 | 
					 | 
				
			||||||
	0xaf, 0xcc, 0xf1, 0xc8, 0xd6, 0x94, 0xf6, 0xd7, 0x3c, 0x6c, 0x59, 0x94, 0x78, 0x98, 0xb1, 0x3e,
 | 
					 | 
				
			||||||
	0xe6, 0x6e, 0x38, 0x67, 0xe8, 0x1f, 0x00, 0x39, 0x44, 0x27, 0x76, 0x23, 0x2c, 0x97, 0xaa, 0xda,
 | 
					 | 
				
			||||||
	0xaa, 0x44, 0x4e, 0xdd, 0x08, 0xa3, 0x13, 0x00, 0x8f, 0x62, 0x97, 0x63, 0xdf, 0x71, 0xb9, 0x5c,
 | 
					 | 
				
			||||||
	0xec, 0xe6, 0xf1, 0xae, 0x9e, 0x1e, 0x8c, 0xbe, 0x3e, 0x18, 0xfd, 0x6c, 0x7d, 0x30, 0xbd, 0xca,
 | 
					 | 
				
			||||||
	0xf5, 0x4d, 0x33, 0xf7, 0xf1, 0x5b, 0x53, 0xb1, 0xd5, 0x2c, 0xee, 0x29, 0x47, 0xff, 0x02, 0xba,
 | 
					 | 
				
			||||||
	0xc0, 0x34, 0xc6, 0x73, 0x47, 0x5c, 0x96, 0xd3, 0xed, 0x74, 0x9c, 0x98, 0xc9, 0xd5, 0x16, 0xec,
 | 
					 | 
				
			||||||
	0xed, 0x94, 0x11, 0x0e, 0xdd, 0x4e, 0xe7, 0x94, 0x21, 0x1d, 0xfe, 0x8c, 0x70, 0x44, 0xe8, 0xd2,
 | 
					 | 
				
			||||||
	0xf1, 0x48, 0x14, 0x85, 0xdc, 0x99, 0x2c, 0x39, 0x66, 0x72, 0xc7, 0x05, 0x7b, 0x27, 0xa5, 0x4e,
 | 
					 | 
				
			||||||
	0x24, 0xd3, 0x13, 0x04, 0x1a, 0x42, 0x2b, 0xd3, 0xbf, 0x27, 0xf4, 0x22, 0x8c, 0x03, 0x87, 0x61,
 | 
					 | 
				
			||||||
	0xee, 0x24, 0x34, 0xbc, 0x74, 0x39, 0xce, 0x82, 0x8b, 0x32, 0xf8, 0xef, 0x54, 0x77, 0x9e, 0xca,
 | 
					 | 
				
			||||||
	0xc6, 0x98, 0x5b, 0xa9, 0x28, 0xf5, 0xe9, 0x43, 0xf3, 0x11, 0x1f, 0x36, 0x73, 0x29, 0xf6, 0x33,
 | 
					 | 
				
			||||||
	0x9b, 0x92, 0xb4, 0xf9, 0xeb, 0xa1, 0xcd, 0x58, 0x6a, 0x52, 0x97, 0xff, 0x00, 0x92, 0x74, 0xc0,
 | 
					 | 
				
			||||||
	0x4e, 0xe8, 0xcb, 0x25, 0x57, 0x7b, 0xd5, 0xd5, 0x4d, 0x53, 0xcd, 0xc6, 0x6e, 0xf6, 0x6d, 0x35,
 | 
					 | 
				
			||||||
	0x13, 0x98, 0x3e, 0xda, 0x07, 0x6d, 0xc1, 0x30, 0xfd, 0x69, 0x2c, 0x15, 0x99, 0xa4, 0x2a, 0xf0,
 | 
					 | 
				
			||||||
	0xfb, 0xa1, 0xec, 0x41, 0x19, 0x5f, 0x61, 0x4f, 0x78, 0xaa, 0x62, 0x45, 0x3d, 0x58, 0xdd, 0x34,
 | 
					 | 
				
			||||||
	0x4b, 0x83, 0x2b, 0xec, 0x99, 0x7d, 0xbb, 0x24, 0x28, 0xd3, 0xef, 0xf9, 0xd7, 0xb7, 0x8d, 0xdc,
 | 
					 | 
				
			||||||
	0x97, 0xdb, 0x46, 0xee, 0xc3, 0xaa, 0xa1, 0x5c, 0xaf, 0x1a, 0xca, 0xe7, 0x55, 0x43, 0xf9, 0xbe,
 | 
					 | 
				
			||||||
	0x6a, 0x28, 0x6f, 0x9f, 0xff, 0xfe, 0xdf, 0xcb, 0x93, 0xec, 0xf7, 0x75, 0x6e, 0x52, 0x92, 0x7b,
 | 
					 | 
				
			||||||
	0xff, 0xff, 0x47, 0x00, 0x00, 0x00, 0xff, 0xff, 0xa3, 0x9a, 0x54, 0x17, 0xb5, 0x04, 0x00, 0x00,
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
							
								
								
									
										75
									
								
								vendor/github.com/Microsoft/hcsshim/container.go
									
										
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										75
									
								
								vendor/github.com/Microsoft/hcsshim/container.go
									
										
									
										generated
									
									
										vendored
									
									
								
							| 
						 | 
					@ -1,8 +1,10 @@
 | 
				
			||||||
package hcsshim
 | 
					package hcsshim
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import (
 | 
					import (
 | 
				
			||||||
 | 
						"context"
 | 
				
			||||||
	"fmt"
 | 
						"fmt"
 | 
				
			||||||
	"os"
 | 
						"os"
 | 
				
			||||||
 | 
						"sync"
 | 
				
			||||||
	"time"
 | 
						"time"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	"github.com/Microsoft/hcsshim/internal/hcs"
 | 
						"github.com/Microsoft/hcsshim/internal/hcs"
 | 
				
			||||||
| 
						 | 
					@ -52,7 +54,10 @@ const (
 | 
				
			||||||
type ResourceModificationRequestResponse = schema1.ResourceModificationRequestResponse
 | 
					type ResourceModificationRequestResponse = schema1.ResourceModificationRequestResponse
 | 
				
			||||||
 | 
					
 | 
				
			||||||
type container struct {
 | 
					type container struct {
 | 
				
			||||||
	system *hcs.System
 | 
						system   *hcs.System
 | 
				
			||||||
 | 
						waitOnce sync.Once
 | 
				
			||||||
 | 
						waitErr  error
 | 
				
			||||||
 | 
						waitCh   chan struct{}
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// createComputeSystemAdditionalJSON is read from the environment at initialisation
 | 
					// createComputeSystemAdditionalJSON is read from the environment at initialisation
 | 
				
			||||||
| 
						 | 
					@ -71,61 +76,87 @@ func CreateContainer(id string, c *ContainerConfig) (Container, error) {
 | 
				
			||||||
		return nil, fmt.Errorf("failed to merge additional JSON '%s': %s", createContainerAdditionalJSON, err)
 | 
							return nil, fmt.Errorf("failed to merge additional JSON '%s': %s", createContainerAdditionalJSON, err)
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	system, err := hcs.CreateComputeSystem(id, fullConfig)
 | 
						system, err := hcs.CreateComputeSystem(context.Background(), id, fullConfig)
 | 
				
			||||||
	if err != nil {
 | 
						if err != nil {
 | 
				
			||||||
		return nil, err
 | 
							return nil, err
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	return &container{system}, err
 | 
						return &container{system: system}, err
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// OpenContainer opens an existing container by ID.
 | 
					// OpenContainer opens an existing container by ID.
 | 
				
			||||||
func OpenContainer(id string) (Container, error) {
 | 
					func OpenContainer(id string) (Container, error) {
 | 
				
			||||||
	system, err := hcs.OpenComputeSystem(id)
 | 
						system, err := hcs.OpenComputeSystem(context.Background(), id)
 | 
				
			||||||
	if err != nil {
 | 
						if err != nil {
 | 
				
			||||||
		return nil, err
 | 
							return nil, err
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	return &container{system}, err
 | 
						return &container{system: system}, err
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// GetContainers gets a list of the containers on the system that match the query
 | 
					// GetContainers gets a list of the containers on the system that match the query
 | 
				
			||||||
func GetContainers(q ComputeSystemQuery) ([]ContainerProperties, error) {
 | 
					func GetContainers(q ComputeSystemQuery) ([]ContainerProperties, error) {
 | 
				
			||||||
	return hcs.GetComputeSystems(q)
 | 
						return hcs.GetComputeSystems(context.Background(), q)
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// Start synchronously starts the container.
 | 
					// Start synchronously starts the container.
 | 
				
			||||||
func (container *container) Start() error {
 | 
					func (container *container) Start() error {
 | 
				
			||||||
	return convertSystemError(container.system.Start(), container)
 | 
						return convertSystemError(container.system.Start(context.Background()), container)
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// Shutdown requests a container shutdown, but it may not actually be shutdown until Wait() succeeds.
 | 
					// Shutdown requests a container shutdown, but it may not actually be shutdown until Wait() succeeds.
 | 
				
			||||||
func (container *container) Shutdown() error {
 | 
					func (container *container) Shutdown() error {
 | 
				
			||||||
	return convertSystemError(container.system.Shutdown(), container)
 | 
						err := container.system.Shutdown(context.Background())
 | 
				
			||||||
 | 
						if err != nil {
 | 
				
			||||||
 | 
							return convertSystemError(err, container)
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						return &ContainerError{Container: container, Err: ErrVmcomputeOperationPending, Operation: "hcsshim::ComputeSystem::Shutdown"}
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// Terminate requests a container terminate, but it may not actually be terminated until Wait() succeeds.
 | 
					// Terminate requests a container terminate, but it may not actually be terminated until Wait() succeeds.
 | 
				
			||||||
func (container *container) Terminate() error {
 | 
					func (container *container) Terminate() error {
 | 
				
			||||||
	return convertSystemError(container.system.Terminate(), container)
 | 
						err := container.system.Terminate(context.Background())
 | 
				
			||||||
 | 
						if err != nil {
 | 
				
			||||||
 | 
							return convertSystemError(err, container)
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						return &ContainerError{Container: container, Err: ErrVmcomputeOperationPending, Operation: "hcsshim::ComputeSystem::Terminate"}
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// Waits synchronously waits for the container to shutdown or terminate.
 | 
					// Waits synchronously waits for the container to shutdown or terminate.
 | 
				
			||||||
func (container *container) Wait() error {
 | 
					func (container *container) Wait() error {
 | 
				
			||||||
	return convertSystemError(container.system.Wait(), container)
 | 
						err := container.system.Wait()
 | 
				
			||||||
 | 
						if err == nil {
 | 
				
			||||||
 | 
							err = container.system.ExitError()
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						return convertSystemError(err, container)
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// WaitTimeout synchronously waits for the container to terminate or the duration to elapse. It
 | 
					// WaitTimeout synchronously waits for the container to terminate or the duration to elapse. It
 | 
				
			||||||
// returns false if timeout occurs.
 | 
					// returns false if timeout occurs.
 | 
				
			||||||
func (container *container) WaitTimeout(t time.Duration) error {
 | 
					func (container *container) WaitTimeout(timeout time.Duration) error {
 | 
				
			||||||
	return convertSystemError(container.system.WaitTimeout(t), container)
 | 
						container.waitOnce.Do(func() {
 | 
				
			||||||
 | 
							container.waitCh = make(chan struct{})
 | 
				
			||||||
 | 
							go func() {
 | 
				
			||||||
 | 
								container.waitErr = container.Wait()
 | 
				
			||||||
 | 
								close(container.waitCh)
 | 
				
			||||||
 | 
							}()
 | 
				
			||||||
 | 
						})
 | 
				
			||||||
 | 
						t := time.NewTimer(timeout)
 | 
				
			||||||
 | 
						defer t.Stop()
 | 
				
			||||||
 | 
						select {
 | 
				
			||||||
 | 
						case <-t.C:
 | 
				
			||||||
 | 
							return &ContainerError{Container: container, Err: ErrTimeout, Operation: "hcsshim::ComputeSystem::Wait"}
 | 
				
			||||||
 | 
						case <-container.waitCh:
 | 
				
			||||||
 | 
							return container.waitErr
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// Pause pauses the execution of a container.
 | 
					// Pause pauses the execution of a container.
 | 
				
			||||||
func (container *container) Pause() error {
 | 
					func (container *container) Pause() error {
 | 
				
			||||||
	return convertSystemError(container.system.Pause(), container)
 | 
						return convertSystemError(container.system.Pause(context.Background()), container)
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// Resume resumes the execution of a container.
 | 
					// Resume resumes the execution of a container.
 | 
				
			||||||
func (container *container) Resume() error {
 | 
					func (container *container) Resume() error {
 | 
				
			||||||
	return convertSystemError(container.system.Resume(), container)
 | 
						return convertSystemError(container.system.Resume(context.Background()), container)
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// HasPendingUpdates returns true if the container has updates pending to install
 | 
					// HasPendingUpdates returns true if the container has updates pending to install
 | 
				
			||||||
| 
						 | 
					@ -135,7 +166,7 @@ func (container *container) HasPendingUpdates() (bool, error) {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// Statistics returns statistics for the container. This is a legacy v1 call
 | 
					// Statistics returns statistics for the container. This is a legacy v1 call
 | 
				
			||||||
func (container *container) Statistics() (Statistics, error) {
 | 
					func (container *container) Statistics() (Statistics, error) {
 | 
				
			||||||
	properties, err := container.system.Properties(schema1.PropertyTypeStatistics)
 | 
						properties, err := container.system.Properties(context.Background(), schema1.PropertyTypeStatistics)
 | 
				
			||||||
	if err != nil {
 | 
						if err != nil {
 | 
				
			||||||
		return Statistics{}, convertSystemError(err, container)
 | 
							return Statistics{}, convertSystemError(err, container)
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
| 
						 | 
					@ -145,7 +176,7 @@ func (container *container) Statistics() (Statistics, error) {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// ProcessList returns an array of ProcessListItems for the container. This is a legacy v1 call
 | 
					// ProcessList returns an array of ProcessListItems for the container. This is a legacy v1 call
 | 
				
			||||||
func (container *container) ProcessList() ([]ProcessListItem, error) {
 | 
					func (container *container) ProcessList() ([]ProcessListItem, error) {
 | 
				
			||||||
	properties, err := container.system.Properties(schema1.PropertyTypeProcessList)
 | 
						properties, err := container.system.Properties(context.Background(), schema1.PropertyTypeProcessList)
 | 
				
			||||||
	if err != nil {
 | 
						if err != nil {
 | 
				
			||||||
		return nil, convertSystemError(err, container)
 | 
							return nil, convertSystemError(err, container)
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
| 
						 | 
					@ -155,7 +186,7 @@ func (container *container) ProcessList() ([]ProcessListItem, error) {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// This is a legacy v1 call
 | 
					// This is a legacy v1 call
 | 
				
			||||||
func (container *container) MappedVirtualDisks() (map[int]MappedVirtualDiskController, error) {
 | 
					func (container *container) MappedVirtualDisks() (map[int]MappedVirtualDiskController, error) {
 | 
				
			||||||
	properties, err := container.system.Properties(schema1.PropertyTypeMappedVirtualDisk)
 | 
						properties, err := container.system.Properties(context.Background(), schema1.PropertyTypeMappedVirtualDisk)
 | 
				
			||||||
	if err != nil {
 | 
						if err != nil {
 | 
				
			||||||
		return nil, convertSystemError(err, container)
 | 
							return nil, convertSystemError(err, container)
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
| 
						 | 
					@ -165,20 +196,20 @@ func (container *container) MappedVirtualDisks() (map[int]MappedVirtualDiskContr
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// CreateProcess launches a new process within the container.
 | 
					// CreateProcess launches a new process within the container.
 | 
				
			||||||
func (container *container) CreateProcess(c *ProcessConfig) (Process, error) {
 | 
					func (container *container) CreateProcess(c *ProcessConfig) (Process, error) {
 | 
				
			||||||
	p, err := container.system.CreateProcess(c)
 | 
						p, err := container.system.CreateProcess(context.Background(), c)
 | 
				
			||||||
	if err != nil {
 | 
						if err != nil {
 | 
				
			||||||
		return nil, convertSystemError(err, container)
 | 
							return nil, convertSystemError(err, container)
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	return &process{p}, nil
 | 
						return &process{p: p.(*hcs.Process)}, nil
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// OpenProcess gets an interface to an existing process within the container.
 | 
					// OpenProcess gets an interface to an existing process within the container.
 | 
				
			||||||
func (container *container) OpenProcess(pid int) (Process, error) {
 | 
					func (container *container) OpenProcess(pid int) (Process, error) {
 | 
				
			||||||
	p, err := container.system.OpenProcess(pid)
 | 
						p, err := container.system.OpenProcess(context.Background(), pid)
 | 
				
			||||||
	if err != nil {
 | 
						if err != nil {
 | 
				
			||||||
		return nil, convertSystemError(err, container)
 | 
							return nil, convertSystemError(err, container)
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	return &process{p}, nil
 | 
						return &process{p: p}, nil
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// Close cleans up any state associated with the container but does not terminate or wait for it.
 | 
					// Close cleans up any state associated with the container but does not terminate or wait for it.
 | 
				
			||||||
| 
						 | 
					@ -188,5 +219,5 @@ func (container *container) Close() error {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// Modify the System
 | 
					// Modify the System
 | 
				
			||||||
func (container *container) Modify(config *ResourceModificationRequestResponse) error {
 | 
					func (container *container) Modify(config *ResourceModificationRequestResponse) error {
 | 
				
			||||||
	return convertSystemError(container.system.Modify(config), container)
 | 
						return convertSystemError(container.system.Modify(context.Background(), config), container)
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
							
								
								
									
										37
									
								
								vendor/github.com/Microsoft/hcsshim/go.mod
									
										
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										37
									
								
								vendor/github.com/Microsoft/hcsshim/go.mod
									
										
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,37 @@
 | 
				
			||||||
 | 
					module github.com/Microsoft/hcsshim
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					go 1.13
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					require (
 | 
				
			||||||
 | 
						github.com/Microsoft/go-winio v0.4.15-0.20190919025122-fc70bd9a86b5
 | 
				
			||||||
 | 
						github.com/blang/semver v3.1.0+incompatible // indirect
 | 
				
			||||||
 | 
						github.com/containerd/cgroups v0.0.0-20190919134610-bf292b21730f
 | 
				
			||||||
 | 
						github.com/containerd/console v0.0.0-20180822173158-c12b1e7919c1
 | 
				
			||||||
 | 
						github.com/containerd/containerd v1.3.0-beta.2.0.20190828155532-0293cbd26c69
 | 
				
			||||||
 | 
						github.com/containerd/continuity v0.0.0-20190426062206-aaeac12a7ffc // indirect
 | 
				
			||||||
 | 
						github.com/containerd/fifo v0.0.0-20190226154929-a9fb20d87448 // indirect
 | 
				
			||||||
 | 
						github.com/containerd/go-runc v0.0.0-20180907222934-5a6d9f37cfa3
 | 
				
			||||||
 | 
						github.com/containerd/ttrpc v0.0.0-20190828154514-0e0f228740de
 | 
				
			||||||
 | 
						github.com/containerd/typeurl v0.0.0-20180627222232-a93fcdb778cd
 | 
				
			||||||
 | 
						github.com/gogo/protobuf v1.2.1
 | 
				
			||||||
 | 
						github.com/hashicorp/errwrap v0.0.0-20141028054710-7554cd9344ce // indirect
 | 
				
			||||||
 | 
						github.com/hashicorp/go-multierror v0.0.0-20161216184304-ed905158d874 // indirect
 | 
				
			||||||
 | 
						github.com/opencontainers/go-digest v0.0.0-20180430190053-c9281466c8b2 // indirect
 | 
				
			||||||
 | 
						github.com/opencontainers/runc v0.0.0-20190115041553-12f6a991201f // indirect
 | 
				
			||||||
 | 
						github.com/opencontainers/runtime-spec v0.1.2-0.20190507144316-5b71a03e2700
 | 
				
			||||||
 | 
						github.com/opencontainers/runtime-tools v0.0.0-20181011054405-1d69bd0f9c39
 | 
				
			||||||
 | 
						github.com/pkg/errors v0.8.1
 | 
				
			||||||
 | 
						github.com/prometheus/procfs v0.0.5 // indirect
 | 
				
			||||||
 | 
						github.com/sirupsen/logrus v1.4.1
 | 
				
			||||||
 | 
						github.com/syndtr/gocapability v0.0.0-20170704070218-db04d3cc01c8 // indirect
 | 
				
			||||||
 | 
						github.com/urfave/cli v0.0.0-20171014202726-7bc6a0acffa5
 | 
				
			||||||
 | 
						github.com/xeipuuv/gojsonpointer v0.0.0-20180127040702-4e3ac2762d5f // indirect
 | 
				
			||||||
 | 
						github.com/xeipuuv/gojsonreference v0.0.0-20180127040603-bd5ef7bd5415 // indirect
 | 
				
			||||||
 | 
						github.com/xeipuuv/gojsonschema v0.0.0-20180618132009-1d523034197f // indirect
 | 
				
			||||||
 | 
						go.opencensus.io v0.22.0
 | 
				
			||||||
 | 
						golang.org/x/sync v0.0.0-20190227155943-e225da77a7e6
 | 
				
			||||||
 | 
						golang.org/x/sys v0.0.0-20190916202348-b4ddaad3f8a3
 | 
				
			||||||
 | 
						google.golang.org/grpc v1.20.1
 | 
				
			||||||
 | 
						gotest.tools v2.2.0+incompatible // indirect
 | 
				
			||||||
 | 
						k8s.io/kubernetes v1.13.0
 | 
				
			||||||
 | 
					)
 | 
				
			||||||
							
								
								
									
										10
									
								
								vendor/github.com/Microsoft/hcsshim/hnsendpoint.go
									
										
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										10
									
								
								vendor/github.com/Microsoft/hcsshim/hnsendpoint.go
									
										
									
										generated
									
									
										vendored
									
									
								
							| 
						 | 
					@ -39,11 +39,21 @@ func HNSListEndpointRequest() ([]HNSEndpoint, error) {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// HotAttachEndpoint makes a HCS Call to attach the endpoint to the container
 | 
					// HotAttachEndpoint makes a HCS Call to attach the endpoint to the container
 | 
				
			||||||
func HotAttachEndpoint(containerID string, endpointID string) error {
 | 
					func HotAttachEndpoint(containerID string, endpointID string) error {
 | 
				
			||||||
 | 
						endpoint, err := GetHNSEndpointByID(endpointID)
 | 
				
			||||||
 | 
						isAttached, err := endpoint.IsAttached(containerID)
 | 
				
			||||||
 | 
						if isAttached {
 | 
				
			||||||
 | 
							return err
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
	return modifyNetworkEndpoint(containerID, endpointID, Add)
 | 
						return modifyNetworkEndpoint(containerID, endpointID, Add)
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// HotDetachEndpoint makes a HCS Call to detach the endpoint from the container
 | 
					// HotDetachEndpoint makes a HCS Call to detach the endpoint from the container
 | 
				
			||||||
func HotDetachEndpoint(containerID string, endpointID string) error {
 | 
					func HotDetachEndpoint(containerID string, endpointID string) error {
 | 
				
			||||||
 | 
						endpoint, err := GetHNSEndpointByID(endpointID)
 | 
				
			||||||
 | 
						isAttached, err := endpoint.IsAttached(containerID)
 | 
				
			||||||
 | 
						if !isAttached {
 | 
				
			||||||
 | 
							return err
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
	return modifyNetworkEndpoint(containerID, endpointID, Remove)
 | 
						return modifyNetworkEndpoint(containerID, endpointID, Remove)
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
							
								
								
									
										83
									
								
								vendor/github.com/Microsoft/hcsshim/internal/cow/cow.go
									
										
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										83
									
								
								vendor/github.com/Microsoft/hcsshim/internal/cow/cow.go
									
										
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,83 @@
 | 
				
			||||||
 | 
					package cow
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import (
 | 
				
			||||||
 | 
						"context"
 | 
				
			||||||
 | 
						"io"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						"github.com/Microsoft/hcsshim/internal/schema1"
 | 
				
			||||||
 | 
						hcsschema "github.com/Microsoft/hcsshim/internal/schema2"
 | 
				
			||||||
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// Process is the interface for an OS process running in a container or utility VM.
 | 
				
			||||||
 | 
					type Process interface {
 | 
				
			||||||
 | 
						// Close releases resources associated with the process and closes the
 | 
				
			||||||
 | 
						// writer and readers returned by Stdio. Depending on the implementation,
 | 
				
			||||||
 | 
						// this may also terminate the process.
 | 
				
			||||||
 | 
						Close() error
 | 
				
			||||||
 | 
						// CloseStdin causes the process's stdin handle to receive EOF/EPIPE/whatever
 | 
				
			||||||
 | 
						// is appropriate to indicate that no more data is available.
 | 
				
			||||||
 | 
						CloseStdin(ctx context.Context) error
 | 
				
			||||||
 | 
						// Pid returns the process ID.
 | 
				
			||||||
 | 
						Pid() int
 | 
				
			||||||
 | 
						// Stdio returns the stdio streams for a process. These may be nil if a stream
 | 
				
			||||||
 | 
						// was not requested during CreateProcess.
 | 
				
			||||||
 | 
						Stdio() (_ io.Writer, _ io.Reader, _ io.Reader)
 | 
				
			||||||
 | 
						// ResizeConsole resizes the virtual terminal associated with the process.
 | 
				
			||||||
 | 
						ResizeConsole(ctx context.Context, width, height uint16) error
 | 
				
			||||||
 | 
						// Kill sends a SIGKILL or equivalent signal to the process and returns whether
 | 
				
			||||||
 | 
						// the signal was delivered. It does not wait for the process to terminate.
 | 
				
			||||||
 | 
						Kill(ctx context.Context) (bool, error)
 | 
				
			||||||
 | 
						// Signal sends a signal to the process and returns whether the signal was
 | 
				
			||||||
 | 
						// delivered. The input is OS specific (either
 | 
				
			||||||
 | 
						// guestrequest.SignalProcessOptionsWCOW or
 | 
				
			||||||
 | 
						// guestrequest.SignalProcessOptionsLCOW). It does not wait for the process
 | 
				
			||||||
 | 
						// to terminate.
 | 
				
			||||||
 | 
						Signal(ctx context.Context, options interface{}) (bool, error)
 | 
				
			||||||
 | 
						// Wait waits for the process to complete, or for a connection to the process to be
 | 
				
			||||||
 | 
						// terminated by some error condition (including calling Close).
 | 
				
			||||||
 | 
						Wait() error
 | 
				
			||||||
 | 
						// ExitCode returns the exit code of the process. Returns an error if the process is
 | 
				
			||||||
 | 
						// not running.
 | 
				
			||||||
 | 
						ExitCode() (int, error)
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// ProcessHost is the interface for creating processes.
 | 
				
			||||||
 | 
					type ProcessHost interface {
 | 
				
			||||||
 | 
						// CreateProcess creates a process. The configuration is host specific
 | 
				
			||||||
 | 
						// (either hcsschema.ProcessParameters or lcow.ProcessParameters).
 | 
				
			||||||
 | 
						CreateProcess(ctx context.Context, config interface{}) (Process, error)
 | 
				
			||||||
 | 
						// OS returns the host's operating system, "linux" or "windows".
 | 
				
			||||||
 | 
						OS() string
 | 
				
			||||||
 | 
						// IsOCI specifies whether this is an OCI-compliant process host. If true,
 | 
				
			||||||
 | 
						// then the configuration passed to CreateProcess should have an OCI process
 | 
				
			||||||
 | 
						// spec (or nil if this is the initial process in an OCI container).
 | 
				
			||||||
 | 
						// Otherwise, it should have the HCS-specific process parameters.
 | 
				
			||||||
 | 
						IsOCI() bool
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// Container is the interface for container objects, either running on the host or
 | 
				
			||||||
 | 
					// in a utility VM.
 | 
				
			||||||
 | 
					type Container interface {
 | 
				
			||||||
 | 
						ProcessHost
 | 
				
			||||||
 | 
						// Close releases the resources associated with the container. Depending on
 | 
				
			||||||
 | 
						// the implementation, this may also terminate the container.
 | 
				
			||||||
 | 
						Close() error
 | 
				
			||||||
 | 
						// ID returns the container ID.
 | 
				
			||||||
 | 
						ID() string
 | 
				
			||||||
 | 
						// Properties returns the requested container properties targeting a V1 schema container.
 | 
				
			||||||
 | 
						Properties(ctx context.Context, types ...schema1.PropertyType) (*schema1.ContainerProperties, error)
 | 
				
			||||||
 | 
						// PropertiesV2 returns the requested container properties targeting a V2 schema container.
 | 
				
			||||||
 | 
						PropertiesV2(ctx context.Context, types ...hcsschema.PropertyType) (*hcsschema.Properties, error)
 | 
				
			||||||
 | 
						// Start starts a container.
 | 
				
			||||||
 | 
						Start(ctx context.Context) error
 | 
				
			||||||
 | 
						// Shutdown sends a shutdown request to the container (but does not wait for
 | 
				
			||||||
 | 
						// the shutdown to complete).
 | 
				
			||||||
 | 
						Shutdown(ctx context.Context) error
 | 
				
			||||||
 | 
						// Terminate sends a terminate request to the container (but does not wait
 | 
				
			||||||
 | 
						// for the terminate to complete).
 | 
				
			||||||
 | 
						Terminate(ctx context.Context) error
 | 
				
			||||||
 | 
						// Wait waits for the container to terminate, or for the connection to the
 | 
				
			||||||
 | 
						// container to be terminated by some error condition (including calling
 | 
				
			||||||
 | 
						// Close).
 | 
				
			||||||
 | 
						Wait() error
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										69
									
								
								vendor/github.com/Microsoft/hcsshim/internal/guid/guid.go
									
										
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										69
									
								
								vendor/github.com/Microsoft/hcsshim/internal/guid/guid.go
									
										
									
										generated
									
									
										vendored
									
									
								
							| 
						 | 
					@ -1,69 +0,0 @@
 | 
				
			||||||
package guid
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
import (
 | 
					 | 
				
			||||||
	"crypto/rand"
 | 
					 | 
				
			||||||
	"encoding/json"
 | 
					 | 
				
			||||||
	"fmt"
 | 
					 | 
				
			||||||
	"io"
 | 
					 | 
				
			||||||
	"strconv"
 | 
					 | 
				
			||||||
	"strings"
 | 
					 | 
				
			||||||
)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
var _ = (json.Marshaler)(&GUID{})
 | 
					 | 
				
			||||||
var _ = (json.Unmarshaler)(&GUID{})
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
type GUID [16]byte
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
func New() GUID {
 | 
					 | 
				
			||||||
	g := GUID{}
 | 
					 | 
				
			||||||
	_, err := io.ReadFull(rand.Reader, g[:])
 | 
					 | 
				
			||||||
	if err != nil {
 | 
					 | 
				
			||||||
		panic(err)
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
	return g
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
func (g GUID) String() string {
 | 
					 | 
				
			||||||
	return fmt.Sprintf("%02x%02x%02x%02x-%02x%02x-%02x%02x-%02x-%02x", g[3], g[2], g[1], g[0], g[5], g[4], g[7], g[6], g[8:10], g[10:])
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
func FromString(s string) GUID {
 | 
					 | 
				
			||||||
	if len(s) != 36 {
 | 
					 | 
				
			||||||
		panic(fmt.Sprintf("invalid GUID length: %d", len(s)))
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
	if s[8] != '-' || s[13] != '-' || s[18] != '-' || s[23] != '-' {
 | 
					 | 
				
			||||||
		panic("invalid GUID format")
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
	indexOrder := [16]int{
 | 
					 | 
				
			||||||
		0, 2, 4, 6,
 | 
					 | 
				
			||||||
		9, 11,
 | 
					 | 
				
			||||||
		14, 16,
 | 
					 | 
				
			||||||
		19, 21,
 | 
					 | 
				
			||||||
		24, 26, 28, 30, 32, 34,
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
	byteOrder := [16]int{
 | 
					 | 
				
			||||||
		3, 2, 1, 0,
 | 
					 | 
				
			||||||
		5, 4,
 | 
					 | 
				
			||||||
		7, 6,
 | 
					 | 
				
			||||||
		8, 9,
 | 
					 | 
				
			||||||
		10, 11, 12, 13, 14, 15,
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
	var g GUID
 | 
					 | 
				
			||||||
	for i, x := range indexOrder {
 | 
					 | 
				
			||||||
		b, err := strconv.ParseInt(s[x:x+2], 16, 16)
 | 
					 | 
				
			||||||
		if err != nil {
 | 
					 | 
				
			||||||
			panic(err)
 | 
					 | 
				
			||||||
		}
 | 
					 | 
				
			||||||
		g[byteOrder[i]] = byte(b)
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
	return g
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
func (g GUID) MarshalJSON() ([]byte, error) {
 | 
					 | 
				
			||||||
	return json.Marshal(g.String())
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
func (g *GUID) UnmarshalJSON(data []byte) error {
 | 
					 | 
				
			||||||
	*g = FromString(strings.Trim(string(data), "\""))
 | 
					 | 
				
			||||||
	return nil
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
							
								
								
									
										42
									
								
								vendor/github.com/Microsoft/hcsshim/internal/hcs/callback.go
									
										
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										42
									
								
								vendor/github.com/Microsoft/hcsshim/internal/hcs/callback.go
									
										
									
										generated
									
									
										vendored
									
									
								
							| 
						 | 
					@ -7,6 +7,7 @@ import (
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	"github.com/Microsoft/hcsshim/internal/interop"
 | 
						"github.com/Microsoft/hcsshim/internal/interop"
 | 
				
			||||||
	"github.com/Microsoft/hcsshim/internal/logfields"
 | 
						"github.com/Microsoft/hcsshim/internal/logfields"
 | 
				
			||||||
 | 
						"github.com/Microsoft/hcsshim/internal/vmcompute"
 | 
				
			||||||
	"github.com/sirupsen/logrus"
 | 
						"github.com/sirupsen/logrus"
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -88,7 +89,7 @@ type notificationChannel chan error
 | 
				
			||||||
 | 
					
 | 
				
			||||||
type notifcationWatcherContext struct {
 | 
					type notifcationWatcherContext struct {
 | 
				
			||||||
	channels notificationChannels
 | 
						channels notificationChannels
 | 
				
			||||||
	handle   hcsCallback
 | 
						handle   vmcompute.HcsCallback
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	systemID  string
 | 
						systemID  string
 | 
				
			||||||
	processID int
 | 
						processID int
 | 
				
			||||||
| 
						 | 
					@ -98,21 +99,27 @@ type notificationChannels map[hcsNotification]notificationChannel
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func newSystemChannels() notificationChannels {
 | 
					func newSystemChannels() notificationChannels {
 | 
				
			||||||
	channels := make(notificationChannels)
 | 
						channels := make(notificationChannels)
 | 
				
			||||||
 | 
						for _, notif := range []hcsNotification{
 | 
				
			||||||
	channels[hcsNotificationSystemExited] = make(notificationChannel, 1)
 | 
							hcsNotificationServiceDisconnect,
 | 
				
			||||||
	channels[hcsNotificationSystemCreateCompleted] = make(notificationChannel, 1)
 | 
							hcsNotificationSystemExited,
 | 
				
			||||||
	channels[hcsNotificationSystemStartCompleted] = make(notificationChannel, 1)
 | 
							hcsNotificationSystemCreateCompleted,
 | 
				
			||||||
	channels[hcsNotificationSystemPauseCompleted] = make(notificationChannel, 1)
 | 
							hcsNotificationSystemStartCompleted,
 | 
				
			||||||
	channels[hcsNotificationSystemResumeCompleted] = make(notificationChannel, 1)
 | 
							hcsNotificationSystemPauseCompleted,
 | 
				
			||||||
 | 
							hcsNotificationSystemResumeCompleted,
 | 
				
			||||||
 | 
						} {
 | 
				
			||||||
 | 
							channels[notif] = make(notificationChannel, 1)
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
	return channels
 | 
						return channels
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func newProcessChannels() notificationChannels {
 | 
					func newProcessChannels() notificationChannels {
 | 
				
			||||||
	channels := make(notificationChannels)
 | 
						channels := make(notificationChannels)
 | 
				
			||||||
 | 
						for _, notif := range []hcsNotification{
 | 
				
			||||||
	channels[hcsNotificationProcessExited] = make(notificationChannel, 1)
 | 
							hcsNotificationServiceDisconnect,
 | 
				
			||||||
 | 
							hcsNotificationProcessExited,
 | 
				
			||||||
 | 
						} {
 | 
				
			||||||
 | 
							channels[notif] = make(notificationChannel, 1)
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
	return channels
 | 
						return channels
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -143,18 +150,7 @@ func notificationWatcher(notificationType hcsNotification, callbackNumber uintpt
 | 
				
			||||||
	if context.processID != 0 {
 | 
						if context.processID != 0 {
 | 
				
			||||||
		log.Data[logfields.ProcessID] = context.processID
 | 
							log.Data[logfields.ProcessID] = context.processID
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	log.Debug("")
 | 
						log.Debug("HCS notification")
 | 
				
			||||||
 | 
					 | 
				
			||||||
	// The HCS notification system can grow overtime. We explicitly opt-in to
 | 
					 | 
				
			||||||
	// the notifications we would like to handle, all others we simply return.
 | 
					 | 
				
			||||||
	// This means that as it grows we don't have issues associated with new
 | 
					 | 
				
			||||||
	// notification types the code didn't know about.
 | 
					 | 
				
			||||||
	switch notificationType {
 | 
					 | 
				
			||||||
	case hcsNotificationSystemExited, hcsNotificationSystemCreateCompleted, hcsNotificationSystemStartCompleted, hcsNotificationSystemPauseCompleted, hcsNotificationSystemResumeCompleted:
 | 
					 | 
				
			||||||
	case hcsNotificationProcessExited:
 | 
					 | 
				
			||||||
	default:
 | 
					 | 
				
			||||||
		return 0
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if channel, ok := context.channels[notificationType]; ok {
 | 
						if channel, ok := context.channels[notificationType]; ok {
 | 
				
			||||||
		channel <- result
 | 
							channel <- result
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
							
								
								
									
										68
									
								
								vendor/github.com/Microsoft/hcsshim/internal/hcs/errors.go
									
										
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										68
									
								
								vendor/github.com/Microsoft/hcsshim/internal/hcs/errors.go
									
										
									
										generated
									
									
										vendored
									
									
								
							| 
						 | 
					@ -1,14 +1,14 @@
 | 
				
			||||||
package hcs
 | 
					package hcs
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import (
 | 
					import (
 | 
				
			||||||
 | 
						"context"
 | 
				
			||||||
	"encoding/json"
 | 
						"encoding/json"
 | 
				
			||||||
	"errors"
 | 
						"errors"
 | 
				
			||||||
	"fmt"
 | 
						"fmt"
 | 
				
			||||||
 | 
						"net"
 | 
				
			||||||
	"syscall"
 | 
						"syscall"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	"github.com/Microsoft/hcsshim/internal/interop"
 | 
						"github.com/Microsoft/hcsshim/internal/log"
 | 
				
			||||||
	"github.com/Microsoft/hcsshim/internal/logfields"
 | 
					 | 
				
			||||||
	"github.com/sirupsen/logrus"
 | 
					 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
var (
 | 
					var (
 | 
				
			||||||
| 
						 | 
					@ -117,17 +117,11 @@ func (ev *ErrorEvent) String() string {
 | 
				
			||||||
	return evs
 | 
						return evs
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func processHcsResult(resultp *uint16) []ErrorEvent {
 | 
					func processHcsResult(ctx context.Context, resultJSON string) []ErrorEvent {
 | 
				
			||||||
	if resultp != nil {
 | 
						if resultJSON != "" {
 | 
				
			||||||
		resultj := interop.ConvertAndFreeCoTaskMemString(resultp)
 | 
					 | 
				
			||||||
		logrus.WithField(logfields.JSON, resultj).
 | 
					 | 
				
			||||||
			Debug("HCS Result")
 | 
					 | 
				
			||||||
		result := &hcsResult{}
 | 
							result := &hcsResult{}
 | 
				
			||||||
		if err := json.Unmarshal([]byte(resultj), result); err != nil {
 | 
							if err := json.Unmarshal([]byte(resultJSON), result); err != nil {
 | 
				
			||||||
			logrus.WithFields(logrus.Fields{
 | 
								log.G(ctx).WithError(err).Warning("Could not unmarshal HCS result")
 | 
				
			||||||
				logfields.JSON:  resultj,
 | 
					 | 
				
			||||||
				logrus.ErrorKey: err,
 | 
					 | 
				
			||||||
			}).Warning("Could not unmarshal HCS result")
 | 
					 | 
				
			||||||
			return nil
 | 
								return nil
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
		return result.ErrorEvents
 | 
							return result.ErrorEvents
 | 
				
			||||||
| 
						 | 
					@ -141,6 +135,8 @@ type HcsError struct {
 | 
				
			||||||
	Events []ErrorEvent
 | 
						Events []ErrorEvent
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					var _ net.Error = &HcsError{}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func (e *HcsError) Error() string {
 | 
					func (e *HcsError) Error() string {
 | 
				
			||||||
	s := e.Op + ": " + e.Err.Error()
 | 
						s := e.Op + ": " + e.Err.Error()
 | 
				
			||||||
	for _, ev := range e.Events {
 | 
						for _, ev := range e.Events {
 | 
				
			||||||
| 
						 | 
					@ -149,6 +145,16 @@ func (e *HcsError) Error() string {
 | 
				
			||||||
	return s
 | 
						return s
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (e *HcsError) Temporary() bool {
 | 
				
			||||||
 | 
						err, ok := e.Err.(net.Error)
 | 
				
			||||||
 | 
						return ok && err.Temporary()
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (e *HcsError) Timeout() bool {
 | 
				
			||||||
 | 
						err, ok := e.Err.(net.Error)
 | 
				
			||||||
 | 
						return ok && err.Timeout()
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// ProcessError is an error encountered in HCS during an operation on a Process object
 | 
					// ProcessError is an error encountered in HCS during an operation on a Process object
 | 
				
			||||||
type ProcessError struct {
 | 
					type ProcessError struct {
 | 
				
			||||||
	SystemID string
 | 
						SystemID string
 | 
				
			||||||
| 
						 | 
					@ -158,6 +164,8 @@ type ProcessError struct {
 | 
				
			||||||
	Events   []ErrorEvent
 | 
						Events   []ErrorEvent
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					var _ net.Error = &ProcessError{}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// SystemError is an error encountered in HCS during an operation on a Container object
 | 
					// SystemError is an error encountered in HCS during an operation on a Container object
 | 
				
			||||||
type SystemError struct {
 | 
					type SystemError struct {
 | 
				
			||||||
	ID     string
 | 
						ID     string
 | 
				
			||||||
| 
						 | 
					@ -167,6 +175,8 @@ type SystemError struct {
 | 
				
			||||||
	Events []ErrorEvent
 | 
						Events []ErrorEvent
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					var _ net.Error = &SystemError{}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func (e *SystemError) Error() string {
 | 
					func (e *SystemError) Error() string {
 | 
				
			||||||
	s := e.Op + " " + e.ID + ": " + e.Err.Error()
 | 
						s := e.Op + " " + e.ID + ": " + e.Err.Error()
 | 
				
			||||||
	for _, ev := range e.Events {
 | 
						for _, ev := range e.Events {
 | 
				
			||||||
| 
						 | 
					@ -178,6 +188,16 @@ func (e *SystemError) Error() string {
 | 
				
			||||||
	return s
 | 
						return s
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (e *SystemError) Temporary() bool {
 | 
				
			||||||
 | 
						err, ok := e.Err.(net.Error)
 | 
				
			||||||
 | 
						return ok && err.Temporary()
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (e *SystemError) Timeout() bool {
 | 
				
			||||||
 | 
						err, ok := e.Err.(net.Error)
 | 
				
			||||||
 | 
						return ok && err.Timeout()
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func makeSystemError(system *System, op string, extra string, err error, events []ErrorEvent) error {
 | 
					func makeSystemError(system *System, op string, extra string, err error, events []ErrorEvent) error {
 | 
				
			||||||
	// Don't double wrap errors
 | 
						// Don't double wrap errors
 | 
				
			||||||
	if _, ok := err.(*SystemError); ok {
 | 
						if _, ok := err.(*SystemError); ok {
 | 
				
			||||||
| 
						 | 
					@ -200,6 +220,16 @@ func (e *ProcessError) Error() string {
 | 
				
			||||||
	return s
 | 
						return s
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (e *ProcessError) Temporary() bool {
 | 
				
			||||||
 | 
						err, ok := e.Err.(net.Error)
 | 
				
			||||||
 | 
						return ok && err.Temporary()
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (e *ProcessError) Timeout() bool {
 | 
				
			||||||
 | 
						err, ok := e.Err.(net.Error)
 | 
				
			||||||
 | 
						return ok && err.Timeout()
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func makeProcessError(process *Process, op string, err error, events []ErrorEvent) error {
 | 
					func makeProcessError(process *Process, op string, err error, events []ErrorEvent) error {
 | 
				
			||||||
	// Don't double wrap errors
 | 
						// Don't double wrap errors
 | 
				
			||||||
	if _, ok := err.(*ProcessError); ok {
 | 
						if _, ok := err.(*ProcessError); ok {
 | 
				
			||||||
| 
						 | 
					@ -242,6 +272,9 @@ func IsPending(err error) bool {
 | 
				
			||||||
// IsTimeout returns a boolean indicating whether the error is caused by
 | 
					// IsTimeout returns a boolean indicating whether the error is caused by
 | 
				
			||||||
// a timeout waiting for the operation to complete.
 | 
					// a timeout waiting for the operation to complete.
 | 
				
			||||||
func IsTimeout(err error) bool {
 | 
					func IsTimeout(err error) bool {
 | 
				
			||||||
 | 
						if err, ok := err.(net.Error); ok && err.Timeout() {
 | 
				
			||||||
 | 
							return true
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
	err = getInnerError(err)
 | 
						err = getInnerError(err)
 | 
				
			||||||
	return err == ErrTimeout
 | 
						return err == ErrTimeout
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					@ -292,3 +325,12 @@ func getInnerError(err error) error {
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	return err
 | 
						return err
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func getOperationLogResult(err error) (string, error) {
 | 
				
			||||||
 | 
						switch err {
 | 
				
			||||||
 | 
						case nil:
 | 
				
			||||||
 | 
							return "Success", nil
 | 
				
			||||||
 | 
						default:
 | 
				
			||||||
 | 
							return "Error", err
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
							
								
								
									
										48
									
								
								vendor/github.com/Microsoft/hcsshim/internal/hcs/hcs.go
									
										
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										48
									
								
								vendor/github.com/Microsoft/hcsshim/internal/hcs/hcs.go
									
										
									
										generated
									
									
										vendored
									
									
								
							| 
						 | 
					@ -1,48 +0,0 @@
 | 
				
			||||||
// Shim for the Host Compute Service (HCS) to manage Windows Server
 | 
					 | 
				
			||||||
// containers and Hyper-V containers.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
package hcs
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
import (
 | 
					 | 
				
			||||||
	"syscall"
 | 
					 | 
				
			||||||
)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
//go:generate go run ../../mksyscall_windows.go -output zsyscall_windows.go hcs.go
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
//sys hcsEnumerateComputeSystems(query string, computeSystems **uint16, result **uint16) (hr error) = vmcompute.HcsEnumerateComputeSystems?
 | 
					 | 
				
			||||||
//sys hcsCreateComputeSystem(id string, configuration string, identity syscall.Handle, computeSystem *hcsSystem, result **uint16) (hr error) = vmcompute.HcsCreateComputeSystem?
 | 
					 | 
				
			||||||
//sys hcsOpenComputeSystem(id string, computeSystem *hcsSystem, result **uint16) (hr error) = vmcompute.HcsOpenComputeSystem?
 | 
					 | 
				
			||||||
//sys hcsCloseComputeSystem(computeSystem hcsSystem) (hr error) = vmcompute.HcsCloseComputeSystem?
 | 
					 | 
				
			||||||
//sys hcsStartComputeSystem(computeSystem hcsSystem, options string, result **uint16) (hr error) = vmcompute.HcsStartComputeSystem?
 | 
					 | 
				
			||||||
//sys hcsShutdownComputeSystem(computeSystem hcsSystem, options string, result **uint16) (hr error) = vmcompute.HcsShutdownComputeSystem?
 | 
					 | 
				
			||||||
//sys hcsTerminateComputeSystem(computeSystem hcsSystem, options string, result **uint16) (hr error) = vmcompute.HcsTerminateComputeSystem?
 | 
					 | 
				
			||||||
//sys hcsPauseComputeSystem(computeSystem hcsSystem, options string, result **uint16) (hr error) = vmcompute.HcsPauseComputeSystem?
 | 
					 | 
				
			||||||
//sys hcsResumeComputeSystem(computeSystem hcsSystem, options string, result **uint16) (hr error) = vmcompute.HcsResumeComputeSystem?
 | 
					 | 
				
			||||||
//sys hcsGetComputeSystemProperties(computeSystem hcsSystem, propertyQuery string, properties **uint16, result **uint16) (hr error) = vmcompute.HcsGetComputeSystemProperties?
 | 
					 | 
				
			||||||
//sys hcsModifyComputeSystem(computeSystem hcsSystem, configuration string, result **uint16) (hr error) = vmcompute.HcsModifyComputeSystem?
 | 
					 | 
				
			||||||
//sys hcsRegisterComputeSystemCallback(computeSystem hcsSystem, callback uintptr, context uintptr, callbackHandle *hcsCallback) (hr error) = vmcompute.HcsRegisterComputeSystemCallback?
 | 
					 | 
				
			||||||
//sys hcsUnregisterComputeSystemCallback(callbackHandle hcsCallback) (hr error) = vmcompute.HcsUnregisterComputeSystemCallback?
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
//sys hcsCreateProcess(computeSystem hcsSystem, processParameters string, processInformation *hcsProcessInformation, process *hcsProcess, result **uint16) (hr error) = vmcompute.HcsCreateProcess?
 | 
					 | 
				
			||||||
//sys hcsOpenProcess(computeSystem hcsSystem, pid uint32, process *hcsProcess, result **uint16) (hr error) = vmcompute.HcsOpenProcess?
 | 
					 | 
				
			||||||
//sys hcsCloseProcess(process hcsProcess) (hr error) = vmcompute.HcsCloseProcess?
 | 
					 | 
				
			||||||
//sys hcsTerminateProcess(process hcsProcess, result **uint16) (hr error) = vmcompute.HcsTerminateProcess?
 | 
					 | 
				
			||||||
//sys hcsSignalProcess(process hcsProcess, options string, result **uint16) (hr error) = vmcompute.HcsSignalProcess?
 | 
					 | 
				
			||||||
//sys hcsGetProcessInfo(process hcsProcess, processInformation *hcsProcessInformation, result **uint16) (hr error) = vmcompute.HcsGetProcessInfo?
 | 
					 | 
				
			||||||
//sys hcsGetProcessProperties(process hcsProcess, processProperties **uint16, result **uint16) (hr error) = vmcompute.HcsGetProcessProperties?
 | 
					 | 
				
			||||||
//sys hcsModifyProcess(process hcsProcess, settings string, result **uint16) (hr error) = vmcompute.HcsModifyProcess?
 | 
					 | 
				
			||||||
//sys hcsGetServiceProperties(propertyQuery string, properties **uint16, result **uint16) (hr error) = vmcompute.HcsGetServiceProperties?
 | 
					 | 
				
			||||||
//sys hcsRegisterProcessCallback(process hcsProcess, callback uintptr, context uintptr, callbackHandle *hcsCallback) (hr error) = vmcompute.HcsRegisterProcessCallback?
 | 
					 | 
				
			||||||
//sys hcsUnregisterProcessCallback(callbackHandle hcsCallback) (hr error) = vmcompute.HcsUnregisterProcessCallback?
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
type hcsSystem syscall.Handle
 | 
					 | 
				
			||||||
type hcsProcess syscall.Handle
 | 
					 | 
				
			||||||
type hcsCallback syscall.Handle
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
type hcsProcessInformation struct {
 | 
					 | 
				
			||||||
	ProcessId uint32
 | 
					 | 
				
			||||||
	Reserved  uint32
 | 
					 | 
				
			||||||
	StdInput  syscall.Handle
 | 
					 | 
				
			||||||
	StdOutput syscall.Handle
 | 
					 | 
				
			||||||
	StdError  syscall.Handle
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
							
								
								
									
										20
									
								
								vendor/github.com/Microsoft/hcsshim/internal/hcs/log.go
									
										
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										20
									
								
								vendor/github.com/Microsoft/hcsshim/internal/hcs/log.go
									
										
									
										generated
									
									
										vendored
									
									
								
							| 
						 | 
					@ -1,20 +0,0 @@
 | 
				
			||||||
package hcs
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
import "github.com/sirupsen/logrus"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
func logOperationBegin(ctx logrus.Fields, msg string) {
 | 
					 | 
				
			||||||
	logrus.WithFields(ctx).Debug(msg)
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
func logOperationEnd(ctx logrus.Fields, msg string, err error) {
 | 
					 | 
				
			||||||
	// Copy the log and fields first.
 | 
					 | 
				
			||||||
	log := logrus.WithFields(ctx)
 | 
					 | 
				
			||||||
	if err == nil {
 | 
					 | 
				
			||||||
		log.Debug(msg)
 | 
					 | 
				
			||||||
	} else {
 | 
					 | 
				
			||||||
		// Edit only the copied field data to avoid race conditions on the
 | 
					 | 
				
			||||||
		// write.
 | 
					 | 
				
			||||||
		log.Data[logrus.ErrorKey] = err
 | 
					 | 
				
			||||||
		log.Error(msg)
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
							
								
								
									
										421
									
								
								vendor/github.com/Microsoft/hcsshim/internal/hcs/process.go
									
										
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										421
									
								
								vendor/github.com/Microsoft/hcsshim/internal/hcs/process.go
									
										
									
										generated
									
									
										vendored
									
									
								
							| 
						 | 
					@ -1,52 +1,47 @@
 | 
				
			||||||
package hcs
 | 
					package hcs
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import (
 | 
					import (
 | 
				
			||||||
 | 
						"context"
 | 
				
			||||||
	"encoding/json"
 | 
						"encoding/json"
 | 
				
			||||||
	"io"
 | 
						"io"
 | 
				
			||||||
	"sync"
 | 
						"sync"
 | 
				
			||||||
	"syscall"
 | 
						"syscall"
 | 
				
			||||||
	"time"
 | 
						"time"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	"github.com/Microsoft/hcsshim/internal/interop"
 | 
						"github.com/Microsoft/hcsshim/internal/log"
 | 
				
			||||||
	"github.com/Microsoft/hcsshim/internal/logfields"
 | 
						"github.com/Microsoft/hcsshim/internal/oc"
 | 
				
			||||||
	"github.com/sirupsen/logrus"
 | 
						"github.com/Microsoft/hcsshim/internal/vmcompute"
 | 
				
			||||||
 | 
						"go.opencensus.io/trace"
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// ContainerError is an error encountered in HCS
 | 
					// ContainerError is an error encountered in HCS
 | 
				
			||||||
type Process struct {
 | 
					type Process struct {
 | 
				
			||||||
	handleLock     sync.RWMutex
 | 
						handleLock     sync.RWMutex
 | 
				
			||||||
	handle         hcsProcess
 | 
						handle         vmcompute.HcsProcess
 | 
				
			||||||
	processID      int
 | 
						processID      int
 | 
				
			||||||
	system         *System
 | 
						system         *System
 | 
				
			||||||
	cachedPipes    *cachedPipes
 | 
						hasCachedStdio bool
 | 
				
			||||||
 | 
						stdioLock      sync.Mutex
 | 
				
			||||||
 | 
						stdin          io.WriteCloser
 | 
				
			||||||
 | 
						stdout         io.ReadCloser
 | 
				
			||||||
 | 
						stderr         io.ReadCloser
 | 
				
			||||||
	callbackNumber uintptr
 | 
						callbackNumber uintptr
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	logctx logrus.Fields
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	closedWaitOnce sync.Once
 | 
						closedWaitOnce sync.Once
 | 
				
			||||||
	waitBlock      chan struct{}
 | 
						waitBlock      chan struct{}
 | 
				
			||||||
 | 
						exitCode       int
 | 
				
			||||||
	waitError      error
 | 
						waitError      error
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func newProcess(process hcsProcess, processID int, computeSystem *System) *Process {
 | 
					func newProcess(process vmcompute.HcsProcess, processID int, computeSystem *System) *Process {
 | 
				
			||||||
	return &Process{
 | 
						return &Process{
 | 
				
			||||||
		handle:    process,
 | 
							handle:    process,
 | 
				
			||||||
		processID: processID,
 | 
							processID: processID,
 | 
				
			||||||
		system:    computeSystem,
 | 
							system:    computeSystem,
 | 
				
			||||||
		logctx: logrus.Fields{
 | 
					 | 
				
			||||||
			logfields.ContainerID: computeSystem.ID(),
 | 
					 | 
				
			||||||
			logfields.ProcessID:   processID,
 | 
					 | 
				
			||||||
		},
 | 
					 | 
				
			||||||
		waitBlock: make(chan struct{}),
 | 
							waitBlock: make(chan struct{}),
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
type cachedPipes struct {
 | 
					 | 
				
			||||||
	stdIn  syscall.Handle
 | 
					 | 
				
			||||||
	stdOut syscall.Handle
 | 
					 | 
				
			||||||
	stdErr syscall.Handle
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
type processModifyRequest struct {
 | 
					type processModifyRequest struct {
 | 
				
			||||||
	Operation   string
 | 
						Operation   string
 | 
				
			||||||
	ConsoleSize *consoleSize `json:",omitempty"`
 | 
						ConsoleSize *consoleSize `json:",omitempty"`
 | 
				
			||||||
| 
						 | 
					@ -62,7 +57,7 @@ type closeHandle struct {
 | 
				
			||||||
	Handle string
 | 
						Handle string
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
type ProcessStatus struct {
 | 
					type processStatus struct {
 | 
				
			||||||
	ProcessID      uint32
 | 
						ProcessID      uint32
 | 
				
			||||||
	Exited         bool
 | 
						Exited         bool
 | 
				
			||||||
	ExitCode       uint32
 | 
						ExitCode       uint32
 | 
				
			||||||
| 
						 | 
					@ -90,24 +85,32 @@ func (process *Process) SystemID() string {
 | 
				
			||||||
	return process.system.ID()
 | 
						return process.system.ID()
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func (process *Process) logOperationBegin(operation string) {
 | 
					func (process *Process) processSignalResult(ctx context.Context, err error) (bool, error) {
 | 
				
			||||||
	logOperationBegin(
 | 
						switch err {
 | 
				
			||||||
		process.logctx,
 | 
						case nil:
 | 
				
			||||||
		operation+" - Begin Operation")
 | 
							return true, nil
 | 
				
			||||||
}
 | 
						case ErrVmcomputeOperationInvalidState, ErrComputeSystemDoesNotExist, ErrElementNotFound:
 | 
				
			||||||
 | 
							select {
 | 
				
			||||||
func (process *Process) logOperationEnd(operation string, err error) {
 | 
							case <-process.waitBlock:
 | 
				
			||||||
	var result string
 | 
								// The process exit notification has already arrived.
 | 
				
			||||||
	if err == nil {
 | 
							default:
 | 
				
			||||||
		result = "Success"
 | 
								// The process should be gone, but we have not received the notification.
 | 
				
			||||||
	} else {
 | 
								// After a second, force unblock the process wait to work around a possible
 | 
				
			||||||
		result = "Error"
 | 
								// deadlock in the HCS.
 | 
				
			||||||
 | 
								go func() {
 | 
				
			||||||
 | 
									time.Sleep(time.Second)
 | 
				
			||||||
 | 
									process.closedWaitOnce.Do(func() {
 | 
				
			||||||
 | 
										log.G(ctx).WithError(err).Warn("force unblocking process waits")
 | 
				
			||||||
 | 
										process.exitCode = -1
 | 
				
			||||||
 | 
										process.waitError = err
 | 
				
			||||||
 | 
										close(process.waitBlock)
 | 
				
			||||||
 | 
									})
 | 
				
			||||||
 | 
								}()
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							return false, nil
 | 
				
			||||||
 | 
						default:
 | 
				
			||||||
 | 
							return false, err
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					 | 
				
			||||||
	logOperationEnd(
 | 
					 | 
				
			||||||
		process.logctx,
 | 
					 | 
				
			||||||
		operation+" - End Operation - "+result,
 | 
					 | 
				
			||||||
		err)
 | 
					 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// Signal signals the process with `options`.
 | 
					// Signal signals the process with `options`.
 | 
				
			||||||
| 
						 | 
					@ -115,115 +118,120 @@ func (process *Process) logOperationEnd(operation string, err error) {
 | 
				
			||||||
// For LCOW `guestrequest.SignalProcessOptionsLCOW`.
 | 
					// For LCOW `guestrequest.SignalProcessOptionsLCOW`.
 | 
				
			||||||
//
 | 
					//
 | 
				
			||||||
// For WCOW `guestrequest.SignalProcessOptionsWCOW`.
 | 
					// For WCOW `guestrequest.SignalProcessOptionsWCOW`.
 | 
				
			||||||
func (process *Process) Signal(options interface{}) (err error) {
 | 
					func (process *Process) Signal(ctx context.Context, options interface{}) (bool, error) {
 | 
				
			||||||
	process.handleLock.RLock()
 | 
						process.handleLock.RLock()
 | 
				
			||||||
	defer process.handleLock.RUnlock()
 | 
						defer process.handleLock.RUnlock()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	operation := "hcsshim::Process::Signal"
 | 
						operation := "hcsshim::Process::Signal"
 | 
				
			||||||
	process.logOperationBegin(operation)
 | 
					 | 
				
			||||||
	defer func() { process.logOperationEnd(operation, err) }()
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if process.handle == 0 {
 | 
						if process.handle == 0 {
 | 
				
			||||||
		return makeProcessError(process, operation, ErrAlreadyClosed, nil)
 | 
							return false, makeProcessError(process, operation, ErrAlreadyClosed, nil)
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	optionsb, err := json.Marshal(options)
 | 
						optionsb, err := json.Marshal(options)
 | 
				
			||||||
	if err != nil {
 | 
						if err != nil {
 | 
				
			||||||
		return err
 | 
							return false, err
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	optionsStr := string(optionsb)
 | 
						resultJSON, err := vmcompute.HcsSignalProcess(ctx, process.handle, string(optionsb))
 | 
				
			||||||
 | 
						events := processHcsResult(ctx, resultJSON)
 | 
				
			||||||
	var resultp *uint16
 | 
						delivered, err := process.processSignalResult(ctx, err)
 | 
				
			||||||
	syscallWatcher(process.logctx, func() {
 | 
					 | 
				
			||||||
		err = hcsSignalProcess(process.handle, optionsStr, &resultp)
 | 
					 | 
				
			||||||
	})
 | 
					 | 
				
			||||||
	events := processHcsResult(resultp)
 | 
					 | 
				
			||||||
	if err != nil {
 | 
						if err != nil {
 | 
				
			||||||
		return makeProcessError(process, operation, err, events)
 | 
							err = makeProcessError(process, operation, err, events)
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
						return delivered, err
 | 
				
			||||||
	return nil
 | 
					 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// Kill signals the process to terminate but does not wait for it to finish terminating.
 | 
					// Kill signals the process to terminate but does not wait for it to finish terminating.
 | 
				
			||||||
func (process *Process) Kill() (err error) {
 | 
					func (process *Process) Kill(ctx context.Context) (bool, error) {
 | 
				
			||||||
	process.handleLock.RLock()
 | 
						process.handleLock.RLock()
 | 
				
			||||||
	defer process.handleLock.RUnlock()
 | 
						defer process.handleLock.RUnlock()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	operation := "hcsshim::Process::Kill"
 | 
						operation := "hcsshim::Process::Kill"
 | 
				
			||||||
	process.logOperationBegin(operation)
 | 
					 | 
				
			||||||
	defer func() { process.logOperationEnd(operation, err) }()
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if process.handle == 0 {
 | 
						if process.handle == 0 {
 | 
				
			||||||
		return makeProcessError(process, operation, ErrAlreadyClosed, nil)
 | 
							return false, makeProcessError(process, operation, ErrAlreadyClosed, nil)
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	var resultp *uint16
 | 
						resultJSON, err := vmcompute.HcsTerminateProcess(ctx, process.handle)
 | 
				
			||||||
	syscallWatcher(process.logctx, func() {
 | 
						events := processHcsResult(ctx, resultJSON)
 | 
				
			||||||
		err = hcsTerminateProcess(process.handle, &resultp)
 | 
						delivered, err := process.processSignalResult(ctx, err)
 | 
				
			||||||
	})
 | 
					 | 
				
			||||||
	events := processHcsResult(resultp)
 | 
					 | 
				
			||||||
	if err != nil {
 | 
						if err != nil {
 | 
				
			||||||
		return makeProcessError(process, operation, err, events)
 | 
							err = makeProcessError(process, operation, err, events)
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
						return delivered, err
 | 
				
			||||||
	return nil
 | 
					 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// waitBackground waits for the process exit notification. Once received sets
 | 
					// waitBackground waits for the process exit notification. Once received sets
 | 
				
			||||||
// `process.waitError` (if any) and unblocks all `Wait` and `WaitTimeout` calls.
 | 
					// `process.waitError` (if any) and unblocks all `Wait` calls.
 | 
				
			||||||
//
 | 
					//
 | 
				
			||||||
// This MUST be called exactly once per `process.handle` but `Wait` and
 | 
					// This MUST be called exactly once per `process.handle` but `Wait` is safe to
 | 
				
			||||||
// `WaitTimeout` are safe to call multiple times.
 | 
					// call multiple times.
 | 
				
			||||||
func (process *Process) waitBackground() {
 | 
					func (process *Process) waitBackground() {
 | 
				
			||||||
	process.waitError = waitForNotification(process.callbackNumber, hcsNotificationProcessExited, nil)
 | 
						operation := "hcsshim::Process::waitBackground"
 | 
				
			||||||
 | 
						ctx, span := trace.StartSpan(context.Background(), operation)
 | 
				
			||||||
 | 
						defer span.End()
 | 
				
			||||||
 | 
						span.AddAttributes(
 | 
				
			||||||
 | 
							trace.StringAttribute("cid", process.SystemID()),
 | 
				
			||||||
 | 
							trace.Int64Attribute("pid", int64(process.processID)))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						var (
 | 
				
			||||||
 | 
							err      error
 | 
				
			||||||
 | 
							exitCode = -1
 | 
				
			||||||
 | 
						)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						err = waitForNotification(ctx, process.callbackNumber, hcsNotificationProcessExited, nil)
 | 
				
			||||||
 | 
						if err != nil {
 | 
				
			||||||
 | 
							err = makeProcessError(process, operation, err, nil)
 | 
				
			||||||
 | 
							log.G(ctx).WithError(err).Error("failed wait")
 | 
				
			||||||
 | 
						} else {
 | 
				
			||||||
 | 
							process.handleLock.RLock()
 | 
				
			||||||
 | 
							defer process.handleLock.RUnlock()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							// Make sure we didnt race with Close() here
 | 
				
			||||||
 | 
							if process.handle != 0 {
 | 
				
			||||||
 | 
								propertiesJSON, resultJSON, err := vmcompute.HcsGetProcessProperties(ctx, process.handle)
 | 
				
			||||||
 | 
								events := processHcsResult(ctx, resultJSON)
 | 
				
			||||||
 | 
								if err != nil {
 | 
				
			||||||
 | 
									err = makeProcessError(process, operation, err, events)
 | 
				
			||||||
 | 
								} else {
 | 
				
			||||||
 | 
									properties := &processStatus{}
 | 
				
			||||||
 | 
									err = json.Unmarshal([]byte(propertiesJSON), properties)
 | 
				
			||||||
 | 
									if err != nil {
 | 
				
			||||||
 | 
										err = makeProcessError(process, operation, err, nil)
 | 
				
			||||||
 | 
									} else {
 | 
				
			||||||
 | 
										if properties.LastWaitResult != 0 {
 | 
				
			||||||
 | 
											log.G(ctx).WithField("wait-result", properties.LastWaitResult).Warning("non-zero last wait result")
 | 
				
			||||||
 | 
										} else {
 | 
				
			||||||
 | 
											exitCode = int(properties.ExitCode)
 | 
				
			||||||
 | 
										}
 | 
				
			||||||
 | 
									}
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						log.G(ctx).WithField("exitCode", exitCode).Debug("process exited")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	process.closedWaitOnce.Do(func() {
 | 
						process.closedWaitOnce.Do(func() {
 | 
				
			||||||
 | 
							process.exitCode = exitCode
 | 
				
			||||||
 | 
							process.waitError = err
 | 
				
			||||||
		close(process.waitBlock)
 | 
							close(process.waitBlock)
 | 
				
			||||||
	})
 | 
						})
 | 
				
			||||||
 | 
						oc.SetSpanStatus(span, err)
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// Wait waits for the process to exit. If the process has already exited returns
 | 
					// Wait waits for the process to exit. If the process has already exited returns
 | 
				
			||||||
// the pervious error (if any).
 | 
					// the pervious error (if any).
 | 
				
			||||||
func (process *Process) Wait() (err error) {
 | 
					func (process *Process) Wait() error {
 | 
				
			||||||
	operation := "hcsshim::Process::Wait"
 | 
					 | 
				
			||||||
	process.logOperationBegin(operation)
 | 
					 | 
				
			||||||
	defer func() { process.logOperationEnd(operation, err) }()
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	<-process.waitBlock
 | 
						<-process.waitBlock
 | 
				
			||||||
	if process.waitError != nil {
 | 
						return process.waitError
 | 
				
			||||||
		return makeProcessError(process, operation, process.waitError, nil)
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
	return nil
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
// WaitTimeout waits for the process to exit or the duration to elapse. If the
 | 
					 | 
				
			||||||
// process has already exited returns the pervious error (if any). If a timeout
 | 
					 | 
				
			||||||
// occurs returns `ErrTimeout`.
 | 
					 | 
				
			||||||
func (process *Process) WaitTimeout(timeout time.Duration) (err error) {
 | 
					 | 
				
			||||||
	operation := "hcssshim::Process::WaitTimeout"
 | 
					 | 
				
			||||||
	process.logOperationBegin(operation)
 | 
					 | 
				
			||||||
	defer func() { process.logOperationEnd(operation, err) }()
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	select {
 | 
					 | 
				
			||||||
	case <-process.waitBlock:
 | 
					 | 
				
			||||||
		if process.waitError != nil {
 | 
					 | 
				
			||||||
			return makeProcessError(process, operation, process.waitError, nil)
 | 
					 | 
				
			||||||
		}
 | 
					 | 
				
			||||||
		return nil
 | 
					 | 
				
			||||||
	case <-time.After(timeout):
 | 
					 | 
				
			||||||
		return makeProcessError(process, operation, ErrTimeout, nil)
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// ResizeConsole resizes the console of the process.
 | 
					// ResizeConsole resizes the console of the process.
 | 
				
			||||||
func (process *Process) ResizeConsole(width, height uint16) (err error) {
 | 
					func (process *Process) ResizeConsole(ctx context.Context, width, height uint16) error {
 | 
				
			||||||
	process.handleLock.RLock()
 | 
						process.handleLock.RLock()
 | 
				
			||||||
	defer process.handleLock.RUnlock()
 | 
						defer process.handleLock.RUnlock()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	operation := "hcsshim::Process::ResizeConsole"
 | 
						operation := "hcsshim::Process::ResizeConsole"
 | 
				
			||||||
	process.logOperationBegin(operation)
 | 
					 | 
				
			||||||
	defer func() { process.logOperationEnd(operation, err) }()
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if process.handle == 0 {
 | 
						if process.handle == 0 {
 | 
				
			||||||
		return makeProcessError(process, operation, ErrAlreadyClosed, nil)
 | 
							return makeProcessError(process, operation, ErrAlreadyClosed, nil)
 | 
				
			||||||
| 
						 | 
					@ -242,11 +250,8 @@ func (process *Process) ResizeConsole(width, height uint16) (err error) {
 | 
				
			||||||
		return err
 | 
							return err
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	modifyRequestStr := string(modifyRequestb)
 | 
						resultJSON, err := vmcompute.HcsModifyProcess(ctx, process.handle, string(modifyRequestb))
 | 
				
			||||||
 | 
						events := processHcsResult(ctx, resultJSON)
 | 
				
			||||||
	var resultp *uint16
 | 
					 | 
				
			||||||
	err = hcsModifyProcess(process.handle, modifyRequestStr, &resultp)
 | 
					 | 
				
			||||||
	events := processHcsResult(resultp)
 | 
					 | 
				
			||||||
	if err != nil {
 | 
						if err != nil {
 | 
				
			||||||
		return makeProcessError(process, operation, err, events)
 | 
							return makeProcessError(process, operation, err, events)
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
| 
						 | 
					@ -254,109 +259,55 @@ func (process *Process) ResizeConsole(width, height uint16) (err error) {
 | 
				
			||||||
	return nil
 | 
						return nil
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func (process *Process) Properties() (_ *ProcessStatus, err error) {
 | 
					 | 
				
			||||||
	process.handleLock.RLock()
 | 
					 | 
				
			||||||
	defer process.handleLock.RUnlock()
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	operation := "hcsshim::Process::Properties"
 | 
					 | 
				
			||||||
	process.logOperationBegin(operation)
 | 
					 | 
				
			||||||
	defer func() { process.logOperationEnd(operation, err) }()
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	if process.handle == 0 {
 | 
					 | 
				
			||||||
		return nil, makeProcessError(process, operation, ErrAlreadyClosed, nil)
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	var (
 | 
					 | 
				
			||||||
		resultp     *uint16
 | 
					 | 
				
			||||||
		propertiesp *uint16
 | 
					 | 
				
			||||||
	)
 | 
					 | 
				
			||||||
	syscallWatcher(process.logctx, func() {
 | 
					 | 
				
			||||||
		err = hcsGetProcessProperties(process.handle, &propertiesp, &resultp)
 | 
					 | 
				
			||||||
	})
 | 
					 | 
				
			||||||
	events := processHcsResult(resultp)
 | 
					 | 
				
			||||||
	if err != nil {
 | 
					 | 
				
			||||||
		return nil, makeProcessError(process, operation, err, events)
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	if propertiesp == nil {
 | 
					 | 
				
			||||||
		return nil, ErrUnexpectedValue
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
	propertiesRaw := interop.ConvertAndFreeCoTaskMemBytes(propertiesp)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	properties := &ProcessStatus{}
 | 
					 | 
				
			||||||
	if err := json.Unmarshal(propertiesRaw, properties); err != nil {
 | 
					 | 
				
			||||||
		return nil, makeProcessError(process, operation, err, nil)
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	return properties, nil
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
// ExitCode returns the exit code of the process. The process must have
 | 
					// ExitCode returns the exit code of the process. The process must have
 | 
				
			||||||
// already terminated.
 | 
					// already terminated.
 | 
				
			||||||
func (process *Process) ExitCode() (_ int, err error) {
 | 
					func (process *Process) ExitCode() (int, error) {
 | 
				
			||||||
	operation := "hcsshim::Process::ExitCode"
 | 
						select {
 | 
				
			||||||
	process.logOperationBegin(operation)
 | 
						case <-process.waitBlock:
 | 
				
			||||||
	defer func() { process.logOperationEnd(operation, err) }()
 | 
							if process.waitError != nil {
 | 
				
			||||||
 | 
								return -1, process.waitError
 | 
				
			||||||
	properties, err := process.Properties()
 | 
							}
 | 
				
			||||||
	if err != nil {
 | 
							return process.exitCode, nil
 | 
				
			||||||
		return -1, makeProcessError(process, operation, err, nil)
 | 
						default:
 | 
				
			||||||
 | 
							return -1, makeProcessError(process, "hcsshim::Process::ExitCode", ErrInvalidProcessState, nil)
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					 | 
				
			||||||
	if properties.Exited == false {
 | 
					 | 
				
			||||||
		return -1, makeProcessError(process, operation, ErrInvalidProcessState, nil)
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	if properties.LastWaitResult != 0 {
 | 
					 | 
				
			||||||
		logrus.WithFields(logrus.Fields{
 | 
					 | 
				
			||||||
			logfields.ContainerID: process.SystemID(),
 | 
					 | 
				
			||||||
			logfields.ProcessID:   process.processID,
 | 
					 | 
				
			||||||
			"wait-result":         properties.LastWaitResult,
 | 
					 | 
				
			||||||
		}).Warn("hcsshim::Process::ExitCode - Non-zero last wait result")
 | 
					 | 
				
			||||||
		return -1, nil
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	return int(properties.ExitCode), nil
 | 
					 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// Stdio returns the stdin, stdout, and stderr pipes, respectively. Closing
 | 
					// StdioLegacy returns the stdin, stdout, and stderr pipes, respectively. Closing
 | 
				
			||||||
// these pipes does not close the underlying pipes; it should be possible to
 | 
					// these pipes does not close the underlying pipes. Once returned, these pipes
 | 
				
			||||||
// call this multiple times to get multiple interfaces.
 | 
					// are the responsibility of the caller to close.
 | 
				
			||||||
func (process *Process) Stdio() (_ io.WriteCloser, _ io.ReadCloser, _ io.ReadCloser, err error) {
 | 
					func (process *Process) StdioLegacy() (_ io.WriteCloser, _ io.ReadCloser, _ io.ReadCloser, err error) {
 | 
				
			||||||
 | 
						operation := "hcsshim::Process::StdioLegacy"
 | 
				
			||||||
 | 
						ctx, span := trace.StartSpan(context.Background(), operation)
 | 
				
			||||||
 | 
						defer span.End()
 | 
				
			||||||
 | 
						defer func() { oc.SetSpanStatus(span, err) }()
 | 
				
			||||||
 | 
						span.AddAttributes(
 | 
				
			||||||
 | 
							trace.StringAttribute("cid", process.SystemID()),
 | 
				
			||||||
 | 
							trace.Int64Attribute("pid", int64(process.processID)))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	process.handleLock.RLock()
 | 
						process.handleLock.RLock()
 | 
				
			||||||
	defer process.handleLock.RUnlock()
 | 
						defer process.handleLock.RUnlock()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	operation := "hcsshim::Process::Stdio"
 | 
					 | 
				
			||||||
	process.logOperationBegin(operation)
 | 
					 | 
				
			||||||
	defer func() { process.logOperationEnd(operation, err) }()
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	if process.handle == 0 {
 | 
						if process.handle == 0 {
 | 
				
			||||||
		return nil, nil, nil, makeProcessError(process, operation, ErrAlreadyClosed, nil)
 | 
							return nil, nil, nil, makeProcessError(process, operation, ErrAlreadyClosed, nil)
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	var stdIn, stdOut, stdErr syscall.Handle
 | 
						process.stdioLock.Lock()
 | 
				
			||||||
 | 
						defer process.stdioLock.Unlock()
 | 
				
			||||||
	if process.cachedPipes == nil {
 | 
						if process.hasCachedStdio {
 | 
				
			||||||
		var (
 | 
							stdin, stdout, stderr := process.stdin, process.stdout, process.stderr
 | 
				
			||||||
			processInfo hcsProcessInformation
 | 
							process.stdin, process.stdout, process.stderr = nil, nil, nil
 | 
				
			||||||
			resultp     *uint16
 | 
							process.hasCachedStdio = false
 | 
				
			||||||
		)
 | 
							return stdin, stdout, stderr, nil
 | 
				
			||||||
		err = hcsGetProcessInfo(process.handle, &processInfo, &resultp)
 | 
					 | 
				
			||||||
		events := processHcsResult(resultp)
 | 
					 | 
				
			||||||
		if err != nil {
 | 
					 | 
				
			||||||
			return nil, nil, nil, makeProcessError(process, operation, err, events)
 | 
					 | 
				
			||||||
		}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
		stdIn, stdOut, stdErr = processInfo.StdInput, processInfo.StdOutput, processInfo.StdError
 | 
					 | 
				
			||||||
	} else {
 | 
					 | 
				
			||||||
		// Use cached pipes
 | 
					 | 
				
			||||||
		stdIn, stdOut, stdErr = process.cachedPipes.stdIn, process.cachedPipes.stdOut, process.cachedPipes.stdErr
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
		// Invalidate the cache
 | 
					 | 
				
			||||||
		process.cachedPipes = nil
 | 
					 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	pipes, err := makeOpenFiles([]syscall.Handle{stdIn, stdOut, stdErr})
 | 
						processInfo, resultJSON, err := vmcompute.HcsGetProcessInfo(ctx, process.handle)
 | 
				
			||||||
 | 
						events := processHcsResult(ctx, resultJSON)
 | 
				
			||||||
 | 
						if err != nil {
 | 
				
			||||||
 | 
							return nil, nil, nil, makeProcessError(process, operation, err, events)
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						pipes, err := makeOpenFiles([]syscall.Handle{processInfo.StdInput, processInfo.StdOutput, processInfo.StdError})
 | 
				
			||||||
	if err != nil {
 | 
						if err != nil {
 | 
				
			||||||
		return nil, nil, nil, makeProcessError(process, operation, err, nil)
 | 
							return nil, nil, nil, makeProcessError(process, operation, err, nil)
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
| 
						 | 
					@ -364,15 +315,21 @@ func (process *Process) Stdio() (_ io.WriteCloser, _ io.ReadCloser, _ io.ReadClo
 | 
				
			||||||
	return pipes[0], pipes[1], pipes[2], nil
 | 
						return pipes[0], pipes[1], pipes[2], nil
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// Stdio returns the stdin, stdout, and stderr pipes, respectively.
 | 
				
			||||||
 | 
					// To close them, close the process handle.
 | 
				
			||||||
 | 
					func (process *Process) Stdio() (stdin io.Writer, stdout, stderr io.Reader) {
 | 
				
			||||||
 | 
						process.stdioLock.Lock()
 | 
				
			||||||
 | 
						defer process.stdioLock.Unlock()
 | 
				
			||||||
 | 
						return process.stdin, process.stdout, process.stderr
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// CloseStdin closes the write side of the stdin pipe so that the process is
 | 
					// 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.
 | 
					// notified on the read side that there is no more data in stdin.
 | 
				
			||||||
func (process *Process) CloseStdin() (err error) {
 | 
					func (process *Process) CloseStdin(ctx context.Context) error {
 | 
				
			||||||
	process.handleLock.RLock()
 | 
						process.handleLock.RLock()
 | 
				
			||||||
	defer process.handleLock.RUnlock()
 | 
						defer process.handleLock.RUnlock()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	operation := "hcsshim::Process::CloseStdin"
 | 
						operation := "hcsshim::Process::CloseStdin"
 | 
				
			||||||
	process.logOperationBegin(operation)
 | 
					 | 
				
			||||||
	defer func() { process.logOperationEnd(operation, err) }()
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if process.handle == 0 {
 | 
						if process.handle == 0 {
 | 
				
			||||||
		return makeProcessError(process, operation, ErrAlreadyClosed, nil)
 | 
							return makeProcessError(process, operation, ErrAlreadyClosed, nil)
 | 
				
			||||||
| 
						 | 
					@ -390,51 +347,76 @@ func (process *Process) CloseStdin() (err error) {
 | 
				
			||||||
		return err
 | 
							return err
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	modifyRequestStr := string(modifyRequestb)
 | 
						resultJSON, err := vmcompute.HcsModifyProcess(ctx, process.handle, string(modifyRequestb))
 | 
				
			||||||
 | 
						events := processHcsResult(ctx, resultJSON)
 | 
				
			||||||
	var resultp *uint16
 | 
					 | 
				
			||||||
	err = hcsModifyProcess(process.handle, modifyRequestStr, &resultp)
 | 
					 | 
				
			||||||
	events := processHcsResult(resultp)
 | 
					 | 
				
			||||||
	if err != nil {
 | 
						if err != nil {
 | 
				
			||||||
		return makeProcessError(process, operation, err, events)
 | 
							return makeProcessError(process, operation, err, events)
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						process.stdioLock.Lock()
 | 
				
			||||||
 | 
						if process.stdin != nil {
 | 
				
			||||||
 | 
							process.stdin.Close()
 | 
				
			||||||
 | 
							process.stdin = nil
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						process.stdioLock.Unlock()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	return nil
 | 
						return nil
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// Close cleans up any state associated with the process but does not kill
 | 
					// Close cleans up any state associated with the process but does not kill
 | 
				
			||||||
// or wait on it.
 | 
					// or wait on it.
 | 
				
			||||||
func (process *Process) Close() (err error) {
 | 
					func (process *Process) Close() (err error) {
 | 
				
			||||||
 | 
						operation := "hcsshim::Process::Close"
 | 
				
			||||||
 | 
						ctx, span := trace.StartSpan(context.Background(), operation)
 | 
				
			||||||
 | 
						defer span.End()
 | 
				
			||||||
 | 
						defer func() { oc.SetSpanStatus(span, err) }()
 | 
				
			||||||
 | 
						span.AddAttributes(
 | 
				
			||||||
 | 
							trace.StringAttribute("cid", process.SystemID()),
 | 
				
			||||||
 | 
							trace.Int64Attribute("pid", int64(process.processID)))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	process.handleLock.Lock()
 | 
						process.handleLock.Lock()
 | 
				
			||||||
	defer process.handleLock.Unlock()
 | 
						defer process.handleLock.Unlock()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	operation := "hcsshim::Process::Close"
 | 
					 | 
				
			||||||
	process.logOperationBegin(operation)
 | 
					 | 
				
			||||||
	defer func() { process.logOperationEnd(operation, err) }()
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	// Don't double free this
 | 
						// Don't double free this
 | 
				
			||||||
	if process.handle == 0 {
 | 
						if process.handle == 0 {
 | 
				
			||||||
		return nil
 | 
							return nil
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if err = process.unregisterCallback(); err != nil {
 | 
						process.stdioLock.Lock()
 | 
				
			||||||
 | 
						if process.stdin != nil {
 | 
				
			||||||
 | 
							process.stdin.Close()
 | 
				
			||||||
 | 
							process.stdin = nil
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						if process.stdout != nil {
 | 
				
			||||||
 | 
							process.stdout.Close()
 | 
				
			||||||
 | 
							process.stdout = nil
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						if process.stderr != nil {
 | 
				
			||||||
 | 
							process.stderr.Close()
 | 
				
			||||||
 | 
							process.stderr = nil
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						process.stdioLock.Unlock()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						if err = process.unregisterCallback(ctx); err != nil {
 | 
				
			||||||
		return makeProcessError(process, operation, err, nil)
 | 
							return makeProcessError(process, operation, err, nil)
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if err = hcsCloseProcess(process.handle); err != nil {
 | 
						if err = vmcompute.HcsCloseProcess(ctx, process.handle); err != nil {
 | 
				
			||||||
		return makeProcessError(process, operation, err, nil)
 | 
							return makeProcessError(process, operation, err, nil)
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	process.handle = 0
 | 
						process.handle = 0
 | 
				
			||||||
	process.closedWaitOnce.Do(func() {
 | 
						process.closedWaitOnce.Do(func() {
 | 
				
			||||||
 | 
							process.exitCode = -1
 | 
				
			||||||
 | 
							process.waitError = ErrAlreadyClosed
 | 
				
			||||||
		close(process.waitBlock)
 | 
							close(process.waitBlock)
 | 
				
			||||||
	})
 | 
						})
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	return nil
 | 
						return nil
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func (process *Process) registerCallback() error {
 | 
					func (process *Process) registerCallback(ctx context.Context) error {
 | 
				
			||||||
	context := ¬ifcationWatcherContext{
 | 
						callbackContext := ¬ifcationWatcherContext{
 | 
				
			||||||
		channels:  newProcessChannels(),
 | 
							channels:  newProcessChannels(),
 | 
				
			||||||
		systemID:  process.SystemID(),
 | 
							systemID:  process.SystemID(),
 | 
				
			||||||
		processID: process.processID,
 | 
							processID: process.processID,
 | 
				
			||||||
| 
						 | 
					@ -443,45 +425,44 @@ func (process *Process) registerCallback() error {
 | 
				
			||||||
	callbackMapLock.Lock()
 | 
						callbackMapLock.Lock()
 | 
				
			||||||
	callbackNumber := nextCallback
 | 
						callbackNumber := nextCallback
 | 
				
			||||||
	nextCallback++
 | 
						nextCallback++
 | 
				
			||||||
	callbackMap[callbackNumber] = context
 | 
						callbackMap[callbackNumber] = callbackContext
 | 
				
			||||||
	callbackMapLock.Unlock()
 | 
						callbackMapLock.Unlock()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	var callbackHandle hcsCallback
 | 
						callbackHandle, err := vmcompute.HcsRegisterProcessCallback(ctx, process.handle, notificationWatcherCallback, callbackNumber)
 | 
				
			||||||
	err := hcsRegisterProcessCallback(process.handle, notificationWatcherCallback, callbackNumber, &callbackHandle)
 | 
					 | 
				
			||||||
	if err != nil {
 | 
						if err != nil {
 | 
				
			||||||
		return err
 | 
							return err
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	context.handle = callbackHandle
 | 
						callbackContext.handle = callbackHandle
 | 
				
			||||||
	process.callbackNumber = callbackNumber
 | 
						process.callbackNumber = callbackNumber
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	return nil
 | 
						return nil
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func (process *Process) unregisterCallback() error {
 | 
					func (process *Process) unregisterCallback(ctx context.Context) error {
 | 
				
			||||||
	callbackNumber := process.callbackNumber
 | 
						callbackNumber := process.callbackNumber
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	callbackMapLock.RLock()
 | 
						callbackMapLock.RLock()
 | 
				
			||||||
	context := callbackMap[callbackNumber]
 | 
						callbackContext := callbackMap[callbackNumber]
 | 
				
			||||||
	callbackMapLock.RUnlock()
 | 
						callbackMapLock.RUnlock()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if context == nil {
 | 
						if callbackContext == nil {
 | 
				
			||||||
		return nil
 | 
							return nil
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	handle := context.handle
 | 
						handle := callbackContext.handle
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if handle == 0 {
 | 
						if handle == 0 {
 | 
				
			||||||
		return nil
 | 
							return nil
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// hcsUnregisterProcessCallback has its own syncronization
 | 
						// vmcompute.HcsUnregisterProcessCallback has its own synchronization to
 | 
				
			||||||
	// to wait for all callbacks to complete. We must NOT hold the callbackMapLock.
 | 
						// wait for all callbacks to complete. We must NOT hold the callbackMapLock.
 | 
				
			||||||
	err := hcsUnregisterProcessCallback(handle)
 | 
						err := vmcompute.HcsUnregisterProcessCallback(ctx, handle)
 | 
				
			||||||
	if err != nil {
 | 
						if err != nil {
 | 
				
			||||||
		return err
 | 
							return err
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	closeChannels(context.channels)
 | 
						closeChannels(callbackContext.channels)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	callbackMapLock.Lock()
 | 
						callbackMapLock.Lock()
 | 
				
			||||||
	delete(callbackMap, callbackNumber)
 | 
						delete(callbackMap, callbackNumber)
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
							
								
								
									
										619
									
								
								vendor/github.com/Microsoft/hcsshim/internal/hcs/system.go
									
										
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										619
									
								
								vendor/github.com/Microsoft/hcsshim/internal/hcs/system.go
									
										
									
										generated
									
									
										vendored
									
									
								
							| 
						 | 
					@ -1,18 +1,24 @@
 | 
				
			||||||
package hcs
 | 
					package hcs
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import (
 | 
					import (
 | 
				
			||||||
 | 
						"context"
 | 
				
			||||||
	"encoding/json"
 | 
						"encoding/json"
 | 
				
			||||||
 | 
						"errors"
 | 
				
			||||||
	"os"
 | 
						"os"
 | 
				
			||||||
	"strconv"
 | 
						"strconv"
 | 
				
			||||||
 | 
						"strings"
 | 
				
			||||||
	"sync"
 | 
						"sync"
 | 
				
			||||||
	"syscall"
 | 
						"syscall"
 | 
				
			||||||
	"time"
 | 
						"time"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	"github.com/Microsoft/hcsshim/internal/interop"
 | 
						"github.com/Microsoft/hcsshim/internal/cow"
 | 
				
			||||||
	"github.com/Microsoft/hcsshim/internal/logfields"
 | 
						"github.com/Microsoft/hcsshim/internal/log"
 | 
				
			||||||
 | 
						"github.com/Microsoft/hcsshim/internal/oc"
 | 
				
			||||||
	"github.com/Microsoft/hcsshim/internal/schema1"
 | 
						"github.com/Microsoft/hcsshim/internal/schema1"
 | 
				
			||||||
 | 
						hcsschema "github.com/Microsoft/hcsshim/internal/schema2"
 | 
				
			||||||
	"github.com/Microsoft/hcsshim/internal/timeout"
 | 
						"github.com/Microsoft/hcsshim/internal/timeout"
 | 
				
			||||||
	"github.com/sirupsen/logrus"
 | 
						"github.com/Microsoft/hcsshim/internal/vmcompute"
 | 
				
			||||||
 | 
						"go.opencensus.io/trace"
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// currentContainerStarts is used to limit the number of concurrent container
 | 
					// currentContainerStarts is used to limit the number of concurrent container
 | 
				
			||||||
| 
						 | 
					@ -38,54 +44,37 @@ func init() {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
type System struct {
 | 
					type System struct {
 | 
				
			||||||
	handleLock     sync.RWMutex
 | 
						handleLock     sync.RWMutex
 | 
				
			||||||
	handle         hcsSystem
 | 
						handle         vmcompute.HcsSystem
 | 
				
			||||||
	id             string
 | 
						id             string
 | 
				
			||||||
	callbackNumber uintptr
 | 
						callbackNumber uintptr
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	logctx logrus.Fields
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	closedWaitOnce sync.Once
 | 
						closedWaitOnce sync.Once
 | 
				
			||||||
	waitBlock      chan struct{}
 | 
						waitBlock      chan struct{}
 | 
				
			||||||
	waitError      error
 | 
						waitError      error
 | 
				
			||||||
 | 
						exitError      error
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						os, typ string
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func newSystem(id string) *System {
 | 
					func newSystem(id string) *System {
 | 
				
			||||||
	return &System{
 | 
						return &System{
 | 
				
			||||||
		id: id,
 | 
							id:        id,
 | 
				
			||||||
		logctx: logrus.Fields{
 | 
					 | 
				
			||||||
			logfields.ContainerID: id,
 | 
					 | 
				
			||||||
		},
 | 
					 | 
				
			||||||
		waitBlock: make(chan struct{}),
 | 
							waitBlock: make(chan struct{}),
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func (computeSystem *System) logOperationBegin(operation string) {
 | 
					 | 
				
			||||||
	logOperationBegin(
 | 
					 | 
				
			||||||
		computeSystem.logctx,
 | 
					 | 
				
			||||||
		operation+" - Begin Operation")
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
func (computeSystem *System) logOperationEnd(operation string, err error) {
 | 
					 | 
				
			||||||
	var result string
 | 
					 | 
				
			||||||
	if err == nil {
 | 
					 | 
				
			||||||
		result = "Success"
 | 
					 | 
				
			||||||
	} else {
 | 
					 | 
				
			||||||
		result = "Error"
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	logOperationEnd(
 | 
					 | 
				
			||||||
		computeSystem.logctx,
 | 
					 | 
				
			||||||
		operation+" - End Operation - "+result,
 | 
					 | 
				
			||||||
		err)
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
// CreateComputeSystem creates a new compute system with the given configuration but does not start it.
 | 
					// CreateComputeSystem creates a new compute system with the given configuration but does not start it.
 | 
				
			||||||
func CreateComputeSystem(id string, hcsDocumentInterface interface{}) (_ *System, err error) {
 | 
					func CreateComputeSystem(ctx context.Context, id string, hcsDocumentInterface interface{}) (_ *System, err error) {
 | 
				
			||||||
	operation := "hcsshim::CreateComputeSystem"
 | 
						operation := "hcsshim::CreateComputeSystem"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						// hcsCreateComputeSystemContext is an async operation. Start the outer span
 | 
				
			||||||
 | 
						// here to measure the full create time.
 | 
				
			||||||
 | 
						ctx, span := trace.StartSpan(ctx, operation)
 | 
				
			||||||
 | 
						defer span.End()
 | 
				
			||||||
 | 
						defer func() { oc.SetSpanStatus(span, err) }()
 | 
				
			||||||
 | 
						span.AddAttributes(trace.StringAttribute("cid", id))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	computeSystem := newSystem(id)
 | 
						computeSystem := newSystem(id)
 | 
				
			||||||
	computeSystem.logOperationBegin(operation)
 | 
					 | 
				
			||||||
	defer func() { computeSystem.logOperationEnd(operation, err) }()
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
	hcsDocumentB, err := json.Marshal(hcsDocumentInterface)
 | 
						hcsDocumentB, err := json.Marshal(hcsDocumentInterface)
 | 
				
			||||||
	if err != nil {
 | 
						if err != nil {
 | 
				
			||||||
| 
						 | 
					@ -94,129 +83,114 @@ func CreateComputeSystem(id string, hcsDocumentInterface interface{}) (_ *System
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	hcsDocument := string(hcsDocumentB)
 | 
						hcsDocument := string(hcsDocumentB)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	logrus.WithFields(computeSystem.logctx).
 | 
					 | 
				
			||||||
		WithField(logfields.JSON, hcsDocument).
 | 
					 | 
				
			||||||
		Debug("HCS ComputeSystem Document")
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	var (
 | 
						var (
 | 
				
			||||||
		resultp     *uint16
 | 
					 | 
				
			||||||
		identity    syscall.Handle
 | 
							identity    syscall.Handle
 | 
				
			||||||
 | 
							resultJSON  string
 | 
				
			||||||
		createError error
 | 
							createError error
 | 
				
			||||||
	)
 | 
						)
 | 
				
			||||||
	syscallWatcher(computeSystem.logctx, func() {
 | 
						computeSystem.handle, resultJSON, createError = vmcompute.HcsCreateComputeSystem(ctx, id, hcsDocument, identity)
 | 
				
			||||||
		createError = hcsCreateComputeSystem(id, hcsDocument, identity, &computeSystem.handle, &resultp)
 | 
					 | 
				
			||||||
	})
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	if createError == nil || IsPending(createError) {
 | 
						if createError == nil || IsPending(createError) {
 | 
				
			||||||
		if err = computeSystem.registerCallback(); err != nil {
 | 
							defer func() {
 | 
				
			||||||
 | 
								if err != nil {
 | 
				
			||||||
 | 
									computeSystem.Close()
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
							}()
 | 
				
			||||||
 | 
							if err = computeSystem.registerCallback(ctx); err != nil {
 | 
				
			||||||
			// Terminate the compute system if it still exists. We're okay to
 | 
								// Terminate the compute system if it still exists. We're okay to
 | 
				
			||||||
			// ignore a failure here.
 | 
								// ignore a failure here.
 | 
				
			||||||
			computeSystem.Terminate()
 | 
								computeSystem.Terminate(ctx)
 | 
				
			||||||
			return nil, makeSystemError(computeSystem, operation, "", err, nil)
 | 
								return nil, makeSystemError(computeSystem, operation, "", err, nil)
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	events, err := processAsyncHcsResult(createError, resultp, computeSystem.callbackNumber, hcsNotificationSystemCreateCompleted, &timeout.SystemCreate)
 | 
						events, err := processAsyncHcsResult(ctx, createError, resultJSON, computeSystem.callbackNumber, hcsNotificationSystemCreateCompleted, &timeout.SystemCreate)
 | 
				
			||||||
	if err != nil {
 | 
						if err != nil {
 | 
				
			||||||
		if err == ErrTimeout {
 | 
							if err == ErrTimeout {
 | 
				
			||||||
			// Terminate the compute system if it still exists. We're okay to
 | 
								// Terminate the compute system if it still exists. We're okay to
 | 
				
			||||||
			// ignore a failure here.
 | 
								// ignore a failure here.
 | 
				
			||||||
			computeSystem.Terminate()
 | 
								computeSystem.Terminate(ctx)
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
		return nil, makeSystemError(computeSystem, operation, hcsDocument, err, events)
 | 
							return nil, makeSystemError(computeSystem, operation, hcsDocument, err, events)
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					 | 
				
			||||||
	go computeSystem.waitBackground()
 | 
						go computeSystem.waitBackground()
 | 
				
			||||||
 | 
						if err = computeSystem.getCachedProperties(ctx); err != nil {
 | 
				
			||||||
 | 
							return nil, err
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
	return computeSystem, nil
 | 
						return computeSystem, nil
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// OpenComputeSystem opens an existing compute system by ID.
 | 
					// OpenComputeSystem opens an existing compute system by ID.
 | 
				
			||||||
func OpenComputeSystem(id string) (_ *System, err error) {
 | 
					func OpenComputeSystem(ctx context.Context, id string) (*System, error) {
 | 
				
			||||||
	operation := "hcsshim::OpenComputeSystem"
 | 
						operation := "hcsshim::OpenComputeSystem"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	computeSystem := newSystem(id)
 | 
						computeSystem := newSystem(id)
 | 
				
			||||||
	computeSystem.logOperationBegin(operation)
 | 
						handle, resultJSON, err := vmcompute.HcsOpenComputeSystem(ctx, id)
 | 
				
			||||||
	defer func() {
 | 
						events := processHcsResult(ctx, resultJSON)
 | 
				
			||||||
		if IsNotExist(err) {
 | 
					 | 
				
			||||||
			computeSystem.logOperationEnd(operation, nil)
 | 
					 | 
				
			||||||
		} else {
 | 
					 | 
				
			||||||
			computeSystem.logOperationEnd(operation, err)
 | 
					 | 
				
			||||||
		}
 | 
					 | 
				
			||||||
	}()
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	var (
 | 
					 | 
				
			||||||
		handle  hcsSystem
 | 
					 | 
				
			||||||
		resultp *uint16
 | 
					 | 
				
			||||||
	)
 | 
					 | 
				
			||||||
	err = hcsOpenComputeSystem(id, &handle, &resultp)
 | 
					 | 
				
			||||||
	events := processHcsResult(resultp)
 | 
					 | 
				
			||||||
	if err != nil {
 | 
						if err != nil {
 | 
				
			||||||
		return nil, makeSystemError(computeSystem, operation, "", err, events)
 | 
							return nil, makeSystemError(computeSystem, operation, "", err, events)
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					 | 
				
			||||||
	computeSystem.handle = handle
 | 
						computeSystem.handle = handle
 | 
				
			||||||
 | 
						defer func() {
 | 
				
			||||||
	if err = computeSystem.registerCallback(); err != nil {
 | 
							if err != nil {
 | 
				
			||||||
 | 
								computeSystem.Close()
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
						}()
 | 
				
			||||||
 | 
						if err = computeSystem.registerCallback(ctx); err != nil {
 | 
				
			||||||
		return nil, makeSystemError(computeSystem, operation, "", err, nil)
 | 
							return nil, makeSystemError(computeSystem, operation, "", err, nil)
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	go computeSystem.waitBackground()
 | 
						go computeSystem.waitBackground()
 | 
				
			||||||
 | 
						if err = computeSystem.getCachedProperties(ctx); err != nil {
 | 
				
			||||||
 | 
							return nil, err
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
	return computeSystem, nil
 | 
						return computeSystem, nil
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (computeSystem *System) getCachedProperties(ctx context.Context) error {
 | 
				
			||||||
 | 
						props, err := computeSystem.Properties(ctx)
 | 
				
			||||||
 | 
						if err != nil {
 | 
				
			||||||
 | 
							return err
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						computeSystem.typ = strings.ToLower(props.SystemType)
 | 
				
			||||||
 | 
						computeSystem.os = strings.ToLower(props.RuntimeOSType)
 | 
				
			||||||
 | 
						if computeSystem.os == "" && computeSystem.typ == "container" {
 | 
				
			||||||
 | 
							// Pre-RS5 HCS did not return the OS, but it only supported containers
 | 
				
			||||||
 | 
							// that ran Windows.
 | 
				
			||||||
 | 
							computeSystem.os = "windows"
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						return nil
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// OS returns the operating system of the compute system, "linux" or "windows".
 | 
				
			||||||
 | 
					func (computeSystem *System) OS() string {
 | 
				
			||||||
 | 
						return computeSystem.os
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// IsOCI returns whether processes in the compute system should be created via
 | 
				
			||||||
 | 
					// OCI.
 | 
				
			||||||
 | 
					func (computeSystem *System) IsOCI() bool {
 | 
				
			||||||
 | 
						return computeSystem.os == "linux" && computeSystem.typ == "container"
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// GetComputeSystems gets a list of the compute systems on the system that match the query
 | 
					// GetComputeSystems gets a list of the compute systems on the system that match the query
 | 
				
			||||||
func GetComputeSystems(q schema1.ComputeSystemQuery) (_ []schema1.ContainerProperties, err error) {
 | 
					func GetComputeSystems(ctx context.Context, q schema1.ComputeSystemQuery) ([]schema1.ContainerProperties, error) {
 | 
				
			||||||
	operation := "hcsshim::GetComputeSystems"
 | 
						operation := "hcsshim::GetComputeSystems"
 | 
				
			||||||
	fields := logrus.Fields{}
 | 
					 | 
				
			||||||
	logOperationBegin(
 | 
					 | 
				
			||||||
		fields,
 | 
					 | 
				
			||||||
		operation+" - Begin Operation")
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	defer func() {
 | 
					 | 
				
			||||||
		var result string
 | 
					 | 
				
			||||||
		if err == nil {
 | 
					 | 
				
			||||||
			result = "Success"
 | 
					 | 
				
			||||||
		} else {
 | 
					 | 
				
			||||||
			result = "Error"
 | 
					 | 
				
			||||||
		}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
		logOperationEnd(
 | 
					 | 
				
			||||||
			fields,
 | 
					 | 
				
			||||||
			operation+" - End Operation - "+result,
 | 
					 | 
				
			||||||
			err)
 | 
					 | 
				
			||||||
	}()
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
	queryb, err := json.Marshal(q)
 | 
						queryb, err := json.Marshal(q)
 | 
				
			||||||
	if err != nil {
 | 
						if err != nil {
 | 
				
			||||||
		return nil, err
 | 
							return nil, err
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	query := string(queryb)
 | 
						computeSystemsJSON, resultJSON, err := vmcompute.HcsEnumerateComputeSystems(ctx, string(queryb))
 | 
				
			||||||
 | 
						events := processHcsResult(ctx, resultJSON)
 | 
				
			||||||
	logrus.WithFields(fields).
 | 
					 | 
				
			||||||
		WithField(logfields.JSON, query).
 | 
					 | 
				
			||||||
		Debug("HCS ComputeSystem Query")
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	var (
 | 
					 | 
				
			||||||
		resultp         *uint16
 | 
					 | 
				
			||||||
		computeSystemsp *uint16
 | 
					 | 
				
			||||||
	)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	syscallWatcher(fields, func() {
 | 
					 | 
				
			||||||
		err = hcsEnumerateComputeSystems(query, &computeSystemsp, &resultp)
 | 
					 | 
				
			||||||
	})
 | 
					 | 
				
			||||||
	events := processHcsResult(resultp)
 | 
					 | 
				
			||||||
	if err != nil {
 | 
						if err != nil {
 | 
				
			||||||
		return nil, &HcsError{Op: operation, Err: err, Events: events}
 | 
							return nil, &HcsError{Op: operation, Err: err, Events: events}
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if computeSystemsp == nil {
 | 
						if computeSystemsJSON == "" {
 | 
				
			||||||
		return nil, ErrUnexpectedValue
 | 
							return nil, ErrUnexpectedValue
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	computeSystemsRaw := interop.ConvertAndFreeCoTaskMemBytes(computeSystemsp)
 | 
					 | 
				
			||||||
	computeSystems := []schema1.ContainerProperties{}
 | 
						computeSystems := []schema1.ContainerProperties{}
 | 
				
			||||||
	if err = json.Unmarshal(computeSystemsRaw, &computeSystems); err != nil {
 | 
						if err = json.Unmarshal([]byte(computeSystemsJSON), &computeSystems); err != nil {
 | 
				
			||||||
		return nil, err
 | 
							return nil, err
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -224,16 +198,21 @@ func GetComputeSystems(q schema1.ComputeSystemQuery) (_ []schema1.ContainerPrope
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// Start synchronously starts the computeSystem.
 | 
					// Start synchronously starts the computeSystem.
 | 
				
			||||||
func (computeSystem *System) Start() (err error) {
 | 
					func (computeSystem *System) Start(ctx context.Context) (err error) {
 | 
				
			||||||
 | 
						operation := "hcsshim::System::Start"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						// hcsStartComputeSystemContext is an async operation. Start the outer span
 | 
				
			||||||
 | 
						// here to measure the full start time.
 | 
				
			||||||
 | 
						ctx, span := trace.StartSpan(ctx, operation)
 | 
				
			||||||
 | 
						defer span.End()
 | 
				
			||||||
 | 
						defer func() { oc.SetSpanStatus(span, err) }()
 | 
				
			||||||
 | 
						span.AddAttributes(trace.StringAttribute("cid", computeSystem.id))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	computeSystem.handleLock.RLock()
 | 
						computeSystem.handleLock.RLock()
 | 
				
			||||||
	defer computeSystem.handleLock.RUnlock()
 | 
						defer computeSystem.handleLock.RUnlock()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	operation := "hcsshim::ComputeSystem::Start"
 | 
					 | 
				
			||||||
	computeSystem.logOperationBegin(operation)
 | 
					 | 
				
			||||||
	defer func() { computeSystem.logOperationEnd(operation, err) }()
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	if computeSystem.handle == 0 {
 | 
						if computeSystem.handle == 0 {
 | 
				
			||||||
		return makeSystemError(computeSystem, "Start", "", ErrAlreadyClosed, nil)
 | 
							return makeSystemError(computeSystem, operation, "", ErrAlreadyClosed, nil)
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// This is a very simple backoff-retry loop to limit the number
 | 
						// This is a very simple backoff-retry loop to limit the number
 | 
				
			||||||
| 
						 | 
					@ -262,13 +241,10 @@ func (computeSystem *System) Start() (err error) {
 | 
				
			||||||
		}()
 | 
							}()
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	var resultp *uint16
 | 
						resultJSON, err := vmcompute.HcsStartComputeSystem(ctx, computeSystem.handle, "")
 | 
				
			||||||
	syscallWatcher(computeSystem.logctx, func() {
 | 
						events, err := processAsyncHcsResult(ctx, err, resultJSON, computeSystem.callbackNumber, hcsNotificationSystemStartCompleted, &timeout.SystemStart)
 | 
				
			||||||
		err = hcsStartComputeSystem(computeSystem.handle, "", &resultp)
 | 
					 | 
				
			||||||
	})
 | 
					 | 
				
			||||||
	events, err := processAsyncHcsResult(err, resultp, computeSystem.callbackNumber, hcsNotificationSystemStartCompleted, &timeout.SystemStart)
 | 
					 | 
				
			||||||
	if err != nil {
 | 
						if err != nil {
 | 
				
			||||||
		return makeSystemError(computeSystem, "Start", "", err, events)
 | 
							return makeSystemError(computeSystem, operation, "", err, events)
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	return nil
 | 
						return nil
 | 
				
			||||||
| 
						 | 
					@ -279,273 +255,257 @@ func (computeSystem *System) ID() string {
 | 
				
			||||||
	return computeSystem.id
 | 
						return computeSystem.id
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// Shutdown requests a compute system shutdown, if IsPending() on the error returned is true,
 | 
					// Shutdown requests a compute system shutdown.
 | 
				
			||||||
// it may not actually be shut down until Wait() succeeds.
 | 
					func (computeSystem *System) Shutdown(ctx context.Context) error {
 | 
				
			||||||
func (computeSystem *System) Shutdown() (err error) {
 | 
					 | 
				
			||||||
	computeSystem.handleLock.RLock()
 | 
						computeSystem.handleLock.RLock()
 | 
				
			||||||
	defer computeSystem.handleLock.RUnlock()
 | 
						defer computeSystem.handleLock.RUnlock()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	operation := "hcsshim::ComputeSystem::Shutdown"
 | 
						operation := "hcsshim::System::Shutdown"
 | 
				
			||||||
	computeSystem.logOperationBegin(operation)
 | 
					 | 
				
			||||||
	defer func() {
 | 
					 | 
				
			||||||
		if IsAlreadyClosed(err) || IsAlreadyStopped(err) || IsPending(err) {
 | 
					 | 
				
			||||||
			computeSystem.logOperationEnd(operation, nil)
 | 
					 | 
				
			||||||
		} else {
 | 
					 | 
				
			||||||
			computeSystem.logOperationEnd(operation, err)
 | 
					 | 
				
			||||||
		}
 | 
					 | 
				
			||||||
	}()
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if computeSystem.handle == 0 {
 | 
						if computeSystem.handle == 0 {
 | 
				
			||||||
		return makeSystemError(computeSystem, "Shutdown", "", ErrAlreadyClosed, nil)
 | 
							return nil
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	var resultp *uint16
 | 
						resultJSON, err := vmcompute.HcsShutdownComputeSystem(ctx, computeSystem.handle, "")
 | 
				
			||||||
	syscallWatcher(computeSystem.logctx, func() {
 | 
						events := processHcsResult(ctx, resultJSON)
 | 
				
			||||||
		err = hcsShutdownComputeSystem(computeSystem.handle, "", &resultp)
 | 
						switch err {
 | 
				
			||||||
	})
 | 
						case nil, ErrVmcomputeAlreadyStopped, ErrComputeSystemDoesNotExist, ErrVmcomputeOperationPending:
 | 
				
			||||||
	events := processHcsResult(resultp)
 | 
						default:
 | 
				
			||||||
	if err != nil {
 | 
							return makeSystemError(computeSystem, operation, "", err, events)
 | 
				
			||||||
		return makeSystemError(computeSystem, "Shutdown", "", err, events)
 | 
					 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					 | 
				
			||||||
	return nil
 | 
						return nil
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// Terminate requests a compute system terminate, if IsPending() on the error returned is true,
 | 
					// Terminate requests a compute system terminate.
 | 
				
			||||||
// it may not actually be shut down until Wait() succeeds.
 | 
					func (computeSystem *System) Terminate(ctx context.Context) error {
 | 
				
			||||||
func (computeSystem *System) Terminate() (err error) {
 | 
					 | 
				
			||||||
	computeSystem.handleLock.RLock()
 | 
						computeSystem.handleLock.RLock()
 | 
				
			||||||
	defer computeSystem.handleLock.RUnlock()
 | 
						defer computeSystem.handleLock.RUnlock()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	operation := "hcsshim::ComputeSystem::Terminate"
 | 
						operation := "hcsshim::System::Terminate"
 | 
				
			||||||
	computeSystem.logOperationBegin(operation)
 | 
					 | 
				
			||||||
	defer func() {
 | 
					 | 
				
			||||||
		if IsAlreadyClosed(err) || IsAlreadyStopped(err) || IsPending(err) {
 | 
					 | 
				
			||||||
			computeSystem.logOperationEnd(operation, nil)
 | 
					 | 
				
			||||||
		} else {
 | 
					 | 
				
			||||||
			computeSystem.logOperationEnd(operation, err)
 | 
					 | 
				
			||||||
		}
 | 
					 | 
				
			||||||
	}()
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if computeSystem.handle == 0 {
 | 
						if computeSystem.handle == 0 {
 | 
				
			||||||
		return makeSystemError(computeSystem, "Terminate", "", ErrAlreadyClosed, nil)
 | 
							return nil
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	var resultp *uint16
 | 
						resultJSON, err := vmcompute.HcsTerminateComputeSystem(ctx, computeSystem.handle, "")
 | 
				
			||||||
	syscallWatcher(computeSystem.logctx, func() {
 | 
						events := processHcsResult(ctx, resultJSON)
 | 
				
			||||||
		err = hcsTerminateComputeSystem(computeSystem.handle, "", &resultp)
 | 
						switch err {
 | 
				
			||||||
	})
 | 
						case nil, ErrVmcomputeAlreadyStopped, ErrComputeSystemDoesNotExist, ErrVmcomputeOperationPending:
 | 
				
			||||||
	events := processHcsResult(resultp)
 | 
						default:
 | 
				
			||||||
	if err != nil && err != ErrVmcomputeAlreadyStopped {
 | 
							return makeSystemError(computeSystem, operation, "", err, events)
 | 
				
			||||||
		return makeSystemError(computeSystem, "Terminate", "", err, events)
 | 
					 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					 | 
				
			||||||
	return nil
 | 
						return nil
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// waitBackground waits for the compute system exit notification. Once received
 | 
					// waitBackground waits for the compute system exit notification. Once received
 | 
				
			||||||
// sets `computeSystem.waitError` (if any) and unblocks all `Wait`,
 | 
					// sets `computeSystem.waitError` (if any) and unblocks all `Wait` calls.
 | 
				
			||||||
// `WaitExpectedError`, and `WaitTimeout` calls.
 | 
					 | 
				
			||||||
//
 | 
					//
 | 
				
			||||||
// This MUST be called exactly once per `computeSystem.handle` but `Wait`,
 | 
					// This MUST be called exactly once per `computeSystem.handle` but `Wait` is
 | 
				
			||||||
// `WaitExpectedError`, and `WaitTimeout` are safe to call multiple times.
 | 
					// safe to call multiple times.
 | 
				
			||||||
func (computeSystem *System) waitBackground() {
 | 
					func (computeSystem *System) waitBackground() {
 | 
				
			||||||
	computeSystem.waitError = waitForNotification(computeSystem.callbackNumber, hcsNotificationSystemExited, nil)
 | 
						operation := "hcsshim::System::waitBackground"
 | 
				
			||||||
 | 
						ctx, span := trace.StartSpan(context.Background(), operation)
 | 
				
			||||||
 | 
						defer span.End()
 | 
				
			||||||
 | 
						span.AddAttributes(trace.StringAttribute("cid", computeSystem.id))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						err := waitForNotification(ctx, computeSystem.callbackNumber, hcsNotificationSystemExited, nil)
 | 
				
			||||||
 | 
						switch err {
 | 
				
			||||||
 | 
						case nil:
 | 
				
			||||||
 | 
							log.G(ctx).Debug("system exited")
 | 
				
			||||||
 | 
						case ErrVmcomputeUnexpectedExit:
 | 
				
			||||||
 | 
							log.G(ctx).Debug("unexpected system exit")
 | 
				
			||||||
 | 
							computeSystem.exitError = makeSystemError(computeSystem, operation, "", err, nil)
 | 
				
			||||||
 | 
							err = nil
 | 
				
			||||||
 | 
						default:
 | 
				
			||||||
 | 
							err = makeSystemError(computeSystem, operation, "", err, nil)
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
	computeSystem.closedWaitOnce.Do(func() {
 | 
						computeSystem.closedWaitOnce.Do(func() {
 | 
				
			||||||
 | 
							computeSystem.waitError = err
 | 
				
			||||||
		close(computeSystem.waitBlock)
 | 
							close(computeSystem.waitBlock)
 | 
				
			||||||
	})
 | 
						})
 | 
				
			||||||
 | 
						oc.SetSpanStatus(span, err)
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// Wait synchronously waits for the compute system to shutdown or terminate. If
 | 
					// Wait synchronously waits for the compute system to shutdown or terminate. If
 | 
				
			||||||
// the compute system has already exited returns the previous error (if any).
 | 
					// the compute system has already exited returns the previous error (if any).
 | 
				
			||||||
func (computeSystem *System) Wait() (err error) {
 | 
					func (computeSystem *System) Wait() error {
 | 
				
			||||||
	operation := "hcsshim::ComputeSystem::Wait"
 | 
					 | 
				
			||||||
	computeSystem.logOperationBegin(operation)
 | 
					 | 
				
			||||||
	defer func() { computeSystem.logOperationEnd(operation, err) }()
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	<-computeSystem.waitBlock
 | 
						<-computeSystem.waitBlock
 | 
				
			||||||
	if computeSystem.waitError != nil {
 | 
						return computeSystem.waitError
 | 
				
			||||||
		return makeSystemError(computeSystem, "Wait", "", computeSystem.waitError, nil)
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	return nil
 | 
					 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// WaitExpectedError synchronously waits for the compute system to shutdown or
 | 
					// ExitError returns an error describing the reason the compute system terminated.
 | 
				
			||||||
// terminate and returns the error (if any) as long as it does not match
 | 
					func (computeSystem *System) ExitError() error {
 | 
				
			||||||
// `expected`. If the compute system has already exited returns the previous
 | 
					 | 
				
			||||||
// error (if any) as long as it does not match `expected`.
 | 
					 | 
				
			||||||
func (computeSystem *System) WaitExpectedError(expected error) (err error) {
 | 
					 | 
				
			||||||
	operation := "hcsshim::ComputeSystem::WaitExpectedError"
 | 
					 | 
				
			||||||
	computeSystem.logOperationBegin(operation)
 | 
					 | 
				
			||||||
	defer func() { computeSystem.logOperationEnd(operation, err) }()
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	<-computeSystem.waitBlock
 | 
					 | 
				
			||||||
	if computeSystem.waitError != nil && getInnerError(computeSystem.waitError) != expected {
 | 
					 | 
				
			||||||
		return makeSystemError(computeSystem, "WaitExpectedError", "", computeSystem.waitError, nil)
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
	return nil
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
// WaitTimeout synchronously waits for the compute system to terminate or the
 | 
					 | 
				
			||||||
// duration to elapse. If the timeout expires, `IsTimeout(err) == true`. If
 | 
					 | 
				
			||||||
// the compute system has already exited returns the previous error (if any).
 | 
					 | 
				
			||||||
func (computeSystem *System) WaitTimeout(timeout time.Duration) (err error) {
 | 
					 | 
				
			||||||
	operation := "hcsshim::ComputeSystem::WaitTimeout"
 | 
					 | 
				
			||||||
	computeSystem.logOperationBegin(operation)
 | 
					 | 
				
			||||||
	defer func() { computeSystem.logOperationEnd(operation, err) }()
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	select {
 | 
						select {
 | 
				
			||||||
	case <-computeSystem.waitBlock:
 | 
						case <-computeSystem.waitBlock:
 | 
				
			||||||
		if computeSystem.waitError != nil {
 | 
							if computeSystem.waitError != nil {
 | 
				
			||||||
			return makeSystemError(computeSystem, "WaitTimeout", "", computeSystem.waitError, nil)
 | 
								return computeSystem.waitError
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
		return nil
 | 
							return computeSystem.exitError
 | 
				
			||||||
	case <-time.After(timeout):
 | 
						default:
 | 
				
			||||||
		return makeSystemError(computeSystem, "WaitTimeout", "", ErrTimeout, nil)
 | 
							return errors.New("container not exited")
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func (computeSystem *System) Properties(types ...schema1.PropertyType) (_ *schema1.ContainerProperties, err error) {
 | 
					// Properties returns the requested container properties targeting a V1 schema container.
 | 
				
			||||||
 | 
					func (computeSystem *System) Properties(ctx context.Context, types ...schema1.PropertyType) (*schema1.ContainerProperties, error) {
 | 
				
			||||||
	computeSystem.handleLock.RLock()
 | 
						computeSystem.handleLock.RLock()
 | 
				
			||||||
	defer computeSystem.handleLock.RUnlock()
 | 
						defer computeSystem.handleLock.RUnlock()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	operation := "hcsshim::ComputeSystem::Properties"
 | 
						operation := "hcsshim::System::Properties"
 | 
				
			||||||
	computeSystem.logOperationBegin(operation)
 | 
					 | 
				
			||||||
	defer func() { computeSystem.logOperationEnd(operation, err) }()
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
	queryBytes, err := json.Marshal(schema1.PropertyQuery{PropertyTypes: types})
 | 
						queryBytes, err := json.Marshal(schema1.PropertyQuery{PropertyTypes: types})
 | 
				
			||||||
	if err != nil {
 | 
						if err != nil {
 | 
				
			||||||
		return nil, makeSystemError(computeSystem, "Properties", "", err, nil)
 | 
							return nil, makeSystemError(computeSystem, operation, "", err, nil)
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	queryString := string(queryBytes)
 | 
						propertiesJSON, resultJSON, err := vmcompute.HcsGetComputeSystemProperties(ctx, computeSystem.handle, string(queryBytes))
 | 
				
			||||||
	logrus.WithFields(computeSystem.logctx).
 | 
						events := processHcsResult(ctx, resultJSON)
 | 
				
			||||||
		WithField(logfields.JSON, queryString).
 | 
					 | 
				
			||||||
		Debug("HCS ComputeSystem Properties Query")
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	var resultp, propertiesp *uint16
 | 
					 | 
				
			||||||
	syscallWatcher(computeSystem.logctx, func() {
 | 
					 | 
				
			||||||
		err = hcsGetComputeSystemProperties(computeSystem.handle, string(queryString), &propertiesp, &resultp)
 | 
					 | 
				
			||||||
	})
 | 
					 | 
				
			||||||
	events := processHcsResult(resultp)
 | 
					 | 
				
			||||||
	if err != nil {
 | 
						if err != nil {
 | 
				
			||||||
		return nil, makeSystemError(computeSystem, "Properties", "", err, events)
 | 
							return nil, makeSystemError(computeSystem, operation, "", err, events)
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if propertiesp == nil {
 | 
						if propertiesJSON == "" {
 | 
				
			||||||
		return nil, ErrUnexpectedValue
 | 
							return nil, ErrUnexpectedValue
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	propertiesRaw := interop.ConvertAndFreeCoTaskMemBytes(propertiesp)
 | 
					 | 
				
			||||||
	properties := &schema1.ContainerProperties{}
 | 
						properties := &schema1.ContainerProperties{}
 | 
				
			||||||
	if err := json.Unmarshal(propertiesRaw, properties); err != nil {
 | 
						if err := json.Unmarshal([]byte(propertiesJSON), properties); err != nil {
 | 
				
			||||||
		return nil, makeSystemError(computeSystem, "Properties", "", err, nil)
 | 
							return nil, makeSystemError(computeSystem, operation, "", err, nil)
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						return properties, nil
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// PropertiesV2 returns the requested container properties targeting a V2 schema container.
 | 
				
			||||||
 | 
					func (computeSystem *System) PropertiesV2(ctx context.Context, types ...hcsschema.PropertyType) (*hcsschema.Properties, error) {
 | 
				
			||||||
 | 
						computeSystem.handleLock.RLock()
 | 
				
			||||||
 | 
						defer computeSystem.handleLock.RUnlock()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						operation := "hcsshim::System::PropertiesV2"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						queryBytes, err := json.Marshal(hcsschema.PropertyQuery{PropertyTypes: types})
 | 
				
			||||||
 | 
						if err != nil {
 | 
				
			||||||
 | 
							return nil, makeSystemError(computeSystem, operation, "", err, nil)
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						propertiesJSON, resultJSON, err := vmcompute.HcsGetComputeSystemProperties(ctx, computeSystem.handle, string(queryBytes))
 | 
				
			||||||
 | 
						events := processHcsResult(ctx, resultJSON)
 | 
				
			||||||
 | 
						if err != nil {
 | 
				
			||||||
 | 
							return nil, makeSystemError(computeSystem, operation, "", err, events)
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						if propertiesJSON == "" {
 | 
				
			||||||
 | 
							return nil, ErrUnexpectedValue
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						properties := &hcsschema.Properties{}
 | 
				
			||||||
 | 
						if err := json.Unmarshal([]byte(propertiesJSON), properties); err != nil {
 | 
				
			||||||
 | 
							return nil, makeSystemError(computeSystem, operation, "", err, nil)
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	return properties, nil
 | 
						return properties, nil
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// Pause pauses the execution of the computeSystem. This feature is not enabled in TP5.
 | 
					// Pause pauses the execution of the computeSystem. This feature is not enabled in TP5.
 | 
				
			||||||
func (computeSystem *System) Pause() (err error) {
 | 
					func (computeSystem *System) Pause(ctx context.Context) (err error) {
 | 
				
			||||||
 | 
						operation := "hcsshim::System::Pause"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						// hcsPauseComputeSystemContext is an async peration. Start the outer span
 | 
				
			||||||
 | 
						// here to measure the full pause time.
 | 
				
			||||||
 | 
						ctx, span := trace.StartSpan(ctx, operation)
 | 
				
			||||||
 | 
						defer span.End()
 | 
				
			||||||
 | 
						defer func() { oc.SetSpanStatus(span, err) }()
 | 
				
			||||||
 | 
						span.AddAttributes(trace.StringAttribute("cid", computeSystem.id))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	computeSystem.handleLock.RLock()
 | 
						computeSystem.handleLock.RLock()
 | 
				
			||||||
	defer computeSystem.handleLock.RUnlock()
 | 
						defer computeSystem.handleLock.RUnlock()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	operation := "hcsshim::ComputeSystem::Pause"
 | 
					 | 
				
			||||||
	computeSystem.logOperationBegin(operation)
 | 
					 | 
				
			||||||
	defer func() { computeSystem.logOperationEnd(operation, err) }()
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	if computeSystem.handle == 0 {
 | 
						if computeSystem.handle == 0 {
 | 
				
			||||||
		return makeSystemError(computeSystem, "Pause", "", ErrAlreadyClosed, nil)
 | 
							return makeSystemError(computeSystem, operation, "", ErrAlreadyClosed, nil)
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	var resultp *uint16
 | 
						resultJSON, err := vmcompute.HcsPauseComputeSystem(ctx, computeSystem.handle, "")
 | 
				
			||||||
	syscallWatcher(computeSystem.logctx, func() {
 | 
						events, err := processAsyncHcsResult(ctx, err, resultJSON, computeSystem.callbackNumber, hcsNotificationSystemPauseCompleted, &timeout.SystemPause)
 | 
				
			||||||
		err = hcsPauseComputeSystem(computeSystem.handle, "", &resultp)
 | 
					 | 
				
			||||||
	})
 | 
					 | 
				
			||||||
	events, err := processAsyncHcsResult(err, resultp, computeSystem.callbackNumber, hcsNotificationSystemPauseCompleted, &timeout.SystemPause)
 | 
					 | 
				
			||||||
	if err != nil {
 | 
						if err != nil {
 | 
				
			||||||
		return makeSystemError(computeSystem, "Pause", "", err, events)
 | 
							return makeSystemError(computeSystem, operation, "", err, events)
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	return nil
 | 
						return nil
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// Resume resumes the execution of the computeSystem. This feature is not enabled in TP5.
 | 
					// Resume resumes the execution of the computeSystem. This feature is not enabled in TP5.
 | 
				
			||||||
func (computeSystem *System) Resume() (err error) {
 | 
					func (computeSystem *System) Resume(ctx context.Context) (err error) {
 | 
				
			||||||
 | 
						operation := "hcsshim::System::Resume"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						// hcsResumeComputeSystemContext is an async operation. Start the outer span
 | 
				
			||||||
 | 
						// here to measure the full restore time.
 | 
				
			||||||
 | 
						ctx, span := trace.StartSpan(ctx, operation)
 | 
				
			||||||
 | 
						defer span.End()
 | 
				
			||||||
 | 
						defer func() { oc.SetSpanStatus(span, err) }()
 | 
				
			||||||
 | 
						span.AddAttributes(trace.StringAttribute("cid", computeSystem.id))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	computeSystem.handleLock.RLock()
 | 
						computeSystem.handleLock.RLock()
 | 
				
			||||||
	defer computeSystem.handleLock.RUnlock()
 | 
						defer computeSystem.handleLock.RUnlock()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	operation := "hcsshim::ComputeSystem::Resume"
 | 
					 | 
				
			||||||
	computeSystem.logOperationBegin(operation)
 | 
					 | 
				
			||||||
	defer func() { computeSystem.logOperationEnd(operation, err) }()
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	if computeSystem.handle == 0 {
 | 
						if computeSystem.handle == 0 {
 | 
				
			||||||
		return makeSystemError(computeSystem, "Resume", "", ErrAlreadyClosed, nil)
 | 
							return makeSystemError(computeSystem, operation, "", ErrAlreadyClosed, nil)
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	var resultp *uint16
 | 
						resultJSON, err := vmcompute.HcsResumeComputeSystem(ctx, computeSystem.handle, "")
 | 
				
			||||||
	syscallWatcher(computeSystem.logctx, func() {
 | 
						events, err := processAsyncHcsResult(ctx, err, resultJSON, computeSystem.callbackNumber, hcsNotificationSystemResumeCompleted, &timeout.SystemResume)
 | 
				
			||||||
		err = hcsResumeComputeSystem(computeSystem.handle, "", &resultp)
 | 
					 | 
				
			||||||
	})
 | 
					 | 
				
			||||||
	events, err := processAsyncHcsResult(err, resultp, computeSystem.callbackNumber, hcsNotificationSystemResumeCompleted, &timeout.SystemResume)
 | 
					 | 
				
			||||||
	if err != nil {
 | 
						if err != nil {
 | 
				
			||||||
		return makeSystemError(computeSystem, "Resume", "", err, events)
 | 
							return makeSystemError(computeSystem, operation, "", err, events)
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	return nil
 | 
						return nil
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// CreateProcess launches a new process within the computeSystem.
 | 
					func (computeSystem *System) createProcess(ctx context.Context, operation string, c interface{}) (*Process, *vmcompute.HcsProcessInformation, error) {
 | 
				
			||||||
func (computeSystem *System) CreateProcess(c interface{}) (_ *Process, err error) {
 | 
					 | 
				
			||||||
	computeSystem.handleLock.RLock()
 | 
						computeSystem.handleLock.RLock()
 | 
				
			||||||
	defer computeSystem.handleLock.RUnlock()
 | 
						defer computeSystem.handleLock.RUnlock()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	operation := "hcsshim::ComputeSystem::CreateProcess"
 | 
					 | 
				
			||||||
	computeSystem.logOperationBegin(operation)
 | 
					 | 
				
			||||||
	defer func() { computeSystem.logOperationEnd(operation, err) }()
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	var (
 | 
					 | 
				
			||||||
		processInfo   hcsProcessInformation
 | 
					 | 
				
			||||||
		processHandle hcsProcess
 | 
					 | 
				
			||||||
		resultp       *uint16
 | 
					 | 
				
			||||||
	)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	if computeSystem.handle == 0 {
 | 
						if computeSystem.handle == 0 {
 | 
				
			||||||
		return nil, makeSystemError(computeSystem, "CreateProcess", "", ErrAlreadyClosed, nil)
 | 
							return nil, nil, makeSystemError(computeSystem, operation, "", ErrAlreadyClosed, nil)
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	configurationb, err := json.Marshal(c)
 | 
						configurationb, err := json.Marshal(c)
 | 
				
			||||||
	if err != nil {
 | 
						if err != nil {
 | 
				
			||||||
		return nil, makeSystemError(computeSystem, "CreateProcess", "", err, nil)
 | 
							return nil, nil, makeSystemError(computeSystem, operation, "", err, nil)
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	configuration := string(configurationb)
 | 
						configuration := string(configurationb)
 | 
				
			||||||
 | 
						processInfo, processHandle, resultJSON, err := vmcompute.HcsCreateProcess(ctx, computeSystem.handle, configuration)
 | 
				
			||||||
	logrus.WithFields(computeSystem.logctx).
 | 
						events := processHcsResult(ctx, resultJSON)
 | 
				
			||||||
		WithField(logfields.JSON, configuration).
 | 
					 | 
				
			||||||
		Debug("HCS ComputeSystem Process Document")
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	syscallWatcher(computeSystem.logctx, func() {
 | 
					 | 
				
			||||||
		err = hcsCreateProcess(computeSystem.handle, configuration, &processInfo, &processHandle, &resultp)
 | 
					 | 
				
			||||||
	})
 | 
					 | 
				
			||||||
	events := processHcsResult(resultp)
 | 
					 | 
				
			||||||
	if err != nil {
 | 
						if err != nil {
 | 
				
			||||||
		return nil, makeSystemError(computeSystem, "CreateProcess", configuration, err, events)
 | 
							return nil, nil, makeSystemError(computeSystem, operation, configuration, err, events)
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	logrus.WithFields(computeSystem.logctx).
 | 
						log.G(ctx).WithField("pid", processInfo.ProcessId).Debug("created process pid")
 | 
				
			||||||
		WithField(logfields.ProcessID, processInfo.ProcessId).
 | 
						return newProcess(processHandle, int(processInfo.ProcessId), computeSystem), &processInfo, nil
 | 
				
			||||||
		Debug("HCS ComputeSystem CreateProcess PID")
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	process := newProcess(processHandle, int(processInfo.ProcessId), computeSystem)
 | 
					// CreateProcess launches a new process within the computeSystem.
 | 
				
			||||||
	process.cachedPipes = &cachedPipes{
 | 
					func (computeSystem *System) CreateProcess(ctx context.Context, c interface{}) (cow.Process, error) {
 | 
				
			||||||
		stdIn:  processInfo.StdInput,
 | 
						operation := "hcsshim::System::CreateProcess"
 | 
				
			||||||
		stdOut: processInfo.StdOutput,
 | 
						process, processInfo, err := computeSystem.createProcess(ctx, operation, c)
 | 
				
			||||||
		stdErr: processInfo.StdError,
 | 
						if err != nil {
 | 
				
			||||||
 | 
							return nil, err
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
						defer func() {
 | 
				
			||||||
 | 
							if err != nil {
 | 
				
			||||||
 | 
								process.Close()
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
						}()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if err = process.registerCallback(); err != nil {
 | 
						pipes, err := makeOpenFiles([]syscall.Handle{processInfo.StdInput, processInfo.StdOutput, processInfo.StdError})
 | 
				
			||||||
		return nil, makeSystemError(computeSystem, "CreateProcess", "", err, nil)
 | 
						if err != nil {
 | 
				
			||||||
 | 
							return nil, makeSystemError(computeSystem, operation, "", err, nil)
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						process.stdin = pipes[0]
 | 
				
			||||||
 | 
						process.stdout = pipes[1]
 | 
				
			||||||
 | 
						process.stderr = pipes[2]
 | 
				
			||||||
 | 
						process.hasCachedStdio = true
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						if err = process.registerCallback(ctx); err != nil {
 | 
				
			||||||
 | 
							return nil, makeSystemError(computeSystem, operation, "", err, nil)
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	go process.waitBackground()
 | 
						go process.waitBackground()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -553,38 +513,25 @@ func (computeSystem *System) CreateProcess(c interface{}) (_ *Process, err error
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// OpenProcess gets an interface to an existing process within the computeSystem.
 | 
					// OpenProcess gets an interface to an existing process within the computeSystem.
 | 
				
			||||||
func (computeSystem *System) OpenProcess(pid int) (_ *Process, err error) {
 | 
					func (computeSystem *System) OpenProcess(ctx context.Context, pid int) (*Process, error) {
 | 
				
			||||||
	computeSystem.handleLock.RLock()
 | 
						computeSystem.handleLock.RLock()
 | 
				
			||||||
	defer computeSystem.handleLock.RUnlock()
 | 
						defer computeSystem.handleLock.RUnlock()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// Add PID for the context of this operation
 | 
						operation := "hcsshim::System::OpenProcess"
 | 
				
			||||||
	computeSystem.logctx[logfields.ProcessID] = pid
 | 
					 | 
				
			||||||
	defer delete(computeSystem.logctx, logfields.ProcessID)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	operation := "hcsshim::ComputeSystem::OpenProcess"
 | 
					 | 
				
			||||||
	computeSystem.logOperationBegin(operation)
 | 
					 | 
				
			||||||
	defer func() { computeSystem.logOperationEnd(operation, err) }()
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	var (
 | 
					 | 
				
			||||||
		processHandle hcsProcess
 | 
					 | 
				
			||||||
		resultp       *uint16
 | 
					 | 
				
			||||||
	)
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if computeSystem.handle == 0 {
 | 
						if computeSystem.handle == 0 {
 | 
				
			||||||
		return nil, makeSystemError(computeSystem, "OpenProcess", "", ErrAlreadyClosed, nil)
 | 
							return nil, makeSystemError(computeSystem, operation, "", ErrAlreadyClosed, nil)
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	syscallWatcher(computeSystem.logctx, func() {
 | 
						processHandle, resultJSON, err := vmcompute.HcsOpenProcess(ctx, computeSystem.handle, uint32(pid))
 | 
				
			||||||
		err = hcsOpenProcess(computeSystem.handle, uint32(pid), &processHandle, &resultp)
 | 
						events := processHcsResult(ctx, resultJSON)
 | 
				
			||||||
	})
 | 
					 | 
				
			||||||
	events := processHcsResult(resultp)
 | 
					 | 
				
			||||||
	if err != nil {
 | 
						if err != nil {
 | 
				
			||||||
		return nil, makeSystemError(computeSystem, "OpenProcess", "", err, events)
 | 
							return nil, makeSystemError(computeSystem, operation, "", err, events)
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	process := newProcess(processHandle, pid, computeSystem)
 | 
						process := newProcess(processHandle, pid, computeSystem)
 | 
				
			||||||
	if err = process.registerCallback(); err != nil {
 | 
						if err = process.registerCallback(ctx); err != nil {
 | 
				
			||||||
		return nil, makeSystemError(computeSystem, "OpenProcess", "", err, nil)
 | 
							return nil, makeSystemError(computeSystem, operation, "", err, nil)
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	go process.waitBackground()
 | 
						go process.waitBackground()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -593,39 +540,40 @@ func (computeSystem *System) OpenProcess(pid int) (_ *Process, err error) {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// Close cleans up any state associated with the compute system but does not terminate or wait for it.
 | 
					// Close cleans up any state associated with the compute system but does not terminate or wait for it.
 | 
				
			||||||
func (computeSystem *System) Close() (err error) {
 | 
					func (computeSystem *System) Close() (err error) {
 | 
				
			||||||
 | 
						operation := "hcsshim::System::Close"
 | 
				
			||||||
 | 
						ctx, span := trace.StartSpan(context.Background(), operation)
 | 
				
			||||||
 | 
						defer span.End()
 | 
				
			||||||
 | 
						defer func() { oc.SetSpanStatus(span, err) }()
 | 
				
			||||||
 | 
						span.AddAttributes(trace.StringAttribute("cid", computeSystem.id))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	computeSystem.handleLock.Lock()
 | 
						computeSystem.handleLock.Lock()
 | 
				
			||||||
	defer computeSystem.handleLock.Unlock()
 | 
						defer computeSystem.handleLock.Unlock()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	operation := "hcsshim::ComputeSystem::Close"
 | 
					 | 
				
			||||||
	computeSystem.logOperationBegin(operation)
 | 
					 | 
				
			||||||
	defer func() { computeSystem.logOperationEnd(operation, err) }()
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	// Don't double free this
 | 
						// Don't double free this
 | 
				
			||||||
	if computeSystem.handle == 0 {
 | 
						if computeSystem.handle == 0 {
 | 
				
			||||||
		return nil
 | 
							return nil
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if err = computeSystem.unregisterCallback(); err != nil {
 | 
						if err = computeSystem.unregisterCallback(ctx); err != nil {
 | 
				
			||||||
		return makeSystemError(computeSystem, "Close", "", err, nil)
 | 
							return makeSystemError(computeSystem, operation, "", err, nil)
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	syscallWatcher(computeSystem.logctx, func() {
 | 
						err = vmcompute.HcsCloseComputeSystem(ctx, computeSystem.handle)
 | 
				
			||||||
		err = hcsCloseComputeSystem(computeSystem.handle)
 | 
					 | 
				
			||||||
	})
 | 
					 | 
				
			||||||
	if err != nil {
 | 
						if err != nil {
 | 
				
			||||||
		return makeSystemError(computeSystem, "Close", "", err, nil)
 | 
							return makeSystemError(computeSystem, operation, "", err, nil)
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	computeSystem.handle = 0
 | 
						computeSystem.handle = 0
 | 
				
			||||||
	computeSystem.closedWaitOnce.Do(func() {
 | 
						computeSystem.closedWaitOnce.Do(func() {
 | 
				
			||||||
 | 
							computeSystem.waitError = ErrAlreadyClosed
 | 
				
			||||||
		close(computeSystem.waitBlock)
 | 
							close(computeSystem.waitBlock)
 | 
				
			||||||
	})
 | 
						})
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	return nil
 | 
						return nil
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func (computeSystem *System) registerCallback() error {
 | 
					func (computeSystem *System) registerCallback(ctx context.Context) error {
 | 
				
			||||||
	context := ¬ifcationWatcherContext{
 | 
						callbackContext := ¬ifcationWatcherContext{
 | 
				
			||||||
		channels: newSystemChannels(),
 | 
							channels: newSystemChannels(),
 | 
				
			||||||
		systemID: computeSystem.id,
 | 
							systemID: computeSystem.id,
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
| 
						 | 
					@ -633,32 +581,31 @@ func (computeSystem *System) registerCallback() error {
 | 
				
			||||||
	callbackMapLock.Lock()
 | 
						callbackMapLock.Lock()
 | 
				
			||||||
	callbackNumber := nextCallback
 | 
						callbackNumber := nextCallback
 | 
				
			||||||
	nextCallback++
 | 
						nextCallback++
 | 
				
			||||||
	callbackMap[callbackNumber] = context
 | 
						callbackMap[callbackNumber] = callbackContext
 | 
				
			||||||
	callbackMapLock.Unlock()
 | 
						callbackMapLock.Unlock()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	var callbackHandle hcsCallback
 | 
						callbackHandle, err := vmcompute.HcsRegisterComputeSystemCallback(ctx, computeSystem.handle, notificationWatcherCallback, callbackNumber)
 | 
				
			||||||
	err := hcsRegisterComputeSystemCallback(computeSystem.handle, notificationWatcherCallback, callbackNumber, &callbackHandle)
 | 
					 | 
				
			||||||
	if err != nil {
 | 
						if err != nil {
 | 
				
			||||||
		return err
 | 
							return err
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	context.handle = callbackHandle
 | 
						callbackContext.handle = callbackHandle
 | 
				
			||||||
	computeSystem.callbackNumber = callbackNumber
 | 
						computeSystem.callbackNumber = callbackNumber
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	return nil
 | 
						return nil
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func (computeSystem *System) unregisterCallback() error {
 | 
					func (computeSystem *System) unregisterCallback(ctx context.Context) error {
 | 
				
			||||||
	callbackNumber := computeSystem.callbackNumber
 | 
						callbackNumber := computeSystem.callbackNumber
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	callbackMapLock.RLock()
 | 
						callbackMapLock.RLock()
 | 
				
			||||||
	context := callbackMap[callbackNumber]
 | 
						callbackContext := callbackMap[callbackNumber]
 | 
				
			||||||
	callbackMapLock.RUnlock()
 | 
						callbackMapLock.RUnlock()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if context == nil {
 | 
						if callbackContext == nil {
 | 
				
			||||||
		return nil
 | 
							return nil
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	handle := context.handle
 | 
						handle := callbackContext.handle
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if handle == 0 {
 | 
						if handle == 0 {
 | 
				
			||||||
		return nil
 | 
							return nil
 | 
				
			||||||
| 
						 | 
					@ -666,12 +613,12 @@ func (computeSystem *System) unregisterCallback() error {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// hcsUnregisterComputeSystemCallback has its own syncronization
 | 
						// hcsUnregisterComputeSystemCallback has its own syncronization
 | 
				
			||||||
	// to wait for all callbacks to complete. We must NOT hold the callbackMapLock.
 | 
						// to wait for all callbacks to complete. We must NOT hold the callbackMapLock.
 | 
				
			||||||
	err := hcsUnregisterComputeSystemCallback(handle)
 | 
						err := vmcompute.HcsUnregisterComputeSystemCallback(ctx, handle)
 | 
				
			||||||
	if err != nil {
 | 
						if err != nil {
 | 
				
			||||||
		return err
 | 
							return err
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	closeChannels(context.channels)
 | 
						closeChannels(callbackContext.channels)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	callbackMapLock.Lock()
 | 
						callbackMapLock.Lock()
 | 
				
			||||||
	delete(callbackMap, callbackNumber)
 | 
						delete(callbackMap, callbackNumber)
 | 
				
			||||||
| 
						 | 
					@ -683,36 +630,26 @@ func (computeSystem *System) unregisterCallback() error {
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// Modify the System by sending a request to HCS
 | 
					// Modify the System by sending a request to HCS
 | 
				
			||||||
func (computeSystem *System) Modify(config interface{}) (err error) {
 | 
					func (computeSystem *System) Modify(ctx context.Context, config interface{}) error {
 | 
				
			||||||
	computeSystem.handleLock.RLock()
 | 
						computeSystem.handleLock.RLock()
 | 
				
			||||||
	defer computeSystem.handleLock.RUnlock()
 | 
						defer computeSystem.handleLock.RUnlock()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	operation := "hcsshim::ComputeSystem::Modify"
 | 
						operation := "hcsshim::System::Modify"
 | 
				
			||||||
	computeSystem.logOperationBegin(operation)
 | 
					 | 
				
			||||||
	defer func() { computeSystem.logOperationEnd(operation, err) }()
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if computeSystem.handle == 0 {
 | 
						if computeSystem.handle == 0 {
 | 
				
			||||||
		return makeSystemError(computeSystem, "Modify", "", ErrAlreadyClosed, nil)
 | 
							return makeSystemError(computeSystem, operation, "", ErrAlreadyClosed, nil)
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	requestJSON, err := json.Marshal(config)
 | 
						requestBytes, err := json.Marshal(config)
 | 
				
			||||||
	if err != nil {
 | 
						if err != nil {
 | 
				
			||||||
		return err
 | 
							return err
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	requestString := string(requestJSON)
 | 
						requestJSON := string(requestBytes)
 | 
				
			||||||
 | 
						resultJSON, err := vmcompute.HcsModifyComputeSystem(ctx, computeSystem.handle, requestJSON)
 | 
				
			||||||
	logrus.WithFields(computeSystem.logctx).
 | 
						events := processHcsResult(ctx, resultJSON)
 | 
				
			||||||
		WithField(logfields.JSON, requestString).
 | 
					 | 
				
			||||||
		Debug("HCS ComputeSystem Modify Document")
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	var resultp *uint16
 | 
					 | 
				
			||||||
	syscallWatcher(computeSystem.logctx, func() {
 | 
					 | 
				
			||||||
		err = hcsModifyComputeSystem(computeSystem.handle, requestString, &resultp)
 | 
					 | 
				
			||||||
	})
 | 
					 | 
				
			||||||
	events := processHcsResult(resultp)
 | 
					 | 
				
			||||||
	if err != nil {
 | 
						if err != nil {
 | 
				
			||||||
		return makeSystemError(computeSystem, "Modify", requestString, err, events)
 | 
							return makeSystemError(computeSystem, operation, requestJSON, err, events)
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	return nil
 | 
						return nil
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
							
								
								
									
										15
									
								
								vendor/github.com/Microsoft/hcsshim/internal/hcs/waithelper.go
									
										
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										15
									
								
								vendor/github.com/Microsoft/hcsshim/internal/hcs/waithelper.go
									
										
									
										generated
									
									
										vendored
									
									
								
							| 
						 | 
					@ -1,25 +1,26 @@
 | 
				
			||||||
package hcs
 | 
					package hcs
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import (
 | 
					import (
 | 
				
			||||||
 | 
						"context"
 | 
				
			||||||
	"time"
 | 
						"time"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	"github.com/sirupsen/logrus"
 | 
						"github.com/Microsoft/hcsshim/internal/log"
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func processAsyncHcsResult(err error, resultp *uint16, callbackNumber uintptr, expectedNotification hcsNotification, timeout *time.Duration) ([]ErrorEvent, error) {
 | 
					func processAsyncHcsResult(ctx context.Context, err error, resultJSON string, callbackNumber uintptr, expectedNotification hcsNotification, timeout *time.Duration) ([]ErrorEvent, error) {
 | 
				
			||||||
	events := processHcsResult(resultp)
 | 
						events := processHcsResult(ctx, resultJSON)
 | 
				
			||||||
	if IsPending(err) {
 | 
						if IsPending(err) {
 | 
				
			||||||
		return nil, waitForNotification(callbackNumber, expectedNotification, timeout)
 | 
							return nil, waitForNotification(ctx, callbackNumber, expectedNotification, timeout)
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	return events, err
 | 
						return events, err
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func waitForNotification(callbackNumber uintptr, expectedNotification hcsNotification, timeout *time.Duration) error {
 | 
					func waitForNotification(ctx context.Context, callbackNumber uintptr, expectedNotification hcsNotification, timeout *time.Duration) error {
 | 
				
			||||||
	callbackMapLock.RLock()
 | 
						callbackMapLock.RLock()
 | 
				
			||||||
	if _, ok := callbackMap[callbackNumber]; !ok {
 | 
						if _, ok := callbackMap[callbackNumber]; !ok {
 | 
				
			||||||
		callbackMapLock.RUnlock()
 | 
							callbackMapLock.RUnlock()
 | 
				
			||||||
		logrus.Errorf("failed to waitForNotification: callbackNumber %d does not exist in callbackMap", callbackNumber)
 | 
							log.G(ctx).WithField("callbackNumber", callbackNumber).Error("failed to waitForNotification: callbackNumber does not exist in callbackMap")
 | 
				
			||||||
		return ErrHandleClose
 | 
							return ErrHandleClose
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	channels := callbackMap[callbackNumber].channels
 | 
						channels := callbackMap[callbackNumber].channels
 | 
				
			||||||
| 
						 | 
					@ -27,7 +28,7 @@ func waitForNotification(callbackNumber uintptr, expectedNotification hcsNotific
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	expectedChannel := channels[expectedNotification]
 | 
						expectedChannel := channels[expectedNotification]
 | 
				
			||||||
	if expectedChannel == nil {
 | 
						if expectedChannel == nil {
 | 
				
			||||||
		logrus.Errorf("unknown notification type in waitForNotification %x", expectedNotification)
 | 
							log.G(ctx).WithField("type", expectedNotification).Error("unknown notification type in waitForNotification")
 | 
				
			||||||
		return ErrInvalidNotificationType
 | 
							return ErrInvalidNotificationType
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
							
								
								
									
										41
									
								
								vendor/github.com/Microsoft/hcsshim/internal/hcs/watcher.go
									
										
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										41
									
								
								vendor/github.com/Microsoft/hcsshim/internal/hcs/watcher.go
									
										
									
										generated
									
									
										vendored
									
									
								
							| 
						 | 
					@ -1,41 +0,0 @@
 | 
				
			||||||
package hcs
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
import (
 | 
					 | 
				
			||||||
	"context"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	"github.com/Microsoft/hcsshim/internal/logfields"
 | 
					 | 
				
			||||||
	"github.com/Microsoft/hcsshim/internal/timeout"
 | 
					 | 
				
			||||||
	"github.com/sirupsen/logrus"
 | 
					 | 
				
			||||||
)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
// syscallWatcher is used as a very simple goroutine around calls into
 | 
					 | 
				
			||||||
// the platform. In some cases, we have seen HCS APIs not returning due to
 | 
					 | 
				
			||||||
// various bugs, and the goroutine making the syscall ends up not returning,
 | 
					 | 
				
			||||||
// prior to its async callback. By spinning up a syscallWatcher, it allows
 | 
					 | 
				
			||||||
// us to at least log a warning if a syscall doesn't complete in a reasonable
 | 
					 | 
				
			||||||
// amount of time.
 | 
					 | 
				
			||||||
//
 | 
					 | 
				
			||||||
// Usage is:
 | 
					 | 
				
			||||||
//
 | 
					 | 
				
			||||||
// syscallWatcher(logContext, func() {
 | 
					 | 
				
			||||||
//    err = <syscall>(args...)
 | 
					 | 
				
			||||||
// })
 | 
					 | 
				
			||||||
//
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
func syscallWatcher(logContext logrus.Fields, syscallLambda func()) {
 | 
					 | 
				
			||||||
	ctx, cancel := context.WithTimeout(context.Background(), timeout.SyscallWatcher)
 | 
					 | 
				
			||||||
	defer cancel()
 | 
					 | 
				
			||||||
	go watchFunc(ctx, logContext)
 | 
					 | 
				
			||||||
	syscallLambda()
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
func watchFunc(ctx context.Context, logContext logrus.Fields) {
 | 
					 | 
				
			||||||
	select {
 | 
					 | 
				
			||||||
	case <-ctx.Done():
 | 
					 | 
				
			||||||
		if ctx.Err() != context.Canceled {
 | 
					 | 
				
			||||||
			logrus.WithFields(logContext).
 | 
					 | 
				
			||||||
				WithField(logfields.Timeout, timeout.SyscallWatcher).
 | 
					 | 
				
			||||||
				Warning("Syscall did not complete within operation timeout. This may indicate a platform issue. If it appears to be making no forward progress, obtain the stacks and see if there is a syscall stuck in the platform API for a significant length of time.")
 | 
					 | 
				
			||||||
		}
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
							
								
								
									
										22
									
								
								vendor/github.com/Microsoft/hcsshim/internal/hns/hnsendpoint.go
									
										
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										22
									
								
								vendor/github.com/Microsoft/hcsshim/internal/hns/hnsendpoint.go
									
										
									
										generated
									
									
										vendored
									
									
								
							| 
						 | 
					@ -3,6 +3,7 @@ package hns
 | 
				
			||||||
import (
 | 
					import (
 | 
				
			||||||
	"encoding/json"
 | 
						"encoding/json"
 | 
				
			||||||
	"net"
 | 
						"net"
 | 
				
			||||||
 | 
						"strings"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	"github.com/sirupsen/logrus"
 | 
						"github.com/sirupsen/logrus"
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
| 
						 | 
					@ -94,6 +95,27 @@ func GetHNSEndpointByName(endpointName string) (*HNSEndpoint, error) {
 | 
				
			||||||
	return nil, EndpointNotFoundError{EndpointName: endpointName}
 | 
						return nil, EndpointNotFoundError{EndpointName: endpointName}
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					type endpointAttachInfo struct {
 | 
				
			||||||
 | 
						SharedContainers json.RawMessage `json:",omitempty"`
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (endpoint *HNSEndpoint) IsAttached(vID string) (bool, error) {
 | 
				
			||||||
 | 
						attachInfo := endpointAttachInfo{}
 | 
				
			||||||
 | 
						err := hnsCall("GET", "/endpoints/"+endpoint.Id, "", &attachInfo)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						// Return false allows us to just return the err
 | 
				
			||||||
 | 
						if err != nil {
 | 
				
			||||||
 | 
							return false, err
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						if strings.Contains(strings.ToLower(string(attachInfo.SharedContainers)), strings.ToLower(vID)) {
 | 
				
			||||||
 | 
							return true, nil
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						return false, nil
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// Create Endpoint by sending EndpointRequest to HNS. TODO: Create a separate HNS interface to place all these methods
 | 
					// Create Endpoint by sending EndpointRequest to HNS. TODO: Create a separate HNS interface to place all these methods
 | 
				
			||||||
func (endpoint *HNSEndpoint) Create() (*HNSEndpoint, error) {
 | 
					func (endpoint *HNSEndpoint) Create() (*HNSEndpoint, error) {
 | 
				
			||||||
	operation := "Create"
 | 
						operation := "Create"
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
							
								
								
									
										15
									
								
								vendor/github.com/Microsoft/hcsshim/internal/hns/hnsfuncs.go
									
										
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										15
									
								
								vendor/github.com/Microsoft/hcsshim/internal/hns/hnsfuncs.go
									
										
									
										generated
									
									
										vendored
									
									
								
							| 
						 | 
					@ -9,23 +9,30 @@ import (
 | 
				
			||||||
	"github.com/sirupsen/logrus"
 | 
						"github.com/sirupsen/logrus"
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func hnsCall(method, path, request string, returnResponse interface{}) error {
 | 
					func hnsCallRawResponse(method, path, request string) (*hnsResponse, error) {
 | 
				
			||||||
	var responseBuffer *uint16
 | 
						var responseBuffer *uint16
 | 
				
			||||||
	logrus.Debugf("[%s]=>[%s] Request : %s", method, path, request)
 | 
						logrus.Debugf("[%s]=>[%s] Request : %s", method, path, request)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	err := _hnsCall(method, path, request, &responseBuffer)
 | 
						err := _hnsCall(method, path, request, &responseBuffer)
 | 
				
			||||||
	if err != nil {
 | 
						if err != nil {
 | 
				
			||||||
		return hcserror.New(err, "hnsCall ", "")
 | 
							return nil, hcserror.New(err, "hnsCall ", "")
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	response := interop.ConvertAndFreeCoTaskMemString(responseBuffer)
 | 
						response := interop.ConvertAndFreeCoTaskMemString(responseBuffer)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	hnsresponse := &hnsResponse{}
 | 
						hnsresponse := &hnsResponse{}
 | 
				
			||||||
	if err = json.Unmarshal([]byte(response), &hnsresponse); err != nil {
 | 
						if err = json.Unmarshal([]byte(response), &hnsresponse); err != nil {
 | 
				
			||||||
		return err
 | 
							return nil, err
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
						return hnsresponse, nil
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func hnsCall(method, path, request string, returnResponse interface{}) error {
 | 
				
			||||||
 | 
						hnsresponse, err := hnsCallRawResponse(method, path, request)
 | 
				
			||||||
 | 
						if err != nil {
 | 
				
			||||||
 | 
							return fmt.Errorf("failed during hnsCallRawResponse: %v", err)
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
	if !hnsresponse.Success {
 | 
						if !hnsresponse.Success {
 | 
				
			||||||
		return fmt.Errorf("HNS failed with error : %s", hnsresponse.Error)
 | 
							return fmt.Errorf("hns failed with error : %s", hnsresponse.Error)
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if len(hnsresponse.Output) == 0 {
 | 
						if len(hnsresponse.Output) == 0 {
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
							
								
								
									
										5
									
								
								vendor/github.com/Microsoft/hcsshim/internal/hns/hnspolicy.go
									
										
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										5
									
								
								vendor/github.com/Microsoft/hcsshim/internal/hns/hnspolicy.go
									
										
									
										generated
									
									
										vendored
									
									
								
							| 
						 | 
					@ -55,8 +55,9 @@ type PaPolicy struct {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
type OutboundNatPolicy struct {
 | 
					type OutboundNatPolicy struct {
 | 
				
			||||||
	Policy
 | 
						Policy
 | 
				
			||||||
	VIP        string   `json:"VIP,omitempty"`
 | 
						VIP          string   `json:"VIP,omitempty"`
 | 
				
			||||||
	Exceptions []string `json:"ExceptionList,omitempty"`
 | 
						Exceptions   []string `json:"ExceptionList,omitempty"`
 | 
				
			||||||
 | 
						Destinations []string `json:",omitempty"`
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
type ActionType string
 | 
					type ActionType string
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
							
								
								
									
										4
									
								
								vendor/github.com/Microsoft/hcsshim/internal/interop/interop.go
									
										
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										4
									
								
								vendor/github.com/Microsoft/hcsshim/internal/interop/interop.go
									
										
									
										generated
									
									
										vendored
									
									
								
							| 
						 | 
					@ -15,10 +15,6 @@ func ConvertAndFreeCoTaskMemString(buffer *uint16) string {
 | 
				
			||||||
	return str
 | 
						return str
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func ConvertAndFreeCoTaskMemBytes(buffer *uint16) []byte {
 | 
					 | 
				
			||||||
	return []byte(ConvertAndFreeCoTaskMemString(buffer))
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
func Win32FromHresult(hr uintptr) syscall.Errno {
 | 
					func Win32FromHresult(hr uintptr) syscall.Errno {
 | 
				
			||||||
	if hr&0x1fff0000 == 0x00070000 {
 | 
						if hr&0x1fff0000 == 0x00070000 {
 | 
				
			||||||
		return syscall.Errno(hr & 0xffff)
 | 
							return syscall.Errno(hr & 0xffff)
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
							
								
								
									
										23
									
								
								vendor/github.com/Microsoft/hcsshim/internal/log/g.go
									
										
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										23
									
								
								vendor/github.com/Microsoft/hcsshim/internal/log/g.go
									
										
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,23 @@
 | 
				
			||||||
 | 
					package log
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import (
 | 
				
			||||||
 | 
						"context"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						"github.com/sirupsen/logrus"
 | 
				
			||||||
 | 
						"go.opencensus.io/trace"
 | 
				
			||||||
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// G returns a `logrus.Entry` with the `TraceID, SpanID` from `ctx` if `ctx`
 | 
				
			||||||
 | 
					// contains an OpenCensus `trace.Span`.
 | 
				
			||||||
 | 
					func G(ctx context.Context) *logrus.Entry {
 | 
				
			||||||
 | 
						span := trace.FromContext(ctx)
 | 
				
			||||||
 | 
						if span != nil {
 | 
				
			||||||
 | 
							sctx := span.SpanContext()
 | 
				
			||||||
 | 
							return logrus.WithFields(logrus.Fields{
 | 
				
			||||||
 | 
								"traceID": sctx.TraceID.String(),
 | 
				
			||||||
 | 
								"spanID":  sctx.SpanID.String(),
 | 
				
			||||||
 | 
								// "parentSpanID": TODO: JTERRY75 - Try to convince OC to export this?
 | 
				
			||||||
 | 
							})
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						return logrus.NewEntry(logrus.StandardLogger())
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										43
									
								
								vendor/github.com/Microsoft/hcsshim/internal/oc/exporter.go
									
										
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										43
									
								
								vendor/github.com/Microsoft/hcsshim/internal/oc/exporter.go
									
										
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,43 @@
 | 
				
			||||||
 | 
					package oc
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import (
 | 
				
			||||||
 | 
						"github.com/sirupsen/logrus"
 | 
				
			||||||
 | 
						"go.opencensus.io/trace"
 | 
				
			||||||
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					var _ = (trace.Exporter)(&LogrusExporter{})
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// LogrusExporter is an OpenCensus `trace.Exporter` that exports
 | 
				
			||||||
 | 
					// `trace.SpanData` to logrus output.
 | 
				
			||||||
 | 
					type LogrusExporter struct {
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// ExportSpan exports `s` based on the the following rules:
 | 
				
			||||||
 | 
					//
 | 
				
			||||||
 | 
					// 1. All output will contain `s.Attributes`, `s.TraceID`, `s.SpanID`,
 | 
				
			||||||
 | 
					// `s.ParentSpanID` for correlation
 | 
				
			||||||
 | 
					//
 | 
				
			||||||
 | 
					// 2. Any calls to .Annotate will not be supported.
 | 
				
			||||||
 | 
					//
 | 
				
			||||||
 | 
					// 3. The span itself will be written at `logrus.InfoLevel` unless
 | 
				
			||||||
 | 
					// `s.Status.Code != 0` in which case it will be written at `logrus.ErrorLevel`
 | 
				
			||||||
 | 
					// providing `s.Status.Message` as the error value.
 | 
				
			||||||
 | 
					func (le *LogrusExporter) ExportSpan(s *trace.SpanData) {
 | 
				
			||||||
 | 
						// Combine all span annotations with traceID, spanID, parentSpanID
 | 
				
			||||||
 | 
						baseEntry := logrus.WithFields(logrus.Fields(s.Attributes))
 | 
				
			||||||
 | 
						baseEntry.Data["traceID"] = s.TraceID.String()
 | 
				
			||||||
 | 
						baseEntry.Data["spanID"] = s.SpanID.String()
 | 
				
			||||||
 | 
						baseEntry.Data["parentSpanID"] = s.ParentSpanID.String()
 | 
				
			||||||
 | 
						baseEntry.Data["startTime"] = s.StartTime
 | 
				
			||||||
 | 
						baseEntry.Data["endTime"] = s.EndTime
 | 
				
			||||||
 | 
						baseEntry.Data["duration"] = s.EndTime.Sub(s.StartTime).String()
 | 
				
			||||||
 | 
						baseEntry.Data["name"] = s.Name
 | 
				
			||||||
 | 
						baseEntry.Time = s.StartTime
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						level := logrus.InfoLevel
 | 
				
			||||||
 | 
						if s.Status.Code != 0 {
 | 
				
			||||||
 | 
							level = logrus.ErrorLevel
 | 
				
			||||||
 | 
							baseEntry.Data[logrus.ErrorKey] = s.Status.Message
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						baseEntry.Log(level, "Span")
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										17
									
								
								vendor/github.com/Microsoft/hcsshim/internal/oc/span.go
									
										
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										17
									
								
								vendor/github.com/Microsoft/hcsshim/internal/oc/span.go
									
										
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,17 @@
 | 
				
			||||||
 | 
					package oc
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import (
 | 
				
			||||||
 | 
						"go.opencensus.io/trace"
 | 
				
			||||||
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// SetSpanStatus sets `span.SetStatus` to the proper status depending on `err`. If
 | 
				
			||||||
 | 
					// `err` is `nil` assumes `trace.StatusCodeOk`.
 | 
				
			||||||
 | 
					func SetSpanStatus(span *trace.Span, err error) {
 | 
				
			||||||
 | 
						status := trace.Status{}
 | 
				
			||||||
 | 
						if err != nil {
 | 
				
			||||||
 | 
							// TODO: JTERRY75 - Handle errors in a non-generic way
 | 
				
			||||||
 | 
							status.Code = trace.StatusCodeUnknown
 | 
				
			||||||
 | 
							status.Message = err.Error()
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						span.SetStatus(status)
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										9
									
								
								vendor/github.com/Microsoft/hcsshim/internal/schema1/schema1.go
									
										
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										9
									
								
								vendor/github.com/Microsoft/hcsshim/internal/schema1/schema1.go
									
										
									
										generated
									
									
										vendored
									
									
								
							| 
						 | 
					@ -4,7 +4,8 @@ import (
 | 
				
			||||||
	"encoding/json"
 | 
						"encoding/json"
 | 
				
			||||||
	"time"
 | 
						"time"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	"github.com/Microsoft/hcsshim/internal/schema2"
 | 
						"github.com/Microsoft/go-winio/pkg/guid"
 | 
				
			||||||
 | 
						hcsschema "github.com/Microsoft/hcsshim/internal/schema2"
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// ProcessConfig is used as both the input of Container.CreateProcess
 | 
					// ProcessConfig is used as both the input of Container.CreateProcess
 | 
				
			||||||
| 
						 | 
					@ -62,7 +63,7 @@ type MappedVirtualDisk struct {
 | 
				
			||||||
	CreateInUtilityVM bool   `json:",omitempty"`
 | 
						CreateInUtilityVM bool   `json:",omitempty"`
 | 
				
			||||||
	ReadOnly          bool   `json:",omitempty"`
 | 
						ReadOnly          bool   `json:",omitempty"`
 | 
				
			||||||
	Cache             string `json:",omitempty"` // "" (Unspecified); "Disabled"; "Enabled"; "Private"; "PrivateAllowSharing"
 | 
						Cache             string `json:",omitempty"` // "" (Unspecified); "Disabled"; "Enabled"; "Private"; "PrivateAllowSharing"
 | 
				
			||||||
	AttachOnly        bool   `json:",omitempty:`
 | 
						AttachOnly        bool   `json:",omitempty"`
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// AssignedDevice represents a device that has been directly assigned to a container
 | 
					// AssignedDevice represents a device that has been directly assigned to a container
 | 
				
			||||||
| 
						 | 
					@ -133,9 +134,10 @@ type ContainerProperties struct {
 | 
				
			||||||
	State                        string
 | 
						State                        string
 | 
				
			||||||
	Name                         string
 | 
						Name                         string
 | 
				
			||||||
	SystemType                   string
 | 
						SystemType                   string
 | 
				
			||||||
 | 
						RuntimeOSType                string `json:"RuntimeOsType,omitempty"`
 | 
				
			||||||
	Owner                        string
 | 
						Owner                        string
 | 
				
			||||||
	SiloGUID                     string                              `json:"SiloGuid,omitempty"`
 | 
						SiloGUID                     string                              `json:"SiloGuid,omitempty"`
 | 
				
			||||||
	RuntimeID                    string                              `json:"RuntimeId,omitempty"`
 | 
						RuntimeID                    guid.GUID                           `json:"RuntimeId,omitempty"`
 | 
				
			||||||
	IsRuntimeTemplate            bool                                `json:",omitempty"`
 | 
						IsRuntimeTemplate            bool                                `json:",omitempty"`
 | 
				
			||||||
	RuntimeImagePath             string                              `json:",omitempty"`
 | 
						RuntimeImagePath             string                              `json:",omitempty"`
 | 
				
			||||||
	Stopped                      bool                                `json:",omitempty"`
 | 
						Stopped                      bool                                `json:",omitempty"`
 | 
				
			||||||
| 
						 | 
					@ -214,6 +216,7 @@ type MappedVirtualDiskController struct {
 | 
				
			||||||
type GuestDefinedCapabilities struct {
 | 
					type GuestDefinedCapabilities struct {
 | 
				
			||||||
	NamespaceAddRequestSupported bool `json:",omitempty"`
 | 
						NamespaceAddRequestSupported bool `json:",omitempty"`
 | 
				
			||||||
	SignalProcessSupported       bool `json:",omitempty"`
 | 
						SignalProcessSupported       bool `json:",omitempty"`
 | 
				
			||||||
 | 
						DumpStacksSupported          bool `json:",omitempty"`
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// GuestConnectionInfo is the structure of an iterm return by a GuestConnection call on a utility VM
 | 
					// GuestConnectionInfo is the structure of an iterm return by a GuestConnection call on a utility VM
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
							
								
								
									
										1
									
								
								vendor/github.com/Microsoft/hcsshim/internal/schema2/attachment.go
									
										
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										1
									
								
								vendor/github.com/Microsoft/hcsshim/internal/schema2/attachment.go
									
										
									
										generated
									
									
										vendored
									
									
								
							| 
						 | 
					@ -10,7 +10,6 @@
 | 
				
			||||||
package hcsschema
 | 
					package hcsschema
 | 
				
			||||||
 | 
					
 | 
				
			||||||
type Attachment struct {
 | 
					type Attachment struct {
 | 
				
			||||||
 | 
					 | 
				
			||||||
	Type_ string `json:"Type,omitempty"`
 | 
						Type_ string `json:"Type,omitempty"`
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	Path string `json:"Path,omitempty"`
 | 
						Path string `json:"Path,omitempty"`
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
							
								
								
									
										1
									
								
								vendor/github.com/Microsoft/hcsshim/internal/schema2/cache_query_stats_response.go
									
										
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										1
									
								
								vendor/github.com/Microsoft/hcsshim/internal/schema2/cache_query_stats_response.go
									
										
									
										generated
									
									
										vendored
									
									
								
							| 
						 | 
					@ -10,7 +10,6 @@
 | 
				
			||||||
package hcsschema
 | 
					package hcsschema
 | 
				
			||||||
 | 
					
 | 
				
			||||||
type CacheQueryStatsResponse struct {
 | 
					type CacheQueryStatsResponse struct {
 | 
				
			||||||
 | 
					 | 
				
			||||||
	L3OccupancyBytes int32 `json:"L3OccupancyBytes,omitempty"`
 | 
						L3OccupancyBytes int32 `json:"L3OccupancyBytes,omitempty"`
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	L3TotalBwBytes int32 `json:"L3TotalBwBytes,omitempty"`
 | 
						L3TotalBwBytes int32 `json:"L3TotalBwBytes,omitempty"`
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
							
								
								
									
										1
									
								
								vendor/github.com/Microsoft/hcsshim/internal/schema2/close_handle.go
									
										
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										1
									
								
								vendor/github.com/Microsoft/hcsshim/internal/schema2/close_handle.go
									
										
									
										generated
									
									
										vendored
									
									
								
							| 
						 | 
					@ -10,6 +10,5 @@
 | 
				
			||||||
package hcsschema
 | 
					package hcsschema
 | 
				
			||||||
 | 
					
 | 
				
			||||||
type CloseHandle struct {
 | 
					type CloseHandle struct {
 | 
				
			||||||
 | 
					 | 
				
			||||||
	Handle string `json:"Handle,omitempty"`
 | 
						Handle string `json:"Handle,omitempty"`
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
							
								
								
									
										1
									
								
								vendor/github.com/Microsoft/hcsshim/internal/schema2/com_port.go
									
										
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										1
									
								
								vendor/github.com/Microsoft/hcsshim/internal/schema2/com_port.go
									
										
									
										generated
									
									
										vendored
									
									
								
							| 
						 | 
					@ -11,7 +11,6 @@ package hcsschema
 | 
				
			||||||
 | 
					
 | 
				
			||||||
//  ComPort specifies the named pipe that will be used for the port, with empty string indicating a disconnected port.
 | 
					//  ComPort specifies the named pipe that will be used for the port, with empty string indicating a disconnected port.
 | 
				
			||||||
type ComPort struct {
 | 
					type ComPort struct {
 | 
				
			||||||
 | 
					 | 
				
			||||||
	NamedPipe string `json:"NamedPipe,omitempty"`
 | 
						NamedPipe string `json:"NamedPipe,omitempty"`
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	OptimizeForDebugger bool `json:"OptimizeForDebugger,omitempty"`
 | 
						OptimizeForDebugger bool `json:"OptimizeForDebugger,omitempty"`
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
							
								
								
									
										3
									
								
								vendor/github.com/Microsoft/hcsshim/internal/schema2/compute_system.go
									
										
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										3
									
								
								vendor/github.com/Microsoft/hcsshim/internal/schema2/compute_system.go
									
										
									
										generated
									
									
										vendored
									
									
								
							| 
						 | 
					@ -10,14 +10,13 @@
 | 
				
			||||||
package hcsschema
 | 
					package hcsschema
 | 
				
			||||||
 | 
					
 | 
				
			||||||
type ComputeSystem struct {
 | 
					type ComputeSystem struct {
 | 
				
			||||||
 | 
					 | 
				
			||||||
	Owner string `json:"Owner,omitempty"`
 | 
						Owner string `json:"Owner,omitempty"`
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	SchemaVersion *Version `json:"SchemaVersion,omitempty"`
 | 
						SchemaVersion *Version `json:"SchemaVersion,omitempty"`
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	HostingSystemId string `json:"HostingSystemId,omitempty"`
 | 
						HostingSystemId string `json:"HostingSystemId,omitempty"`
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	HostedSystem *HostedSystem `json:"HostedSystem,omitempty"`
 | 
						HostedSystem interface{} `json:"HostedSystem,omitempty"`
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	Container *Container `json:"Container,omitempty"`
 | 
						Container *Container `json:"Container,omitempty"`
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
							
								
								
									
										32
									
								
								vendor/github.com/Microsoft/hcsshim/internal/schema2/configuration.go
									
										
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										32
									
								
								vendor/github.com/Microsoft/hcsshim/internal/schema2/configuration.go
									
										
									
										generated
									
									
										vendored
									
									
								
							| 
						 | 
					@ -25,37 +25,37 @@ func (c contextKey) String() string {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
var (
 | 
					var (
 | 
				
			||||||
	// ContextOAuth2 takes a oauth2.TokenSource as authentication for the request.
 | 
						// ContextOAuth2 takes a oauth2.TokenSource as authentication for the request.
 | 
				
			||||||
	ContextOAuth2    	= contextKey("token")
 | 
						ContextOAuth2 = contextKey("token")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// ContextBasicAuth takes BasicAuth as authentication for the request.
 | 
						// ContextBasicAuth takes BasicAuth as authentication for the request.
 | 
				
			||||||
	ContextBasicAuth 	= contextKey("basic")
 | 
						ContextBasicAuth = contextKey("basic")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// ContextAccessToken takes a string oauth2 access token as authentication for the request.
 | 
						// ContextAccessToken takes a string oauth2 access token as authentication for the request.
 | 
				
			||||||
	ContextAccessToken 	= contextKey("accesstoken")
 | 
						ContextAccessToken = contextKey("accesstoken")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// ContextAPIKey takes an APIKey as authentication for the request
 | 
						// ContextAPIKey takes an APIKey as authentication for the request
 | 
				
			||||||
 	ContextAPIKey 		= contextKey("apikey")
 | 
						ContextAPIKey = contextKey("apikey")
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// BasicAuth provides basic http authentication to a request passed via context using ContextBasicAuth 
 | 
					// BasicAuth provides basic http authentication to a request passed via context using ContextBasicAuth
 | 
				
			||||||
type BasicAuth struct {
 | 
					type BasicAuth struct {
 | 
				
			||||||
	UserName      string            `json:"userName,omitempty"`
 | 
						UserName string `json:"userName,omitempty"`
 | 
				
			||||||
	Password      string            `json:"password,omitempty"`	
 | 
						Password string `json:"password,omitempty"`
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// APIKey provides API key based authentication to a request passed via context using ContextAPIKey
 | 
					// APIKey provides API key based authentication to a request passed via context using ContextAPIKey
 | 
				
			||||||
type APIKey struct {
 | 
					type APIKey struct {
 | 
				
			||||||
	Key 	string
 | 
						Key    string
 | 
				
			||||||
	Prefix	string
 | 
						Prefix string
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
type Configuration struct {
 | 
					type Configuration struct {
 | 
				
			||||||
	BasePath      string            	`json:"basePath,omitempty"`
 | 
						BasePath      string            `json:"basePath,omitempty"`
 | 
				
			||||||
	Host          string            	`json:"host,omitempty"`
 | 
						Host          string            `json:"host,omitempty"`
 | 
				
			||||||
	Scheme        string            	`json:"scheme,omitempty"`
 | 
						Scheme        string            `json:"scheme,omitempty"`
 | 
				
			||||||
	DefaultHeader map[string]string 	`json:"defaultHeader,omitempty"`
 | 
						DefaultHeader map[string]string `json:"defaultHeader,omitempty"`
 | 
				
			||||||
	UserAgent     string            	`json:"userAgent,omitempty"`
 | 
						UserAgent     string            `json:"userAgent,omitempty"`
 | 
				
			||||||
	HTTPClient 	  *http.Client
 | 
						HTTPClient    *http.Client
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func NewConfiguration() *Configuration {
 | 
					func NewConfiguration() *Configuration {
 | 
				
			||||||
| 
						 | 
					@ -69,4 +69,4 @@ func NewConfiguration() *Configuration {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func (c *Configuration) AddDefaultHeader(key string, value string) {
 | 
					func (c *Configuration) AddDefaultHeader(key string, value string) {
 | 
				
			||||||
	c.DefaultHeader[key] = value
 | 
						c.DefaultHeader[key] = value
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
							
								
								
									
										1
									
								
								vendor/github.com/Microsoft/hcsshim/internal/schema2/console_size.go
									
										
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										1
									
								
								vendor/github.com/Microsoft/hcsshim/internal/schema2/console_size.go
									
										
									
										generated
									
									
										vendored
									
									
								
							| 
						 | 
					@ -10,7 +10,6 @@
 | 
				
			||||||
package hcsschema
 | 
					package hcsschema
 | 
				
			||||||
 | 
					
 | 
				
			||||||
type ConsoleSize struct {
 | 
					type ConsoleSize struct {
 | 
				
			||||||
 | 
					 | 
				
			||||||
	Height int32 `json:"Height,omitempty"`
 | 
						Height int32 `json:"Height,omitempty"`
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	Width int32 `json:"Width,omitempty"`
 | 
						Width int32 `json:"Width,omitempty"`
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
							
								
								
									
										1
									
								
								vendor/github.com/Microsoft/hcsshim/internal/schema2/container.go
									
										
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										1
									
								
								vendor/github.com/Microsoft/hcsshim/internal/schema2/container.go
									
										
									
										generated
									
									
										vendored
									
									
								
							| 
						 | 
					@ -10,7 +10,6 @@
 | 
				
			||||||
package hcsschema
 | 
					package hcsschema
 | 
				
			||||||
 | 
					
 | 
				
			||||||
type Container struct {
 | 
					type Container struct {
 | 
				
			||||||
 | 
					 | 
				
			||||||
	GuestOs *GuestOs `json:"GuestOs,omitempty"`
 | 
						GuestOs *GuestOs `json:"GuestOs,omitempty"`
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	Storage *Storage `json:"Storage,omitempty"`
 | 
						Storage *Storage `json:"Storage,omitempty"`
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
							
								
								
									
										1
									
								
								vendor/github.com/Microsoft/hcsshim/internal/schema2/container_memory_information.go
									
										
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										1
									
								
								vendor/github.com/Microsoft/hcsshim/internal/schema2/container_memory_information.go
									
										
									
										generated
									
									
										vendored
									
									
								
							| 
						 | 
					@ -11,7 +11,6 @@ package hcsschema
 | 
				
			||||||
 | 
					
 | 
				
			||||||
//  memory usage as viewed from within the container
 | 
					//  memory usage as viewed from within the container
 | 
				
			||||||
type ContainerMemoryInformation struct {
 | 
					type ContainerMemoryInformation struct {
 | 
				
			||||||
 | 
					 | 
				
			||||||
	TotalPhysicalBytes int32 `json:"TotalPhysicalBytes,omitempty"`
 | 
						TotalPhysicalBytes int32 `json:"TotalPhysicalBytes,omitempty"`
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	TotalUsage int32 `json:"TotalUsage,omitempty"`
 | 
						TotalUsage int32 `json:"TotalUsage,omitempty"`
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
							
								
								
									
										1
									
								
								vendor/github.com/Microsoft/hcsshim/internal/schema2/devices.go
									
										
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										1
									
								
								vendor/github.com/Microsoft/hcsshim/internal/schema2/devices.go
									
										
									
										generated
									
									
										vendored
									
									
								
							| 
						 | 
					@ -10,7 +10,6 @@
 | 
				
			||||||
package hcsschema
 | 
					package hcsschema
 | 
				
			||||||
 | 
					
 | 
				
			||||||
type Devices struct {
 | 
					type Devices struct {
 | 
				
			||||||
 | 
					 | 
				
			||||||
	ComPorts map[string]ComPort `json:"ComPorts,omitempty"`
 | 
						ComPorts map[string]ComPort `json:"ComPorts,omitempty"`
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	Scsi map[string]Scsi `json:"Scsi,omitempty"`
 | 
						Scsi map[string]Scsi `json:"Scsi,omitempty"`
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
							
								
								
									
										1
									
								
								vendor/github.com/Microsoft/hcsshim/internal/schema2/enhanced_mode_video.go
									
										
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										1
									
								
								vendor/github.com/Microsoft/hcsshim/internal/schema2/enhanced_mode_video.go
									
										
									
										generated
									
									
										vendored
									
									
								
							| 
						 | 
					@ -10,6 +10,5 @@
 | 
				
			||||||
package hcsschema
 | 
					package hcsschema
 | 
				
			||||||
 | 
					
 | 
				
			||||||
type EnhancedModeVideo struct {
 | 
					type EnhancedModeVideo struct {
 | 
				
			||||||
 | 
					 | 
				
			||||||
	ConnectionOptions *RdpConnectionOptions `json:"ConnectionOptions,omitempty"`
 | 
						ConnectionOptions *RdpConnectionOptions `json:"ConnectionOptions,omitempty"`
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
							
								
								
									
										1
									
								
								vendor/github.com/Microsoft/hcsshim/internal/schema2/flexible_io_device.go
									
										
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										1
									
								
								vendor/github.com/Microsoft/hcsshim/internal/schema2/flexible_io_device.go
									
										
									
										generated
									
									
										vendored
									
									
								
							| 
						 | 
					@ -10,7 +10,6 @@
 | 
				
			||||||
package hcsschema
 | 
					package hcsschema
 | 
				
			||||||
 | 
					
 | 
				
			||||||
type FlexibleIoDevice struct {
 | 
					type FlexibleIoDevice struct {
 | 
				
			||||||
 | 
					 | 
				
			||||||
	EmulatorId string `json:"EmulatorId,omitempty"`
 | 
						EmulatorId string `json:"EmulatorId,omitempty"`
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	HostingModel string `json:"HostingModel,omitempty"`
 | 
						HostingModel string `json:"HostingModel,omitempty"`
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
							
								
								
									
										1
									
								
								vendor/github.com/Microsoft/hcsshim/internal/schema2/guest_crash_reporting.go
									
										
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										1
									
								
								vendor/github.com/Microsoft/hcsshim/internal/schema2/guest_crash_reporting.go
									
										
									
										generated
									
									
										vendored
									
									
								
							| 
						 | 
					@ -10,6 +10,5 @@
 | 
				
			||||||
package hcsschema
 | 
					package hcsschema
 | 
				
			||||||
 | 
					
 | 
				
			||||||
type GuestCrashReporting struct {
 | 
					type GuestCrashReporting struct {
 | 
				
			||||||
 | 
					 | 
				
			||||||
	WindowsCrashSettings *WindowsCrashReporting `json:"WindowsCrashSettings,omitempty"`
 | 
						WindowsCrashSettings *WindowsCrashReporting `json:"WindowsCrashSettings,omitempty"`
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
							
								
								
									
										1
									
								
								vendor/github.com/Microsoft/hcsshim/internal/schema2/guest_os.go
									
										
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										1
									
								
								vendor/github.com/Microsoft/hcsshim/internal/schema2/guest_os.go
									
										
									
										generated
									
									
										vendored
									
									
								
							| 
						 | 
					@ -10,6 +10,5 @@
 | 
				
			||||||
package hcsschema
 | 
					package hcsschema
 | 
				
			||||||
 | 
					
 | 
				
			||||||
type GuestOs struct {
 | 
					type GuestOs struct {
 | 
				
			||||||
 | 
					 | 
				
			||||||
	HostName string `json:"HostName,omitempty"`
 | 
						HostName string `json:"HostName,omitempty"`
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
							
								
								
									
										1
									
								
								vendor/github.com/Microsoft/hcsshim/internal/schema2/hosted_system.go
									
										
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										1
									
								
								vendor/github.com/Microsoft/hcsshim/internal/schema2/hosted_system.go
									
										
									
										generated
									
									
										vendored
									
									
								
							| 
						 | 
					@ -10,7 +10,6 @@
 | 
				
			||||||
package hcsschema
 | 
					package hcsschema
 | 
				
			||||||
 | 
					
 | 
				
			||||||
type HostedSystem struct {
 | 
					type HostedSystem struct {
 | 
				
			||||||
 | 
					 | 
				
			||||||
	SchemaVersion *Version `json:"SchemaVersion,omitempty"`
 | 
						SchemaVersion *Version `json:"SchemaVersion,omitempty"`
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	Container *Container `json:"Container,omitempty"`
 | 
						Container *Container `json:"Container,omitempty"`
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
							
								
								
									
										1
									
								
								vendor/github.com/Microsoft/hcsshim/internal/schema2/hv_socket.go
									
										
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										1
									
								
								vendor/github.com/Microsoft/hcsshim/internal/schema2/hv_socket.go
									
										
									
										generated
									
									
										vendored
									
									
								
							| 
						 | 
					@ -10,7 +10,6 @@
 | 
				
			||||||
package hcsschema
 | 
					package hcsschema
 | 
				
			||||||
 | 
					
 | 
				
			||||||
type HvSocket struct {
 | 
					type HvSocket struct {
 | 
				
			||||||
 | 
					 | 
				
			||||||
	Config *HvSocketSystemConfig `json:"Config,omitempty"`
 | 
						Config *HvSocketSystemConfig `json:"Config,omitempty"`
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	EnablePowerShellDirect bool `json:"EnablePowerShellDirect,omitempty"`
 | 
						EnablePowerShellDirect bool `json:"EnablePowerShellDirect,omitempty"`
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
							
								
								
									
										1
									
								
								vendor/github.com/Microsoft/hcsshim/internal/schema2/hv_socket_2.go
									
										
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										1
									
								
								vendor/github.com/Microsoft/hcsshim/internal/schema2/hv_socket_2.go
									
										
									
										generated
									
									
										vendored
									
									
								
							| 
						 | 
					@ -11,6 +11,5 @@ package hcsschema
 | 
				
			||||||
 | 
					
 | 
				
			||||||
//  HvSocket configuration for a VM
 | 
					//  HvSocket configuration for a VM
 | 
				
			||||||
type HvSocket2 struct {
 | 
					type HvSocket2 struct {
 | 
				
			||||||
 | 
					 | 
				
			||||||
	HvSocketConfig *HvSocketSystemConfig `json:"HvSocketConfig,omitempty"`
 | 
						HvSocketConfig *HvSocketSystemConfig `json:"HvSocketConfig,omitempty"`
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
							
								
								
									
										1
									
								
								vendor/github.com/Microsoft/hcsshim/internal/schema2/layer.go
									
										
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										1
									
								
								vendor/github.com/Microsoft/hcsshim/internal/schema2/layer.go
									
										
									
										generated
									
									
										vendored
									
									
								
							| 
						 | 
					@ -10,7 +10,6 @@
 | 
				
			||||||
package hcsschema
 | 
					package hcsschema
 | 
				
			||||||
 | 
					
 | 
				
			||||||
type Layer struct {
 | 
					type Layer struct {
 | 
				
			||||||
 | 
					 | 
				
			||||||
	Id string `json:"Id,omitempty"`
 | 
						Id string `json:"Id,omitempty"`
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	Path string `json:"Path,omitempty"`
 | 
						Path string `json:"Path,omitempty"`
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
							
								
								
									
										1
									
								
								vendor/github.com/Microsoft/hcsshim/internal/schema2/mapped_directory.go
									
										
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										1
									
								
								vendor/github.com/Microsoft/hcsshim/internal/schema2/mapped_directory.go
									
										
									
										generated
									
									
										vendored
									
									
								
							| 
						 | 
					@ -10,7 +10,6 @@
 | 
				
			||||||
package hcsschema
 | 
					package hcsschema
 | 
				
			||||||
 | 
					
 | 
				
			||||||
type MappedDirectory struct {
 | 
					type MappedDirectory struct {
 | 
				
			||||||
 | 
					 | 
				
			||||||
	HostPath string `json:"HostPath,omitempty"`
 | 
						HostPath string `json:"HostPath,omitempty"`
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	HostPathType string `json:"HostPathType,omitempty"`
 | 
						HostPathType string `json:"HostPathType,omitempty"`
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
							
								
								
									
										1
									
								
								vendor/github.com/Microsoft/hcsshim/internal/schema2/mapped_pipe.go
									
										
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										1
									
								
								vendor/github.com/Microsoft/hcsshim/internal/schema2/mapped_pipe.go
									
										
									
										generated
									
									
										vendored
									
									
								
							| 
						 | 
					@ -10,7 +10,6 @@
 | 
				
			||||||
package hcsschema
 | 
					package hcsschema
 | 
				
			||||||
 | 
					
 | 
				
			||||||
type MappedPipe struct {
 | 
					type MappedPipe struct {
 | 
				
			||||||
 | 
					 | 
				
			||||||
	ContainerPipeName string `json:"ContainerPipeName,omitempty"`
 | 
						ContainerPipeName string `json:"ContainerPipeName,omitempty"`
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	HostPath string `json:"HostPath,omitempty"`
 | 
						HostPath string `json:"HostPath,omitempty"`
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
							
								
								
									
										1
									
								
								vendor/github.com/Microsoft/hcsshim/internal/schema2/memory.go
									
										
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										1
									
								
								vendor/github.com/Microsoft/hcsshim/internal/schema2/memory.go
									
										
									
										generated
									
									
										vendored
									
									
								
							| 
						 | 
					@ -10,6 +10,5 @@
 | 
				
			||||||
package hcsschema
 | 
					package hcsschema
 | 
				
			||||||
 | 
					
 | 
				
			||||||
type Memory struct {
 | 
					type Memory struct {
 | 
				
			||||||
 | 
					 | 
				
			||||||
	SizeInMB int32 `json:"SizeInMB,omitempty"`
 | 
						SizeInMB int32 `json:"SizeInMB,omitempty"`
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
							
								
								
									
										5
									
								
								vendor/github.com/Microsoft/hcsshim/internal/schema2/memory_2.go
									
										
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										5
									
								
								vendor/github.com/Microsoft/hcsshim/internal/schema2/memory_2.go
									
										
									
										generated
									
									
										vendored
									
									
								
							| 
						 | 
					@ -22,4 +22,9 @@ type Memory2 struct {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// EnableDeferredCommit is private in the schema. If regenerated need to add back.
 | 
						// EnableDeferredCommit is private in the schema. If regenerated need to add back.
 | 
				
			||||||
	EnableDeferredCommit bool `json:"EnableDeferredCommit,omitempty"`
 | 
						EnableDeferredCommit bool `json:"EnableDeferredCommit,omitempty"`
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						// EnableColdDiscardHint if enabled, then the memory cold discard hint feature is exposed
 | 
				
			||||||
 | 
						// to the VM, allowing it to trim non-zeroed pages from the working set (if supported by
 | 
				
			||||||
 | 
						// the guest operating system).
 | 
				
			||||||
 | 
						EnableColdDiscardHint bool `json:"EnableColdDiscardHint,omitempty"`
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
							
								
								
									
										3
									
								
								vendor/github.com/Microsoft/hcsshim/internal/schema2/memory_information_for_vm.go
									
										
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										3
									
								
								vendor/github.com/Microsoft/hcsshim/internal/schema2/memory_information_for_vm.go
									
										
									
										generated
									
									
										vendored
									
									
								
							| 
						 | 
					@ -10,8 +10,7 @@
 | 
				
			||||||
package hcsschema
 | 
					package hcsschema
 | 
				
			||||||
 | 
					
 | 
				
			||||||
type MemoryInformationForVm struct {
 | 
					type MemoryInformationForVm struct {
 | 
				
			||||||
 | 
						VirtualNodeCount uint32 `json:"VirtualNodeCount,omitempty"`
 | 
				
			||||||
	VirtualNodeCount int32 `json:"VirtualNodeCount,omitempty"`
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
	VirtualMachineMemory *VmMemory `json:"VirtualMachineMemory,omitempty"`
 | 
						VirtualMachineMemory *VmMemory `json:"VirtualMachineMemory,omitempty"`
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
							
								
								
									
										7
									
								
								vendor/github.com/Microsoft/hcsshim/internal/schema2/memory_stats.go
									
										
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										7
									
								
								vendor/github.com/Microsoft/hcsshim/internal/schema2/memory_stats.go
									
										
									
										generated
									
									
										vendored
									
									
								
							| 
						 | 
					@ -11,10 +11,9 @@ package hcsschema
 | 
				
			||||||
 | 
					
 | 
				
			||||||
//  Memory runtime statistics
 | 
					//  Memory runtime statistics
 | 
				
			||||||
type MemoryStats struct {
 | 
					type MemoryStats struct {
 | 
				
			||||||
 | 
						MemoryUsageCommitBytes uint64 `json:"MemoryUsageCommitBytes,omitempty"`
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	MemoryUsageCommitBytes int32 `json:"MemoryUsageCommitBytes,omitempty"`
 | 
						MemoryUsageCommitPeakBytes uint64 `json:"MemoryUsageCommitPeakBytes,omitempty"`
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	MemoryUsageCommitPeakBytes int32 `json:"MemoryUsageCommitPeakBytes,omitempty"`
 | 
						MemoryUsagePrivateWorkingSetBytes uint64 `json:"MemoryUsagePrivateWorkingSetBytes,omitempty"`
 | 
				
			||||||
 | 
					 | 
				
			||||||
	MemoryUsagePrivateWorkingSetBytes int32 `json:"MemoryUsagePrivateWorkingSetBytes,omitempty"`
 | 
					 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
							
								
								
									
										1
									
								
								vendor/github.com/Microsoft/hcsshim/internal/schema2/network_adapter.go
									
										
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										1
									
								
								vendor/github.com/Microsoft/hcsshim/internal/schema2/network_adapter.go
									
										
									
										generated
									
									
										vendored
									
									
								
							| 
						 | 
					@ -10,7 +10,6 @@
 | 
				
			||||||
package hcsschema
 | 
					package hcsschema
 | 
				
			||||||
 | 
					
 | 
				
			||||||
type NetworkAdapter struct {
 | 
					type NetworkAdapter struct {
 | 
				
			||||||
 | 
					 | 
				
			||||||
	EndpointId string `json:"EndpointId,omitempty"`
 | 
						EndpointId string `json:"EndpointId,omitempty"`
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	MacAddress string `json:"MacAddress,omitempty"`
 | 
						MacAddress string `json:"MacAddress,omitempty"`
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
							
								
								
									
										1
									
								
								vendor/github.com/Microsoft/hcsshim/internal/schema2/networking.go
									
										
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										1
									
								
								vendor/github.com/Microsoft/hcsshim/internal/schema2/networking.go
									
										
									
										generated
									
									
										vendored
									
									
								
							| 
						 | 
					@ -10,7 +10,6 @@
 | 
				
			||||||
package hcsschema
 | 
					package hcsschema
 | 
				
			||||||
 | 
					
 | 
				
			||||||
type Networking struct {
 | 
					type Networking struct {
 | 
				
			||||||
 | 
					 | 
				
			||||||
	AllowUnqualifiedDnsQuery bool `json:"AllowUnqualifiedDnsQuery,omitempty"`
 | 
						AllowUnqualifiedDnsQuery bool `json:"AllowUnqualifiedDnsQuery,omitempty"`
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	DnsSearchList string `json:"DnsSearchList,omitempty"`
 | 
						DnsSearchList string `json:"DnsSearchList,omitempty"`
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
							
								
								
									
										1
									
								
								vendor/github.com/Microsoft/hcsshim/internal/schema2/pause_notification.go
									
										
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										1
									
								
								vendor/github.com/Microsoft/hcsshim/internal/schema2/pause_notification.go
									
										
									
										generated
									
									
										vendored
									
									
								
							| 
						 | 
					@ -11,6 +11,5 @@ package hcsschema
 | 
				
			||||||
 | 
					
 | 
				
			||||||
//  Notification data that is indicated to components running in the Virtual Machine.
 | 
					//  Notification data that is indicated to components running in the Virtual Machine.
 | 
				
			||||||
type PauseNotification struct {
 | 
					type PauseNotification struct {
 | 
				
			||||||
 | 
					 | 
				
			||||||
	Reason string `json:"Reason,omitempty"`
 | 
						Reason string `json:"Reason,omitempty"`
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
							
								
								
									
										1
									
								
								vendor/github.com/Microsoft/hcsshim/internal/schema2/pause_options.go
									
										
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										1
									
								
								vendor/github.com/Microsoft/hcsshim/internal/schema2/pause_options.go
									
										
									
										generated
									
									
										vendored
									
									
								
							| 
						 | 
					@ -11,7 +11,6 @@ package hcsschema
 | 
				
			||||||
 | 
					
 | 
				
			||||||
//  Options for HcsPauseComputeSystem
 | 
					//  Options for HcsPauseComputeSystem
 | 
				
			||||||
type PauseOptions struct {
 | 
					type PauseOptions struct {
 | 
				
			||||||
 | 
					 | 
				
			||||||
	SuspensionLevel string `json:"SuspensionLevel,omitempty"`
 | 
						SuspensionLevel string `json:"SuspensionLevel,omitempty"`
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	HostedNotification *PauseNotification `json:"HostedNotification,omitempty"`
 | 
						HostedNotification *PauseNotification `json:"HostedNotification,omitempty"`
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
							
								
								
									
										1
									
								
								vendor/github.com/Microsoft/hcsshim/internal/schema2/plan9.go
									
										
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										1
									
								
								vendor/github.com/Microsoft/hcsshim/internal/schema2/plan9.go
									
										
									
										generated
									
									
										vendored
									
									
								
							| 
						 | 
					@ -10,6 +10,5 @@
 | 
				
			||||||
package hcsschema
 | 
					package hcsschema
 | 
				
			||||||
 | 
					
 | 
				
			||||||
type Plan9 struct {
 | 
					type Plan9 struct {
 | 
				
			||||||
 | 
					 | 
				
			||||||
	Shares []Plan9Share `json:"Shares,omitempty"`
 | 
						Shares []Plan9Share `json:"Shares,omitempty"`
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
							
								
								
									
										1
									
								
								vendor/github.com/Microsoft/hcsshim/internal/schema2/process_details.go
									
										
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										1
									
								
								vendor/github.com/Microsoft/hcsshim/internal/schema2/process_details.go
									
										
									
										generated
									
									
										vendored
									
									
								
							| 
						 | 
					@ -15,7 +15,6 @@ import (
 | 
				
			||||||
 | 
					
 | 
				
			||||||
//  Information about a process running in a container
 | 
					//  Information about a process running in a container
 | 
				
			||||||
type ProcessDetails struct {
 | 
					type ProcessDetails struct {
 | 
				
			||||||
 | 
					 | 
				
			||||||
	ProcessId int32 `json:"ProcessId,omitempty"`
 | 
						ProcessId int32 `json:"ProcessId,omitempty"`
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	ImageName string `json:"ImageName,omitempty"`
 | 
						ImageName string `json:"ImageName,omitempty"`
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
							
								
								
									
										1
									
								
								vendor/github.com/Microsoft/hcsshim/internal/schema2/process_modify_request.go
									
										
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										1
									
								
								vendor/github.com/Microsoft/hcsshim/internal/schema2/process_modify_request.go
									
										
									
										generated
									
									
										vendored
									
									
								
							| 
						 | 
					@ -11,7 +11,6 @@ package hcsschema
 | 
				
			||||||
 | 
					
 | 
				
			||||||
//  Passed to HcsRpc_ModifyProcess
 | 
					//  Passed to HcsRpc_ModifyProcess
 | 
				
			||||||
type ProcessModifyRequest struct {
 | 
					type ProcessModifyRequest struct {
 | 
				
			||||||
 | 
					 | 
				
			||||||
	Operation string `json:"Operation,omitempty"`
 | 
						Operation string `json:"Operation,omitempty"`
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	ConsoleSize *ConsoleSize `json:"ConsoleSize,omitempty"`
 | 
						ConsoleSize *ConsoleSize `json:"ConsoleSize,omitempty"`
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
							
								
								
									
										1
									
								
								vendor/github.com/Microsoft/hcsshim/internal/schema2/process_parameters.go
									
										
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										1
									
								
								vendor/github.com/Microsoft/hcsshim/internal/schema2/process_parameters.go
									
										
									
										generated
									
									
										vendored
									
									
								
							| 
						 | 
					@ -10,7 +10,6 @@
 | 
				
			||||||
package hcsschema
 | 
					package hcsschema
 | 
				
			||||||
 | 
					
 | 
				
			||||||
type ProcessParameters struct {
 | 
					type ProcessParameters struct {
 | 
				
			||||||
 | 
					 | 
				
			||||||
	ApplicationName string `json:"ApplicationName,omitempty"`
 | 
						ApplicationName string `json:"ApplicationName,omitempty"`
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	CommandLine string `json:"CommandLine,omitempty"`
 | 
						CommandLine string `json:"CommandLine,omitempty"`
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
							
								
								
									
										1
									
								
								vendor/github.com/Microsoft/hcsshim/internal/schema2/process_status.go
									
										
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										1
									
								
								vendor/github.com/Microsoft/hcsshim/internal/schema2/process_status.go
									
										
									
										generated
									
									
										vendored
									
									
								
							| 
						 | 
					@ -11,7 +11,6 @@ package hcsschema
 | 
				
			||||||
 | 
					
 | 
				
			||||||
//  Status of a process running in a container
 | 
					//  Status of a process running in a container
 | 
				
			||||||
type ProcessStatus struct {
 | 
					type ProcessStatus struct {
 | 
				
			||||||
 | 
					 | 
				
			||||||
	ProcessId int32 `json:"ProcessId,omitempty"`
 | 
						ProcessId int32 `json:"ProcessId,omitempty"`
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	Exited bool `json:"Exited,omitempty"`
 | 
						Exited bool `json:"Exited,omitempty"`
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
							
								
								
									
										1
									
								
								vendor/github.com/Microsoft/hcsshim/internal/schema2/processor.go
									
										
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										1
									
								
								vendor/github.com/Microsoft/hcsshim/internal/schema2/processor.go
									
										
									
										generated
									
									
										vendored
									
									
								
							| 
						 | 
					@ -10,7 +10,6 @@
 | 
				
			||||||
package hcsschema
 | 
					package hcsschema
 | 
				
			||||||
 | 
					
 | 
				
			||||||
type Processor struct {
 | 
					type Processor struct {
 | 
				
			||||||
 | 
					 | 
				
			||||||
	Count int32 `json:"Count,omitempty"`
 | 
						Count int32 `json:"Count,omitempty"`
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	Maximum int32 `json:"Maximum,omitempty"`
 | 
						Maximum int32 `json:"Maximum,omitempty"`
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
							
								
								
									
										1
									
								
								vendor/github.com/Microsoft/hcsshim/internal/schema2/processor_2.go
									
										
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										1
									
								
								vendor/github.com/Microsoft/hcsshim/internal/schema2/processor_2.go
									
										
									
										generated
									
									
										vendored
									
									
								
							| 
						 | 
					@ -10,7 +10,6 @@
 | 
				
			||||||
package hcsschema
 | 
					package hcsschema
 | 
				
			||||||
 | 
					
 | 
				
			||||||
type Processor2 struct {
 | 
					type Processor2 struct {
 | 
				
			||||||
 | 
					 | 
				
			||||||
	Count int32 `json:"Count,omitempty"`
 | 
						Count int32 `json:"Count,omitempty"`
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	Limit int32 `json:"Limit,omitempty"`
 | 
						Limit int32 `json:"Limit,omitempty"`
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
							
								
								
									
										7
									
								
								vendor/github.com/Microsoft/hcsshim/internal/schema2/processor_stats.go
									
										
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										7
									
								
								vendor/github.com/Microsoft/hcsshim/internal/schema2/processor_stats.go
									
										
									
										generated
									
									
										vendored
									
									
								
							| 
						 | 
					@ -11,10 +11,9 @@ package hcsschema
 | 
				
			||||||
 | 
					
 | 
				
			||||||
//  CPU runtime statistics
 | 
					//  CPU runtime statistics
 | 
				
			||||||
type ProcessorStats struct {
 | 
					type ProcessorStats struct {
 | 
				
			||||||
 | 
						TotalRuntime100ns uint64 `json:"TotalRuntime100ns,omitempty"`
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	TotalRuntime100ns int32 `json:"TotalRuntime100ns,omitempty"`
 | 
						RuntimeUser100ns uint64 `json:"RuntimeUser100ns,omitempty"`
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	RuntimeUser100ns int32 `json:"RuntimeUser100ns,omitempty"`
 | 
						RuntimeKernel100ns uint64 `json:"RuntimeKernel100ns,omitempty"`
 | 
				
			||||||
 | 
					 | 
				
			||||||
	RuntimeKernel100ns int32 `json:"RuntimeKernel100ns,omitempty"`
 | 
					 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
							
								
								
									
										9
									
								
								vendor/github.com/Microsoft/hcsshim/internal/schema2/properties.go
									
										
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										9
									
								
								vendor/github.com/Microsoft/hcsshim/internal/schema2/properties.go
									
										
									
										generated
									
									
										vendored
									
									
								
							| 
						 | 
					@ -9,8 +9,11 @@
 | 
				
			||||||
 | 
					
 | 
				
			||||||
package hcsschema
 | 
					package hcsschema
 | 
				
			||||||
 | 
					
 | 
				
			||||||
type Properties struct {
 | 
					import (
 | 
				
			||||||
 | 
						v1 "github.com/containerd/cgroups/stats/v1"
 | 
				
			||||||
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					type Properties struct {
 | 
				
			||||||
	Id string `json:"Id,omitempty"`
 | 
						Id string `json:"Id,omitempty"`
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	SystemType string `json:"SystemType,omitempty"`
 | 
						SystemType string `json:"SystemType,omitempty"`
 | 
				
			||||||
| 
						 | 
					@ -44,4 +47,8 @@ type Properties struct {
 | 
				
			||||||
	SharedMemoryRegionInfo []SharedMemoryRegionInfo `json:"SharedMemoryRegionInfo,omitempty"`
 | 
						SharedMemoryRegionInfo []SharedMemoryRegionInfo `json:"SharedMemoryRegionInfo,omitempty"`
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	GuestConnectionInfo *GuestConnectionInfo `json:"GuestConnectionInfo,omitempty"`
 | 
						GuestConnectionInfo *GuestConnectionInfo `json:"GuestConnectionInfo,omitempty"`
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						// Metrics is not part of the API for HCS but this is used for LCOW v2 to
 | 
				
			||||||
 | 
						// return the full cgroup metrics from the guest.
 | 
				
			||||||
 | 
						Metrics *v1.Metrics `json:"LCOWMetrics,omitempty"`
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
							
								
								
									
										5
									
								
								vendor/github.com/Microsoft/hcsshim/internal/schema2/property_query.go
									
										
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										5
									
								
								vendor/github.com/Microsoft/hcsshim/internal/schema2/property_query.go
									
										
									
										generated
									
									
										vendored
									
									
								
							| 
						 | 
					@ -9,8 +9,7 @@
 | 
				
			||||||
 | 
					
 | 
				
			||||||
package hcsschema
 | 
					package hcsschema
 | 
				
			||||||
 | 
					
 | 
				
			||||||
//   By default the basic properties will be returned. This query provides a way to  request specific properties. 
 | 
					//   By default the basic properties will be returned. This query provides a way to  request specific properties.
 | 
				
			||||||
type PropertyQuery struct {
 | 
					type PropertyQuery struct {
 | 
				
			||||||
 | 
						PropertyTypes []PropertyType `json:"PropertyTypes,omitempty"`
 | 
				
			||||||
	PropertyTypes []string `json:"PropertyTypes,omitempty"`
 | 
					 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
							
								
								
									
										23
									
								
								vendor/github.com/Microsoft/hcsshim/internal/schema2/property_type.go
									
										
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										23
									
								
								vendor/github.com/Microsoft/hcsshim/internal/schema2/property_type.go
									
										
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,23 @@
 | 
				
			||||||
 | 
					/*
 | 
				
			||||||
 | 
					 * HCS API
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * No description provided (generated by Swagger Codegen https://github.com/swagger-api/swagger-codegen)
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * API version: 2.1
 | 
				
			||||||
 | 
					 * Generated by: Swagger Codegen (https://github.com/swagger-api/swagger-codegen.git)
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					package hcsschema
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					type PropertyType string
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					const (
 | 
				
			||||||
 | 
						PTMemory                      PropertyType = "Memory"
 | 
				
			||||||
 | 
						PTGuestMemory                 PropertyType = "GuestMemory"
 | 
				
			||||||
 | 
						PTStatistics                  PropertyType = "Statistics"
 | 
				
			||||||
 | 
						PTProcessList                 PropertyType = "ProcessList"
 | 
				
			||||||
 | 
						PTTerminateOnLastHandleClosed PropertyType = "TerminateOnLastHandleClosed"
 | 
				
			||||||
 | 
						PTSharedMemoryRegion          PropertyType = "SharedMemoryRegion"
 | 
				
			||||||
 | 
						PTGuestConnection             PropertyType = "GuestConnection"
 | 
				
			||||||
 | 
						PTICHeartbeatStatus           PropertyType = "ICHeartbeatStatus"
 | 
				
			||||||
 | 
					)
 | 
				
			||||||
							
								
								
									
										1
									
								
								vendor/github.com/Microsoft/hcsshim/internal/schema2/rdp_connection_options.go
									
										
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										1
									
								
								vendor/github.com/Microsoft/hcsshim/internal/schema2/rdp_connection_options.go
									
										
									
										generated
									
									
										vendored
									
									
								
							| 
						 | 
					@ -10,7 +10,6 @@
 | 
				
			||||||
package hcsschema
 | 
					package hcsschema
 | 
				
			||||||
 | 
					
 | 
				
			||||||
type RdpConnectionOptions struct {
 | 
					type RdpConnectionOptions struct {
 | 
				
			||||||
 | 
					 | 
				
			||||||
	AccessSids []string `json:"AccessSids,omitempty"`
 | 
						AccessSids []string `json:"AccessSids,omitempty"`
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	NamedPipe string `json:"NamedPipe,omitempty"`
 | 
						NamedPipe string `json:"NamedPipe,omitempty"`
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
							
								
								
									
										1
									
								
								vendor/github.com/Microsoft/hcsshim/internal/schema2/registry_changes.go
									
										
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										1
									
								
								vendor/github.com/Microsoft/hcsshim/internal/schema2/registry_changes.go
									
										
									
										generated
									
									
										vendored
									
									
								
							| 
						 | 
					@ -10,7 +10,6 @@
 | 
				
			||||||
package hcsschema
 | 
					package hcsschema
 | 
				
			||||||
 | 
					
 | 
				
			||||||
type RegistryChanges struct {
 | 
					type RegistryChanges struct {
 | 
				
			||||||
 | 
					 | 
				
			||||||
	AddValues []RegistryValue `json:"AddValues,omitempty"`
 | 
						AddValues []RegistryValue `json:"AddValues,omitempty"`
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	DeleteKeys []RegistryKey `json:"DeleteKeys,omitempty"`
 | 
						DeleteKeys []RegistryKey `json:"DeleteKeys,omitempty"`
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
							
								
								
									
										1
									
								
								vendor/github.com/Microsoft/hcsshim/internal/schema2/registry_key.go
									
										
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										1
									
								
								vendor/github.com/Microsoft/hcsshim/internal/schema2/registry_key.go
									
										
									
										generated
									
									
										vendored
									
									
								
							| 
						 | 
					@ -10,7 +10,6 @@
 | 
				
			||||||
package hcsschema
 | 
					package hcsschema
 | 
				
			||||||
 | 
					
 | 
				
			||||||
type RegistryKey struct {
 | 
					type RegistryKey struct {
 | 
				
			||||||
 | 
					 | 
				
			||||||
	Hive string `json:"Hive,omitempty"`
 | 
						Hive string `json:"Hive,omitempty"`
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	Name string `json:"Name,omitempty"`
 | 
						Name string `json:"Name,omitempty"`
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
							
								
								
									
										1
									
								
								vendor/github.com/Microsoft/hcsshim/internal/schema2/registry_value.go
									
										
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										1
									
								
								vendor/github.com/Microsoft/hcsshim/internal/schema2/registry_value.go
									
										
									
										generated
									
									
										vendored
									
									
								
							| 
						 | 
					@ -10,7 +10,6 @@
 | 
				
			||||||
package hcsschema
 | 
					package hcsschema
 | 
				
			||||||
 | 
					
 | 
				
			||||||
type RegistryValue struct {
 | 
					type RegistryValue struct {
 | 
				
			||||||
 | 
					 | 
				
			||||||
	Key *RegistryKey `json:"Key,omitempty"`
 | 
						Key *RegistryKey `json:"Key,omitempty"`
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	Name string `json:"Name,omitempty"`
 | 
						Name string `json:"Name,omitempty"`
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
							
								
								
									
										1
									
								
								vendor/github.com/Microsoft/hcsshim/internal/schema2/shared_memory_configuration.go
									
										
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										1
									
								
								vendor/github.com/Microsoft/hcsshim/internal/schema2/shared_memory_configuration.go
									
										
									
										generated
									
									
										vendored
									
									
								
							| 
						 | 
					@ -10,6 +10,5 @@
 | 
				
			||||||
package hcsschema
 | 
					package hcsschema
 | 
				
			||||||
 | 
					
 | 
				
			||||||
type SharedMemoryConfiguration struct {
 | 
					type SharedMemoryConfiguration struct {
 | 
				
			||||||
 | 
					 | 
				
			||||||
	Regions []SharedMemoryRegion `json:"Regions,omitempty"`
 | 
						Regions []SharedMemoryRegion `json:"Regions,omitempty"`
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
							
								
								
									
										1
									
								
								vendor/github.com/Microsoft/hcsshim/internal/schema2/shared_memory_region.go
									
										
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										1
									
								
								vendor/github.com/Microsoft/hcsshim/internal/schema2/shared_memory_region.go
									
										
									
										generated
									
									
										vendored
									
									
								
							| 
						 | 
					@ -10,7 +10,6 @@
 | 
				
			||||||
package hcsschema
 | 
					package hcsschema
 | 
				
			||||||
 | 
					
 | 
				
			||||||
type SharedMemoryRegion struct {
 | 
					type SharedMemoryRegion struct {
 | 
				
			||||||
 | 
					 | 
				
			||||||
	SectionName string `json:"SectionName,omitempty"`
 | 
						SectionName string `json:"SectionName,omitempty"`
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	StartOffset int32 `json:"StartOffset,omitempty"`
 | 
						StartOffset int32 `json:"StartOffset,omitempty"`
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
							
								
								
									
										1
									
								
								vendor/github.com/Microsoft/hcsshim/internal/schema2/shared_memory_region_info.go
									
										
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										1
									
								
								vendor/github.com/Microsoft/hcsshim/internal/schema2/shared_memory_region_info.go
									
										
									
										generated
									
									
										vendored
									
									
								
							| 
						 | 
					@ -10,7 +10,6 @@
 | 
				
			||||||
package hcsschema
 | 
					package hcsschema
 | 
				
			||||||
 | 
					
 | 
				
			||||||
type SharedMemoryRegionInfo struct {
 | 
					type SharedMemoryRegionInfo struct {
 | 
				
			||||||
 | 
					 | 
				
			||||||
	SectionName string `json:"SectionName,omitempty"`
 | 
						SectionName string `json:"SectionName,omitempty"`
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	GuestPhysicalAddress int32 `json:"GuestPhysicalAddress,omitempty"`
 | 
						GuestPhysicalAddress int32 `json:"GuestPhysicalAddress,omitempty"`
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
							
								
								
									
										1
									
								
								vendor/github.com/Microsoft/hcsshim/internal/schema2/silo_properties.go
									
										
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										1
									
								
								vendor/github.com/Microsoft/hcsshim/internal/schema2/silo_properties.go
									
										
									
										generated
									
									
										vendored
									
									
								
							| 
						 | 
					@ -11,7 +11,6 @@ package hcsschema
 | 
				
			||||||
 | 
					
 | 
				
			||||||
//  Silo job information
 | 
					//  Silo job information
 | 
				
			||||||
type SiloProperties struct {
 | 
					type SiloProperties struct {
 | 
				
			||||||
 | 
					 | 
				
			||||||
	Enabled bool `json:"Enabled,omitempty"`
 | 
						Enabled bool `json:"Enabled,omitempty"`
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	JobName string `json:"JobName,omitempty"`
 | 
						JobName string `json:"JobName,omitempty"`
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
							
								
								
									
										3
									
								
								vendor/github.com/Microsoft/hcsshim/internal/schema2/statistics.go
									
										
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										3
									
								
								vendor/github.com/Microsoft/hcsshim/internal/schema2/statistics.go
									
										
									
										generated
									
									
										vendored
									
									
								
							| 
						 | 
					@ -15,12 +15,11 @@ import (
 | 
				
			||||||
 | 
					
 | 
				
			||||||
//  Runtime statistics for a container
 | 
					//  Runtime statistics for a container
 | 
				
			||||||
type Statistics struct {
 | 
					type Statistics struct {
 | 
				
			||||||
 | 
					 | 
				
			||||||
	Timestamp time.Time `json:"Timestamp,omitempty"`
 | 
						Timestamp time.Time `json:"Timestamp,omitempty"`
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	ContainerStartTime time.Time `json:"ContainerStartTime,omitempty"`
 | 
						ContainerStartTime time.Time `json:"ContainerStartTime,omitempty"`
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	Uptime100ns int32 `json:"Uptime100ns,omitempty"`
 | 
						Uptime100ns uint64 `json:"Uptime100ns,omitempty"`
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	Processor *ProcessorStats `json:"Processor,omitempty"`
 | 
						Processor *ProcessorStats `json:"Processor,omitempty"`
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
							
								
								
									
										1
									
								
								vendor/github.com/Microsoft/hcsshim/internal/schema2/storage_qo_s.go
									
										
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										1
									
								
								vendor/github.com/Microsoft/hcsshim/internal/schema2/storage_qo_s.go
									
										
									
										generated
									
									
										vendored
									
									
								
							| 
						 | 
					@ -10,7 +10,6 @@
 | 
				
			||||||
package hcsschema
 | 
					package hcsschema
 | 
				
			||||||
 | 
					
 | 
				
			||||||
type StorageQoS struct {
 | 
					type StorageQoS struct {
 | 
				
			||||||
 | 
					 | 
				
			||||||
	IopsMaximum int32 `json:"IopsMaximum,omitempty"`
 | 
						IopsMaximum int32 `json:"IopsMaximum,omitempty"`
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	BandwidthMaximum int32 `json:"BandwidthMaximum,omitempty"`
 | 
						BandwidthMaximum int32 `json:"BandwidthMaximum,omitempty"`
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
							
								
								
									
										9
									
								
								vendor/github.com/Microsoft/hcsshim/internal/schema2/storage_stats.go
									
										
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										9
									
								
								vendor/github.com/Microsoft/hcsshim/internal/schema2/storage_stats.go
									
										
									
										generated
									
									
										vendored
									
									
								
							| 
						 | 
					@ -11,12 +11,11 @@ package hcsschema
 | 
				
			||||||
 | 
					
 | 
				
			||||||
//  Storage runtime statistics
 | 
					//  Storage runtime statistics
 | 
				
			||||||
type StorageStats struct {
 | 
					type StorageStats struct {
 | 
				
			||||||
 | 
						ReadCountNormalized uint64 `json:"ReadCountNormalized,omitempty"`
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	ReadCountNormalized int32 `json:"ReadCountNormalized,omitempty"`
 | 
						ReadSizeBytes uint64 `json:"ReadSizeBytes,omitempty"`
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	ReadSizeBytes int32 `json:"ReadSizeBytes,omitempty"`
 | 
						WriteCountNormalized uint64 `json:"WriteCountNormalized,omitempty"`
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	WriteCountNormalized int32 `json:"WriteCountNormalized,omitempty"`
 | 
						WriteSizeBytes uint64 `json:"WriteSizeBytes,omitempty"`
 | 
				
			||||||
 | 
					 | 
				
			||||||
	WriteSizeBytes int32 `json:"WriteSizeBytes,omitempty"`
 | 
					 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
							
								
								
									
										1
									
								
								vendor/github.com/Microsoft/hcsshim/internal/schema2/topology.go
									
										
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										1
									
								
								vendor/github.com/Microsoft/hcsshim/internal/schema2/topology.go
									
										
									
										generated
									
									
										vendored
									
									
								
							| 
						 | 
					@ -10,7 +10,6 @@
 | 
				
			||||||
package hcsschema
 | 
					package hcsschema
 | 
				
			||||||
 | 
					
 | 
				
			||||||
type Topology struct {
 | 
					type Topology struct {
 | 
				
			||||||
 | 
					 | 
				
			||||||
	Memory *Memory2 `json:"Memory,omitempty"`
 | 
						Memory *Memory2 `json:"Memory,omitempty"`
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	Processor *Processor2 `json:"Processor,omitempty"`
 | 
						Processor *Processor2 `json:"Processor,omitempty"`
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
							
								
								
									
										1
									
								
								vendor/github.com/Microsoft/hcsshim/internal/schema2/uefi.go
									
										
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										1
									
								
								vendor/github.com/Microsoft/hcsshim/internal/schema2/uefi.go
									
										
									
										generated
									
									
										vendored
									
									
								
							| 
						 | 
					@ -10,7 +10,6 @@
 | 
				
			||||||
package hcsschema
 | 
					package hcsschema
 | 
				
			||||||
 | 
					
 | 
				
			||||||
type Uefi struct {
 | 
					type Uefi struct {
 | 
				
			||||||
 | 
					 | 
				
			||||||
	EnableDebugger bool `json:"EnableDebugger,omitempty"`
 | 
						EnableDebugger bool `json:"EnableDebugger,omitempty"`
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	SecureBootTemplateId string `json:"SecureBootTemplateId,omitempty"`
 | 
						SecureBootTemplateId string `json:"SecureBootTemplateId,omitempty"`
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
							
								
								
									
										1
									
								
								vendor/github.com/Microsoft/hcsshim/internal/schema2/uefi_boot_entry.go
									
										
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										1
									
								
								vendor/github.com/Microsoft/hcsshim/internal/schema2/uefi_boot_entry.go
									
										
									
										generated
									
									
										vendored
									
									
								
							| 
						 | 
					@ -10,7 +10,6 @@
 | 
				
			||||||
package hcsschema
 | 
					package hcsschema
 | 
				
			||||||
 | 
					
 | 
				
			||||||
type UefiBootEntry struct {
 | 
					type UefiBootEntry struct {
 | 
				
			||||||
 | 
					 | 
				
			||||||
	DeviceType string `json:"DeviceType,omitempty"`
 | 
						DeviceType string `json:"DeviceType,omitempty"`
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	DevicePath string `json:"DevicePath,omitempty"`
 | 
						DevicePath string `json:"DevicePath,omitempty"`
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
							
								
								
									
										1
									
								
								vendor/github.com/Microsoft/hcsshim/internal/schema2/version.go
									
										
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										1
									
								
								vendor/github.com/Microsoft/hcsshim/internal/schema2/version.go
									
										
									
										generated
									
									
										vendored
									
									
								
							| 
						 | 
					@ -10,7 +10,6 @@
 | 
				
			||||||
package hcsschema
 | 
					package hcsschema
 | 
				
			||||||
 | 
					
 | 
				
			||||||
type Version struct {
 | 
					type Version struct {
 | 
				
			||||||
 | 
					 | 
				
			||||||
	Major int32 `json:"Major,omitempty"`
 | 
						Major int32 `json:"Major,omitempty"`
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	Minor int32 `json:"Minor,omitempty"`
 | 
						Minor int32 `json:"Minor,omitempty"`
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
							
								
								
									
										1
									
								
								vendor/github.com/Microsoft/hcsshim/internal/schema2/video_monitor.go
									
										
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										1
									
								
								vendor/github.com/Microsoft/hcsshim/internal/schema2/video_monitor.go
									
										
									
										generated
									
									
										vendored
									
									
								
							| 
						 | 
					@ -10,7 +10,6 @@
 | 
				
			||||||
package hcsschema
 | 
					package hcsschema
 | 
				
			||||||
 | 
					
 | 
				
			||||||
type VideoMonitor struct {
 | 
					type VideoMonitor struct {
 | 
				
			||||||
 | 
					 | 
				
			||||||
	HorizontalResolution int32 `json:"HorizontalResolution,omitempty"`
 | 
						HorizontalResolution int32 `json:"HorizontalResolution,omitempty"`
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	VerticalResolution int32 `json:"VerticalResolution,omitempty"`
 | 
						VerticalResolution int32 `json:"VerticalResolution,omitempty"`
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
							
								
								
									
										1
									
								
								vendor/github.com/Microsoft/hcsshim/internal/schema2/virtual_node_info.go
									
										
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										1
									
								
								vendor/github.com/Microsoft/hcsshim/internal/schema2/virtual_node_info.go
									
										
									
										generated
									
									
										vendored
									
									
								
							| 
						 | 
					@ -10,7 +10,6 @@
 | 
				
			||||||
package hcsschema
 | 
					package hcsschema
 | 
				
			||||||
 | 
					
 | 
				
			||||||
type VirtualNodeInfo struct {
 | 
					type VirtualNodeInfo struct {
 | 
				
			||||||
 | 
					 | 
				
			||||||
	VirtualNodeIndex int32 `json:"VirtualNodeIndex,omitempty"`
 | 
						VirtualNodeIndex int32 `json:"VirtualNodeIndex,omitempty"`
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	PhysicalNodeNumber int32 `json:"PhysicalNodeNumber,omitempty"`
 | 
						PhysicalNodeNumber int32 `json:"PhysicalNodeNumber,omitempty"`
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
							
								
								
									
										1
									
								
								vendor/github.com/Microsoft/hcsshim/internal/schema2/virtual_p_mem_device.go
									
										
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										1
									
								
								vendor/github.com/Microsoft/hcsshim/internal/schema2/virtual_p_mem_device.go
									
										
									
										generated
									
									
										vendored
									
									
								
							| 
						 | 
					@ -10,7 +10,6 @@
 | 
				
			||||||
package hcsschema
 | 
					package hcsschema
 | 
				
			||||||
 | 
					
 | 
				
			||||||
type VirtualPMemDevice struct {
 | 
					type VirtualPMemDevice struct {
 | 
				
			||||||
 | 
					 | 
				
			||||||
	HostPath string `json:"HostPath,omitempty"`
 | 
						HostPath string `json:"HostPath,omitempty"`
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	ReadOnly bool `json:"ReadOnly,omitempty"`
 | 
						ReadOnly bool `json:"ReadOnly,omitempty"`
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
							
								
								
									
										1
									
								
								vendor/github.com/Microsoft/hcsshim/internal/schema2/virtual_smb.go
									
										
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										1
									
								
								vendor/github.com/Microsoft/hcsshim/internal/schema2/virtual_smb.go
									
										
									
										generated
									
									
										vendored
									
									
								
							| 
						 | 
					@ -10,7 +10,6 @@
 | 
				
			||||||
package hcsschema
 | 
					package hcsschema
 | 
				
			||||||
 | 
					
 | 
				
			||||||
type VirtualSmb struct {
 | 
					type VirtualSmb struct {
 | 
				
			||||||
 | 
					 | 
				
			||||||
	Shares []VirtualSmbShare `json:"Shares,omitempty"`
 | 
						Shares []VirtualSmbShare `json:"Shares,omitempty"`
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	DirectFileMappingInMB int64 `json:"DirectFileMappingInMB,omitempty"`
 | 
						DirectFileMappingInMB int64 `json:"DirectFileMappingInMB,omitempty"`
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
							
								
								
									
										1
									
								
								vendor/github.com/Microsoft/hcsshim/internal/schema2/virtual_smb_share.go
									
										
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										1
									
								
								vendor/github.com/Microsoft/hcsshim/internal/schema2/virtual_smb_share.go
									
										
									
										generated
									
									
										vendored
									
									
								
							| 
						 | 
					@ -10,7 +10,6 @@
 | 
				
			||||||
package hcsschema
 | 
					package hcsschema
 | 
				
			||||||
 | 
					
 | 
				
			||||||
type VirtualSmbShare struct {
 | 
					type VirtualSmbShare struct {
 | 
				
			||||||
 | 
					 | 
				
			||||||
	Name string `json:"Name,omitempty"`
 | 
						Name string `json:"Name,omitempty"`
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	Path string `json:"Path,omitempty"`
 | 
						Path string `json:"Path,omitempty"`
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
							
								
								
									
										1
									
								
								vendor/github.com/Microsoft/hcsshim/internal/schema2/virtual_smb_share_options.go
									
										
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										1
									
								
								vendor/github.com/Microsoft/hcsshim/internal/schema2/virtual_smb_share_options.go
									
										
									
										generated
									
									
										vendored
									
									
								
							| 
						 | 
					@ -10,7 +10,6 @@
 | 
				
			||||||
package hcsschema
 | 
					package hcsschema
 | 
				
			||||||
 | 
					
 | 
				
			||||||
type VirtualSmbShareOptions struct {
 | 
					type VirtualSmbShareOptions struct {
 | 
				
			||||||
 | 
					 | 
				
			||||||
	ReadOnly bool `json:"ReadOnly,omitempty"`
 | 
						ReadOnly bool `json:"ReadOnly,omitempty"`
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	//  convert exclusive access to shared read access
 | 
						//  convert exclusive access to shared read access
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
							
								
								
									
										5
									
								
								vendor/github.com/Microsoft/hcsshim/internal/schema2/vm_memory.go
									
										
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										5
									
								
								vendor/github.com/Microsoft/hcsshim/internal/schema2/vm_memory.go
									
										
									
										generated
									
									
										vendored
									
									
								
							| 
						 | 
					@ -10,14 +10,13 @@
 | 
				
			||||||
package hcsschema
 | 
					package hcsschema
 | 
				
			||||||
 | 
					
 | 
				
			||||||
type VmMemory struct {
 | 
					type VmMemory struct {
 | 
				
			||||||
 | 
					 | 
				
			||||||
	AvailableMemory int32 `json:"AvailableMemory,omitempty"`
 | 
						AvailableMemory int32 `json:"AvailableMemory,omitempty"`
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	AvailableMemoryBuffer int32 `json:"AvailableMemoryBuffer,omitempty"`
 | 
						AvailableMemoryBuffer int32 `json:"AvailableMemoryBuffer,omitempty"`
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	ReservedMemory int32 `json:"ReservedMemory,omitempty"`
 | 
						ReservedMemory uint64 `json:"ReservedMemory,omitempty"`
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	AssignedMemory int32 `json:"AssignedMemory,omitempty"`
 | 
						AssignedMemory uint64 `json:"AssignedMemory,omitempty"`
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	SlpActive bool `json:"SlpActive,omitempty"`
 | 
						SlpActive bool `json:"SlpActive,omitempty"`
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
							
								
								
									
										1
									
								
								vendor/github.com/Microsoft/hcsshim/internal/schema2/windows_crash_reporting.go
									
										
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										1
									
								
								vendor/github.com/Microsoft/hcsshim/internal/schema2/windows_crash_reporting.go
									
										
									
										generated
									
									
										vendored
									
									
								
							| 
						 | 
					@ -10,7 +10,6 @@
 | 
				
			||||||
package hcsschema
 | 
					package hcsschema
 | 
				
			||||||
 | 
					
 | 
				
			||||||
type WindowsCrashReporting struct {
 | 
					type WindowsCrashReporting struct {
 | 
				
			||||||
 | 
					 | 
				
			||||||
	DumpFileName string `json:"DumpFileName,omitempty"`
 | 
						DumpFileName string `json:"DumpFileName,omitempty"`
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	MaxDumpSize int64 `json:"MaxDumpSize,omitempty"`
 | 
						MaxDumpSize int64 `json:"MaxDumpSize,omitempty"`
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
							
								
								
									
										565
									
								
								vendor/github.com/Microsoft/hcsshim/internal/vmcompute/vmcompute.go
									
										
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										565
									
								
								vendor/github.com/Microsoft/hcsshim/internal/vmcompute/vmcompute.go
									
										
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,565 @@
 | 
				
			||||||
 | 
					package vmcompute
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import (
 | 
				
			||||||
 | 
						gcontext "context"
 | 
				
			||||||
 | 
						"syscall"
 | 
				
			||||||
 | 
						"time"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						"github.com/Microsoft/hcsshim/internal/interop"
 | 
				
			||||||
 | 
						"github.com/Microsoft/hcsshim/internal/log"
 | 
				
			||||||
 | 
						"github.com/Microsoft/hcsshim/internal/logfields"
 | 
				
			||||||
 | 
						"github.com/Microsoft/hcsshim/internal/oc"
 | 
				
			||||||
 | 
						"github.com/Microsoft/hcsshim/internal/timeout"
 | 
				
			||||||
 | 
						"go.opencensus.io/trace"
 | 
				
			||||||
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					//go:generate go run ../../mksyscall_windows.go -output zsyscall_windows.go vmcompute.go
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					//sys hcsEnumerateComputeSystems(query string, computeSystems **uint16, result **uint16) (hr error) = vmcompute.HcsEnumerateComputeSystems?
 | 
				
			||||||
 | 
					//sys hcsCreateComputeSystem(id string, configuration string, identity syscall.Handle, computeSystem *HcsSystem, result **uint16) (hr error) = vmcompute.HcsCreateComputeSystem?
 | 
				
			||||||
 | 
					//sys hcsOpenComputeSystem(id string, computeSystem *HcsSystem, result **uint16) (hr error) = vmcompute.HcsOpenComputeSystem?
 | 
				
			||||||
 | 
					//sys hcsCloseComputeSystem(computeSystem HcsSystem) (hr error) = vmcompute.HcsCloseComputeSystem?
 | 
				
			||||||
 | 
					//sys hcsStartComputeSystem(computeSystem HcsSystem, options string, result **uint16) (hr error) = vmcompute.HcsStartComputeSystem?
 | 
				
			||||||
 | 
					//sys hcsShutdownComputeSystem(computeSystem HcsSystem, options string, result **uint16) (hr error) = vmcompute.HcsShutdownComputeSystem?
 | 
				
			||||||
 | 
					//sys hcsTerminateComputeSystem(computeSystem HcsSystem, options string, result **uint16) (hr error) = vmcompute.HcsTerminateComputeSystem?
 | 
				
			||||||
 | 
					//sys hcsPauseComputeSystem(computeSystem HcsSystem, options string, result **uint16) (hr error) = vmcompute.HcsPauseComputeSystem?
 | 
				
			||||||
 | 
					//sys hcsResumeComputeSystem(computeSystem HcsSystem, options string, result **uint16) (hr error) = vmcompute.HcsResumeComputeSystem?
 | 
				
			||||||
 | 
					//sys hcsGetComputeSystemProperties(computeSystem HcsSystem, propertyQuery string, properties **uint16, result **uint16) (hr error) = vmcompute.HcsGetComputeSystemProperties?
 | 
				
			||||||
 | 
					//sys hcsModifyComputeSystem(computeSystem HcsSystem, configuration string, result **uint16) (hr error) = vmcompute.HcsModifyComputeSystem?
 | 
				
			||||||
 | 
					//sys hcsRegisterComputeSystemCallback(computeSystem HcsSystem, callback uintptr, context uintptr, callbackHandle *HcsCallback) (hr error) = vmcompute.HcsRegisterComputeSystemCallback?
 | 
				
			||||||
 | 
					//sys hcsUnregisterComputeSystemCallback(callbackHandle HcsCallback) (hr error) = vmcompute.HcsUnregisterComputeSystemCallback?
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					//sys hcsCreateProcess(computeSystem HcsSystem, processParameters string, processInformation *HcsProcessInformation, process *HcsProcess, result **uint16) (hr error) = vmcompute.HcsCreateProcess?
 | 
				
			||||||
 | 
					//sys hcsOpenProcess(computeSystem HcsSystem, pid uint32, process *HcsProcess, result **uint16) (hr error) = vmcompute.HcsOpenProcess?
 | 
				
			||||||
 | 
					//sys hcsCloseProcess(process HcsProcess) (hr error) = vmcompute.HcsCloseProcess?
 | 
				
			||||||
 | 
					//sys hcsTerminateProcess(process HcsProcess, result **uint16) (hr error) = vmcompute.HcsTerminateProcess?
 | 
				
			||||||
 | 
					//sys hcsSignalProcess(process HcsProcess, options string, result **uint16) (hr error) = vmcompute.HcsSignalProcess?
 | 
				
			||||||
 | 
					//sys hcsGetProcessInfo(process HcsProcess, processInformation *HcsProcessInformation, result **uint16) (hr error) = vmcompute.HcsGetProcessInfo?
 | 
				
			||||||
 | 
					//sys hcsGetProcessProperties(process HcsProcess, processProperties **uint16, result **uint16) (hr error) = vmcompute.HcsGetProcessProperties?
 | 
				
			||||||
 | 
					//sys hcsModifyProcess(process HcsProcess, settings string, result **uint16) (hr error) = vmcompute.HcsModifyProcess?
 | 
				
			||||||
 | 
					//sys hcsGetServiceProperties(propertyQuery string, properties **uint16, result **uint16) (hr error) = vmcompute.HcsGetServiceProperties?
 | 
				
			||||||
 | 
					//sys hcsRegisterProcessCallback(process HcsProcess, callback uintptr, context uintptr, callbackHandle *HcsCallback) (hr error) = vmcompute.HcsRegisterProcessCallback?
 | 
				
			||||||
 | 
					//sys hcsUnregisterProcessCallback(callbackHandle HcsCallback) (hr error) = vmcompute.HcsUnregisterProcessCallback?
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// errVmcomputeOperationPending is an error encountered when the operation is being completed asynchronously
 | 
				
			||||||
 | 
					const errVmcomputeOperationPending = syscall.Errno(0xC0370103)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// HcsSystem is the handle associated with a created compute system.
 | 
				
			||||||
 | 
					type HcsSystem syscall.Handle
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// HcsProcess is the handle associated with a created process in a compute
 | 
				
			||||||
 | 
					// system.
 | 
				
			||||||
 | 
					type HcsProcess syscall.Handle
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// HcsCallback is the handle associated with the function to call when events
 | 
				
			||||||
 | 
					// occur.
 | 
				
			||||||
 | 
					type HcsCallback syscall.Handle
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// HcsProcessInformation is the structure used when creating or getting process
 | 
				
			||||||
 | 
					// info.
 | 
				
			||||||
 | 
					type HcsProcessInformation struct {
 | 
				
			||||||
 | 
						// ProcessId is the pid of the created process.
 | 
				
			||||||
 | 
						ProcessId uint32
 | 
				
			||||||
 | 
						reserved  uint32
 | 
				
			||||||
 | 
						// StdInput is the handle associated with the stdin of the process.
 | 
				
			||||||
 | 
						StdInput syscall.Handle
 | 
				
			||||||
 | 
						// StdOutput is the handle associated with the stdout of the process.
 | 
				
			||||||
 | 
						StdOutput syscall.Handle
 | 
				
			||||||
 | 
						// StdError is the handle associated with the stderr of the process.
 | 
				
			||||||
 | 
						StdError syscall.Handle
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func execute(ctx gcontext.Context, timeout time.Duration, f func() error) error {
 | 
				
			||||||
 | 
						if timeout > 0 {
 | 
				
			||||||
 | 
							var cancel gcontext.CancelFunc
 | 
				
			||||||
 | 
							ctx, cancel = gcontext.WithTimeout(ctx, timeout)
 | 
				
			||||||
 | 
							defer cancel()
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						done := make(chan error, 1)
 | 
				
			||||||
 | 
						go func() {
 | 
				
			||||||
 | 
							done <- f()
 | 
				
			||||||
 | 
						}()
 | 
				
			||||||
 | 
						select {
 | 
				
			||||||
 | 
						case <-ctx.Done():
 | 
				
			||||||
 | 
							if ctx.Err() == gcontext.DeadlineExceeded {
 | 
				
			||||||
 | 
								log.G(ctx).WithField(logfields.Timeout, timeout).
 | 
				
			||||||
 | 
									Warning("Syscall did not complete within operation timeout. This may indicate a platform issue. If it appears to be making no forward progress, obtain the stacks and see if there is a syscall stuck in the platform API for a significant length of time.")
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							return ctx.Err()
 | 
				
			||||||
 | 
						case err := <-done:
 | 
				
			||||||
 | 
							return err
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func HcsEnumerateComputeSystems(ctx gcontext.Context, query string) (computeSystems, result string, hr error) {
 | 
				
			||||||
 | 
						ctx, span := trace.StartSpan(ctx, "HcsEnumerateComputeSystems")
 | 
				
			||||||
 | 
						defer span.End()
 | 
				
			||||||
 | 
						defer func() {
 | 
				
			||||||
 | 
							if result != "" {
 | 
				
			||||||
 | 
								span.AddAttributes(trace.StringAttribute("result", result))
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							oc.SetSpanStatus(span, hr)
 | 
				
			||||||
 | 
						}()
 | 
				
			||||||
 | 
						span.AddAttributes(trace.StringAttribute("query", query))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						return computeSystems, result, execute(ctx, timeout.SyscallWatcher, func() error {
 | 
				
			||||||
 | 
							var (
 | 
				
			||||||
 | 
								computeSystemsp *uint16
 | 
				
			||||||
 | 
								resultp         *uint16
 | 
				
			||||||
 | 
							)
 | 
				
			||||||
 | 
							err := hcsEnumerateComputeSystems(query, &computeSystemsp, &resultp)
 | 
				
			||||||
 | 
							if computeSystemsp != nil {
 | 
				
			||||||
 | 
								computeSystems = interop.ConvertAndFreeCoTaskMemString(computeSystemsp)
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							if resultp != nil {
 | 
				
			||||||
 | 
								result = interop.ConvertAndFreeCoTaskMemString(resultp)
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							return err
 | 
				
			||||||
 | 
						})
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func HcsCreateComputeSystem(ctx gcontext.Context, id string, configuration string, identity syscall.Handle) (computeSystem HcsSystem, result string, hr error) {
 | 
				
			||||||
 | 
						ctx, span := trace.StartSpan(ctx, "HcsCreateComputeSystem")
 | 
				
			||||||
 | 
						defer span.End()
 | 
				
			||||||
 | 
						defer func() {
 | 
				
			||||||
 | 
							if result != "" {
 | 
				
			||||||
 | 
								span.AddAttributes(trace.StringAttribute("result", result))
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							if hr != errVmcomputeOperationPending {
 | 
				
			||||||
 | 
								oc.SetSpanStatus(span, hr)
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
						}()
 | 
				
			||||||
 | 
						span.AddAttributes(
 | 
				
			||||||
 | 
							trace.StringAttribute("id", id),
 | 
				
			||||||
 | 
							trace.StringAttribute("configuration", configuration))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						return computeSystem, result, execute(ctx, timeout.SystemCreate, func() error {
 | 
				
			||||||
 | 
							var resultp *uint16
 | 
				
			||||||
 | 
							err := hcsCreateComputeSystem(id, configuration, identity, &computeSystem, &resultp)
 | 
				
			||||||
 | 
							if resultp != nil {
 | 
				
			||||||
 | 
								result = interop.ConvertAndFreeCoTaskMemString(resultp)
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							return err
 | 
				
			||||||
 | 
						})
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func HcsOpenComputeSystem(ctx gcontext.Context, id string) (computeSystem HcsSystem, result string, hr error) {
 | 
				
			||||||
 | 
						ctx, span := trace.StartSpan(ctx, "HcsOpenComputeSystem")
 | 
				
			||||||
 | 
						defer span.End()
 | 
				
			||||||
 | 
						defer func() {
 | 
				
			||||||
 | 
							if result != "" {
 | 
				
			||||||
 | 
								span.AddAttributes(trace.StringAttribute("result", result))
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							oc.SetSpanStatus(span, hr)
 | 
				
			||||||
 | 
						}()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						return computeSystem, result, execute(ctx, timeout.SyscallWatcher, func() error {
 | 
				
			||||||
 | 
							var resultp *uint16
 | 
				
			||||||
 | 
							err := hcsOpenComputeSystem(id, &computeSystem, &resultp)
 | 
				
			||||||
 | 
							if resultp != nil {
 | 
				
			||||||
 | 
								result = interop.ConvertAndFreeCoTaskMemString(resultp)
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							return err
 | 
				
			||||||
 | 
						})
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func HcsCloseComputeSystem(ctx gcontext.Context, computeSystem HcsSystem) (hr error) {
 | 
				
			||||||
 | 
						ctx, span := trace.StartSpan(ctx, "HcsCloseComputeSystem")
 | 
				
			||||||
 | 
						defer span.End()
 | 
				
			||||||
 | 
						defer func() { oc.SetSpanStatus(span, hr) }()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						return execute(ctx, timeout.SyscallWatcher, func() error {
 | 
				
			||||||
 | 
							return hcsCloseComputeSystem(computeSystem)
 | 
				
			||||||
 | 
						})
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func HcsStartComputeSystem(ctx gcontext.Context, computeSystem HcsSystem, options string) (result string, hr error) {
 | 
				
			||||||
 | 
						ctx, span := trace.StartSpan(ctx, "HcsStartComputeSystem")
 | 
				
			||||||
 | 
						defer span.End()
 | 
				
			||||||
 | 
						defer func() {
 | 
				
			||||||
 | 
							if result != "" {
 | 
				
			||||||
 | 
								span.AddAttributes(trace.StringAttribute("result", result))
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							if hr != errVmcomputeOperationPending {
 | 
				
			||||||
 | 
								oc.SetSpanStatus(span, hr)
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
						}()
 | 
				
			||||||
 | 
						span.AddAttributes(trace.StringAttribute("options", options))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						return result, execute(ctx, timeout.SystemStart, func() error {
 | 
				
			||||||
 | 
							var resultp *uint16
 | 
				
			||||||
 | 
							err := hcsStartComputeSystem(computeSystem, options, &resultp)
 | 
				
			||||||
 | 
							if resultp != nil {
 | 
				
			||||||
 | 
								result = interop.ConvertAndFreeCoTaskMemString(resultp)
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							return err
 | 
				
			||||||
 | 
						})
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func HcsShutdownComputeSystem(ctx gcontext.Context, computeSystem HcsSystem, options string) (result string, hr error) {
 | 
				
			||||||
 | 
						ctx, span := trace.StartSpan(ctx, "HcsShutdownComputeSystem")
 | 
				
			||||||
 | 
						defer span.End()
 | 
				
			||||||
 | 
						defer func() {
 | 
				
			||||||
 | 
							if result != "" {
 | 
				
			||||||
 | 
								span.AddAttributes(trace.StringAttribute("result", result))
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							if hr != errVmcomputeOperationPending {
 | 
				
			||||||
 | 
								oc.SetSpanStatus(span, hr)
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
						}()
 | 
				
			||||||
 | 
						span.AddAttributes(trace.StringAttribute("options", options))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						return result, execute(ctx, timeout.SyscallWatcher, func() error {
 | 
				
			||||||
 | 
							var resultp *uint16
 | 
				
			||||||
 | 
							err := hcsShutdownComputeSystem(computeSystem, options, &resultp)
 | 
				
			||||||
 | 
							if resultp != nil {
 | 
				
			||||||
 | 
								result = interop.ConvertAndFreeCoTaskMemString(resultp)
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							return err
 | 
				
			||||||
 | 
						})
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func HcsTerminateComputeSystem(ctx gcontext.Context, computeSystem HcsSystem, options string) (result string, hr error) {
 | 
				
			||||||
 | 
						ctx, span := trace.StartSpan(ctx, "HcsTerminateComputeSystem")
 | 
				
			||||||
 | 
						defer span.End()
 | 
				
			||||||
 | 
						defer func() {
 | 
				
			||||||
 | 
							if result != "" {
 | 
				
			||||||
 | 
								span.AddAttributes(trace.StringAttribute("result", result))
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							if hr != errVmcomputeOperationPending {
 | 
				
			||||||
 | 
								oc.SetSpanStatus(span, hr)
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
						}()
 | 
				
			||||||
 | 
						span.AddAttributes(trace.StringAttribute("options", options))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						return result, execute(ctx, timeout.SyscallWatcher, func() error {
 | 
				
			||||||
 | 
							var resultp *uint16
 | 
				
			||||||
 | 
							err := hcsTerminateComputeSystem(computeSystem, options, &resultp)
 | 
				
			||||||
 | 
							if resultp != nil {
 | 
				
			||||||
 | 
								result = interop.ConvertAndFreeCoTaskMemString(resultp)
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							return err
 | 
				
			||||||
 | 
						})
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func HcsPauseComputeSystem(ctx gcontext.Context, computeSystem HcsSystem, options string) (result string, hr error) {
 | 
				
			||||||
 | 
						ctx, span := trace.StartSpan(ctx, "HcsPauseComputeSystem")
 | 
				
			||||||
 | 
						defer span.End()
 | 
				
			||||||
 | 
						defer func() {
 | 
				
			||||||
 | 
							if result != "" {
 | 
				
			||||||
 | 
								span.AddAttributes(trace.StringAttribute("result", result))
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							if hr != errVmcomputeOperationPending {
 | 
				
			||||||
 | 
								oc.SetSpanStatus(span, hr)
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
						}()
 | 
				
			||||||
 | 
						span.AddAttributes(trace.StringAttribute("options", options))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						return result, execute(ctx, timeout.SystemPause, func() error {
 | 
				
			||||||
 | 
							var resultp *uint16
 | 
				
			||||||
 | 
							err := hcsPauseComputeSystem(computeSystem, options, &resultp)
 | 
				
			||||||
 | 
							if resultp != nil {
 | 
				
			||||||
 | 
								result = interop.ConvertAndFreeCoTaskMemString(resultp)
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							return err
 | 
				
			||||||
 | 
						})
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func HcsResumeComputeSystem(ctx gcontext.Context, computeSystem HcsSystem, options string) (result string, hr error) {
 | 
				
			||||||
 | 
						ctx, span := trace.StartSpan(ctx, "HcsResumeComputeSystem")
 | 
				
			||||||
 | 
						defer span.End()
 | 
				
			||||||
 | 
						defer func() {
 | 
				
			||||||
 | 
							if result != "" {
 | 
				
			||||||
 | 
								span.AddAttributes(trace.StringAttribute("result", result))
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							if hr != errVmcomputeOperationPending {
 | 
				
			||||||
 | 
								oc.SetSpanStatus(span, hr)
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
						}()
 | 
				
			||||||
 | 
						span.AddAttributes(trace.StringAttribute("options", options))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						return result, execute(ctx, timeout.SystemResume, func() error {
 | 
				
			||||||
 | 
							var resultp *uint16
 | 
				
			||||||
 | 
							err := hcsResumeComputeSystem(computeSystem, options, &resultp)
 | 
				
			||||||
 | 
							if resultp != nil {
 | 
				
			||||||
 | 
								result = interop.ConvertAndFreeCoTaskMemString(resultp)
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							return err
 | 
				
			||||||
 | 
						})
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func HcsGetComputeSystemProperties(ctx gcontext.Context, computeSystem HcsSystem, propertyQuery string) (properties, result string, hr error) {
 | 
				
			||||||
 | 
						ctx, span := trace.StartSpan(ctx, "HcsGetComputeSystemProperties")
 | 
				
			||||||
 | 
						defer span.End()
 | 
				
			||||||
 | 
						defer func() {
 | 
				
			||||||
 | 
							if result != "" {
 | 
				
			||||||
 | 
								span.AddAttributes(trace.StringAttribute("result", result))
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							oc.SetSpanStatus(span, hr)
 | 
				
			||||||
 | 
						}()
 | 
				
			||||||
 | 
						span.AddAttributes(trace.StringAttribute("propertyQuery", propertyQuery))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						return properties, result, execute(ctx, timeout.SyscallWatcher, func() error {
 | 
				
			||||||
 | 
							var (
 | 
				
			||||||
 | 
								propertiesp *uint16
 | 
				
			||||||
 | 
								resultp     *uint16
 | 
				
			||||||
 | 
							)
 | 
				
			||||||
 | 
							err := hcsGetComputeSystemProperties(computeSystem, propertyQuery, &propertiesp, &resultp)
 | 
				
			||||||
 | 
							if propertiesp != nil {
 | 
				
			||||||
 | 
								properties = interop.ConvertAndFreeCoTaskMemString(propertiesp)
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							if resultp != nil {
 | 
				
			||||||
 | 
								result = interop.ConvertAndFreeCoTaskMemString(resultp)
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							return err
 | 
				
			||||||
 | 
						})
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func HcsModifyComputeSystem(ctx gcontext.Context, computeSystem HcsSystem, configuration string) (result string, hr error) {
 | 
				
			||||||
 | 
						ctx, span := trace.StartSpan(ctx, "HcsModifyComputeSystem")
 | 
				
			||||||
 | 
						defer span.End()
 | 
				
			||||||
 | 
						defer func() {
 | 
				
			||||||
 | 
							if result != "" {
 | 
				
			||||||
 | 
								span.AddAttributes(trace.StringAttribute("result", result))
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							oc.SetSpanStatus(span, hr)
 | 
				
			||||||
 | 
						}()
 | 
				
			||||||
 | 
						span.AddAttributes(trace.StringAttribute("configuration", configuration))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						return result, execute(ctx, timeout.SyscallWatcher, func() error {
 | 
				
			||||||
 | 
							var resultp *uint16
 | 
				
			||||||
 | 
							err := hcsModifyComputeSystem(computeSystem, configuration, &resultp)
 | 
				
			||||||
 | 
							if resultp != nil {
 | 
				
			||||||
 | 
								result = interop.ConvertAndFreeCoTaskMemString(resultp)
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							return err
 | 
				
			||||||
 | 
						})
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func HcsRegisterComputeSystemCallback(ctx gcontext.Context, computeSystem HcsSystem, callback uintptr, context uintptr) (callbackHandle HcsCallback, hr error) {
 | 
				
			||||||
 | 
						ctx, span := trace.StartSpan(ctx, "HcsRegisterComputeSystemCallback")
 | 
				
			||||||
 | 
						defer span.End()
 | 
				
			||||||
 | 
						defer func() { oc.SetSpanStatus(span, hr) }()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						return callbackHandle, execute(ctx, timeout.SyscallWatcher, func() error {
 | 
				
			||||||
 | 
							return hcsRegisterComputeSystemCallback(computeSystem, callback, context, &callbackHandle)
 | 
				
			||||||
 | 
						})
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func HcsUnregisterComputeSystemCallback(ctx gcontext.Context, callbackHandle HcsCallback) (hr error) {
 | 
				
			||||||
 | 
						ctx, span := trace.StartSpan(ctx, "HcsUnregisterComputeSystemCallback")
 | 
				
			||||||
 | 
						defer span.End()
 | 
				
			||||||
 | 
						defer func() { oc.SetSpanStatus(span, hr) }()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						return execute(ctx, timeout.SyscallWatcher, func() error {
 | 
				
			||||||
 | 
							return hcsUnregisterComputeSystemCallback(callbackHandle)
 | 
				
			||||||
 | 
						})
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func HcsCreateProcess(ctx gcontext.Context, computeSystem HcsSystem, processParameters string) (processInformation HcsProcessInformation, process HcsProcess, result string, hr error) {
 | 
				
			||||||
 | 
						ctx, span := trace.StartSpan(ctx, "HcsCreateProcess")
 | 
				
			||||||
 | 
						defer span.End()
 | 
				
			||||||
 | 
						defer func() {
 | 
				
			||||||
 | 
							if result != "" {
 | 
				
			||||||
 | 
								span.AddAttributes(trace.StringAttribute("result", result))
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							oc.SetSpanStatus(span, hr)
 | 
				
			||||||
 | 
						}()
 | 
				
			||||||
 | 
						span.AddAttributes(trace.StringAttribute("processParameters", processParameters))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						return processInformation, process, result, execute(ctx, timeout.SyscallWatcher, func() error {
 | 
				
			||||||
 | 
							var resultp *uint16
 | 
				
			||||||
 | 
							err := hcsCreateProcess(computeSystem, processParameters, &processInformation, &process, &resultp)
 | 
				
			||||||
 | 
							if resultp != nil {
 | 
				
			||||||
 | 
								result = interop.ConvertAndFreeCoTaskMemString(resultp)
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							return err
 | 
				
			||||||
 | 
						})
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func HcsOpenProcess(ctx gcontext.Context, computeSystem HcsSystem, pid uint32) (process HcsProcess, result string, hr error) {
 | 
				
			||||||
 | 
						ctx, span := trace.StartSpan(ctx, "HcsOpenProcess")
 | 
				
			||||||
 | 
						defer span.End()
 | 
				
			||||||
 | 
						defer func() {
 | 
				
			||||||
 | 
							if result != "" {
 | 
				
			||||||
 | 
								span.AddAttributes(trace.StringAttribute("result", result))
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							oc.SetSpanStatus(span, hr)
 | 
				
			||||||
 | 
						}()
 | 
				
			||||||
 | 
						span.AddAttributes(trace.Int64Attribute("pid", int64(pid)))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						return process, result, execute(ctx, timeout.SyscallWatcher, func() error {
 | 
				
			||||||
 | 
							var resultp *uint16
 | 
				
			||||||
 | 
							err := hcsOpenProcess(computeSystem, pid, &process, &resultp)
 | 
				
			||||||
 | 
							if resultp != nil {
 | 
				
			||||||
 | 
								result = interop.ConvertAndFreeCoTaskMemString(resultp)
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							return err
 | 
				
			||||||
 | 
						})
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func HcsCloseProcess(ctx gcontext.Context, process HcsProcess) (hr error) {
 | 
				
			||||||
 | 
						ctx, span := trace.StartSpan(ctx, "HcsCloseProcess")
 | 
				
			||||||
 | 
						defer span.End()
 | 
				
			||||||
 | 
						defer func() { oc.SetSpanStatus(span, hr) }()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						return execute(ctx, timeout.SyscallWatcher, func() error {
 | 
				
			||||||
 | 
							return hcsCloseProcess(process)
 | 
				
			||||||
 | 
						})
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func HcsTerminateProcess(ctx gcontext.Context, process HcsProcess) (result string, hr error) {
 | 
				
			||||||
 | 
						ctx, span := trace.StartSpan(ctx, "HcsTerminateProcess")
 | 
				
			||||||
 | 
						defer span.End()
 | 
				
			||||||
 | 
						defer func() {
 | 
				
			||||||
 | 
							if result != "" {
 | 
				
			||||||
 | 
								span.AddAttributes(trace.StringAttribute("result", result))
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							oc.SetSpanStatus(span, hr)
 | 
				
			||||||
 | 
						}()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						return result, execute(ctx, timeout.SyscallWatcher, func() error {
 | 
				
			||||||
 | 
							var resultp *uint16
 | 
				
			||||||
 | 
							err := hcsTerminateProcess(process, &resultp)
 | 
				
			||||||
 | 
							if resultp != nil {
 | 
				
			||||||
 | 
								result = interop.ConvertAndFreeCoTaskMemString(resultp)
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							return err
 | 
				
			||||||
 | 
						})
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func HcsSignalProcess(ctx gcontext.Context, process HcsProcess, options string) (result string, hr error) {
 | 
				
			||||||
 | 
						ctx, span := trace.StartSpan(ctx, "HcsSignalProcess")
 | 
				
			||||||
 | 
						defer span.End()
 | 
				
			||||||
 | 
						defer func() {
 | 
				
			||||||
 | 
							if result != "" {
 | 
				
			||||||
 | 
								span.AddAttributes(trace.StringAttribute("result", result))
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							oc.SetSpanStatus(span, hr)
 | 
				
			||||||
 | 
						}()
 | 
				
			||||||
 | 
						span.AddAttributes(trace.StringAttribute("options", options))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						return result, execute(ctx, timeout.SyscallWatcher, func() error {
 | 
				
			||||||
 | 
							var resultp *uint16
 | 
				
			||||||
 | 
							err := hcsSignalProcess(process, options, &resultp)
 | 
				
			||||||
 | 
							if resultp != nil {
 | 
				
			||||||
 | 
								result = interop.ConvertAndFreeCoTaskMemString(resultp)
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							return err
 | 
				
			||||||
 | 
						})
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func HcsGetProcessInfo(ctx gcontext.Context, process HcsProcess) (processInformation HcsProcessInformation, result string, hr error) {
 | 
				
			||||||
 | 
						ctx, span := trace.StartSpan(ctx, "HcsGetProcessInfo")
 | 
				
			||||||
 | 
						defer span.End()
 | 
				
			||||||
 | 
						defer func() {
 | 
				
			||||||
 | 
							if result != "" {
 | 
				
			||||||
 | 
								span.AddAttributes(trace.StringAttribute("result", result))
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							oc.SetSpanStatus(span, hr)
 | 
				
			||||||
 | 
						}()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						return processInformation, result, execute(ctx, timeout.SyscallWatcher, func() error {
 | 
				
			||||||
 | 
							var resultp *uint16
 | 
				
			||||||
 | 
							err := hcsGetProcessInfo(process, &processInformation, &resultp)
 | 
				
			||||||
 | 
							if resultp != nil {
 | 
				
			||||||
 | 
								result = interop.ConvertAndFreeCoTaskMemString(resultp)
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							return err
 | 
				
			||||||
 | 
						})
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func HcsGetProcessProperties(ctx gcontext.Context, process HcsProcess) (processProperties, result string, hr error) {
 | 
				
			||||||
 | 
						ctx, span := trace.StartSpan(ctx, "HcsGetProcessProperties")
 | 
				
			||||||
 | 
						defer span.End()
 | 
				
			||||||
 | 
						defer func() {
 | 
				
			||||||
 | 
							if result != "" {
 | 
				
			||||||
 | 
								span.AddAttributes(trace.StringAttribute("result", result))
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							oc.SetSpanStatus(span, hr)
 | 
				
			||||||
 | 
						}()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						return processProperties, result, execute(ctx, timeout.SyscallWatcher, func() error {
 | 
				
			||||||
 | 
							var (
 | 
				
			||||||
 | 
								processPropertiesp *uint16
 | 
				
			||||||
 | 
								resultp            *uint16
 | 
				
			||||||
 | 
							)
 | 
				
			||||||
 | 
							err := hcsGetProcessProperties(process, &processPropertiesp, &resultp)
 | 
				
			||||||
 | 
							if processPropertiesp != nil {
 | 
				
			||||||
 | 
								processProperties = interop.ConvertAndFreeCoTaskMemString(processPropertiesp)
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							if resultp != nil {
 | 
				
			||||||
 | 
								result = interop.ConvertAndFreeCoTaskMemString(resultp)
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							return err
 | 
				
			||||||
 | 
						})
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func HcsModifyProcess(ctx gcontext.Context, process HcsProcess, settings string) (result string, hr error) {
 | 
				
			||||||
 | 
						ctx, span := trace.StartSpan(ctx, "HcsModifyProcess")
 | 
				
			||||||
 | 
						defer span.End()
 | 
				
			||||||
 | 
						defer func() {
 | 
				
			||||||
 | 
							if result != "" {
 | 
				
			||||||
 | 
								span.AddAttributes(trace.StringAttribute("result", result))
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							oc.SetSpanStatus(span, hr)
 | 
				
			||||||
 | 
						}()
 | 
				
			||||||
 | 
						span.AddAttributes(trace.StringAttribute("settings", settings))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						return result, execute(ctx, timeout.SyscallWatcher, func() error {
 | 
				
			||||||
 | 
							var resultp *uint16
 | 
				
			||||||
 | 
							err := hcsModifyProcess(process, settings, &resultp)
 | 
				
			||||||
 | 
							if resultp != nil {
 | 
				
			||||||
 | 
								result = interop.ConvertAndFreeCoTaskMemString(resultp)
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							return err
 | 
				
			||||||
 | 
						})
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func HcsGetServiceProperties(ctx gcontext.Context, propertyQuery string) (properties, result string, hr error) {
 | 
				
			||||||
 | 
						ctx, span := trace.StartSpan(ctx, "HcsGetServiceProperties")
 | 
				
			||||||
 | 
						defer span.End()
 | 
				
			||||||
 | 
						defer func() {
 | 
				
			||||||
 | 
							if result != "" {
 | 
				
			||||||
 | 
								span.AddAttributes(trace.StringAttribute("result", result))
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							oc.SetSpanStatus(span, hr)
 | 
				
			||||||
 | 
						}()
 | 
				
			||||||
 | 
						span.AddAttributes(trace.StringAttribute("propertyQuery", propertyQuery))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						return properties, result, execute(ctx, timeout.SyscallWatcher, func() error {
 | 
				
			||||||
 | 
							var (
 | 
				
			||||||
 | 
								propertiesp *uint16
 | 
				
			||||||
 | 
								resultp     *uint16
 | 
				
			||||||
 | 
							)
 | 
				
			||||||
 | 
							err := hcsGetServiceProperties(propertyQuery, &propertiesp, &resultp)
 | 
				
			||||||
 | 
							if propertiesp != nil {
 | 
				
			||||||
 | 
								properties = interop.ConvertAndFreeCoTaskMemString(propertiesp)
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							if resultp != nil {
 | 
				
			||||||
 | 
								result = interop.ConvertAndFreeCoTaskMemString(resultp)
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							return err
 | 
				
			||||||
 | 
						})
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func HcsRegisterProcessCallback(ctx gcontext.Context, process HcsProcess, callback uintptr, context uintptr) (callbackHandle HcsCallback, hr error) {
 | 
				
			||||||
 | 
						ctx, span := trace.StartSpan(ctx, "HcsRegisterProcessCallback")
 | 
				
			||||||
 | 
						defer span.End()
 | 
				
			||||||
 | 
						defer func() { oc.SetSpanStatus(span, hr) }()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						return callbackHandle, execute(ctx, timeout.SyscallWatcher, func() error {
 | 
				
			||||||
 | 
							return hcsRegisterProcessCallback(process, callback, context, &callbackHandle)
 | 
				
			||||||
 | 
						})
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func HcsUnregisterProcessCallback(ctx gcontext.Context, callbackHandle HcsCallback) (hr error) {
 | 
				
			||||||
 | 
						ctx, span := trace.StartSpan(ctx, "HcsUnregisterProcessCallback")
 | 
				
			||||||
 | 
						defer span.End()
 | 
				
			||||||
 | 
						defer func() { oc.SetSpanStatus(span, hr) }()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						return execute(ctx, timeout.SyscallWatcher, func() error {
 | 
				
			||||||
 | 
							return hcsUnregisterProcessCallback(callbackHandle)
 | 
				
			||||||
 | 
						})
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
| 
						 | 
					@ -1,6 +1,6 @@
 | 
				
			||||||
// Code generated mksyscall_windows.exe DO NOT EDIT
 | 
					// Code generated mksyscall_windows.exe DO NOT EDIT
 | 
				
			||||||
 | 
					
 | 
				
			||||||
package hcs
 | 
					package vmcompute
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import (
 | 
					import (
 | 
				
			||||||
	"syscall"
 | 
						"syscall"
 | 
				
			||||||
| 
						 | 
					@ -88,7 +88,7 @@ func _hcsEnumerateComputeSystems(query *uint16, computeSystems **uint16, result
 | 
				
			||||||
	return
 | 
						return
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func hcsCreateComputeSystem(id string, configuration string, identity syscall.Handle, computeSystem *hcsSystem, result **uint16) (hr error) {
 | 
					func hcsCreateComputeSystem(id string, configuration string, identity syscall.Handle, computeSystem *HcsSystem, result **uint16) (hr error) {
 | 
				
			||||||
	var _p0 *uint16
 | 
						var _p0 *uint16
 | 
				
			||||||
	_p0, hr = syscall.UTF16PtrFromString(id)
 | 
						_p0, hr = syscall.UTF16PtrFromString(id)
 | 
				
			||||||
	if hr != nil {
 | 
						if hr != nil {
 | 
				
			||||||
| 
						 | 
					@ -102,7 +102,7 @@ func hcsCreateComputeSystem(id string, configuration string, identity syscall.Ha
 | 
				
			||||||
	return _hcsCreateComputeSystem(_p0, _p1, identity, computeSystem, result)
 | 
						return _hcsCreateComputeSystem(_p0, _p1, identity, computeSystem, result)
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func _hcsCreateComputeSystem(id *uint16, configuration *uint16, identity syscall.Handle, computeSystem *hcsSystem, result **uint16) (hr error) {
 | 
					func _hcsCreateComputeSystem(id *uint16, configuration *uint16, identity syscall.Handle, computeSystem *HcsSystem, result **uint16) (hr error) {
 | 
				
			||||||
	if hr = procHcsCreateComputeSystem.Find(); hr != nil {
 | 
						if hr = procHcsCreateComputeSystem.Find(); hr != nil {
 | 
				
			||||||
		return
 | 
							return
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
| 
						 | 
					@ -116,7 +116,7 @@ func _hcsCreateComputeSystem(id *uint16, configuration *uint16, identity syscall
 | 
				
			||||||
	return
 | 
						return
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func hcsOpenComputeSystem(id string, computeSystem *hcsSystem, result **uint16) (hr error) {
 | 
					func hcsOpenComputeSystem(id string, computeSystem *HcsSystem, result **uint16) (hr error) {
 | 
				
			||||||
	var _p0 *uint16
 | 
						var _p0 *uint16
 | 
				
			||||||
	_p0, hr = syscall.UTF16PtrFromString(id)
 | 
						_p0, hr = syscall.UTF16PtrFromString(id)
 | 
				
			||||||
	if hr != nil {
 | 
						if hr != nil {
 | 
				
			||||||
| 
						 | 
					@ -125,7 +125,7 @@ func hcsOpenComputeSystem(id string, computeSystem *hcsSystem, result **uint16)
 | 
				
			||||||
	return _hcsOpenComputeSystem(_p0, computeSystem, result)
 | 
						return _hcsOpenComputeSystem(_p0, computeSystem, result)
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func _hcsOpenComputeSystem(id *uint16, computeSystem *hcsSystem, result **uint16) (hr error) {
 | 
					func _hcsOpenComputeSystem(id *uint16, computeSystem *HcsSystem, result **uint16) (hr error) {
 | 
				
			||||||
	if hr = procHcsOpenComputeSystem.Find(); hr != nil {
 | 
						if hr = procHcsOpenComputeSystem.Find(); hr != nil {
 | 
				
			||||||
		return
 | 
							return
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
| 
						 | 
					@ -139,7 +139,7 @@ func _hcsOpenComputeSystem(id *uint16, computeSystem *hcsSystem, result **uint16
 | 
				
			||||||
	return
 | 
						return
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func hcsCloseComputeSystem(computeSystem hcsSystem) (hr error) {
 | 
					func hcsCloseComputeSystem(computeSystem HcsSystem) (hr error) {
 | 
				
			||||||
	if hr = procHcsCloseComputeSystem.Find(); hr != nil {
 | 
						if hr = procHcsCloseComputeSystem.Find(); hr != nil {
 | 
				
			||||||
		return
 | 
							return
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
| 
						 | 
					@ -153,7 +153,7 @@ func hcsCloseComputeSystem(computeSystem hcsSystem) (hr error) {
 | 
				
			||||||
	return
 | 
						return
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func hcsStartComputeSystem(computeSystem hcsSystem, options string, result **uint16) (hr error) {
 | 
					func hcsStartComputeSystem(computeSystem HcsSystem, options string, result **uint16) (hr error) {
 | 
				
			||||||
	var _p0 *uint16
 | 
						var _p0 *uint16
 | 
				
			||||||
	_p0, hr = syscall.UTF16PtrFromString(options)
 | 
						_p0, hr = syscall.UTF16PtrFromString(options)
 | 
				
			||||||
	if hr != nil {
 | 
						if hr != nil {
 | 
				
			||||||
| 
						 | 
					@ -162,7 +162,7 @@ func hcsStartComputeSystem(computeSystem hcsSystem, options string, result **uin
 | 
				
			||||||
	return _hcsStartComputeSystem(computeSystem, _p0, result)
 | 
						return _hcsStartComputeSystem(computeSystem, _p0, result)
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func _hcsStartComputeSystem(computeSystem hcsSystem, options *uint16, result **uint16) (hr error) {
 | 
					func _hcsStartComputeSystem(computeSystem HcsSystem, options *uint16, result **uint16) (hr error) {
 | 
				
			||||||
	if hr = procHcsStartComputeSystem.Find(); hr != nil {
 | 
						if hr = procHcsStartComputeSystem.Find(); hr != nil {
 | 
				
			||||||
		return
 | 
							return
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
| 
						 | 
					@ -176,7 +176,7 @@ func _hcsStartComputeSystem(computeSystem hcsSystem, options *uint16, result **u
 | 
				
			||||||
	return
 | 
						return
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func hcsShutdownComputeSystem(computeSystem hcsSystem, options string, result **uint16) (hr error) {
 | 
					func hcsShutdownComputeSystem(computeSystem HcsSystem, options string, result **uint16) (hr error) {
 | 
				
			||||||
	var _p0 *uint16
 | 
						var _p0 *uint16
 | 
				
			||||||
	_p0, hr = syscall.UTF16PtrFromString(options)
 | 
						_p0, hr = syscall.UTF16PtrFromString(options)
 | 
				
			||||||
	if hr != nil {
 | 
						if hr != nil {
 | 
				
			||||||
| 
						 | 
					@ -185,7 +185,7 @@ func hcsShutdownComputeSystem(computeSystem hcsSystem, options string, result **
 | 
				
			||||||
	return _hcsShutdownComputeSystem(computeSystem, _p0, result)
 | 
						return _hcsShutdownComputeSystem(computeSystem, _p0, result)
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func _hcsShutdownComputeSystem(computeSystem hcsSystem, options *uint16, result **uint16) (hr error) {
 | 
					func _hcsShutdownComputeSystem(computeSystem HcsSystem, options *uint16, result **uint16) (hr error) {
 | 
				
			||||||
	if hr = procHcsShutdownComputeSystem.Find(); hr != nil {
 | 
						if hr = procHcsShutdownComputeSystem.Find(); hr != nil {
 | 
				
			||||||
		return
 | 
							return
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
| 
						 | 
					@ -199,7 +199,7 @@ func _hcsShutdownComputeSystem(computeSystem hcsSystem, options *uint16, result
 | 
				
			||||||
	return
 | 
						return
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func hcsTerminateComputeSystem(computeSystem hcsSystem, options string, result **uint16) (hr error) {
 | 
					func hcsTerminateComputeSystem(computeSystem HcsSystem, options string, result **uint16) (hr error) {
 | 
				
			||||||
	var _p0 *uint16
 | 
						var _p0 *uint16
 | 
				
			||||||
	_p0, hr = syscall.UTF16PtrFromString(options)
 | 
						_p0, hr = syscall.UTF16PtrFromString(options)
 | 
				
			||||||
	if hr != nil {
 | 
						if hr != nil {
 | 
				
			||||||
| 
						 | 
					@ -208,7 +208,7 @@ func hcsTerminateComputeSystem(computeSystem hcsSystem, options string, result *
 | 
				
			||||||
	return _hcsTerminateComputeSystem(computeSystem, _p0, result)
 | 
						return _hcsTerminateComputeSystem(computeSystem, _p0, result)
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func _hcsTerminateComputeSystem(computeSystem hcsSystem, options *uint16, result **uint16) (hr error) {
 | 
					func _hcsTerminateComputeSystem(computeSystem HcsSystem, options *uint16, result **uint16) (hr error) {
 | 
				
			||||||
	if hr = procHcsTerminateComputeSystem.Find(); hr != nil {
 | 
						if hr = procHcsTerminateComputeSystem.Find(); hr != nil {
 | 
				
			||||||
		return
 | 
							return
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
| 
						 | 
					@ -222,7 +222,7 @@ func _hcsTerminateComputeSystem(computeSystem hcsSystem, options *uint16, result
 | 
				
			||||||
	return
 | 
						return
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func hcsPauseComputeSystem(computeSystem hcsSystem, options string, result **uint16) (hr error) {
 | 
					func hcsPauseComputeSystem(computeSystem HcsSystem, options string, result **uint16) (hr error) {
 | 
				
			||||||
	var _p0 *uint16
 | 
						var _p0 *uint16
 | 
				
			||||||
	_p0, hr = syscall.UTF16PtrFromString(options)
 | 
						_p0, hr = syscall.UTF16PtrFromString(options)
 | 
				
			||||||
	if hr != nil {
 | 
						if hr != nil {
 | 
				
			||||||
| 
						 | 
					@ -231,7 +231,7 @@ func hcsPauseComputeSystem(computeSystem hcsSystem, options string, result **uin
 | 
				
			||||||
	return _hcsPauseComputeSystem(computeSystem, _p0, result)
 | 
						return _hcsPauseComputeSystem(computeSystem, _p0, result)
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func _hcsPauseComputeSystem(computeSystem hcsSystem, options *uint16, result **uint16) (hr error) {
 | 
					func _hcsPauseComputeSystem(computeSystem HcsSystem, options *uint16, result **uint16) (hr error) {
 | 
				
			||||||
	if hr = procHcsPauseComputeSystem.Find(); hr != nil {
 | 
						if hr = procHcsPauseComputeSystem.Find(); hr != nil {
 | 
				
			||||||
		return
 | 
							return
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
| 
						 | 
					@ -245,7 +245,7 @@ func _hcsPauseComputeSystem(computeSystem hcsSystem, options *uint16, result **u
 | 
				
			||||||
	return
 | 
						return
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func hcsResumeComputeSystem(computeSystem hcsSystem, options string, result **uint16) (hr error) {
 | 
					func hcsResumeComputeSystem(computeSystem HcsSystem, options string, result **uint16) (hr error) {
 | 
				
			||||||
	var _p0 *uint16
 | 
						var _p0 *uint16
 | 
				
			||||||
	_p0, hr = syscall.UTF16PtrFromString(options)
 | 
						_p0, hr = syscall.UTF16PtrFromString(options)
 | 
				
			||||||
	if hr != nil {
 | 
						if hr != nil {
 | 
				
			||||||
| 
						 | 
					@ -254,7 +254,7 @@ func hcsResumeComputeSystem(computeSystem hcsSystem, options string, result **ui
 | 
				
			||||||
	return _hcsResumeComputeSystem(computeSystem, _p0, result)
 | 
						return _hcsResumeComputeSystem(computeSystem, _p0, result)
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func _hcsResumeComputeSystem(computeSystem hcsSystem, options *uint16, result **uint16) (hr error) {
 | 
					func _hcsResumeComputeSystem(computeSystem HcsSystem, options *uint16, result **uint16) (hr error) {
 | 
				
			||||||
	if hr = procHcsResumeComputeSystem.Find(); hr != nil {
 | 
						if hr = procHcsResumeComputeSystem.Find(); hr != nil {
 | 
				
			||||||
		return
 | 
							return
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
| 
						 | 
					@ -268,7 +268,7 @@ func _hcsResumeComputeSystem(computeSystem hcsSystem, options *uint16, result **
 | 
				
			||||||
	return
 | 
						return
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func hcsGetComputeSystemProperties(computeSystem hcsSystem, propertyQuery string, properties **uint16, result **uint16) (hr error) {
 | 
					func hcsGetComputeSystemProperties(computeSystem HcsSystem, propertyQuery string, properties **uint16, result **uint16) (hr error) {
 | 
				
			||||||
	var _p0 *uint16
 | 
						var _p0 *uint16
 | 
				
			||||||
	_p0, hr = syscall.UTF16PtrFromString(propertyQuery)
 | 
						_p0, hr = syscall.UTF16PtrFromString(propertyQuery)
 | 
				
			||||||
	if hr != nil {
 | 
						if hr != nil {
 | 
				
			||||||
| 
						 | 
					@ -277,7 +277,7 @@ func hcsGetComputeSystemProperties(computeSystem hcsSystem, propertyQuery string
 | 
				
			||||||
	return _hcsGetComputeSystemProperties(computeSystem, _p0, properties, result)
 | 
						return _hcsGetComputeSystemProperties(computeSystem, _p0, properties, result)
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func _hcsGetComputeSystemProperties(computeSystem hcsSystem, propertyQuery *uint16, properties **uint16, result **uint16) (hr error) {
 | 
					func _hcsGetComputeSystemProperties(computeSystem HcsSystem, propertyQuery *uint16, properties **uint16, result **uint16) (hr error) {
 | 
				
			||||||
	if hr = procHcsGetComputeSystemProperties.Find(); hr != nil {
 | 
						if hr = procHcsGetComputeSystemProperties.Find(); hr != nil {
 | 
				
			||||||
		return
 | 
							return
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
| 
						 | 
					@ -291,7 +291,7 @@ func _hcsGetComputeSystemProperties(computeSystem hcsSystem, propertyQuery *uint
 | 
				
			||||||
	return
 | 
						return
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func hcsModifyComputeSystem(computeSystem hcsSystem, configuration string, result **uint16) (hr error) {
 | 
					func hcsModifyComputeSystem(computeSystem HcsSystem, configuration string, result **uint16) (hr error) {
 | 
				
			||||||
	var _p0 *uint16
 | 
						var _p0 *uint16
 | 
				
			||||||
	_p0, hr = syscall.UTF16PtrFromString(configuration)
 | 
						_p0, hr = syscall.UTF16PtrFromString(configuration)
 | 
				
			||||||
	if hr != nil {
 | 
						if hr != nil {
 | 
				
			||||||
| 
						 | 
					@ -300,7 +300,7 @@ func hcsModifyComputeSystem(computeSystem hcsSystem, configuration string, resul
 | 
				
			||||||
	return _hcsModifyComputeSystem(computeSystem, _p0, result)
 | 
						return _hcsModifyComputeSystem(computeSystem, _p0, result)
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func _hcsModifyComputeSystem(computeSystem hcsSystem, configuration *uint16, result **uint16) (hr error) {
 | 
					func _hcsModifyComputeSystem(computeSystem HcsSystem, configuration *uint16, result **uint16) (hr error) {
 | 
				
			||||||
	if hr = procHcsModifyComputeSystem.Find(); hr != nil {
 | 
						if hr = procHcsModifyComputeSystem.Find(); hr != nil {
 | 
				
			||||||
		return
 | 
							return
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
| 
						 | 
					@ -314,7 +314,7 @@ func _hcsModifyComputeSystem(computeSystem hcsSystem, configuration *uint16, res
 | 
				
			||||||
	return
 | 
						return
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func hcsRegisterComputeSystemCallback(computeSystem hcsSystem, callback uintptr, context uintptr, callbackHandle *hcsCallback) (hr error) {
 | 
					func hcsRegisterComputeSystemCallback(computeSystem HcsSystem, callback uintptr, context uintptr, callbackHandle *HcsCallback) (hr error) {
 | 
				
			||||||
	if hr = procHcsRegisterComputeSystemCallback.Find(); hr != nil {
 | 
						if hr = procHcsRegisterComputeSystemCallback.Find(); hr != nil {
 | 
				
			||||||
		return
 | 
							return
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
| 
						 | 
					@ -328,7 +328,7 @@ func hcsRegisterComputeSystemCallback(computeSystem hcsSystem, callback uintptr,
 | 
				
			||||||
	return
 | 
						return
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func hcsUnregisterComputeSystemCallback(callbackHandle hcsCallback) (hr error) {
 | 
					func hcsUnregisterComputeSystemCallback(callbackHandle HcsCallback) (hr error) {
 | 
				
			||||||
	if hr = procHcsUnregisterComputeSystemCallback.Find(); hr != nil {
 | 
						if hr = procHcsUnregisterComputeSystemCallback.Find(); hr != nil {
 | 
				
			||||||
		return
 | 
							return
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
| 
						 | 
					@ -342,7 +342,7 @@ func hcsUnregisterComputeSystemCallback(callbackHandle hcsCallback) (hr error) {
 | 
				
			||||||
	return
 | 
						return
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func hcsCreateProcess(computeSystem hcsSystem, processParameters string, processInformation *hcsProcessInformation, process *hcsProcess, result **uint16) (hr error) {
 | 
					func hcsCreateProcess(computeSystem HcsSystem, processParameters string, processInformation *HcsProcessInformation, process *HcsProcess, result **uint16) (hr error) {
 | 
				
			||||||
	var _p0 *uint16
 | 
						var _p0 *uint16
 | 
				
			||||||
	_p0, hr = syscall.UTF16PtrFromString(processParameters)
 | 
						_p0, hr = syscall.UTF16PtrFromString(processParameters)
 | 
				
			||||||
	if hr != nil {
 | 
						if hr != nil {
 | 
				
			||||||
| 
						 | 
					@ -351,7 +351,7 @@ func hcsCreateProcess(computeSystem hcsSystem, processParameters string, process
 | 
				
			||||||
	return _hcsCreateProcess(computeSystem, _p0, processInformation, process, result)
 | 
						return _hcsCreateProcess(computeSystem, _p0, processInformation, process, result)
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func _hcsCreateProcess(computeSystem hcsSystem, processParameters *uint16, processInformation *hcsProcessInformation, process *hcsProcess, result **uint16) (hr error) {
 | 
					func _hcsCreateProcess(computeSystem HcsSystem, processParameters *uint16, processInformation *HcsProcessInformation, process *HcsProcess, result **uint16) (hr error) {
 | 
				
			||||||
	if hr = procHcsCreateProcess.Find(); hr != nil {
 | 
						if hr = procHcsCreateProcess.Find(); hr != nil {
 | 
				
			||||||
		return
 | 
							return
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
| 
						 | 
					@ -365,7 +365,7 @@ func _hcsCreateProcess(computeSystem hcsSystem, processParameters *uint16, proce
 | 
				
			||||||
	return
 | 
						return
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func hcsOpenProcess(computeSystem hcsSystem, pid uint32, process *hcsProcess, result **uint16) (hr error) {
 | 
					func hcsOpenProcess(computeSystem HcsSystem, pid uint32, process *HcsProcess, result **uint16) (hr error) {
 | 
				
			||||||
	if hr = procHcsOpenProcess.Find(); hr != nil {
 | 
						if hr = procHcsOpenProcess.Find(); hr != nil {
 | 
				
			||||||
		return
 | 
							return
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
| 
						 | 
					@ -379,7 +379,7 @@ func hcsOpenProcess(computeSystem hcsSystem, pid uint32, process *hcsProcess, re
 | 
				
			||||||
	return
 | 
						return
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func hcsCloseProcess(process hcsProcess) (hr error) {
 | 
					func hcsCloseProcess(process HcsProcess) (hr error) {
 | 
				
			||||||
	if hr = procHcsCloseProcess.Find(); hr != nil {
 | 
						if hr = procHcsCloseProcess.Find(); hr != nil {
 | 
				
			||||||
		return
 | 
							return
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
| 
						 | 
					@ -393,7 +393,7 @@ func hcsCloseProcess(process hcsProcess) (hr error) {
 | 
				
			||||||
	return
 | 
						return
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func hcsTerminateProcess(process hcsProcess, result **uint16) (hr error) {
 | 
					func hcsTerminateProcess(process HcsProcess, result **uint16) (hr error) {
 | 
				
			||||||
	if hr = procHcsTerminateProcess.Find(); hr != nil {
 | 
						if hr = procHcsTerminateProcess.Find(); hr != nil {
 | 
				
			||||||
		return
 | 
							return
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
| 
						 | 
					@ -407,7 +407,7 @@ func hcsTerminateProcess(process hcsProcess, result **uint16) (hr error) {
 | 
				
			||||||
	return
 | 
						return
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func hcsSignalProcess(process hcsProcess, options string, result **uint16) (hr error) {
 | 
					func hcsSignalProcess(process HcsProcess, options string, result **uint16) (hr error) {
 | 
				
			||||||
	var _p0 *uint16
 | 
						var _p0 *uint16
 | 
				
			||||||
	_p0, hr = syscall.UTF16PtrFromString(options)
 | 
						_p0, hr = syscall.UTF16PtrFromString(options)
 | 
				
			||||||
	if hr != nil {
 | 
						if hr != nil {
 | 
				
			||||||
| 
						 | 
					@ -416,7 +416,7 @@ func hcsSignalProcess(process hcsProcess, options string, result **uint16) (hr e
 | 
				
			||||||
	return _hcsSignalProcess(process, _p0, result)
 | 
						return _hcsSignalProcess(process, _p0, result)
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func _hcsSignalProcess(process hcsProcess, options *uint16, result **uint16) (hr error) {
 | 
					func _hcsSignalProcess(process HcsProcess, options *uint16, result **uint16) (hr error) {
 | 
				
			||||||
	if hr = procHcsSignalProcess.Find(); hr != nil {
 | 
						if hr = procHcsSignalProcess.Find(); hr != nil {
 | 
				
			||||||
		return
 | 
							return
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
| 
						 | 
					@ -430,7 +430,7 @@ func _hcsSignalProcess(process hcsProcess, options *uint16, result **uint16) (hr
 | 
				
			||||||
	return
 | 
						return
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func hcsGetProcessInfo(process hcsProcess, processInformation *hcsProcessInformation, result **uint16) (hr error) {
 | 
					func hcsGetProcessInfo(process HcsProcess, processInformation *HcsProcessInformation, result **uint16) (hr error) {
 | 
				
			||||||
	if hr = procHcsGetProcessInfo.Find(); hr != nil {
 | 
						if hr = procHcsGetProcessInfo.Find(); hr != nil {
 | 
				
			||||||
		return
 | 
							return
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
| 
						 | 
					@ -444,7 +444,7 @@ func hcsGetProcessInfo(process hcsProcess, processInformation *hcsProcessInforma
 | 
				
			||||||
	return
 | 
						return
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func hcsGetProcessProperties(process hcsProcess, processProperties **uint16, result **uint16) (hr error) {
 | 
					func hcsGetProcessProperties(process HcsProcess, processProperties **uint16, result **uint16) (hr error) {
 | 
				
			||||||
	if hr = procHcsGetProcessProperties.Find(); hr != nil {
 | 
						if hr = procHcsGetProcessProperties.Find(); hr != nil {
 | 
				
			||||||
		return
 | 
							return
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
| 
						 | 
					@ -458,7 +458,7 @@ func hcsGetProcessProperties(process hcsProcess, processProperties **uint16, res
 | 
				
			||||||
	return
 | 
						return
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func hcsModifyProcess(process hcsProcess, settings string, result **uint16) (hr error) {
 | 
					func hcsModifyProcess(process HcsProcess, settings string, result **uint16) (hr error) {
 | 
				
			||||||
	var _p0 *uint16
 | 
						var _p0 *uint16
 | 
				
			||||||
	_p0, hr = syscall.UTF16PtrFromString(settings)
 | 
						_p0, hr = syscall.UTF16PtrFromString(settings)
 | 
				
			||||||
	if hr != nil {
 | 
						if hr != nil {
 | 
				
			||||||
| 
						 | 
					@ -467,7 +467,7 @@ func hcsModifyProcess(process hcsProcess, settings string, result **uint16) (hr
 | 
				
			||||||
	return _hcsModifyProcess(process, _p0, result)
 | 
						return _hcsModifyProcess(process, _p0, result)
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func _hcsModifyProcess(process hcsProcess, settings *uint16, result **uint16) (hr error) {
 | 
					func _hcsModifyProcess(process HcsProcess, settings *uint16, result **uint16) (hr error) {
 | 
				
			||||||
	if hr = procHcsModifyProcess.Find(); hr != nil {
 | 
						if hr = procHcsModifyProcess.Find(); hr != nil {
 | 
				
			||||||
		return
 | 
							return
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
| 
						 | 
					@ -504,7 +504,7 @@ func _hcsGetServiceProperties(propertyQuery *uint16, properties **uint16, result
 | 
				
			||||||
	return
 | 
						return
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func hcsRegisterProcessCallback(process hcsProcess, callback uintptr, context uintptr, callbackHandle *hcsCallback) (hr error) {
 | 
					func hcsRegisterProcessCallback(process HcsProcess, callback uintptr, context uintptr, callbackHandle *HcsCallback) (hr error) {
 | 
				
			||||||
	if hr = procHcsRegisterProcessCallback.Find(); hr != nil {
 | 
						if hr = procHcsRegisterProcessCallback.Find(); hr != nil {
 | 
				
			||||||
		return
 | 
							return
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
| 
						 | 
					@ -518,7 +518,7 @@ func hcsRegisterProcessCallback(process hcsProcess, callback uintptr, context ui
 | 
				
			||||||
	return
 | 
						return
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func hcsUnregisterProcessCallback(callbackHandle hcsCallback) (hr error) {
 | 
					func hcsUnregisterProcessCallback(callbackHandle HcsCallback) (hr error) {
 | 
				
			||||||
	if hr = procHcsUnregisterProcessCallback.Find(); hr != nil {
 | 
						if hr = procHcsUnregisterProcessCallback.Find(); hr != nil {
 | 
				
			||||||
		return
 | 
							return
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
							
								
								
									
										115
									
								
								vendor/github.com/Microsoft/hcsshim/internal/wclayer/expandscratchsize.go
									
										
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										115
									
								
								vendor/github.com/Microsoft/hcsshim/internal/wclayer/expandscratchsize.go
									
										
									
										generated
									
									
										vendored
									
									
								
							| 
						 | 
					@ -1,7 +1,13 @@
 | 
				
			||||||
package wclayer
 | 
					package wclayer
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import (
 | 
					import (
 | 
				
			||||||
 | 
						"os"
 | 
				
			||||||
 | 
						"path/filepath"
 | 
				
			||||||
 | 
						"syscall"
 | 
				
			||||||
 | 
						"unsafe"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	"github.com/Microsoft/hcsshim/internal/hcserror"
 | 
						"github.com/Microsoft/hcsshim/internal/hcserror"
 | 
				
			||||||
 | 
						"github.com/Microsoft/hcsshim/osversion"
 | 
				
			||||||
	"github.com/sirupsen/logrus"
 | 
						"github.com/sirupsen/logrus"
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -26,5 +32,114 @@ func ExpandScratchSize(path string, size uint64) (err error) {
 | 
				
			||||||
	if err != nil {
 | 
						if err != nil {
 | 
				
			||||||
		return hcserror.New(err, title+" - failed", "")
 | 
							return hcserror.New(err, title+" - failed", "")
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						// Manually expand the volume now in order to work around bugs in 19H1 and
 | 
				
			||||||
 | 
						// prerelease versions of Vb. Remove once this is fixed in Windows.
 | 
				
			||||||
 | 
						if build := osversion.Get().Build; build >= osversion.V19H1 && build < 19020 {
 | 
				
			||||||
 | 
							err = expandSandboxVolume(path)
 | 
				
			||||||
 | 
							if err != nil {
 | 
				
			||||||
 | 
								return err
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						return nil
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					type virtualStorageType struct {
 | 
				
			||||||
 | 
						DeviceID uint32
 | 
				
			||||||
 | 
						VendorID [16]byte
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					type openVersion2 struct {
 | 
				
			||||||
 | 
						GetInfoOnly    int32    // bool but 4-byte aligned
 | 
				
			||||||
 | 
						ReadOnly       int32    // bool but 4-byte aligned
 | 
				
			||||||
 | 
						ResiliencyGUID [16]byte // GUID
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					type openVirtualDiskParameters struct {
 | 
				
			||||||
 | 
						Version  uint32 // Must always be set to 2
 | 
				
			||||||
 | 
						Version2 openVersion2
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func attachVhd(path string) (syscall.Handle, error) {
 | 
				
			||||||
 | 
						var (
 | 
				
			||||||
 | 
							defaultType virtualStorageType
 | 
				
			||||||
 | 
							handle      syscall.Handle
 | 
				
			||||||
 | 
						)
 | 
				
			||||||
 | 
						parameters := openVirtualDiskParameters{Version: 2}
 | 
				
			||||||
 | 
						err := openVirtualDisk(
 | 
				
			||||||
 | 
							&defaultType,
 | 
				
			||||||
 | 
							path,
 | 
				
			||||||
 | 
							0,
 | 
				
			||||||
 | 
							0,
 | 
				
			||||||
 | 
							¶meters,
 | 
				
			||||||
 | 
							&handle)
 | 
				
			||||||
 | 
						if err != nil {
 | 
				
			||||||
 | 
							return 0, &os.PathError{Op: "OpenVirtualDisk", Path: path, Err: err}
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						err = attachVirtualDisk(handle, 0, 0, 0, 0, 0)
 | 
				
			||||||
 | 
						if err != nil {
 | 
				
			||||||
 | 
							syscall.Close(handle)
 | 
				
			||||||
 | 
							return 0, &os.PathError{Op: "AttachVirtualDisk", Path: path, Err: err}
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						return handle, nil
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func expandSandboxVolume(path string) error {
 | 
				
			||||||
 | 
						// Mount the sandbox VHD temporarily.
 | 
				
			||||||
 | 
						vhdPath := filepath.Join(path, "sandbox.vhdx")
 | 
				
			||||||
 | 
						vhd, err := attachVhd(vhdPath)
 | 
				
			||||||
 | 
						if err != nil {
 | 
				
			||||||
 | 
							return &os.PathError{Op: "OpenVirtualDisk", Path: vhdPath, Err: err}
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						defer syscall.Close(vhd)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						// Open the volume.
 | 
				
			||||||
 | 
						volumePath, err := GetLayerMountPath(path)
 | 
				
			||||||
 | 
						if err != nil {
 | 
				
			||||||
 | 
							return err
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						if volumePath[len(volumePath)-1] == '\\' {
 | 
				
			||||||
 | 
							volumePath = volumePath[:len(volumePath)-1]
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						volume, err := os.OpenFile(volumePath, os.O_RDWR, 0)
 | 
				
			||||||
 | 
						if err != nil {
 | 
				
			||||||
 | 
							return err
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						defer volume.Close()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						// Get the volume's underlying partition size in NTFS clusters.
 | 
				
			||||||
 | 
						var (
 | 
				
			||||||
 | 
							partitionSize int64
 | 
				
			||||||
 | 
							bytes         uint32
 | 
				
			||||||
 | 
						)
 | 
				
			||||||
 | 
						const _IOCTL_DISK_GET_LENGTH_INFO = 0x0007405C
 | 
				
			||||||
 | 
						err = syscall.DeviceIoControl(syscall.Handle(volume.Fd()), _IOCTL_DISK_GET_LENGTH_INFO, nil, 0, (*byte)(unsafe.Pointer(&partitionSize)), 8, &bytes, nil)
 | 
				
			||||||
 | 
						if err != nil {
 | 
				
			||||||
 | 
							return &os.PathError{Op: "IOCTL_DISK_GET_LENGTH_INFO", Path: volume.Name(), Err: err}
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						const (
 | 
				
			||||||
 | 
							clusterSize = 4096
 | 
				
			||||||
 | 
							sectorSize  = 512
 | 
				
			||||||
 | 
						)
 | 
				
			||||||
 | 
						targetClusters := partitionSize / clusterSize
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						// Get the volume's current size in NTFS clusters.
 | 
				
			||||||
 | 
						var volumeSize int64
 | 
				
			||||||
 | 
						err = getDiskFreeSpaceEx(volume.Name()+"\\", nil, &volumeSize, nil)
 | 
				
			||||||
 | 
						if err != nil {
 | 
				
			||||||
 | 
							return &os.PathError{Op: "GetDiskFreeSpaceEx", Path: volume.Name(), Err: err}
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						volumeClusters := volumeSize / clusterSize
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						// Only resize the volume if there is space to grow, otherwise this will
 | 
				
			||||||
 | 
						// fail with invalid parameter. NTFS reserves one cluster.
 | 
				
			||||||
 | 
						if volumeClusters+1 < targetClusters {
 | 
				
			||||||
 | 
							targetSectors := targetClusters * (clusterSize / sectorSize)
 | 
				
			||||||
 | 
							const _FSCTL_EXTEND_VOLUME = 0x000900F0
 | 
				
			||||||
 | 
							err = syscall.DeviceIoControl(syscall.Handle(volume.Fd()), _FSCTL_EXTEND_VOLUME, (*byte)(unsafe.Pointer(&targetSectors)), 8, nil, 0, &bytes, nil)
 | 
				
			||||||
 | 
							if err != nil {
 | 
				
			||||||
 | 
								return &os.PathError{Op: "FSCTL_EXTEND_VOLUME", Path: volume.Name(), Err: err}
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
	return nil
 | 
						return nil
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
							
								
								
									
										2
									
								
								vendor/github.com/Microsoft/hcsshim/internal/wclayer/layerid.go
									
										
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								vendor/github.com/Microsoft/hcsshim/internal/wclayer/layerid.go
									
										
									
										generated
									
									
										vendored
									
									
								
							| 
						 | 
					@ -3,7 +3,7 @@ package wclayer
 | 
				
			||||||
import (
 | 
					import (
 | 
				
			||||||
	"path/filepath"
 | 
						"path/filepath"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	"github.com/Microsoft/hcsshim/internal/guid"
 | 
						"github.com/Microsoft/go-winio/pkg/guid"
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// LayerID returns the layer ID of a layer on disk.
 | 
					// LayerID returns the layer ID of a layer on disk.
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
							
								
								
									
										2
									
								
								vendor/github.com/Microsoft/hcsshim/internal/wclayer/layerutils.go
									
										
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								vendor/github.com/Microsoft/hcsshim/internal/wclayer/layerutils.go
									
										
									
										generated
									
									
										vendored
									
									
								
							| 
						 | 
					@ -6,7 +6,7 @@ package wclayer
 | 
				
			||||||
import (
 | 
					import (
 | 
				
			||||||
	"syscall"
 | 
						"syscall"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	"github.com/Microsoft/hcsshim/internal/guid"
 | 
						"github.com/Microsoft/go-winio/pkg/guid"
 | 
				
			||||||
	"github.com/sirupsen/logrus"
 | 
						"github.com/sirupsen/logrus"
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
							
								
								
									
										2
									
								
								vendor/github.com/Microsoft/hcsshim/internal/wclayer/nametoguid.go
									
										
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								vendor/github.com/Microsoft/hcsshim/internal/wclayer/nametoguid.go
									
										
									
										generated
									
									
										vendored
									
									
								
							| 
						 | 
					@ -1,7 +1,7 @@
 | 
				
			||||||
package wclayer
 | 
					package wclayer
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import (
 | 
					import (
 | 
				
			||||||
	"github.com/Microsoft/hcsshim/internal/guid"
 | 
						"github.com/Microsoft/go-winio/pkg/guid"
 | 
				
			||||||
	"github.com/Microsoft/hcsshim/internal/hcserror"
 | 
						"github.com/Microsoft/hcsshim/internal/hcserror"
 | 
				
			||||||
	"github.com/sirupsen/logrus"
 | 
						"github.com/sirupsen/logrus"
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
							
								
								
									
										7
									
								
								vendor/github.com/Microsoft/hcsshim/internal/wclayer/wclayer.go
									
										
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										7
									
								
								vendor/github.com/Microsoft/hcsshim/internal/wclayer/wclayer.go
									
										
									
										generated
									
									
										vendored
									
									
								
							| 
						 | 
					@ -1,6 +1,6 @@
 | 
				
			||||||
package wclayer
 | 
					package wclayer
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import "github.com/Microsoft/hcsshim/internal/guid"
 | 
					import "github.com/Microsoft/go-winio/pkg/guid"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
//go:generate go run ../../mksyscall_windows.go -output zsyscall_windows.go wclayer.go
 | 
					//go:generate go run ../../mksyscall_windows.go -output zsyscall_windows.go wclayer.go
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -24,4 +24,9 @@ import "github.com/Microsoft/hcsshim/internal/guid"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
//sys grantVmAccess(vmid string, filepath string) (hr error) = vmcompute.GrantVmAccess?
 | 
					//sys grantVmAccess(vmid string, filepath string) (hr error) = vmcompute.GrantVmAccess?
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					//sys openVirtualDisk(virtualStorageType *virtualStorageType, path string, virtualDiskAccessMask uint32, flags uint32, parameters *openVirtualDiskParameters, handle *syscall.Handle) (err error) [failretval != 0] = virtdisk.OpenVirtualDisk
 | 
				
			||||||
 | 
					//sys attachVirtualDisk(handle syscall.Handle, sd uintptr, flags uint32, providerFlags uint32, params uintptr, overlapped uintptr) (err error) [failretval != 0] = virtdisk.AttachVirtualDisk
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					//sys getDiskFreeSpaceEx(directoryName string, freeBytesAvailableToCaller *int64, totalNumberOfBytes *int64, totalNumberOfFreeBytes *int64) (err error) = GetDiskFreeSpaceExW
 | 
				
			||||||
 | 
					
 | 
				
			||||||
type _guid = guid.GUID
 | 
					type _guid = guid.GUID
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
							
								
								
									
										59
									
								
								vendor/github.com/Microsoft/hcsshim/internal/wclayer/zsyscall_windows.go
									
										
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										59
									
								
								vendor/github.com/Microsoft/hcsshim/internal/wclayer/zsyscall_windows.go
									
										
									
										generated
									
									
										vendored
									
									
								
							| 
						 | 
					@ -38,6 +38,8 @@ func errnoErr(e syscall.Errno) error {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
var (
 | 
					var (
 | 
				
			||||||
	modvmcompute = windows.NewLazySystemDLL("vmcompute.dll")
 | 
						modvmcompute = windows.NewLazySystemDLL("vmcompute.dll")
 | 
				
			||||||
 | 
						modvirtdisk  = windows.NewLazySystemDLL("virtdisk.dll")
 | 
				
			||||||
 | 
						modkernel32  = windows.NewLazySystemDLL("kernel32.dll")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	procActivateLayer       = modvmcompute.NewProc("ActivateLayer")
 | 
						procActivateLayer       = modvmcompute.NewProc("ActivateLayer")
 | 
				
			||||||
	procCopyLayer           = modvmcompute.NewProc("CopyLayer")
 | 
						procCopyLayer           = modvmcompute.NewProc("CopyLayer")
 | 
				
			||||||
| 
						 | 
					@ -57,6 +59,9 @@ var (
 | 
				
			||||||
	procProcessBaseImage    = modvmcompute.NewProc("ProcessBaseImage")
 | 
						procProcessBaseImage    = modvmcompute.NewProc("ProcessBaseImage")
 | 
				
			||||||
	procProcessUtilityImage = modvmcompute.NewProc("ProcessUtilityImage")
 | 
						procProcessUtilityImage = modvmcompute.NewProc("ProcessUtilityImage")
 | 
				
			||||||
	procGrantVmAccess       = modvmcompute.NewProc("GrantVmAccess")
 | 
						procGrantVmAccess       = modvmcompute.NewProc("GrantVmAccess")
 | 
				
			||||||
 | 
						procOpenVirtualDisk     = modvirtdisk.NewProc("OpenVirtualDisk")
 | 
				
			||||||
 | 
						procAttachVirtualDisk   = modvirtdisk.NewProc("AttachVirtualDisk")
 | 
				
			||||||
 | 
						procGetDiskFreeSpaceExW = modkernel32.NewProc("GetDiskFreeSpaceExW")
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func activateLayer(info *driverInfo, id string) (hr error) {
 | 
					func activateLayer(info *driverInfo, id string) (hr error) {
 | 
				
			||||||
| 
						 | 
					@ -508,3 +513,57 @@ func _grantVmAccess(vmid *uint16, filepath *uint16) (hr error) {
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	return
 | 
						return
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func openVirtualDisk(virtualStorageType *virtualStorageType, path string, virtualDiskAccessMask uint32, flags uint32, parameters *openVirtualDiskParameters, handle *syscall.Handle) (err error) {
 | 
				
			||||||
 | 
						var _p0 *uint16
 | 
				
			||||||
 | 
						_p0, err = syscall.UTF16PtrFromString(path)
 | 
				
			||||||
 | 
						if err != nil {
 | 
				
			||||||
 | 
							return
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						return _openVirtualDisk(virtualStorageType, _p0, virtualDiskAccessMask, flags, parameters, handle)
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func _openVirtualDisk(virtualStorageType *virtualStorageType, path *uint16, virtualDiskAccessMask uint32, flags uint32, parameters *openVirtualDiskParameters, handle *syscall.Handle) (err error) {
 | 
				
			||||||
 | 
						r1, _, e1 := syscall.Syscall6(procOpenVirtualDisk.Addr(), 6, uintptr(unsafe.Pointer(virtualStorageType)), uintptr(unsafe.Pointer(path)), uintptr(virtualDiskAccessMask), uintptr(flags), uintptr(unsafe.Pointer(parameters)), uintptr(unsafe.Pointer(handle)))
 | 
				
			||||||
 | 
						if r1 != 0 {
 | 
				
			||||||
 | 
							if e1 != 0 {
 | 
				
			||||||
 | 
								err = errnoErr(e1)
 | 
				
			||||||
 | 
							} else {
 | 
				
			||||||
 | 
								err = syscall.EINVAL
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						return
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func attachVirtualDisk(handle syscall.Handle, sd uintptr, flags uint32, providerFlags uint32, params uintptr, overlapped uintptr) (err error) {
 | 
				
			||||||
 | 
						r1, _, e1 := syscall.Syscall6(procAttachVirtualDisk.Addr(), 6, uintptr(handle), uintptr(sd), uintptr(flags), uintptr(providerFlags), uintptr(params), uintptr(overlapped))
 | 
				
			||||||
 | 
						if r1 != 0 {
 | 
				
			||||||
 | 
							if e1 != 0 {
 | 
				
			||||||
 | 
								err = errnoErr(e1)
 | 
				
			||||||
 | 
							} else {
 | 
				
			||||||
 | 
								err = syscall.EINVAL
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						return
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func getDiskFreeSpaceEx(directoryName string, freeBytesAvailableToCaller *int64, totalNumberOfBytes *int64, totalNumberOfFreeBytes *int64) (err error) {
 | 
				
			||||||
 | 
						var _p0 *uint16
 | 
				
			||||||
 | 
						_p0, err = syscall.UTF16PtrFromString(directoryName)
 | 
				
			||||||
 | 
						if err != nil {
 | 
				
			||||||
 | 
							return
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						return _getDiskFreeSpaceEx(_p0, freeBytesAvailableToCaller, totalNumberOfBytes, totalNumberOfFreeBytes)
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func _getDiskFreeSpaceEx(directoryName *uint16, freeBytesAvailableToCaller *int64, totalNumberOfBytes *int64, totalNumberOfFreeBytes *int64) (err error) {
 | 
				
			||||||
 | 
						r1, _, e1 := syscall.Syscall6(procGetDiskFreeSpaceExW.Addr(), 4, uintptr(unsafe.Pointer(directoryName)), uintptr(unsafe.Pointer(freeBytesAvailableToCaller)), uintptr(unsafe.Pointer(totalNumberOfBytes)), uintptr(unsafe.Pointer(totalNumberOfFreeBytes)), 0, 0)
 | 
				
			||||||
 | 
						if r1 == 0 {
 | 
				
			||||||
 | 
							if e1 != 0 {
 | 
				
			||||||
 | 
								err = errnoErr(e1)
 | 
				
			||||||
 | 
							} else {
 | 
				
			||||||
 | 
								err = syscall.EINVAL
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						return
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
							
								
								
									
										6
									
								
								vendor/github.com/Microsoft/hcsshim/layer.go
									
										
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										6
									
								
								vendor/github.com/Microsoft/hcsshim/layer.go
									
										
									
										generated
									
									
										vendored
									
									
								
							| 
						 | 
					@ -4,7 +4,7 @@ import (
 | 
				
			||||||
	"crypto/sha1"
 | 
						"crypto/sha1"
 | 
				
			||||||
	"path/filepath"
 | 
						"path/filepath"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	"github.com/Microsoft/hcsshim/internal/guid"
 | 
						"github.com/Microsoft/go-winio/pkg/guid"
 | 
				
			||||||
	"github.com/Microsoft/hcsshim/internal/wclayer"
 | 
						"github.com/Microsoft/hcsshim/internal/wclayer"
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -77,7 +77,7 @@ type GUID [16]byte
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func NameToGuid(name string) (id GUID, err error) {
 | 
					func NameToGuid(name string) (id GUID, err error) {
 | 
				
			||||||
	g, err := wclayer.NameToGuid(name)
 | 
						g, err := wclayer.NameToGuid(name)
 | 
				
			||||||
	return GUID(g), err
 | 
						return g.ToWindowsArray(), err
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func NewGUID(source string) *GUID {
 | 
					func NewGUID(source string) *GUID {
 | 
				
			||||||
| 
						 | 
					@ -88,7 +88,7 @@ func NewGUID(source string) *GUID {
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func (g *GUID) ToString() string {
 | 
					func (g *GUID) ToString() string {
 | 
				
			||||||
	return (guid.GUID)(*g).String()
 | 
						return guid.FromWindowsArray(*g).String()
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
type LayerReader = wclayer.LayerReader
 | 
					type LayerReader = wclayer.LayerReader
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
							
								
								
									
										6
									
								
								vendor/github.com/Microsoft/hcsshim/osversion/windowsbuilds.go
									
										
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										6
									
								
								vendor/github.com/Microsoft/hcsshim/osversion/windowsbuilds.go
									
										
									
										generated
									
									
										vendored
									
									
								
							| 
						 | 
					@ -14,10 +14,14 @@ const (
 | 
				
			||||||
	RS3 = 16299
 | 
						RS3 = 16299
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// RS4 (version 1803, codename "Redstone 4") corresponds to Windows Server
 | 
						// RS4 (version 1803, codename "Redstone 4") corresponds to Windows Server
 | 
				
			||||||
	// 1809 (Semi-Annual Channel (SAC)), and Windows 10 (April 2018 Update).
 | 
						// 1803 (Semi-Annual Channel (SAC)), and Windows 10 (April 2018 Update).
 | 
				
			||||||
	RS4 = 17134
 | 
						RS4 = 17134
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// RS5 (version 1809, codename "Redstone 5") corresponds to Windows Server
 | 
						// RS5 (version 1809, codename "Redstone 5") corresponds to Windows Server
 | 
				
			||||||
	// 2019 (ltsc2019), and Windows 10 (October 2018 Update).
 | 
						// 2019 (ltsc2019), and Windows 10 (October 2018 Update).
 | 
				
			||||||
	RS5 = 17763
 | 
						RS5 = 17763
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						// V19H1 (version 1903) corresponds to Windows Server 1903 (semi-annual
 | 
				
			||||||
 | 
						// channel).
 | 
				
			||||||
 | 
						V19H1 = 18362
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
							
								
								
									
										38
									
								
								vendor/github.com/Microsoft/hcsshim/process.go
									
										
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										38
									
								
								vendor/github.com/Microsoft/hcsshim/process.go
									
										
									
										generated
									
									
										vendored
									
									
								
							| 
						 | 
					@ -1,7 +1,9 @@
 | 
				
			||||||
package hcsshim
 | 
					package hcsshim
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import (
 | 
					import (
 | 
				
			||||||
 | 
						"context"
 | 
				
			||||||
	"io"
 | 
						"io"
 | 
				
			||||||
 | 
						"sync"
 | 
				
			||||||
	"time"
 | 
						"time"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	"github.com/Microsoft/hcsshim/internal/hcs"
 | 
						"github.com/Microsoft/hcsshim/internal/hcs"
 | 
				
			||||||
| 
						 | 
					@ -9,7 +11,10 @@ import (
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// ContainerError is an error encountered in HCS
 | 
					// ContainerError is an error encountered in HCS
 | 
				
			||||||
type process struct {
 | 
					type process struct {
 | 
				
			||||||
	p *hcs.Process
 | 
						p        *hcs.Process
 | 
				
			||||||
 | 
						waitOnce sync.Once
 | 
				
			||||||
 | 
						waitCh   chan struct{}
 | 
				
			||||||
 | 
						waitErr  error
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// Pid returns the process ID of the process within the container.
 | 
					// Pid returns the process ID of the process within the container.
 | 
				
			||||||
| 
						 | 
					@ -19,7 +24,14 @@ func (process *process) Pid() int {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// Kill signals the process to terminate but does not wait for it to finish terminating.
 | 
					// Kill signals the process to terminate but does not wait for it to finish terminating.
 | 
				
			||||||
func (process *process) Kill() error {
 | 
					func (process *process) Kill() error {
 | 
				
			||||||
	return convertProcessError(process.p.Kill(), process)
 | 
						found, err := process.p.Kill(context.Background())
 | 
				
			||||||
 | 
						if err != nil {
 | 
				
			||||||
 | 
							return convertProcessError(err, process)
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						if !found {
 | 
				
			||||||
 | 
							return &ProcessError{Process: process, Err: ErrElementNotFound, Operation: "hcsshim::Process::Kill"}
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						return nil
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// Wait waits for the process to exit.
 | 
					// Wait waits for the process to exit.
 | 
				
			||||||
| 
						 | 
					@ -30,7 +42,21 @@ func (process *process) Wait() error {
 | 
				
			||||||
// WaitTimeout waits for the process to exit or the duration to elapse. It returns
 | 
					// WaitTimeout waits for the process to exit or the duration to elapse. It returns
 | 
				
			||||||
// false if timeout occurs.
 | 
					// false if timeout occurs.
 | 
				
			||||||
func (process *process) WaitTimeout(timeout time.Duration) error {
 | 
					func (process *process) WaitTimeout(timeout time.Duration) error {
 | 
				
			||||||
	return convertProcessError(process.p.WaitTimeout(timeout), process)
 | 
						process.waitOnce.Do(func() {
 | 
				
			||||||
 | 
							process.waitCh = make(chan struct{})
 | 
				
			||||||
 | 
							go func() {
 | 
				
			||||||
 | 
								process.waitErr = process.Wait()
 | 
				
			||||||
 | 
								close(process.waitCh)
 | 
				
			||||||
 | 
							}()
 | 
				
			||||||
 | 
						})
 | 
				
			||||||
 | 
						t := time.NewTimer(timeout)
 | 
				
			||||||
 | 
						defer t.Stop()
 | 
				
			||||||
 | 
						select {
 | 
				
			||||||
 | 
						case <-t.C:
 | 
				
			||||||
 | 
							return &ProcessError{Process: process, Err: ErrTimeout, Operation: "hcsshim::Process::Wait"}
 | 
				
			||||||
 | 
						case <-process.waitCh:
 | 
				
			||||||
 | 
							return process.waitErr
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// ExitCode returns the exit code of the process. The process must have
 | 
					// ExitCode returns the exit code of the process. The process must have
 | 
				
			||||||
| 
						 | 
					@ -45,14 +71,14 @@ func (process *process) ExitCode() (int, error) {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// ResizeConsole resizes the console of the process.
 | 
					// ResizeConsole resizes the console of the process.
 | 
				
			||||||
func (process *process) ResizeConsole(width, height uint16) error {
 | 
					func (process *process) ResizeConsole(width, height uint16) error {
 | 
				
			||||||
	return convertProcessError(process.p.ResizeConsole(width, height), process)
 | 
						return convertProcessError(process.p.ResizeConsole(context.Background(), width, height), process)
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// Stdio returns the stdin, stdout, and stderr pipes, respectively. Closing
 | 
					// Stdio returns the stdin, stdout, and stderr pipes, respectively. Closing
 | 
				
			||||||
// these pipes does not close the underlying pipes; it should be possible to
 | 
					// these pipes does not close the underlying pipes; it should be possible to
 | 
				
			||||||
// call this multiple times to get multiple interfaces.
 | 
					// call this multiple times to get multiple interfaces.
 | 
				
			||||||
func (process *process) Stdio() (io.WriteCloser, io.ReadCloser, io.ReadCloser, error) {
 | 
					func (process *process) Stdio() (io.WriteCloser, io.ReadCloser, io.ReadCloser, error) {
 | 
				
			||||||
	stdin, stdout, stderr, err := process.p.Stdio()
 | 
						stdin, stdout, stderr, err := process.p.StdioLegacy()
 | 
				
			||||||
	if err != nil {
 | 
						if err != nil {
 | 
				
			||||||
		err = convertProcessError(err, process)
 | 
							err = convertProcessError(err, process)
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
| 
						 | 
					@ -62,7 +88,7 @@ func (process *process) Stdio() (io.WriteCloser, io.ReadCloser, io.ReadCloser, e
 | 
				
			||||||
// CloseStdin closes the write side of the stdin pipe so that the process is
 | 
					// 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.
 | 
					// notified on the read side that there is no more data in stdin.
 | 
				
			||||||
func (process *process) CloseStdin() error {
 | 
					func (process *process) CloseStdin() error {
 | 
				
			||||||
	return convertProcessError(process.p.CloseStdin(), process)
 | 
						return convertProcessError(process.p.CloseStdin(context.Background()), process)
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// Close cleans up any state associated with the process but does not kill
 | 
					// Close cleans up any state associated with the process but does not kill
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
							
								
								
									
										33
									
								
								vendor/github.com/Microsoft/hcsshim/vendor.conf
									
										
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										33
									
								
								vendor/github.com/Microsoft/hcsshim/vendor.conf
									
										
									
										generated
									
									
										vendored
									
									
								
							| 
						 | 
					@ -1,33 +0,0 @@
 | 
				
			||||||
github.com/blang/semver v3.1.0
 | 
					 | 
				
			||||||
github.com/containerd/console c12b1e7919c14469339a5d38f2f8ed9b64a9de23
 | 
					 | 
				
			||||||
github.com/containerd/containerd faec567304bbdf6864b1663d4f813641b5880a4a
 | 
					 | 
				
			||||||
github.com/containerd/go-runc 5a6d9f37cfa36b15efba46dc7ea349fa9b7143c3
 | 
					 | 
				
			||||||
github.com/containerd/ttrpc 2a805f71863501300ae1976d29f0454ae003e85a
 | 
					 | 
				
			||||||
github.com/containerd/typeurl a93fcdb778cd272c6e9b3028b2f42d813e785d40
 | 
					 | 
				
			||||||
github.com/gogo/protobuf v1.0.0
 | 
					 | 
				
			||||||
github.com/golang/protobuf v1.1.0
 | 
					 | 
				
			||||||
github.com/hashicorp/errwrap 7554cd9344cec97297fa6649b055a8c98c2a1e55
 | 
					 | 
				
			||||||
github.com/hashicorp/go-multierror ed905158d87462226a13fe39ddf685ea65f1c11f
 | 
					 | 
				
			||||||
github.com/konsorten/go-windows-terminal-sequences v1.0.1
 | 
					 | 
				
			||||||
github.com/linuxkit/virtsock 8e79449dea0735c1c056d814934dd035734cc97c
 | 
					 | 
				
			||||||
github.com/Microsoft/go-winio 84b4ab48a50763fe7b3abcef38e5205c12027fac
 | 
					 | 
				
			||||||
github.com/Microsoft/opengcs v0.3.9
 | 
					 | 
				
			||||||
github.com/opencontainers/go-digest c9281466c8b2f606084ac71339773efd177436e7
 | 
					 | 
				
			||||||
github.com/opencontainers/runc 12f6a991201fdb8f82579582d5e00e28fba06d0a
 | 
					 | 
				
			||||||
github.com/opencontainers/runtime-spec 29686dbc5559d93fb1ef402eeda3e35c38d75af4
 | 
					 | 
				
			||||||
github.com/opencontainers/runtime-tools 1d69bd0f9c39677d0630e50664fbc3154ae61b88
 | 
					 | 
				
			||||||
github.com/pkg/errors v0.8.1
 | 
					 | 
				
			||||||
github.com/sirupsen/logrus v1.3.0
 | 
					 | 
				
			||||||
github.com/syndtr/gocapability db04d3cc01c8b54962a58ec7e491717d06cfcc16
 | 
					 | 
				
			||||||
github.com/urfave/cli 7bc6a0acffa589f415f88aca16cc1de5ffd66f9c
 | 
					 | 
				
			||||||
github.com/xeipuuv/gojsonpointer 4e3ac2762d5f479393488629ee9370b50873b3a6
 | 
					 | 
				
			||||||
github.com/xeipuuv/gojsonreference bd5ef7bd5415a7ac448318e64f11a24cd21e594b
 | 
					 | 
				
			||||||
github.com/xeipuuv/gojsonschema 1d523034197ff1f222f6429836dd36a2457a1874
 | 
					 | 
				
			||||||
golang.org/x/crypto ff983b9c42bc9fbf91556e191cc8efb585c16908
 | 
					 | 
				
			||||||
golang.org/x/net ed066c81e75eba56dd9bd2139ade88125b855585
 | 
					 | 
				
			||||||
golang.org/x/sync 37e7f081c4d4c64e13b10787722085407fe5d15f
 | 
					 | 
				
			||||||
golang.org/x/sys e5ecc2a6747ce8d4af18ed98b3de5ae30eb3a5bb
 | 
					 | 
				
			||||||
golang.org/x/text d14c52b222ee852cdba8b07206ca0c614b389876
 | 
					 | 
				
			||||||
google.golang.org/genproto d80a6e20e776b0b17a324d0ba1ab50a39c8e8944
 | 
					 | 
				
			||||||
google.golang.org/grpc v1.12.0
 | 
					 | 
				
			||||||
k8s.io/kubernetes v1.13.0
 | 
					 | 
				
			||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue