vagrant_utm 0.1.4 → 0.1.5
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 +4 -4
- data/CHANGELOG.md +6 -0
- data/docs/commands.md +2 -2
- data/docs/configuration.md +2 -0
- data/lib/vagrant_utm/action/boot.rb +27 -2
- data/lib/vagrant_utm/config.rb +14 -0
- data/lib/vagrant_utm/scripts/customize_vm.applescript +8 -0
- data/lib/vagrant_utm/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: f800390a333ce7c68ebbc03360853356ddc52c6de36358e3aa305a32d9e58ff3
|
|
4
|
+
data.tar.gz: 7a0de84f4ae5190a8ca7eec906deeaf90b49ba683fecba3058b790e53434b2eb
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 7e0e5df946e3d422129aa57d3380b4e7035e0da0632121bc596171a7e1328b23bd6b4d030d19adaad7ac72d1afc5c193759f94414a839c781286f87d62ffbc76
|
|
7
|
+
data.tar.gz: 377c20d5889e75d59a0c00d410428056449c3cf2fe61805aecd0587f048e1f4e791d762cee9ff66c0b69c55e4e80dee5d39e495d4424a8da6096199bf1e02571
|
data/CHANGELOG.md
CHANGED
data/docs/commands.md
CHANGED
|
@@ -155,6 +155,6 @@ List all IP addresses associated with network interfaces on the guest.
|
|
|
155
155
|
|
|
156
156
|
`utmctl start --disposable`
|
|
157
157
|
|
|
158
|
-
Start virtual machine in disposable
|
|
158
|
+
Start virtual machine in disposable mode, which allows you to run a virtual machine without saving any persistent changes to the drive.
|
|
159
159
|
|
|
160
|
-
Read about Disposable mode in [UTM docs](https://docs.getutm.app/advanced/disposable/)
|
|
160
|
+
Read about Disposable mode in [UTM docs](https://docs.getutm.app/advanced/disposable/)
|
data/docs/configuration.md
CHANGED
|
@@ -45,6 +45,8 @@ Vagrant.configure("2") do |config|
|
|
|
45
45
|
u.cpus = 1
|
|
46
46
|
# Memory in MB
|
|
47
47
|
u.memory = 1024
|
|
48
|
+
# VM icon (Available icons https://github.com/utmapp/UTM/tree/main/Icons)
|
|
49
|
+
u.icon = "debian"
|
|
48
50
|
# Notes for UTM VM (Appears in UTM UI)
|
|
49
51
|
u.notes = "Vagrant: For testing plugin development"
|
|
50
52
|
# QEMU Directoy Share mode for the VM.
|
|
@@ -9,10 +9,35 @@ module VagrantPlugins
|
|
|
9
9
|
@app = app
|
|
10
10
|
end
|
|
11
11
|
|
|
12
|
-
def call(env)
|
|
12
|
+
def call(env) # rubocop:disable Metrics/AbcSize
|
|
13
13
|
# Start up the VM and wait for it to boot.
|
|
14
14
|
env[:ui].info I18n.t("vagrant.actions.vm.boot.booting")
|
|
15
|
-
|
|
15
|
+
|
|
16
|
+
# Wait for AppleScript configuration changes to be fully saved
|
|
17
|
+
# before attempting to start the VM to avoid OSStatus error -609
|
|
18
|
+
# We retry the start command with exponential backoff if it fails
|
|
19
|
+
max_retries = 3
|
|
20
|
+
retry_count = 0
|
|
21
|
+
retry_delay = 1
|
|
22
|
+
|
|
23
|
+
max_retries.times do
|
|
24
|
+
env[:machine].provider.driver.start
|
|
25
|
+
break # Success, exit the loop
|
|
26
|
+
rescue VagrantPlugins::Utm::Errors::UtmctlError => e
|
|
27
|
+
# Only retry if it's an OSStatus error (configuration still being saved)
|
|
28
|
+
raise unless e.message.include?("OSStatus")
|
|
29
|
+
|
|
30
|
+
retry_count += 1
|
|
31
|
+
|
|
32
|
+
# If we've exhausted all retries, re-raise the error
|
|
33
|
+
raise if retry_count >= max_retries
|
|
34
|
+
|
|
35
|
+
message = "VM configuration may still be saving. Retrying in #{retry_delay} seconds... " \
|
|
36
|
+
"(#{retry_count}/#{max_retries})"
|
|
37
|
+
env[:ui].warn message
|
|
38
|
+
sleep retry_delay
|
|
39
|
+
retry_delay *= 2 # Exponential backoff: 1s, 2s, 4s
|
|
40
|
+
end
|
|
16
41
|
|
|
17
42
|
@app.call(env)
|
|
18
43
|
end
|
data/lib/vagrant_utm/config.rb
CHANGED
|
@@ -85,6 +85,20 @@ module VagrantPlugins
|
|
|
85
85
|
customize("pre-boot", ["customize_vm.applescript", :id, "--notes", notes])
|
|
86
86
|
end
|
|
87
87
|
|
|
88
|
+
# Shortcut for setting the icon of the virtual machine.
|
|
89
|
+
# Calls #customize internally.
|
|
90
|
+
#
|
|
91
|
+
# Available icons can be found at:
|
|
92
|
+
# https://github.com/utmapp/UTM/tree/main/Icons
|
|
93
|
+
#
|
|
94
|
+
# Common icons include: linux, ubuntu, debian, fedora, archlinux,
|
|
95
|
+
# openbsd, freebsd, windows, macos, android, etc.
|
|
96
|
+
#
|
|
97
|
+
# @param icon [String] the icon name for the VM (e.g., "ubuntu", "debian")
|
|
98
|
+
def icon=(icon)
|
|
99
|
+
customize("pre-boot", ["customize_vm.applescript", :id, "--icon", icon.to_s])
|
|
100
|
+
end
|
|
101
|
+
|
|
88
102
|
# TODO: All warning if user sets directory_share_mode,
|
|
89
103
|
# because default implementation is 'virtFS'
|
|
90
104
|
# Shortcut for setting the directory share mode of the virtual machine.
|
|
@@ -6,6 +6,7 @@ on run argv
|
|
|
6
6
|
set memorySize to 0
|
|
7
7
|
set vmNotes to ""
|
|
8
8
|
set directoryShareMode to null
|
|
9
|
+
set vmIcon to ""
|
|
9
10
|
|
|
10
11
|
-- Parse arguments
|
|
11
12
|
repeat with i from 2 to (count argv)
|
|
@@ -20,6 +21,8 @@ on run argv
|
|
|
20
21
|
set vmNotes to item (i + 1) of argv
|
|
21
22
|
else if currentArg is "--directory-share-mode" then
|
|
22
23
|
set directoryShareMode to item (i + 1) of argv
|
|
24
|
+
else if currentArg is "--icon" then
|
|
25
|
+
set vmIcon to item (i + 1) of argv
|
|
23
26
|
end if
|
|
24
27
|
end repeat
|
|
25
28
|
|
|
@@ -52,6 +55,11 @@ on run argv
|
|
|
52
55
|
set directory share mode of config to directoryShareMode -- mode is assumed to be enum value
|
|
53
56
|
end if
|
|
54
57
|
|
|
58
|
+
-- Set icon if provided
|
|
59
|
+
if vmIcon is not "" then
|
|
60
|
+
set icon of config to vmIcon
|
|
61
|
+
end if
|
|
62
|
+
|
|
55
63
|
-- Save the configuration
|
|
56
64
|
update configuration of vm with config
|
|
57
65
|
|
data/lib/vagrant_utm/version.rb
CHANGED
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: vagrant_utm
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.1.
|
|
4
|
+
version: 0.1.5
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Naveenraj M
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: exe
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2025-
|
|
11
|
+
date: 2025-11-17 00:00:00.000000000 Z
|
|
12
12
|
dependencies: []
|
|
13
13
|
description: Vagrant UTM provider that allows you to manage UTM virtual machines.
|
|
14
14
|
email:
|