* [PATCH datacenter-manager 1/5] fake remote: update code to implement/use new interfaces
2026-03-20 9:25 [PATCH datacenter-manager 0/5] fix/improve fake-remote code Dominik Csapak
@ 2026-03-20 9:25 ` Dominik Csapak
2026-03-20 9:25 ` [PATCH datacenter-manager 2/5] fake remote: fix nonsensical values Dominik Csapak
` (4 subsequent siblings)
5 siblings, 0 replies; 7+ messages in thread
From: Dominik Csapak @ 2026-03-20 9:25 UTC (permalink / raw)
To: pdm-devel
The RemoteConfig interface has changed, implement the new method.
Also the ClusterResource has gained a few new fields, so add them.
Without this, we can't compile with the fake-remote cfg flag.
Signed-off-by: Dominik Csapak <d.csapak@proxmox.com>
---
server/src/test_support/fake_remote.rs | 26 +++++++++++++++++++++++++-
1 file changed, 25 insertions(+), 1 deletion(-)
diff --git a/server/src/test_support/fake_remote.rs b/server/src/test_support/fake_remote.rs
index 62dd8691..93c1c495 100644
--- a/server/src/test_support/fake_remote.rs
+++ b/server/src/test_support/fake_remote.rs
@@ -59,9 +59,13 @@ impl RemoteConfig for FakeRemoteConfig {
unsafe { Ok(proxmox_product_config::create_mocked_lock()) }
}
- fn save_config(&self, _remotes: &SectionConfigData<Remote>) -> Result<(), Error> {
+ fn save_config(&self, _remotes: SectionConfigData<Remote>) -> Result<(), Error> {
Ok(())
}
+
+ fn get_secret_token(&self, _remote: &Remote) -> Result<String, Error> {
+ Ok(String::new())
+ }
}
pub struct FakeClientFactory {
@@ -165,6 +169,11 @@ impl pve_api_types::client::PveClient for FakePveClient {
lock: None,
tags: None,
sdn: None,
+ network: None,
+ network_type: None,
+ protocol: None,
+ shared: None,
+ zone_type: None,
});
}
@@ -200,6 +209,11 @@ impl pve_api_types::client::PveClient for FakePveClient {
lock: None,
tags: None,
sdn: None,
+ network: None,
+ network_type: None,
+ protocol: None,
+ shared: None,
+ zone_type: None,
});
}
@@ -234,6 +248,11 @@ impl pve_api_types::client::PveClient for FakePveClient {
lock: None,
tags: None,
sdn: None,
+ network: None,
+ network_type: None,
+ protocol: None,
+ shared: None,
+ zone_type: None,
});
}
@@ -268,6 +287,11 @@ impl pve_api_types::client::PveClient for FakePveClient {
lock: None,
tags: None,
sdn: None,
+ network: None,
+ network_type: None,
+ protocol: None,
+ shared: None,
+ zone_type: None,
});
}
--
2.47.3
^ permalink raw reply [flat|nested] 7+ messages in thread* [PATCH datacenter-manager 2/5] fake remote: fix nonsensical values
2026-03-20 9:25 [PATCH datacenter-manager 0/5] fix/improve fake-remote code Dominik Csapak
2026-03-20 9:25 ` [PATCH datacenter-manager 1/5] fake remote: update code to implement/use new interfaces Dominik Csapak
@ 2026-03-20 9:25 ` Dominik Csapak
2026-03-20 9:25 ` [PATCH datacenter-manager 3/5] fake remote: factor out cpu/disk/mem values Dominik Csapak
` (3 subsequent siblings)
5 siblings, 0 replies; 7+ messages in thread
From: Dominik Csapak @ 2026-03-20 9:25 UTC (permalink / raw)
To: pdm-devel
maxdisk being smaller than disk does not make sense, seems there was
just a * 1024 missing, same for memhost.
Also a storage needs to have an associated node.
Signed-off-by: Dominik Csapak <d.csapak@proxmox.com>
---
server/src/test_support/fake_remote.rs | 14 +++++++-------
1 file changed, 7 insertions(+), 7 deletions(-)
diff --git a/server/src/test_support/fake_remote.rs b/server/src/test_support/fake_remote.rs
index 93c1c495..21e3a1c9 100644
--- a/server/src/test_support/fake_remote.rs
+++ b/server/src/test_support/fake_remote.rs
@@ -150,10 +150,10 @@ impl pve_api_types::client::PveClient for FakePveClient {
id: format!("qemu/{vmid}"),
level: Some("".into()),
maxcpu: Some(4.),
- maxdisk: Some(100 * 1024 * 1024),
+ maxdisk: Some(100 * 1024 * 1024 * 1024),
maxmem: Some(8 * 1024 * 1024 * 1024),
mem: Some(3 * 1024 * 1024 * 1024),
- memhost: Some(4 * 1024 * 1024),
+ memhost: Some(4 * 1024 * 1024 * 1024),
name: Some(format!("vm-{vmid}")),
netin: Some(1034),
netout: Some(1034),
@@ -190,9 +190,9 @@ impl pve_api_types::client::PveClient for FakePveClient {
id: format!("lxc/{vmid}"),
level: Some("".into()),
maxcpu: Some(4.),
- maxdisk: Some(100 * 1024 * 1024),
+ maxdisk: Some(100 * 1024 * 1024 * 1024),
maxmem: Some(8 * 1024 * 1024 * 1024),
- memhost: Some(4 * 1024 * 1024),
+ memhost: Some(4 * 1024 * 1024 * 1024),
mem: Some(3 * 1024 * 1024 * 1024),
name: Some(format!("ct-{vmid}")),
netin: Some(1034),
@@ -229,7 +229,7 @@ impl pve_api_types::client::PveClient for FakePveClient {
id: format!("node/node-{i}"),
level: Some("".into()),
maxcpu: Some(16.),
- maxdisk: Some(100 * 1024 * 1024),
+ maxdisk: Some(100 * 1024 * 1024 * 1024),
maxmem: Some(8 * 1024 * 1024 * 1024),
mem: Some(3 * 1024 * 1024 * 1024),
memhost: None,
@@ -268,14 +268,14 @@ impl pve_api_types::client::PveClient for FakePveClient {
id: format!("storage/node-0/storage-{i}"),
level: None,
maxcpu: None,
- maxdisk: Some(100 * 1024 * 1024),
+ maxdisk: Some(100 * 1024 * 1024 * 1024),
maxmem: None,
mem: None,
memhost: None,
name: None,
netin: None,
netout: None,
- node: None,
+ node: Some(format!("node-{}", i % self.nr_of_nodes)),
plugintype: Some("dir".into()),
pool: None,
status: Some("available".into()),
--
2.47.3
^ permalink raw reply [flat|nested] 7+ messages in thread* [PATCH datacenter-manager 3/5] fake remote: factor out cpu/disk/mem values
2026-03-20 9:25 [PATCH datacenter-manager 0/5] fix/improve fake-remote code Dominik Csapak
2026-03-20 9:25 ` [PATCH datacenter-manager 1/5] fake remote: update code to implement/use new interfaces Dominik Csapak
2026-03-20 9:25 ` [PATCH datacenter-manager 2/5] fake remote: fix nonsensical values Dominik Csapak
@ 2026-03-20 9:25 ` Dominik Csapak
2026-03-20 9:25 ` [PATCH datacenter-manager 4/5] fake remote: add jitter to disk/memory values Dominik Csapak
` (2 subsequent siblings)
5 siblings, 0 replies; 7+ messages in thread
From: Dominik Csapak @ 2026-03-20 9:25 UTC (permalink / raw)
To: pdm-devel
makes it much easier to modify all of them at once.
Signed-off-by: Dominik Csapak <d.csapak@proxmox.com>
---
server/src/test_support/fake_remote.rs | 52 +++++++++++++++-----------
1 file changed, 31 insertions(+), 21 deletions(-)
diff --git a/server/src/test_support/fake_remote.rs b/server/src/test_support/fake_remote.rs
index 21e3a1c9..501f2dc6 100644
--- a/server/src/test_support/fake_remote.rs
+++ b/server/src/test_support/fake_remote.rs
@@ -137,23 +137,33 @@ impl pve_api_types::client::PveClient for FakePveClient {
let mut vmid = 100;
+ let disk: u64 = 42 * 1024 * 1024 * 1024;
+ let maxdisk: u64 = 100 * 1024 * 1024 * 1024;
+
+ let mem: u64 = 3 * 1024 * 1024 * 1024;
+ let memhost: u64 = 4 * 1024 * 1024 * 1024;
+ let maxmem: i64 = 8 * 1024 * 1024 * 1024;
+
+ let cpu = 0.1;
+ let maxcpu = 4.0;
+
for _ in 0..self.nr_of_vms {
vmid += 1;
result.push(ClusterResource {
cgroup_mode: None,
content: None,
- cpu: Some(0.1),
+ cpu: Some(cpu),
diskread: Some(1034),
diskwrite: Some(1034),
- disk: Some(42 * 1024 * 1024 * 1024),
+ disk: Some(disk),
hastate: None,
id: format!("qemu/{vmid}"),
level: Some("".into()),
- maxcpu: Some(4.),
- maxdisk: Some(100 * 1024 * 1024 * 1024),
- maxmem: Some(8 * 1024 * 1024 * 1024),
- mem: Some(3 * 1024 * 1024 * 1024),
- memhost: Some(4 * 1024 * 1024 * 1024),
+ maxcpu: Some(maxcpu),
+ maxdisk: Some(maxdisk),
+ maxmem: Some(maxmem),
+ mem: Some(mem),
+ memhost: Some(memhost),
name: Some(format!("vm-{vmid}")),
netin: Some(1034),
netout: Some(1034),
@@ -182,18 +192,18 @@ impl pve_api_types::client::PveClient for FakePveClient {
result.push(ClusterResource {
cgroup_mode: None,
content: None,
- cpu: Some(0.1),
- disk: Some(42 * 1024 * 1024 * 1024),
+ cpu: Some(cpu),
+ disk: Some(disk),
diskread: Some(1034),
diskwrite: Some(1034),
hastate: None,
id: format!("lxc/{vmid}"),
level: Some("".into()),
- maxcpu: Some(4.),
- maxdisk: Some(100 * 1024 * 1024 * 1024),
- maxmem: Some(8 * 1024 * 1024 * 1024),
- memhost: Some(4 * 1024 * 1024 * 1024),
- mem: Some(3 * 1024 * 1024 * 1024),
+ maxcpu: Some(maxcpu),
+ maxdisk: Some(maxdisk),
+ maxmem: Some(maxmem),
+ memhost: Some(memhost),
+ mem: Some(mem),
name: Some(format!("ct-{vmid}")),
netin: Some(1034),
netout: Some(1034),
@@ -221,17 +231,17 @@ impl pve_api_types::client::PveClient for FakePveClient {
result.push(ClusterResource {
cgroup_mode: None,
content: None,
- cpu: Some(0.1),
- disk: Some(42 * 1024 * 1024 * 1024),
+ cpu: Some(cpu),
+ disk: Some(disk),
diskread: None,
diskwrite: None,
hastate: None,
id: format!("node/node-{i}"),
level: Some("".into()),
maxcpu: Some(16.),
- maxdisk: Some(100 * 1024 * 1024 * 1024),
- maxmem: Some(8 * 1024 * 1024 * 1024),
- mem: Some(3 * 1024 * 1024 * 1024),
+ maxdisk: Some(maxdisk),
+ maxmem: Some(maxmem),
+ mem: Some(mem),
memhost: None,
name: None,
netin: None,
@@ -261,14 +271,14 @@ impl pve_api_types::client::PveClient for FakePveClient {
cgroup_mode: None,
content: Some(vec![StorageContent::Images, StorageContent::Rootdir]),
cpu: None,
- disk: Some(42 * 1024 * 1024 * 1024),
+ disk: Some(disk),
diskread: None,
diskwrite: None,
hastate: None,
id: format!("storage/node-0/storage-{i}"),
level: None,
maxcpu: None,
- maxdisk: Some(100 * 1024 * 1024 * 1024),
+ maxdisk: Some(maxdisk),
maxmem: None,
mem: None,
memhost: None,
--
2.47.3
^ permalink raw reply [flat|nested] 7+ messages in thread* [PATCH datacenter-manager 4/5] fake remote: add jitter to disk/memory values
2026-03-20 9:25 [PATCH datacenter-manager 0/5] fix/improve fake-remote code Dominik Csapak
` (2 preceding siblings ...)
2026-03-20 9:25 ` [PATCH datacenter-manager 3/5] fake remote: factor out cpu/disk/mem values Dominik Csapak
@ 2026-03-20 9:25 ` Dominik Csapak
2026-03-20 9:25 ` [PATCH datacenter-manager 5/5] fake remotes: make use of ClusterResource more resilient to changes Dominik Csapak
2026-03-20 10:48 ` applied: [PATCH datacenter-manager 0/5] fix/improve fake-remote code Lukas Wagner
5 siblings, 0 replies; 7+ messages in thread
From: Dominik Csapak @ 2026-03-20 9:25 UTC (permalink / raw)
To: pdm-devel
by using the current time and the vmid / index as a factor.
This makes the data look a bit more like 'real' data. This has two
nice effects: we get more realistic values for over the wire
compression (this is useful to measure network bandwidth impact of
theses api calls) and the values get used in some parts of the ui where
we now can observe changes.
Signed-off-by: Dominik Csapak <d.csapak@proxmox.com>
---
server/src/test_support/fake_remote.rs | 22 ++++++++++++++--------
1 file changed, 14 insertions(+), 8 deletions(-)
diff --git a/server/src/test_support/fake_remote.rs b/server/src/test_support/fake_remote.rs
index 501f2dc6..ae367f68 100644
--- a/server/src/test_support/fake_remote.rs
+++ b/server/src/test_support/fake_remote.rs
@@ -147,23 +147,26 @@ impl pve_api_types::client::PveClient for FakePveClient {
let cpu = 0.1;
let maxcpu = 4.0;
+ let bytejitter = 2.0 * 1024.0 * 1024.0 * 1024.0 * proxmox_time::epoch_f64().sin();
+
for _ in 0..self.nr_of_vms {
vmid += 1;
+ let jitter = ((vmid as f64).sin() * bytejitter).round() as i64;
result.push(ClusterResource {
cgroup_mode: None,
content: None,
cpu: Some(cpu),
diskread: Some(1034),
diskwrite: Some(1034),
- disk: Some(disk),
+ disk: Some(disk.saturating_add_signed(jitter)),
hastate: None,
id: format!("qemu/{vmid}"),
level: Some("".into()),
maxcpu: Some(maxcpu),
maxdisk: Some(maxdisk),
maxmem: Some(maxmem),
- mem: Some(mem),
- memhost: Some(memhost),
+ mem: Some(mem.saturating_sub_signed(jitter)),
+ memhost: Some(memhost.saturating_add_signed(jitter)),
name: Some(format!("vm-{vmid}")),
netin: Some(1034),
netout: Some(1034),
@@ -189,11 +192,12 @@ impl pve_api_types::client::PveClient for FakePveClient {
for _ in 0..self.nr_of_cts {
vmid += 1;
+ let jitter = ((vmid as f64).sin() * bytejitter).round() as i64;
result.push(ClusterResource {
cgroup_mode: None,
content: None,
cpu: Some(cpu),
- disk: Some(disk),
+ disk: Some(disk.saturating_add_signed(jitter)),
diskread: Some(1034),
diskwrite: Some(1034),
hastate: None,
@@ -203,7 +207,7 @@ impl pve_api_types::client::PveClient for FakePveClient {
maxdisk: Some(maxdisk),
maxmem: Some(maxmem),
memhost: Some(memhost),
- mem: Some(mem),
+ mem: Some(mem.saturating_add_signed(jitter)),
name: Some(format!("ct-{vmid}")),
netin: Some(1034),
netout: Some(1034),
@@ -228,11 +232,12 @@ impl pve_api_types::client::PveClient for FakePveClient {
}
for i in 0..self.nr_of_nodes {
+ let jitter = ((i as f64).sin() * bytejitter).round() as i64;
result.push(ClusterResource {
cgroup_mode: None,
content: None,
cpu: Some(cpu),
- disk: Some(disk),
+ disk: Some(disk.saturating_add_signed(jitter)),
diskread: None,
diskwrite: None,
hastate: None,
@@ -241,7 +246,7 @@ impl pve_api_types::client::PveClient for FakePveClient {
maxcpu: Some(16.),
maxdisk: Some(maxdisk),
maxmem: Some(maxmem),
- mem: Some(mem),
+ mem: Some(mem.saturating_add_signed(jitter)),
memhost: None,
name: None,
netin: None,
@@ -267,11 +272,12 @@ impl pve_api_types::client::PveClient for FakePveClient {
}
for i in 0..self.nr_of_storages {
+ let jitter = ((i as f64).sin() * bytejitter).round() as i64;
result.push(ClusterResource {
cgroup_mode: None,
content: Some(vec![StorageContent::Images, StorageContent::Rootdir]),
cpu: None,
- disk: Some(disk),
+ disk: Some(disk.saturating_add_signed(jitter)),
diskread: None,
diskwrite: None,
hastate: None,
--
2.47.3
^ permalink raw reply [flat|nested] 7+ messages in thread* [PATCH datacenter-manager 5/5] fake remotes: make use of ClusterResource more resilient to changes
2026-03-20 9:25 [PATCH datacenter-manager 0/5] fix/improve fake-remote code Dominik Csapak
` (3 preceding siblings ...)
2026-03-20 9:25 ` [PATCH datacenter-manager 4/5] fake remote: add jitter to disk/memory values Dominik Csapak
@ 2026-03-20 9:25 ` Dominik Csapak
2026-03-20 10:48 ` applied: [PATCH datacenter-manager 0/5] fix/improve fake-remote code Lukas Wagner
5 siblings, 0 replies; 7+ messages in thread
From: Dominik Csapak @ 2026-03-20 9:25 UTC (permalink / raw)
To: pdm-devel
since all new properties have to be optional due to backwards
compatibility, we can simply use a json object to parse from with serde.
This is less type safe, but it's more flexible and less prone to
compile errors.
note that we have to explicitly specify u64 for the values, otherwise
rust will assume i32 and overflow.
Signed-off-by: Dominik Csapak <d.csapak@proxmox.com>
---
server/src/test_support/fake_remote.rs | 223 +++++++++----------------
1 file changed, 80 insertions(+), 143 deletions(-)
diff --git a/server/src/test_support/fake_remote.rs b/server/src/test_support/fake_remote.rs
index ae367f68..d38753d5 100644
--- a/server/src/test_support/fake_remote.rs
+++ b/server/src/test_support/fake_remote.rs
@@ -1,7 +1,8 @@
use std::{sync::Arc, time::Duration};
-use anyhow::{bail, Error};
+use anyhow::{bail, format_err, Error};
use serde::Deserialize;
+use serde_json::json;
use pdm_api_types::{remotes::Remote, Authid, ConfigDigest};
use pdm_config::remotes::RemoteConfig;
@@ -10,8 +11,7 @@ use proxmox_product_config::ApiLockGuard;
use proxmox_section_config::typed::SectionConfigData;
use pve_api_types::{
ClusterMetrics, ClusterMetricsData, ClusterNodeIndexResponse, ClusterNodeIndexResponseStatus,
- ClusterResource, ClusterResourceKind, ClusterResourceType, ListTasks, ListTasksResponse,
- PveUpid, StorageContent,
+ ClusterResource, ClusterResourceKind, ListTasks, ListTasksResponse, PveUpid,
};
use crate::{
@@ -152,163 +152,100 @@ impl pve_api_types::client::PveClient for FakePveClient {
for _ in 0..self.nr_of_vms {
vmid += 1;
let jitter = ((vmid as f64).sin() * bytejitter).round() as i64;
- result.push(ClusterResource {
- cgroup_mode: None,
- content: None,
- cpu: Some(cpu),
- diskread: Some(1034),
- diskwrite: Some(1034),
- disk: Some(disk.saturating_add_signed(jitter)),
- hastate: None,
- id: format!("qemu/{vmid}"),
- level: Some("".into()),
- maxcpu: Some(maxcpu),
- maxdisk: Some(maxdisk),
- maxmem: Some(maxmem),
- mem: Some(mem.saturating_sub_signed(jitter)),
- memhost: Some(memhost.saturating_add_signed(jitter)),
- name: Some(format!("vm-{vmid}")),
- netin: Some(1034),
- netout: Some(1034),
- node: Some(format!("node-{}", vmid % self.nr_of_nodes)),
- plugintype: None,
- pool: None,
- status: Some("running".into()),
- storage: None,
- template: Some(false),
- ty: ClusterResourceType::Qemu,
- uptime: Some(1234),
- vmid: Some(vmid),
- lock: None,
- tags: None,
- sdn: None,
- network: None,
- network_type: None,
- protocol: None,
- shared: None,
- zone_type: None,
+ let val = json!({
+ "cpu": cpu,
+ "diskread": 1034,
+ "diskwrite": 1034,
+ "disk": disk.saturating_add_signed(jitter),
+ "id": format!("qemu/{vmid}"),
+ "level": "",
+ "maxcpu": maxcpu,
+ "maxdisk": maxdisk,
+ "maxmem": maxmem,
+ "mem": mem.saturating_add_signed(jitter),
+ "memhost": memhost.saturating_add_signed(jitter),
+ "name": format!("vm-{vmid}"),
+ "netin": 1034,
+ "netout": 1034,
+ "node": format!("node-{}", vmid % self.nr_of_nodes),
+ "status": "running",
+ "template": false,
+ "type": "qemu",
+ "uptime": 1234,
+ "vmid": vmid,
});
+ result.push(serde_json::from_value(val).map_err(|err| {
+ proxmox_client::Error::Anyhow(format_err!("error on vm {vmid}: {err}"))
+ })?);
}
for _ in 0..self.nr_of_cts {
vmid += 1;
let jitter = ((vmid as f64).sin() * bytejitter).round() as i64;
- result.push(ClusterResource {
- cgroup_mode: None,
- content: None,
- cpu: Some(cpu),
- disk: Some(disk.saturating_add_signed(jitter)),
- diskread: Some(1034),
- diskwrite: Some(1034),
- hastate: None,
- id: format!("lxc/{vmid}"),
- level: Some("".into()),
- maxcpu: Some(maxcpu),
- maxdisk: Some(maxdisk),
- maxmem: Some(maxmem),
- memhost: Some(memhost),
- mem: Some(mem.saturating_add_signed(jitter)),
- name: Some(format!("ct-{vmid}")),
- netin: Some(1034),
- netout: Some(1034),
- node: Some(format!("node-{}", vmid % self.nr_of_nodes)),
- plugintype: None,
- pool: None,
- status: Some("running".into()),
- storage: None,
- template: Some(false),
- ty: ClusterResourceType::Lxc,
- uptime: Some(1234),
- vmid: Some(vmid),
- lock: None,
- tags: None,
- sdn: None,
- network: None,
- network_type: None,
- protocol: None,
- shared: None,
- zone_type: None,
+ let val = json!({
+ "cpu": cpu,
+ "diskread": 1034,
+ "diskwrite": 1034,
+ "disk": disk.saturating_add_signed(jitter),
+ "id": format!("lxc/{vmid}"),
+ "level": "",
+ "maxcpu": maxcpu,
+ "maxdisk": maxdisk,
+ "maxmem": maxmem,
+ "mem": mem.saturating_add_signed(jitter),
+ "memhost": memhost.saturating_add_signed(jitter),
+ "name": format!("ct-{vmid}"),
+ "netin": 1034,
+ "netout": 1034,
+ "node": format!("node-{}", vmid % self.nr_of_nodes),
+ "status": "running",
+ "template": false,
+ "type": "lxc",
+ "uptime": 1234,
+ "vmid": vmid,
});
+ result.push(serde_json::from_value(val).map_err(|err| {
+ proxmox_client::Error::Anyhow(format_err!("error on ct {vmid}: {err}"))
+ })?);
}
for i in 0..self.nr_of_nodes {
let jitter = ((i as f64).sin() * bytejitter).round() as i64;
- result.push(ClusterResource {
- cgroup_mode: None,
- content: None,
- cpu: Some(cpu),
- disk: Some(disk.saturating_add_signed(jitter)),
- diskread: None,
- diskwrite: None,
- hastate: None,
- id: format!("node/node-{i}"),
- level: Some("".into()),
- maxcpu: Some(16.),
- maxdisk: Some(maxdisk),
- maxmem: Some(maxmem),
- mem: Some(mem.saturating_add_signed(jitter)),
- memhost: None,
- name: None,
- netin: None,
- netout: None,
- node: Some(format!("node-{i}")),
- plugintype: None,
- pool: None,
- status: Some("online".into()),
- storage: None,
- template: None,
- ty: ClusterResourceType::Node,
- uptime: Some(1234),
- vmid: Some(vmid),
- lock: None,
- tags: None,
- sdn: None,
- network: None,
- network_type: None,
- protocol: None,
- shared: None,
- zone_type: None,
+ let val = json!({
+ "cpu": cpu,
+ "disk": disk.saturating_add_signed(jitter),
+ "id": format!("node/node-{i}"),
+ "level": "",
+ "maxcpu": 16.0,
+ "maxdisk": maxdisk,
+ "maxmem": maxmem,
+ "mem": mem.saturating_add_signed(jitter),
+ "node": format!("node-{i}"),
+ "status": "online",
+ "type": "node",
+ "uptime": 1234,
});
+ result.push(serde_json::from_value(val).map_err(|err| {
+ proxmox_client::Error::Anyhow(format_err!("error on node {i}: {err}"))
+ })?);
}
for i in 0..self.nr_of_storages {
let jitter = ((i as f64).sin() * bytejitter).round() as i64;
- result.push(ClusterResource {
- cgroup_mode: None,
- content: Some(vec![StorageContent::Images, StorageContent::Rootdir]),
- cpu: None,
- disk: Some(disk.saturating_add_signed(jitter)),
- diskread: None,
- diskwrite: None,
- hastate: None,
- id: format!("storage/node-0/storage-{i}"),
- level: None,
- maxcpu: None,
- maxdisk: Some(maxdisk),
- maxmem: None,
- mem: None,
- memhost: None,
- name: None,
- netin: None,
- netout: None,
- node: Some(format!("node-{}", i % self.nr_of_nodes)),
- plugintype: Some("dir".into()),
- pool: None,
- status: Some("available".into()),
- storage: Some(format!("storage-{i}")),
- template: None,
- ty: ClusterResourceType::Storage,
- uptime: None,
- vmid: None,
- lock: None,
- tags: None,
- sdn: None,
- network: None,
- network_type: None,
- protocol: None,
- shared: None,
- zone_type: None,
+ let val = json!({
+ "content": "images,rootdir",
+ "disk": disk.saturating_add_signed(jitter),
+ "id": format!("storage/node-0/storage-{i}"),
+ "maxdisk": maxdisk,
+ "node": format!("node-{}", i % self.nr_of_nodes),
+ "plugintype": "dir",
+ "status": "available",
+ "storage": format!("storage-{i}"),
+ "type": "storage",
});
+ result.push(serde_json::from_value(val).map_err(|err| {
+ proxmox_client::Error::Anyhow(format_err!("error on storage {i}: {err}"))
+ })?);
}
tokio::time::sleep(Duration::from_millis(self.api_delay_ms as u64)).await;
--
2.47.3
^ permalink raw reply [flat|nested] 7+ messages in thread* applied: [PATCH datacenter-manager 0/5] fix/improve fake-remote code
2026-03-20 9:25 [PATCH datacenter-manager 0/5] fix/improve fake-remote code Dominik Csapak
` (4 preceding siblings ...)
2026-03-20 9:25 ` [PATCH datacenter-manager 5/5] fake remotes: make use of ClusterResource more resilient to changes Dominik Csapak
@ 2026-03-20 10:48 ` Lukas Wagner
5 siblings, 0 replies; 7+ messages in thread
From: Lukas Wagner @ 2026-03-20 10:48 UTC (permalink / raw)
To: Dominik Csapak, pdm-devel
On Fri Mar 20, 2026 at 10:25 AM CET, Dominik Csapak wrote:
> the first patch makes the feature compile again, 2-4 are smaller
> but IMHO useful improvements, the last patch could be useful, but i'm
> not fully convinced it's the right direction, so i sent it last.
>
> Dominik Csapak (5):
> fake remote: update code to implement/use new interfaces
> fake remote: fix nonsensical values
> fake remote: factor out cpu/disk/mem values
> fake remote: add jitter to disk/memory values
> fake remotes: make use of ClusterResource more resilient to changes
>
> server/src/test_support/fake_remote.rs | 225 +++++++++++--------------
> 1 file changed, 101 insertions(+), 124 deletions(-)
applied, thanks!
^ permalink raw reply [flat|nested] 7+ messages in thread