vagrant-google 2.3.0 → 2.4.0.rc0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +17 -0
- data/lib/vagrant-google/action/connect_google.rb +13 -5
- data/lib/vagrant-google/config.rb +31 -14
- data/lib/vagrant-google/version.rb +1 -1
- data/locales/en.yml +0 -6
- data/test/unit/common/config_test.rb +38 -11
- data/vagrant-google.gemspec +1 -1
- metadata +4 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 537db391735594007a72b2a4af1a464f90ac943e
|
4
|
+
data.tar.gz: 5235acd34a609e6e348cfd732fd1ed9d5c89ef8b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 9415a9c4f8a8fa50c6f648750d925c75cac489d618840dc1ba05ff4330d3707a23275835c5566bb135b01ea44d2249fae577a42d721aebd7c42961734cb7b63c
|
7
|
+
data.tar.gz: 79a35f14f4a8886037fb28b0485b3ec04bc3e4222b300c401f07766403b3a9d64df3b0c524f87b56806f7795d83d1e39af20aca13019f651c044f4fb3a15c26e
|
data/CHANGELOG.md
CHANGED
@@ -2,6 +2,23 @@
|
|
2
2
|
All notable changes to this project will be documented in this file.
|
3
3
|
The format is loosely based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/) and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.html).
|
4
4
|
|
5
|
+
## 2.4.0 (April 2019)
|
6
|
+
|
7
|
+
### User-facing
|
8
|
+
|
9
|
+
#### Added
|
10
|
+
- \#213 Implemented Application Default Credentials authentication [mavin]
|
11
|
+
|
12
|
+
#### Fixed
|
13
|
+
- \#214 Set a default zone only if `default` network is used [mavin]
|
14
|
+
- \#215 Allow tags,labels and additional_disks to be merged with multiple
|
15
|
+
configs [mavin]
|
16
|
+
|
17
|
+
### Development
|
18
|
+
|
19
|
+
- \#213 Bumped dependencies [mavin]
|
20
|
+
- fog-google version to 1.9.0
|
21
|
+
|
5
22
|
## 2.3.0 (February 2019)
|
6
23
|
|
7
24
|
### User-facing
|
@@ -26,6 +26,7 @@ module VagrantPlugins
|
|
26
26
|
@logger = Log4r::Logger.new("vagrant_google::action::connect_google")
|
27
27
|
end
|
28
28
|
|
29
|
+
# Initialize Fog::Compute and add it to the environment
|
29
30
|
def call(env)
|
30
31
|
provider_config = env[:machine].provider_config
|
31
32
|
|
@@ -33,16 +34,23 @@ module VagrantPlugins
|
|
33
34
|
fog_config = {
|
34
35
|
:provider => :google,
|
35
36
|
:google_project => provider_config.google_project_id,
|
36
|
-
:google_client_email => provider_config.google_client_email
|
37
37
|
}
|
38
38
|
|
39
|
-
|
39
|
+
unless provider_config.google_client_email.nil?
|
40
|
+
fog_config[:google_client_email] = provider_config.google_client_email
|
41
|
+
end
|
40
42
|
|
41
|
-
|
42
|
-
|
43
|
+
unless provider_config.google_json_key_location.nil?
|
44
|
+
fog_config[:google_json_key_location] = find_key(provider_config.google_json_key_location, env)
|
45
|
+
end
|
46
|
+
|
47
|
+
if provider_config.google_client_email.nil? and provider_config.google_json_key_location.nil?
|
48
|
+
fog_config[:google_application_default] = true
|
49
|
+
end
|
43
50
|
|
51
|
+
@logger.info("Creating Google API client and adding to Vagrant environment")
|
52
|
+
env[:google_compute] = Fog::Compute.new(fog_config)
|
44
53
|
@app.call(env)
|
45
|
-
@logger.info("...Connected!")
|
46
54
|
end
|
47
55
|
|
48
56
|
# If the key is not found, try expanding from root location (see #159)
|
@@ -152,8 +152,8 @@ module VagrantPlugins
|
|
152
152
|
# @return [Int]
|
153
153
|
attr_accessor :instance_ready_timeout
|
154
154
|
|
155
|
-
# The zone to launch the instance into.
|
156
|
-
# use the default us-central1-f.
|
155
|
+
# The zone to launch the instance into.
|
156
|
+
# If nil and the "default" network is set use the default us-central1-f.
|
157
157
|
#
|
158
158
|
# @return [String]
|
159
159
|
attr_accessor :zone
|
@@ -277,6 +277,18 @@ module VagrantPlugins
|
|
277
277
|
# Merge in the metadata
|
278
278
|
result.metadata.merge!(self.metadata)
|
279
279
|
result.metadata.merge!(other.metadata)
|
280
|
+
|
281
|
+
# Merge in the labels
|
282
|
+
result.labels.merge!(self.labels)
|
283
|
+
result.labels.merge!(other.labels)
|
284
|
+
|
285
|
+
# Merge in the tags
|
286
|
+
result.tags |= self.tags
|
287
|
+
result.tags |= other.tags
|
288
|
+
|
289
|
+
# Merge in the additional disks
|
290
|
+
result.additional_disks |= self.additional_disks
|
291
|
+
result.additional_disks |= other.additional_disks
|
280
292
|
end
|
281
293
|
end
|
282
294
|
|
@@ -317,6 +329,7 @@ module VagrantPlugins
|
|
317
329
|
t = Time.now
|
318
330
|
@name = "i-#{t.strftime("%Y%m%d%H")}-" + SecureRandom.hex(4)
|
319
331
|
end
|
332
|
+
|
320
333
|
# Network defaults to 'default'
|
321
334
|
@network = "default" if @network == UNSET_VALUE
|
322
335
|
|
@@ -326,8 +339,13 @@ module VagrantPlugins
|
|
326
339
|
# Subnetwork defaults to nil
|
327
340
|
@subnetwork = nil if @subnetwork == UNSET_VALUE
|
328
341
|
|
329
|
-
# Default zone is us-central1-f
|
330
|
-
|
342
|
+
# Default zone is us-central1-f if using the default network
|
343
|
+
if @zone == UNSET_VALUE
|
344
|
+
@zone = nil
|
345
|
+
if @network == "default"
|
346
|
+
@zone = "us-central1-f"
|
347
|
+
end
|
348
|
+
end
|
331
349
|
|
332
350
|
# autodelete_disk defaults to true
|
333
351
|
@autodelete_disk = true if @autodelete_disk == UNSET_VALUE
|
@@ -403,13 +421,12 @@ module VagrantPlugins
|
|
403
421
|
# TODO: Check why provider-level settings are validated in the zone config
|
404
422
|
errors << I18n.t("vagrant_google.config.google_project_id_required") if \
|
405
423
|
config.google_project_id.nil?
|
406
|
-
|
407
|
-
|
408
|
-
|
409
|
-
|
410
|
-
|
411
|
-
|
412
|
-
File.exist?(File.expand_path(config.google_json_key_location.to_s, machine.env.root_path))
|
424
|
+
|
425
|
+
if config.google_json_key_location
|
426
|
+
errors << I18n.t("vagrant_google.config.private_key_missing") unless \
|
427
|
+
File.exist?(File.expand_path(config.google_json_key_location.to_s)) or
|
428
|
+
File.exist?(File.expand_path(config.google_json_key_location.to_s, machine.env.root_path))
|
429
|
+
end
|
413
430
|
|
414
431
|
if config.preemptible
|
415
432
|
errors << I18n.t("vagrant_google.config.auto_restart_invalid_on_preemptible") if \
|
@@ -422,10 +439,10 @@ module VagrantPlugins
|
|
422
439
|
errors << I18n.t("vagrant_google.config.image_and_image_family_set") if \
|
423
440
|
config.image
|
424
441
|
end
|
425
|
-
end
|
426
442
|
|
427
|
-
|
428
|
-
|
443
|
+
errors << I18n.t("vagrant_google.config.image_required") if config.image.nil? && config.image_family.nil?
|
444
|
+
errors << I18n.t("vagrant_google.config.name_required") if @name.nil?
|
445
|
+
end
|
429
446
|
|
430
447
|
if @service_accounts
|
431
448
|
machine.env.ui.warn(I18n.t("vagrant_google.config.service_accounts_deprecaated"))
|
data/locales/en.yml
CHANGED
@@ -52,9 +52,6 @@ en:
|
|
52
52
|
# Translations for config validation errors
|
53
53
|
#-------------------------------------------------------------------------------
|
54
54
|
config:
|
55
|
-
google_client_email_required: |-
|
56
|
-
A Google Service Account client email is required via
|
57
|
-
"google_client_email".
|
58
55
|
private_key_missing: |-
|
59
56
|
Private key for Google could not be found in the specified location.
|
60
57
|
zone_required: |-
|
@@ -63,9 +60,6 @@ en:
|
|
63
60
|
An instance name must be specified via "name" option.
|
64
61
|
image_required: |-
|
65
62
|
An image must be specified via "image" or "image_family" option.
|
66
|
-
google_key_location_required: |-
|
67
|
-
A private key pathname is required via:
|
68
|
-
"google_json_key_location" (for JSON keys)
|
69
63
|
google_project_id_required: |-
|
70
64
|
A Google Cloud Project ID is required via "google_project_id".
|
71
65
|
auto_restart_invalid_on_preemptible: |-
|
@@ -67,6 +67,13 @@ describe VagrantPlugins::Google::Config do
|
|
67
67
|
end
|
68
68
|
end
|
69
69
|
|
70
|
+
it "should raise error when network is not default and zone is not overriden" do
|
71
|
+
instance.network = "not-default"
|
72
|
+
instance.finalize!
|
73
|
+
errors = instance.validate("foo")["Google Provider"]
|
74
|
+
expect(errors).to include(/zone_required/)
|
75
|
+
end
|
76
|
+
|
70
77
|
it "should raise error when preemptible and auto_restart is true" do
|
71
78
|
instance.preemptible = true
|
72
79
|
instance.auto_restart = true
|
@@ -111,17 +118,6 @@ describe VagrantPlugins::Google::Config do
|
|
111
118
|
its("google_client_email") { should == "client_id_email" }
|
112
119
|
its("google_json_key_location") { should == "/path/to/json/key" }
|
113
120
|
end
|
114
|
-
|
115
|
-
context "With none of the Google credential environment variables set" do
|
116
|
-
before :each do
|
117
|
-
allow(ENV).to receive(:[]).with("GOOGLE_CLIENT_EMAIL").and_return("client_id_email")
|
118
|
-
end
|
119
|
-
|
120
|
-
it "Should return no key set errors" do
|
121
|
-
instance.finalize!
|
122
|
-
expect(instance.validate("foo")["Google Provider"][1]).to include("en.vagrant_google.config.google_key_location_required")
|
123
|
-
end
|
124
|
-
end
|
125
121
|
end
|
126
122
|
|
127
123
|
describe "zone config" do
|
@@ -251,6 +247,37 @@ describe VagrantPlugins::Google::Config do
|
|
251
247
|
"two" => "bar"
|
252
248
|
})
|
253
249
|
end
|
250
|
+
|
251
|
+
it "should merge the labels" do
|
252
|
+
first.labels["one"] = "one"
|
253
|
+
second.labels["two"] = "two"
|
254
|
+
|
255
|
+
third = first.merge(second)
|
256
|
+
expect(third.labels).to eq({
|
257
|
+
"one" => "one",
|
258
|
+
"two" => "two"
|
259
|
+
})
|
260
|
+
end
|
261
|
+
|
262
|
+
it "should merge the tags" do
|
263
|
+
first.tags = ["foo", "bar"]
|
264
|
+
second.tags = ["biz"]
|
265
|
+
|
266
|
+
third = first.merge(second)
|
267
|
+
expect(third.tags).to include("foo")
|
268
|
+
expect(third.tags).to include("bar")
|
269
|
+
expect(third.tags).to include("biz")
|
270
|
+
end
|
271
|
+
|
272
|
+
it "should merge the additional_disks" do
|
273
|
+
first.additional_disks = [{:one => "one"}]
|
274
|
+
second.additional_disks = [{:two => "two"}]
|
275
|
+
|
276
|
+
third = first.merge(second)
|
277
|
+
expect(third.additional_disks).to contain_exactly(
|
278
|
+
{:one => "one"}, {:two => "two"}
|
279
|
+
)
|
280
|
+
end
|
254
281
|
end
|
255
282
|
|
256
283
|
describe "zone_preemptible" do
|
data/vagrant-google.gemspec
CHANGED
@@ -28,7 +28,7 @@ Gem::Specification.new do |s|
|
|
28
28
|
s.required_rubygems_version = ">= 1.3.6"
|
29
29
|
s.rubyforge_project = "vagrant-google"
|
30
30
|
|
31
|
-
s.add_runtime_dependency "fog-google", "~> 1.
|
31
|
+
s.add_runtime_dependency "fog-google", "~> 1.9.1"
|
32
32
|
|
33
33
|
# This is a restriction to avoid errors on `failure_message_for_should`
|
34
34
|
# TODO: revise after vagrant_spec goes past >0.0.1 (at master@e623a56)
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: vagrant-google
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.
|
4
|
+
version: 2.4.0.rc0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Eric Johnson
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2019-
|
12
|
+
date: 2019-04-23 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: fog-google
|
@@ -17,14 +17,14 @@ dependencies:
|
|
17
17
|
requirements:
|
18
18
|
- - "~>"
|
19
19
|
- !ruby/object:Gem::Version
|
20
|
-
version: 1.
|
20
|
+
version: 1.9.1
|
21
21
|
type: :runtime
|
22
22
|
prerelease: false
|
23
23
|
version_requirements: !ruby/object:Gem::Requirement
|
24
24
|
requirements:
|
25
25
|
- - "~>"
|
26
26
|
- !ruby/object:Gem::Version
|
27
|
-
version: 1.
|
27
|
+
version: 1.9.1
|
28
28
|
- !ruby/object:Gem::Dependency
|
29
29
|
name: rspec-legacy_formatters
|
30
30
|
requirement: !ruby/object:Gem::Requirement
|