kitchen-google 1.3.0 → 1.4.0

Sign up to get free protection for your applications and to get access to all the features.
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