Module: Common::Utils::CredentialsInfo
- Defined in:
- lib/fluent/plugin/common.rb
Overview
TODO: This functionality should eventually be available in another library, but implement it ourselves for now.
Class Method Summary collapse
-
.extract_project_id(str) ⇒ Object
Extracts the project id (either name or number) from str and returns it (as a string) on success, or nil on failure.
-
.project_id ⇒ Object
Determine the project ID from the credentials, if possible.
Class Method Details
.extract_project_id(str) ⇒ Object
Extracts the project id (either name or number) from str and returns it (as a string) on success, or nil on failure.
Recognizes IAM format ([email protected]) as well as the legacy format with a project number at the front of the string, terminated by a dash (-) which is not part of the ID, i.e.: <PROJECT_ID>-<OTHER_PARTS>.apps.googleusercontent.com
376 377 378 379 380 381 382 383 |
# File 'lib/fluent/plugin/common.rb', line 376 def self.extract_project_id(str) [/^.*@(?<project_id>.+)\.iam\.gserviceaccount\.com/, /^(?<project_id>\d+)-/].each do |exp| match_data = exp.match(str) return match_data['project_id'] unless match_data.nil? end nil end |
.project_id ⇒ Object
Determine the project ID from the credentials, if possible. Returns the project ID (as a string) on success, or nil on failure.
353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 |
# File 'lib/fluent/plugin/common.rb', line 353 def self.project_id creds = Google::Auth.get_application_default(LOGGING_SCOPE) if creds.respond_to?(:project_id) return creds.project_id if creds.project_id end if creds.issuer id = extract_project_id(creds.issuer) return id unless id.nil? end if creds.client_id id = extract_project_id(creds.client_id) return id unless id.nil? end nil end |