diff --git a/internal/machine/api/pb/docker.pb.go b/internal/machine/api/pb/docker.pb.go index d656a245..fd0c2ce3 100644 --- a/internal/machine/api/pb/docker.pb.go +++ b/internal/machine/api/pb/docker.pb.go @@ -407,12 +407,12 @@ func (x *ListContainersRequest) GetOptions() []byte { return nil } -// ListContainersResponse structure allows broadcasting ListContainers requests to multiple machines. type ListContainersResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields + // Must contain only one repeated messages field to allow broadcasting ListContainers requests to multiple machines. Messages []*MachineContainers `protobuf:"bytes,1,rep,name=messages,proto3" json:"messages,omitempty"` } @@ -723,8 +723,8 @@ type InspectImageResponse struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // JSON serialized types.ImageInspect. - Response []byte `protobuf:"bytes,1,opt,name=response,proto3" json:"response,omitempty"` + // Must contain only one repeated messages field to allow broadcasting InspectImage requests to multiple machines. + Messages []*Image `protobuf:"bytes,1,rep,name=messages,proto3" json:"messages,omitempty"` } func (x *InspectImageResponse) Reset() { @@ -759,9 +759,65 @@ func (*InspectImageResponse) Descriptor() ([]byte, []int) { return file_internal_machine_api_pb_docker_proto_rawDescGZIP(), []int{13} } -func (x *InspectImageResponse) GetResponse() []byte { +func (x *InspectImageResponse) GetMessages() []*Image { if x != nil { - return x.Response + return x.Messages + } + return nil +} + +type Image struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Metadata *Metadata `protobuf:"bytes,1,opt,name=metadata,proto3" json:"metadata,omitempty"` + // JSON serialized types.ImageInspect. + Image []byte `protobuf:"bytes,2,opt,name=image,proto3" json:"image,omitempty"` +} + +func (x *Image) Reset() { + *x = Image{} + if protoimpl.UnsafeEnabled { + mi := &file_internal_machine_api_pb_docker_proto_msgTypes[14] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Image) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Image) ProtoMessage() {} + +func (x *Image) ProtoReflect() protoreflect.Message { + mi := &file_internal_machine_api_pb_docker_proto_msgTypes[14] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Image.ProtoReflect.Descriptor instead. +func (*Image) Descriptor() ([]byte, []int) { + return file_internal_machine_api_pb_docker_proto_rawDescGZIP(), []int{14} +} + +func (x *Image) GetMetadata() *Metadata { + if x != nil { + return x.Metadata + } + return nil +} + +func (x *Image) GetImage() []byte { + if x != nil { + return x.Image } return nil } @@ -777,7 +833,7 @@ type InspectRemoteImageRequest struct { func (x *InspectRemoteImageRequest) Reset() { *x = InspectRemoteImageRequest{} if protoimpl.UnsafeEnabled { - mi := &file_internal_machine_api_pb_docker_proto_msgTypes[14] + mi := &file_internal_machine_api_pb_docker_proto_msgTypes[15] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -790,7 +846,7 @@ func (x *InspectRemoteImageRequest) String() string { func (*InspectRemoteImageRequest) ProtoMessage() {} func (x *InspectRemoteImageRequest) ProtoReflect() protoreflect.Message { - mi := &file_internal_machine_api_pb_docker_proto_msgTypes[14] + mi := &file_internal_machine_api_pb_docker_proto_msgTypes[15] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -803,7 +859,7 @@ func (x *InspectRemoteImageRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use InspectRemoteImageRequest.ProtoReflect.Descriptor instead. func (*InspectRemoteImageRequest) Descriptor() ([]byte, []int) { - return file_internal_machine_api_pb_docker_proto_rawDescGZIP(), []int{14} + return file_internal_machine_api_pb_docker_proto_rawDescGZIP(), []int{15} } func (x *InspectRemoteImageRequest) GetId() string { @@ -818,14 +874,14 @@ type InspectRemoteImageResponse struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Raw manifest data (JSON). - Manifest []byte `protobuf:"bytes,1,opt,name=manifest,proto3" json:"manifest,omitempty"` + // Must contain only one repeated messages field to allow broadcasting InspectRemoteImage requests to multiple machines. + Messages []*RemoteImage `protobuf:"bytes,1,rep,name=messages,proto3" json:"messages,omitempty"` } func (x *InspectRemoteImageResponse) Reset() { *x = InspectRemoteImageResponse{} if protoimpl.UnsafeEnabled { - mi := &file_internal_machine_api_pb_docker_proto_msgTypes[15] + mi := &file_internal_machine_api_pb_docker_proto_msgTypes[16] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -838,7 +894,7 @@ func (x *InspectRemoteImageResponse) String() string { func (*InspectRemoteImageResponse) ProtoMessage() {} func (x *InspectRemoteImageResponse) ProtoReflect() protoreflect.Message { - mi := &file_internal_machine_api_pb_docker_proto_msgTypes[15] + mi := &file_internal_machine_api_pb_docker_proto_msgTypes[16] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -851,10 +907,66 @@ func (x *InspectRemoteImageResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use InspectRemoteImageResponse.ProtoReflect.Descriptor instead. func (*InspectRemoteImageResponse) Descriptor() ([]byte, []int) { - return file_internal_machine_api_pb_docker_proto_rawDescGZIP(), []int{15} + return file_internal_machine_api_pb_docker_proto_rawDescGZIP(), []int{16} } -func (x *InspectRemoteImageResponse) GetManifest() []byte { +func (x *InspectRemoteImageResponse) GetMessages() []*RemoteImage { + if x != nil { + return x.Messages + } + return nil +} + +type RemoteImage struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Metadata *Metadata `protobuf:"bytes,1,opt,name=metadata,proto3" json:"metadata,omitempty"` + // Raw manifest data (JSON). + Manifest []byte `protobuf:"bytes,2,opt,name=manifest,proto3" json:"manifest,omitempty"` +} + +func (x *RemoteImage) Reset() { + *x = RemoteImage{} + if protoimpl.UnsafeEnabled { + mi := &file_internal_machine_api_pb_docker_proto_msgTypes[17] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *RemoteImage) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*RemoteImage) ProtoMessage() {} + +func (x *RemoteImage) ProtoReflect() protoreflect.Message { + mi := &file_internal_machine_api_pb_docker_proto_msgTypes[17] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use RemoteImage.ProtoReflect.Descriptor instead. +func (*RemoteImage) Descriptor() ([]byte, []int) { + return file_internal_machine_api_pb_docker_proto_rawDescGZIP(), []int{17} +} + +func (x *RemoteImage) GetMetadata() *Metadata { + if x != nil { + return x.Metadata + } + return nil +} + +func (x *RemoteImage) GetManifest() []byte { if x != nil { return x.Manifest } @@ -927,62 +1039,74 @@ var file_internal_machine_api_pb_docker_proto_rawDesc = []byte{ 0x0c, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x22, 0x25, 0x0a, 0x13, 0x49, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x74, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, - 0x64, 0x22, 0x32, 0x0a, 0x14, 0x49, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x74, 0x49, 0x6d, 0x61, 0x67, - 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x72, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x08, 0x72, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x2b, 0x0a, 0x19, 0x49, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x74, - 0x52, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, - 0x69, 0x64, 0x22, 0x38, 0x0a, 0x1a, 0x49, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x74, 0x52, 0x65, 0x6d, - 0x6f, 0x74, 0x65, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x12, 0x1a, 0x0a, 0x08, 0x6d, 0x61, 0x6e, 0x69, 0x66, 0x65, 0x73, 0x74, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x0c, 0x52, 0x08, 0x6d, 0x61, 0x6e, 0x69, 0x66, 0x65, 0x73, 0x74, 0x32, 0x98, 0x05, 0x0a, - 0x06, 0x44, 0x6f, 0x63, 0x6b, 0x65, 0x72, 0x12, 0x4c, 0x0a, 0x0f, 0x43, 0x72, 0x65, 0x61, 0x74, - 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x12, 0x1b, 0x2e, 0x61, 0x70, 0x69, - 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1c, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x43, 0x72, - 0x65, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x4f, 0x0a, 0x10, 0x49, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x74, - 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x12, 0x1c, 0x2e, 0x61, 0x70, 0x69, 0x2e, - 0x49, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x74, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x49, 0x6e, + 0x64, 0x22, 0x3e, 0x0a, 0x14, 0x49, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x74, 0x49, 0x6d, 0x61, 0x67, + 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x26, 0x0a, 0x08, 0x6d, 0x65, 0x73, + 0x73, 0x61, 0x67, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0a, 0x2e, 0x61, 0x70, + 0x69, 0x2e, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x52, 0x08, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, + 0x73, 0x22, 0x48, 0x0a, 0x05, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x12, 0x29, 0x0a, 0x08, 0x6d, 0x65, + 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x61, + 0x70, 0x69, 0x2e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x08, 0x6d, 0x65, 0x74, + 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x14, 0x0a, 0x05, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x0c, 0x52, 0x05, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x22, 0x2b, 0x0a, 0x19, 0x49, + 0x6e, 0x73, 0x70, 0x65, 0x63, 0x74, 0x52, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x49, 0x6d, 0x61, 0x67, + 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x22, 0x4a, 0x0a, 0x1a, 0x49, 0x6e, 0x73, 0x70, + 0x65, 0x63, 0x74, 0x52, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2c, 0x0a, 0x08, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, + 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x52, + 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x52, 0x08, 0x6d, 0x65, 0x73, 0x73, + 0x61, 0x67, 0x65, 0x73, 0x22, 0x54, 0x0a, 0x0b, 0x52, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x49, 0x6d, + 0x61, 0x67, 0x65, 0x12, 0x29, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x4d, 0x65, 0x74, 0x61, + 0x64, 0x61, 0x74, 0x61, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x1a, + 0x0a, 0x08, 0x6d, 0x61, 0x6e, 0x69, 0x66, 0x65, 0x73, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, + 0x52, 0x08, 0x6d, 0x61, 0x6e, 0x69, 0x66, 0x65, 0x73, 0x74, 0x32, 0x98, 0x05, 0x0a, 0x06, 0x44, + 0x6f, 0x63, 0x6b, 0x65, 0x72, 0x12, 0x4c, 0x0a, 0x0f, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x43, + 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x12, 0x1b, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x43, + 0x72, 0x65, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1c, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x43, 0x72, 0x65, 0x61, + 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x12, 0x4f, 0x0a, 0x10, 0x49, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x74, 0x43, 0x6f, + 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x12, 0x1c, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x49, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x74, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x44, 0x0a, 0x0e, 0x53, 0x74, 0x61, 0x72, 0x74, 0x43, - 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x12, 0x1a, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x53, - 0x74, 0x61, 0x72, 0x74, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x12, 0x42, 0x0a, 0x0d, - 0x53, 0x74, 0x6f, 0x70, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x12, 0x19, 0x2e, - 0x61, 0x70, 0x69, 0x2e, 0x53, 0x74, 0x6f, 0x70, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, - 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, - 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, - 0x12, 0x49, 0x0a, 0x0e, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, - 0x72, 0x73, 0x12, 0x1a, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6f, 0x6e, - 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1b, - 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, - 0x65, 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x46, 0x0a, 0x0f, 0x52, - 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x12, 0x1b, - 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x61, - 0x69, 0x6e, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, - 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, - 0x70, 0x74, 0x79, 0x12, 0x36, 0x0a, 0x09, 0x50, 0x75, 0x6c, 0x6c, 0x49, 0x6d, 0x61, 0x67, 0x65, - 0x12, 0x15, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x50, 0x75, 0x6c, 0x6c, 0x49, 0x6d, 0x61, 0x67, 0x65, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x10, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x4a, 0x53, - 0x4f, 0x4e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x30, 0x01, 0x12, 0x43, 0x0a, 0x0c, 0x49, - 0x6e, 0x73, 0x70, 0x65, 0x63, 0x74, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x12, 0x18, 0x2e, 0x61, 0x70, - 0x69, 0x2e, 0x49, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x74, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x19, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x49, 0x6e, 0x73, 0x70, - 0x65, 0x63, 0x74, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x12, 0x55, 0x0a, 0x12, 0x49, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x74, 0x52, 0x65, 0x6d, 0x6f, 0x74, - 0x65, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x12, 0x1e, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x49, 0x6e, 0x73, - 0x70, 0x65, 0x63, 0x74, 0x52, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x49, 0x6e, 0x73, - 0x70, 0x65, 0x63, 0x74, 0x52, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x42, 0x37, 0x5a, 0x35, 0x67, 0x69, 0x74, 0x68, 0x75, - 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x70, 0x73, 0x76, 0x69, 0x64, 0x65, 0x72, 0x73, 0x6b, 0x69, - 0x2f, 0x75, 0x6e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, - 0x6c, 0x2f, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x70, 0x62, - 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x49, 0x6e, 0x73, 0x70, + 0x65, 0x63, 0x74, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x44, 0x0a, 0x0e, 0x53, 0x74, 0x61, 0x72, 0x74, 0x43, 0x6f, 0x6e, + 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x12, 0x1a, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x53, 0x74, 0x61, + 0x72, 0x74, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x12, 0x42, 0x0a, 0x0d, 0x53, 0x74, + 0x6f, 0x70, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x12, 0x19, 0x2e, 0x61, 0x70, + 0x69, 0x2e, 0x53, 0x74, 0x6f, 0x70, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x12, 0x49, + 0x0a, 0x0e, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x73, + 0x12, 0x1a, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6f, 0x6e, 0x74, 0x61, + 0x69, 0x6e, 0x65, 0x72, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1b, 0x2e, 0x61, + 0x70, 0x69, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, + 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x46, 0x0a, 0x0f, 0x52, 0x65, 0x6d, + 0x6f, 0x76, 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x12, 0x1b, 0x2e, 0x61, + 0x70, 0x69, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, + 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, + 0x79, 0x12, 0x36, 0x0a, 0x09, 0x50, 0x75, 0x6c, 0x6c, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x12, 0x15, + 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x50, 0x75, 0x6c, 0x6c, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x10, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x4a, 0x53, 0x4f, 0x4e, + 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x30, 0x01, 0x12, 0x43, 0x0a, 0x0c, 0x49, 0x6e, 0x73, + 0x70, 0x65, 0x63, 0x74, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x12, 0x18, 0x2e, 0x61, 0x70, 0x69, 0x2e, + 0x49, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x74, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x1a, 0x19, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x49, 0x6e, 0x73, 0x70, 0x65, 0x63, + 0x74, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x55, + 0x0a, 0x12, 0x49, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x74, 0x52, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x49, + 0x6d, 0x61, 0x67, 0x65, 0x12, 0x1e, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x49, 0x6e, 0x73, 0x70, 0x65, + 0x63, 0x74, 0x52, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x49, 0x6e, 0x73, 0x70, 0x65, + 0x63, 0x74, 0x52, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x42, 0x37, 0x5a, 0x35, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, + 0x63, 0x6f, 0x6d, 0x2f, 0x70, 0x73, 0x76, 0x69, 0x64, 0x65, 0x72, 0x73, 0x6b, 0x69, 0x2f, 0x75, + 0x6e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2f, + 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x70, 0x62, 0x62, 0x06, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -997,7 +1121,7 @@ func file_internal_machine_api_pb_docker_proto_rawDescGZIP() []byte { return file_internal_machine_api_pb_docker_proto_rawDescData } -var file_internal_machine_api_pb_docker_proto_msgTypes = make([]protoimpl.MessageInfo, 16) +var file_internal_machine_api_pb_docker_proto_msgTypes = make([]protoimpl.MessageInfo, 18) var file_internal_machine_api_pb_docker_proto_goTypes = []any{ (*CreateContainerRequest)(nil), // 0: api.CreateContainerRequest (*CreateContainerResponse)(nil), // 1: api.CreateContainerResponse @@ -1013,37 +1137,43 @@ var file_internal_machine_api_pb_docker_proto_goTypes = []any{ (*JSONMessage)(nil), // 11: api.JSONMessage (*InspectImageRequest)(nil), // 12: api.InspectImageRequest (*InspectImageResponse)(nil), // 13: api.InspectImageResponse - (*InspectRemoteImageRequest)(nil), // 14: api.InspectRemoteImageRequest - (*InspectRemoteImageResponse)(nil), // 15: api.InspectRemoteImageResponse - (*Metadata)(nil), // 16: api.Metadata - (*emptypb.Empty)(nil), // 17: google.protobuf.Empty + (*Image)(nil), // 14: api.Image + (*InspectRemoteImageRequest)(nil), // 15: api.InspectRemoteImageRequest + (*InspectRemoteImageResponse)(nil), // 16: api.InspectRemoteImageResponse + (*RemoteImage)(nil), // 17: api.RemoteImage + (*Metadata)(nil), // 18: api.Metadata + (*emptypb.Empty)(nil), // 19: google.protobuf.Empty } var file_internal_machine_api_pb_docker_proto_depIdxs = []int32{ 8, // 0: api.ListContainersResponse.messages:type_name -> api.MachineContainers - 16, // 1: api.MachineContainers.metadata:type_name -> api.Metadata - 0, // 2: api.Docker.CreateContainer:input_type -> api.CreateContainerRequest - 2, // 3: api.Docker.InspectContainer:input_type -> api.InspectContainerRequest - 4, // 4: api.Docker.StartContainer:input_type -> api.StartContainerRequest - 5, // 5: api.Docker.StopContainer:input_type -> api.StopContainerRequest - 6, // 6: api.Docker.ListContainers:input_type -> api.ListContainersRequest - 9, // 7: api.Docker.RemoveContainer:input_type -> api.RemoveContainerRequest - 10, // 8: api.Docker.PullImage:input_type -> api.PullImageRequest - 12, // 9: api.Docker.InspectImage:input_type -> api.InspectImageRequest - 14, // 10: api.Docker.InspectRemoteImage:input_type -> api.InspectRemoteImageRequest - 1, // 11: api.Docker.CreateContainer:output_type -> api.CreateContainerResponse - 3, // 12: api.Docker.InspectContainer:output_type -> api.InspectContainerResponse - 17, // 13: api.Docker.StartContainer:output_type -> google.protobuf.Empty - 17, // 14: api.Docker.StopContainer:output_type -> google.protobuf.Empty - 7, // 15: api.Docker.ListContainers:output_type -> api.ListContainersResponse - 17, // 16: api.Docker.RemoveContainer:output_type -> google.protobuf.Empty - 11, // 17: api.Docker.PullImage:output_type -> api.JSONMessage - 13, // 18: api.Docker.InspectImage:output_type -> api.InspectImageResponse - 15, // 19: api.Docker.InspectRemoteImage:output_type -> api.InspectRemoteImageResponse - 11, // [11:20] is the sub-list for method output_type - 2, // [2:11] is the sub-list for method input_type - 2, // [2:2] is the sub-list for extension type_name - 2, // [2:2] is the sub-list for extension extendee - 0, // [0:2] is the sub-list for field type_name + 18, // 1: api.MachineContainers.metadata:type_name -> api.Metadata + 14, // 2: api.InspectImageResponse.messages:type_name -> api.Image + 18, // 3: api.Image.metadata:type_name -> api.Metadata + 17, // 4: api.InspectRemoteImageResponse.messages:type_name -> api.RemoteImage + 18, // 5: api.RemoteImage.metadata:type_name -> api.Metadata + 0, // 6: api.Docker.CreateContainer:input_type -> api.CreateContainerRequest + 2, // 7: api.Docker.InspectContainer:input_type -> api.InspectContainerRequest + 4, // 8: api.Docker.StartContainer:input_type -> api.StartContainerRequest + 5, // 9: api.Docker.StopContainer:input_type -> api.StopContainerRequest + 6, // 10: api.Docker.ListContainers:input_type -> api.ListContainersRequest + 9, // 11: api.Docker.RemoveContainer:input_type -> api.RemoveContainerRequest + 10, // 12: api.Docker.PullImage:input_type -> api.PullImageRequest + 12, // 13: api.Docker.InspectImage:input_type -> api.InspectImageRequest + 15, // 14: api.Docker.InspectRemoteImage:input_type -> api.InspectRemoteImageRequest + 1, // 15: api.Docker.CreateContainer:output_type -> api.CreateContainerResponse + 3, // 16: api.Docker.InspectContainer:output_type -> api.InspectContainerResponse + 19, // 17: api.Docker.StartContainer:output_type -> google.protobuf.Empty + 19, // 18: api.Docker.StopContainer:output_type -> google.protobuf.Empty + 7, // 19: api.Docker.ListContainers:output_type -> api.ListContainersResponse + 19, // 20: api.Docker.RemoveContainer:output_type -> google.protobuf.Empty + 11, // 21: api.Docker.PullImage:output_type -> api.JSONMessage + 13, // 22: api.Docker.InspectImage:output_type -> api.InspectImageResponse + 16, // 23: api.Docker.InspectRemoteImage:output_type -> api.InspectRemoteImageResponse + 15, // [15:24] is the sub-list for method output_type + 6, // [6:15] is the sub-list for method input_type + 6, // [6:6] is the sub-list for extension type_name + 6, // [6:6] is the sub-list for extension extendee + 0, // [0:6] is the sub-list for field type_name } func init() { file_internal_machine_api_pb_docker_proto_init() } @@ -1222,7 +1352,7 @@ func file_internal_machine_api_pb_docker_proto_init() { } } file_internal_machine_api_pb_docker_proto_msgTypes[14].Exporter = func(v any, i int) any { - switch v := v.(*InspectRemoteImageRequest); i { + switch v := v.(*Image); i { case 0: return &v.state case 1: @@ -1234,6 +1364,18 @@ func file_internal_machine_api_pb_docker_proto_init() { } } file_internal_machine_api_pb_docker_proto_msgTypes[15].Exporter = func(v any, i int) any { + switch v := v.(*InspectRemoteImageRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_internal_machine_api_pb_docker_proto_msgTypes[16].Exporter = func(v any, i int) any { switch v := v.(*InspectRemoteImageResponse); i { case 0: return &v.state @@ -1245,6 +1387,18 @@ func file_internal_machine_api_pb_docker_proto_init() { return nil } } + file_internal_machine_api_pb_docker_proto_msgTypes[17].Exporter = func(v any, i int) any { + switch v := v.(*RemoteImage); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } } type x struct{} out := protoimpl.TypeBuilder{ @@ -1252,7 +1406,7 @@ func file_internal_machine_api_pb_docker_proto_init() { GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_internal_machine_api_pb_docker_proto_rawDesc, NumEnums: 0, - NumMessages: 16, + NumMessages: 18, NumExtensions: 0, NumServices: 1, }, diff --git a/internal/machine/api/pb/docker.proto b/internal/machine/api/pb/docker.proto index f16fe392..5bf7f958 100644 --- a/internal/machine/api/pb/docker.proto +++ b/internal/machine/api/pb/docker.proto @@ -64,8 +64,8 @@ message ListContainersRequest { bytes options = 1; } -// ListContainersResponse structure allows broadcasting ListContainers requests to multiple machines. message ListContainersResponse { + // Must contain only one repeated messages field to allow broadcasting ListContainers requests to multiple machines. repeated MachineContainers messages = 1; } @@ -97,8 +97,14 @@ message InspectImageRequest { } message InspectImageResponse { + // Must contain only one repeated messages field to allow broadcasting InspectImage requests to multiple machines. + repeated Image messages = 1; +} + +message Image { + Metadata metadata = 1; // JSON serialized types.ImageInspect. - bytes response = 1; + bytes image = 2; } message InspectRemoteImageRequest { @@ -106,6 +112,12 @@ message InspectRemoteImageRequest { } message InspectRemoteImageResponse { + // Must contain only one repeated messages field to allow broadcasting InspectRemoteImage requests to multiple machines. + repeated RemoteImage messages = 1; +} + +message RemoteImage { + Metadata metadata = 1; // Raw manifest data (JSON). - bytes manifest = 1; + bytes manifest = 2; } diff --git a/internal/machine/docker/client.go b/internal/machine/docker/client.go index 7162700b..fe4bf30e 100644 --- a/internal/machine/docker/client.go +++ b/internal/machine/docker/client.go @@ -72,10 +72,8 @@ func (c *Client) CreateContainer( Name: name, }) if err != nil { - if s, ok := status.FromError(err); ok { - if s.Code() == codes.NotFound { - return resp, errdefs.NotFound(err) - } + if status.Convert(err).Code() == codes.NotFound { + return resp, errdefs.NotFound(err) } return resp, err } @@ -92,10 +90,8 @@ func (c *Client) InspectContainer(ctx context.Context, id string) (types.Contain grpcResp, err := c.grpcClient.InspectContainer(ctx, &pb.InspectContainerRequest{Id: id}) if err != nil { - if s, ok := status.FromError(err); ok { - if s.Code() == codes.NotFound { - return resp, errdefs.NotFound(err) - } + if status.Convert(err).Code() == codes.NotFound { + return resp, errdefs.NotFound(err) } return resp, err } @@ -118,10 +114,8 @@ func (c *Client) StartContainer(ctx context.Context, id string, opts container.S Options: optsBytes, }) if err != nil { - if s, ok := status.FromError(err); ok { - if s.Code() == codes.NotFound { - return errdefs.NotFound(err) - } + if status.Convert(err).Code() == codes.NotFound { + return errdefs.NotFound(err) } } return err @@ -139,10 +133,8 @@ func (c *Client) StopContainer(ctx context.Context, id string, opts container.St Options: optsBytes, }) if err != nil { - if s, ok := status.FromError(err); ok { - if s.Code() == codes.NotFound { - return errdefs.NotFound(err) - } + if status.Convert(err).Code() == codes.NotFound { + return errdefs.NotFound(err) } } return err @@ -191,10 +183,8 @@ func (c *Client) RemoveContainer(ctx context.Context, id string, opts container. Options: optsBytes, }) if err != nil { - if s, ok := status.FromError(err); ok { - if s.Code() == codes.NotFound { - return errdefs.NotFound(err) - } + if status.Convert(err).Code() == codes.NotFound { + return errdefs.NotFound(err) } } return err @@ -237,3 +227,21 @@ func (c *Client) PullImage(ctx context.Context, image string) (<-chan PullImageM return ch, nil } + +// ImageInspect returns the image information for the given image ID. +func (c *Client) ImageInspect(ctx context.Context, id string) (types.ImageInspect, error) { + var resp types.ImageInspect + + grpcResp, err := c.grpcClient.InspectImage(ctx, &pb.InspectImageRequest{id: id}) + if err != nil { + if status.Convert(err).Code() == codes.NotFound { + return resp, errdefs.NotFound(err) + } + return resp, err + } + + if err = json.Unmarshal(grpcResp.Response, &resp); err != nil { + return resp, fmt.Errorf("unmarshal gRPC response: %w", err) + } + return resp, nil +} diff --git a/internal/machine/docker/server.go b/internal/machine/docker/server.go index 9d873598..277d8073 100644 --- a/internal/machine/docker/server.go +++ b/internal/machine/docker/server.go @@ -243,3 +243,27 @@ func (s *Server) PullImage(req *pb.PullImageRequest, stream grpc.ServerStreaming } } } + +// InspectImage returns the image information for the given image ID. +func (s *Server) InspectImage(ctx context.Context, req *pb.InspectImageRequest) (*pb.InspectImageResponse, error) { + resp, _, err := s.client.ImageInspectWithRaw(ctx, req.Id) + if err != nil { + if client.IsErrNotFound(err) { + return nil, status.Errorf(codes.NotFound, err.Error()) + } + return nil, status.Errorf(codes.Internal, err.Error()) + } + + respBytes, err := json.Marshal(resp) + if err != nil { + return nil, status.Errorf(codes.Internal, "marshal response: %v", err) + } + + return &pb.InspectImageResponse{ + Messages: []*pb.Image{ + { + Image: respBytes, + }, + }, + }, nil +}