cri: allow GetContainerEvents to pass a context
				
					
				
			The context can be used for timeout purposes for example, not really for Kubernetes but other consumers like cri-tools. Signed-off-by: Sascha Grunert <sgrunert@redhat.com>
This commit is contained in:
		| @@ -335,11 +335,11 @@ func (in instrumentedRuntimeService) CheckpointContainer(ctx context.Context, op | |||||||
| 	return err | 	return err | ||||||
| } | } | ||||||
|  |  | ||||||
| func (in instrumentedRuntimeService) GetContainerEvents(containerEventsCh chan *runtimeapi.ContainerEventResponse, connectionEstablishedCallback func(runtimeapi.RuntimeService_GetContainerEventsClient)) error { | func (in instrumentedRuntimeService) GetContainerEvents(ctx context.Context, containerEventsCh chan *runtimeapi.ContainerEventResponse, connectionEstablishedCallback func(runtimeapi.RuntimeService_GetContainerEventsClient)) error { | ||||||
| 	const operation = "get_container_events" | 	const operation = "get_container_events" | ||||||
| 	defer recordOperation(operation, time.Now()) | 	defer recordOperation(operation, time.Now()) | ||||||
|  |  | ||||||
| 	err := in.service.GetContainerEvents(containerEventsCh, connectionEstablishedCallback) | 	err := in.service.GetContainerEvents(ctx, containerEventsCh, connectionEstablishedCallback) | ||||||
| 	recordError(operation, err) | 	recordError(operation, err) | ||||||
| 	return err | 	return err | ||||||
| } | } | ||||||
|   | |||||||
| @@ -17,6 +17,7 @@ limitations under the License. | |||||||
| package pleg | package pleg | ||||||
|  |  | ||||||
| import ( | import ( | ||||||
|  | 	"context" | ||||||
| 	"fmt" | 	"fmt" | ||||||
| 	"sync" | 	"sync" | ||||||
| 	"time" | 	"time" | ||||||
| @@ -192,7 +193,7 @@ func (e *EventedPLEG) watchEventsChannel() { | |||||||
| 				} | 				} | ||||||
| 			} | 			} | ||||||
|  |  | ||||||
| 			err := e.runtimeService.GetContainerEvents(containerEventsResponseCh, func(runtimeapi.RuntimeService_GetContainerEventsClient) { | 			err := e.runtimeService.GetContainerEvents(context.Background(), containerEventsResponseCh, func(runtimeapi.RuntimeService_GetContainerEventsClient) { | ||||||
| 				metrics.EventedPLEGConn.Inc() | 				metrics.EventedPLEGConn.Inc() | ||||||
| 			}) | 			}) | ||||||
| 			if err != nil { | 			if err != nil { | ||||||
|   | |||||||
| @@ -61,7 +61,7 @@ type ContainerManager interface { | |||||||
| 	// CheckpointContainer checkpoints a container | 	// CheckpointContainer checkpoints a container | ||||||
| 	CheckpointContainer(ctx context.Context, options *runtimeapi.CheckpointContainerRequest) error | 	CheckpointContainer(ctx context.Context, options *runtimeapi.CheckpointContainerRequest) error | ||||||
| 	// GetContainerEvents gets container events from the CRI runtime | 	// GetContainerEvents gets container events from the CRI runtime | ||||||
| 	GetContainerEvents(containerEventsCh chan *runtimeapi.ContainerEventResponse, connectionEstablishedCallback func(runtimeapi.RuntimeService_GetContainerEventsClient)) error | 	GetContainerEvents(ctx context.Context, containerEventsCh chan *runtimeapi.ContainerEventResponse, connectionEstablishedCallback func(runtimeapi.RuntimeService_GetContainerEventsClient)) error | ||||||
| } | } | ||||||
|  |  | ||||||
| // PodSandboxManager contains methods for operating on PodSandboxes. The methods | // PodSandboxManager contains methods for operating on PodSandboxes. The methods | ||||||
|   | |||||||
| @@ -716,7 +716,7 @@ func (r *FakeRuntimeService) CheckpointContainer(_ context.Context, options *run | |||||||
| 	return nil | 	return nil | ||||||
| } | } | ||||||
|  |  | ||||||
| func (f *FakeRuntimeService) GetContainerEvents(containerEventsCh chan *runtimeapi.ContainerEventResponse, connectionEstablishedCallback func(runtimeapi.RuntimeService_GetContainerEventsClient)) error { | func (f *FakeRuntimeService) GetContainerEvents(ctx context.Context, containerEventsCh chan *runtimeapi.ContainerEventResponse, connectionEstablishedCallback func(runtimeapi.RuntimeService_GetContainerEventsClient)) error { | ||||||
| 	return nil | 	return nil | ||||||
| } | } | ||||||
|  |  | ||||||
|   | |||||||
| @@ -822,8 +822,8 @@ func (r *remoteRuntimeService) CheckpointContainer(ctx context.Context, options | |||||||
| 	return nil | 	return nil | ||||||
| } | } | ||||||
|  |  | ||||||
| func (r *remoteRuntimeService) GetContainerEvents(containerEventsCh chan *runtimeapi.ContainerEventResponse, connectionEstablishedCallback func(runtimeapi.RuntimeService_GetContainerEventsClient)) error { | func (r *remoteRuntimeService) GetContainerEvents(ctx context.Context, containerEventsCh chan *runtimeapi.ContainerEventResponse, connectionEstablishedCallback func(runtimeapi.RuntimeService_GetContainerEventsClient)) error { | ||||||
| 	containerEventsStreamingClient, err := r.runtimeClient.GetContainerEvents(context.Background(), &runtimeapi.GetEventsRequest{}) | 	containerEventsStreamingClient, err := r.runtimeClient.GetContainerEvents(ctx, &runtimeapi.GetEventsRequest{}) | ||||||
| 	if err != nil { | 	if err != nil { | ||||||
| 		r.logErr(err, "GetContainerEvents failed to get streaming client") | 		r.logErr(err, "GetContainerEvents failed to get streaming client") | ||||||
| 		return err | 		return err | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user
	 Sascha Grunert
					Sascha Grunert