kitchen-google 1.3.0 → 1.4.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 5de129cbfac2e9fe5573b026c9afeccc09f1cf36
4
- data.tar.gz: 844a3ac15fbfe368d8e1bb11f8735d4aaeda9048
3
+ metadata.gz: 7c0faf16d29ec697042b36e75a9120db978ca042
4
+ data.tar.gz: b11fe7fd427c9a50eec9ab53ee08d324ab7c45dd
5
5
  SHA512:
6
- metadata.gz: fc2c20c9b86b5172da99dd5b19c007456d0cf6a6391b66ef7cff44a27282bfa3ee699b5afede66b664cbfe0fac8e29b47c8d7264611151690353df407ebba036
7
- data.tar.gz: 3e711713b9f28027b5f8529e8c0752a4434962e7bf1ac230b8188cc46bc04f635ae9503193ce5ed682cd4a2078b0017d953db45911bd0ff96e6cc4825ad04d91
6
+ metadata.gz: c07e4218aff46c02b4cf32d2304bf4368df47d5445e025cf7bab5b4955a5b12432a32d6d4f78d8d27cccd0c11b5602a274b1c13e980ed11b902e3fb7f9b3c7ed
7
+ data.tar.gz: 99f3bcb22f2dd3382b6a8444a9e83acf52dee3899a9e2711335fcf399dffb3ee3b322966b1441cc824c08577afc3a675b8e2beee8dc51b34ee7fd44eb5297f44
@@ -1,3 +1,7 @@
1
+ ## 1.4.0 / 2017-09-28
2
+
3
+ * #47: Add support for Google Shared VPC Networks (XPN)
4
+
1
5
  ## 1.3.0 / 2017-09-15
2
6
 
3
7
  * #43: support adding custom metadata to instances
data/README.md CHANGED
@@ -232,10 +232,18 @@ GCE instance type (size) to launch; default: `n1-standard-1`
232
232
 
233
233
  GCE network that instance will be attached to; default: `default`
234
234
 
235
+ ### `network_project`
236
+
237
+ GCE project which network belongs to; default is same as `project`
238
+
235
239
  ### `subnet`
236
240
 
237
241
  GCE subnetwork that instance will be attached to. Only applies to custom networks.
238
242
 
243
+ ### `subnet_project`
244
+
245
+ GCE project which subnet belongs to. Only applies when `subnet` is used; default is same as `project`
246
+
239
247
  ### `preemptible`
240
248
 
