vagrant-libvirt 0.3.0 → 0.4.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (34) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +170 -17
  3. data/lib/vagrant-libvirt/action/create_domain.rb +30 -9
  4. data/lib/vagrant-libvirt/action/forward_ports.rb +1 -1
  5. data/lib/vagrant-libvirt/action/package_domain.rb +2 -1
  6. data/lib/vagrant-libvirt/action/start_domain.rb +86 -29
  7. data/lib/vagrant-libvirt/action/wait_till_up.rb +7 -27
  8. data/lib/vagrant-libvirt/config.rb +202 -41
  9. data/lib/vagrant-libvirt/driver.rb +46 -31
  10. data/lib/vagrant-libvirt/provider.rb +2 -9
  11. data/lib/vagrant-libvirt/templates/domain.xml.erb +29 -5
  12. data/lib/vagrant-libvirt/version +1 -1
  13. data/lib/vagrant-libvirt/version.rb +57 -9
  14. data/spec/spec_helper.rb +28 -2
  15. data/spec/support/libvirt_context.rb +2 -0
  16. data/spec/support/sharedcontext.rb +4 -0
  17. data/spec/unit/action/create_domain_spec.rb +110 -35
  18. data/spec/unit/action/create_domain_spec/{default_storage_pool.xml → default_system_storage_pool.xml} +0 -0
  19. data/spec/unit/action/create_domain_spec/default_user_storage_pool.xml +17 -0
  20. data/spec/unit/action/start_domain_spec.rb +183 -1
  21. data/spec/unit/action/start_domain_spec/clock_timer_rtc.xml +50 -0
  22. data/spec/unit/action/start_domain_spec/default.xml +2 -2
  23. data/spec/unit/action/start_domain_spec/default_added_tpm_path.xml +48 -0
  24. data/spec/unit/action/start_domain_spec/default_added_tpm_version.xml +48 -0
  25. data/spec/unit/action/wait_till_up_spec.rb +14 -9
  26. data/spec/unit/config_spec.rb +392 -127
  27. data/spec/unit/provider_spec.rb +11 -0
  28. data/spec/unit/templates/domain_all_settings.xml +6 -3
  29. data/spec/unit/templates/domain_custom_cpu_model.xml +2 -1
  30. data/spec/unit/templates/domain_defaults.xml +2 -1
  31. data/spec/unit/templates/domain_spec.rb +80 -2
  32. data/spec/unit/templates/tpm/version_1.2.xml +54 -0
  33. data/spec/unit/templates/tpm/version_2.0.xml +53 -0
  34. metadata +74 -17
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 4200a82105f1c9bf2860841eb3c801b103649c76afae39e303f28542316f0bbd
4
- data.tar.gz: fd14f23b17262da08eac29401b779cde545913cb9b6bf4240b044a93a35fed52
3
+ metadata.gz: b55fc32f8adb0cb243c614739bd328914c41ba8af23ca327dc41e2dba2a5eefe
4
+ data.tar.gz: de8042a84390599e5f4eb7ae9ea63a2306644e7562b41bec3afeae795fe01333
5
5
  SHA512:
