Commit Graph

1426 Commits

Author SHA1 Message Date
Darragh Bailey
1048e72dac
Tidy UI output on create (#1643)
Skip emitting items that are not set by default where possible.
2022-10-13 15:00:12 +00:00
Darragh Bailey
e87de89855
Use provided ssh port for machine (#1641)
To allow for a different ssh port to be used when connecting to a
machine for NFS setup, use the port provided in the ssh_info hash
with a fallback to the default ssh port.

This may allow NFS mounting into Windows guests once support is added to
vagrant itself to handle NFS installation.

Fixes: #1640
2022-10-13 13:28:25 +01:00
Darragh Bailey
305232ff11
Unit context improvements (#1639)
Move the unit context to a name matching the other contexts. Remove some
unnecessary entries from it that are unused, and remove references to
the old name relying on spec helper to load all contexts.
2022-10-11 17:19:52 +00:00
Darragh Bailey
a8ab0040ff
Disable graphics autoport attr when using spice (#1636)
If the graphics type is set to spice, then skip setting the autoport as
the attribute will be discarded by libvirt causing it to appear as
though not all of the XML sent to start the domain was accepted.
2022-10-11 18:12:32 +01:00
Darragh Bailey
59c7d9f18e
Use same list_all_networks and filter (#1638)
Ensure the same filtering for networks supported by vagrant-libvirt is
done for both driver and util by moving to call the same function with
filtering.

This avoids calls for the list of host devices from failing to parse
some networks that are not supported.

Fixes: #599
2022-10-11 17:54:41 +01:00
dependabot[bot]
736190ae41
Bump actions/github-script from 5 to 6 (#1637) 2022-10-10 12:52:26 +00:00
Oded Arbel
d38e130f47
Floppy support (#1334)
Add support for attaching 1 or 2 floppy drives to the VM using "vfd"
image files.
2022-10-08 10:59:06 +00:00
Who? Me?!
35e3730abf
Add vcpupin support (#1007)
Support tuning to pin which host CPUs the vCPUs will be pinned to.
2022-10-08 12:14:08 +02:00
Darragh Bailey
629ead3140
Adjust workflow to work for forked PRs (#1635)
Save the triggering PR as an artifact when building the gem as it will
be required by the triggered workflow to determine the PR that triggered
it since Github does not populate the event data if the PR is a forked
PR.
2022-10-07 10:24:11 +00:00
Darragh Bailey
67e36bd2a3
Workflow to notify gem artifact available for PR (#1632)
Adds workflow to publish a link to the gem artifact built for the
current PR. Allows for contributors or those impacted by issues to have
an easier test mechanism.
2022-10-05 18:39:25 +00:00
Darragh Bailey
414aef131d
Ignore networks that cannot be used (#1628)
If the network does not have a bridge name, ignore it and move onto the
next one. This allows for hostdev networks to exist without breaking.

Includes some rudimentary testing to exercise the lookup code along with
a small bit of refactoring based on the realisation that there is no
need to lookup the network information twice as it is available if the
list_all_networks API is used.

Fixes: #599
2022-10-05 13:58:37 +00:00
Darragh Bailey
8e45f3abb2
Ensure credentials file permissions set correctly (#1631) 2022-10-05 13:38:28 +00:00
Darragh Bailey
f5b70bc074
Query host interfaces directly as libvirt may not include them (#1627)
On some distros the libvirt does not appear to always return all of the
host interfaces. Switch to using 'ip -j link show' to read them directly
from the system in order to ensure all devices are read.

Refactor the driver tests to better isolate between test setup for the
different sets of functions and avoid accidental setting of
configuration details that may not be obvious.

Fixes: #1624
2022-10-05 13:29:44 +00:00
Darragh Bailey
2c67743f07
Note that vagrant may select nfs or rsync as default synced_folder (#1630)
Depending on the installed packages present on the host system, vagrant
may select either nfs or rsync as the default synced_folder
implementation.

Fixes: #419
2022-10-05 00:56:31 +01:00
Darragh Bailey
48c31f12b3
Make code available as gem for test installs (#1629)
Make it possible for others to help validate vagrant-libvirt plugin
changes by building a gem that can be installed from a github packages
repository.
2022-10-05 00:11:00 +01:00
dependabot[bot]
28c68d2f99
Bump actions/github-script from 6.3.0 to 6.3.1 (#1626) 2022-10-03 10:10:51 +00:00
Darragh Bailey
624df5d8ed
Select better defaults when graphics type is spice (#1625)
Reduce the number of other graphics settings that need to be adjusted
once the type has been set to spice by defaulting the remaining options
to ones better suited for spice, in addition to adding the required
channel automatically.

Fixes: #1482
2022-10-02 21:43:37 +01:00
Darragh Bailey
6d5ad2b87c
Update development steps (#1623)
Ensure the development steps can be successfully executed with system
ruby on Fedora 36 to try and help new contributors have an easier
on-ramp.

Support running acceptance tests locally, though note that it may
require rvm if vagrant doesn't support the ruby version used by the
distro.
2022-10-01 15:53:00 +01:00
Darragh Bailey
54853d1d3d
Report graphics port after resolving (#1622)
Allow libvirt to start the domain before reading back the XML to
retrieve the port assigned automatically for subsequent graphics access
when autoport is enabled.

Fixes: #992
2022-10-01 13:59:36 +00:00
Darragh Bailey
7813ad3740
Emit default for bootmenu to be off (#1621)
Ensure the bootmenu is disabled by default. When not specified it will
default to the hypervisor default behaviour, however this is not
necessarily defined consistently across different distros. Therefore for
a consistent behaviour, simply ensure it is always configured to be off,
unless explicitly required to be enabled when the boot order is
configured.

Fixes: #947
2022-09-30 22:36:21 +01:00
Darragh Bailey
2882ad01b1
Add example for use of kernel/initrd/cmdline options (#1620)
Provide a simple working example of how to set the kernel, initrd,
cmdline options and where to retrieve the required files when working
with disk images.

Fixes: #920
2022-09-30 16:39:56 +00:00
Darragh Bailey
3599fd7600
Ensure explicit setting of inputs respected (#1619)
Make sure that explicit defining of input devices prevents injection of
the default mouse using ps/2 entry.

Fixes: #1092
2022-09-30 17:06:59 +01:00
dependabot[bot]
c0ce667a31
Bump actions/github-script from 6.2.0 to 6.3.0 (#1617) 2022-09-29 11:34:05 +00:00
dependabot[bot]
e94b73b015
Bump actions/upload-artifact from 2 to 3 (#1616) 2022-09-29 11:06:50 +00:00
dependabot[bot]
f4038b803b
Bump actions/download-artifact from 2 to 3 (#1615) 2022-09-28 23:01:57 +00:00
Darragh Bailey
6dd3aba4b9
Remove remaining tabs from template (#1614) 2022-09-28 23:40:32 +01:00
Darragh Bailey
997fbc7faf
Replace 9p synced folder :owner with :access (#1571)
The 9p synced folder option :owner is better named as :access, which is
documented by 9p and less likely to cause confusion on the expected
behaviour as it does not control the owner of the files.

Relates-To: #378
2022-09-28 19:13:41 +00:00
Darragh Bailey
0af8931c36
Facilitate profiling of tests (#1611)
Allow for optional installation of test profilers to help development
identify slow areas needing additional work.
2022-09-28 18:23:25 +00:00
Darragh Bailey
6f2674eec6
Remove need to pass machine and domain around in driver (#1579)
The driver is created with a specific machine instance, use this in
stead of requiring a specific instance be passed in. Apply the same
approach to domain where possible which allows the same get ip address
function to be called with and without a domain being passed in to save
lookup during loops.
2022-09-28 17:40:32 +00:00
Darragh Bailey
0c1d97ec7c
Use correct release branch for changelog (#1612)
Ensure changelog generation job uses resolved branch instead of default.
2022-09-28 18:34:49 +01:00
Darragh Bailey
c8e3e2c805
Mock out synced folders for action tests (#1610)
Allowing synced folders to be validated as part of the action tests can
cause an excessive amount of time to be consumed due to many calls to
systemd and distro packager to check if nfs is available on the host.
2022-09-28 18:17:18 +01:00
dependabot[bot]
d8f0b66c5b
Bump commonmarker from 0.23.5 to 0.23.6 in /docs (#1607) 2022-09-28 14:52:38 +00:00
Darragh Bailey
14a8889e33
Rework release workflow (#1609)
Change the release workflow and jobs to ensure more of it is always
exercised for any change and only the actual publishing of the release
is the only part that is limited to be run when tagged.

Additionally try to enable caching and save the generated notes as an
artifact in case the final step fails.
2022-09-28 14:06:53 +01:00
Darragh Bailey
f111842dbe
Handle different attribute and element ordering (#1592)
Normalise the XML to ensure the attributes for both documents have the
same ordering to prevent excessive noise when differences are detected.
Additionally sort various elements based on attributes that make
ordering irrelevant to allow for simpler comparison using xmlsimple.

Closes: #1583
2022-09-22 17:14:49 +01:00
Darragh Bailey
5e0b169dff
Use correct url for script download in docs (#1606)
Reference the correct download URL in the installation documents for
retrieving the install script from the vagrant-libvirt-qa repository.

Fixes: #1601
2022-09-22 15:51:44 +00:00
Dan Čermák
309f78c8fd
[Dockerfile] Fix creation of plugins.json with buildah (#1602)
Multi-line RUN instructions are unsupported by default docker (works 
with buildkit) and buildah, instead one has to use other tricks like 
ANSI-C quoting for the shell via \n\ and multiple echo commands.

Includes a buildah github workflow to help ensure future
compatibility.
2022-09-22 16:42:58 +01:00
Darragh Bailey
aae0ddb37b
Update specs to check for warning not being emitted (#1605)
Updating the behaviour to only warn on the XML differing instead of
erroring missed updating the spec tests to replace the check for the
error message with a warn message.
2022-09-22 15:12:16 +00:00
Rui Lopes
f6992fd848
fix qemu_use_agent to work with windows guests (#1599)
When using `qemu_use_agent = true`, the provisioning of a Windows
machine was faling to get the IP address with the error:

```
`get_ipaddress_from_qemu_agent': undefined method `downcase' for nil:NilClass (NoMethodError)
```

```plain
Traceback (most recent call last):
	18: from /opt/vagrant/embedded/gems/2.3.0/gems/logging-2.3.1/lib/logging/diagnostic_context.rb:474:in `block in create_with_logging_context'
	17: from /opt/vagrant/embedded/gems/2.3.0/gems/vagrant-2.3.0/lib/vagrant/action/builtin/wait_for_communicator.rb:16:in `block in call'
	16: from /opt/vagrant/embedded/gems/2.3.0/gems/vagrant-2.3.0/plugins/communicators/winrm/communicator.rb:31:in `wait_for_ready'
	15: from /opt/vagrant/embedded/lib/ruby/2.7.0/timeout.rb:110:in `timeout'
	14: from /opt/vagrant/embedded/lib/ruby/2.7.0/timeout.rb:33:in `catch'
	13: from /opt/vagrant/embedded/lib/ruby/2.7.0/timeout.rb:33:in `catch'
	12: from /opt/vagrant/embedded/lib/ruby/2.7.0/timeout.rb:33:in `block in catch'
	11: from /opt/vagrant/embedded/lib/ruby/2.7.0/timeout.rb:95:in `block in timeout'
	10: from /opt/vagrant/embedded/gems/2.3.0/gems/vagrant-2.3.0/plugins/communicators/winrm/communicator.rb:37:in `block in wait_for_ready'
	 9: from /opt/vagrant/embedded/gems/2.3.0/gems/vagrant-2.3.0/plugins/communicators/winrm/helper.rb:21:in `winrm_info'
	 8: from /opt/vagrant/embedded/gems/2.3.0/gems/vagrant-2.3.0/plugins/communicators/winrm/helper.rb:35:in `winrm_address'
	 7: from /opt/vagrant/embedded/gems/2.3.0/gems/vagrant-2.3.0/lib/vagrant/machine.rb:452:in `ssh_info'
	 6: from /home/rgl/.vagrant.d/gems/2.7.6/gems/vagrant-libvirt-0.10.7/lib/vagrant-libvirt/provider.rb:58:in `ssh_info'
	 5: from /home/rgl/.vagrant.d/gems/2.7.6/gems/vagrant-libvirt-0.10.7/lib/vagrant-libvirt/provider.rb:98:in `state'
	 4: from /home/rgl/.vagrant.d/gems/2.7.6/gems/vagrant-libvirt-0.10.7/lib/vagrant-libvirt/driver.rb:194:in `state'
	 3: from /home/rgl/.vagrant.d/gems/2.7.6/gems/vagrant-libvirt-0.10.7/lib/vagrant-libvirt/driver.rb:103:in `get_domain_ipaddress'
	 2: from /home/rgl/.vagrant.d/gems/2.7.6/gems/vagrant-libvirt-0.10.7/lib/vagrant-libvirt/driver.rb:242:in `get_ipaddress_from_qemu_agent'
	 1: from /home/rgl/.vagrant.d/gems/2.7.6/gems/vagrant-libvirt-0.10.7/lib/vagrant-libvirt/driver.rb:242:in `each'
/home/rgl/.vagrant.d/gems/2.7.6/gems/vagrant-libvirt-0.10.7/lib/vagrant-libvirt/driver.rb:243:in `block in get_ipaddress_from_qemu_agent': undefined method `downcase' for nil:NilClass (NoMethodError)
```

This is due to Windows qemu-ga reporting interfaces that do not have a
`hardware-address`. For example, the `Loopback Pseudo-Interface 1` does
not have it:

```console
$ virsh qemu-agent-command openwrt-vagrant-windows '{"execute":"guest-network-get-interfaces"}' --pretty
{
  "return": [
    {
      "name": "Ethernet 2",
      "ip-addresses": [
        {
          "ip-address-type": "ipv4",
          "ip-address": "10.0.20.11",
          "prefix": 24
        }
      ],
      "statistics": {
        "tx-packets": 3090,
        "tx-errs": 0,
        "rx-bytes": 50713786,
        "rx-dropped": 0,
        "rx-packets": 35116,
        "rx-errs": 0,
        "tx-bytes": 744040,
        "tx-dropped": 0
      },
      "hardware-address": "08:00:27:00:00:0b"
    },
    {
      "name": "Loopback Pseudo-Interface 1",
      "ip-addresses": [
        {
          "ip-address-type": "ipv6",
          "ip-address": "::1",
          "prefix": 128
        },
        {
          "ip-address-type": "ipv4",
          "ip-address": "127.0.0.1",
          "prefix": 8
        }
      ],
      "statistics": {
        "tx-packets": 0,
        "tx-errs": 0,
        "rx-bytes": 0,
        "rx-dropped": 0,
        "rx-packets": 0,
        "rx-errs": 0,
        "tx-bytes": 0,
        "tx-dropped": 0
      }
    }
  ]
}
```

With this change, the IP address can now be found without errors:

```plain
...
    windows: WinRM address: 10.0.20.11:5985
    windows: WinRM username: vagrant
...
```
2022-09-22 10:40:17 +00:00
Dan Čermák
33f2a39b3d
Spec fixes (#1603)
- the sysprep.sh script was not executable (flagged by rpmlint)
- Need to explicitly `require 'tmpdir'` in `spec_helper.rb` on openSUSE
Tumbleweed,
  otherwise you get tons of failures like:
```
An error occurred while loading ./spec/unit/action/prepare_nfs_settings_spec.rb.
Failure/Error: temp_dir = Dir.mktmpdir("rspec-")

NoMethodError:
  undefined method `mktmpdir' for Dir:Class

    temp_dir = Dir.mktmpdir("rspec-")
                  ^^^^^^^^^
  Did you mean?  mkdir
# ./spec/spec_helper.rb:44:in `block in <top (required)>'
# ./spec/spec_helper.rb:41:in `<top (required)>'
# ./spec/unit/action/prepare_nfs_settings_spec.rb:3:in `require'
# ./spec/unit/action/prepare_nfs_settings_spec.rb:3:in `<top (required)>'
```
2022-09-22 11:35:14 +01:00
Rui Lopes
17876ee81c
silence the qemu_use_agent warning message (#1598)
the message fills the screen with expected warnings messages

when we need to debug this problem the message is already logged, so
there is no need to show it in the normal case

these are the warning messages that were displayed:

```
==> debian: Waiting for domain to get an IP address...
Unable to receive IP via qemu agent: [Call to virDomainQemuAgentCommand failed: Guest agent is not responding: QEMU guest agent is not connected]
...
==> debian: Waiting for machine to boot. This may take a few minutes...
Unable to receive IP via qemu agent: [Call to virDomainQemuAgentCommand failed: Guest agent is not responding: QEMU guest agent is not connected]
...
```
2022-09-17 19:22:15 +01:00
dependabot[bot]
fdff19b311
Bump actions/github-script from 3.0.0 to 6.2.0 (#1594) 2022-09-13 08:12:59 +00:00
dependabot[bot]
deb2b0a923
Bump docker/setup-buildx-action from 1 to 2 (#1596) 2022-09-12 14:25:32 +00:00
dependabot[bot]
6775bf81b6
Bump actions/cache from 2 to 3 (#1595) 2022-09-12 14:15:41 +00:00
dependabot[bot]
cf2ffa3d26
Bump docker/build-push-action from 2 to 3 (#1593) 2022-09-12 14:03:38 +00:00
dependabot[bot]
281422fda0
Bump JamesIves/github-pages-deploy-action from 4.3.3 to 4.4.0 (#1591) 2022-09-08 18:59:27 +00:00
dependabot[bot]
6226d4d6cd
Bump CharMixer/auto-changelog-action from 1.1 to 1.4 (#1590) 2022-09-08 18:52:00 +00:00
dependabot[bot]
f46cd70144
Bump actions/checkout from 2 to 3 (#1589) 2022-09-08 18:41:24 +00:00
dependabot[bot]
5412b0638c
Bump docker/setup-qemu-action from 1 to 2 (#1588) 2022-09-08 18:29:39 +00:00
dependabot[bot]
48f164e67d
Bump docker/login-action from 1 to 2 (#1587) 2022-09-08 17:34:28 +00:00
Darragh Bailey
bbbe33eac2
Add actions to be updated by dependabot (#1586) 2022-09-08 17:20:41 +00:00