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
}