6
- metadata.gz: 7c068629389967340010d5d94594111fbbf661e895ede714bc45898bc7d2e21f860a8c8d6e9cdc4b7ae5ee77cdd1b6dd313193cb2d7b634971a251456695959b
7
- data.tar.gz: 724c11548cf02a12567bbb87470087539e39ed70aa67dd2d5938a6ed5879667fc03315022dfc1c2c6ca367b2da2552cb408e264c9fd1b2ab090506723f67a688
6
+ metadata.gz: 3958a03dca08540b0c49f444de1ba8164cdbc40056e3206b1af674c28f9cb15eda0a290f0044089e5f35f7ce69c1424828259042a64f19cea85f46f9ae738071
7
+ data.tar.gz: 5d60cf7e10f6468b3e2597a211634e6a04138dc22a7f320bbc753c07b1e8d3a4ae83de15fd6294061d0f282990e2a68e40b9a7849db6fe3db232055141d42b5c
data/README.md CHANGED
@@ -21,6 +21,7 @@ can help a lot :-)
21
21
  * [Using Docker based Installation](#using-docker-based-installation)
22
22
  * [Installation](#installation)
23
23
  * [Possible problems with plugin installation on Linux](#possible-problems-with-plugin-installation-on-linux)
24
+ * [Additional Notes for Fedora and Similar Linux Distributions](#additional-notes-for-fedora-and-similar-linux-distributions)
24
25
  * [Vagrant Project Preparation](#vagrant-project-preparation)
25
26
  * [Add Box](#add-box)
26
27
  * [Create Vagrantfile](#create-vagrantfile)
@@ -48,6 +49,7 @@ can help a lot :-)
48
49
  * [Watchdog device](#watchdog-device)
49
50
  * [Smartcard device](#smartcard-device)
50
51
  * [Hypervisor Features](#hypervisor-features)
52
+ * [Clock](#clock)
51
53
  * [CPU features](#cpu-features)
52
54
  * [Memory Backing](#memory-backing)
53
55
  * [No box and PXE boot](#no-box-and-pxe-boot)
@@ -57,6 +59,7 @@ can help a lot :-)
57
59
  * [QEMU Session Support](#qemu-session-support)
58
60
  * [Customized Graphics](#customized-graphics)
59
61
  * [TPM Devices](#tpm-devices)
62
+ * [Memory balloon](#memory-balloon)
60
63
  * [Libvirt communication channels](#libvirt-communication-channels)
61
64
  * [Custom command line arguments and environment variables](#custom-command-line-arguments-and-environment-variables)
62
65
  * [Box Format](#box-format)
@@ -108,6 +111,12 @@ To get the image:
108
111
  docker pull vagrantlibvirt/vagrant-libvirt:latest
109
112
  ```
110
113
 
114
+ Preparing the docker run, only once:
115
+
116
+ ```bash
117
+ mkdir -p ~/.vagrant.d/{boxes,data,tmp}
118
+ ```
119
+
111
120
  Running the image:
112
121
  ```bash
113
122
  docker run -it --rm \
@@ -116,10 +125,26 @@ docker run -it --rm \
116
125
  -v ~/.vagrant.d:/.vagrant.d \
117
126
  -v $(pwd):$(pwd) \
118
127
  -w $(pwd) \
128
+ --network host \
119
129
  vagrantlibvirt/vagrant-libvirt:latest \
120
130
  vagrant status
121
131
  ```
122
132
 
133
+ It's possible to define an alias in `~/.bashrc`, for example:
134
+ ```bash
135
+ alias vagrant='
136
+ mkdir -p ~/.vagrant.d/{boxes,data,tmp}; \
137
+ docker run -it --rm \
138
+ -e LIBVIRT_DEFAULT_URI \
139
+ -v /var/run/libvirt/:/var/run/libvirt/ \
140
+ -v ~/.vagrant.d:/.vagrant.d \
141
+ -v $(pwd):$(pwd) \
142
+ -w $(pwd) \
143
+ --network host \
144
+ vagrantlibvirt/vagrant-libvirt:latest \
145
+ vagrant'
146
+ ```
147
+
123
148
  Note that if you are connecting to a remote system libvirt, you may omit the
124
149
  `-v /var/run/libvirt/:/var/run/libvirt/` mount bind. Some distributions patch the local
125
150
  vagrant environment to ensure vagrant-libvirt uses `qemu:///session`, which means you
@@ -241,7 +266,20 @@ If you encounter the following load error when using the vagrant-libvirt plugin
241
266
  then the following steps have been found to resolve the problem. Thanks to James Reynolds (see https://github.com/hashicorp/vagrant/issues/11020#issuecomment-540043472). The specific version of libssh will change over time so references to the rpm in the commands below will need to be adjusted accordingly.
242
267
 
243
268
  ```shell
269
+ # Fedora
244
270
  dnf download --source libssh
271
+
272
+ # centos 8 stream, doesn't provide source RPMs, so you need to download like so
273
+ git clone https://git.centos.org/centos-git-common
274
+ # centos-git-common needs its tools in PATH
275
+ export PATH=$(readlink -f ./centos-git-common):$PATH
276
+ git clone https://git.centos.org/rpms/libssh
277
+ cd libssh
278
+ git checkout imports/c8s/libssh-0.9.4-1.el8
279
+ into_srpm.sh -d c8s
280
+ cd SRPMS
281
+
282
+ # common commands (make sure to adjust verison accordingly)
245
283
  rpm2cpio libssh-0.9.0-5.fc30.src.rpm | cpio -imdV
246
284
  tar xf libssh-0.9.0.tar.xz
247
285
  mkdir build
@@ -260,7 +298,20 @@ If you encounter the following load error when using the vagrant-libvirt plugin
260
298
  then the following steps have been found to resolve the problem. After the steps below are complete, then reinstall the vagrant-libvirt plugin without setting the `CONFIGURE_ARGS`. Thanks to Marco Bevc (see https://github.com/hashicorp/vagrant/issues/11020#issuecomment-625801983):
261
299
 
262
300
  ```shell
301
+ # Fedora
263
302
  dnf download --source krb5-libs
303
+
304
+ # centos 8 stream, doesn't provide source RPMs, so you need to download like so
305
+ git clone https://git.centos.org/centos-git-common
306
+ # centos-git-common needs its tools in PATH
307
+ export PATH=$(readlink -f ./centos-git-common):$PATH
308
+ git clone https://git.centos.org/rpms/krb5
309
+ cd krb5
310
+ git checkout imports/c8s/krb5-1.18.2-8.el8
311
+ into_srpm.sh -d c8s
312
+ cd SRPMS
313
+
314
+ # common commands (make sure to adjust verison accordingly)
264
315
  rpm2cpio krb5-1.18-1.fc32.src.rpm | cpio -imdV
265
316
  tar xf krb5-1.18.tar.gz
266
317
  cd krb5-1.18/src
@@ -349,10 +400,25 @@ URI](http://libvirt.org/uri.html):
349
400
  Default is `$HOME/.ssh/id_rsa`. Prepends `$HOME/.ssh/` if no directory
350
401
  * `socket` - Path to the Libvirt unix socket (e.g.
351
402
  `/var/run/libvirt/libvirt-sock`)
403
+ * `proxy_command` - For advanced usage. When connecting to remote libvirt
404
+ instances, if the default constructed proxy\_command which uses `-W %h:%p`
405
+ does not work, set this as needed. It performs interpolation using `{key}`
406
+ and supports only `{host}`, `{username}`, and `{id_ssh_key_file}`. This is
407
+ to try and avoid issues with escaping `%` and `$` which might be necessary
408
+ to the ssh command itself. e.g.:
409
+ `libvirt.proxy_command = "ssh {host} -l {username} -i {id_ssh_key_file} nc %h %p"`
352
410
  * `uri` - For advanced usage. Directly specifies what Libvirt connection URI
353
411
  vagrant-libvirt should use. Overrides all other connection configuration
354
412
  options
355
413
 
414
+ In the event that none of these are set (excluding the `driver` option) the
415
+ provider will attempt to retrieve the uri from the environment variable
416
+ `LIBVIRT_DEFAULT_URI` similar to how virsh works. If any of them are set, it
417
+ will ignore the environment variable. The reason the driver option is ignored
418
+ is that it is not uncommon for this to be explicitly set on the box itself
419
+ and there is no easily to determine whether it is being set by the user or
420
+ the box packager.
421
+
356
422
  Connection-independent options:
357
423
 
358
424
  * `storage_pool_name` - Libvirt storage pool name, where box image and instance
@@ -384,6 +450,14 @@ end
384
450
  set, which should be fine for paravirtualized guests, but some fully
385
451
  virtualized guests may require hda. NOTE: this option also applies only to
386
452
  disks associated with a box image.
453
+ * `disk_driver` - Extra options for the main disk driver ([see Libvirt documentation](http://libvirt.org/formatdomain.html#elementsDisks)).
454
+ NOTE: this option also applies only to disks associated with a box image. In all cases, the value `nil` can be used to force the hypervisor default behaviour (e.g. to override settings defined in top-level Vagrantfiles). Supported options include:
455
+ * `:cache` - Controls the cache mechanism. Possible values are "default", "none", "writethrough", "writeback", "directsync" and "unsafe".
456
+ * `:io` - Controls specific policies on I/O. Possible values are "threads" and "native".
457
+ * `:copy_on_read` - Controls whether to copy read backing file into the image file. The value can be either "on" or "off".
458
+ * `:discard` - Controls whether discard requests (also known as "trim" or "unmap") are ignored or passed to the filesystem. Possible values are "unmap" or "ignore".
459
+ Note: for discard to work, you will likely also need to set `disk_bus = 'scsi'`
460
+ * `:detect_zeroes` - Controls whether to detect zero write requests. The value can be "off", "on" or "unmap".
387
461
  * `nic_model_type` - parameter specifies the model of the network adapter when
388
462
  you create a domain value by default virtio KVM believe possible values, see
389
463
  the [documentation for
@@ -429,10 +503,6 @@ end
429
503
  ]
430
504
  ```
431
505
  * `loader` - Sets path to custom UEFI loader.
432
- * `volume_cache` - Controls the cache mechanism. Possible values are "default",
433
- "none", "writethrough", "writeback", "directsync" and "unsafe". [See
434
- driver->cache in Libvirt
435
- documentation](http://libvirt.org/formatdomain.html#elementsDisks).
436
506
  * `kernel` - To launch the guest with a kernel residing on host filesystems.
437
507
  Equivalent to qemu `-kernel`.
438
508
  * `initrd` - To specify the initramfs/initrd to use for the guest. Equivalent
@@ -504,6 +574,7 @@ end
504
574
  * `tpm_model` - The model of the TPM to which you wish to connect.
505
575
  * `tpm_type` - The type of TPM device to which you are connecting.
506
576
  * `tpm_path` - The path to the TPM device on the host system.
577
+ * `tpm_version` - The TPM version to use.
507
578
  * `dtb` - The device tree blob file, mostly used for non-x86 platforms. In case
508
579
  the device tree isn't added in-line to the kernel, it can be manually
509
580
  specified here.
@@ -532,7 +603,7 @@ Vagrant.configure("2") do |config|
532
603
  domain.memory = 2048
533
604
  domain.cpus = 2
534
605
  domain.nested = true
535
- domain.volume_cache = 'none'
606
+ domain.disk_driver :cache => 'none'
536
607
  end
537
608
  end
538
609
 
@@ -579,6 +650,7 @@ defined domain:
579
650
  * `tpm_model` - Updated
580
651
  * `tpm_type` - Updated
581
652
  * `tpm_path` - Updated
653
+ * `tpm_version` - Updated
582
654
 
583
655
  ## Networks
584
656
 
@@ -841,11 +913,6 @@ It has a number of options:
841
913
  * `size` - Size of the disk image. If unspecified, defaults to 10G.
842
914
  * `type` - Type of disk image to create. Defaults to *qcow2*.
843
915
  * `bus` - Type of bus to connect device to. Defaults to *virtio*.
844
- * `cache` - Cache mode to use, e.g. `none`, `writeback`, `writethrough` (see
845
- the [libvirt documentation for possible
846
- values](http://libvirt.org/formatdomain.html#elementsDisks) or
847
- [here](https://www.suse.com/documentation/sles11/book_kvm/data/sect1_chapter_book_kvm.html)
848
- for a fuller explanation). Defaults to *default*.
849
916
  * `allow_existing` - Set to true if you want to allow the VM to use a
850
917
  pre-existing disk. If the disk doesn't exist it will be created.
851
918
  Disks with this option set to true need to be removed manually.
@@ -853,13 +920,25 @@ It has a number of options:
853
920
  * `serial` - Serial number of the disk device.
854
921
  * `wwn` - WWN number of the disk device.
855
922
 
923
+ The following disk performance options can also be configured
924
+ (see the [libvirt documentation for possible values](http://libvirt.org/formatdomain.html#elementsDisks)
925
+ or [here](https://www.suse.com/documentation/sles11/book_kvm/data/sect1_chapter_book_kvm.html) for a fuller explanation).
926
+ In all cases, the options use the hypervisor default if not specified, or if set to `nil`.
927
+
928
+ * `cache` - Cache mode to use. Value may be `default`, `none`, `writeback`, `writethrough`, `directsync` or `unsafe`.
929
+ * `io` - Controls specific policies on I/O. Value may be `threads` or `native`.
930
+ * `copy_on_read` - Controls whether to copy read backing file into the image file. Value may be `on` or `off`.
931
+ * `discard` - Controls whether discard requests (also known as "trim" or "unmap") are ignored or passed to the filesystem. Value may be `unmap` or `ignore`.
932
+ Note: for discard to work, you will likely also need to set `:bus => 'scsi'`
933
+ * `detect_zeroes` - Controls whether to detect zero write requests. Value may be `off`, `on` or `unmap`.
934
+
856
935
  The following example creates two additional disks.
857
936
 
858
937
  ```ruby
859
938
  Vagrant.configure("2") do |config|
860
939
  config.vm.provider :libvirt do |libvirt|
861
940
  libvirt.storage :file, :size => '20G'
862
- libvirt.storage :file, :size => '40G', :type => 'raw'
941
+ libvirt.storage :file, :size => '40G', :bus => 'scsi', :type => 'raw', :discard => 'unmap', :detect_zeroes => 'on'
863
942
  end
864
943
  end
865
944
  ```
@@ -1181,6 +1260,27 @@ Vagrant.configure("2") do |config|
1181
1260
  end
1182
1261
  ```
1183
1262
 
1263
+ ## Clock
1264
+
1265
+ Clock offset can be specified via `libvirt.clock_offset`. (Default is utc)
1266
+
1267
+ Additionally timers can be specified via `libvirt.clock_timer`.
1268
+ Available options for timers are: name, track, tickpolicy, frequency, mode, present
1269
+
1270
+ ```ruby
1271
+ Vagrant.configure("2") do |config|
1272
+ config.vm.provider :libvirt do |libvirt|
1273
+ # Set clock offset to localtime
1274
+ libvirt.clock_offset = 'localtime'
1275
+ # Timers ...
1276
+ libvirt.clock_timer :name => 'rtc', :tickpolicy => 'catchup'
1277
+ libvirt.clock_timer :name => 'pit', :tickpolicy => 'delay'
1278
+ libvirt.clock_timer :name => 'hpet', :present => 'no'
1279
+ libvirt.clock_timer :name => 'hypervclock', :present => 'yes'
1280
+ end
1281
+ end
1282
+ ```
1283
+
1184
1284
  ## CPU features
1185
1285
 
1186
1286
  You can specify CPU feature policies via `libvirt.cpu_feature`. Available
@@ -1408,13 +1508,14 @@ Modern versions of Libvirt support connecting to TPM devices on the host
1408
1508
  system. This allows you to enable Trusted Boot Extensions, among other
1409
1509
  features, on your guest VMs.
1410
1510
 
1411
- In general, you will only need to modify the `tpm_path` variable in your guest
1412
- configuration. However, advanced usage, such as the application of a Software
1413
- TPM, may require modifying the `tpm_model` and `tpm_type` variables.
1511
+ To passthrough a hardware TPM, you will generally only need to modify the
1512
+ `tpm_path` variable in your guest configuration. However, advanced usage,
1513
+ such as the application of a Software TPM, may require modifying the
1514
+ `tpm_model`, `tpm_type` and `tpm_version` variables.
1414
1515
 
1415
- The TPM options will only be used if you specify a TPM path. Declarations of
1416
- any TPM options without specifying a path will result in those options being
1417
- ignored.
1516
+ The TPM options will only be used if you specify a TPM path or version.
1517
+ Declarations of any TPM options without specifying a path or version will
1518
+ result in those options being ignored.
1418
1519
 
1419
1520
  Here is an example of using the TPM options:
1420
1521
 
@@ -1428,6 +1529,41 @@ Vagrant.configure("2") do |config|
1428
1529
  end
1429
1530
  ```
1430
1531
 
1532
+ It's also possible for Libvirt to start an emulated TPM device on the host.
1533
+ Requires `swtpm` and `swtpm-tools`
1534
+
1535
+ ```ruby
1536
+ Vagrant.configure("2") do |config|
1537
+ config.vm.provider :libvirt do |libvirt|
1538
+ libvirt.tpm_model = "tpm-crb"
1539
+ libvirt.tpm_type = "emulator"
1540
+ libvirt.tpm_version = "2.0"
1541
+ end
1542
+ end
1543
+ ```
1544
+
1545
+ ## Memory balloon
1546
+
1547
+ The configuration of the memory balloon device can be overridden. By default,
1548
+ libvirt will automatically attach a memory balloon; this behavior is preserved
1549
+ by not configuring any memballoon-related options. The memory balloon can be
1550
+ explicitly disabled by setting `memballoon_enabled` to `false`. Setting
1551
+ `memballoon_enabled` to `true` will allow additional configuration of
1552
+ memballoon-related options.
1553
+
1554
+ Here is an example of using the memballoon options:
1555
+
1556
+ ```ruby
1557
+ Vagrant.configure("2") do |config|
1558
+ config.vm.provider :libvirt do |libvirt|
1559
+ libvirt.memballoon_enabled = true
1560
+ libvirt.memballoon_model = 'virtio'
1561
+ libvirt.memballoon_pci_bus = '0x00'
1562
+ libvirt.memballoon_pci_slot = '0x0f'
1563
+ end
1564
+ end
1565
+ ```
1566
+
1431
1567
  ## Libvirt communication channels
1432
1568
 
1433
1569
  For certain functionality to be available within a guest, a private
@@ -1532,6 +1668,23 @@ The box is a tarball containing:
1532
1668
 
1533
1669
  ## Create Box
1534
1670
 
1671
+ If creating a box from a modified vagrant-libvirt machine, ensure that
1672
+ you have set the `config.ssh.insert_key = false` in the original Vagrantfile
1673
+ as otherwise Vagrant will replace the default connection key-pair that is
1674
+ required on first boot with one specific to the machine and prevent
1675
+ the default key from working on the exported result.
1676
+ ```ruby
1677
+ Vagrant.configure("2") do |config|
1678
+ # this setting is only recommended if planning to export the
1679
+ # resulting machine
1680
+ config.ssh.insert_key = false
1681
+
1682
+ config.vm.define :test_vm do |test_vm|
1683
+ test_vm.vm.box = "fedora/32-cloud-base"
1684
+ end
1685
+ end
1686
+ ```
1687
+
1535
1688
  To create a vagrant-libvirt box from a qcow2 image, run `create_box.sh`
1536
1689
  (located in the tools directory):
1537
1690
 
@@ -5,6 +5,7 @@ module VagrantPlugins
5
5
  module Action
6
6
  class CreateDomain
7
7
  include VagrantPlugins::ProviderLibvirt::Util::ErbTemplate
8
+ include VagrantPlugins::ProviderLibvirt::Util::StorageUtil
8
9
 
9
10
  def initialize(app, _env)
10
11
  @logger = Log4r::Logger.new('vagrant_libvirt::action::create_domain')
@@ -41,6 +42,8 @@ module VagrantPlugins
41
42
  @nodeset = config.nodeset
42
43
  @features = config.features
43
44
  @features_hyperv = config.features_hyperv
45
+ @clock_offset = config.clock_offset
46
+ @clock_timers = config.clock_timers
44
47
  @shares = config.shares
45
48
  @cpu_mode = config.cpu_mode
46
49
  @cpu_model = config.cpu_model
@@ -52,11 +55,12 @@ module VagrantPlugins
52
55
  @machine_arch = config.machine_arch
53
56
  @disk_bus = config.disk_bus
54
57
  @disk_device = config.disk_device
58
+ @disk_driver_opts = config.disk_driver_opts
55
59
  @nested = config.nested
56
60
  @memory_size = config.memory.to_i * 1024
57
61
  @memory_backing = config.memory_backing
58
62
  @management_network_mac = config.management_network_mac
59
- @domain_volume_cache = config.volume_cache
63
+ @domain_volume_cache = config.volume_cache || 'default'
60
64
  @kernel = config.kernel
61
65
  @cmd_line = config.cmd_line
62
66
  @emulator_path = config.emulator_path
@@ -80,6 +84,7 @@ module VagrantPlugins
80
84
  @tpm_model = config.tpm_model
81
85
  @tpm_type = config.tpm_type
82
86
  @tpm_path = config.tpm_path
87
+ @tpm_version = config.tpm_version
83
88
 
84
89
  # Boot order
85
90
  @boot_order = config.boot_order
@@ -147,12 +152,10 @@ module VagrantPlugins
147
152
  # If we have a box, take the path from the domain volume and set our storage_prefix.
148
153
  # If not, we dump the storage pool xml to get its defined path.
149
154
  # the default storage prefix is typically: /var/lib/libvirt/images/
150
- if !config.qemu_use_session
151
- if env[:machine].config.vm.box
152
- storage_prefix = File.dirname(@domain_volume_path) + '/' # steal
153
- else
154
- storage_prefix = get_disk_storage_prefix(env, @storage_pool_name)
155
- end
155
+ if env[:machine].config.vm.box
156
+ storage_prefix = File.dirname(@domain_volume_path) + '/' # steal
157
+ else
158
+ storage_prefix = get_disk_storage_prefix(env, @storage_pool_name)
156
159
  end
157
160
 
158
161
  @disks.each do |disk|
@@ -184,6 +187,8 @@ module VagrantPlugins
184
187
  format_type: disk[:type],
185
188
  path: disk[:absolute_path],
186
189
  capacity: disk[:size],
190
+ owner: storage_uid(env),
191
+ group: storage_uid(env),
187
192
  #:allocation => ?,
188
193
  pool_name: disk_pool_name
189
194
  )
@@ -224,6 +229,10 @@ module VagrantPlugins
224
229
  @features_hyperv.each do |feature|
225
230
  env[:ui].info(" -- Feature (HyperV): name=#{feature[:name]}, state=#{feature[:state]}")
226
231
  end
232
+ env[:ui].info(" -- Clock offset: #{@clock_offset}")
233
+ @clock_timers.each do |timer|
234
+ env[:ui].info(" -- Clock timer: #{timer.map { |k,v| "#{k}=#{v}"}.join(', ')}")
235
+ end
227
236
  env[:ui].info(" -- Memory: #{@memory_size / 1024}M")
228
237
  unless @nodeset.nil?
229
238
  env[:ui].info(" -- Nodeset: #{@nodeset}")
@@ -242,7 +251,13 @@ module VagrantPlugins
242
251
  end
243
252
  env[:ui].info(" -- Storage pool: #{@storage_pool_name}")
244
253
  env[:ui].info(" -- Image: #{@domain_volume_path} (#{env[:box_virtual_size]}G)")
245
- env[:ui].info(" -- Volume Cache: #{@domain_volume_cache}")
254
+
255
+ if not @disk_driver_opts.empty?
256
+ env[:ui].info(" -- Disk driver opts: #{@disk_driver_opts.reject { |k,v| v.nil? }.map { |k,v| "#{k}='#{v}'"}.join(' ')}")
257
+ else
258
+ env[:ui].info(" -- Disk driver opts: cache='#{@domain_volume_cache}'")
259
+ end
260
+
246
261
  env[:ui].info(" -- Kernel: #{@kernel}")
247
262
  env[:ui].info(" -- Initrd: #{@initrd}")
248
263
  env[:ui].info(" -- Graphics Type: #{@graphics_type}")
@@ -253,7 +268,13 @@ module VagrantPlugins
253
268
  env[:ui].info(" -- Video VRAM: #{@video_vram}")
254
269
  env[:ui].info(" -- Sound Type: #{@sound_type}")
255
270
  env[:ui].info(" -- Keymap: #{@keymap}")
256
- env[:ui].info(" -- TPM Path: #{@tpm_path}")
271
+ env[:ui].info(" -- TPM Backend: #{@tpm_type}")
272
+ if @tpm_type == 'emulator'
273
+ env[:ui].info(" -- TPM Model: #{@tpm_model}")
274
+ env[:ui].info(" -- TPM Version: #{@tpm_version}")
275
+ else
276
+ env[:ui].info(" -- TPM Path: #{@tpm_path}")
277
+ end
257
278
 
258
279
  @boot_order.each do |device|
259
280
  env[:ui].info(" -- Boot device: #{device}")
@@ -107,7 +107,7 @@ module VagrantPlugins
107
107
  "IdentityFile='\"#{pk}\"'"
108
108
  end).map { |s| s.prepend('-o ') }.join(' ')
109
109
 
110
- options += " -o ProxyCommand=\"#{ssh_info[:proxy_command]}\"" if machine.provider_config.connect_via_ssh
110
+ options += " -o ProxyCommand=\"#{ssh_info[:proxy_command]}\"" if machine.provider_config.proxy_command
111
111
 
112
112
  # TODO: instead of this, try and lock and get the stdin from spawn...
113
113
  ssh_cmd = ''