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
}