Skip to content

Commit cb3e20b

Browse files
feat: Support for universe_domain (#23772)
1 parent 32142bd commit cb3e20b

File tree

416 files changed

+4922
-2416
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

416 files changed

+4922
-2416
lines changed

google-analytics-admin-v1alpha/.owlbot-manifest.json

+1
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
".gitignore",
44
".repo-metadata.json",
55
".rubocop.yml",
6+
".toys.rb",
67
".yardopts",
78
"AUTHENTICATION.md",
89
"CHANGELOG.md",
+28
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
# frozen_string_literal: true
2+
3+
# Copyright 2024 Google LLC
4+
#
5+
# Licensed under the Apache License, Version 2.0 (the "License");
6+
# you may not use this file except in compliance with the License.
7+
# You may obtain a copy of the License at
8+
#
9+
# https://www.apache.org/licenses/LICENSE-2.0
10+
#
11+
# Unless required by applicable law or agreed to in writing, software
12+
# distributed under the License is distributed on an "AS IS" BASIS,
13+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14+
# See the License for the specific language governing permissions and
15+
# limitations under the License.
16+
17+
# Auto-generated by gapic-generator-ruby. DO NOT EDIT!
18+
19+
toys_version! ">= 0.15.3"
20+
21+
if ENV["RUBY_COMMON_TOOLS"]
22+
common_tools_dir = File.expand_path ENV["RUBY_COMMON_TOOLS"]
23+
load File.join(common_tools_dir, "toys", "gapic")
24+
else
25+
load_git remote: "https://github.com/googleapis/ruby-common-tools.git",
26+
path: "toys/gapic",
27+
update: true
28+
end
+72-101
Original file line numberDiff line numberDiff line change
@@ -1,151 +1,122 @@
11
# Authentication
22

3-
In general, the google-analytics-admin-v1alpha library uses
4-
[Service Account](https://cloud.google.com/iam/docs/creating-managing-service-accounts)
5-
credentials to connect to Google Cloud services. When running within
6-
[Google Cloud Platform environments](#google-cloud-platform-environments) the
7-
credentials will be discovered automatically. When running on other
8-
environments, the Service Account credentials can be specified by providing the
9-
path to the
10-
[JSON keyfile](https://cloud.google.com/iam/docs/managing-service-account-keys)
11-
for the account (or the JSON itself) in
12-
[environment variables](#environment-variables). Additionally, Cloud SDK
13-
credentials can also be discovered automatically, but this is only recommended
14-
during development.
3+
The recommended way to authenticate to the google-analytics-admin-v1alpha library is to use
4+
[Application Default Credentials (ADC)](https://cloud.google.com/docs/authentication/application-default-credentials).
5+
To review all of your authentication options, see [Credentials lookup](#credential-lookup).
156

167
## Quickstart
178

18-
1. [Create a service account and credentials](#creating-a-service-account).
19-
2. Set the [environment variable](#environment-variables).
9+
The following example shows how to set up authentication for a local development
10+
environment with your user credentials.
2011

21-
```sh
22-
export ANALYTICS_ADMIN_CREDENTIALS=path/to/keyfile.json
23-
```
24-
25-
3. Initialize the client.
12+
**NOTE:** This method is _not_ recommended for running in production. User credentials
13+
should be used only during development.
2614

27-
```ruby
28-
require "google/analytics/admin/v1alpha"
15+
1. [Download and install the Google Cloud CLI](https://cloud.google.com/sdk).
16+
2. Set up a local ADC file with your user credentials:
2917

30-
client = ::Google::Analytics::Admin::V1alpha::AnalyticsAdminService::Client.new
18+
```sh
19+
gcloud auth application-default login
3120
```
3221

33-
## Credential Lookup
34-
35-
The google-analytics-admin-v1alpha library aims to make authentication
36-
as simple as possible, and provides several mechanisms to configure your system
37-
without requiring **Service Account Credentials** directly in code.
38-
39-
**Credentials** are discovered in the following order:
40-
41-
1. Specify credentials in method arguments
42-
2. Specify credentials in configuration
43-
3. Discover credentials path in environment variables
44-
4. Discover credentials JSON in environment variables
45-
5. Discover credentials file in the Cloud SDK's path
46-
6. Discover GCP credentials
47-
48-
### Google Cloud Platform environments
22+
3. Write code as if already authenticated.
4923

50-
When running on Google Cloud Platform (GCP), including Google Compute Engine
51-
(GCE), Google Kubernetes Engine (GKE), Google App Engine (GAE), Google Cloud
52-
Functions (GCF) and Cloud Run, **Credentials** are discovered automatically.
53-
Code should be written as if already authenticated.
24+
For more information about setting up authentication for a local development environment, see
25+
[Set up Application Default Credentials](https://cloud.google.com/docs/authentication/provide-credentials-adc#local-dev).
5426

55-
### Environment Variables
27+
## Credential Lookup
5628

57-
The **Credentials JSON** can be placed in environment variables instead of
58-
declaring them directly in code. Each service has its own environment variable,
59-
allowing for different service accounts to be used for different services. (See
60-
the READMEs for the individual service gems for details.) The path to the
61-
**Credentials JSON** file can be stored in the environment variable, or the
62-
**Credentials JSON** itself can be stored for environments such as Docker
63-
containers where writing files is difficult or not encouraged.
29+
The google-analytics-admin-v1alpha library provides several mechanisms to configure your system.
30+
Generally, using Application Default Credentials to facilitate automatic
31+
credentials discovery is the easist method. But if you need to explicitly specify
32+
credentials, there are several methods available to you.
6433

65-
The environment variables that google-analytics-admin-v1alpha
66-
checks for credentials are configured on the service Credentials class (such as
67-
{::Google::Analytics::Admin::V1alpha::AnalyticsAdminService::Credentials}):
34+
Credentials are accepted in the following ways, in the following order or precedence:
6835

69-
* `ANALYTICS_ADMIN_CREDENTIALS` - Path to JSON file, or JSON contents
70-
* `ANALYTICS_ADMIN_KEYFILE` - Path to JSON file, or JSON contents
71-
* `GOOGLE_CLOUD_CREDENTIALS` - Path to JSON file, or JSON contents
72-
* `GOOGLE_CLOUD_KEYFILE` - Path to JSON file, or JSON contents
73-
* `GOOGLE_APPLICATION_CREDENTIALS` - Path to JSON file
36+
1. Credentials specified in method arguments
37+
2. Credentials specified in configuration
38+
3. Credentials pointed to or included in environment variables
39+
4. Credentials found in local ADC file
40+
5. Credentials returned by the metadata server for the attached service account (GCP)
7441

75-
```ruby
76-
require "google/analytics/admin/v1alpha"
77-
78-
ENV["ANALYTICS_ADMIN_CREDENTIALS"] = "path/to/keyfile.json"
42+
### Configuration
7943

80-
client = ::Google::Analytics::Admin::V1alpha::AnalyticsAdminService::Client.new
81-
```
44+
You can configure a path to a JSON credentials file, either for an individual client object or
45+
globally, for all client objects. The JSON file can contain credentials created for
46+
[workload identity federation](https://cloud.google.com/iam/docs/workload-identity-federation),
47+
[workforce identity federation](https://cloud.google.com/iam/docs/workforce-identity-federation), or a
48+
[service account key](https://cloud.google.com/docs/authentication/provide-credentials-adc#local-key).
8249

83-
### Configuration
50+
Note: Service account keys are a security risk if not managed correctly. You should
51+
[choose a more secure alternative to service account keys](https://cloud.google.com/docs/authentication#auth-decision-tree)
52+
whenever possible.
8453

85-
The path to the **Credentials JSON** file can be configured instead of storing
86-
it in an environment variable. Either on an individual client initialization:
54+
To configure a credentials file for an individual client initialization:
8755

8856
```ruby
8957
require "google/analytics/admin/v1alpha"
9058

9159
client = ::Google::Analytics::Admin::V1alpha::AnalyticsAdminService::Client.new do |config|
92-
config.credentials = "path/to/keyfile.json"
60+
config.credentials = "path/to/credentialfile.json"
9361
end
9462
```
9563

96-
Or globally for all clients:
64+
To configure a credentials file globally for all clients:
9765

9866
```ruby
9967
require "google/analytics/admin/v1alpha"
10068

10169
::Google::Analytics::Admin::V1alpha::AnalyticsAdminService::Client.configure do |config|
102-
config.credentials = "path/to/keyfile.json"
70+
config.credentials = "path/to/credentialfile.json"
10371
end
10472

10573
client = ::Google::Analytics::Admin::V1alpha::AnalyticsAdminService::Client.new
10674
```
10775

108-
### Cloud SDK
76+
### Environment Variables
10977

110-
This option allows for an easy way to authenticate during development. If
111-
credentials are not provided in code or in environment variables, then Cloud SDK
112-
credentials are discovered.
78+
You can also use an environment variable to provide a JSON credentials file.
79+
The environment variable can contain a path to the credentials file or, for
80+
environments such as Docker containers where writing files is not encouraged,
81+
you can include the credentials file itself.
11382

114-
To configure your system for this, simply:
83+
The JSON file can contain credentials created for
84+
[workload identity federation](https://cloud.google.com/iam/docs/workload-identity-federation),
85+
[workforce identity federation](https://cloud.google.com/iam/docs/workforce-identity-federation), or a
86+
[service account key](https://cloud.google.com/docs/authentication/provide-credentials-adc#local-key).
11587

116-
1. [Download and install the Cloud SDK](https://cloud.google.com/sdk)
117-
2. Authenticate using OAuth 2.0 `$ gcloud auth application-default login`
118-
3. Write code as if already authenticated.
88+
Note: Service account keys are a security risk if not managed correctly. You should
89+
[choose a more secure alternative to service account keys](https://cloud.google.com/docs/authentication#auth-decision-tree)
90+
whenever possible.
91+
92+
The environment variables that google-analytics-admin-v1alpha
93+
checks for credentials are:
11994

120-
**NOTE:** This is _not_ recommended for running in production. The Cloud SDK
121-
*should* only be used during development.
95+
* `GOOGLE_CLOUD_CREDENTIALS` - Path to JSON file, or JSON contents
96+
* `GOOGLE_APPLICATION_CREDENTIALS` - Path to JSON file
12297

123-
## Creating a Service Account
98+
```ruby
99+
require "google/analytics/admin/v1alpha"
124100

125-
Google Cloud requires **Service Account Credentials** to
126-
connect to the APIs. You will use the **JSON key file** to
127-
connect to most services with google-analytics-admin-v1alpha.
101+
ENV["GOOGLE_APPLICATION_CREDENTIALS"] = "path/to/credentialfile.json"
128102

129-
If you are not running this client within
130-
[Google Cloud Platform environments](#google-cloud-platform-environments), you
131-
need a Google Developers service account.
103+
client = ::Google::Analytics::Admin::V1alpha::AnalyticsAdminService::Client.new
104+
```
132105

133-
1. Visit the [Google Cloud Console](https://console.cloud.google.com/project).
134-
2. Create a new project or click on an existing project.
135-
3. Activate the menu in the upper left and select **APIs & Services**. From
136-
here, you will enable the APIs that your application requires.
106+
### Local ADC file
137107

138-
*Note: You may need to enable billing in order to use these services.*
108+
You can set up a local ADC file with your user credentials for authentication during
109+
development. If credentials are not provided in code or in environment variables,
110+
then the local ADC credentials are discovered.
139111

140-
4. Select **Credentials** from the side navigation.
112+
Follow the steps in [Quickstart](#quickstart) to set up a local ADC file.
141113

142-
Find the "Create credentials" drop down near the top of the page, and select
143-
"Service account" to be guided through downloading a new JSON key file.
114+
### Google Cloud Platform environments
144115

145-
If you want to re-use an existing service account, you can easily generate a
146-
new key file. Just select the account you wish to re-use, click the pencil
147-
tool on the right side to edit the service account, select the **Keys** tab,
148-
and then select **Add Key**.
116+
When running on Google Cloud Platform (GCP), including Google Compute Engine
117+
(GCE), Google Kubernetes Engine (GKE), Google App Engine (GAE), Google Cloud
118+
Functions (GCF) and Cloud Run, credentials are retrieved from the attached
119+
service account automatically. Code should be written as if already authenticated.
149120

150-
The key file you download will be used by this library to authenticate API
151-
requests and should be stored in a secure location.
121+
For more information, see
122+
[Set up ADC for Google Cloud services](https://cloud.google.com/docs/authentication/provide-credentials-adc#attached-sa).

google-analytics-admin-v1alpha/google-analytics-admin-v1alpha.gemspec

+1-1
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ Gem::Specification.new do |gem|
2323

2424
gem.required_ruby_version = ">= 2.6"
2525

26-
gem.add_dependency "gapic-common", ">= 0.20.0", "< 2.a"
26+
gem.add_dependency "gapic-common", ">= 0.21.1", "< 2.a"
2727
gem.add_dependency "google-cloud-errors", "~> 1.0"
2828

2929
gem.add_development_dependency "google-style", "~> 1.26.3"

google-analytics-admin-v1alpha/lib/google/analytics/admin/v1alpha/analytics_admin_service/client.rb

+31-8
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,9 @@ module AnalyticsAdminService
3030
# Service Interface for the Analytics Admin API (GA4).
3131
#
3232
class Client
33+
# @private
34+
DEFAULT_ENDPOINT_TEMPLATE = "analyticsadmin.$UNIVERSE_DOMAIN$"
35+
3336
include Paths
3437

3538
# @private
@@ -135,6 +138,15 @@ def configure
135138
@config
136139
end
137140

141+
##
142+
# The effective universe domain
143+
#
144+
# @return [String]
145+
#
146+
def universe_domain
147+
@analytics_admin_service_stub.universe_domain
148+
end
149+
138150
##
139151
# Create a new AnalyticsAdminService client object.
140152
#
@@ -168,8 +180,9 @@ def initialize
168180
credentials = @config.credentials
169181
# Use self-signed JWT if the endpoint is unchanged from default,
170182
# but only if the default endpoint does not have a region prefix.
171-
enable_self_signed_jwt = @config.endpoint == Configuration::DEFAULT_ENDPOINT &&
172-
[email protected](".").first.include?("-")
183+
enable_self_signed_jwt = @config.endpoint.nil? ||
184+
(@config.endpoint == Configuration::DEFAULT_ENDPOINT &&
185+
[email protected](".").first.include?("-"))
173186
credentials ||= Credentials.default scope: @config.scope,
174187
enable_self_signed_jwt: enable_self_signed_jwt
175188
if credentials.is_a?(::String) || credentials.is_a?(::Hash)
@@ -180,8 +193,10 @@ def initialize
180193

181194
@analytics_admin_service_stub = ::Gapic::ServiceStub.new(
182195
::Google::Analytics::Admin::V1alpha::AnalyticsAdminService::Stub,
183-
credentials: credentials,
184-
endpoint: @config.endpoint,
196+
credentials: credentials,
197+
endpoint: @config.endpoint,
198+
endpoint_template: DEFAULT_ENDPOINT_TEMPLATE,
199+
universe_domain: @config.universe_domain,
185200
channel_args: @config.channel_args,
186201
interceptors: @config.interceptors,
187202
channel_pool_config: @config.channel_pool
@@ -12165,9 +12180,9 @@ def delete_subproperty_event_filter request, options = nil
1216512180
# end
1216612181
#
1216712182
# @!attribute [rw] endpoint
12168-
# The hostname or hostname:port of the service endpoint.
12169-
# Defaults to `"analyticsadmin.googleapis.com"`.
12170-
# @return [::String]
12183+
# A custom service endpoint, as a hostname or hostname:port. The default is
12184+
# nil, indicating to use the default endpoint in the current universe domain.
12185+
# @return [::String,nil]
1217112186
# @!attribute [rw] credentials
1217212187
# Credentials to send with calls. You may provide any of the following types:
1217312188
# * (`String`) The path to a service account key file in JSON format
@@ -12213,13 +12228,20 @@ def delete_subproperty_event_filter request, options = nil
1221312228
# @!attribute [rw] quota_project
1221412229
# A separate project against which to charge quota.
1221512230
# @return [::String]
12231+
# @!attribute [rw] universe_domain
12232+
# The universe domain within which to make requests. This determines the
12233+
# default endpoint URL. The default value of nil uses the environment
12234+
# universe (usually the default "googleapis.com" universe).
12235+
# @return [::String,nil]
1221612236
#
1221712237
class Configuration
1221812238
extend ::Gapic::Config
1221912239

12240+
# @private
12241+
# The endpoint specific to the default "googleapis.com" universe. Deprecated.
1222012242
DEFAULT_ENDPOINT = "analyticsadmin.googleapis.com"
1222112243

12222-
config_attr :endpoint, DEFAULT_ENDPOINT, ::String
12244+
config_attr :endpoint, nil, ::String, nil
1222312245
config_attr :credentials, nil do |value|
1222412246
allowed = [::String, ::Hash, ::Proc, ::Symbol, ::Google::Auth::Credentials, ::Signet::OAuth2::Client, nil]
1222512247
allowed += [::GRPC::Core::Channel, ::GRPC::Core::ChannelCredentials] if defined? ::GRPC
@@ -12234,6 +12256,7 @@ class Configuration
1223412256
config_attr :metadata, nil, ::Hash, nil
1223512257
config_attr :retry_policy, nil, ::Hash, ::Proc, nil
1223612258
config_attr :quota_project, nil, ::String, nil
12259+
config_attr :universe_domain, nil, ::String, nil
1223712260

1223812261
# @private
1223912262
def initialize parent_config = nil

0 commit comments

Comments
 (0)