gaargh 0.1.0 → 0.1.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 5be00f9025dc2da224ad903119e28ffe8ff2d2e6ed1817abeec4df7df9db3b89
4
- data.tar.gz: 82688fb326f5c034221b4d986a01af2dd6779e67df7e45bea859bbc34575024b
3
+ metadata.gz: 238c7db86824931e9ef8cae0ce7812102daeabcaaec094981b586c8b06664c5f
4
+ data.tar.gz: 26e4964113ad46e52312cfdd9225c006d8f5e034c31062cb5088512ef815f1b6
5
5
  SHA512:
6
- metadata.gz: b4d5be9570636aa6aa6991f82a09ec359790d43e2ec305cb95276fe349a9f48ec0ec99f98a319ca71f96f9d22ae03612878838e445f4c6b593cd2a2d5dc629df
7
- data.tar.gz: e3711674b834fab31ba5d2c003cd4049d17cc9455d15226599e5049bb5ee640075282d72931101b0f349f85c38da87287a811bc0162ed41d66aaab9e51a1d03c
6
+ metadata.gz: 9c39e9fd9e4b8b2429ce11248002465f5dd8cee571e5717cc5893c4f35c55c4ff9d80755c2e6eeec81631a701afe7f960d1b7051fbbda252eaef164b777d4d3e
7
+ data.tar.gz: fd7f72d0b325a2ff208278a93c5d02b267f3ab3017eea979a8b25ffe6ef369dfa414dbeb4dba805d84bf00b4db34b881c8b6198909f829c39c51d446447e42a6
data/gaargh.gemspec CHANGED
@@ -34,6 +34,8 @@ Gem::Specification.new do |spec|
34
34
 
35
35
  # Uncomment to register a new dependency of your gem
36
36
  spec.add_dependency "google-apis-iamcredentials_v1", "~> 0.17"
37
+ spec.add_dependency "signet", "~> 0.17"
38
+
37
39
 
38
40
  # For more information and examples about making a new gem, check out our
39
41
  # guide at: https://bundler.io/guides/creating_gem.html
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Gaargh
4
- VERSION = "0.1.0"
4
+ VERSION = "0.1.3"
5
5
  end
data/lib/gaargh.rb CHANGED
@@ -19,6 +19,7 @@ module Gaargh
19
19
  #
20
20
  # @param [String] service_account_email - the email of the service account to impersonate (e.g. 'my-service-account@my-project-id.iam.gserviceaccount.com')
21
21
  # @param [String] lifetime - the lifetime of the access token in seconds (default: 3600s)
22
+ # @param [Array] scopes - the scopes to be used with the access token (default: ['https://www.googleapis.com/auth/cloud-platform'])
22
23
  # @return [Signet::OAuth2::Client] client - the client to be used with GCP clients
23
24
  def self.impersonate_service_account(service_account_email: '', lifetime: '3600s', scopes: ['https://www.googleapis.com/auth/cloud-platform'])
24
25
  creds_service = Google::Apis::IamcredentialsV1::IAMCredentialsService.new
@@ -29,8 +30,16 @@ module Gaargh
29
30
  lifetime: lifetime,
30
31
  scope: ['https://www.googleapis.com/auth/cloud-platform']
31
32
  )
33
+ # The resource name of the service account
34
+ service_account_resourec_name = "projects/-/serviceAccounts/#{service_account_email}"
35
+
36
+ begin
37
+ impersonated_account = creds_service.generate_service_account_access_token(service_account_resourec_name, generate_token_request)
38
+ rescue Google::Apis::ClientError => e
39
+ logger.error("Service account #{service_account_resourec_name} does not exist or you do not have permissions.")
40
+ raise e
41
+ end
32
42
 
33
- impersonated_account = creds_service.generate_service_account_access_token("projects/-/serviceAccounts/#{service_account_email}", generate_token_request)
34
43
  client = Signet::OAuth2::Client.new
35
44
  client.access_token = impersonated_account.access_token
36
45
  return client
@@ -53,7 +62,7 @@ module Gaargh
53
62
  data = JSON.parse(response.body)
54
63
  expiration_time = Time.at(data['exp'].to_i)
55
64
  logger.info("Token expires at: #{expiration_time}")
56
- pp data
65
+ logger.debug("token_info: #{data}")
57
66
  token_info = {
58
67
  token_data: data,
59
68
  token_expiration_time: expiration_time
@@ -65,7 +74,7 @@ module Gaargh
65
74
  response_code: response.code,
66
75
  response_body: response.body
67
76
  }
68
- logger.info("Error retrieving token information: response.code: #{response.code}, response.body: #{response.body}")
77
+ logger.error("Error retrieving token information: response.code: #{response.code}, response.body: #{response.body}")
69
78
  return error_hash
70
79
  end
71
80
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: gaargh
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.1.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - ml
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2023-07-13 00:00:00.000000000 Z
11
+ date: 2023-08-10 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: google-apis-iamcredentials_v1
@@ -24,6 +24,20 @@ dependencies:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
26
  version: '0.17'
27
+ - !ruby/object:Gem::Dependency
28
+ name: signet
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '0.17'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '0.17'
27
41
  description: GCP account impersonation helper.
28
42
  email:
29
43
  executables: []