replace very confusing code with idiomatic rust
This commit is contained in:
parent
abf09e8d26
commit
1e893b49c0
42
src/state.rs
42
src/state.rs
@ -361,14 +361,14 @@ pub struct VM {
|
||||
storage_dir: String,
|
||||
}
|
||||
|
||||
impl VM {
|
||||
fn to_grpc_response<T>(self, build_resp: impl FnOnce(snp_proto::MeasurementArgs) -> T) -> T {
|
||||
let mut nic_index: u32 = if self.fw_ports.is_empty() { 0 } else { 1 };
|
||||
impl From<VM> for snp_proto::MeasurementArgs {
|
||||
fn from(vm: VM) -> Self {
|
||||
let mut nic_index: u32 = if vm.fw_ports.is_empty() { 0 } else { 1 };
|
||||
let mut ips = Vec::new();
|
||||
let mut dtrfs_api_endpoint = String::new();
|
||||
|
||||
// TODO: when brain supports multiple IPs per VM, fix this
|
||||
for nic in self.nics {
|
||||
for nic in vm.nics {
|
||||
for ip in nic.ips {
|
||||
if ip.address.parse::<std::net::Ipv4Addr>().is_ok() {
|
||||
dtrfs_api_endpoint = ip.address.clone();
|
||||
@ -386,39 +386,37 @@ impl VM {
|
||||
if !dtrfs_api_endpoint.is_empty() {
|
||||
dtrfs_api_endpoint += ":22";
|
||||
} else {
|
||||
dtrfs_api_endpoint += &format!("{}:{}", IP_INFO.ip, self.fw_ports[0].0);
|
||||
dtrfs_api_endpoint += &format!("{}:{}", IP_INFO.ip, vm.fw_ports[0].0);
|
||||
}
|
||||
|
||||
let args = snp_proto::MeasurementArgs {
|
||||
snp_proto::MeasurementArgs {
|
||||
dtrfs_api_endpoint,
|
||||
exposed_ports: self.fw_ports.iter().map(|(host_port, _)| *host_port as u32).collect(),
|
||||
exposed_ports: vm.fw_ports.iter().map(|(host_port, _)| *host_port as u32).collect(),
|
||||
ips,
|
||||
ovmf_hash: OVMF_HASH.to_string(),
|
||||
};
|
||||
|
||||
build_resp(args)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
impl Into<snp_proto::NewVmResp> for VM {
|
||||
fn into(self) -> snp_proto::NewVmResp {
|
||||
let uuid = self.uuid.clone();
|
||||
self.to_grpc_response(|args| snp_proto::NewVmResp {
|
||||
impl From<VM> for snp_proto::NewVmResp {
|
||||
fn from(vm: VM) -> Self {
|
||||
let uuid = vm.uuid.clone();
|
||||
snp_proto::NewVmResp {
|
||||
uuid,
|
||||
args: Some(args),
|
||||
args: Some(vm.into()),
|
||||
error: "".to_string(),
|
||||
})
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
impl Into<snp_proto::UpdateVmResp> for VM {
|
||||
fn into(self) -> snp_proto::UpdateVmResp {
|
||||
let uuid = self.uuid.clone();
|
||||
self.to_grpc_response(|args| snp_proto::UpdateVmResp {
|
||||
impl From<VM> for snp_proto::UpdateVmResp {
|
||||
fn from(vm: VM) -> Self {
|
||||
let uuid = vm.uuid.clone();
|
||||
snp_proto::UpdateVmResp {
|
||||
uuid,
|
||||
args: Some(args),
|
||||
args: Some(vm.into()),
|
||||
error: "".to_string(),
|
||||
})
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user