fog-google 1.8.2 → 1.9.0
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 +4 -4
- data/.fog.example +1 -3
- data/CHANGELOG.md +29 -0
- data/CONTRIBUTING.md +0 -1
- data/README.md +14 -0
- data/ci/README.md +6 -7
- data/ci/credentials.yml.template +0 -2
- data/ci/pipeline.yml +0 -9
- data/ci/tasks/run-int.sh +0 -2
- data/ci/tasks/run-int.yml +1 -1
- data/lib/fog/compute/google.rb +0 -1
- data/lib/fog/dns/google.rb +1 -1
- data/lib/fog/google/monitoring.rb +2 -1
- data/lib/fog/google/pubsub.rb +1 -1
- data/lib/fog/google/shared.rb +108 -53
- data/lib/fog/google/sql.rb +1 -1
- data/lib/fog/google/version.rb +1 -1
- data/lib/fog/storage/google_json.rb +1 -1
- data/test/integration/test_authentication.rb +0 -7
- data/test/unit/storage/test_json_requests.rb +0 -1
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 870ce94387132895473e52fcee3adc9cbce052c5
|
4
|
+
data.tar.gz: aa4f7954f7c441b6bcb4f4d32c49e8ab8ff78ac5
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 6426e7e238fe7592575516799ea209c4019d2807519efb91830a694fda2ccf733432e9c28b6ae91f3311b28dd80a97015663d1a9fa0552bc67f15095c4f2fd86
|
7
|
+
data.tar.gz: f19bbc71aa3bba9bb6e859cb82767e64c501a5638e962a159fa6a6baa3bed9a25bd3ed69de084773dece607021eb139777fcdf30cbe0d2d137c712de888849f3
|
data/.fog.example
CHANGED
@@ -15,10 +15,8 @@
|
|
15
15
|
# START GOOGLE CONFIG
|
16
16
|
my_google_credentials:
|
17
17
|
google_project: my-project-id
|
18
|
-
google_client_email: xxxxxxxxxxx-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx@developer.gserviceaccount.com
|
19
18
|
google_json_key_location: /path/to/my-project-xxxxxxxxxxxx.json
|
20
|
-
# You can also provide service account credentials with `google_json_key_string`
|
21
|
-
# with `google_key_location` and `google_key_string` for P12 private keys.
|
19
|
+
# You can also provide service account credentials with `google_json_key_string`
|
22
20
|
# If so, uncomment the two following lines.
|
23
21
|
# HMAC credentials follow a similar format:
|
24
22
|
#google_storage_access_key_id: GOOGXXXXXXXXXXXXXXXX
|
data/CHANGELOG.md
CHANGED
@@ -6,6 +6,35 @@ This project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.html
|
|
6
6
|
|
7
7
|
## Next
|
8
8
|
|
9
|
+
## 1.9.0
|
10
|
+
|
11
|
+
### User-facing
|
12
|
+
|
13
|
+
#### Added
|
14
|
+
|
15
|
+
- \#442 Add support for Application Default credentials [mavin]
|
16
|
+
- This change allows the use of Application Default Credentials so that end
|
17
|
+
users can authenticate without a service account for development, testing,
|
18
|
+
and one-off interactions by using `:google_application_default`client
|
19
|
+
option. See README for more details.
|
20
|
+
|
21
|
+
### Fixed
|
22
|
+
|
23
|
+
- \#444 Remove deprecated `google_client_email` option from client parameters
|
24
|
+
[temikus]
|
25
|
+
- \#446 Updating service parameters to avoid "unrecognised parameter" warnings
|
26
|
+
when initializing Fog client with application default auth [temikus]
|
27
|
+
|
28
|
+
### Development changes
|
29
|
+
|
30
|
+
#### Fixed
|
31
|
+
|
32
|
+
- \#441 Update CI pipeline to Concourse V4 [temikus]
|
33
|
+
- \#444 Rework client authentication workflow [temikus]
|
34
|
+
- Separate different auth streams into private helper methods
|
35
|
+
- Add a fallback auth option - Google Application Default credentials
|
36
|
+
- Minor fixes and performance optimizations
|
37
|
+
|
9
38
|
## 1.8.2
|
10
39
|
|
11
40
|
### User-facing
|
data/CONTRIBUTING.md
CHANGED
@@ -94,7 +94,6 @@ make sure you have a `:test` credential in `~/.fog`, something like:
|
|
94
94
|
```
|
95
95
|
test:
|
96
96
|
google_project: my-project
|
97
|
-
google_client_email: xxxxxxxxxxxxx-xxxxxxxxxxxxx@developer.gserviceaccount.com
|
98
97
|
google_json_key_location: /path/to/my-project-xxxxxxxxxxxxx.json
|
99
98
|
```
|
100
99
|
|
data/README.md
CHANGED
@@ -94,6 +94,20 @@ cat .fog.example >> ~/.fog # appends the sample configuration
|
|
94
94
|
vim ~/.fog # edit file with yout config
|
95
95
|
```
|
96
96
|
|
97
|
+
As of `1.9.0` fog-google supports Google [application default credentials (ADC)](https://cloud.google.com/docs/authentication/production)
|
98
|
+
The auth method uses [Google::Auth.get_application_default](https://www.rubydoc.info/gems/googleauth/0.6.7/Google%2FAuth.get_application_default)
|
99
|
+
under the hood.
|
100
|
+
|
101
|
+
Example workflow for a GCE instance with [service account scopes](https://cloud.google.com/compute/docs/access/create-enable-service-accounts-for-instances)
|
102
|
+
defined:
|
103
|
+
|
104
|
+
```
|
105
|
+
> connection = Fog::Compute::Google.new(:google_project => "my-project", :google_application_default => true)
|
106
|
+
=> #<Fog::Compute::Google::Real:32157700...
|
107
|
+
> connection.servers
|
108
|
+
=> [ <Fog::Compute::Google::Server ... ]
|
109
|
+
```
|
110
|
+
|
97
111
|
#### SSH-ing into instances
|
98
112
|
|
99
113
|
If you want to be able to bootstrap SSH-able instances, (using `servers.bootstrap`,) be sure you have a key in `~/.ssh/id_rsa` and `~/.ssh/id_rsa.pub`
|
data/ci/README.md
CHANGED
@@ -9,8 +9,6 @@ PR when the test completes.
|
|
9
9
|
|
10
10
|
In order to run the fog-google Concourse Pipeline you must have an existing
|
11
11
|
[Concourse](http://concourse.ci) environment.
|
12
|
-
See [Deploying Concourse on Google Compute Engine](https://github.com/cloudfoundry-incubator/bosh-google-cpi-release/blob/master/docs/concourse/README.md)
|
13
|
-
for instructions.
|
14
12
|
|
15
13
|
To deploy the pipeline:
|
16
14
|
|
@@ -28,13 +26,13 @@ file. See [Credentials Requirements](#credentials-requirements) for specific ins
|
|
28
26
|
* Set the fog-google pipeline:
|
29
27
|
|
30
28
|
```
|
31
|
-
fly -t fog-ci set-pipeline -p
|
29
|
+
fly -t fog-ci set-pipeline -p pr-integration -c pipeline.yml -l credentials.yml
|
32
30
|
```
|
33
31
|
|
34
32
|
* Unpause the fog-google pipeline:
|
35
33
|
|
36
34
|
```
|
37
|
-
fly -t fog-ci unpause-pipeline -p
|
35
|
+
fly -t fog-ci unpause-pipeline -p pr-integration
|
38
36
|
```
|
39
37
|
|
40
38
|
## Credentials Requirements
|
@@ -42,18 +40,19 @@ fly -t fog-ci unpause-pipeline -p fog-google
|
|
42
40
|
Several external pieces of authentication are needed for credentials.yml
|
43
41
|
|
44
42
|
1. A JSON Service Account File for a service account with at least Editor access to the project.
|
45
|
-
* To get a Service Account File, see [here](https://developers.google.com/identity/protocols/OAuth2ServiceAccount#creatinganaccount)
|
43
|
+
* To get a Service Account File, see [here](https://developers.google.com/identity/protocols/OAuth2ServiceAccount#creatinganaccount)
|
46
44
|
and create using the Project/Editor role.
|
47
45
|
|
48
46
|
1. A [Github Access Token](https://github.com/blog/1509-personal-api-tokens) with at least
|
49
47
|
`repo:status` access and a private key with push access to the `fog/fog-google` repositoy.
|
50
48
|
|
49
|
+
1. A [Codecov.io](https://codecov.io/) token for tracking test coverage.
|
50
|
+
|
51
51
|
These items are equivalent to your login credentials for their resources.
|
52
52
|
|
53
53
|
## Login Gotchas
|
54
54
|
|
55
|
-
*
|
56
|
-
trust the provided certificate.
|
55
|
+
* Our concourse pipeline is using GitHub auth, providing access to manipulate the pipeline to the members of the [fog-google team](https://github.com/orgs/fog/teams/fog-google), managed through the OAuth application managed by [fog-google bot](https://github.com/fog-google-bot).
|
57
56
|
|
58
57
|
* If logging into a specific team, ie `fog-google`, use `--team-name fog-google` to specify that.
|
59
58
|
|
data/ci/credentials.yml.template
CHANGED
data/ci/pipeline.yml
CHANGED
@@ -16,7 +16,6 @@ jobs:
|
|
16
16
|
codecov_token: {{codecov_token}}
|
17
17
|
google_project: {{google_project}}
|
18
18
|
google_json_key_data: {{google_json_key_data}}
|
19
|
-
google_client_email: {{google_client_email}}
|
20
19
|
on_failure:
|
21
20
|
put: pull-request
|
22
21
|
params:
|
@@ -40,7 +39,6 @@ jobs:
|
|
40
39
|
codecov_token: {{codecov_token}}
|
41
40
|
google_project: {{google_project}}
|
42
41
|
google_json_key_data: {{google_json_key_data}}
|
43
|
-
google_client_email: {{google_client_email}}
|
44
42
|
on_failure:
|
45
43
|
put: pull-request
|
46
44
|
params:
|
@@ -64,7 +62,6 @@ jobs:
|
|
64
62
|
codecov_token: {{codecov_token}}
|
65
63
|
google_project: {{google_project}}
|
66
64
|
google_json_key_data: {{google_json_key_data}}
|
67
|
-
google_client_email: {{google_client_email}}
|
68
65
|
on_failure:
|
69
66
|
put: pull-request
|
70
67
|
params:
|
@@ -88,7 +85,6 @@ jobs:
|
|
88
85
|
codecov_token: {{codecov_token}}
|
89
86
|
google_project: {{google_project}}
|
90
87
|
google_json_key_data: {{google_json_key_data}}
|
91
|
-
google_client_email: {{google_client_email}}
|
92
88
|
on_failure:
|
93
89
|
put: pull-request
|
94
90
|
params:
|
@@ -112,7 +108,6 @@ jobs:
|
|
112
108
|
codecov_token: {{codecov_token}}
|
113
109
|
google_project: {{google_project}}
|
114
110
|
google_json_key_data: {{google_json_key_data}}
|
115
|
-
google_client_email: {{google_client_email}}
|
116
111
|
on_failure:
|
117
112
|
put: pull-request
|
118
113
|
params:
|
@@ -136,7 +131,6 @@ jobs:
|
|
136
131
|
codecov_token: {{codecov_token}}
|
137
132
|
google_project: {{google_project}}
|
138
133
|
google_json_key_data: {{google_json_key_data}}
|
139
|
-
google_client_email: {{google_client_email}}
|
140
134
|
on_failure:
|
141
135
|
put: pull-request
|
142
136
|
params:
|
@@ -160,7 +154,6 @@ jobs:
|
|
160
154
|
codecov_token: {{codecov_token}}
|
161
155
|
google_project: {{google_project}}
|
162
156
|
google_json_key_data: {{google_json_key_data}}
|
163
|
-
google_client_email: {{google_client_email}}
|
164
157
|
on_failure:
|
165
158
|
put: pull-request
|
166
159
|
params:
|
@@ -184,7 +177,6 @@ jobs:
|
|
184
177
|
codecov_token: {{codecov_token}}
|
185
178
|
google_project: {{google_project}}
|
186
179
|
google_json_key_data: {{google_json_key_data}}
|
187
|
-
google_client_email: {{google_client_email}}
|
188
180
|
on_failure:
|
189
181
|
put: pull-request
|
190
182
|
params:
|
@@ -208,7 +200,6 @@ jobs:
|
|
208
200
|
codecov_token: {{codecov_token}}
|
209
201
|
google_project: {{google_project}}
|
210
202
|
google_json_key_data: {{google_json_key_data}}
|
211
|
-
google_client_email: {{google_client_email}}
|
212
203
|
on_failure:
|
213
204
|
put: pull-request
|
214
205
|
params:
|
data/ci/tasks/run-int.sh
CHANGED
@@ -13,7 +13,6 @@ source ci/tasks/utils.sh
|
|
13
13
|
popd > /dev/null
|
14
14
|
|
15
15
|
check_param google_project
|
16
|
-
check_param google_client_email
|
17
16
|
check_param google_json_key_data
|
18
17
|
check_param rake_task
|
19
18
|
check_param codecov_token
|
@@ -23,7 +22,6 @@ echo $google_json_key_data > `pwd`/service_account_key.json
|
|
23
22
|
cat >~/.fog <<EOL
|
24
23
|
test:
|
25
24
|
google_project: ${google_project}
|
26
|
-
google_client_email: ${google_client_email}
|
27
25
|
google_json_key_location: `pwd`/service_account_key.json
|
28
26
|
EOL
|
29
27
|
|
data/ci/tasks/run-int.yml
CHANGED
data/lib/fog/compute/google.rb
CHANGED
data/lib/fog/dns/google.rb
CHANGED
data/lib/fog/google/pubsub.rb
CHANGED
data/lib/fog/google/shared.rb
CHANGED
@@ -20,16 +20,13 @@ module Fog
|
|
20
20
|
# Initializes the Google API Client
|
21
21
|
#
|
22
22
|
# @param [Hash] options Google API options
|
23
|
+
# @option options [Bool] :google_application_default Explicitly use application default credentials
|
23
24
|
# @option options [Google::Auth|Signet] :google_auth Manually created authorization to use
|
24
|
-
# @option options [String] :google_client_email A @developer.gserviceaccount.com email address to use
|
25
|
-
# @option options [String] :google_key_location The location of a pkcs12 key file
|
26
|
-
# @option options [String] :google_key_string The content of the pkcs12 key file
|
27
25
|
# @option options [String] :google_json_key_location The location of a JSON key file
|
28
26
|
# @option options [String] :google_json_key_string The content of the JSON key file
|
29
27
|
# @option options [String] :google_api_scope_url The access scope URLs
|
30
28
|
# @option options [String] :app_name The app name to set in the user agent
|
31
29
|
# @option options [String] :app_version The app version to set in the user agent
|
32
|
-
# @option options [Google::APIClient] :google_client Existing Google API Client
|
33
30
|
# @option options [Hash] :google_client_options A hash to send additional options to Google API Client
|
34
31
|
# @return [Google::APIClient] Google API Client
|
35
32
|
# @raises [ArgumentError] If there is any missing argument
|
@@ -50,25 +47,7 @@ module Fog
|
|
50
47
|
raise error
|
51
48
|
end
|
52
49
|
|
53
|
-
|
54
|
-
# in https://github.com/google/google-api-ruby-client/ version 0.9.
|
55
|
-
if options[:google_client]
|
56
|
-
raise ArgumentError.new("Deprecated argument no longer works: google_client")
|
57
|
-
end
|
58
|
-
|
59
|
-
# They can also no longer use pkcs12 files, because Google's new auth
|
60
|
-
# library doesn't support them either.
|
61
|
-
if options[:google_key_location]
|
62
|
-
raise ArgumentError.new("Deprecated argument no longer works: google_key_location")
|
63
|
-
end
|
64
|
-
if options[:google_key_string]
|
65
|
-
raise ArgumentError.new("Deprecated argument no longer works: google_key_string")
|
66
|
-
end
|
67
|
-
|
68
|
-
# Validate required arguments
|
69
|
-
unless options[:google_api_scope_url]
|
70
|
-
raise ArgumentError.new("Missing required arguments: google_api_scope_url")
|
71
|
-
end
|
50
|
+
validate_client_options(options)
|
72
51
|
|
73
52
|
application_name = "fog"
|
74
53
|
unless options[:app_name].nil?
|
@@ -78,41 +57,21 @@ module Fog
|
|
78
57
|
::Google::Apis::ClientOptions.default.application_name = application_name
|
79
58
|
::Google::Apis::ClientOptions.default.application_version = Fog::Google::VERSION
|
80
59
|
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
json_key = File.open(json_key_location, "r", &:read)
|
86
|
-
else
|
87
|
-
json_key = options[:google_json_key_string]
|
88
|
-
end
|
89
|
-
|
90
|
-
json_key_hash = Fog::JSON.decode(json_key)
|
91
|
-
unless json_key_hash.key?("client_email") || json_key_hash.key?("private_key")
|
92
|
-
raise ArgumentError.new("Invalid Google JSON key")
|
93
|
-
end
|
94
|
-
|
95
|
-
options[:google_client_email] = json_key_hash["client_email"]
|
96
|
-
unless options[:google_client_email]
|
97
|
-
raise ArgumentError.new("Missing required arguments: google_client_email")
|
98
|
-
end
|
60
|
+
if ENV["DEBUG"]
|
61
|
+
::Google::Apis.logger = ::Logger.new(::STDERR)
|
62
|
+
::Google::Apis.logger.level = ::Logger::DEBUG
|
63
|
+
end
|
99
64
|
|
100
|
-
|
101
|
-
::Google::Apis.logger = ::Logger.new(::STDERR)
|
102
|
-
::Google::Apis.logger.level = ::Logger::DEBUG
|
103
|
-
end
|
65
|
+
auth = nil
|
104
66
|
|
105
|
-
|
106
|
-
|
107
|
-
:scope => options[:google_api_scope_url]
|
108
|
-
)
|
67
|
+
if options[:google_json_key_location] || options[:google_json_key_string]
|
68
|
+
auth = process_key_auth(options)
|
109
69
|
elsif options[:google_auth]
|
110
70
|
auth = options[:google_auth]
|
71
|
+
elsif options[:google_application_default]
|
72
|
+
auth = process_application_default_auth(options)
|
111
73
|
else
|
112
|
-
|
113
|
-
"Missing required arguments: google_json_key_location, "\
|
114
|
-
"google_json_key_string or google_auth"
|
115
|
-
)
|
74
|
+
auth = process_fallback_auth(options)
|
116
75
|
end
|
117
76
|
|
118
77
|
::Google::Apis::RequestOptions.default.authorization = auth
|
@@ -188,6 +147,102 @@ module Fog
|
|
188
147
|
|
189
148
|
response
|
190
149
|
end
|
150
|
+
|
151
|
+
private
|
152
|
+
|
153
|
+
# Helper method to process application default authentication
|
154
|
+
#
|
155
|
+
# @param [Hash] options - client options hash
|
156
|
+
# @return [Google::Auth::DefaultCredentials] - google auth object
|
157
|
+
def process_application_default_auth(options)
|
158
|
+
::Google::Auth.get_application_default(options[:google_api_scope_url])
|
159
|
+
end
|
160
|
+
|
161
|
+
# Helper method to process fallback authentication
|
162
|
+
# Current fallback is application default authentication
|
163
|
+
#
|
164
|
+
# @param [Hash] options - client options hash
|
165
|
+
# @return [Google::Auth::DefaultCredentials] - google auth object
|
166
|
+
def process_fallback_auth(options)
|
167
|
+
Fog::Logger.warning(
|
168
|
+
"Didn't detect any client auth settings, " \
|
169
|
+
"trying to fall back to application default credentials..."
|
170
|
+
)
|
171
|
+
begin
|
172
|
+
return process_application_default_auth(options)
|
173
|
+
rescue
|
174
|
+
raise Fog::Errors::Error.new(
|
175
|
+
"Fallback auth failed, could not configure authentication for Fog client.\n" \
|
176
|
+
"Check your auth options, must be one of:\n" \
|
177
|
+
"- :google_json_key_location,\n" \
|
178
|
+
"- :google_json_key_string,\n" \
|
179
|
+
"- :google_auth,\n" \
|
180
|
+
"- :google_application_default,\n" \
|
181
|
+
"If credentials are valid - please, file a bug to fog-google." \
|
182
|
+
)
|
183
|
+
end
|
184
|
+
end
|
185
|
+
|
186
|
+
# Helper method to process key authentication
|
187
|
+
#
|
188
|
+
# @param [Hash] options - client options hash
|
189
|
+
# @return [Google::Auth::ServiceAccountCredentials] - google auth object
|
190
|
+
def process_key_auth(options)
|
191
|
+
if options[:google_json_key_location]
|
192
|
+
json_key = File.read(File.expand_path(options[:google_json_key_location]))
|
193
|
+
elsif options[:google_json_key_string]
|
194
|
+
json_key = options[:google_json_key_string]
|
195
|
+
end
|
196
|
+
|
197
|
+
validate_json_credentials(json_key)
|
198
|
+
|
199
|
+
::Google::Auth::ServiceAccountCredentials.make_creds(
|
200
|
+
:json_key_io => StringIO.new(json_key),
|
201
|
+
:scope => options[:google_api_scope_url]
|
202
|
+
)
|
203
|
+
end
|
204
|
+
|
205
|
+
# Helper method to sort out deprecated and missing auth options
|
206
|
+
#
|
207
|
+
# @param [Hash] options - client options hash
|
208
|
+
def validate_client_options(options)
|
209
|
+
# Users can no longer provide their own clients due to rewrite of auth
|
210
|
+
# in https://github.com/google/google-api-ruby-client/ version 0.9.
|
211
|
+
if options[:google_client]
|
212
|
+
raise ArgumentError.new("Deprecated argument no longer works: google_client")
|
213
|
+
end
|
214
|
+
|
215
|
+
# They can also no longer use pkcs12 files, because Google's new auth
|
216
|
+
# library doesn't support them either.
|
217
|
+
if options[:google_key_location]
|
218
|
+
raise ArgumentError.new("Deprecated auth method no longer works: google_key_location")
|
219
|
+
end
|
220
|
+
if options[:google_key_string]
|
221
|
+
raise ArgumentError.new("Deprecated auth method no longer works: google_key_string")
|
222
|
+
end
|
223
|
+
|
224
|
+
# Google client email option is no longer needed
|
225
|
+
if options[:google_client_email]
|
226
|
+
Fog::Logger.deprecation("Argument no longer needed for auth: google_client_email")
|
227
|
+
end
|
228
|
+
|
229
|
+
# Validate required arguments
|
230
|
+
unless options[:google_api_scope_url]
|
231
|
+
raise ArgumentError.new("Missing required arguments: google_api_scope_url")
|
232
|
+
end
|
233
|
+
end
|
234
|
+
|
235
|
+
# Helper method to checks whether the necessary fields are present in
|
236
|
+
# JSON key credentials
|
237
|
+
#
|
238
|
+
# @param [String] json_key - Google json auth key string
|
239
|
+
def validate_json_credentials(json_key)
|
240
|
+
json_key_hash = Fog::JSON.decode(json_key)
|
241
|
+
|
242
|
+
unless json_key_hash.key?("client_email") || json_key_hash.key?("private_key")
|
243
|
+
raise ArgumentError.new("Invalid Google JSON key")
|
244
|
+
end
|
245
|
+
end
|
191
246
|
end
|
192
247
|
end
|
193
248
|
end
|
data/lib/fog/google/sql.rb
CHANGED
data/lib/fog/google/version.rb
CHANGED
@@ -27,13 +27,6 @@ class TestAuthentication < FogIntegrationTest
|
|
27
27
|
assert_raises(ArgumentError) { Fog::Compute::Google.new(:google_project => nil) }
|
28
28
|
end
|
29
29
|
|
30
|
-
def test_raises_argument_error_when_google_client_email_is_missing
|
31
|
-
assert_raises(ArgumentError) do
|
32
|
-
Fog::Compute::Google.new(:google_client_email => nil,
|
33
|
-
:google_json_key_location => nil)
|
34
|
-
end # JSON key overrides google_client_email
|
35
|
-
end
|
36
|
-
|
37
30
|
def test_raises_argument_error_when_google_keys_are_given
|
38
31
|
assert_raises(ArgumentError) do
|
39
32
|
Fog::Compute::Google.new(:google_key_location => nil,
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: fog-google
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.9.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Nat Welch
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2019-
|
12
|
+
date: 2019-03-22 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: fog-core
|
@@ -758,7 +758,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
758
758
|
version: '0'
|
759
759
|
requirements: []
|
760
760
|
rubyforge_project:
|
761
|
-
rubygems_version: 2.6.14
|
761
|
+
rubygems_version: 2.6.14.3
|
762
762
|
signing_key:
|
763
763
|
specification_version: 4
|
764
764
|
summary: Module for the 'fog' gem to support Google.
|