[CRI] Manage attach TTY in Kubelet

parent 6abb4723
......@@ -2267,7 +2267,7 @@ type ExecRequest struct {
ContainerId *string `protobuf:"bytes,1,opt,name=container_id,json=containerId" json:"container_id,omitempty"`
// Command to execute.
Cmd []string `protobuf:"bytes,2,rep,name=cmd" json:"cmd,omitempty"`
// Whether use tty.
// Whether to exec the command in a TTY.
Tty *bool `protobuf:"varint,3,opt,name=tty" json:"tty,omitempty"`
// Whether to stream stdin.
Stdin *bool `protobuf:"varint,4,opt,name=stdin" json:"stdin,omitempty"`
......@@ -2329,7 +2329,10 @@ type AttachRequest struct {
// ID of the container to which to attach.
ContainerId *string `protobuf:"bytes,1,opt,name=container_id,json=containerId" json:"container_id,omitempty"`
// Whether to stream stdin.
Stdin *bool `protobuf:"varint,2,opt,name=stdin" json:"stdin,omitempty"`
Stdin *bool `protobuf:"varint,2,opt,name=stdin" json:"stdin,omitempty"`
// Whether the process being attached is running in a TTY.
// This must match the TTY setting in the ContainerConfig.
Tty *bool `protobuf:"varint,3,opt,name=tty" json:"tty,omitempty"`
XXX_unrecognized []byte `json:"-"`
}
......@@ -2352,6 +2355,13 @@ func (m *AttachRequest) GetStdin() bool {
return false
}
func (m *AttachRequest) GetTty() bool {
if m != nil && m.Tty != nil {
return *m.Tty
}
return false
}
type AttachResponse struct {
// Fully qualified URL of the attach streaming server.
Url *string `protobuf:"bytes,1,opt,name=url" json:"url,omitempty"`
......@@ -3837,11 +3847,11 @@ var _ImageService_serviceDesc = grpc.ServiceDesc{
}
var fileDescriptorApi = []byte{
// 3365 bytes of a gzipped FileDescriptorProto
// 3369 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x09, 0x6e, 0x88, 0x02, 0xff, 0xcc, 0x3a, 0xdb, 0x72, 0x1b, 0xc7,
0xb1, 0x04, 0x40, 0x82, 0x40, 0x83, 0x00, 0xc1, 0x21, 0x45, 0x42, 0xa0, 0x25, 0x51, 0x6b, 0x49,
0x96, 0x64, 0x5b, 0xc7, 0xe2, 0x39, 0xc7, 0x3a, 0x96, 0x2d, 0xd9, 0x30, 0x49, 0xfb, 0xd0, 0x92,
0x20, 0x7a, 0x21, 0x39, 0x76, 0xf9, 0x61, 0xb3, 0xc2, 0x0e, 0xc1, 0x95, 0x80, 0xdd, 0xf5, 0xee,
0x96, 0x64, 0x5b, 0xc7, 0xe2, 0x39, 0xc7, 0x3a, 0x96, 0x2d, 0xd9, 0x30, 0x49, 0xbb, 0x68, 0x49,
0x10, 0xbd, 0x90, 0x7c, 0xec, 0xf8, 0x61, 0xb3, 0xc2, 0x0e, 0xc1, 0x95, 0x80, 0xdd, 0xf5, 0xee,
0x80, 0x16, 0xf3, 0x05, 0x79, 0x48, 0xaa, 0xf2, 0xea, 0xa7, 0xa4, 0x52, 0xa9, 0x72, 0x25, 0x79,
0x4b, 0x55, 0xaa, 0xf2, 0x0f, 0xa9, 0x7c, 0x40, 0x3e, 0x21, 0x7f, 0x91, 0x9a, 0xdb, 0xee, 0xcc,
0x5e, 0x28, 0x52, 0x76, 0xc5, 0x7a, 0xdb, 0xe9, 0xe9, 0xe9, 0xe9, 0xdb, 0xf4, 0x74, 0xf7, 0x2c,
......@@ -3987,66 +3997,66 @@ var fileDescriptorApi = []byte{
0x4c, 0x89, 0x2f, 0x98, 0x62, 0x24, 0xe0, 0x38, 0x0c, 0x99, 0xd4, 0x1c, 0x8e, 0xc3, 0x50, 0x77,
0xdb, 0x8a, 0xee, 0xb6, 0xc6, 0x53, 0x68, 0xd0, 0x0d, 0x7e, 0x10, 0xfb, 0x22, 0x85, 0xad, 0x24,
0x29, 0x6c, 0x9c, 0x09, 0xcf, 0x2a, 0x99, 0xb0, 0xb1, 0x01, 0x0b, 0x7c, 0x2f, 0x21, 0x48, 0x1b,
0x2a, 0xd3, 0x70, 0x2c, 0xed, 0x36, 0x0d, 0xc7, 0xc6, 0xff, 0x43, 0xb3, 0x47, 0x88, 0x3d, 0x3c,
0x38, 0x05, 0x3f, 0xf1, 0x5e, 0x65, 0x75, 0x2f, 0x03, 0x5a, 0x92, 0x52, 0xe1, 0x6e, 0x7d, 0x40,
0x7b, 0x7e, 0x48, 0x3e, 0xf1, 0xc3, 0x6f, 0xed, 0xd0, 0x39, 0x5d, 0xce, 0x8a, 0x60, 0x56, 0xfc,
0x5f, 0x50, 0xb9, 0x3a, 0x67, 0xb2, 0x6f, 0xe3, 0x0d, 0x58, 0xd6, 0xe8, 0x15, 0x6e, 0x7c, 0x0b,
0x1a, 0x2c, 0x2a, 0x88, 0xec, 0xe8, 0xaa, 0xda, 0x01, 0x3b, 0x2e, 0x74, 0xd0, 0xca, 0x97, 0x86,
0x7d, 0x06, 0x8f, 0x63, 0xf4, 0x5b, 0xa9, 0x44, 0x62, 0x45, 0x5f, 0x9f, 0x4a, 0x22, 0xbe, 0x2b,
0xc1, 0x1c, 0x83, 0x67, 0x82, 0xf4, 0x3a, 0xad, 0xf4, 0x03, 0xdf, 0x22, 0xf6, 0x28, 0xfe, 0x65,
0x83, 0x02, 0x1e, 0xd9, 0xa3, 0x88, 0xfd, 0x71, 0x42, 0x27, 0x1d, 0x77, 0x84, 0x23, 0x22, 0xff,
0xdb, 0x68, 0x50, 0xd8, 0x36, 0x07, 0x51, 0x95, 0x44, 0xee, 0x2f, 0x78, 0x86, 0x30, 0x6b, 0xb2,
0x6f, 0xf9, 0xb0, 0xcc, 0x63, 0x2d, 0x7b, 0x58, 0xee, 0x42, 0x2d, 0xd5, 0xe3, 0x88, 0xc7, 0xc6,
0x07, 0x80, 0x54, 0xf1, 0x84, 0xfe, 0xae, 0x40, 0x95, 0x49, 0x2f, 0x6f, 0xb3, 0x96, 0x2e, 0x9f,
0x29, 0x66, 0x8d, 0xbb, 0x80, 0xb8, 0xc2, 0xb4, 0x1b, 0xec, 0xe4, 0xca, 0x7d, 0x1f, 0x96, 0xb5,
0xf5, 0xf1, 0x93, 0xa1, 0x46, 0x20, 0xbd, 0xbb, 0x58, 0xfc, 0x8f, 0x12, 0x40, 0x6f, 0x4a, 0x0e,
0x44, 0x6d, 0xaf, 0x4a, 0x59, 0xd2, 0xa5, 0xa4, 0x73, 0x81, 0x1d, 0x45, 0xdf, 0xfa, 0xa1, 0x4c,
0xd1, 0xe2, 0x31, 0xab, 0xcb, 0xa7, 0xe4, 0x40, 0xf6, 0xee, 0xe8, 0x37, 0xba, 0x0c, 0x2d, 0xfe,
0x53, 0x8d, 0x65, 0x3b, 0x4e, 0x88, 0xa3, 0x48, 0x34, 0xf1, 0x9a, 0x1c, 0xda, 0xe3, 0x40, 0x8a,
0xe6, 0x3a, 0xd8, 0x23, 0x2e, 0x39, 0xb2, 0x88, 0xff, 0x0c, 0x7b, 0x22, 0xf9, 0x6a, 0x4a, 0xe8,
0x23, 0x0a, 0xa4, 0x68, 0x21, 0x1e, 0xb9, 0x11, 0x09, 0x25, 0x9a, 0xec, 0x34, 0x09, 0x28, 0x43,
0x33, 0xbe, 0x2f, 0x41, 0x7b, 0x6f, 0x3a, 0x1e, 0x73, 0x21, 0x4f, 0xab, 0x4b, 0xf4, 0x86, 0x90,
0xa3, 0x9c, 0xea, 0xe4, 0x25, 0x2a, 0x12, 0xc2, 0xfd, 0xf0, 0x4a, 0x6e, 0x19, 0x96, 0x14, 0x46,
0x45, 0x11, 0x72, 0x17, 0x10, 0xaf, 0x4f, 0x5e, 0x8e, 0x7f, 0xe3, 0x0c, 0x2c, 0x6b, 0xeb, 0x05,
0xd9, 0xeb, 0xd0, 0x14, 0xef, 0x6f, 0xc2, 0xce, 0x67, 0xa1, 0x46, 0x83, 0xc5, 0xd0, 0x75, 0x64,
0x5f, 0x76, 0x3e, 0xf0, 0x9d, 0x2d, 0xd7, 0x09, 0x8d, 0x3e, 0x34, 0x4d, 0x4e, 0x5e, 0xe0, 0xde,
0x81, 0x96, 0x78, 0xad, 0xb3, 0xb4, 0xf7, 0xec, 0xa4, 0x89, 0xa8, 0xd1, 0x36, 0x9b, 0x9e, 0x3a,
0x34, 0xbe, 0x86, 0xee, 0xe3, 0xc0, 0xa1, 0xd9, 0x8e, 0x4a, 0x55, 0x8a, 0x76, 0x07, 0xe4, 0x7f,
0x5d, 0x45, 0xc4, 0xf5, 0x65, 0xcd, 0x50, 0x1d, 0x1a, 0xe7, 0x60, 0x3d, 0x97, 0xb8, 0x90, 0x3b,
0x80, 0x76, 0x32, 0xe1, 0xb8, 0xb2, 0x1d, 0xcd, 0xda, 0xcc, 0x25, 0xa5, 0xcd, 0xbc, 0x1a, 0x5f,
0xa1, 0x3c, 0x18, 0x8b, 0x91, 0x92, 0xd5, 0x54, 0x8a, 0xb2, 0x9a, 0x59, 0x2d, 0xab, 0x31, 0x3e,
0x8b, 0xb5, 0x27, 0x52, 0xca, 0xf7, 0x58, 0x5e, 0xcb, 0xf7, 0x96, 0x91, 0xe0, 0x6c, 0x8e, 0x70,
0x1c, 0xc3, 0x54, 0x90, 0x8d, 0x45, 0x68, 0x6a, 0x31, 0xc1, 0xf8, 0x08, 0x5a, 0xa9, 0x43, 0x7e,
0x23, 0x75, 0xf7, 0x67, 0xd4, 0xa6, 0xdf, 0xfc, 0xd7, 0x5f, 0x83, 0x9a, 0xfc, 0xfd, 0x0c, 0xcd,
0x43, 0xe5, 0xd1, 0xd6, 0x5e, 0x7b, 0x86, 0x7e, 0x3c, 0xde, 0xde, 0x6b, 0x97, 0xae, 0xdf, 0x86,
0xc5, 0xd4, 0xcb, 0x12, 0x5a, 0x82, 0xe6, 0xa0, 0xd7, 0xdf, 0xfe, 0xf8, 0xe1, 0x97, 0x96, 0xb9,
0xd3, 0xdb, 0xfe, 0xaa, 0x3d, 0x83, 0x56, 0xa0, 0x2d, 0x41, 0xfd, 0x87, 0x8f, 0x38, 0xb4, 0x74,
0xfd, 0x19, 0xb4, 0xf4, 0xe4, 0x16, 0x9d, 0x81, 0xa5, 0xad, 0x87, 0xfd, 0x47, 0xbd, 0xdd, 0xfe,
0x8e, 0x69, 0x6d, 0x99, 0x3b, 0xbd, 0x47, 0x3b, 0xdb, 0xed, 0x19, 0x1d, 0x6c, 0x3e, 0xee, 0xf7,
0x77, 0xfb, 0x9f, 0xb6, 0x4b, 0x94, 0x6a, 0x02, 0xde, 0xf9, 0x72, 0x97, 0x22, 0x97, 0x75, 0xe4,
0xc7, 0xfd, 0x7b, 0xfd, 0x87, 0x3f, 0xeb, 0xb7, 0x2b, 0x9b, 0x7f, 0x6a, 0x40, 0x4b, 0x0a, 0x88,
0x43, 0xd6, 0x0f, 0xbd, 0x0b, 0xf3, 0xf2, 0xcf, 0xc0, 0x24, 0xdd, 0xd6, 0x7f, 0x63, 0xec, 0x76,
0xb2, 0x13, 0xc2, 0x51, 0x66, 0xd0, 0x1e, 0x33, 0x9c, 0xf2, 0x8a, 0x77, 0x4e, 0x55, 0x65, 0xe6,
0x99, 0xb0, 0x7b, 0xbe, 0x68, 0x3a, 0xa6, 0x38, 0xa0, 0xd6, 0x52, 0x7f, 0xa7, 0x40, 0xc9, 0x9a,
0xdc, 0xdf, 0x34, 0xba, 0x17, 0x0a, 0xe7, 0x63, 0xa2, 0x5f, 0x41, 0x3b, 0xfd, 0x23, 0x05, 0x4a,
0xfa, 0xda, 0x05, 0x3f, 0x69, 0x74, 0x2f, 0x1e, 0x83, 0xa1, 0x92, 0xce, 0xfc, 0x72, 0xb0, 0x51,
0xfc, 0x68, 0x9c, 0x21, 0x5d, 0xf4, 0x12, 0xcd, 0x55, 0xa1, 0xbf, 0xbe, 0x21, 0xf5, 0xa1, 0x3f,
0xe7, 0x15, 0x56, 0x51, 0x45, 0xfe, 0xb3, 0x9d, 0x31, 0x83, 0xbe, 0x80, 0xc5, 0x54, 0x2b, 0x0c,
0x25, 0xab, 0xf2, 0x1b, 0x7b, 0xdd, 0x8d, 0x62, 0x04, 0xdd, 0x6e, 0x6a, 0xa3, 0x4b, 0xb3, 0x5b,
0x4e, 0xf7, 0x4c, 0xb3, 0x5b, 0x6e, 0x87, 0x8c, 0xb9, 0x97, 0xd6, 0xce, 0x52, 0xdc, 0x2b, 0xaf,
0x77, 0xd6, 0x3d, 0x5f, 0x34, 0xad, 0x8a, 0x9f, 0x6a, 0x65, 0x29, 0xe2, 0xe7, 0x77, 0xc8, 0xba,
0x1b, 0xc5, 0x08, 0x69, 0x5b, 0x25, 0x25, 0x7a, 0xca, 0x56, 0x99, 0x8e, 0x50, 0xca, 0x56, 0xd9,
0xda, 0x5e, 0xd8, 0x2a, 0x55, 0x6b, 0x5f, 0x28, 0x2c, 0x53, 0xb2, 0xb6, 0xca, 0xaf, 0x7c, 0x8c,
0x19, 0xd4, 0x83, 0x9a, 0xac, 0x33, 0x50, 0x72, 0xba, 0x53, 0xc5, 0x4d, 0xf7, 0x6c, 0xce, 0x4c,
0x4c, 0xe2, 0x7f, 0x61, 0x96, 0x42, 0xd1, 0x8a, 0x86, 0x24, 0x97, 0x9e, 0x49, 0x41, 0xe3, 0x65,
0xef, 0x43, 0x95, 0x27, 0xea, 0x28, 0x89, 0xb9, 0x5a, 0x0d, 0xd0, 0x5d, 0xcb, 0xc0, 0xe3, 0xc5,
0x9f, 0xf1, 0xbf, 0x85, 0x45, 0xc6, 0x8d, 0xd6, 0xb5, 0x7f, 0xf4, 0xf4, 0xbc, 0xbe, 0xfb, 0x5a,
0xfe, 0x64, 0x4c, 0xeb, 0x09, 0x2c, 0xe7, 0x5c, 0x81, 0x28, 0x69, 0x0b, 0x15, 0xdf, 0xbe, 0xdd,
0x4b, 0xc7, 0x23, 0xa9, 0xc2, 0x0a, 0xab, 0xad, 0xaa, 0xae, 0xae, 0x18, 0x6b, 0x2d, 0x03, 0x97,
0x8b, 0x37, 0xff, 0x5a, 0x86, 0x05, 0x9e, 0xa8, 0x88, 0x50, 0xfd, 0x29, 0x40, 0x92, 0x2e, 0xa3,
0xae, 0xe6, 0x3d, 0x5a, 0x89, 0xd0, 0x5d, 0xcf, 0x9d, 0x53, 0xd5, 0xa8, 0x64, 0xbe, 0x8a, 0x1a,
0xb3, 0xf9, 0xb4, 0xa2, 0xc6, 0x9c, 0x64, 0xd9, 0x98, 0x41, 0xdb, 0x50, 0x8f, 0xd3, 0x31, 0xa4,
0x64, 0x71, 0xa9, 0x5c, 0xb2, 0xdb, 0xcd, 0x9b, 0x52, 0x39, 0x52, 0xf2, 0x2f, 0x85, 0xa3, 0x6c,
0x56, 0xa7, 0x70, 0x94, 0x97, 0xb2, 0xcd, 0xfc, 0x3b, 0x00, 0x00, 0xff, 0xff, 0x6b, 0xf3, 0x7c,
0x10, 0x9b, 0x2f, 0x00, 0x00,
0x2a, 0xd3, 0x70, 0x2c, 0xed, 0x36, 0x0d, 0xc7, 0xc6, 0xcf, 0xa0, 0xd9, 0x23, 0xc4, 0x1e, 0x1e,
0x9c, 0x82, 0x9f, 0x78, 0xaf, 0xb2, 0x9a, 0x75, 0x67, 0x78, 0x32, 0x0c, 0x68, 0x49, 0xda, 0x85,
0xfb, 0xf7, 0x01, 0xed, 0xf9, 0x21, 0xf9, 0xc4, 0x0f, 0xbf, 0xb5, 0x43, 0xe7, 0x74, 0x59, 0x2c,
0x82, 0x59, 0xf1, 0xc7, 0x41, 0xe5, 0xea, 0x9c, 0xc9, 0xbe, 0x8d, 0x37, 0x60, 0x59, 0xa3, 0x57,
0xb8, 0xf1, 0x2d, 0x68, 0xb0, 0x38, 0x21, 0xf2, 0xa5, 0xab, 0x6a, 0x4f, 0xec, 0xb8, 0x60, 0x42,
0x6b, 0x61, 0x7a, 0x11, 0x30, 0x78, 0x1c, 0xb5, 0xdf, 0x4a, 0xa5, 0x16, 0x2b, 0xfa, 0xfa, 0x54,
0x5a, 0xf1, 0x5d, 0x09, 0xe6, 0x18, 0x3c, 0x13, 0xb6, 0xd7, 0x69, 0xed, 0x1f, 0xf8, 0x16, 0xb1,
0x47, 0xf1, 0x4f, 0x1c, 0x14, 0xf0, 0xc8, 0x1e, 0x45, 0xec, 0x1f, 0x14, 0x3a, 0xe9, 0xb8, 0x23,
0x1c, 0x11, 0xf9, 0x27, 0x47, 0x83, 0xc2, 0xb6, 0x39, 0x88, 0xaa, 0x24, 0x72, 0x7f, 0xc1, 0x73,
0x86, 0x59, 0x93, 0x7d, 0xcb, 0xa7, 0x66, 0x1e, 0x7d, 0xd9, 0x53, 0x73, 0x17, 0x6a, 0xa9, 0xae,
0x47, 0x3c, 0x36, 0x3e, 0x00, 0xa4, 0x8a, 0x27, 0xf4, 0x77, 0x05, 0xaa, 0x4c, 0x7a, 0x79, 0xbf,
0xb5, 0x74, 0xf9, 0x4c, 0x31, 0x6b, 0xdc, 0x05, 0xc4, 0x15, 0xa6, 0xdd, 0x69, 0x27, 0x57, 0xee,
0xfb, 0xb0, 0xac, 0xad, 0x8f, 0x1f, 0x11, 0x35, 0x02, 0xe9, 0xdd, 0xc5, 0xe2, 0x7f, 0x94, 0x00,
0x7a, 0x53, 0x72, 0x20, 0xaa, 0x7d, 0x55, 0xca, 0x92, 0x2e, 0x25, 0x9d, 0x0b, 0xec, 0x28, 0xfa,
0xd6, 0x0f, 0x65, 0xd2, 0x16, 0x8f, 0x59, 0xa5, 0x3e, 0x25, 0x07, 0xb2, 0x9b, 0x47, 0xbf, 0xd1,
0x65, 0x68, 0xf1, 0xdf, 0x6c, 0x2c, 0xdb, 0x71, 0x42, 0x1c, 0x45, 0xa2, 0xad, 0xd7, 0xe4, 0xd0,
0x1e, 0x07, 0x52, 0x34, 0xd7, 0xc1, 0x1e, 0x71, 0xc9, 0x91, 0x45, 0xfc, 0x67, 0xd8, 0x13, 0xe9,
0x58, 0x53, 0x42, 0x1f, 0x51, 0x20, 0x45, 0x0b, 0xf1, 0xc8, 0x8d, 0x48, 0x28, 0xd1, 0x64, 0xef,
0x49, 0x40, 0x19, 0x9a, 0xf1, 0x7d, 0x09, 0xda, 0x7b, 0xd3, 0xf1, 0x98, 0x0b, 0x79, 0x5a, 0x5d,
0xa2, 0x37, 0x84, 0x1c, 0xe5, 0x54, 0x6f, 0x2f, 0x51, 0x91, 0x10, 0xee, 0x87, 0xd7, 0x76, 0xcb,
0xb0, 0xa4, 0x30, 0x2a, 0xca, 0x92, 0xbb, 0x80, 0x78, 0xc5, 0xf2, 0x72, 0xfc, 0x1b, 0x67, 0x60,
0x59, 0x5b, 0x2f, 0xc8, 0x5e, 0x87, 0xa6, 0x78, 0x91, 0x13, 0x76, 0x3e, 0x0b, 0x35, 0x1a, 0x2c,
0x86, 0xae, 0x23, 0x3b, 0xb5, 0xf3, 0x81, 0xef, 0x6c, 0xb9, 0x4e, 0x68, 0xf4, 0xa1, 0x69, 0x72,
0xf2, 0x02, 0xf7, 0x0e, 0xb4, 0xc4, 0xfb, 0x9d, 0xa5, 0xbd, 0x70, 0x27, 0x6d, 0x45, 0x8d, 0xb6,
0xd9, 0xf4, 0xd4, 0xa1, 0xf1, 0x35, 0x74, 0x1f, 0x07, 0x0e, 0xcd, 0x7f, 0x54, 0xaa, 0x52, 0xb4,
0x3b, 0x20, 0xff, 0xf4, 0x2a, 0x22, 0xae, 0x2f, 0x6b, 0x86, 0xea, 0xd0, 0x38, 0x07, 0xeb, 0xb9,
0xc4, 0x85, 0xdc, 0x01, 0xb4, 0x93, 0x09, 0xc7, 0x95, 0x0d, 0x6a, 0xd6, 0x78, 0x2e, 0x29, 0x8d,
0xe7, 0xd5, 0xf8, 0x52, 0xe5, 0xe1, 0x59, 0x8c, 0x94, 0x3c, 0xa7, 0x52, 0x94, 0xe7, 0xcc, 0x6a,
0x79, 0x8e, 0xf1, 0x59, 0xac, 0x3d, 0x91, 0x64, 0xbe, 0xc7, 0x32, 0x5d, 0xbe, 0xb7, 0x8c, 0x04,
0x67, 0x73, 0x84, 0xe3, 0x18, 0xa6, 0x82, 0x6c, 0x2c, 0x42, 0x53, 0x8b, 0x09, 0xc6, 0x47, 0xd0,
0x4a, 0x1d, 0xf2, 0x1b, 0xa9, 0x6c, 0x20, 0xa3, 0x36, 0x3d, 0x17, 0xb8, 0xfe, 0x1a, 0xd4, 0xe4,
0x0f, 0x69, 0x68, 0x1e, 0x2a, 0x8f, 0xb6, 0xf6, 0xda, 0x33, 0xf4, 0xe3, 0xf1, 0xf6, 0x5e, 0xbb,
0x74, 0xfd, 0x36, 0x2c, 0xa6, 0xde, 0x9a, 0xd0, 0x12, 0x34, 0x07, 0xbd, 0xfe, 0xf6, 0xc7, 0x0f,
0xbf, 0xb4, 0xcc, 0x9d, 0xde, 0xf6, 0x57, 0xed, 0x19, 0xb4, 0x02, 0x6d, 0x09, 0xea, 0x3f, 0x7c,
0xc4, 0xa1, 0xa5, 0xeb, 0xcf, 0xa0, 0xa5, 0xa7, 0xbb, 0xe8, 0x0c, 0x2c, 0x6d, 0x3d, 0xec, 0x3f,
0xea, 0xed, 0xf6, 0x77, 0x4c, 0x6b, 0xcb, 0xdc, 0xe9, 0x3d, 0xda, 0xd9, 0x6e, 0xcf, 0xe8, 0x60,
0xf3, 0x71, 0xbf, 0xbf, 0xdb, 0xff, 0xb4, 0x5d, 0xa2, 0x54, 0x13, 0xf0, 0xce, 0x97, 0xbb, 0x14,
0xb9, 0xac, 0x23, 0x3f, 0xee, 0xdf, 0xeb, 0x3f, 0xfc, 0xff, 0x7e, 0xbb, 0xb2, 0xf9, 0xa7, 0x06,
0xb4, 0xa4, 0x80, 0x38, 0x64, 0x1d, 0xd2, 0xbb, 0x30, 0x2f, 0xff, 0x15, 0x4c, 0x12, 0x70, 0xfd,
0xc7, 0xc6, 0x6e, 0x27, 0x3b, 0x21, 0x1c, 0x65, 0x06, 0xed, 0x31, 0xc3, 0x29, 0xef, 0x7a, 0xe7,
0x54, 0x55, 0x66, 0x1e, 0x0e, 0xbb, 0xe7, 0x8b, 0xa6, 0x63, 0x8a, 0x03, 0x6a, 0x2d, 0xf5, 0x07,
0x0b, 0x94, 0xac, 0xc9, 0xfd, 0x71, 0xa3, 0x7b, 0xa1, 0x70, 0x3e, 0x26, 0xfa, 0x15, 0xb4, 0xd3,
0xbf, 0x56, 0xa0, 0xa4, 0xd3, 0x5d, 0xf0, 0xdb, 0x46, 0xf7, 0xe2, 0x31, 0x18, 0x2a, 0xe9, 0xcc,
0x4f, 0x08, 0x1b, 0xc5, 0xcf, 0xc8, 0x19, 0xd2, 0x45, 0x6f, 0xd3, 0x5c, 0x15, 0xfa, 0x7b, 0x1c,
0x52, 0x9f, 0xfe, 0x73, 0xde, 0x65, 0x15, 0x55, 0xe4, 0x3f, 0xe4, 0x19, 0x33, 0xe8, 0x0b, 0x58,
0x4c, 0x35, 0xc7, 0x50, 0xb2, 0x2a, 0xbf, 0xd5, 0xd7, 0xdd, 0x28, 0x46, 0xd0, 0xed, 0xa6, 0xb6,
0xbe, 0x34, 0xbb, 0xe5, 0xf4, 0xd3, 0x34, 0xbb, 0xe5, 0xf6, 0xcc, 0x98, 0x7b, 0x69, 0x0d, 0x2e,
0xc5, 0xbd, 0xf2, 0xba, 0x69, 0xdd, 0xf3, 0x45, 0xd3, 0xaa, 0xf8, 0xa9, 0xe6, 0x96, 0x22, 0x7e,
0x7e, 0xcf, 0xac, 0xbb, 0x51, 0x8c, 0x90, 0xb6, 0x55, 0x52, 0xb4, 0xa7, 0x6c, 0x95, 0xe9, 0x11,
0xa5, 0x6c, 0x95, 0xad, 0xf6, 0x85, 0xad, 0x52, 0xd5, 0xf7, 0x85, 0xc2, 0xc2, 0x25, 0x6b, 0xab,
0xfc, 0x5a, 0xc8, 0x98, 0x41, 0x3d, 0xa8, 0xc9, 0xca, 0x03, 0x25, 0xa7, 0x3b, 0x55, 0xee, 0x74,
0xcf, 0xe6, 0xcc, 0xc4, 0x24, 0xfe, 0x17, 0x66, 0x29, 0x14, 0xad, 0x68, 0x48, 0x72, 0xe9, 0x99,
0x14, 0x34, 0x5e, 0xf6, 0x3e, 0x54, 0x79, 0xa2, 0x8e, 0x92, 0x98, 0xab, 0x55, 0x05, 0xdd, 0xb5,
0x0c, 0x3c, 0x5e, 0xfc, 0x19, 0xff, 0x7f, 0x58, 0x64, 0xdc, 0x68, 0x5d, 0xfb, 0x6b, 0x4f, 0xcf,
0xeb, 0xbb, 0xaf, 0xe5, 0x4f, 0xc6, 0xb4, 0x9e, 0xc0, 0x72, 0xce, 0x15, 0x88, 0x92, 0x46, 0x51,
0xf1, 0xed, 0xdb, 0xbd, 0x74, 0x3c, 0x92, 0x2a, 0xac, 0xb0, 0xda, 0xaa, 0xea, 0xea, 0x8a, 0xb1,
0xd6, 0x32, 0x70, 0xb9, 0x78, 0xf3, 0xaf, 0x65, 0x58, 0xe0, 0x89, 0x8a, 0x08, 0xd5, 0x9f, 0x02,
0x24, 0xe9, 0x32, 0xea, 0x6a, 0xde, 0xa3, 0x95, 0x08, 0xdd, 0xf5, 0xdc, 0x39, 0x55, 0x8d, 0x4a,
0xe6, 0xab, 0xa8, 0x31, 0x9b, 0x4f, 0x2b, 0x6a, 0xcc, 0x49, 0x96, 0x8d, 0x19, 0xb4, 0x0d, 0xf5,
0x38, 0x1d, 0x43, 0x4a, 0x16, 0x97, 0xca, 0x25, 0xbb, 0xdd, 0xbc, 0x29, 0x95, 0x23, 0x25, 0xff,
0x52, 0x38, 0xca, 0x66, 0x75, 0x0a, 0x47, 0x79, 0x29, 0xdb, 0xcc, 0xbf, 0x03, 0x00, 0x00, 0xff,
0xff, 0xd6, 0x53, 0x52, 0xb5, 0xad, 0x2f, 0x00, 0x00,
}
......@@ -719,7 +719,7 @@ message ExecRequest {
optional string container_id = 1;
// Command to execute.
repeated string cmd = 2;
// Whether use tty.
// Whether to exec the command in a TTY.
optional bool tty = 3;
// Whether to stream stdin.
optional bool stdin = 4;
......@@ -735,6 +735,9 @@ message AttachRequest {
optional string container_id = 1;
// Whether to stream stdin.
optional bool stdin = 2;
// Whether the process being attached is running in a TTY.
// This must match the TTY setting in the ContainerConfig.
optional bool tty = 3;
}
message AttachResponse {
......
......@@ -246,3 +246,18 @@ func (r *containerCommandRunnerWrapper) RunInContainer(id ContainerID, cmd []str
// error.
return buffer.Bytes(), err
}
// GetContainerSpec gets the container spec by containerName.
func GetContainerSpec(pod *v1.Pod, containerName string) *v1.Container {
for i, c := range pod.Spec.Containers {
if containerName == c.Name {
return &pod.Spec.Containers[i]
}
}
for i, c := range pod.Spec.InitContainers {
if containerName == c.Name {
return &pod.Spec.InitContainers[i]
}
}
return nil
}
......@@ -140,7 +140,7 @@ type DirectStreamingRuntime interface {
// the runtime server.
type IndirectStreamingRuntime interface {
GetExec(id ContainerID, cmd []string, stdin, stdout, stderr, tty bool) (*url.URL, error)
GetAttach(id ContainerID, stdin, stdout, stderr bool) (*url.URL, error)
GetAttach(id ContainerID, stdin, stdout, stderr, tty bool) (*url.URL, error)
GetPortForward(podName, podNamespace string, podUID types.UID) (*url.URL, error)
}
......
......@@ -78,12 +78,16 @@ type FakeDirectStreamingRuntime struct {
}
}
var _ DirectStreamingRuntime = &FakeDirectStreamingRuntime{}
const FakeHost = "localhost:12345"
type FakeIndirectStreamingRuntime struct {
*FakeRuntime
}
var _ IndirectStreamingRuntime = &FakeIndirectStreamingRuntime{}
// FakeRuntime should implement Runtime.
var _ Runtime = &FakeRuntime{}
......@@ -459,7 +463,7 @@ func (f *FakeIndirectStreamingRuntime) GetExec(id ContainerID, cmd []string, std
return &url.URL{Host: FakeHost}, f.Err
}
func (f *FakeIndirectStreamingRuntime) GetAttach(id ContainerID, stdin, stdout, stderr bool) (*url.URL, error) {
func (f *FakeIndirectStreamingRuntime) GetAttach(id ContainerID, stdin, stdout, stderr, tty bool) (*url.URL, error) {
f.Lock()
defer f.Unlock()
......
......@@ -51,13 +51,12 @@ func (r *streamingRuntime) exec(containerID string, cmd []string, in io.Reader,
return r.execHandler.ExecInContainer(r.client, container, cmd, in, out, errw, tty, resize, timeout)
}
func (r *streamingRuntime) Attach(containerID string, in io.Reader, out, errw io.WriteCloser, resize <-chan term.Size) error {
container, err := checkContainerStatus(r.client, containerID)
func (r *streamingRuntime) Attach(containerID string, in io.Reader, out, errw io.WriteCloser, tty bool, resize <-chan term.Size) error {
_, err := checkContainerStatus(r.client, containerID)
if err != nil {
return err
}
tty := container.Config.Tty
return dockertools.AttachContainer(r.client, containerID, in, out, errw, tty, resize)
}
......@@ -99,12 +98,11 @@ func (ds *dockerService) Attach(req *runtimeapi.AttachRequest) (*runtimeapi.Atta
if ds.streamingServer == nil {
return nil, streaming.ErrorStreamingDisabled("attach")
}
container, err := checkContainerStatus(ds.client, req.GetContainerId())
_, err := checkContainerStatus(ds.client, req.GetContainerId())
if err != nil {
return nil, err
}
tty := container.Config.Tty
return ds.streamingServer.GetAttach(req, tty)
return ds.streamingServer.GetAttach(req)
}
// PortForward prepares a streaming endpoint to forward ports from a PodSandbox, and returns the address.
......
......@@ -1350,10 +1350,23 @@ func (kl *Kubelet) GetAttach(podFullName string, podUID types.UID, containerName
return nil, err
}
if container == nil {
return nil, fmt.Errorf("container not found (%q)", containerName)
return nil, fmt.Errorf("container %s not found in pod %s", containerName, podFullName)
}
// The TTY setting for attach must match the TTY setting in the initial container configuration,
// since whether the process is running in a TTY cannot be changed after it has started. We
// need the api.Pod to get the TTY status.
pod, found := kl.GetPodByFullName(podFullName)
if !found || pod.UID != podUID {
return nil, fmt.Errorf("pod %s not found", podFullName)
}
containerSpec := kubecontainer.GetContainerSpec(pod, containerName)
if containerSpec == nil {
return nil, fmt.Errorf("container %s not found in pod %s", containerName, podFullName)
}
tty := containerSpec.TTY
return streamingRuntime.GetAttach(container.ID, streamOpts.Stdin, streamOpts.Stdout, streamOpts.Stderr)
return streamingRuntime.GetAttach(container.ID, streamOpts.Stdin, streamOpts.Stdout, streamOpts.Stderr, tty)
default:
return nil, fmt.Errorf("container runtime does not support attach")
}
......
......@@ -130,22 +130,6 @@ func (m *kubeGenericRuntimeManager) sandboxToKubeContainer(s *runtimeapi.PodSand
}, nil
}
// getContainerSpec gets the container spec by containerName.
func getContainerSpec(pod *v1.Pod, containerName string) *v1.Container {
for i, c := range pod.Spec.Containers {
if containerName == c.Name {
return &pod.Spec.Containers[i]
}
}
for i, c := range pod.Spec.InitContainers {
if containerName == c.Name {
return &pod.Spec.InitContainers[i]
}
}
return nil
}
// getImageUser gets uid or user name that will run the command(s) from image. The function
// guarantees that only one of them is set.
func (m *kubeGenericRuntimeManager) getImageUser(image string) (*int64, *string, error) {
......
......@@ -490,7 +490,7 @@ func (m *kubeGenericRuntimeManager) restoreSpecsFromContainerLabels(containerID
func (m *kubeGenericRuntimeManager) killContainer(pod *v1.Pod, containerID kubecontainer.ContainerID, containerName string, reason string, gracePeriodOverride *int64) error {
var containerSpec *v1.Container
if pod != nil {
containerSpec = getContainerSpec(pod, containerName)
containerSpec = kubecontainer.GetContainerSpec(pod, containerName)
} else {
// Restore necessary information if one of the specs is nil.
restoredPod, restoredContainer, err := m.restoreSpecsFromContainerLabels(containerID)
......@@ -684,10 +684,11 @@ func (m *kubeGenericRuntimeManager) GetExec(id kubecontainer.ContainerID, cmd []
}
// GetAttach gets the endpoint the runtime will serve the attach request from.
func (m *kubeGenericRuntimeManager) GetAttach(id kubecontainer.ContainerID, stdin, stdout, stderr bool) (*url.URL, error) {
func (m *kubeGenericRuntimeManager) GetAttach(id kubecontainer.ContainerID, stdin, stdout, stderr, tty bool) (*url.URL, error) {
req := &runtimeapi.AttachRequest{
ContainerId: &id.ID,
Stdin: &stdin,
Tty: &tty,
}
resp, err := m.runtimeService.Attach(req)
if err != nil {
......
......@@ -42,7 +42,7 @@ type Server interface {
// Get the serving URL for the requests.
// Requests must not be nil. Responses may be nil iff an error is returned.
GetExec(*runtimeapi.ExecRequest) (*runtimeapi.ExecResponse, error)
GetAttach(req *runtimeapi.AttachRequest, tty bool) (*runtimeapi.AttachResponse, error)
GetAttach(req *runtimeapi.AttachRequest) (*runtimeapi.AttachResponse, error)
GetPortForward(*runtimeapi.PortForwardRequest) (*runtimeapi.PortForwardResponse, error)
// Start the server.
......@@ -58,7 +58,7 @@ type Server interface {
// The interface to execute the commands and provide the streams.
type Runtime interface {
Exec(containerID string, cmd []string, in io.Reader, out, err io.WriteCloser, tty bool, resize <-chan term.Size) error
Attach(containerID string, in io.Reader, out, err io.WriteCloser, resize <-chan term.Size) error
Attach(containerID string, in io.Reader, out, err io.WriteCloser, tty bool, resize <-chan term.Size) error
PortForward(podSandboxID string, port int32, stream io.ReadWriteCloser) error
}
......@@ -154,12 +154,12 @@ func (s *server) GetExec(req *runtimeapi.ExecRequest) (*runtimeapi.ExecResponse,
}, nil
}
func (s *server) GetAttach(req *runtimeapi.AttachRequest, tty bool) (*runtimeapi.AttachResponse, error) {
func (s *server) GetAttach(req *runtimeapi.AttachRequest) (*runtimeapi.AttachResponse, error) {
url := s.buildURL("attach", req.GetContainerId(), streamOpts{
stdin: req.GetStdin(),
stdout: true,
stderr: !tty, // For TTY connections, both stderr is combined with stdout.
tty: tty,
stderr: !req.GetTty(), // For TTY connections, both stderr is combined with stdout.
tty: req.GetTty(),
})
return &runtimeapi.AttachResponse{
Url: &url,
......@@ -314,7 +314,7 @@ func (a *criAdapter) ExecInContainer(podName string, podUID types.UID, container
}
func (a *criAdapter) AttachContainer(podName string, podUID types.UID, container string, in io.Reader, out, err io.WriteCloser, tty bool, resize <-chan term.Size) error {
return a.Attach(container, in, out, err, resize)
return a.Attach(container, in, out, err, tty, resize)
}
func (a *criAdapter) PortForward(podName string, podUID types.UID, port uint16, stream io.ReadWriteCloser) error {
......
......@@ -134,15 +134,16 @@ func TestGetAttach(t *testing.T) {
request := &runtimeapi.AttachRequest{
ContainerId: &containerID,
Stdin: &test.stdin,
Tty: &test.tty,
}
// Non-TLS
resp, err := server.GetAttach(request, test.tty)
resp, err := server.GetAttach(request)
assert.NoError(t, err, "testcase=%+v", test)
expectedURL := "http://" + testAddr + "/attach/" + testContainerID + test.expectedQuery
assert.Equal(t, expectedURL, resp.GetUrl(), "testcase=%+v", test)
// TLS
resp, err = tlsServer.GetAttach(request, test.tty)
resp, err = tlsServer.GetAttach(request)
assert.NoError(t, err, "testcase=%+v", test)
expectedURL = "https://" + testAddr + "/attach/" + testContainerID + test.expectedQuery
assert.Equal(t, expectedURL, resp.GetUrl(), "testcase=%+v", test)
......@@ -299,7 +300,7 @@ func (f *fakeRuntime) Exec(containerID string, cmd []string, stdin io.Reader, st
return nil
}
func (f *fakeRuntime) Attach(containerID string, stdin io.Reader, stdout, stderr io.WriteCloser, resize <-chan term.Size) error {
func (f *fakeRuntime) Attach(containerID string, stdin io.Reader, stdout, stderr io.WriteCloser, tty bool, resize <-chan term.Size) error {
assert.Equal(f.t, testContainerID, containerID)
doServerStreams(f.t, "attach", stdin, stdout, stderr)
return nil
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment