vagrant-google 2.5.0 → 2.6.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
- SHA1:
3
- metadata.gz: ed6ee3d8610c741c80fb0a023922309c396ba06f
4
- data.tar.gz: e5110f3de87fad8d872150e38e371f560e65993c
2
+ SHA256:
3
+ metadata.gz: 22135d118cd7749f09bab503e584dce947d56ce3dbe1fe7d43624be1d8edd9bf
4
+ data.tar.gz: 4d4e3e45565c5a3ce26494ba5942000d404791a46045a990b866ebd401cb4d1a
5
5
  SHA512:
6
- metadata.gz: caa68543e38fa5432182179df747283e5182fd303edca1dae9f1c3581805182c4d46711d438a13c2d68e090774b10eae95e544ad181e9d29e793d448dcb8e17d
7
- data.tar.gz: 4c8e2dac09fa2c02ee3dba1f9cc9e74ca4c89488d85221e6d682ebb5044711f303c5031eff61c2e74506c2316d7bbfbbfebbe797758a78ba75ea9e6a3f36b94f
6
+ metadata.gz: ed1cb603bd11da1e6d402490e3a92cc683e2c1060a7982c2809b39fa86200ec62a5921791df6c954e45482918b84531d4df8437c3da368b99df717ac2dfac03f
7
+ data.tar.gz: fbe0d8f7cb29a6d386cb7d501c3057acf426f390c93146c6acfe23274cc83a422c44a09bf1119c8295f0b92547e79d2e9477cca3e0a9aab1ba3543aa093bbb15
@@ -1,5 +1,4 @@
1
- # Importing TODO list to sanely lint new submissions.
2
- inherit_from: .rubocop_todo.yml
1
+ require: rubocop-performance
3
2
 
4
3
  # Custom project config
5
4
  AllCops:
@@ -7,11 +6,20 @@ AllCops:
7
6
  - './Vagrantfile'
8
7
  - './vagrant-google.gemspec'
9
8
 
10
- Style/EmptyLinesAroundBlockBody:
9
+ Layout/EmptyLinesAroundBlockBody:
11
10
  Enabled: false
12
11
 
13
12
  Style/StringLiterals:
14
13
  Enabled: false
15
14
 
16
15
  Style/IfUnlessModifier:
17
- Enabled: false
16
+ Enabled: false
17
+
18
+ Metrics/LineLength:
19
+ Max: 120
20
+
21
+ Layout/HashAlignment:
22
+ EnforcedHashRocketStyle: table
23
+
24
+ Style/HashSyntax:
25
+ EnforcedStyle: no_mixed_keys
@@ -1,2 +1,2 @@
1
- 2.4.3
2
- # Tracking Vagrant 2.0.3
1
+ 2.6.6
2
+ # Tracking Vagrant 2.2.9
@@ -2,6 +2,34 @@
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
+ ## Next
6
+
7
+
8
+ ### User-facing
9
+
10
+ #### Added
11
+
12
+ - \#248 Add support for modifying the configuration of Shielded VM [lcy0321]
13
+ - \#244 Add accelerator (GPU) configuration [johanvdhaegen]
14
+ - \#216 Add support for Windows hosts through WinRM [dvanbrug]
15
+
16
+ #### Fixed
17
+
18
+ - \#246 Fix config override during metadata merge [mavin]
19
+ - \#249 Fix shielded API failures on non-shielded VM's [temikus]
20
+ - \#227 Fix additional disks being auto-deleted unless a disk type is specified [chrisgavin]
21
+
22
+ ### Development
23
+
24
+ #### Fixed
25
+
26
+ - \#247 chore: Update Gemfile with new `vagrant-spec` branch name [mavin]
27
+ - \#241 Fix unfortunate CI `on:` trigger typo [temikus]
28
+ - \#240 Update development environment, add CI functionality [Temikus]
29
+ - \#239 Remove old fixup in Gemfile [Temikus]
30
+ - \#237 Bump image size for test skeleton [Temikus]
31
+
32
+
5
33
  ## 2.5.0 (September 2019)
