mirror of
https://github.com/cloud-hypervisor/cloud-hypervisor.git
synced 2026-08-05 02:19:16 +00:00
vmm: api: ch-remote: Add balloon to VmResizeData
Signed-off-by: Hui Zhu <teawater@antfin.com>
This commit is contained in:
@@ -153,6 +153,7 @@ pub struct VmmPingResponse {
|
||||
pub struct VmResizeData {
|
||||
pub desired_vcpus: Option<u8>,
|
||||
pub desired_ram: Option<u64>,
|
||||
pub desired_ram_w_balloon: Option<u64>,
|
||||
}
|
||||
|
||||
#[derive(Clone, Deserialize, Serialize, Default)]
|
||||
|
||||
@@ -680,6 +680,10 @@ components:
|
||||
description: desired memory ram in bytes
|
||||
type: integer
|
||||
format: int64
|
||||
desired_ram_w_balloon:
|
||||
description: desired ballon size in bytes
|
||||
type: integer
|
||||
format: int64
|
||||
|
||||
VmAddDevice:
|
||||
type: object
|
||||
|
||||
@@ -490,9 +490,10 @@ impl Vmm {
|
||||
&mut self,
|
||||
desired_vcpus: Option<u8>,
|
||||
desired_ram: Option<u64>,
|
||||
desired_ram_w_balloon: Option<u64>,
|
||||
) -> result::Result<(), VmError> {
|
||||
if let Some(ref mut vm) = self.vm {
|
||||
if let Err(e) = vm.resize(desired_vcpus, desired_ram) {
|
||||
if let Err(e) = vm.resize(desired_vcpus, desired_ram, desired_ram_w_balloon) {
|
||||
error!("Error when resizing VM: {:?}", e);
|
||||
Err(e)
|
||||
} else {
|
||||
@@ -766,6 +767,7 @@ impl Vmm {
|
||||
.vm_resize(
|
||||
resize_data.desired_vcpus,
|
||||
resize_data.desired_ram,
|
||||
resize_data.desired_ram_w_balloon,
|
||||
)
|
||||
.map_err(ApiError::VmResize)
|
||||
.map(|_| ApiResponsePayload::Empty);
|
||||
|
||||
@@ -680,7 +680,12 @@ impl Vm {
|
||||
Ok(())
|
||||
}
|
||||
|
||||
pub fn resize(&mut self, desired_vcpus: Option<u8>, desired_memory: Option<u64>) -> Result<()> {
|
||||
pub fn resize(
|
||||
&mut self,
|
||||
desired_vcpus: Option<u8>,
|
||||
desired_memory: Option<u64>,
|
||||
desired_ram_w_balloon: Option<u64>,
|
||||
) -> Result<()> {
|
||||
if let Some(desired_vcpus) = desired_vcpus {
|
||||
if self
|
||||
.cpu_manager
|
||||
@@ -731,6 +736,15 @@ impl Vm {
|
||||
// it will be running with the last configure memory size.
|
||||
self.config.lock().unwrap().memory.size = desired_memory;
|
||||
}
|
||||
|
||||
if let Some(desired_ram_w_balloon) = desired_ram_w_balloon {
|
||||
self.memory_manager
|
||||
.lock()
|
||||
.unwrap()
|
||||
.balloon_resize(desired_ram_w_balloon)
|
||||
.map_err(Error::MemoryManager)?;
|
||||
}
|
||||
|
||||
Ok(())
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user