vagrant-google 2.3.0 → 2.4.0.rc0

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
  SHA1:
3
- metadata.gz: 423e476d85cc8eea275803c91756edbea6fde8d9
4
- data.tar.gz: f26dfbc44b3c589be27daea9c5282ef8416c4f79
3
+ metadata.gz: 537db391735594007a72b2a4af1a464f90ac943e
4
+ data.tar.gz: 5235acd34a609e6e348cfd732fd1ed9d5c89ef8b
5
5
  SHA512:
6
- metadata.gz: 30d460f79c71e704e1af3896cb1542b7070cf66b07dbbe51f3e4bea176cf79467efd716a4c2ab62f297914452df49254419481ef69850e92c8b36b9c5143c0bd
7
- data.tar.gz: 2705e1779125fd1a0b5d64b8a455fed349b4721c34a821f84a9efaa99d5c4f656d24386c0838454cedde645d0474c6c2d4a5ab6c07de3837d1ec99a5a5d56a10
6
+ metadata.gz: 9415a9c4f8a8fa50c6f648750d925c75cac489d618840dc1ba05ff4330d3707a23275835c5566bb135b01ea44d2249fae577a42d721aebd7c42961734cb7b63c
7
+ data.tar.gz: 79a35f14f4a8886037fb28b0485b3ec04bc3e4222b300c401f07766403b3a9d64df3b0c524f87b56806f7795d83d1e39af20aca13019f651c044f4fb3a15c26e
@@ -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
- fog_config[:google_json_key_location] = find_key(provider_config.google_json_key_location, env)
39
+ unless provider_config.google_client_email.nil?
40
+ fog_config[:google_client_email] = provider_config.google_client_email
41
+ end
40
42
 
41
- @logger.info("Connecting to Google...")
42
- env[:google_compute] = Fog::Compute.new(fog_config)
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. If nil, it will
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
- @zone = "us-central1-f" if @zone == UNSET_VALUE
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
- errors << I18n.t("vagrant_google.config.google_client_email_required") if \
407
- config.google_client_email.nil?
408
- errors << I18n.t("vagrant_google.config.google_key_location_required") if \
409
- config.google_json_key_location.nil?
410
- errors << I18n.t("vagrant_google.config.private_key_missing") unless \
411
- File.exist?(File.expand_path(config.google_json_key_location.to_s)) or
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
- errors << I18n.t("vagrant_google.config.image_required") if config.image.nil? && config.image_family.nil?
428
- errors << I18n.t("vagrant_google.config.name_required") if @name.nil?
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"))
@@ -13,6 +13,6 @@
13
13
  # limitations under the License.
14
14
  module VagrantPlugins
15
15
  module Google
16
- VERSION = "2.3.0".freeze
16
+ VERSION = "2.4.0.rc0".freeze
17
17
  end
18
18
  end
@@ -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
@@ -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.8.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.3.0
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-02-22 00:00:00.000000000 Z
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.8.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.8.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