in pkg/updater/resultstore/client.go [171:220]
func (c *DownloadClient) FetchInvocation(ctx context.Context, log logrus.FieldLogger, invocationID string) (*FetchResult, error) {
name := fmt.Sprintf("invocations/%s", invocationID)
nextPageToken := ""
result := &FetchResult{}
fieldMaskCtx := fieldMask(
ctx,
"next_page_token",
"invocation.id",
"invocation.timing",
"invocation.status_attributes",
"invocation.properties",
"invocation.invocation_attributes",
"targets.id",
"targets.timing",
"targets.status_attributes",
"targets.properties",
"actions.id",
"actions.timing",
"actions.properties",
"actions.status_attributes",
"actions.test_action",
"configured_targets.id",
"configured_targets.status_attributes",
"configured_targets.test_attributes",
"configured_targets.timing",
)
for {
req := &resultstore.ExportInvocationRequest{
Name: name,
PageStart: &resultstore.ExportInvocationRequest_PageToken{
PageToken: nextPageToken,
},
}
resp, err := c.client.ExportInvocation(fieldMaskCtx, req)
if err != nil {
return nil, err
}
if result.Invocation == nil {
result.Invocation = resp.GetInvocation()
}
result.Actions = append(result.Actions, resp.GetActions()...)
result.ConfiguredTargets = append(result.ConfiguredTargets, resp.GetConfiguredTargets()...)
result.Targets = append(result.Targets, resp.GetTargets()...)
if resp.GetNextPageToken() == "" {
break
}
nextPageToken = resp.GetNextPageToken()
}
return result, nil
}