241
249
  If set to `true`, GCE instance will be brought up as a [preemptible](https://cloud.google.com/compute/docs/instances/preemptible) virtual machine,
@@ -66,7 +66,9 @@ module Kitchen
66
66
  default_config :disk_type, "pd-standard"
67
67
  default_config :machine_type, "n1-standard-1"
68
68
  default_config :network, "default"
69
+ default_config :network_project, nil
69
70
  default_config :subnet, nil
71
+ default_config :subnet_project, nil
70
72
  default_config :inst_name, nil
71
73
  default_config :service_account_name, "default"
72
74
  default_config :service_account_scopes, []
@@ -156,6 +158,7 @@ module Kitchen
156
158
  warn("Both zone and region specified - region will be ignored.") if config[:zone] && config[:region]
157
159
  warn("Both image family and name specified - image family will be ignored") if config[:image_family] && config[:image_name]
158
160
  warn("Image project not specified - searching current project only") unless config[:image_project]
161
+ warn("Subnet project not specified - searching current project only") if config[:subnet] && !config[:subnet_project]
159
162
  warn("Auto-migrate disabled for preemptible instance") if preemptible? && config[:auto_migrate]
160
163
  warn("Auto-restart disabled for preemptible instance") if preemptible? && config[:auto_restart]
161
164
  end
@@ -224,12 +227,12 @@ module Kitchen
224
227
 
225
228
  def valid_network?
226
229
  return false if config[:network].nil?
227
- check_api_call { connection.get_network(project, config[:network]) }
230
+ check_api_call { connection.get_network(network_project, config[:network]) }
228
231
  end
229
232
 
230
233
  def valid_subnet?
231
234
  return false if config[:subnet].nil?
232
- check_api_call { connection.get_subnetwork(project, region, config[:subnet]) }
235
+ check_api_call { connection.get_subnetwork(subnet_project, region, config[:subnet]) }
233
236
  end
234
237
 
235
238
  def valid_zone?
@@ -267,6 +270,14 @@ module Kitchen
267
270
  config[:image_project].nil? ? project : config[:image_project]
268
271
  end
269
272
 
273
+ def subnet_project
274
+ config[:subnet_project].nil? ? project : config[:subnet_project]
275
+ end
276
+
277
+ def network_project
278
+ config[:network_project].nil? ? project : config[:network_project]
279
+ end
280
+
270
281
  def region
271
282
  config[:region].nil? ? region_for_zone : config[:region]
272
283
  end
@@ -403,7 +414,7 @@ module Kitchen
403
414
 
404
415
  def instance_network_interfaces
405
416
  interface = Google::Apis::ComputeV1::NetworkInterface.new
406
- interface.network = network_url
417
+ interface.network = network_url if config[:subnet_project].nil?
407
418
  interface.subnetwork = subnet_url if subnet_url
408
419
  interface.access_configs = interface_access_configs
409
420
 
@@ -411,13 +422,12 @@ module Kitchen
411
422
  end
412
423
 
413
424
  def network_url
414
- "projects/#{project}/global/networks/#{config[:network]}"
425
+ "projects/#{network_project}/global/networks/#{config[:network]}"
415
426
  end
416
427
 
417
428
  def subnet_url
418
429
  return unless config[:subnet]
419
-
420
- "projects/#{project}/regions/#{region}/subnetworks/#{config[:subnet]}"
430
+ "projects/#{subnet_project}/regions/#{region}/subnetworks/#{config[:subnet]}"
421
431
  end
422
432
 
423
433
  def interface_access_configs
@@ -18,6 +18,6 @@
18
18
 
19
19
  module Kitchen
20
20
  module Driver
21
- GCE_VERSION = "1.3.0".freeze
21
+ GCE_VERSION = "1.4.0".freeze
22
22
  end
23
23
  end
@@ -823,9 +823,18 @@ describe Kitchen::Driver::Gce do
823
823
  end
824
824
 
825
825
  describe "#network_url" do
826
- it "returns a network URL" do
827
- expect(driver).to receive(:config).and_return(network: "test_network")
828
- expect(driver.network_url).to eq("projects/test_project/global/networks/test_network")
826
+ context "when the user does not provide network_project" do
827
+ it "returns a network URL" do
828
+ allow(driver).to receive(:config).and_return(network: "test_network")
829
+ expect(driver.network_url).to eq("projects/test_project/global/networks/test_network")
830
+ end
831
+ end
832
+
833
+ context "when the user provides network_project" do
834
+ it "returns a network URL" do
835
+ allow(driver).to receive(:config).and_return(network: "test_network", network_project: "test_xpn_project")
836
+ expect(driver.network_url).to eq("projects/test_xpn_project/global/networks/test_network")
837
+ end
829
838
  end
830
839
  end
831
840
 
@@ -835,10 +844,20 @@ describe Kitchen::Driver::Gce do
835
844
  expect(driver.subnet_url).to eq(nil)
836
845
  end
837
846
 
838
- it "returns a properly-formatted subnet URL" do
839
- allow(driver).to receive(:config).and_return(subnet: "test_subnet")
840
- expect(driver).to receive(:region).and_return("test_region")
841
- expect(driver.subnet_url).to eq("projects/test_project/regions/test_region/subnetworks/test_subnet")
847
+ context "when the user does not provide subnet_project" do
848
+ it "returns a properly-formatted subnet URL" do
849
+ allow(driver).to receive(:config).and_return(subnet: "test_subnet")
850
+ expect(driver).to receive(:region).and_return("test_region")
851
+ expect(driver.subnet_url).to eq("projects/test_project/regions/test_region/subnetworks/test_subnet")
852
+ end
853
+ end
854
+
855
+ context "when the user provides subnet_project" do
856
+ it "returns a properly-formatted subnet URL" do
857
+ allow(driver).to receive(:config).and_return(subnet_project: "test_xpn_project", subnet: "test_subnet")
858
+ expect(driver).to receive(:region).and_return("test_region")
859
+ expect(driver.subnet_url).to eq("projects/test_xpn_project/regions/test_region/subnetworks/test_subnet")
860
+ end
842
861
  end
843
862
  end
844
863
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: kitchen-google
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.3.0
4
+ version: 1.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Andrew Leonard