Update to latest hcsshim - 0.8.9
Switch to ad tagged version of hcsshim. Context here: https://github.com/kubernetes/kubernetes/issues/87420#issuecomment-620837610 Signed-off-by: Davanum Srinivas <davanum@gmail.com>
This commit is contained in:
		
							
								
								
									
										5
									
								
								vendor/github.com/Microsoft/hcsshim/README.md
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										5
									
								
								vendor/github.com/Microsoft/hcsshim/README.md
									
									
									
										generated
									
									
										vendored
									
									
								
							@@ -16,6 +16,11 @@ When you submit a pull request, a CLA-bot will automatically determine whether y
 | 
			
		||||
a CLA and decorate the PR appropriately (e.g., label, comment). Simply follow the instructions
 | 
			
		||||
provided by the bot. You will only need to do this once across all repos using our CLA.
 | 
			
		||||
 | 
			
		||||
We also ask that contributors [sign their commits](https://git-scm.com/docs/git-commit) using `git commit -s` or `git commit --signoff` to certify they either authored the work themselves or otherwise have permission to use it in this project. 
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
## Code of Conduct
 | 
			
		||||
 | 
			
		||||
This project has adopted the [Microsoft Open Source Code of Conduct](https://opensource.microsoft.com/codeofconduct/).
 | 
			
		||||
For more information see the [Code of Conduct FAQ](https://opensource.microsoft.com/codeofconduct/faq/) or
 | 
			
		||||
contact [opencode@microsoft.com](mailto:opencode@microsoft.com) with any additional questions or comments.
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										147
									
								
								vendor/github.com/Microsoft/hcsshim/cmd/containerd-shim-runhcs-v1/options/runhcs.pb.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										147
									
								
								vendor/github.com/Microsoft/hcsshim/cmd/containerd-shim-runhcs-v1/options/runhcs.pb.go
									
									
									
										generated
									
									
										vendored
									
									
								
							@@ -112,7 +112,10 @@ type Options struct {
 | 
			
		||||
	// hypervisor isolated utility vm.
 | 
			
		||||
	//
 | 
			
		||||
	// The platform default is 1024MB if omitted.
 | 
			
		||||
	VmMemorySizeInMb     int32    `protobuf:"varint,9,opt,name=vm_memory_size_in_mb,json=vmMemorySizeInMb,proto3" json:"vm_memory_size_in_mb,omitempty"`
 | 
			
		||||
	VmMemorySizeInMb int32 `protobuf:"varint,9,opt,name=vm_memory_size_in_mb,json=vmMemorySizeInMb,proto3" json:"vm_memory_size_in_mb,omitempty"`
 | 
			
		||||
	// GPUVHDPath is the path to the gpu vhd to add to the uvm
 | 
			
		||||
	// when a container requests a gpu
 | 
			
		||||
	GPUVHDPath           string   `protobuf:"bytes,10,opt,name=GPUVHDPath,json=gPUVHDPath,proto3" json:"GPUVHDPath,omitempty"`
 | 
			
		||||
	XXX_NoUnkeyedLiteral struct{} `json:"-"`
 | 
			
		||||
	XXX_unrecognized     []byte   `json:"-"`
 | 
			
		||||
	XXX_sizecache        int32    `json:"-"`
 | 
			
		||||
@@ -211,55 +214,56 @@ func init() {
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
var fileDescriptor_b643df6839c75082 = []byte{
 | 
			
		||||
	// 760 bytes of a gzipped FileDescriptorProto
 | 
			
		||||
	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xa4, 0x54, 0xcb, 0x6e, 0xdb, 0x46,
 | 
			
		||||
	0x14, 0x15, 0x63, 0xbd, 0x78, 0x53, 0x3b, 0xf4, 0x54, 0x0b, 0xc2, 0x6d, 0x25, 0xc1, 0x59, 0xc4,
 | 
			
		||||
	0x41, 0x63, 0xd2, 0x4e, 0x97, 0x5d, 0x55, 0x96, 0x8c, 0xb2, 0xa8, 0x6d, 0x82, 0x32, 0x9a, 0x3e,
 | 
			
		||||
	0x16, 0x03, 0x3e, 0xc6, 0xd4, 0x20, 0x1a, 0x0e, 0x31, 0x33, 0x52, 0xad, 0xac, 0xfa, 0x09, 0xfd,
 | 
			
		||||
	0x88, 0x7e, 0x8c, 0x97, 0x5d, 0x16, 0x28, 0xe0, 0x36, 0xfa, 0x92, 0x62, 0x86, 0xa4, 0x83, 0x06,
 | 
			
		||||
	0x41, 0x37, 0x5d, 0x69, 0x78, 0xce, 0x99, 0x73, 0x1f, 0x73, 0x20, 0xb8, 0xca, 0xa9, 0x5a, 0xac,
 | 
			
		||||
	0x12, 0x2f, 0xe5, 0xcc, 0xbf, 0xa0, 0xa9, 0xe0, 0x92, 0xdf, 0x28, 0x7f, 0x91, 0x4a, 0xb9, 0xa0,
 | 
			
		||||
	0xcc, 0x4f, 0x59, 0xe6, 0xa7, 0xbc, 0x50, 0x31, 0x2d, 0x88, 0xc8, 0x8e, 0x35, 0x76, 0x2c, 0x56,
 | 
			
		||||
	0xc5, 0x22, 0x95, 0xc7, 0xeb, 0x53, 0x9f, 0x97, 0x8a, 0xf2, 0x42, 0xfa, 0x15, 0xe2, 0x95, 0x82,
 | 
			
		||||
	0x2b, 0x8e, 0x06, 0xef, 0xf4, 0x5e, 0x4d, 0xac, 0x4f, 0x0f, 0x06, 0x39, 0xcf, 0xb9, 0x11, 0xf8,
 | 
			
		||||
	0xfa, 0x54, 0x69, 0x0f, 0x46, 0x39, 0xe7, 0xf9, 0x92, 0xf8, 0xe6, 0x2b, 0x59, 0xdd, 0xf8, 0x8a,
 | 
			
		||||
	0x32, 0x22, 0x55, 0xcc, 0xca, 0x4a, 0x70, 0xf8, 0x5b, 0x1b, 0x7a, 0x57, 0x55, 0x15, 0x34, 0x80,
 | 
			
		||||
	0x4e, 0x46, 0x92, 0x55, 0xee, 0x5a, 0x63, 0xeb, 0xa8, 0x1f, 0x55, 0x1f, 0xe8, 0x1c, 0xc0, 0x1c,
 | 
			
		||||
	0xb0, 0xda, 0x94, 0xc4, 0x7d, 0x34, 0xb6, 0x8e, 0xf6, 0x5e, 0x3e, 0xf3, 0x3e, 0xd4, 0x83, 0x57,
 | 
			
		||||
	0x1b, 0x79, 0x53, 0xad, 0xbf, 0xde, 0x94, 0x24, 0xb2, 0xb3, 0xe6, 0x88, 0x9e, 0xc2, 0xae, 0x20,
 | 
			
		||||
	0x39, 0x95, 0x4a, 0x6c, 0xb0, 0xe0, 0x5c, 0xb9, 0x3b, 0x63, 0xeb, 0xc8, 0x8e, 0x3e, 0x6a, 0xc0,
 | 
			
		||||
	0x88, 0x73, 0xa5, 0x45, 0x32, 0x2e, 0xb2, 0x84, 0xdf, 0x62, 0xca, 0xe2, 0x9c, 0xb8, 0xed, 0x4a,
 | 
			
		||||
	0x54, 0x83, 0x81, 0xc6, 0xd0, 0x73, 0x70, 0x1a, 0x51, 0xb9, 0x8c, 0xd5, 0x0d, 0x17, 0xcc, 0xed,
 | 
			
		||||
	0x18, 0xdd, 0x93, 0x1a, 0x0f, 0x6b, 0x18, 0xfd, 0x04, 0xfb, 0x0f, 0x7e, 0x92, 0x2f, 0x63, 0xdd,
 | 
			
		||||
	0x9f, 0xdb, 0x35, 0x33, 0x78, 0xff, 0x3d, 0xc3, 0xbc, 0xae, 0xd8, 0xdc, 0x8a, 0x9a, 0x9a, 0x0f,
 | 
			
		||||
	0x08, 0xf2, 0x61, 0x90, 0x70, 0xae, 0xf0, 0x0d, 0x5d, 0x12, 0x69, 0x66, 0xc2, 0x65, 0xac, 0x16,
 | 
			
		||||
	0x6e, 0xcf, 0xf4, 0xb2, 0xaf, 0xb9, 0x73, 0x4d, 0xe9, 0xc9, 0xc2, 0x58, 0x2d, 0xd0, 0x0b, 0x40,
 | 
			
		||||
	0x6b, 0x86, 0x4b, 0xc1, 0x53, 0x22, 0x25, 0x17, 0x38, 0xe5, 0xab, 0x42, 0xb9, 0xfd, 0xb1, 0x75,
 | 
			
		||||
	0xd4, 0x89, 0x9c, 0x35, 0x0b, 0x1b, 0xe2, 0x4c, 0xe3, 0xc8, 0x83, 0xc1, 0x9a, 0x61, 0x46, 0x18,
 | 
			
		||||
	0x17, 0x1b, 0x2c, 0xe9, 0x1b, 0x82, 0x69, 0x81, 0x59, 0xe2, 0xda, 0x8d, 0xfe, 0xc2, 0x50, 0x73,
 | 
			
		||||
	0xfa, 0x86, 0x04, 0xc5, 0x45, 0x72, 0xf8, 0x1c, 0xec, 0x87, 0xc5, 0x23, 0x1b, 0x3a, 0x97, 0x61,
 | 
			
		||||
	0x10, 0xce, 0x9c, 0x16, 0xea, 0x43, 0xfb, 0x3c, 0xf8, 0x76, 0xe6, 0x58, 0xa8, 0x07, 0x3b, 0xb3,
 | 
			
		||||
	0xeb, 0x57, 0xce, 0xa3, 0x43, 0x1f, 0x9c, 0xf7, 0xe7, 0x43, 0x8f, 0xa1, 0x17, 0x46, 0x57, 0x67,
 | 
			
		||||
	0xb3, 0xf9, 0xdc, 0x69, 0xa1, 0x3d, 0x80, 0xaf, 0x7f, 0x08, 0x67, 0xd1, 0x77, 0xc1, 0xfc, 0x2a,
 | 
			
		||||
	0x72, 0xac, 0xc3, 0x3f, 0x77, 0x60, 0xaf, 0x6e, 0x6f, 0x4a, 0x54, 0x4c, 0x97, 0x12, 0x7d, 0x06,
 | 
			
		||||
	0x60, 0x9e, 0x08, 0x17, 0x31, 0x23, 0x26, 0x32, 0x76, 0x64, 0x1b, 0xe4, 0x32, 0x66, 0x04, 0x9d,
 | 
			
		||||
	0x01, 0xa4, 0x82, 0xc4, 0x8a, 0x64, 0x38, 0x56, 0x26, 0x36, 0x8f, 0x5f, 0x1e, 0x78, 0x55, 0x1c,
 | 
			
		||||
	0xbd, 0x26, 0x8e, 0xde, 0x75, 0x13, 0xc7, 0x49, 0xff, 0xee, 0x7e, 0xd4, 0xfa, 0xf5, 0xaf, 0x91,
 | 
			
		||||
	0x15, 0xd9, 0xf5, 0xbd, 0xaf, 0x14, 0xfa, 0x1c, 0xd0, 0x6b, 0x22, 0x0a, 0xb2, 0xc4, 0x3a, 0xb7,
 | 
			
		||||
	0xf8, 0xf4, 0xe4, 0x04, 0x17, 0xd2, 0x04, 0xa7, 0x1d, 0x3d, 0xa9, 0x18, 0xed, 0x70, 0x7a, 0x72,
 | 
			
		||||
	0x72, 0x29, 0x91, 0x07, 0x1f, 0xd7, 0xcb, 0x4a, 0x39, 0x63, 0x54, 0xe1, 0x64, 0xa3, 0x88, 0x34,
 | 
			
		||||
	0x09, 0x6a, 0x47, 0xfb, 0x15, 0x75, 0x66, 0x98, 0x89, 0x26, 0xd0, 0x39, 0x8c, 0x6b, 0xfd, 0xcf,
 | 
			
		||||
	0x5c, 0xbc, 0xa6, 0x45, 0x8e, 0x25, 0x51, 0xb8, 0x14, 0x74, 0x1d, 0x2b, 0x52, 0x5f, 0xee, 0x98,
 | 
			
		||||
	0xcb, 0x9f, 0x56, 0xba, 0x57, 0x95, 0x6c, 0x4e, 0x54, 0x58, 0x89, 0x2a, 0x9f, 0x29, 0x8c, 0x3e,
 | 
			
		||||
	0xe0, 0x23, 0x17, 0xb1, 0x20, 0x59, 0x6d, 0xd3, 0x35, 0x36, 0x9f, 0xbc, 0x6f, 0x33, 0x37, 0x9a,
 | 
			
		||||
	0xca, 0xe5, 0x05, 0x40, 0x1d, 0x0c, 0x4c, 0x33, 0x13, 0xa1, 0xdd, 0xc9, 0xee, 0xf6, 0x7e, 0x64,
 | 
			
		||||
	0xd7, 0x6b, 0x0f, 0xa6, 0x91, 0x5d, 0x0b, 0x82, 0x0c, 0x3d, 0x03, 0x67, 0x25, 0x89, 0xf8, 0xd7,
 | 
			
		||||
	0x5a, 0xfa, 0xa6, 0xc8, 0xae, 0xc6, 0xdf, 0x2d, 0xe5, 0x29, 0xf4, 0xc8, 0x2d, 0x49, 0xb5, 0xa7,
 | 
			
		||||
	0xce, 0x8d, 0x3d, 0x81, 0xed, 0xfd, 0xa8, 0x3b, 0xbb, 0x25, 0x69, 0x30, 0x8d, 0xba, 0x9a, 0x0a,
 | 
			
		||||
	0xb2, 0x49, 0x76, 0xf7, 0x76, 0xd8, 0xfa, 0xe3, 0xed, 0xb0, 0xf5, 0xcb, 0x76, 0x68, 0xdd, 0x6d,
 | 
			
		||||
	0x87, 0xd6, 0xef, 0xdb, 0xa1, 0xf5, 0xf7, 0x76, 0x68, 0xfd, 0xf8, 0xcd, 0xff, 0xff, 0xf3, 0xfa,
 | 
			
		||||
	0xb2, 0xfe, 0xfd, 0xbe, 0x95, 0x74, 0xcd, 0xbb, 0x7f, 0xf1, 0x4f, 0x00, 0x00, 0x00, 0xff, 0xff,
 | 
			
		||||
	0xd7, 0x90, 0x00, 0xaf, 0x13, 0x05, 0x00, 0x00,
 | 
			
		||||
	// 777 bytes of a gzipped FileDescriptorProto
 | 
			
		||||
	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xa4, 0x54, 0xcd, 0x6f, 0xdb, 0x36,
 | 
			
		||||
	0x1c, 0xb5, 0x9a, 0xf8, 0x43, 0xbf, 0x2e, 0xa9, 0xc2, 0xf9, 0x20, 0x64, 0x9b, 0x6d, 0xa4, 0x87,
 | 
			
		||||
	0xa6, 0x58, 0x23, 0x25, 0xdd, 0x71, 0xa7, 0x39, 0x76, 0x56, 0x0d, 0x4b, 0x22, 0xc8, 0x59, 0xbb,
 | 
			
		||||
	0x8f, 0x03, 0xa1, 0x0f, 0x46, 0x26, 0x6a, 0x8a, 0x02, 0x49, 0x7b, 0x71, 0x4f, 0xfb, 0x13, 0xf6,
 | 
			
		||||
	0x47, 0xed, 0x90, 0xe3, 0x8e, 0x03, 0x06, 0x64, 0xab, 0xff, 0x92, 0x81, 0x94, 0x94, 0x62, 0x45,
 | 
			
		||||
	0xb1, 0xcb, 0x4e, 0xa6, 0xde, 0x7b, 0x7c, 0xbf, 0x0f, 0x3e, 0x18, 0x2e, 0x73, 0xaa, 0xe6, 0xcb,
 | 
			
		||||
	0xc4, 0x4b, 0x39, 0xf3, 0xcf, 0x69, 0x2a, 0xb8, 0xe4, 0xd7, 0xca, 0x9f, 0xa7, 0x52, 0xce, 0x29,
 | 
			
		||||
	0xf3, 0x53, 0x96, 0xf9, 0x29, 0x2f, 0x54, 0x4c, 0x0b, 0x22, 0xb2, 0x23, 0x8d, 0x1d, 0x89, 0x65,
 | 
			
		||||
	0x31, 0x4f, 0xe5, 0xd1, 0xea, 0xc4, 0xe7, 0xa5, 0xa2, 0xbc, 0x90, 0x7e, 0x85, 0x78, 0xa5, 0xe0,
 | 
			
		||||
	0x8a, 0xa3, 0xfe, 0x3b, 0xbd, 0x57, 0x13, 0xab, 0x93, 0xfd, 0x7e, 0xce, 0x73, 0x6e, 0x04, 0xbe,
 | 
			
		||||
	0x3e, 0x55, 0xda, 0xfd, 0x61, 0xce, 0x79, 0xbe, 0x20, 0xbe, 0xf9, 0x4a, 0x96, 0xd7, 0xbe, 0xa2,
 | 
			
		||||
	0x8c, 0x48, 0x15, 0xb3, 0xb2, 0x12, 0x1c, 0xfc, 0xb6, 0x0d, 0xdd, 0xcb, 0xaa, 0x0a, 0xea, 0x43,
 | 
			
		||||
	0x3b, 0x23, 0xc9, 0x32, 0x77, 0xad, 0x91, 0x75, 0xd8, 0x8b, 0xaa, 0x0f, 0x74, 0x06, 0x60, 0x0e,
 | 
			
		||||
	0x58, 0xad, 0x4b, 0xe2, 0x3e, 0x18, 0x59, 0x87, 0xbb, 0xcf, 0x9f, 0x78, 0x1f, 0xea, 0xc1, 0xab,
 | 
			
		||||
	0x8d, 0xbc, 0x89, 0xd6, 0x5f, 0xad, 0x4b, 0x12, 0xd9, 0x59, 0x73, 0x44, 0x8f, 0x61, 0x47, 0x90,
 | 
			
		||||
	0x9c, 0x4a, 0x25, 0xd6, 0x58, 0x70, 0xae, 0xdc, 0xad, 0x91, 0x75, 0x68, 0x47, 0x1f, 0x35, 0x60,
 | 
			
		||||
	0xc4, 0xb9, 0xd2, 0x22, 0x19, 0x17, 0x59, 0xc2, 0x6f, 0x30, 0x65, 0x71, 0x4e, 0xdc, 0xed, 0x4a,
 | 
			
		||||
	0x54, 0x83, 0x81, 0xc6, 0xd0, 0x53, 0x70, 0x1a, 0x51, 0xb9, 0x88, 0xd5, 0x35, 0x17, 0xcc, 0x6d,
 | 
			
		||||
	0x1b, 0xdd, 0xa3, 0x1a, 0x0f, 0x6b, 0x18, 0xfd, 0x04, 0x7b, 0xf7, 0x7e, 0x92, 0x2f, 0x62, 0xdd,
 | 
			
		||||
	0x9f, 0xdb, 0x31, 0x33, 0x78, 0xff, 0x3d, 0xc3, 0xac, 0xae, 0xd8, 0xdc, 0x8a, 0x9a, 0x9a, 0xf7,
 | 
			
		||||
	0x08, 0xf2, 0xa1, 0x9f, 0x70, 0xae, 0xf0, 0x35, 0x5d, 0x10, 0x69, 0x66, 0xc2, 0x65, 0xac, 0xe6,
 | 
			
		||||
	0x6e, 0xd7, 0xf4, 0xb2, 0xa7, 0xb9, 0x33, 0x4d, 0xe9, 0xc9, 0xc2, 0x58, 0xcd, 0xd1, 0x33, 0x40,
 | 
			
		||||
	0x2b, 0x86, 0x4b, 0xc1, 0x53, 0x22, 0x25, 0x17, 0x38, 0xe5, 0xcb, 0x42, 0xb9, 0xbd, 0x91, 0x75,
 | 
			
		||||
	0xd8, 0x8e, 0x9c, 0x15, 0x0b, 0x1b, 0xe2, 0x54, 0xe3, 0xc8, 0x83, 0xfe, 0x8a, 0x61, 0x46, 0x18,
 | 
			
		||||
	0x17, 0x6b, 0x2c, 0xe9, 0x1b, 0x82, 0x69, 0x81, 0x59, 0xe2, 0xda, 0x8d, 0xfe, 0xdc, 0x50, 0x33,
 | 
			
		||||
	0xfa, 0x86, 0x04, 0xc5, 0x79, 0x82, 0x06, 0x00, 0x5f, 0x87, 0xdf, 0xbd, 0x7c, 0x31, 0xd1, 0xb5,
 | 
			
		||||
	0x5c, 0x30, 0x4d, 0x40, 0x7e, 0x8f, 0x1c, 0x3c, 0x05, 0xfb, 0xfe, 0x61, 0x90, 0x0d, 0xed, 0x8b,
 | 
			
		||||
	0x30, 0x08, 0xa7, 0x4e, 0x0b, 0xf5, 0x60, 0xfb, 0x2c, 0xf8, 0x76, 0xea, 0x58, 0xa8, 0x0b, 0x5b,
 | 
			
		||||
	0xd3, 0xab, 0x57, 0xce, 0x83, 0x03, 0x1f, 0x9c, 0xf7, 0xe7, 0x47, 0x0f, 0xa1, 0x1b, 0x46, 0x97,
 | 
			
		||||
	0xa7, 0xd3, 0xd9, 0xcc, 0x69, 0xa1, 0x5d, 0x80, 0x17, 0x3f, 0x84, 0xd3, 0xe8, 0x65, 0x30, 0xbb,
 | 
			
		||||
	0x8c, 0x1c, 0xeb, 0xe0, 0xcf, 0x2d, 0xd8, 0xad, 0xdb, 0x9f, 0x10, 0x15, 0xd3, 0x85, 0x44, 0x9f,
 | 
			
		||||
	0x01, 0x98, 0x27, 0xc4, 0x45, 0xcc, 0x88, 0x89, 0x94, 0x1d, 0xd9, 0x06, 0xb9, 0x88, 0x19, 0x41,
 | 
			
		||||
	0xa7, 0x00, 0xa9, 0x20, 0xb1, 0x22, 0x19, 0x8e, 0x95, 0x89, 0xd5, 0xc3, 0xe7, 0xfb, 0x5e, 0x15,
 | 
			
		||||
	0x57, 0xaf, 0x89, 0xab, 0x77, 0xd5, 0xc4, 0x75, 0xdc, 0xbb, 0xbd, 0x1b, 0xb6, 0x7e, 0xfd, 0x6b,
 | 
			
		||||
	0x68, 0x45, 0x76, 0x7d, 0xef, 0x2b, 0x85, 0x3e, 0x07, 0xf4, 0x9a, 0x88, 0x82, 0x2c, 0xb0, 0xce,
 | 
			
		||||
	0x35, 0x3e, 0x39, 0x3e, 0xc6, 0x85, 0x34, 0xc1, 0xda, 0x8e, 0x1e, 0x55, 0x8c, 0x76, 0x38, 0x39,
 | 
			
		||||
	0x3e, 0xbe, 0x90, 0xc8, 0x83, 0x8f, 0xeb, 0x65, 0xa6, 0x9c, 0x31, 0xaa, 0x70, 0xb2, 0x56, 0x44,
 | 
			
		||||
	0x9a, 0x84, 0x6d, 0x47, 0x7b, 0x15, 0x75, 0x6a, 0x98, 0xb1, 0x26, 0xd0, 0x19, 0x8c, 0x6a, 0xfd,
 | 
			
		||||
	0xcf, 0x5c, 0xbc, 0xa6, 0x45, 0x8e, 0x25, 0x51, 0xb8, 0x14, 0x74, 0x15, 0x2b, 0x52, 0x5f, 0x6e,
 | 
			
		||||
	0x9b, 0xcb, 0x9f, 0x56, 0xba, 0x57, 0x95, 0x6c, 0x46, 0x54, 0x58, 0x89, 0x2a, 0x9f, 0x09, 0x0c,
 | 
			
		||||
	0x3f, 0xe0, 0x23, 0xe7, 0xb1, 0x20, 0x59, 0x6d, 0xd3, 0x31, 0x36, 0x9f, 0xbc, 0x6f, 0x33, 0x33,
 | 
			
		||||
	0x9a, 0xca, 0xe5, 0x19, 0x40, 0x1d, 0x1c, 0x4c, 0x33, 0x13, 0xb1, 0x9d, 0xf1, 0xce, 0xe6, 0x6e,
 | 
			
		||||
	0x68, 0xd7, 0x6b, 0x0f, 0x26, 0x91, 0x5d, 0x0b, 0x82, 0x0c, 0x3d, 0x01, 0x67, 0x29, 0x89, 0xf8,
 | 
			
		||||
	0xd7, 0x5a, 0x7a, 0xa6, 0xc8, 0x8e, 0xc6, 0xdf, 0x2d, 0xe5, 0x31, 0x74, 0xc9, 0x0d, 0x49, 0xb5,
 | 
			
		||||
	0xa7, 0xce, 0x95, 0x3d, 0x86, 0xcd, 0xdd, 0xb0, 0x33, 0xbd, 0x21, 0x69, 0x30, 0x89, 0x3a, 0x9a,
 | 
			
		||||
	0x0a, 0xb2, 0x71, 0x76, 0xfb, 0x76, 0xd0, 0xfa, 0xe3, 0xed, 0xa0, 0xf5, 0xcb, 0x66, 0x60, 0xdd,
 | 
			
		||||
	0x6e, 0x06, 0xd6, 0xef, 0x9b, 0x81, 0xf5, 0xf7, 0x66, 0x60, 0xfd, 0xf8, 0xcd, 0xff, 0xff, 0x73,
 | 
			
		||||
	0xfb, 0xb2, 0xfe, 0xfd, 0xbe, 0x95, 0x74, 0xcc, 0xbb, 0x7f, 0xf1, 0x4f, 0x00, 0x00, 0x00, 0xff,
 | 
			
		||||
	0xff, 0xc9, 0xeb, 0xae, 0x6f, 0x33, 0x05, 0x00, 0x00,
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (m *Options) Marshal() (dAtA []byte, err error) {
 | 
			
		||||
@@ -331,6 +335,12 @@ func (m *Options) MarshalTo(dAtA []byte) (int, error) {
 | 
			
		||||
		i++
 | 
			
		||||
		i = encodeVarintRunhcs(dAtA, i, uint64(m.VmMemorySizeInMb))
 | 
			
		||||
	}
 | 
			
		||||
	if len(m.GPUVHDPath) > 0 {
 | 
			
		||||
		dAtA[i] = 0x52
 | 
			
		||||
		i++
 | 
			
		||||
		i = encodeVarintRunhcs(dAtA, i, uint64(len(m.GPUVHDPath)))
 | 
			
		||||
		i += copy(dAtA[i:], m.GPUVHDPath)
 | 
			
		||||
	}
 | 
			
		||||
	if m.XXX_unrecognized != nil {
 | 
			
		||||
		i += copy(dAtA[i:], m.XXX_unrecognized)
 | 
			
		||||
	}
 | 
			
		||||
@@ -454,6 +464,10 @@ func (m *Options) Size() (n int) {
 | 
			
		||||
	if m.VmMemorySizeInMb != 0 {
 | 
			
		||||
		n += 1 + sovRunhcs(uint64(m.VmMemorySizeInMb))
 | 
			
		||||
	}
 | 
			
		||||
	l = len(m.GPUVHDPath)
 | 
			
		||||
	if l > 0 {
 | 
			
		||||
		n += 1 + l + sovRunhcs(uint64(l))
 | 
			
		||||
	}
 | 
			
		||||
	if m.XXX_unrecognized != nil {
 | 
			
		||||
		n += len(m.XXX_unrecognized)
 | 
			
		||||
	}
 | 
			
		||||
@@ -527,6 +541,7 @@ func (this *Options) String() string {
 | 
			
		||||
		`BootFilesRootPath:` + fmt.Sprintf("%v", this.BootFilesRootPath) + `,`,
 | 
			
		||||
		`VmProcessorCount:` + fmt.Sprintf("%v", this.VmProcessorCount) + `,`,
 | 
			
		||||
		`VmMemorySizeInMb:` + fmt.Sprintf("%v", this.VmMemorySizeInMb) + `,`,
 | 
			
		||||
		`GPUVHDPath:` + fmt.Sprintf("%v", this.GPUVHDPath) + `,`,
 | 
			
		||||
		`XXX_unrecognized:` + fmt.Sprintf("%v", this.XXX_unrecognized) + `,`,
 | 
			
		||||
		`}`,
 | 
			
		||||
	}, "")
 | 
			
		||||
@@ -812,6 +827,38 @@ func (m *Options) Unmarshal(dAtA []byte) error {
 | 
			
		||||
					break
 | 
			
		||||
				}
 | 
			
		||||
			}
 | 
			
		||||
		case 10:
 | 
			
		||||
			if wireType != 2 {
 | 
			
		||||
				return fmt.Errorf("proto: wrong wireType = %d for field GPUVHDPath", wireType)
 | 
			
		||||
			}
 | 
			
		||||
			var stringLen uint64
 | 
			
		||||
			for shift := uint(0); ; shift += 7 {
 | 
			
		||||
				if shift >= 64 {
 | 
			
		||||
					return ErrIntOverflowRunhcs
 | 
			
		||||
				}
 | 
			
		||||
				if iNdEx >= l {
 | 
			
		||||
					return io.ErrUnexpectedEOF
 | 
			
		||||
				}
 | 
			
		||||
				b := dAtA[iNdEx]
 | 
			
		||||
				iNdEx++
 | 
			
		||||
				stringLen |= uint64(b&0x7F) << shift
 | 
			
		||||
				if b < 0x80 {
 | 
			
		||||
					break
 | 
			
		||||
				}
 | 
			
		||||
			}
 | 
			
		||||
			intStringLen := int(stringLen)
 | 
			
		||||
			if intStringLen < 0 {
 | 
			
		||||
				return ErrInvalidLengthRunhcs
 | 
			
		||||
			}
 | 
			
		||||
			postIndex := iNdEx + intStringLen
 | 
			
		||||
			if postIndex < 0 {
 | 
			
		||||
				return ErrInvalidLengthRunhcs
 | 
			
		||||
			}
 | 
			
		||||
			if postIndex > l {
 | 
			
		||||
				return io.ErrUnexpectedEOF
 | 
			
		||||
			}
 | 
			
		||||
			m.GPUVHDPath = string(dAtA[iNdEx:postIndex])
 | 
			
		||||
			iNdEx = postIndex
 | 
			
		||||
		default:
 | 
			
		||||
			iNdEx = preIndex
 | 
			
		||||
			skippy, err := skipRunhcs(dAtA[iNdEx:])
 | 
			
		||||
 
 | 
			
		||||
@@ -59,6 +59,10 @@ message Options {
 | 
			
		||||
	//
 | 
			
		||||
	// The platform default is 1024MB if omitted.
 | 
			
		||||
	int32 vm_memory_size_in_mb = 9;
 | 
			
		||||
 | 
			
		||||
	// GPUVHDPath is the path to the gpu vhd to add to the uvm
 | 
			
		||||
	// when a container requests a gpu
 | 
			
		||||
	string GPUVHDPath = 10; 
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// ProcessDetails contains additional information about a process. This is the additional
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										28
									
								
								vendor/github.com/Microsoft/hcsshim/go.mod
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										28
									
								
								vendor/github.com/Microsoft/hcsshim/go.mod
									
									
									
										generated
									
									
										vendored
									
									
								
							@@ -4,34 +4,32 @@ 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/containerd v1.3.2
 | 
			
		||||
	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/gogo/protobuf v1.3.1
 | 
			
		||||
	github.com/golang/protobuf v1.3.2 // indirect
 | 
			
		||||
	github.com/kr/pretty v0.1.0 // 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/prometheus/procfs v0.0.0-20180125133057-cb4147076ac7 // indirect
 | 
			
		||||
	github.com/sirupsen/logrus v1.4.2
 | 
			
		||||
	github.com/stretchr/testify v1.4.0 // 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/net v0.0.0-20191004110552-13f9640d40b9 // indirect
 | 
			
		||||
	golang.org/x/sync v0.0.0-20190423024810-112230192c58
 | 
			
		||||
	golang.org/x/sys v0.0.0-20190916202348-b4ddaad3f8a3
 | 
			
		||||
	google.golang.org/grpc v1.20.1
 | 
			
		||||
	google.golang.org/genproto v0.0.0-20190502173448-54afdca5d873 // indirect
 | 
			
		||||
	google.golang.org/grpc v1.23.1
 | 
			
		||||
	gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127 // indirect
 | 
			
		||||
	gopkg.in/yaml.v2 v2.2.8 // indirect
 | 
			
		||||
	gotest.tools v2.2.0+incompatible // indirect
 | 
			
		||||
	k8s.io/kubernetes v1.13.0
 | 
			
		||||
)
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										19
									
								
								vendor/github.com/Microsoft/hcsshim/hcn/hcn.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										19
									
								
								vendor/github.com/Microsoft/hcsshim/hcn/hcn.go
									
									
									
										generated
									
									
										vendored
									
									
								
							@@ -55,6 +55,15 @@ import (
 | 
			
		||||
//sys hcnDeleteLoadBalancer(id *_guid, result **uint16) (hr error) = computenetwork.HcnDeleteLoadBalancer?
 | 
			
		||||
//sys hcnCloseLoadBalancer(loadBalancer hcnLoadBalancer) (hr error) = computenetwork.HcnCloseLoadBalancer?
 | 
			
		||||
 | 
			
		||||
// SDN Routes
 | 
			
		||||
//sys hcnEnumerateRoutes(query string, routes **uint16, result **uint16) (hr error) = computenetwork.HcnEnumerateSdnRoutes?
 | 
			
		||||
//sys hcnCreateRoute(id *_guid, settings string, route *hcnRoute, result **uint16) (hr error) = computenetwork.HcnCreateSdnRoute?
 | 
			
		||||
//sys hcnOpenRoute(id *_guid, route *hcnRoute, result **uint16) (hr error) = computenetwork.HcnOpenSdnRoute?
 | 
			
		||||
//sys hcnModifyRoute(route hcnRoute, settings string, result **uint16) (hr error) = computenetwork.HcnModifySdnRoute?
 | 
			
		||||
//sys hcnQueryRouteProperties(route hcnRoute, query string, properties **uint16, result **uint16) (hr error) = computenetwork.HcnQuerySdnRouteProperties?
 | 
			
		||||
//sys hcnDeleteRoute(id *_guid, result **uint16) (hr error) = computenetwork.HcnDeleteSdnRoute?
 | 
			
		||||
//sys hcnCloseRoute(route hcnRoute) (hr error) = computenetwork.HcnCloseSdnRoute?
 | 
			
		||||
 | 
			
		||||
// Service
 | 
			
		||||
//sys hcnOpenService(service *hcnService, result **uint16) (hr error) = computenetwork.HcnOpenService?
 | 
			
		||||
//sys hcnRegisterServiceCallback(service hcnService, callback int32, context int32, callbackHandle *hcnCallbackHandle) (hr error) = computenetwork.HcnRegisterServiceCallback?
 | 
			
		||||
@@ -67,6 +76,7 @@ type hcnNetwork syscall.Handle
 | 
			
		||||
type hcnEndpoint syscall.Handle
 | 
			
		||||
type hcnNamespace syscall.Handle
 | 
			
		||||
type hcnLoadBalancer syscall.Handle
 | 
			
		||||
type hcnRoute syscall.Handle
 | 
			
		||||
type hcnService syscall.Handle
 | 
			
		||||
type hcnCallbackHandle syscall.Handle
 | 
			
		||||
 | 
			
		||||
@@ -188,6 +198,15 @@ func SessionAffinitySupported() error {
 | 
			
		||||
	return platformDoesNotSupportError("Session Affinity")
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// IPv6DualStackSupported returns an error if the HCN version does not support IPv6DualStack.
 | 
			
		||||
func IPv6DualStackSupported() error {
 | 
			
		||||
	supported := GetSupportedFeatures()
 | 
			
		||||
	if supported.IPv6DualStack {
 | 
			
		||||
		return nil
 | 
			
		||||
	}
 | 
			
		||||
	return platformDoesNotSupportError("IPv6 DualStack")
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// RequestType are the different operations performed to settings.
 | 
			
		||||
// Used to update the settings of Endpoint/Namespace objects.
 | 
			
		||||
type RequestType string
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										12
									
								
								vendor/github.com/Microsoft/hcsshim/hcn/hcnerrors.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										12
									
								
								vendor/github.com/Microsoft/hcsshim/hcn/hcnerrors.go
									
									
									
										generated
									
									
										vendored
									
									
								
							@@ -17,6 +17,7 @@ var (
 | 
			
		||||
	errInvalidEndpointID     = errors.New("invalid endpoint ID")
 | 
			
		||||
	errInvalidNamespaceID    = errors.New("invalid namespace ID")
 | 
			
		||||
	errInvalidLoadBalancerID = errors.New("invalid load balancer ID")
 | 
			
		||||
	errInvalidRouteID        = errors.New("invalid route ID")
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
func checkForErrors(methodName string, hr error, resultBuffer *uint16) error {
 | 
			
		||||
@@ -133,6 +134,15 @@ func (e LoadBalancerNotFoundError) Error() string {
 | 
			
		||||
	return fmt.Sprintf("LoadBalancer %q not found", e.LoadBalancerId)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// RouteNotFoundError results from a failed seach for a route by Id
 | 
			
		||||
type RouteNotFoundError struct {
 | 
			
		||||
	RouteId string
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (e RouteNotFoundError) Error() string {
 | 
			
		||||
	return fmt.Sprintf("SDN Route %q not found", e.RouteId)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// IsNotFoundError returns a boolean indicating whether the error was caused by
 | 
			
		||||
// a resource not being found.
 | 
			
		||||
func IsNotFoundError(err error) bool {
 | 
			
		||||
@@ -145,6 +155,8 @@ func IsNotFoundError(err error) bool {
 | 
			
		||||
		return true
 | 
			
		||||
	case LoadBalancerNotFoundError:
 | 
			
		||||
		return true
 | 
			
		||||
	case RouteNotFoundError:
 | 
			
		||||
		return true
 | 
			
		||||
	case *hcserror.HcsError:
 | 
			
		||||
		return pe.Err == hcs.ErrElementNotFound
 | 
			
		||||
	}
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										9
									
								
								vendor/github.com/Microsoft/hcsshim/hcn/hcnglobals.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										9
									
								
								vendor/github.com/Microsoft/hcsshim/hcn/hcnglobals.go
									
									
									
										generated
									
									
										vendored
									
									
								
							@@ -49,8 +49,13 @@ var (
 | 
			
		||||
		VersionRange{MinVersion: Version{Major: 9, Minor: 3}, MaxVersion: Version{Major: 9, Minor: math.MaxInt32}},
 | 
			
		||||
		VersionRange{MinVersion: Version{Major: 10, Minor: 4}, MaxVersion: Version{Major: math.MaxInt32, Minor: math.MaxInt32}},
 | 
			
		||||
	}
 | 
			
		||||
	// HNS 11.10 allows for session affinity for loadbalancing
 | 
			
		||||
	SessionAffinityVersion = VersionRanges{VersionRange{MinVersion: Version{Major: 11, Minor: 10}, MaxVersion: Version{Major: math.MaxInt32, Minor: math.MaxInt32}}}
 | 
			
		||||
	// HNS 12.0 allows for session affinity for loadbalancing
 | 
			
		||||
	SessionAffinityVersion = VersionRanges{VersionRange{MinVersion: Version{Major: 12, Minor: 0}, MaxVersion: Version{Major: math.MaxInt32, Minor: math.MaxInt32}}}
 | 
			
		||||
	// HNS 10.5 through 11 (not included) and 12.0+ supports Ipv6 dual stack.
 | 
			
		||||
	IPv6DualStackVersion = VersionRanges{
 | 
			
		||||
		VersionRange{MinVersion: Version{Major: 10, Minor: 5}, MaxVersion: Version{Major: 10, Minor: math.MaxInt32}},
 | 
			
		||||
		VersionRange{MinVersion: Version{Major: 12, Minor: 0}, MaxVersion: Version{Major: math.MaxInt32, Minor: math.MaxInt32}},
 | 
			
		||||
	}
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
// GetGlobals returns the global properties of the HCN Service.
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										266
									
								
								vendor/github.com/Microsoft/hcsshim/hcn/hcnroute.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										266
									
								
								vendor/github.com/Microsoft/hcsshim/hcn/hcnroute.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,266 @@
 | 
			
		||||
package hcn
 | 
			
		||||
 | 
			
		||||
import (
 | 
			
		||||
	"encoding/json"
 | 
			
		||||
	"errors"
 | 
			
		||||
 | 
			
		||||
	"github.com/Microsoft/go-winio/pkg/guid"
 | 
			
		||||
	"github.com/Microsoft/hcsshim/internal/interop"
 | 
			
		||||
	"github.com/sirupsen/logrus"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
// HostComputeRoute represents SDN routes.
 | 
			
		||||
type HostComputeRoute struct {
 | 
			
		||||
	ID                   string                  `json:"ID,omitempty"`
 | 
			
		||||
	HostComputeEndpoints []string                `json:",omitempty"`
 | 
			
		||||
	Setting              []SDNRoutePolicySetting `json:",omitempty"`
 | 
			
		||||
	SchemaVersion        SchemaVersion           `json:",omitempty"`
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// ListRoutes makes a call to list all available routes.
 | 
			
		||||
func ListRoutes() ([]HostComputeRoute, error) {
 | 
			
		||||
	hcnQuery := defaultQuery()
 | 
			
		||||
	routes, err := ListRoutesQuery(hcnQuery)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return nil, err
 | 
			
		||||
	}
 | 
			
		||||
	return routes, nil
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// ListRoutesQuery makes a call to query the list of available routes.
 | 
			
		||||
func ListRoutesQuery(query HostComputeQuery) ([]HostComputeRoute, error) {
 | 
			
		||||
	queryJSON, err := json.Marshal(query)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return nil, err
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	routes, err := enumerateRoutes(string(queryJSON))
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return nil, err
 | 
			
		||||
	}
 | 
			
		||||
	return routes, nil
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// GetRouteByID returns the route specified by Id.
 | 
			
		||||
func GetRouteByID(routeID string) (*HostComputeRoute, error) {
 | 
			
		||||
	hcnQuery := defaultQuery()
 | 
			
		||||
	mapA := map[string]string{"ID": routeID}
 | 
			
		||||
	filter, err := json.Marshal(mapA)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return nil, err
 | 
			
		||||
	}
 | 
			
		||||
	hcnQuery.Filter = string(filter)
 | 
			
		||||
 | 
			
		||||
	routes, err := ListRoutesQuery(hcnQuery)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return nil, err
 | 
			
		||||
	}
 | 
			
		||||
	if len(routes) == 0 {
 | 
			
		||||
		return nil, RouteNotFoundError{RouteId: routeID}
 | 
			
		||||
	}
 | 
			
		||||
	return &routes[0], err
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// Create Route.
 | 
			
		||||
func (route *HostComputeRoute) Create() (*HostComputeRoute, error) {
 | 
			
		||||
	logrus.Debugf("hcn::HostComputeRoute::Create id=%s", route.ID)
 | 
			
		||||
 | 
			
		||||
	jsonString, err := json.Marshal(route)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return nil, err
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	logrus.Debugf("hcn::HostComputeRoute::Create JSON: %s", jsonString)
 | 
			
		||||
	route, hcnErr := createRoute(string(jsonString))
 | 
			
		||||
	if hcnErr != nil {
 | 
			
		||||
		return nil, hcnErr
 | 
			
		||||
	}
 | 
			
		||||
	return route, nil
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// Delete Route.
 | 
			
		||||
func (route *HostComputeRoute) Delete() error {
 | 
			
		||||
	logrus.Debugf("hcn::HostComputeRoute::Delete id=%s", route.ID)
 | 
			
		||||
 | 
			
		||||
	existingRoute, _ := GetRouteByID(route.ID)
 | 
			
		||||
 | 
			
		||||
	if existingRoute != nil {
 | 
			
		||||
		if err := deleteRoute(route.ID); err != nil {
 | 
			
		||||
			return err
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	return nil
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// AddEndpoint add an endpoint to a route
 | 
			
		||||
// Since HCNRoute doesn't implement modify functionality, add operation is essentially delete and add
 | 
			
		||||
func (route *HostComputeRoute) AddEndpoint(endpoint *HostComputeEndpoint) (*HostComputeRoute, error) {
 | 
			
		||||
	logrus.Debugf("hcn::HostComputeRoute::AddEndpoint route=%s endpoint=%s", route.ID, endpoint.Id)
 | 
			
		||||
 | 
			
		||||
	err := route.Delete()
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return nil, err
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	// Add Endpoint to the Existing List
 | 
			
		||||
	route.HostComputeEndpoints = append(route.HostComputeEndpoints, endpoint.Id)
 | 
			
		||||
 | 
			
		||||
	return route.Create()
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// RemoveEndpoint removes an endpoint from a route
 | 
			
		||||
// Since HCNRoute doesn't implement modify functionality, remove operation is essentially delete and add
 | 
			
		||||
func (route *HostComputeRoute) RemoveEndpoint(endpoint *HostComputeEndpoint) (*HostComputeRoute, error) {
 | 
			
		||||
	logrus.Debugf("hcn::HostComputeRoute::RemoveEndpoint route=%s endpoint=%s", route.ID, endpoint.Id)
 | 
			
		||||
 | 
			
		||||
	err := route.Delete()
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return nil, err
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	// Create a list of all the endpoints besides the one being removed
 | 
			
		||||
	i := 0
 | 
			
		||||
	for index, endpointReference := range route.HostComputeEndpoints {
 | 
			
		||||
		if endpointReference == endpoint.Id {
 | 
			
		||||
			i = index
 | 
			
		||||
			break
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	route.HostComputeEndpoints = append(route.HostComputeEndpoints[0:i], route.HostComputeEndpoints[i+1:]...)
 | 
			
		||||
	return route.Create()
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// AddRoute for the specified endpoints and SDN Route setting
 | 
			
		||||
func AddRoute(endpoints []HostComputeEndpoint, destinationPrefix string, nextHop string, needEncapsulation bool) (*HostComputeRoute, error) {
 | 
			
		||||
	logrus.Debugf("hcn::HostComputeRoute::AddRoute endpointId=%v, destinationPrefix=%v, nextHop=%v, needEncapsulation=%v", endpoints, destinationPrefix, nextHop, needEncapsulation)
 | 
			
		||||
 | 
			
		||||
	if len(endpoints) <= 0 {
 | 
			
		||||
		return nil, errors.New("Missing endpoints")
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	route := &HostComputeRoute{
 | 
			
		||||
		SchemaVersion: V2SchemaVersion(),
 | 
			
		||||
		Setting: []SDNRoutePolicySetting{
 | 
			
		||||
			{
 | 
			
		||||
				DestinationPrefix: destinationPrefix,
 | 
			
		||||
				NextHop:           nextHop,
 | 
			
		||||
				NeedEncap:         needEncapsulation,
 | 
			
		||||
			},
 | 
			
		||||
		},
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	for _, endpoint := range endpoints {
 | 
			
		||||
		route.HostComputeEndpoints = append(route.HostComputeEndpoints, endpoint.Id)
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	return route.Create()
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func enumerateRoutes(query string) ([]HostComputeRoute, error) {
 | 
			
		||||
	// Enumerate all routes Guids
 | 
			
		||||
	var (
 | 
			
		||||
		resultBuffer *uint16
 | 
			
		||||
		routeBuffer  *uint16
 | 
			
		||||
	)
 | 
			
		||||
	hr := hcnEnumerateRoutes(query, &routeBuffer, &resultBuffer)
 | 
			
		||||
	if err := checkForErrors("hcnEnumerateRoutes", hr, resultBuffer); err != nil {
 | 
			
		||||
		return nil, err
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	routes := interop.ConvertAndFreeCoTaskMemString(routeBuffer)
 | 
			
		||||
	var routeIds []guid.GUID
 | 
			
		||||
	if err := json.Unmarshal([]byte(routes), &routeIds); err != nil {
 | 
			
		||||
		return nil, err
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	var outputRoutes []HostComputeRoute
 | 
			
		||||
	for _, routeGUID := range routeIds {
 | 
			
		||||
		route, err := getRoute(routeGUID, query)
 | 
			
		||||
		if err != nil {
 | 
			
		||||
			return nil, err
 | 
			
		||||
		}
 | 
			
		||||
		outputRoutes = append(outputRoutes, *route)
 | 
			
		||||
	}
 | 
			
		||||
	return outputRoutes, nil
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func getRoute(routeGUID guid.GUID, query string) (*HostComputeRoute, error) {
 | 
			
		||||
	// Open routes.
 | 
			
		||||
	var (
 | 
			
		||||
		routeHandle      hcnRoute
 | 
			
		||||
		resultBuffer     *uint16
 | 
			
		||||
		propertiesBuffer *uint16
 | 
			
		||||
	)
 | 
			
		||||
	hr := hcnOpenRoute(&routeGUID, &routeHandle, &resultBuffer)
 | 
			
		||||
	if err := checkForErrors("hcnOpenRoute", hr, resultBuffer); err != nil {
 | 
			
		||||
		return nil, err
 | 
			
		||||
	}
 | 
			
		||||
	// Query routes.
 | 
			
		||||
	hr = hcnQueryRouteProperties(routeHandle, query, &propertiesBuffer, &resultBuffer)
 | 
			
		||||
	if err := checkForErrors("hcnQueryRouteProperties", hr, resultBuffer); err != nil {
 | 
			
		||||
		return nil, err
 | 
			
		||||
	}
 | 
			
		||||
	properties := interop.ConvertAndFreeCoTaskMemString(propertiesBuffer)
 | 
			
		||||
	// Close routes.
 | 
			
		||||
	hr = hcnCloseRoute(routeHandle)
 | 
			
		||||
	if err := checkForErrors("hcnCloseRoute", hr, nil); err != nil {
 | 
			
		||||
		return nil, err
 | 
			
		||||
	}
 | 
			
		||||
	// Convert output to HostComputeRoute
 | 
			
		||||
	var outputRoute HostComputeRoute
 | 
			
		||||
	if err := json.Unmarshal([]byte(properties), &outputRoute); err != nil {
 | 
			
		||||
		return nil, err
 | 
			
		||||
	}
 | 
			
		||||
	return &outputRoute, nil
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func createRoute(settings string) (*HostComputeRoute, error) {
 | 
			
		||||
	// Create new route.
 | 
			
		||||
	var (
 | 
			
		||||
		routeHandle      hcnRoute
 | 
			
		||||
		resultBuffer     *uint16
 | 
			
		||||
		propertiesBuffer *uint16
 | 
			
		||||
	)
 | 
			
		||||
	routeGUID := guid.GUID{}
 | 
			
		||||
	hr := hcnCreateRoute(&routeGUID, settings, &routeHandle, &resultBuffer)
 | 
			
		||||
	if err := checkForErrors("hcnCreateRoute", hr, resultBuffer); err != nil {
 | 
			
		||||
		return nil, err
 | 
			
		||||
	}
 | 
			
		||||
	// Query route.
 | 
			
		||||
	hcnQuery := defaultQuery()
 | 
			
		||||
	query, err := json.Marshal(hcnQuery)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return nil, err
 | 
			
		||||
	}
 | 
			
		||||
	hr = hcnQueryRouteProperties(routeHandle, string(query), &propertiesBuffer, &resultBuffer)
 | 
			
		||||
	if err := checkForErrors("hcnQueryRouteProperties", hr, resultBuffer); err != nil {
 | 
			
		||||
		return nil, err
 | 
			
		||||
	}
 | 
			
		||||
	properties := interop.ConvertAndFreeCoTaskMemString(propertiesBuffer)
 | 
			
		||||
	// Close Route.
 | 
			
		||||
	hr = hcnCloseRoute(routeHandle)
 | 
			
		||||
	if err := checkForErrors("hcnCloseRoute", hr, nil); err != nil {
 | 
			
		||||
		return nil, err
 | 
			
		||||
	}
 | 
			
		||||
	// Convert output to HostComputeRoute
 | 
			
		||||
	var outputRoute HostComputeRoute
 | 
			
		||||
	if err := json.Unmarshal([]byte(properties), &outputRoute); err != nil {
 | 
			
		||||
		return nil, err
 | 
			
		||||
	}
 | 
			
		||||
	return &outputRoute, nil
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func deleteRoute(routeID string) error {
 | 
			
		||||
	routeGUID, err := guid.FromString(routeID)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return errInvalidRouteID
 | 
			
		||||
	}
 | 
			
		||||
	var resultBuffer *uint16
 | 
			
		||||
	hr := hcnDeleteRoute(&routeGUID, &resultBuffer)
 | 
			
		||||
	if err := checkForErrors("hcnDeleteRoute", hr, resultBuffer); err != nil {
 | 
			
		||||
		return err
 | 
			
		||||
	}
 | 
			
		||||
	return nil
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										2
									
								
								vendor/github.com/Microsoft/hcsshim/hcn/hcnsupport.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								vendor/github.com/Microsoft/hcsshim/hcn/hcnsupport.go
									
									
									
										generated
									
									
										vendored
									
									
								
							@@ -14,6 +14,7 @@ type SupportedFeatures struct {
 | 
			
		||||
	Slash32EndpointPrefixes  bool        `json:"Slash32EndpointPrefixes"`
 | 
			
		||||
	AclSupportForProtocol252 bool        `json:"AclSupportForProtocol252"`
 | 
			
		||||
	SessionAffinity          bool        `json:"SessionAffinity"`
 | 
			
		||||
	IPv6DualStack            bool        `json:"IPv6DualStack"`
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// AclFeatures are the supported ACL possibilities.
 | 
			
		||||
@@ -59,6 +60,7 @@ func GetSupportedFeatures() SupportedFeatures {
 | 
			
		||||
	features.Slash32EndpointPrefixes = isFeatureSupported(globals.Version, Slash32EndpointPrefixesVersion)
 | 
			
		||||
	features.AclSupportForProtocol252 = isFeatureSupported(globals.Version, AclSupportForProtocol252Version)
 | 
			
		||||
	features.SessionAffinity = isFeatureSupported(globals.Version, SessionAffinityVersion)
 | 
			
		||||
	features.IPv6DualStack = isFeatureSupported(globals.Version, IPv6DualStackVersion)
 | 
			
		||||
 | 
			
		||||
	return features
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										141
									
								
								vendor/github.com/Microsoft/hcsshim/hcn/zsyscall_windows.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										141
									
								
								vendor/github.com/Microsoft/hcsshim/hcn/zsyscall_windows.go
									
									
									
										generated
									
									
										vendored
									
									
								
							@@ -71,6 +71,13 @@ var (
 | 
			
		||||
	procHcnQueryLoadBalancerProperties = modcomputenetwork.NewProc("HcnQueryLoadBalancerProperties")
 | 
			
		||||
	procHcnDeleteLoadBalancer          = modcomputenetwork.NewProc("HcnDeleteLoadBalancer")
 | 
			
		||||
	procHcnCloseLoadBalancer           = modcomputenetwork.NewProc("HcnCloseLoadBalancer")
 | 
			
		||||
	procHcnEnumerateSdnRoutes          = modcomputenetwork.NewProc("HcnEnumerateSdnRoutes")
 | 
			
		||||
	procHcnCreateSdnRoute              = modcomputenetwork.NewProc("HcnCreateSdnRoute")
 | 
			
		||||
	procHcnOpenSdnRoute                = modcomputenetwork.NewProc("HcnOpenSdnRoute")
 | 
			
		||||
	procHcnModifySdnRoute              = modcomputenetwork.NewProc("HcnModifySdnRoute")
 | 
			
		||||
	procHcnQuerySdnRouteProperties     = modcomputenetwork.NewProc("HcnQuerySdnRouteProperties")
 | 
			
		||||
	procHcnDeleteSdnRoute              = modcomputenetwork.NewProc("HcnDeleteSdnRoute")
 | 
			
		||||
	procHcnCloseSdnRoute               = modcomputenetwork.NewProc("HcnCloseSdnRoute")
 | 
			
		||||
	procHcnOpenService                 = modcomputenetwork.NewProc("HcnOpenService")
 | 
			
		||||
	procHcnRegisterServiceCallback     = modcomputenetwork.NewProc("HcnRegisterServiceCallback")
 | 
			
		||||
	procHcnUnregisterServiceCallback   = modcomputenetwork.NewProc("HcnUnregisterServiceCallback")
 | 
			
		||||
@@ -657,6 +664,140 @@ func hcnCloseLoadBalancer(loadBalancer hcnLoadBalancer) (hr error) {
 | 
			
		||||
	return
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func hcnEnumerateRoutes(query string, routes **uint16, result **uint16) (hr error) {
 | 
			
		||||
	var _p0 *uint16
 | 
			
		||||
	_p0, hr = syscall.UTF16PtrFromString(query)
 | 
			
		||||
	if hr != nil {
 | 
			
		||||
		return
 | 
			
		||||
	}
 | 
			
		||||
	return _hcnEnumerateRoutes(_p0, routes, result)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func _hcnEnumerateRoutes(query *uint16, routes **uint16, result **uint16) (hr error) {
 | 
			
		||||
	if hr = procHcnEnumerateSdnRoutes.Find(); hr != nil {
 | 
			
		||||
		return
 | 
			
		||||
	}
 | 
			
		||||
	r0, _, _ := syscall.Syscall(procHcnEnumerateSdnRoutes.Addr(), 3, uintptr(unsafe.Pointer(query)), uintptr(unsafe.Pointer(routes)), uintptr(unsafe.Pointer(result)))
 | 
			
		||||
	if int32(r0) < 0 {
 | 
			
		||||
		if r0&0x1fff0000 == 0x00070000 {
 | 
			
		||||
			r0 &= 0xffff
 | 
			
		||||
		}
 | 
			
		||||
		hr = syscall.Errno(r0)
 | 
			
		||||
	}
 | 
			
		||||
	return
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func hcnCreateRoute(id *_guid, settings string, route *hcnRoute, result **uint16) (hr error) {
 | 
			
		||||
	var _p0 *uint16
 | 
			
		||||
	_p0, hr = syscall.UTF16PtrFromString(settings)
 | 
			
		||||
	if hr != nil {
 | 
			
		||||
		return
 | 
			
		||||
	}
 | 
			
		||||
	return _hcnCreateRoute(id, _p0, route, result)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func _hcnCreateRoute(id *_guid, settings *uint16, route *hcnRoute, result **uint16) (hr error) {
 | 
			
		||||
	if hr = procHcnCreateSdnRoute.Find(); hr != nil {
 | 
			
		||||
		return
 | 
			
		||||
	}
 | 
			
		||||
	r0, _, _ := syscall.Syscall6(procHcnCreateSdnRoute.Addr(), 4, uintptr(unsafe.Pointer(id)), uintptr(unsafe.Pointer(settings)), uintptr(unsafe.Pointer(route)), uintptr(unsafe.Pointer(result)), 0, 0)
 | 
			
		||||
	if int32(r0) < 0 {
 | 
			
		||||
		if r0&0x1fff0000 == 0x00070000 {
 | 
			
		||||
			r0 &= 0xffff
 | 
			
		||||
		}
 | 
			
		||||
		hr = syscall.Errno(r0)
 | 
			
		||||
	}
 | 
			
		||||
	return
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func hcnOpenRoute(id *_guid, route *hcnRoute, result **uint16) (hr error) {
 | 
			
		||||
	if hr = procHcnOpenSdnRoute.Find(); hr != nil {
 | 
			
		||||
		return
 | 
			
		||||
	}
 | 
			
		||||
	r0, _, _ := syscall.Syscall(procHcnOpenSdnRoute.Addr(), 3, uintptr(unsafe.Pointer(id)), uintptr(unsafe.Pointer(route)), uintptr(unsafe.Pointer(result)))
 | 
			
		||||
	if int32(r0) < 0 {
 | 
			
		||||
		if r0&0x1fff0000 == 0x00070000 {
 | 
			
		||||
			r0 &= 0xffff
 | 
			
		||||
		}
 | 
			
		||||
		hr = syscall.Errno(r0)
 | 
			
		||||
	}
 | 
			
		||||
	return
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func hcnModifyRoute(route hcnRoute, settings string, result **uint16) (hr error) {
 | 
			
		||||
	var _p0 *uint16
 | 
			
		||||
	_p0, hr = syscall.UTF16PtrFromString(settings)
 | 
			
		||||
	if hr != nil {
 | 
			
		||||
		return
 | 
			
		||||
	}
 | 
			
		||||
	return _hcnModifyRoute(route, _p0, result)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func _hcnModifyRoute(route hcnRoute, settings *uint16, result **uint16) (hr error) {
 | 
			
		||||
	if hr = procHcnModifySdnRoute.Find(); hr != nil {
 | 
			
		||||
		return
 | 
			
		||||
	}
 | 
			
		||||
	r0, _, _ := syscall.Syscall(procHcnModifySdnRoute.Addr(), 3, uintptr(route), uintptr(unsafe.Pointer(settings)), uintptr(unsafe.Pointer(result)))
 | 
			
		||||
	if int32(r0) < 0 {
 | 
			
		||||
		if r0&0x1fff0000 == 0x00070000 {
 | 
			
		||||
			r0 &= 0xffff
 | 
			
		||||
		}
 | 
			
		||||
		hr = syscall.Errno(r0)
 | 
			
		||||
	}
 | 
			
		||||
	return
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func hcnQueryRouteProperties(route hcnRoute, query string, properties **uint16, result **uint16) (hr error) {
 | 
			
		||||
	var _p0 *uint16
 | 
			
		||||
	_p0, hr = syscall.UTF16PtrFromString(query)
 | 
			
		||||
	if hr != nil {
 | 
			
		||||
		return
 | 
			
		||||
	}
 | 
			
		||||
	return _hcnQueryRouteProperties(route, _p0, properties, result)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func _hcnQueryRouteProperties(route hcnRoute, query *uint16, properties **uint16, result **uint16) (hr error) {
 | 
			
		||||
	if hr = procHcnQuerySdnRouteProperties.Find(); hr != nil {
 | 
			
		||||
		return
 | 
			
		||||
	}
 | 
			
		||||
	r0, _, _ := syscall.Syscall6(procHcnQuerySdnRouteProperties.Addr(), 4, uintptr(route), uintptr(unsafe.Pointer(query)), uintptr(unsafe.Pointer(properties)), uintptr(unsafe.Pointer(result)), 0, 0)
 | 
			
		||||
	if int32(r0) < 0 {
 | 
			
		||||
		if r0&0x1fff0000 == 0x00070000 {
 | 
			
		||||
			r0 &= 0xffff
 | 
			
		||||
		}
 | 
			
		||||
		hr = syscall.Errno(r0)
 | 
			
		||||
	}
 | 
			
		||||
	return
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func hcnDeleteRoute(id *_guid, result **uint16) (hr error) {
 | 
			
		||||
	if hr = procHcnDeleteSdnRoute.Find(); hr != nil {
 | 
			
		||||
		return
 | 
			
		||||
	}
 | 
			
		||||
	r0, _, _ := syscall.Syscall(procHcnDeleteSdnRoute.Addr(), 2, uintptr(unsafe.Pointer(id)), uintptr(unsafe.Pointer(result)), 0)
 | 
			
		||||
	if int32(r0) < 0 {
 | 
			
		||||
		if r0&0x1fff0000 == 0x00070000 {
 | 
			
		||||
			r0 &= 0xffff
 | 
			
		||||
		}
 | 
			
		||||
		hr = syscall.Errno(r0)
 | 
			
		||||
	}
 | 
			
		||||
	return
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func hcnCloseRoute(route hcnRoute) (hr error) {
 | 
			
		||||
	if hr = procHcnCloseSdnRoute.Find(); hr != nil {
 | 
			
		||||
		return
 | 
			
		||||
	}
 | 
			
		||||
	r0, _, _ := syscall.Syscall(procHcnCloseSdnRoute.Addr(), 1, uintptr(route), 0, 0)
 | 
			
		||||
	if int32(r0) < 0 {
 | 
			
		||||
		if r0&0x1fff0000 == 0x00070000 {
 | 
			
		||||
			r0 &= 0xffff
 | 
			
		||||
		}
 | 
			
		||||
		hr = syscall.Errno(r0)
 | 
			
		||||
	}
 | 
			
		||||
	return
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func hcnOpenService(service *hcnService, result **uint16) (hr error) {
 | 
			
		||||
	if hr = procHcnOpenService.Find(); hr != nil {
 | 
			
		||||
		return
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										3
									
								
								vendor/github.com/Microsoft/hcsshim/hnspolicy.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										3
									
								
								vendor/github.com/Microsoft/hcsshim/hnspolicy.go
									
									
									
										generated
									
									
										vendored
									
									
								
							@@ -21,8 +21,11 @@ const (
 | 
			
		||||
	OutboundNat          = hns.OutboundNat
 | 
			
		||||
	ExternalLoadBalancer = hns.ExternalLoadBalancer
 | 
			
		||||
	Route                = hns.Route
 | 
			
		||||
	Proxy                = hns.Proxy
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
type ProxyPolicy = hns.ProxyPolicy
 | 
			
		||||
 | 
			
		||||
type NatPolicy = hns.NatPolicy
 | 
			
		||||
 | 
			
		||||
type QosPolicy = hns.QosPolicy
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										5
									
								
								vendor/github.com/Microsoft/hcsshim/internal/hcs/syscall.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										5
									
								
								vendor/github.com/Microsoft/hcsshim/internal/hcs/syscall.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,5 @@
 | 
			
		||||
package hcs
 | 
			
		||||
 | 
			
		||||
//go:generate go run ../../mksyscall_windows.go -output zsyscall_windows.go syscall.go
 | 
			
		||||
 | 
			
		||||
//sys hcsFormatWritableLayerVhd(handle uintptr) (hr error) = computestorage.HcsFormatWritableLayerVhd
 | 
			
		||||
							
								
								
									
										28
									
								
								vendor/github.com/Microsoft/hcsshim/internal/hcs/utils.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										28
									
								
								vendor/github.com/Microsoft/hcsshim/internal/hcs/utils.go
									
									
									
										generated
									
									
										vendored
									
									
								
							@@ -1,10 +1,14 @@
 | 
			
		||||
package hcs
 | 
			
		||||
 | 
			
		||||
import (
 | 
			
		||||
	"context"
 | 
			
		||||
	"io"
 | 
			
		||||
	"syscall"
 | 
			
		||||
 | 
			
		||||
	"github.com/Microsoft/go-winio"
 | 
			
		||||
	diskutil "github.com/Microsoft/go-winio/vhd"
 | 
			
		||||
	"github.com/pkg/errors"
 | 
			
		||||
	"golang.org/x/sys/windows"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
// makeOpenFiles calls winio.MakeOpenFile for each handle in a slice but closes all the handles
 | 
			
		||||
@@ -31,3 +35,27 @@ func makeOpenFiles(hs []syscall.Handle) (_ []io.ReadWriteCloser, err error) {
 | 
			
		||||
	}
 | 
			
		||||
	return fs, nil
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// creates a VHD formatted with NTFS of size `sizeGB` at the given `vhdPath`.
 | 
			
		||||
func CreateNTFSVHD(ctx context.Context, vhdPath string, sizeGB uint32) (err error) {
 | 
			
		||||
	if err := diskutil.CreateVhdx(vhdPath, sizeGB, 1); err != nil {
 | 
			
		||||
		return errors.Wrap(err, "failed to create VHD")
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	vhd, err := diskutil.OpenVirtualDisk(vhdPath, diskutil.VirtualDiskAccessNone, diskutil.OpenVirtualDiskFlagNone)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return errors.Wrap(err, "failed to open VHD")
 | 
			
		||||
	}
 | 
			
		||||
	defer func() {
 | 
			
		||||
		err2 := windows.CloseHandle(windows.Handle(vhd))
 | 
			
		||||
		if err == nil {
 | 
			
		||||
			err = errors.Wrap(err2, "failed to close VHD")
 | 
			
		||||
		}
 | 
			
		||||
	}()
 | 
			
		||||
 | 
			
		||||
	if err := hcsFormatWritableLayerVhd(uintptr(vhd)); err != nil {
 | 
			
		||||
		return errors.Wrap(err, "failed to format VHD")
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	return nil
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										54
									
								
								vendor/github.com/Microsoft/hcsshim/internal/hcs/zsyscall_windows.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										54
									
								
								vendor/github.com/Microsoft/hcsshim/internal/hcs/zsyscall_windows.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,54 @@
 | 
			
		||||
// Code generated mksyscall_windows.exe DO NOT EDIT
 | 
			
		||||
 | 
			
		||||
package hcs
 | 
			
		||||
 | 
			
		||||
import (
 | 
			
		||||
	"syscall"
 | 
			
		||||
	"unsafe"
 | 
			
		||||
 | 
			
		||||
	"golang.org/x/sys/windows"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
var _ unsafe.Pointer
 | 
			
		||||
 | 
			
		||||
// Do the interface allocations only once for common
 | 
			
		||||
// Errno values.
 | 
			
		||||
const (
 | 
			
		||||
	errnoERROR_IO_PENDING = 997
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
var (
 | 
			
		||||
	errERROR_IO_PENDING error = syscall.Errno(errnoERROR_IO_PENDING)
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
// errnoErr returns common boxed Errno values, to prevent
 | 
			
		||||
// allocations at runtime.
 | 
			
		||||
func errnoErr(e syscall.Errno) error {
 | 
			
		||||
	switch e {
 | 
			
		||||
	case 0:
 | 
			
		||||
		return nil
 | 
			
		||||
	case errnoERROR_IO_PENDING:
 | 
			
		||||
		return errERROR_IO_PENDING
 | 
			
		||||
	}
 | 
			
		||||
	// TODO: add more here, after collecting data on the common
 | 
			
		||||
	// error values see on Windows. (perhaps when running
 | 
			
		||||
	// all.bat?)
 | 
			
		||||
	return e
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
var (
 | 
			
		||||
	modcomputestorage = windows.NewLazySystemDLL("computestorage.dll")
 | 
			
		||||
 | 
			
		||||
	procHcsFormatWritableLayerVhd = modcomputestorage.NewProc("HcsFormatWritableLayerVhd")
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
func hcsFormatWritableLayerVhd(handle uintptr) (hr error) {
 | 
			
		||||
	r0, _, _ := syscall.Syscall(procHcsFormatWritableLayerVhd.Addr(), 1, uintptr(handle), 0, 0)
 | 
			
		||||
	if int32(r0) < 0 {
 | 
			
		||||
		if r0&0x1fff0000 == 0x00070000 {
 | 
			
		||||
			r0 &= 0xffff
 | 
			
		||||
		}
 | 
			
		||||
		hr = syscall.Errno(r0)
 | 
			
		||||
	}
 | 
			
		||||
	return
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										21
									
								
								vendor/github.com/Microsoft/hcsshim/internal/hns/hnsendpoint.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										21
									
								
								vendor/github.com/Microsoft/hcsshim/internal/hns/hnsendpoint.go
									
									
									
										generated
									
									
										vendored
									
									
								
							@@ -173,6 +173,27 @@ func (endpoint *HNSEndpoint) ApplyACLPolicy(policies ...*ACLPolicy) error {
 | 
			
		||||
	return err
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// ApplyProxyPolicy applies a set of Proxy Policies on the Endpoint
 | 
			
		||||
func (endpoint *HNSEndpoint) ApplyProxyPolicy(policies ...*ProxyPolicy) error {
 | 
			
		||||
	operation := "ApplyProxyPolicy"
 | 
			
		||||
	title := "hcsshim::HNSEndpoint::" + operation
 | 
			
		||||
	logrus.Debugf(title+" id=%s", endpoint.Id)
 | 
			
		||||
 | 
			
		||||
	for _, policy := range policies {
 | 
			
		||||
		if policy == nil {
 | 
			
		||||
			continue
 | 
			
		||||
		}
 | 
			
		||||
		jsonString, err := json.Marshal(policy)
 | 
			
		||||
		if err != nil {
 | 
			
		||||
			return err
 | 
			
		||||
		}
 | 
			
		||||
		endpoint.Policies = append(endpoint.Policies, jsonString)
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	_, err := endpoint.Update()
 | 
			
		||||
	return err
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// ContainerAttach attaches an endpoint to container
 | 
			
		||||
func (endpoint *HNSEndpoint) ContainerAttach(containerID string, compartmentID uint16) error {
 | 
			
		||||
	operation := "ContainerAttach"
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										10
									
								
								vendor/github.com/Microsoft/hcsshim/internal/hns/hnspolicy.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										10
									
								
								vendor/github.com/Microsoft/hcsshim/internal/hns/hnspolicy.go
									
									
									
										generated
									
									
										vendored
									
									
								
							@@ -17,6 +17,7 @@ const (
 | 
			
		||||
	OutboundNat          PolicyType = "OutBoundNAT"
 | 
			
		||||
	ExternalLoadBalancer PolicyType = "ELB"
 | 
			
		||||
	Route                PolicyType = "ROUTE"
 | 
			
		||||
	Proxy                PolicyType = "PROXY"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
type NatPolicy struct {
 | 
			
		||||
@@ -60,6 +61,15 @@ type OutboundNatPolicy struct {
 | 
			
		||||
	Destinations []string `json:",omitempty"`
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
type ProxyPolicy struct {
 | 
			
		||||
	Type          PolicyType `json:"Type"`
 | 
			
		||||
	IP            string     `json:",omitempty"`
 | 
			
		||||
	Port          string     `json:",omitempty"`
 | 
			
		||||
	ExceptionList []string   `json:",omitempty"`
 | 
			
		||||
	Destination   string     `json:",omitempty"`
 | 
			
		||||
	OutboundNat   bool       `json:",omitempty"`
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
type ActionType string
 | 
			
		||||
type DirectionType string
 | 
			
		||||
type RuleType string
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										4
									
								
								vendor/github.com/Microsoft/hcsshim/internal/schema2/devices.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										4
									
								
								vendor/github.com/Microsoft/hcsshim/internal/schema2/devices.go
									
									
									
										generated
									
									
										vendored
									
									
								
							@@ -39,4 +39,8 @@ type Devices struct {
 | 
			
		||||
	FlexibleIov map[string]FlexibleIoDevice `json:"FlexibleIov,omitempty"`
 | 
			
		||||
 | 
			
		||||
	SharedMemory *SharedMemoryConfiguration `json:"SharedMemory,omitempty"`
 | 
			
		||||
 | 
			
		||||
	// TODO: This is pre-release support in schema 2.3. Need to add build number
 | 
			
		||||
	// docs when a public build with this is out.
 | 
			
		||||
	VirtualPci map[string]VirtualPciDevice `json:",omitempty"`
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										19
									
								
								vendor/github.com/Microsoft/hcsshim/internal/schema2/memory_2.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										19
									
								
								vendor/github.com/Microsoft/hcsshim/internal/schema2/memory_2.go
									
									
									
										generated
									
									
										vendored
									
									
								
							@@ -27,4 +27,23 @@ type Memory2 struct {
 | 
			
		||||
	// 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"`
 | 
			
		||||
 | 
			
		||||
	// LowMmioGapInMB is the low MMIO region allocated below 4GB.
 | 
			
		||||
	//
 | 
			
		||||
	// TODO: This is pre-release support in schema 2.3. Need to add build number
 | 
			
		||||
	// docs when a public build with this is out.
 | 
			
		||||
	LowMMIOGapInMB uint64 `json:"LowMmioGapInMB,omitempty"`
 | 
			
		||||
 | 
			
		||||
	// HighMmioBaseInMB is the high MMIO region allocated above 4GB (base and
 | 
			
		||||
	// size).
 | 
			
		||||
	//
 | 
			
		||||
	// TODO: This is pre-release support in schema 2.3. Need to add build number
 | 
			
		||||
	// docs when a public build with this is out.
 | 
			
		||||
	HighMMIOBaseInMB uint64 `json:"HighMmioBaseInMB,omitempty"`
 | 
			
		||||
 | 
			
		||||
	// HighMmioGapInMB is the high MMIO region.
 | 
			
		||||
	//
 | 
			
		||||
	// TODO: This is pre-release support in schema 2.3. Need to add build number
 | 
			
		||||
	// docs when a public build with this is out.
 | 
			
		||||
	HighMMIOGapInMB uint64 `json:"HighMmioGapInMB,omitempty"`
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										16
									
								
								vendor/github.com/Microsoft/hcsshim/internal/schema2/virtual_pci_device.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										16
									
								
								vendor/github.com/Microsoft/hcsshim/internal/schema2/virtual_pci_device.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,16 @@
 | 
			
		||||
/*
 | 
			
		||||
 * HCS API
 | 
			
		||||
 *
 | 
			
		||||
 * No description provided (generated by Swagger Codegen https://github.com/swagger-api/swagger-codegen)
 | 
			
		||||
 *
 | 
			
		||||
 * API version: 2.3
 | 
			
		||||
 * Generated by: Swagger Codegen (https://github.com/swagger-api/swagger-codegen.git)
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
package hcsschema
 | 
			
		||||
 | 
			
		||||
// TODO: This is pre-release support in schema 2.3. Need to add build number
 | 
			
		||||
// docs when a public build with this is out.
 | 
			
		||||
type VirtualPciDevice struct {
 | 
			
		||||
	Functions []VirtualPciFunction `json:",omitempty"`
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										18
									
								
								vendor/github.com/Microsoft/hcsshim/internal/schema2/virtual_pci_function.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										18
									
								
								vendor/github.com/Microsoft/hcsshim/internal/schema2/virtual_pci_function.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,18 @@
 | 
			
		||||
/*
 | 
			
		||||
 * HCS API
 | 
			
		||||
 *
 | 
			
		||||
 * No description provided (generated by Swagger Codegen https://github.com/swagger-api/swagger-codegen)
 | 
			
		||||
 *
 | 
			
		||||
 * API version: 2.3
 | 
			
		||||
 * Generated by: Swagger Codegen (https://github.com/swagger-api/swagger-codegen.git)
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
package hcsschema
 | 
			
		||||
 | 
			
		||||
// TODO: This is pre-release support in schema 2.3. Need to add build number
 | 
			
		||||
// docs when a public build with this is out.
 | 
			
		||||
type VirtualPciFunction struct {
 | 
			
		||||
	DeviceInstancePath string `json:",omitempty"`
 | 
			
		||||
 | 
			
		||||
	VirtualFunction uint16 `json:",omitempty"`
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										23
									
								
								vendor/github.com/Microsoft/hcsshim/internal/wclayer/activatelayer.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										23
									
								
								vendor/github.com/Microsoft/hcsshim/internal/wclayer/activatelayer.go
									
									
									
										generated
									
									
										vendored
									
									
								
							@@ -1,28 +1,23 @@
 | 
			
		||||
package wclayer
 | 
			
		||||
 | 
			
		||||
import (
 | 
			
		||||
	"context"
 | 
			
		||||
 | 
			
		||||
	"github.com/Microsoft/hcsshim/internal/hcserror"
 | 
			
		||||
	"github.com/sirupsen/logrus"
 | 
			
		||||
	"github.com/Microsoft/hcsshim/internal/oc"
 | 
			
		||||
	"go.opencensus.io/trace"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
// ActivateLayer will find the layer with the given id and mount it's filesystem.
 | 
			
		||||
// For a read/write layer, the mounted filesystem will appear as a volume on the
 | 
			
		||||
// host, while a read-only layer is generally expected to be a no-op.
 | 
			
		||||
// An activated layer must later be deactivated via DeactivateLayer.
 | 
			
		||||
func ActivateLayer(path string) (err error) {
 | 
			
		||||
func ActivateLayer(ctx context.Context, path string) (err error) {
 | 
			
		||||
	title := "hcsshim::ActivateLayer"
 | 
			
		||||
	fields := logrus.Fields{
 | 
			
		||||
		"path": path,
 | 
			
		||||
	}
 | 
			
		||||
	logrus.WithFields(fields).Debug(title)
 | 
			
		||||
	defer func() {
 | 
			
		||||
		if err != nil {
 | 
			
		||||
			fields[logrus.ErrorKey] = err
 | 
			
		||||
			logrus.WithFields(fields).Error(err)
 | 
			
		||||
		} else {
 | 
			
		||||
			logrus.WithFields(fields).Debug(title + " - succeeded")
 | 
			
		||||
		}
 | 
			
		||||
	}()
 | 
			
		||||
	ctx, span := trace.StartSpan(ctx, title)
 | 
			
		||||
	defer span.End()
 | 
			
		||||
	defer func() { oc.SetSpanStatus(span, err) }()
 | 
			
		||||
	span.AddAttributes(trace.StringAttribute("path", path))
 | 
			
		||||
 | 
			
		||||
	err = activateLayer(&stdDriverInfo, path)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										17
									
								
								vendor/github.com/Microsoft/hcsshim/internal/wclayer/baselayer.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										17
									
								
								vendor/github.com/Microsoft/hcsshim/internal/wclayer/baselayer.go
									
									
									
										generated
									
									
										vendored
									
									
								
							@@ -1,6 +1,7 @@
 | 
			
		||||
package wclayer
 | 
			
		||||
 | 
			
		||||
import (
 | 
			
		||||
	"context"
 | 
			
		||||
	"errors"
 | 
			
		||||
	"os"
 | 
			
		||||
	"path/filepath"
 | 
			
		||||
@@ -8,10 +9,15 @@ import (
 | 
			
		||||
 | 
			
		||||
	"github.com/Microsoft/go-winio"
 | 
			
		||||
	"github.com/Microsoft/hcsshim/internal/hcserror"
 | 
			
		||||
	"github.com/Microsoft/hcsshim/internal/oc"
 | 
			
		||||
	"github.com/Microsoft/hcsshim/internal/safefile"
 | 
			
		||||
	"go.opencensus.io/trace"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
type baseLayerWriter struct {
 | 
			
		||||
	ctx context.Context
 | 
			
		||||
	s   *trace.Span
 | 
			
		||||
 | 
			
		||||
	root         *os.File
 | 
			
		||||
	f            *os.File
 | 
			
		||||
	bw           *winio.BackupFileWriter
 | 
			
		||||
@@ -136,12 +142,15 @@ func (w *baseLayerWriter) Write(b []byte) (int, error) {
 | 
			
		||||
	return n, err
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (w *baseLayerWriter) Close() error {
 | 
			
		||||
func (w *baseLayerWriter) Close() (err error) {
 | 
			
		||||
	defer w.s.End()
 | 
			
		||||
	defer func() { oc.SetSpanStatus(w.s, err) }()
 | 
			
		||||
	defer func() {
 | 
			
		||||
		w.root.Close()
 | 
			
		||||
		w.root = nil
 | 
			
		||||
	}()
 | 
			
		||||
	err := w.closeCurrentFile()
 | 
			
		||||
 | 
			
		||||
	err = w.closeCurrentFile()
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return err
 | 
			
		||||
	}
 | 
			
		||||
@@ -153,7 +162,7 @@ func (w *baseLayerWriter) Close() error {
 | 
			
		||||
			return err
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		err = ProcessBaseLayer(w.root.Name())
 | 
			
		||||
		err = ProcessBaseLayer(w.ctx, w.root.Name())
 | 
			
		||||
		if err != nil {
 | 
			
		||||
			return err
 | 
			
		||||
		}
 | 
			
		||||
@@ -163,7 +172,7 @@ func (w *baseLayerWriter) Close() error {
 | 
			
		||||
			if err != nil {
 | 
			
		||||
				return err
 | 
			
		||||
			}
 | 
			
		||||
			err = ProcessUtilityVMImage(filepath.Join(w.root.Name(), "UtilityVM"))
 | 
			
		||||
			err = ProcessUtilityVMImage(w.ctx, filepath.Join(w.root.Name(), "UtilityVM"))
 | 
			
		||||
			if err != nil {
 | 
			
		||||
				return err
 | 
			
		||||
			}
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										26
									
								
								vendor/github.com/Microsoft/hcsshim/internal/wclayer/createlayer.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										26
									
								
								vendor/github.com/Microsoft/hcsshim/internal/wclayer/createlayer.go
									
									
									
										generated
									
									
										vendored
									
									
								
							@@ -1,27 +1,23 @@
 | 
			
		||||
package wclayer
 | 
			
		||||
 | 
			
		||||
import (
 | 
			
		||||
	"context"
 | 
			
		||||
 | 
			
		||||
	"github.com/Microsoft/hcsshim/internal/hcserror"
 | 
			
		||||
	"github.com/sirupsen/logrus"
 | 
			
		||||
	"github.com/Microsoft/hcsshim/internal/oc"
 | 
			
		||||
	"go.opencensus.io/trace"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
// CreateLayer creates a new, empty, read-only layer on the filesystem based on
 | 
			
		||||
// the parent layer provided.
 | 
			
		||||
func CreateLayer(path, parent string) (err error) {
 | 
			
		||||
func CreateLayer(ctx context.Context, path, parent string) (err error) {
 | 
			
		||||
	title := "hcsshim::CreateLayer"
 | 
			
		||||
	fields := logrus.Fields{
 | 
			
		||||
		"parent": parent,
 | 
			
		||||
		"path":   path,
 | 
			
		||||
	}
 | 
			
		||||
	logrus.WithFields(fields).Debug(title)
 | 
			
		||||
	defer func() {
 | 
			
		||||
		if err != nil {
 | 
			
		||||
			fields[logrus.ErrorKey] = err
 | 
			
		||||
			logrus.WithFields(fields).Error(err)
 | 
			
		||||
		} else {
 | 
			
		||||
			logrus.WithFields(fields).Debug(title + " - succeeded")
 | 
			
		||||
		}
 | 
			
		||||
	}()
 | 
			
		||||
	ctx, span := trace.StartSpan(ctx, title)
 | 
			
		||||
	defer span.End()
 | 
			
		||||
	defer func() { oc.SetSpanStatus(span, err) }()
 | 
			
		||||
	span.AddAttributes(
 | 
			
		||||
		trace.StringAttribute("path", path),
 | 
			
		||||
		trace.StringAttribute("parent", parent))
 | 
			
		||||
 | 
			
		||||
	err = createLayer(&stdDriverInfo, path, parent)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										28
									
								
								vendor/github.com/Microsoft/hcsshim/internal/wclayer/createscratchlayer.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										28
									
								
								vendor/github.com/Microsoft/hcsshim/internal/wclayer/createscratchlayer.go
									
									
									
										generated
									
									
										vendored
									
									
								
							@@ -1,31 +1,29 @@
 | 
			
		||||
package wclayer
 | 
			
		||||
 | 
			
		||||
import (
 | 
			
		||||
	"context"
 | 
			
		||||
	"strings"
 | 
			
		||||
 | 
			
		||||
	"github.com/Microsoft/hcsshim/internal/hcserror"
 | 
			
		||||
	"github.com/sirupsen/logrus"
 | 
			
		||||
	"github.com/Microsoft/hcsshim/internal/oc"
 | 
			
		||||
	"go.opencensus.io/trace"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
// CreateScratchLayer creates and populates new read-write layer for use by a container.
 | 
			
		||||
// This requires both the id of the direct parent layer, as well as the full list
 | 
			
		||||
// of paths to all parent layers up to the base (and including the direct parent
 | 
			
		||||
// whose id was provided).
 | 
			
		||||
func CreateScratchLayer(path string, parentLayerPaths []string) (err error) {
 | 
			
		||||
func CreateScratchLayer(ctx context.Context, path string, parentLayerPaths []string) (err error) {
 | 
			
		||||
	title := "hcsshim::CreateScratchLayer"
 | 
			
		||||
	fields := logrus.Fields{
 | 
			
		||||
		"path": path,
 | 
			
		||||
	}
 | 
			
		||||
	logrus.WithFields(fields).Debug(title)
 | 
			
		||||
	defer func() {
 | 
			
		||||
		if err != nil {
 | 
			
		||||
			fields[logrus.ErrorKey] = err
 | 
			
		||||
			logrus.WithFields(fields).Error(err)
 | 
			
		||||
		} else {
 | 
			
		||||
			logrus.WithFields(fields).Debug(title + " - succeeded")
 | 
			
		||||
		}
 | 
			
		||||
	}()
 | 
			
		||||
	ctx, span := trace.StartSpan(ctx, title)
 | 
			
		||||
	defer span.End()
 | 
			
		||||
	defer func() { oc.SetSpanStatus(span, err) }()
 | 
			
		||||
	span.AddAttributes(
 | 
			
		||||
		trace.StringAttribute("path", path),
 | 
			
		||||
		trace.StringAttribute("parentLayerPaths", strings.Join(parentLayerPaths, ", ")))
 | 
			
		||||
 | 
			
		||||
	// Generate layer descriptors
 | 
			
		||||
	layers, err := layerPathsToDescriptors(parentLayerPaths)
 | 
			
		||||
	layers, err := layerPathsToDescriptors(ctx, parentLayerPaths)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return err
 | 
			
		||||
	}
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										23
									
								
								vendor/github.com/Microsoft/hcsshim/internal/wclayer/deactivatelayer.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										23
									
								
								vendor/github.com/Microsoft/hcsshim/internal/wclayer/deactivatelayer.go
									
									
									
										generated
									
									
										vendored
									
									
								
							@@ -1,25 +1,20 @@
 | 
			
		||||
package wclayer
 | 
			
		||||
 | 
			
		||||
import (
 | 
			
		||||
	"context"
 | 
			
		||||
 | 
			
		||||
	"github.com/Microsoft/hcsshim/internal/hcserror"
 | 
			
		||||
	"github.com/sirupsen/logrus"
 | 
			
		||||
	"github.com/Microsoft/hcsshim/internal/oc"
 | 
			
		||||
	"go.opencensus.io/trace"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
// DeactivateLayer will dismount a layer that was mounted via ActivateLayer.
 | 
			
		||||
func DeactivateLayer(path string) (err error) {
 | 
			
		||||
func DeactivateLayer(ctx context.Context, path string) (err error) {
 | 
			
		||||
	title := "hcsshim::DeactivateLayer"
 | 
			
		||||
	fields := logrus.Fields{
 | 
			
		||||
		"path": path,
 | 
			
		||||
	}
 | 
			
		||||
	logrus.WithFields(fields).Debug(title)
 | 
			
		||||
	defer func() {
 | 
			
		||||
		if err != nil {
 | 
			
		||||
			fields[logrus.ErrorKey] = err
 | 
			
		||||
			logrus.WithFields(fields).Error(err)
 | 
			
		||||
		} else {
 | 
			
		||||
			logrus.WithFields(fields).Debug(title + " - succeeded")
 | 
			
		||||
		}
 | 
			
		||||
	}()
 | 
			
		||||
	ctx, span := trace.StartSpan(ctx, title)
 | 
			
		||||
	defer span.End()
 | 
			
		||||
	defer func() { oc.SetSpanStatus(span, err) }()
 | 
			
		||||
	span.AddAttributes(trace.StringAttribute("path", path))
 | 
			
		||||
 | 
			
		||||
	err = deactivateLayer(&stdDriverInfo, path)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										23
									
								
								vendor/github.com/Microsoft/hcsshim/internal/wclayer/destroylayer.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										23
									
								
								vendor/github.com/Microsoft/hcsshim/internal/wclayer/destroylayer.go
									
									
									
										generated
									
									
										vendored
									
									
								
							@@ -1,26 +1,21 @@
 | 
			
		||||
package wclayer
 | 
			
		||||
 | 
			
		||||
import (
 | 
			
		||||
	"context"
 | 
			
		||||
 | 
			
		||||
	"github.com/Microsoft/hcsshim/internal/hcserror"
 | 
			
		||||
	"github.com/sirupsen/logrus"
 | 
			
		||||
	"github.com/Microsoft/hcsshim/internal/oc"
 | 
			
		||||
	"go.opencensus.io/trace"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
// DestroyLayer will remove the on-disk files representing the layer with the given
 | 
			
		||||
// path, including that layer's containing folder, if any.
 | 
			
		||||
func DestroyLayer(path string) (err error) {
 | 
			
		||||
func DestroyLayer(ctx context.Context, path string) (err error) {
 | 
			
		||||
	title := "hcsshim::DestroyLayer"
 | 
			
		||||
	fields := logrus.Fields{
 | 
			
		||||
		"path": path,
 | 
			
		||||
	}
 | 
			
		||||
	logrus.WithFields(fields).Debug(title)
 | 
			
		||||
	defer func() {
 | 
			
		||||
		if err != nil {
 | 
			
		||||
			fields[logrus.ErrorKey] = err
 | 
			
		||||
			logrus.WithFields(fields).Error(err)
 | 
			
		||||
		} else {
 | 
			
		||||
			logrus.WithFields(fields).Debug(title + " - succeeded")
 | 
			
		||||
		}
 | 
			
		||||
	}()
 | 
			
		||||
	ctx, span := trace.StartSpan(ctx, title)
 | 
			
		||||
	defer span.End()
 | 
			
		||||
	defer func() { oc.SetSpanStatus(span, err) }()
 | 
			
		||||
	span.AddAttributes(trace.StringAttribute("path", path))
 | 
			
		||||
 | 
			
		||||
	err = destroyLayer(&stdDriverInfo, path)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										31
									
								
								vendor/github.com/Microsoft/hcsshim/internal/wclayer/expandscratchsize.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										31
									
								
								vendor/github.com/Microsoft/hcsshim/internal/wclayer/expandscratchsize.go
									
									
									
										generated
									
									
										vendored
									
									
								
							@@ -1,32 +1,27 @@
 | 
			
		||||
package wclayer
 | 
			
		||||
 | 
			
		||||
import (
 | 
			
		||||
	"context"
 | 
			
		||||
	"os"
 | 
			
		||||
	"path/filepath"
 | 
			
		||||
	"syscall"
 | 
			
		||||
	"unsafe"
 | 
			
		||||
 | 
			
		||||
	"github.com/Microsoft/hcsshim/internal/hcserror"
 | 
			
		||||
	"github.com/Microsoft/hcsshim/internal/oc"
 | 
			
		||||
	"github.com/Microsoft/hcsshim/osversion"
 | 
			
		||||
	"github.com/sirupsen/logrus"
 | 
			
		||||
	"go.opencensus.io/trace"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
// ExpandScratchSize expands the size of a layer to at least size bytes.
 | 
			
		||||
func ExpandScratchSize(path string, size uint64) (err error) {
 | 
			
		||||
func ExpandScratchSize(ctx context.Context, path string, size uint64) (err error) {
 | 
			
		||||
	title := "hcsshim::ExpandScratchSize"
 | 
			
		||||
	fields := logrus.Fields{
 | 
			
		||||
		"path": path,
 | 
			
		||||
		"size": size,
 | 
			
		||||
	}
 | 
			
		||||
	logrus.WithFields(fields).Debug(title)
 | 
			
		||||
	defer func() {
 | 
			
		||||
		if err != nil {
 | 
			
		||||
			fields[logrus.ErrorKey] = err
 | 
			
		||||
			logrus.WithFields(fields).Error(err)
 | 
			
		||||
		} else {
 | 
			
		||||
			logrus.WithFields(fields).Debug(title + " - succeeded")
 | 
			
		||||
		}
 | 
			
		||||
	}()
 | 
			
		||||
	ctx, span := trace.StartSpan(ctx, title)
 | 
			
		||||
	defer span.End()
 | 
			
		||||
	defer func() { oc.SetSpanStatus(span, err) }()
 | 
			
		||||
	span.AddAttributes(
 | 
			
		||||
		trace.StringAttribute("path", path),
 | 
			
		||||
		trace.Int64Attribute("size", int64(size)))
 | 
			
		||||
 | 
			
		||||
	err = expandSandboxSize(&stdDriverInfo, path, size)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
@@ -36,7 +31,7 @@ func ExpandScratchSize(path string, size uint64) (err error) {
 | 
			
		||||
	// 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)
 | 
			
		||||
		err = expandSandboxVolume(ctx, path)
 | 
			
		||||
		if err != nil {
 | 
			
		||||
			return err
 | 
			
		||||
		}
 | 
			
		||||
@@ -84,7 +79,7 @@ func attachVhd(path string) (syscall.Handle, error) {
 | 
			
		||||
	return handle, nil
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func expandSandboxVolume(path string) error {
 | 
			
		||||
func expandSandboxVolume(ctx context.Context, path string) error {
 | 
			
		||||
	// Mount the sandbox VHD temporarily.
 | 
			
		||||
	vhdPath := filepath.Join(path, "sandbox.vhdx")
 | 
			
		||||
	vhd, err := attachVhd(vhdPath)
 | 
			
		||||
@@ -94,7 +89,7 @@ func expandSandboxVolume(path string) error {
 | 
			
		||||
	defer syscall.Close(vhd)
 | 
			
		||||
 | 
			
		||||
	// Open the volume.
 | 
			
		||||
	volumePath, err := GetLayerMountPath(path)
 | 
			
		||||
	volumePath, err := GetLayerMountPath(ctx, path)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return err
 | 
			
		||||
	}
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										60
									
								
								vendor/github.com/Microsoft/hcsshim/internal/wclayer/exportlayer.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										60
									
								
								vendor/github.com/Microsoft/hcsshim/internal/wclayer/exportlayer.go
									
									
									
										generated
									
									
										vendored
									
									
								
							@@ -1,12 +1,15 @@
 | 
			
		||||
package wclayer
 | 
			
		||||
 | 
			
		||||
import (
 | 
			
		||||
	"context"
 | 
			
		||||
	"io/ioutil"
 | 
			
		||||
	"os"
 | 
			
		||||
	"strings"
 | 
			
		||||
 | 
			
		||||
	"github.com/Microsoft/go-winio"
 | 
			
		||||
	"github.com/Microsoft/hcsshim/internal/hcserror"
 | 
			
		||||
	"github.com/sirupsen/logrus"
 | 
			
		||||
	"github.com/Microsoft/hcsshim/internal/oc"
 | 
			
		||||
	"go.opencensus.io/trace"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
// ExportLayer will create a folder at exportFolderPath and fill that folder with
 | 
			
		||||
@@ -14,24 +17,18 @@ import (
 | 
			
		||||
// format includes any metadata required for later importing the layer (using
 | 
			
		||||
// ImportLayer), and requires the full list of parent layer paths in order to
 | 
			
		||||
// perform the export.
 | 
			
		||||
func ExportLayer(path string, exportFolderPath string, parentLayerPaths []string) (err error) {
 | 
			
		||||
func ExportLayer(ctx context.Context, path string, exportFolderPath string, parentLayerPaths []string) (err error) {
 | 
			
		||||
	title := "hcsshim::ExportLayer"
 | 
			
		||||
	fields := logrus.Fields{
 | 
			
		||||
		"path":             path,
 | 
			
		||||
		"exportFolderPath": exportFolderPath,
 | 
			
		||||
	}
 | 
			
		||||
	logrus.WithFields(fields).Debug(title)
 | 
			
		||||
	defer func() {
 | 
			
		||||
		if err != nil {
 | 
			
		||||
			fields[logrus.ErrorKey] = err
 | 
			
		||||
			logrus.WithFields(fields).Error(err)
 | 
			
		||||
		} else {
 | 
			
		||||
			logrus.WithFields(fields).Debug(title + " - succeeded")
 | 
			
		||||
		}
 | 
			
		||||
	}()
 | 
			
		||||
	ctx, span := trace.StartSpan(ctx, title)
 | 
			
		||||
	defer span.End()
 | 
			
		||||
	defer func() { oc.SetSpanStatus(span, err) }()
 | 
			
		||||
	span.AddAttributes(
 | 
			
		||||
		trace.StringAttribute("path", path),
 | 
			
		||||
		trace.StringAttribute("exportFolderPath", exportFolderPath),
 | 
			
		||||
		trace.StringAttribute("parentLayerPaths", strings.Join(parentLayerPaths, ", ")))
 | 
			
		||||
 | 
			
		||||
	// Generate layer descriptors
 | 
			
		||||
	layers, err := layerPathsToDescriptors(parentLayerPaths)
 | 
			
		||||
	layers, err := layerPathsToDescriptors(ctx, parentLayerPaths)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return err
 | 
			
		||||
	}
 | 
			
		||||
@@ -52,25 +49,46 @@ type LayerReader interface {
 | 
			
		||||
// NewLayerReader returns a new layer reader for reading the contents of an on-disk layer.
 | 
			
		||||
// The caller must have taken the SeBackupPrivilege privilege
 | 
			
		||||
// to call this and any methods on the resulting LayerReader.
 | 
			
		||||
func NewLayerReader(path string, parentLayerPaths []string) (LayerReader, error) {
 | 
			
		||||
func NewLayerReader(ctx context.Context, path string, parentLayerPaths []string) (_ LayerReader, err error) {
 | 
			
		||||
	ctx, span := trace.StartSpan(ctx, "hcsshim::NewLayerReader")
 | 
			
		||||
	defer func() {
 | 
			
		||||
		if err != nil {
 | 
			
		||||
			oc.SetSpanStatus(span, err)
 | 
			
		||||
			span.End()
 | 
			
		||||
		}
 | 
			
		||||
	}()
 | 
			
		||||
	span.AddAttributes(
 | 
			
		||||
		trace.StringAttribute("path", path),
 | 
			
		||||
		trace.StringAttribute("parentLayerPaths", strings.Join(parentLayerPaths, ", ")))
 | 
			
		||||
 | 
			
		||||
	exportPath, err := ioutil.TempDir("", "hcs")
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return nil, err
 | 
			
		||||
	}
 | 
			
		||||
	err = ExportLayer(path, exportPath, parentLayerPaths)
 | 
			
		||||
	err = ExportLayer(ctx, path, exportPath, parentLayerPaths)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		os.RemoveAll(exportPath)
 | 
			
		||||
		return nil, err
 | 
			
		||||
	}
 | 
			
		||||
	return &legacyLayerReaderWrapper{newLegacyLayerReader(exportPath)}, nil
 | 
			
		||||
	return &legacyLayerReaderWrapper{
 | 
			
		||||
		ctx:               ctx,
 | 
			
		||||
		s:                 span,
 | 
			
		||||
		legacyLayerReader: newLegacyLayerReader(exportPath),
 | 
			
		||||
	}, nil
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
type legacyLayerReaderWrapper struct {
 | 
			
		||||
	ctx context.Context
 | 
			
		||||
	s   *trace.Span
 | 
			
		||||
 | 
			
		||||
	*legacyLayerReader
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (r *legacyLayerReaderWrapper) Close() error {
 | 
			
		||||
	err := r.legacyLayerReader.Close()
 | 
			
		||||
func (r *legacyLayerReaderWrapper) Close() (err error) {
 | 
			
		||||
	defer r.s.End()
 | 
			
		||||
	defer func() { oc.SetSpanStatus(r.s, err) }()
 | 
			
		||||
 | 
			
		||||
	err = r.legacyLayerReader.Close()
 | 
			
		||||
	os.RemoveAll(r.root)
 | 
			
		||||
	return err
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										29
									
								
								vendor/github.com/Microsoft/hcsshim/internal/wclayer/getlayermountpath.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										29
									
								
								vendor/github.com/Microsoft/hcsshim/internal/wclayer/getlayermountpath.go
									
									
									
										generated
									
									
										vendored
									
									
								
							@@ -1,36 +1,31 @@
 | 
			
		||||
package wclayer
 | 
			
		||||
 | 
			
		||||
import (
 | 
			
		||||
	"context"
 | 
			
		||||
	"syscall"
 | 
			
		||||
 | 
			
		||||
	"github.com/Microsoft/hcsshim/internal/hcserror"
 | 
			
		||||
	"github.com/sirupsen/logrus"
 | 
			
		||||
	"github.com/Microsoft/hcsshim/internal/log"
 | 
			
		||||
	"github.com/Microsoft/hcsshim/internal/oc"
 | 
			
		||||
	"go.opencensus.io/trace"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
// GetLayerMountPath will look for a mounted layer with the given path and return
 | 
			
		||||
// the path at which that layer can be accessed.  This path may be a volume path
 | 
			
		||||
// if the layer is a mounted read-write layer, otherwise it is expected to be the
 | 
			
		||||
// folder path at which the layer is stored.
 | 
			
		||||
func GetLayerMountPath(path string) (_ string, err error) {
 | 
			
		||||
func GetLayerMountPath(ctx context.Context, path string) (_ string, err error) {
 | 
			
		||||
	title := "hcsshim::GetLayerMountPath"
 | 
			
		||||
	fields := logrus.Fields{
 | 
			
		||||
		"path": path,
 | 
			
		||||
	}
 | 
			
		||||
	logrus.WithFields(fields).Debug(title)
 | 
			
		||||
	defer func() {
 | 
			
		||||
		if err != nil {
 | 
			
		||||
			fields[logrus.ErrorKey] = err
 | 
			
		||||
			logrus.WithFields(fields).Error(err)
 | 
			
		||||
		} else {
 | 
			
		||||
			logrus.WithFields(fields).Debug(title + " - succeeded")
 | 
			
		||||
		}
 | 
			
		||||
	}()
 | 
			
		||||
	ctx, span := trace.StartSpan(ctx, title)
 | 
			
		||||
	defer span.End()
 | 
			
		||||
	defer func() { oc.SetSpanStatus(span, err) }()
 | 
			
		||||
	span.AddAttributes(trace.StringAttribute("path", path))
 | 
			
		||||
 | 
			
		||||
	var mountPathLength uintptr
 | 
			
		||||
	mountPathLength = 0
 | 
			
		||||
 | 
			
		||||
	// Call the procedure itself.
 | 
			
		||||
	logrus.WithFields(fields).Debug("Calling proc (1)")
 | 
			
		||||
	log.G(ctx).Debug("Calling proc (1)")
 | 
			
		||||
	err = getLayerMountPath(&stdDriverInfo, path, &mountPathLength, nil)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return "", hcserror.New(err, title+" - failed", "(first call)")
 | 
			
		||||
@@ -44,13 +39,13 @@ func GetLayerMountPath(path string) (_ string, err error) {
 | 
			
		||||
	mountPathp[0] = 0
 | 
			
		||||
 | 
			
		||||
	// Call the procedure again
 | 
			
		||||
	logrus.WithFields(fields).Debug("Calling proc (2)")
 | 
			
		||||
	log.G(ctx).Debug("Calling proc (2)")
 | 
			
		||||
	err = getLayerMountPath(&stdDriverInfo, path, &mountPathLength, &mountPathp[0])
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return "", hcserror.New(err, title+" - failed", "(second call)")
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	mountPath := syscall.UTF16ToString(mountPathp[0:])
 | 
			
		||||
	fields["mountPath"] = mountPath
 | 
			
		||||
	span.AddAttributes(trace.StringAttribute("mountPath", mountPath))
 | 
			
		||||
	return mountPath, nil
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										22
									
								
								vendor/github.com/Microsoft/hcsshim/internal/wclayer/getsharedbaseimages.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										22
									
								
								vendor/github.com/Microsoft/hcsshim/internal/wclayer/getsharedbaseimages.go
									
									
									
										generated
									
									
										vendored
									
									
								
							@@ -1,29 +1,29 @@
 | 
			
		||||
package wclayer
 | 
			
		||||
 | 
			
		||||
import (
 | 
			
		||||
	"context"
 | 
			
		||||
 | 
			
		||||
	"github.com/Microsoft/hcsshim/internal/hcserror"
 | 
			
		||||
	"github.com/Microsoft/hcsshim/internal/interop"
 | 
			
		||||
	"github.com/sirupsen/logrus"
 | 
			
		||||
	"github.com/Microsoft/hcsshim/internal/oc"
 | 
			
		||||
	"go.opencensus.io/trace"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
// GetSharedBaseImages will enumerate the images stored in the common central
 | 
			
		||||
// image store and return descriptive info about those images for the purpose
 | 
			
		||||
// of registering them with the graphdriver, graph, and tagstore.
 | 
			
		||||
func GetSharedBaseImages() (imageData string, err error) {
 | 
			
		||||
func GetSharedBaseImages(ctx context.Context) (_ string, err error) {
 | 
			
		||||
	title := "hcsshim::GetSharedBaseImages"
 | 
			
		||||
	logrus.Debug(title)
 | 
			
		||||
	defer func() {
 | 
			
		||||
		if err != nil {
 | 
			
		||||
			logrus.WithError(err).Error(err)
 | 
			
		||||
		} else {
 | 
			
		||||
			logrus.WithField("imageData", imageData).Debug(title + " - succeeded")
 | 
			
		||||
		}
 | 
			
		||||
	}()
 | 
			
		||||
	ctx, span := trace.StartSpan(ctx, title)
 | 
			
		||||
	defer span.End()
 | 
			
		||||
	defer func() { oc.SetSpanStatus(span, err) }()
 | 
			
		||||
 | 
			
		||||
	var buffer *uint16
 | 
			
		||||
	err = getBaseImages(&buffer)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return "", hcserror.New(err, title+" - failed", "")
 | 
			
		||||
	}
 | 
			
		||||
	return interop.ConvertAndFreeCoTaskMemString(buffer), nil
 | 
			
		||||
	imageData := interop.ConvertAndFreeCoTaskMemString(buffer)
 | 
			
		||||
	span.AddAttributes(trace.StringAttribute("imageData", imageData))
 | 
			
		||||
	return imageData, nil
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										26
									
								
								vendor/github.com/Microsoft/hcsshim/internal/wclayer/grantvmaccess.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										26
									
								
								vendor/github.com/Microsoft/hcsshim/internal/wclayer/grantvmaccess.go
									
									
									
										generated
									
									
										vendored
									
									
								
							@@ -1,26 +1,22 @@
 | 
			
		||||
package wclayer
 | 
			
		||||
 | 
			
		||||
import (
 | 
			
		||||
	"context"
 | 
			
		||||
 | 
			
		||||
	"github.com/Microsoft/hcsshim/internal/hcserror"
 | 
			
		||||
	"github.com/sirupsen/logrus"
 | 
			
		||||
	"github.com/Microsoft/hcsshim/internal/oc"
 | 
			
		||||
	"go.opencensus.io/trace"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
// GrantVmAccess adds access to a file for a given VM
 | 
			
		||||
func GrantVmAccess(vmid string, filepath string) (err error) {
 | 
			
		||||
func GrantVmAccess(ctx context.Context, vmid string, filepath string) (err error) {
 | 
			
		||||
	title := "hcsshim::GrantVmAccess"
 | 
			
		||||
	fields := logrus.Fields{
 | 
			
		||||
		"vm-id": vmid,
 | 
			
		||||
		"path":  filepath,
 | 
			
		||||
	}
 | 
			
		||||
	logrus.WithFields(fields).Debug(title)
 | 
			
		||||
	defer func() {
 | 
			
		||||
		if err != nil {
 | 
			
		||||
			fields[logrus.ErrorKey] = err
 | 
			
		||||
			logrus.WithFields(fields).Error(err)
 | 
			
		||||
		} else {
 | 
			
		||||
			logrus.WithFields(fields).Debug(title + " - succeeded")
 | 
			
		||||
		}
 | 
			
		||||
	}()
 | 
			
		||||
	ctx, span := trace.StartSpan(ctx, title)
 | 
			
		||||
	defer span.End()
 | 
			
		||||
	defer func() { oc.SetSpanStatus(span, err) }()
 | 
			
		||||
	span.AddAttributes(
 | 
			
		||||
		trace.StringAttribute("vm-id", vmid),
 | 
			
		||||
		trace.StringAttribute("path", filepath))
 | 
			
		||||
 | 
			
		||||
	err = grantVmAccess(vmid, filepath)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										60
									
								
								vendor/github.com/Microsoft/hcsshim/internal/wclayer/importlayer.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										60
									
								
								vendor/github.com/Microsoft/hcsshim/internal/wclayer/importlayer.go
									
									
									
										generated
									
									
										vendored
									
									
								
							@@ -1,38 +1,35 @@
 | 
			
		||||
package wclayer
 | 
			
		||||
 | 
			
		||||
import (
 | 
			
		||||
	"context"
 | 
			
		||||
	"io/ioutil"
 | 
			
		||||
	"os"
 | 
			
		||||
	"path/filepath"
 | 
			
		||||
	"strings"
 | 
			
		||||
 | 
			
		||||
	"github.com/Microsoft/go-winio"
 | 
			
		||||
	"github.com/Microsoft/hcsshim/internal/hcserror"
 | 
			
		||||
	"github.com/Microsoft/hcsshim/internal/oc"
 | 
			
		||||
	"github.com/Microsoft/hcsshim/internal/safefile"
 | 
			
		||||
	"github.com/sirupsen/logrus"
 | 
			
		||||
	"go.opencensus.io/trace"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
// ImportLayer will take the contents of the folder at importFolderPath and import
 | 
			
		||||
// that into a layer with the id layerId.  Note that in order to correctly populate
 | 
			
		||||
// the layer and interperet the transport format, all parent layers must already
 | 
			
		||||
// be present on the system at the paths provided in parentLayerPaths.
 | 
			
		||||
func ImportLayer(path string, importFolderPath string, parentLayerPaths []string) (err error) {
 | 
			
		||||
func ImportLayer(ctx context.Context, path string, importFolderPath string, parentLayerPaths []string) (err error) {
 | 
			
		||||
	title := "hcsshim::ImportLayer"
 | 
			
		||||
	fields := logrus.Fields{
 | 
			
		||||
		"path":             path,
 | 
			
		||||
		"importFolderPath": importFolderPath,
 | 
			
		||||
	}
 | 
			
		||||
	logrus.WithFields(fields).Debug(title)
 | 
			
		||||
	defer func() {
 | 
			
		||||
		if err != nil {
 | 
			
		||||
			fields[logrus.ErrorKey] = err
 | 
			
		||||
			logrus.WithFields(fields).Error(err)
 | 
			
		||||
		} else {
 | 
			
		||||
			logrus.WithFields(fields).Debug(title + " - succeeded")
 | 
			
		||||
		}
 | 
			
		||||
	}()
 | 
			
		||||
	ctx, span := trace.StartSpan(ctx, title)
 | 
			
		||||
	defer span.End()
 | 
			
		||||
	defer func() { oc.SetSpanStatus(span, err) }()
 | 
			
		||||
	span.AddAttributes(
 | 
			
		||||
		trace.StringAttribute("path", path),
 | 
			
		||||
		trace.StringAttribute("importFolderPath", importFolderPath),
 | 
			
		||||
		trace.StringAttribute("parentLayerPaths", strings.Join(parentLayerPaths, ", ")))
 | 
			
		||||
 | 
			
		||||
	// Generate layer descriptors
 | 
			
		||||
	layers, err := layerPathsToDescriptors(parentLayerPaths)
 | 
			
		||||
	layers, err := layerPathsToDescriptors(ctx, parentLayerPaths)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return err
 | 
			
		||||
	}
 | 
			
		||||
@@ -60,20 +57,26 @@ type LayerWriter interface {
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
type legacyLayerWriterWrapper struct {
 | 
			
		||||
	ctx context.Context
 | 
			
		||||
	s   *trace.Span
 | 
			
		||||
 | 
			
		||||
	*legacyLayerWriter
 | 
			
		||||
	path             string
 | 
			
		||||
	parentLayerPaths []string
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (r *legacyLayerWriterWrapper) Close() error {
 | 
			
		||||
func (r *legacyLayerWriterWrapper) Close() (err error) {
 | 
			
		||||
	defer r.s.End()
 | 
			
		||||
	defer func() { oc.SetSpanStatus(r.s, err) }()
 | 
			
		||||
	defer os.RemoveAll(r.root.Name())
 | 
			
		||||
	defer r.legacyLayerWriter.CloseRoots()
 | 
			
		||||
	err := r.legacyLayerWriter.Close()
 | 
			
		||||
 | 
			
		||||
	err = r.legacyLayerWriter.Close()
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return err
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	if err = ImportLayer(r.destRoot.Name(), r.path, r.parentLayerPaths); err != nil {
 | 
			
		||||
	if err = ImportLayer(r.ctx, r.destRoot.Name(), r.path, r.parentLayerPaths); err != nil {
 | 
			
		||||
		return err
 | 
			
		||||
	}
 | 
			
		||||
	for _, name := range r.Tombstones {
 | 
			
		||||
@@ -96,7 +99,7 @@ func (r *legacyLayerWriterWrapper) Close() error {
 | 
			
		||||
		if err != nil {
 | 
			
		||||
			return err
 | 
			
		||||
		}
 | 
			
		||||
		err = ProcessUtilityVMImage(filepath.Join(r.destRoot.Name(), "UtilityVM"))
 | 
			
		||||
		err = ProcessUtilityVMImage(r.ctx, filepath.Join(r.destRoot.Name(), "UtilityVM"))
 | 
			
		||||
		if err != nil {
 | 
			
		||||
			return err
 | 
			
		||||
		}
 | 
			
		||||
@@ -107,7 +110,18 @@ func (r *legacyLayerWriterWrapper) Close() error {
 | 
			
		||||
// NewLayerWriter returns a new layer writer for creating a layer on disk.
 | 
			
		||||
// The caller must have taken the SeBackupPrivilege and SeRestorePrivilege privileges
 | 
			
		||||
// to call this and any methods on the resulting LayerWriter.
 | 
			
		||||
func NewLayerWriter(path string, parentLayerPaths []string) (LayerWriter, error) {
 | 
			
		||||
func NewLayerWriter(ctx context.Context, path string, parentLayerPaths []string) (_ LayerWriter, err error) {
 | 
			
		||||
	ctx, span := trace.StartSpan(ctx, "hcsshim::NewLayerWriter")
 | 
			
		||||
	defer func() {
 | 
			
		||||
		if err != nil {
 | 
			
		||||
			oc.SetSpanStatus(span, err)
 | 
			
		||||
			span.End()
 | 
			
		||||
		}
 | 
			
		||||
	}()
 | 
			
		||||
	span.AddAttributes(
 | 
			
		||||
		trace.StringAttribute("path", path),
 | 
			
		||||
		trace.StringAttribute("parentLayerPaths", strings.Join(parentLayerPaths, ", ")))
 | 
			
		||||
 | 
			
		||||
	if len(parentLayerPaths) == 0 {
 | 
			
		||||
		// This is a base layer. It gets imported differently.
 | 
			
		||||
		f, err := safefile.OpenRoot(path)
 | 
			
		||||
@@ -115,6 +129,8 @@ func NewLayerWriter(path string, parentLayerPaths []string) (LayerWriter, error)
 | 
			
		||||
			return nil, err
 | 
			
		||||
		}
 | 
			
		||||
		return &baseLayerWriter{
 | 
			
		||||
			ctx:  ctx,
 | 
			
		||||
			s:    span,
 | 
			
		||||
			root: f,
 | 
			
		||||
		}, nil
 | 
			
		||||
	}
 | 
			
		||||
@@ -128,6 +144,8 @@ func NewLayerWriter(path string, parentLayerPaths []string) (LayerWriter, error)
 | 
			
		||||
		return nil, err
 | 
			
		||||
	}
 | 
			
		||||
	return &legacyLayerWriterWrapper{
 | 
			
		||||
		ctx:               ctx,
 | 
			
		||||
		s:                 span,
 | 
			
		||||
		legacyLayerWriter: w,
 | 
			
		||||
		path:              importPath,
 | 
			
		||||
		parentLayerPaths:  parentLayerPaths,
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										25
									
								
								vendor/github.com/Microsoft/hcsshim/internal/wclayer/layerexists.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										25
									
								
								vendor/github.com/Microsoft/hcsshim/internal/wclayer/layerexists.go
									
									
									
										generated
									
									
										vendored
									
									
								
							@@ -1,26 +1,21 @@
 | 
			
		||||
package wclayer
 | 
			
		||||
 | 
			
		||||
import (
 | 
			
		||||
	"context"
 | 
			
		||||
 | 
			
		||||
	"github.com/Microsoft/hcsshim/internal/hcserror"
 | 
			
		||||
	"github.com/sirupsen/logrus"
 | 
			
		||||
	"github.com/Microsoft/hcsshim/internal/oc"
 | 
			
		||||
	"go.opencensus.io/trace"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
// LayerExists will return true if a layer with the given id exists and is known
 | 
			
		||||
// to the system.
 | 
			
		||||
func LayerExists(path string) (_ bool, err error) {
 | 
			
		||||
func LayerExists(ctx context.Context, path string) (_ bool, err error) {
 | 
			
		||||
	title := "hcsshim::LayerExists"
 | 
			
		||||
	fields := logrus.Fields{
 | 
			
		||||
		"path": path,
 | 
			
		||||
	}
 | 
			
		||||
	logrus.WithFields(fields).Debug(title)
 | 
			
		||||
	defer func() {
 | 
			
		||||
		if err != nil {
 | 
			
		||||
			fields[logrus.ErrorKey] = err
 | 
			
		||||
			logrus.WithFields(fields).Error(err)
 | 
			
		||||
		} else {
 | 
			
		||||
			logrus.WithFields(fields).Debug(title + " - succeeded")
 | 
			
		||||
		}
 | 
			
		||||
	}()
 | 
			
		||||
	ctx, span := trace.StartSpan(ctx, title)
 | 
			
		||||
	defer span.End()
 | 
			
		||||
	defer func() { oc.SetSpanStatus(span, err) }()
 | 
			
		||||
	span.AddAttributes(trace.StringAttribute("path", path))
 | 
			
		||||
 | 
			
		||||
	// Call the procedure itself.
 | 
			
		||||
	var exists uint32
 | 
			
		||||
@@ -28,6 +23,6 @@ func LayerExists(path string) (_ bool, err error) {
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return false, hcserror.New(err, title+" - failed", "")
 | 
			
		||||
	}
 | 
			
		||||
	fields["layer-exists"] = exists != 0
 | 
			
		||||
	span.AddAttributes(trace.BoolAttribute("layer-exists", exists != 0))
 | 
			
		||||
	return exists != 0, nil
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										13
									
								
								vendor/github.com/Microsoft/hcsshim/internal/wclayer/layerid.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										13
									
								
								vendor/github.com/Microsoft/hcsshim/internal/wclayer/layerid.go
									
									
									
										generated
									
									
										vendored
									
									
								
							@@ -1,13 +1,22 @@
 | 
			
		||||
package wclayer
 | 
			
		||||
 | 
			
		||||
import (
 | 
			
		||||
	"context"
 | 
			
		||||
	"path/filepath"
 | 
			
		||||
 | 
			
		||||
	"github.com/Microsoft/go-winio/pkg/guid"
 | 
			
		||||
	"github.com/Microsoft/hcsshim/internal/oc"
 | 
			
		||||
	"go.opencensus.io/trace"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
// LayerID returns the layer ID of a layer on disk.
 | 
			
		||||
func LayerID(path string) (guid.GUID, error) {
 | 
			
		||||
func LayerID(ctx context.Context, path string) (_ guid.GUID, err error) {
 | 
			
		||||
	title := "hcsshim::LayerID"
 | 
			
		||||
	ctx, span := trace.StartSpan(ctx, title)
 | 
			
		||||
	defer span.End()
 | 
			
		||||
	defer func() { oc.SetSpanStatus(span, err) }()
 | 
			
		||||
	span.AddAttributes(trace.StringAttribute("path", path))
 | 
			
		||||
 | 
			
		||||
	_, file := filepath.Split(path)
 | 
			
		||||
	return NameToGuid(file)
 | 
			
		||||
	return NameToGuid(ctx, file)
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										5
									
								
								vendor/github.com/Microsoft/hcsshim/internal/wclayer/layerutils.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										5
									
								
								vendor/github.com/Microsoft/hcsshim/internal/wclayer/layerutils.go
									
									
									
										generated
									
									
										vendored
									
									
								
							@@ -4,6 +4,7 @@ package wclayer
 | 
			
		||||
// functionality.
 | 
			
		||||
 | 
			
		||||
import (
 | 
			
		||||
	"context"
 | 
			
		||||
	"syscall"
 | 
			
		||||
 | 
			
		||||
	"github.com/Microsoft/go-winio/pkg/guid"
 | 
			
		||||
@@ -68,12 +69,12 @@ type WC_LAYER_DESCRIPTOR struct {
 | 
			
		||||
	Pathp   *uint16
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func layerPathsToDescriptors(parentLayerPaths []string) ([]WC_LAYER_DESCRIPTOR, error) {
 | 
			
		||||
func layerPathsToDescriptors(ctx context.Context, parentLayerPaths []string) ([]WC_LAYER_DESCRIPTOR, error) {
 | 
			
		||||
	// Array of descriptors that gets constructed.
 | 
			
		||||
	var layers []WC_LAYER_DESCRIPTOR
 | 
			
		||||
 | 
			
		||||
	for i := 0; i < len(parentLayerPaths); i++ {
 | 
			
		||||
		g, err := LayerID(parentLayerPaths[i])
 | 
			
		||||
		g, err := LayerID(ctx, parentLayerPaths[i])
 | 
			
		||||
		if err != nil {
 | 
			
		||||
			logrus.WithError(err).Debug("Failed to convert name to guid")
 | 
			
		||||
			return nil, err
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										31
									
								
								vendor/github.com/Microsoft/hcsshim/internal/wclayer/nametoguid.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										31
									
								
								vendor/github.com/Microsoft/hcsshim/internal/wclayer/nametoguid.go
									
									
									
										generated
									
									
										vendored
									
									
								
							@@ -1,34 +1,29 @@
 | 
			
		||||
package wclayer
 | 
			
		||||
 | 
			
		||||
import (
 | 
			
		||||
	"context"
 | 
			
		||||
 | 
			
		||||
	"github.com/Microsoft/go-winio/pkg/guid"
 | 
			
		||||
	"github.com/Microsoft/hcsshim/internal/hcserror"
 | 
			
		||||
	"github.com/sirupsen/logrus"
 | 
			
		||||
	"github.com/Microsoft/hcsshim/internal/oc"
 | 
			
		||||
	"go.opencensus.io/trace"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
// NameToGuid converts the given string into a GUID using the algorithm in the
 | 
			
		||||
// Host Compute Service, ensuring GUIDs generated with the same string are common
 | 
			
		||||
// across all clients.
 | 
			
		||||
func NameToGuid(name string) (id guid.GUID, err error) {
 | 
			
		||||
func NameToGuid(ctx context.Context, name string) (_ guid.GUID, err error) {
 | 
			
		||||
	title := "hcsshim::NameToGuid"
 | 
			
		||||
	fields := logrus.Fields{
 | 
			
		||||
		"name": name,
 | 
			
		||||
	}
 | 
			
		||||
	logrus.WithFields(fields).Debug(title)
 | 
			
		||||
	defer func() {
 | 
			
		||||
		if err != nil {
 | 
			
		||||
			fields[logrus.ErrorKey] = err
 | 
			
		||||
			logrus.WithFields(fields).Error(err)
 | 
			
		||||
		} else {
 | 
			
		||||
			logrus.WithFields(fields).Debug(title + " - succeeded")
 | 
			
		||||
		}
 | 
			
		||||
	}()
 | 
			
		||||
	ctx, span := trace.StartSpan(ctx, title)
 | 
			
		||||
	defer span.End()
 | 
			
		||||
	defer func() { oc.SetSpanStatus(span, err) }()
 | 
			
		||||
	span.AddAttributes(trace.StringAttribute("name", name))
 | 
			
		||||
 | 
			
		||||
	var id guid.GUID
 | 
			
		||||
	err = nameToGuid(name, &id)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		err = hcserror.New(err, title+" - failed", "")
 | 
			
		||||
		return
 | 
			
		||||
		return guid.GUID{}, hcserror.New(err, title+" - failed", "")
 | 
			
		||||
	}
 | 
			
		||||
	fields["guid"] = id.String()
 | 
			
		||||
	return
 | 
			
		||||
	span.AddAttributes(trace.StringAttribute("guid", id.String()))
 | 
			
		||||
	return id, nil
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										27
									
								
								vendor/github.com/Microsoft/hcsshim/internal/wclayer/preparelayer.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										27
									
								
								vendor/github.com/Microsoft/hcsshim/internal/wclayer/preparelayer.go
									
									
									
										generated
									
									
										vendored
									
									
								
							@@ -1,10 +1,13 @@
 | 
			
		||||
package wclayer
 | 
			
		||||
 | 
			
		||||
import (
 | 
			
		||||
	"context"
 | 
			
		||||
	"strings"
 | 
			
		||||
	"sync"
 | 
			
		||||
 | 
			
		||||
	"github.com/Microsoft/hcsshim/internal/hcserror"
 | 
			
		||||
	"github.com/sirupsen/logrus"
 | 
			
		||||
	"github.com/Microsoft/hcsshim/internal/oc"
 | 
			
		||||
	"go.opencensus.io/trace"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
var prepareLayerLock sync.Mutex
 | 
			
		||||
@@ -14,23 +17,17 @@ var prepareLayerLock sync.Mutex
 | 
			
		||||
// parent layers, and is necessary in order to view or interact with the layer
 | 
			
		||||
// as an actual filesystem (reading and writing files, creating directories, etc).
 | 
			
		||||
// Disabling the filter must be done via UnprepareLayer.
 | 
			
		||||
func PrepareLayer(path string, parentLayerPaths []string) (err error) {
 | 
			
		||||
func PrepareLayer(ctx context.Context, path string, parentLayerPaths []string) (err error) {
 | 
			
		||||
	title := "hcsshim::PrepareLayer"
 | 
			
		||||
	fields := logrus.Fields{
 | 
			
		||||
		"path": path,
 | 
			
		||||
	}
 | 
			
		||||
	logrus.WithFields(fields).Debug(title)
 | 
			
		||||
	defer func() {
 | 
			
		||||
		if err != nil {
 | 
			
		||||
			fields[logrus.ErrorKey] = err
 | 
			
		||||
			logrus.WithFields(fields).Error(err)
 | 
			
		||||
		} else {
 | 
			
		||||
			logrus.WithFields(fields).Debug(title + " - succeeded")
 | 
			
		||||
		}
 | 
			
		||||
	}()
 | 
			
		||||
	ctx, span := trace.StartSpan(ctx, title)
 | 
			
		||||
	defer span.End()
 | 
			
		||||
	defer func() { oc.SetSpanStatus(span, err) }()
 | 
			
		||||
	span.AddAttributes(
 | 
			
		||||
		trace.StringAttribute("path", path),
 | 
			
		||||
		trace.StringAttribute("parentLayerPaths", strings.Join(parentLayerPaths, ", ")))
 | 
			
		||||
 | 
			
		||||
	// Generate layer descriptors
 | 
			
		||||
	layers, err := layerPathsToDescriptors(parentLayerPaths)
 | 
			
		||||
	layers, err := layerPathsToDescriptors(ctx, parentLayerPaths)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return err
 | 
			
		||||
	}
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										32
									
								
								vendor/github.com/Microsoft/hcsshim/internal/wclayer/processimage.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										32
									
								
								vendor/github.com/Microsoft/hcsshim/internal/wclayer/processimage.go
									
									
									
										generated
									
									
										vendored
									
									
								
							@@ -1,23 +1,41 @@
 | 
			
		||||
package wclayer
 | 
			
		||||
 | 
			
		||||
import "os"
 | 
			
		||||
import (
 | 
			
		||||
	"context"
 | 
			
		||||
	"os"
 | 
			
		||||
 | 
			
		||||
	"github.com/Microsoft/hcsshim/internal/oc"
 | 
			
		||||
	"go.opencensus.io/trace"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
// ProcessBaseLayer post-processes a base layer that has had its files extracted.
 | 
			
		||||
// The files should have been extracted to <path>\Files.
 | 
			
		||||
func ProcessBaseLayer(path string) error {
 | 
			
		||||
	err := processBaseImage(path)
 | 
			
		||||
func ProcessBaseLayer(ctx context.Context, path string) (err error) {
 | 
			
		||||
	title := "hcsshim::ProcessBaseLayer"
 | 
			
		||||
	ctx, span := trace.StartSpan(ctx, title)
 | 
			
		||||
	defer span.End()
 | 
			
		||||
	defer func() { oc.SetSpanStatus(span, err) }()
 | 
			
		||||
	span.AddAttributes(trace.StringAttribute("path", path))
 | 
			
		||||
 | 
			
		||||
	err = processBaseImage(path)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return &os.PathError{Op: "ProcessBaseLayer", Path: path, Err: err}
 | 
			
		||||
		return &os.PathError{Op: title, Path: path, Err: err}
 | 
			
		||||
	}
 | 
			
		||||
	return nil
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// ProcessUtilityVMImage post-processes a utility VM image that has had its files extracted.
 | 
			
		||||
// The files should have been extracted to <path>\Files.
 | 
			
		||||
func ProcessUtilityVMImage(path string) error {
 | 
			
		||||
	err := processUtilityImage(path)
 | 
			
		||||
func ProcessUtilityVMImage(ctx context.Context, path string) (err error) {
 | 
			
		||||
	title := "hcsshim::ProcessUtilityVMImage"
 | 
			
		||||
	ctx, span := trace.StartSpan(ctx, title)
 | 
			
		||||
	defer span.End()
 | 
			
		||||
	defer func() { oc.SetSpanStatus(span, err) }()
 | 
			
		||||
	span.AddAttributes(trace.StringAttribute("path", path))
 | 
			
		||||
 | 
			
		||||
	err = processUtilityImage(path)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return &os.PathError{Op: "ProcessUtilityVMImage", Path: path, Err: err}
 | 
			
		||||
		return &os.PathError{Op: title, Path: path, Err: err}
 | 
			
		||||
	}
 | 
			
		||||
	return nil
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										23
									
								
								vendor/github.com/Microsoft/hcsshim/internal/wclayer/unpreparelayer.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										23
									
								
								vendor/github.com/Microsoft/hcsshim/internal/wclayer/unpreparelayer.go
									
									
									
										generated
									
									
										vendored
									
									
								
							@@ -1,26 +1,21 @@
 | 
			
		||||
package wclayer
 | 
			
		||||
 | 
			
		||||
import (
 | 
			
		||||
	"context"
 | 
			
		||||
 | 
			
		||||
	"github.com/Microsoft/hcsshim/internal/hcserror"
 | 
			
		||||
	"github.com/sirupsen/logrus"
 | 
			
		||||
	"github.com/Microsoft/hcsshim/internal/oc"
 | 
			
		||||
	"go.opencensus.io/trace"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
// UnprepareLayer disables the filesystem filter for the read-write layer with
 | 
			
		||||
// the given id.
 | 
			
		||||
func UnprepareLayer(path string) (err error) {
 | 
			
		||||
func UnprepareLayer(ctx context.Context, path string) (err error) {
 | 
			
		||||
	title := "hcsshim::UnprepareLayer"
 | 
			
		||||
	fields := logrus.Fields{
 | 
			
		||||
		"path": path,
 | 
			
		||||
	}
 | 
			
		||||
	logrus.WithFields(fields).Debug(title)
 | 
			
		||||
	defer func() {
 | 
			
		||||
		if err != nil {
 | 
			
		||||
			fields[logrus.ErrorKey] = err
 | 
			
		||||
			logrus.WithFields(fields).Error(err)
 | 
			
		||||
		} else {
 | 
			
		||||
			logrus.WithFields(fields).Debug(title + " - succeeded")
 | 
			
		||||
		}
 | 
			
		||||
	}()
 | 
			
		||||
	ctx, span := trace.StartSpan(ctx, title)
 | 
			
		||||
	defer span.End()
 | 
			
		||||
	defer func() { oc.SetSpanStatus(span, err) }()
 | 
			
		||||
	span.AddAttributes(trace.StringAttribute("path", path))
 | 
			
		||||
 | 
			
		||||
	err = unprepareLayer(&stdDriverInfo, path)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										41
									
								
								vendor/github.com/Microsoft/hcsshim/layer.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										41
									
								
								vendor/github.com/Microsoft/hcsshim/layer.go
									
									
									
										generated
									
									
										vendored
									
									
								
							@@ -1,6 +1,7 @@
 | 
			
		||||
package hcsshim
 | 
			
		||||
 | 
			
		||||
import (
 | 
			
		||||
	"context"
 | 
			
		||||
	"crypto/sha1"
 | 
			
		||||
	"path/filepath"
 | 
			
		||||
 | 
			
		||||
@@ -13,59 +14,59 @@ func layerPath(info *DriverInfo, id string) string {
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func ActivateLayer(info DriverInfo, id string) error {
 | 
			
		||||
	return wclayer.ActivateLayer(layerPath(&info, id))
 | 
			
		||||
	return wclayer.ActivateLayer(context.Background(), layerPath(&info, id))
 | 
			
		||||
}
 | 
			
		||||
func CreateLayer(info DriverInfo, id, parent string) error {
 | 
			
		||||
	return wclayer.CreateLayer(layerPath(&info, id), parent)
 | 
			
		||||
	return wclayer.CreateLayer(context.Background(), layerPath(&info, id), parent)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// New clients should use CreateScratchLayer instead. Kept in to preserve API compatibility.
 | 
			
		||||
func CreateSandboxLayer(info DriverInfo, layerId, parentId string, parentLayerPaths []string) error {
 | 
			
		||||
	return wclayer.CreateScratchLayer(layerPath(&info, layerId), parentLayerPaths)
 | 
			
		||||
	return wclayer.CreateScratchLayer(context.Background(), layerPath(&info, layerId), parentLayerPaths)
 | 
			
		||||
}
 | 
			
		||||
func CreateScratchLayer(info DriverInfo, layerId, parentId string, parentLayerPaths []string) error {
 | 
			
		||||
	return wclayer.CreateScratchLayer(layerPath(&info, layerId), parentLayerPaths)
 | 
			
		||||
	return wclayer.CreateScratchLayer(context.Background(), layerPath(&info, layerId), parentLayerPaths)
 | 
			
		||||
}
 | 
			
		||||
func DeactivateLayer(info DriverInfo, id string) error {
 | 
			
		||||
	return wclayer.DeactivateLayer(layerPath(&info, id))
 | 
			
		||||
	return wclayer.DeactivateLayer(context.Background(), layerPath(&info, id))
 | 
			
		||||
}
 | 
			
		||||
func DestroyLayer(info DriverInfo, id string) error {
 | 
			
		||||
	return wclayer.DestroyLayer(layerPath(&info, id))
 | 
			
		||||
	return wclayer.DestroyLayer(context.Background(), layerPath(&info, id))
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// New clients should use ExpandScratchSize instead. Kept in to preserve API compatibility.
 | 
			
		||||
func ExpandSandboxSize(info DriverInfo, layerId string, size uint64) error {
 | 
			
		||||
	return wclayer.ExpandScratchSize(layerPath(&info, layerId), size)
 | 
			
		||||
	return wclayer.ExpandScratchSize(context.Background(), layerPath(&info, layerId), size)
 | 
			
		||||
}
 | 
			
		||||
func ExpandScratchSize(info DriverInfo, layerId string, size uint64) error {
 | 
			
		||||
	return wclayer.ExpandScratchSize(layerPath(&info, layerId), size)
 | 
			
		||||
	return wclayer.ExpandScratchSize(context.Background(), layerPath(&info, layerId), size)
 | 
			
		||||
}
 | 
			
		||||
func ExportLayer(info DriverInfo, layerId string, exportFolderPath string, parentLayerPaths []string) error {
 | 
			
		||||
	return wclayer.ExportLayer(layerPath(&info, layerId), exportFolderPath, parentLayerPaths)
 | 
			
		||||
	return wclayer.ExportLayer(context.Background(), layerPath(&info, layerId), exportFolderPath, parentLayerPaths)
 | 
			
		||||
}
 | 
			
		||||
func GetLayerMountPath(info DriverInfo, id string) (string, error) {
 | 
			
		||||
	return wclayer.GetLayerMountPath(layerPath(&info, id))
 | 
			
		||||
	return wclayer.GetLayerMountPath(context.Background(), layerPath(&info, id))
 | 
			
		||||
}
 | 
			
		||||
func GetSharedBaseImages() (imageData string, err error) {
 | 
			
		||||
	return wclayer.GetSharedBaseImages()
 | 
			
		||||
	return wclayer.GetSharedBaseImages(context.Background())
 | 
			
		||||
}
 | 
			
		||||
func ImportLayer(info DriverInfo, layerID string, importFolderPath string, parentLayerPaths []string) error {
 | 
			
		||||
	return wclayer.ImportLayer(layerPath(&info, layerID), importFolderPath, parentLayerPaths)
 | 
			
		||||
	return wclayer.ImportLayer(context.Background(), layerPath(&info, layerID), importFolderPath, parentLayerPaths)
 | 
			
		||||
}
 | 
			
		||||
func LayerExists(info DriverInfo, id string) (bool, error) {
 | 
			
		||||
	return wclayer.LayerExists(layerPath(&info, id))
 | 
			
		||||
	return wclayer.LayerExists(context.Background(), layerPath(&info, id))
 | 
			
		||||
}
 | 
			
		||||
func PrepareLayer(info DriverInfo, layerId string, parentLayerPaths []string) error {
 | 
			
		||||
	return wclayer.PrepareLayer(layerPath(&info, layerId), parentLayerPaths)
 | 
			
		||||
	return wclayer.PrepareLayer(context.Background(), layerPath(&info, layerId), parentLayerPaths)
 | 
			
		||||
}
 | 
			
		||||
func ProcessBaseLayer(path string) error {
 | 
			
		||||
	return wclayer.ProcessBaseLayer(path)
 | 
			
		||||
	return wclayer.ProcessBaseLayer(context.Background(), path)
 | 
			
		||||
}
 | 
			
		||||
func ProcessUtilityVMImage(path string) error {
 | 
			
		||||
	return wclayer.ProcessUtilityVMImage(path)
 | 
			
		||||
	return wclayer.ProcessUtilityVMImage(context.Background(), path)
 | 
			
		||||
}
 | 
			
		||||
func UnprepareLayer(info DriverInfo, layerId string) error {
 | 
			
		||||
	return wclayer.UnprepareLayer(layerPath(&info, layerId))
 | 
			
		||||
	return wclayer.UnprepareLayer(context.Background(), layerPath(&info, layerId))
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
type DriverInfo struct {
 | 
			
		||||
@@ -76,7 +77,7 @@ type DriverInfo struct {
 | 
			
		||||
type GUID [16]byte
 | 
			
		||||
 | 
			
		||||
func NameToGuid(name string) (id GUID, err error) {
 | 
			
		||||
	g, err := wclayer.NameToGuid(name)
 | 
			
		||||
	g, err := wclayer.NameToGuid(context.Background(), name)
 | 
			
		||||
	return g.ToWindowsArray(), err
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@@ -94,13 +95,13 @@ func (g *GUID) ToString() string {
 | 
			
		||||
type LayerReader = wclayer.LayerReader
 | 
			
		||||
 | 
			
		||||
func NewLayerReader(info DriverInfo, layerID string, parentLayerPaths []string) (LayerReader, error) {
 | 
			
		||||
	return wclayer.NewLayerReader(layerPath(&info, layerID), parentLayerPaths)
 | 
			
		||||
	return wclayer.NewLayerReader(context.Background(), layerPath(&info, layerID), parentLayerPaths)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
type LayerWriter = wclayer.LayerWriter
 | 
			
		||||
 | 
			
		||||
func NewLayerWriter(info DriverInfo, layerID string, parentLayerPaths []string) (LayerWriter, error) {
 | 
			
		||||
	return wclayer.NewLayerWriter(layerPath(&info, layerID), parentLayerPaths)
 | 
			
		||||
	return wclayer.NewLayerWriter(context.Background(), layerPath(&info, layerID), parentLayerPaths)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
type WC_LAYER_DESCRIPTOR = wclayer.WC_LAYER_DESCRIPTOR
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user