6
34
 
7
35
  ### User-facing
data/Gemfile CHANGED
@@ -24,8 +24,6 @@ group :development do
24
24
  # gem dependency because we expect to be installed within the
25
25
  # Vagrant environment itself using `vagrant plugin`.
26
26
 
27
- # TODO(temikus): remove to 2.2.4 tag lock when
28
- # https://github.com/hashicorp/vagrant/pull/10945 is resolved
29
- gem 'vagrant', git: "https://github.com/hashicorp/vagrant.git", :tag => 'v2.2.4'
30
- gem 'vagrant-spec', git: "https://github.com/hashicorp/vagrant-spec.git"
27
+ gem 'vagrant', git: "https://github.com/hashicorp/vagrant.git"
28
+ gem 'vagrant-spec', git: "https://github.com/hashicorp/vagrant-spec.git", branch: "main"
31
29
  end
data/README.md CHANGED
@@ -16,7 +16,7 @@ The maintainers for this plugin are @temikus(primary), @erjohnso(backup).
16
16
  * Boot Google Compute Engine instances.
17
17
  * SSH into the instances.
18
18
  * Provision the instances with any built-in Vagrant provisioner.
19
- * Synced folder support via Vagrant's
19
+ * Synced folder support via Vagrant's
20
20
  [rsync action](https://www.vagrantup.com/docs/synced-folders/rsync.html).
21
21
  * Define zone-specific configurations so Vagrant can manage machines in
22
22
  multiple zones.
@@ -73,8 +73,8 @@ Service Account for API Access.
73
73
  ## Quick Start
74
74
 
75
75
  After installing the plugin (instructions above), the quickest way to get
76
- started is to actually use a dummy Google box from Atlas and specify all the
77
- details manually within a `config.vm.provider` block.
76
+ started is to actually use a dummy Google box from Atlas and specify all the
77
+ details manually within a `config.vm.provider` block.
78
78
 
79
79
  So first, make a Vagrantfile that looks like the following, filling in
80
80
  your information where necessary:
@@ -86,9 +86,9 @@ Vagrant.configure("2") do |config|
86
86
  config.vm.provider :google do |google, override|
87
87
  google.google_project_id = "YOUR_GOOGLE_CLOUD_PROJECT_ID"
88
88
  google.google_json_key_location = "/path/to/your/private-key.json"
89
-
89
+
90
90
  google.image_family = 'ubuntu-1604-lts'
91
-
91
+
92
92
  override.ssh.username = "USERNAME"
93
93
  override.ssh.private_key_path = "~/.ssh/id_rsa"
94
94
  #override.ssh.private_key_path = "~/.ssh/google_compute_engine"
@@ -99,10 +99,10 @@ end
99
99
 
100
100
  And then run `vagrant up --provider=google`.
101
101
 
102
- This will start a latest version of Ubuntu 16.04 LTS instance in the
103
- `us-central1-f` zone, with an `n1-standard-1` machine, and the `"default"`
104
- network within your project. And assuming your SSH information (see below) was
105
- filled in properly within your Vagrantfile, SSH and provisioning will work as
102
+ This will start a latest version of Ubuntu 16.04 LTS instance in the
103
+ `us-central1-f` zone, with an `n1-standard-1` machine, and the `"default"`
104
+ network within your project. And assuming your SSH information (see below) was
105
+ filled in properly within your Vagrantfile, SSH and provisioning will work as
106
106
  well.
107
107
 
108
108
  Note that normally a lot of this boilerplate is encoded within the box file,
@@ -165,13 +165,13 @@ configuration for this provider.
165
165
  This provider exposes quite a few provider-specific configuration options:
166
166
 
167
167
  * `google_json_key_location` - The location of the JSON private key file matching your
168
- Service Account.
168
+ Service Account.
169
169
  (Can also be configured with `GOOGLE_JSON_KEY_LOCATION` environment variable.)
170
- * `google_project_id` - The Project ID for your Google Cloud Platform account.
170
+ * `google_project_id` - The Project ID for your Google Cloud Platform account.
171
171
  (Can also be configured with `GOOGLE_PROJECT_ID` environment variable.)
172
172
  * `image` - The image name to use when booting your instance.
173
- * `image_family` - Specify an "image family" to pull the latest image from. For example: `centos-7`
174
- will pull the most recent CentOS 7 image. For more info, refer to
173
+ * `image_family` - Specify an "image family" to pull the latest image from. For example: `centos-7`
174
+ will pull the most recent CentOS 7 image. For more info, refer to
175
175
  [Google Image documentation](https://cloud.google.com/compute/docs/images#image_families).
176
176
  * `image_project_id` - The ID of the GCP project to search for the `image` or `image_family`.
177
177
  * `instance_group` - Unmanaged instance group to add the machine to. If one
@@ -206,20 +206,36 @@ will pull the most recent CentOS 7 image. For more info, refer to
206
206
  utility aliases, for example:
207
207
  `['storage-full', 'bigquery', 'https://www.googleapis.com/auth/compute']`.
208
208
  * `service_account` - The IAM service account email to use for the instance.
209
- * `additional_disks` - An array of additional disk configurations. `disk_size` is default to `10`GB;
210
- `disk_name` is default to `name` + "-additional-disk-#{index}"; `disk_type` is default to `pd-standard`;
209
+ * `additional_disks` - An array of additional disk configurations. `disk_size` is default to `10`GB;
210
+ `disk_name` is default to `name` + "-additional-disk-#{index}"; `disk_type` is default to `pd-standard`;
211
211
  `autodelete_disk` is default to `true`. Here is an example of configuration.
212
- ```ruby
213
- [{
214
- :image_family => "google-image-family",
215
- :image => nil,
216
- :image_project_id => "google-project-id",
217
- :disk_size => 20,
218
- :disk_name => "google-additional-disk-0",
219
- :disk_type => "pd-standard",
220
- :autodelete_disk => true
212
+ ```ruby
213
+ [{
214
+ :image_family => "google-image-family",
215
+ :image => nil,
216
+ :image_project_id => "google-project-id",
217
+ :disk_size => 20,
218
+ :disk_name => "google-additional-disk-0",
219
+ :disk_type => "pd-standard",
220
+ :autodelete_disk => true
221
+ }]
222
+ ```
223
+ * `accelerators` - An array of accelerator configurations. `type` is the
224
+ accelerator type (e.g. `nvidia-tesla-k80`); `count` is the number of
225
+ accelerators and defaults to 1. Note that only `TERMINATE` is supported for
226
+ `on_host_maintenance`; this should be set explicitly, since the default is
227
+ `MIGRATE`.
228
+ ```ruby
229
+ google.accelerators = [{
230
+ :type => "nvidia-tesla-k80",
231
+ :count => 2
221
232
  }]
222
- ```
233
+
234
+ google.on_host_maintenance = "TERMINATE"
235
+ ```
236
+ * `enable_secure_boot` - For [Shielded VM](https://cloud.google.com/security/shielded-cloud/shielded-vm), whether to enable Secure Boot.
237
+ * `enable_vtpm` - For [Shielded VM](https://cloud.google.com/security/shielded-cloud/shielded-vm), whether to enable vTPM.
238
+ * `enable_integrity_monitoring` - For [Shielded VM](https://cloud.google.com/security/shielded-cloud/shielded-vm), whether to enable Integrity monitoring.
223
239
 
224
240
  These can be set like typical provider-specific configuration:
225
241
 
@@ -280,7 +296,7 @@ emit a warning, but will otherwise boot the GCE machine.
280
296
  ## Synced Folders
281
297
 
282
298
  Since plugin version 2.0, this is implemented via built-in `SyncedFolders` action.
283
- See Vagrant's [rsync action](https://www.vagrantup.com/docs/synced-folders/rsync.html)
299
+ See Vagrant's [rsync action](https://www.vagrantup.com/docs/synced-folders/rsync.html)
284
300
  documentation for more info.
285
301
 
286
302
  ## Development
@@ -82,6 +82,15 @@ module VagrantPlugins
82
82
  end
83
83
  end
84
84
 
85
+ # This action is called to setup the Windows user/password on the machine.
86
+ def self.action_setup_winrm_password
87
+ Vagrant::Action::Builder.new.tap do |b|
88
+ b.use ConfigValidate
89
+ b.use ConnectGoogle
90
+ b.use SetupWinrmPassword
91
+ end
92
+ end
93
+
85
94
  # This action is called to read the state of the machine. The
86
95
  # resulting state is expected to be put into the `:machine_state_id`
87
96
  # key.
@@ -182,6 +191,7 @@ module VagrantPlugins
182
191
  autoload :MessageNotCreated, action_root.join("message_not_created")
183
192
  autoload :MessageWillNotDestroy, action_root.join("message_will_not_destroy")
184
193
  autoload :ReadSSHInfo, action_root.join("read_ssh_info")
194
+ autoload :SetupWinrmPassword, action_root.join('setup_winrm_password')
185
195
  autoload :ReadState, action_root.join("read_state")
186
196
  autoload :RunInstance, action_root.join("run_instance")
187
197
  autoload :StartInstance, action_root.join("start_instance")
@@ -14,6 +14,7 @@
14
14
  require "log4r"
15
15
  require 'vagrant/util/retryable'
16
16
  require 'vagrant-google/util/timer'
17
+ require 'vagrant-google/action/setup_winrm_password'
17
18
 
18
19
  module VagrantPlugins
19
20
  module Google
@@ -41,65 +42,73 @@ module VagrantPlugins
41
42
  zone = env[:machine].provider_config.zone
42
43
 
43
44
  # Get the configs
44
- zone_config = env[:machine].provider_config.get_zone_config(zone)
45
- image = zone_config.image
46
- image_family = zone_config.image_family
47
- image_project_id = zone_config.image_project_id
48
- instance_group = zone_config.instance_group
49
- name = zone_config.name
50
- machine_type = zone_config.machine_type
51
- disk_size = zone_config.disk_size
52
- disk_name = zone_config.disk_name
53
- disk_type = zone_config.disk_type
54
- network = zone_config.network
55
- network_project_id = zone_config.network_project_id
56
- subnetwork = zone_config.subnetwork
57
- metadata = zone_config.metadata
58
- labels = zone_config.labels
59
- tags = zone_config.tags
60
- can_ip_forward = zone_config.can_ip_forward
61
- use_private_ip = zone_config.use_private_ip
62
- external_ip = zone_config.external_ip
63
- network_ip = zone_config.network_ip
64
- preemptible = zone_config.preemptible
65
- auto_restart = zone_config.auto_restart
66
- on_host_maintenance = zone_config.on_host_maintenance
67
- autodelete_disk = zone_config.autodelete_disk
68
- service_account_scopes = zone_config.scopes
69
- service_account = zone_config.service_account
70
- project_id = zone_config.google_project_id
71
- additional_disks = zone_config.additional_disks
45
+ zone_config = env[:machine].provider_config.get_zone_config(zone)
46
+ image = zone_config.image
47
+ image_family = zone_config.image_family
48
+ image_project_id = zone_config.image_project_id
49
+ instance_group = zone_config.instance_group
50
+ name = zone_config.name
51
+ machine_type = zone_config.machine_type
52
+ disk_size = zone_config.disk_size
53
+ disk_name = zone_config.disk_name
54
+ disk_type = zone_config.disk_type
55
+ network = zone_config.network
56
+ network_project_id = zone_config.network_project_id
57
+ subnetwork = zone_config.subnetwork
58
+ metadata = zone_config.metadata
59
+ labels = zone_config.labels
60
+ tags = zone_config.tags
61
+ can_ip_forward = zone_config.can_ip_forward
62
+ use_private_ip = zone_config.use_private_ip
63
+ external_ip = zone_config.external_ip
64
+ network_ip = zone_config.network_ip
65
+ preemptible = zone_config.preemptible
66
+ auto_restart = zone_config.auto_restart
67
+ on_host_maintenance = zone_config.on_host_maintenance
68
+ autodelete_disk = zone_config.autodelete_disk
69
+ service_account_scopes = zone_config.scopes
70
+ service_account = zone_config.service_account
71
+ project_id = zone_config.google_project_id
72
+ additional_disks = zone_config.additional_disks
73
+ accelerators = zone_config.accelerators
74
+ enable_secure_boot = zone_config.enable_secure_boot
75
+ enable_vtpm = zone_config.enable_vtpm
76
+ enable_integrity_monitoring = zone_config.enable_integrity_monitoring
72
77
 
73
78
  # Launch!
74
79
  env[:ui].info(I18n.t("vagrant_google.launching_instance"))
75
- env[:ui].info(" -- Name: #{name}")
76
- env[:ui].info(" -- Project: #{project_id}")
77
- env[:ui].info(" -- Type: #{machine_type}")
78
- env[:ui].info(" -- Disk type: #{disk_type}")
79
- env[:ui].info(" -- Disk size: #{disk_size} GB")
80
- env[:ui].info(" -- Disk name: #{disk_name}")
81
- env[:ui].info(" -- Image: #{image}")
82
- env[:ui].info(" -- Image family: #{image_family}")
83
- env[:ui].info(" -- Image Project: #{image_project_id}") if image_project_id
84
- env[:ui].info(" -- Instance Group: #{instance_group}")
85
- env[:ui].info(" -- Zone: #{zone}") if zone
86
- env[:ui].info(" -- Network: #{network}") if network
87
- env[:ui].info(" -- Network Project: #{network_project_id}") if network_project_id
88
- env[:ui].info(" -- Subnetwork: #{subnetwork}") if subnetwork
89
- env[:ui].info(" -- Metadata: '#{metadata}'")
90
- env[:ui].info(" -- Labels: '#{labels}'")
91
- env[:ui].info(" -- Network tags: '#{tags}'")
92
- env[:ui].info(" -- IP Forward: #{can_ip_forward}")
93
- env[:ui].info(" -- Use private IP: #{use_private_ip}")
94
- env[:ui].info(" -- External IP: #{external_ip}")
95
- env[:ui].info(" -- Network IP: #{network_ip}")
96
- env[:ui].info(" -- Preemptible: #{preemptible}")
97
- env[:ui].info(" -- Auto Restart: #{auto_restart}")
98
- env[:ui].info(" -- On Maintenance: #{on_host_maintenance}")
99
- env[:ui].info(" -- Autodelete Disk: #{autodelete_disk}")
100
- env[:ui].info(" -- Scopes: #{service_account_scopes}") if service_account_scopes
101
- env[:ui].info(" -- Service Account: #{service_account}") if service_account
102
- env[:ui].info(" -- Additional Disks:#{additional_disks}")
80
+ env[:ui].info(" -- Name: #{name}")
81
+ env[:ui].info(" -- Project: #{project_id}")
82
+ env[:ui].info(" -- Type: #{machine_type}")
83
+ env[:ui].info(" -- Disk type: #{disk_type}")
84
+ env[:ui].info(" -- Disk size: #{disk_size} GB")
85
+ env[:ui].info(" -- Disk name: #{disk_name}")
86
+ env[:ui].info(" -- Image: #{image}")
87
+ env[:ui].info(" -- Image family: #{image_family}")
88
+ env[:ui].info(" -- Image Project: #{image_project_id}") if image_project_id
89
+ env[:ui].info(" -- Instance Group: #{instance_group}")
90
+ env[:ui].info(" -- Zone: #{zone}") if zone
91
+ env[:ui].info(" -- Network: #{network}") if network
92
+ env[:ui].info(" -- Network Project: #{network_project_id}") if network_project_id
93
+ env[:ui].info(" -- Subnetwork: #{subnetwork}") if subnetwork
94
+ env[:ui].info(" -- Metadata: '#{metadata}'")
95
+ env[:ui].info(" -- Labels: '#{labels}'")
96
+ env[:ui].info(" -- Network tags: '#{tags}'")
97
+ env[:ui].info(" -- IP Forward: #{can_ip_forward}")
98
+ env[:ui].info(" -- Use private IP: #{use_private_ip}")
99
+ env[:ui].info(" -- External IP: #{external_ip}")
100
+ env[:ui].info(" -- Network IP: #{network_ip}")
101
+ env[:ui].info(" -- Preemptible: #{preemptible}")
102
+ env[:ui].info(" -- Auto Restart: #{auto_restart}")
103
+ env[:ui].info(" -- On Maintenance: #{on_host_maintenance}")
104
+ env[:ui].info(" -- Autodelete Disk: #{autodelete_disk}")
105
+ env[:ui].info(" -- Scopes: #{service_account_scopes}") if service_account_scopes
106
+ env[:ui].info(" -- Service Account: #{service_account}") if service_account
107
+ env[:ui].info(" -- Additional Disks: #{additional_disks}")
108
+ env[:ui].info(" -- Accelerators: #{accelerators}")
109
+ env[:ui].info(" -- Secure Boot: #{enable_secure_boot}") if enable_secure_boot
110
+ env[:ui].info(" -- vTPM: #{enable_vtpm}") if enable_vtpm
111
+ env[:ui].info(" -- Integrity Monitoring: #{enable_integrity_monitoring}") if enable_integrity_monitoring
103
112
 
104
113
  # Munge image config
105
114
  if image_family
@@ -129,6 +138,21 @@ module VagrantPlugins
129
138
  # Munge service_accounts / scopes config
130
139
  service_accounts = [ { :email => service_account, :scopes => service_account_scopes } ]
131
140
 
141
+ # Construct accelerator URLs
142
+ accelerators_url = []
143
+ accelerators.each do |accelerator|
144
+ unless accelerator.key?(:type)
145
+ next
146
+ end
147
+ accelerator_type = "https://compute.googleapis.com/compute/v1/projects/#{project_id}/zones/#{zone}/acceleratorTypes/#{accelerator[:type]}"
148
+ accelerator_count = accelerator.fetch(:count, 1)
149
+ accelerators_url.push({ :accelerator_type => accelerator_type,
150
+ :accelerator_count => accelerator_count })
151
+ end
152
+
153
+ # Munge shieldedInstance config
154
+ shielded_instance_config = { :enable_secure_boot => enable_secure_boot, :enable_vtpm => enable_vtpm, :enable_integrity_monitoring => enable_integrity_monitoring }
155
+
132
156
  begin
133
157
  request_start_time = Time.now.to_i
134
158
  disk = nil
@@ -201,7 +225,7 @@ module VagrantPlugins
201
225
 
202
226
  # Get additional disk auto delete
203
227
  additional_disk_auto_delete = nil
204
- if disk_config[:disk_type].nil?
228
+ if disk_config[:autodelete_disk].nil?
205
229
  # Default auto delete to true
206
230
  additional_disk_auto_delete = true
207
231
  else
@@ -243,24 +267,33 @@ module VagrantPlugins
243
267
  end
244
268
 
245
269
  defaults = {
246
- :name => name,
247
- :zone => zone,
248
- :machine_type => machine_type,
249
- :disk_size => disk_size,
250
- :disk_type => disk_type,
251
- :image => image,
252
- :network_interfaces => network_interfaces,
253
- :metadata => { :items => metadata.each.map { |k, v| {:key => k.to_s, :value => v.to_s} } },
254
- :labels => labels,
255
- :tags => { :items => tags },
256
- :can_ip_forward => can_ip_forward,
257
- :use_private_ip => use_private_ip,
258
- :external_ip => external_ip,
259
- :network_ip => network_ip,
260
- :disks => disks,
261
- :scheduling => scheduling,
262
- :service_accounts => service_accounts
270
+ :name => name,
271
+ :zone => zone,
272
+ :machine_type => machine_type,
273
+ :disk_size => disk_size,
274
+ :disk_type => disk_type,
275
+ :image => image,
276
+ :network_interfaces => network_interfaces,
277
+ :metadata => { :items => metadata.each.map { |k, v| { :key => k.to_s, :value => v.to_s } } },
278
+ :labels => labels,
279
+ :tags => { :items => tags },
280
+ :can_ip_forward => can_ip_forward,
281
+ :use_private_ip => use_private_ip,
282
+ :external_ip => external_ip,
283
+ :network_ip => network_ip,
284
+ :disks => disks,
285
+ :scheduling => scheduling,
286
+ :service_accounts => service_accounts,
287
+ :guest_accelerators => accelerators_url
263
288
  }
289
+
290
+ # XXX HACK - only add of the parameters are set in :shielded_instance_config we need to drop the field from
291
+ # the API call otherwise we'll error out with Google::Apis::ClientError
292
+ # TODO(temikus): Remove if the API changes, see internal GOOG ref: b/175063371
293
+ if shielded_instance_config.has_value?(true)
294
+ defaults[:shielded_instance_config] = shielded_instance_config
295
+ end
296
+
264
297
  server = env[:google_compute].servers.create(defaults)
265
298
  @logger.info("Machine '#{zone}:#{name}' created.")
266
299
  rescue *FOG_ERRORS => e
@@ -287,10 +320,26 @@ module VagrantPlugins
287
320
  env[:interrupted] = true
288
321
  end
289
322
 
323
+ # Parse out the image project in case it was not set
324
+ # and check if it is part of a public windows project
325
+ img_project = image.split("/")[6]
326
+ is_windows_image = img_project.eql?("windows-cloud") || img_project.eql?("windows-sql-cloud")
327
+
328
+ # Reset the password if a windows image unless flag overrides
329
+ setup_winrm_password = zone_config.setup_winrm_password
330
+ if setup_winrm_password.nil? && is_windows_image
331
+ setup_winrm_password = true
332
+ end
333
+
334
+ if setup_winrm_password
335
+ env[:ui].info("Setting up WinRM Password")
336
+ env[:action_runner].run(Action.action_setup_winrm_password, env)
337
+ end
338
+
290
339
  unless env[:terminated]
291
- env[:metrics]["instance_ssh_time"] = Util::Timer.time do
292
- # Wait for SSH to be ready.
293
- env[:ui].info(I18n.t("vagrant_google.waiting_for_ssh"))
340
+ env[:metrics]["instance_comm_time"] = Util::Timer.time do
341
+ # Wait for Comms to be ready.
342
+ env[:ui].info(I18n.t("vagrant_google.waiting_for_comm"))
294
343
  while true
295
344
  # If we're interrupted just back out
296
345
  break if env[:interrupted]
@@ -298,8 +347,8 @@ module VagrantPlugins
298
347
  sleep 2
299
348
  end
300
349
  end
301
- @logger.info("Time for SSH ready: #{env[:metrics]["instance_ssh_time"]}")
302
- env[:ui].info(I18n.t("vagrant_google.ready_ssh")) unless env[:interrupted]
350
+ @logger.info("Time for Comms ready: #{env[:metrics]["instance_comm_time"]}")
351
+ env[:ui].info(I18n.t("vagrant_google.ready_comm")) unless env[:interrupted]
303
352
  end
304
353
 
305
354
  # Terminate the instance if we were interrupted