func()

in workflow.go [388:432]


func (w *Workflow) PopulateClients(ctx context.Context, options ...option.ClientOption) error {
	// API clients instantiation.
	var (
		err            error
		computeOptions []option.ClientOption
		storageOptions []option.ClientOption
		loggingOptions []option.ClientOption
	)

	if len(options) > 0 {
		computeOptions = options
		storageOptions = options
		loggingOptions = options
	} else {
		computeOptions = []option.ClientOption{option.WithCredentialsFile(w.OAuthPath)}
		storageOptions = []option.ClientOption{option.WithCredentialsFile(w.OAuthPath)}
		loggingOptions = []option.ClientOption{option.WithCredentialsFile(w.OAuthPath)}
	}

	if w.ComputeEndpoint != "" {
		computeOptions = append(computeOptions, option.WithEndpoint(w.ComputeEndpoint))
	}

	if w.ComputeClient == nil {
		w.ComputeClient, err = compute.NewClient(ctx, computeOptions...)
		if err != nil {
			return typedErr(apiError, "failed to create compute client", err)
		}
	}

	if w.StorageClient == nil {
		w.StorageClient, err = storage.NewClient(ctx, storageOptions...)
		if err != nil {
			return err
		}
	}

	if w.externalLogging && !w.cloudLoggingDisabled && w.CloudLoggingClient == nil {
		w.CloudLoggingClient, err = logging.NewClient(ctx, w.Project, loggingOptions...)
		if err != nil {
			return err
		}
	}
	return nil
}