Skip to content

Commit 098484e

Browse files
committed
macos15-arm: impl Image::rebuild()
1 parent 2198a14 commit 098484e

File tree

8 files changed

+43
-21
lines changed

8 files changed

+43
-21
lines changed

Cargo.lock

Lines changed: 1 addition & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Cargo.toml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ bytesize = "2.0.1"
99
chrono = { version = "0.4.39", features = ["serde"] }
1010
cli = { path = "monitor/cli" }
1111
cmd_lib = "1.9.5"
12+
crossbeam-channel = "0.5.13"
1213
dotenv = "0.15.0"
1314
hypervisor = { path = "monitor/hypervisor" }
1415
jane-eyre = "0.3.0"

monitor/Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ cfg-if = "1.0.1"
1212
chrono = { workspace = true }
1313
cli = { workspace = true }
1414
cmd_lib = { workspace = true }
15-
crossbeam-channel = "0.5.13"
15+
crossbeam-channel = { workspace = true }
1616
dotenv = { workspace = true }
1717
http = "0.2"
1818
hypervisor = { workspace = true }

monitor/hypervisor/Cargo.toml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ edition = "2024"
55

66
[dependencies]
77
cmd_lib.workspace = true
8+
crossbeam-channel.workspace = true
89
jane-eyre.workspace = true
910
settings.workspace = true
1011
shell.workspace = true

monitor/hypervisor/src/impl_utm.rs

Lines changed: 0 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -111,22 +111,3 @@ pub fn get_ipv4_address(guest_name: &str) -> Option<Ipv4Addr> {
111111
// TODO
112112
None
113113
}
114-
115-
pub fn delete_guest(guest_name: &str) -> eyre::Result<()> {
116-
let (tx, rx) = crossbeam_channel::bounded(0);
117-
UTM_REQUEST.sender.send(UtmRequest::DeleteGuest {
118-
result: tx,
119-
guest_name: guest_name.to_owned(),
120-
})?;
121-
Ok(rx.recv()??)
122-
}
123-
124-
pub fn clone_guest(original_guest_name: &str, new_guest_name: &str) -> eyre::Result<()> {
125-
let (tx, rx) = crossbeam_channel::bounded(0);
126-
UTM_REQUEST.sender.send(UtmRequest::CloneGuest {
127-
result: tx,
128-
original_guest_name: original_guest_name.to_owned(),
129-
new_guest_name: new_guest_name.to_owned(),
130-
})?;
131-
Ok(rx.recv()??)
132-
}

monitor/hypervisor/src/lib.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
pub mod libvirt;
2+
pub mod utm;
23

34
#[cfg_attr(target_os = "linux", path = "impl_libvirt.rs")]
45
#[cfg_attr(target_os = "macos", path = "impl_utm.rs")]

monitor/hypervisor/src/utm.rs

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
use jane_eyre::eyre;
2+
3+
#[cfg(not(target_os = "macos"))]
4+
#[expect(unused)]
5+
pub fn destroy_guest(guest_name: &str) -> eyre::Result<()> {
6+
unimplemented!()
7+
}
8+
9+
#[cfg(target_os = "macos")]
10+
pub fn destroy_guest(guest_name: &str) -> eyre::Result<()> {
11+
let (tx, rx) = crossbeam_channel::bounded(0);
12+
UTM_REQUEST.sender.send(UtmRequest::DeleteGuest {
13+
result: tx,
14+
guest_name: guest_name.to_owned(),
15+
})?;
16+
Ok(rx.recv()??)
17+
}
18+
19+
#[cfg(not(target_os = "macos"))]
20+
#[expect(unused)]
21+
pub fn clone_guest(original_guest_name: &str, new_guest_name: &str) -> eyre::Result<()> {
22+
unimplemented!()
23+
}
24+
25+
#[cfg(target_os = "macos")]
26+
pub fn clone_guest(original_guest_name: &str, new_guest_name: &str) -> eyre::Result<()> {
27+
let (tx, rx) = crossbeam_channel::bounded(0);
28+
UTM_REQUEST.sender.send(UtmRequest::CloneGuest {
29+
result: tx,
30+
original_guest_name: original_guest_name.to_owned(),
31+
new_guest_name: new_guest_name.to_owned(),
32+
})?;
33+
Ok(rx.recv()??)
34+
}

monitor/src/image/macos13.rs

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -80,7 +80,10 @@ pub struct MacosUtm;
8080
#[expect(unused_variables)]
8181
impl Image for MacosUtm {
8282
fn rebuild(&self, profile: &Profile, snapshot_name: &str) -> eyre::Result<()> {
83-
todo!()
83+
let profile_name = &profile.profile_name;
84+
let rebuild_guest_name = &profile.rebuild_guest_name(snapshot_name);
85+
hypervisor::utm::clone_guest(&format!("{profile_name}-clean"), rebuild_guest_name)?;
86+
Ok(())
8487
}
8588
fn delete_template(&self, profile: &Profile, snapshot_name: &str) -> eyre::Result<()> {
8689
todo!()

0 commit comments

Comments
 (0)