func()

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
}