func()

in pkg/controller/service/capture.go [248:276]


func (c *controller) storeCaptureResult(ctx context.Context, result *rpc.TaskResult) (*rpc.TaskResultReply, error) {
	id, _ := strconv.Atoi(result.Id)
	value, ok := captureTasks.Load(id)
	if ok && result.GetType() == rpc.TaskType_Capture {
		log.Infof("store capture result for %v, %v", id, result.GetMessage())
		captureResults := value.([]*CaptureTaskResult)
		for _, captureResult := range captureResults {
			if (result.GetTask().GetPod() != nil && result.GetTask().GetPod().GetNamespace() == captureResult.Spec.Namespace && result.GetTask().GetPod().GetName() == captureResult.Spec.Name) ||
				(result.GetTask().GetPod() == nil && result.GetTask().GetNode().GetName() == captureResult.Spec.Name) {
				captureResult.Message = result.GetMessage()
				if result.GetSuccess() {
					captureResult.Status = statusSuccess
					captureFile, err := c.storeCaptureFile(ctx, captureResult.Spec, id, result.GetCapture())
					if err != nil {
						return nil, fmt.Errorf("store capture file failed: %v", err)
					}
					captureResult.Result = captureFile
				} else {
					captureResult.Status = statusFailed
				}
			}
		}
	}

	return &rpc.TaskResultReply{
		Success: true,
		Message: "",
	}, nil
}