From f1b6657833752fd3ddf63da8ce9700218a91af5d Mon Sep 17 00:00:00 2001 From: Rob Bradford Date: Tue, 7 Jan 2020 10:43:56 +0000 Subject: [PATCH] vmm: Make desired vCPUs optional in resize command In order to be able to support resizing either vCPUs or memory or both make the fields in the resize command optional. Signed-off-by: Rob Bradford --- vmm/src/api/mod.rs | 2 +- vmm/src/api/openapi/cloud-hypervisor.yaml | 3 --- vmm/src/lib.rs | 2 +- vmm/src/vm.rs | 23 +++++++++++++---------- 4 files changed, 15 insertions(+), 15 deletions(-) diff --git a/vmm/src/api/mod.rs b/vmm/src/api/mod.rs index 82a50f118..23514c609 100644 --- a/vmm/src/api/mod.rs +++ b/vmm/src/api/mod.rs @@ -115,7 +115,7 @@ pub struct VmmPingResponse { #[derive(Clone, Deserialize, Serialize)] pub struct VmResizeData { - pub desired_vcpus: u8, + pub desired_vcpus: Option, } pub enum ApiResponsePayload { diff --git a/vmm/src/api/openapi/cloud-hypervisor.yaml b/vmm/src/api/openapi/cloud-hypervisor.yaml index b23bfff63..a4366cb79 100644 --- a/vmm/src/api/openapi/cloud-hypervisor.yaml +++ b/vmm/src/api/openapi/cloud-hypervisor.yaml @@ -427,11 +427,8 @@ components: default: false VmResize: - required: - - desired_vcpus type: object properties: desired_vcpus: minimum: 1 - default: 1 type: integer diff --git a/vmm/src/lib.rs b/vmm/src/lib.rs index f36424e20..008f8b9bb 100644 --- a/vmm/src/lib.rs +++ b/vmm/src/lib.rs @@ -330,7 +330,7 @@ impl Vmm { self.vm_delete() } - fn vm_resize(&mut self, desired_vcpus: u8) -> result::Result<(), VmError> { + fn vm_resize(&mut self, desired_vcpus: Option) -> result::Result<(), VmError> { if let Some(ref mut vm) = self.vm { vm.resize(desired_vcpus) } else { diff --git a/vmm/src/vm.rs b/vmm/src/vm.rs index 03e63be92..8e58a619d 100755 --- a/vmm/src/vm.rs +++ b/vmm/src/vm.rs @@ -481,16 +481,19 @@ impl Vm { Ok(()) } - pub fn resize(&mut self, desired_vcpus: u8) -> Result<()> { - self.cpu_manager - .lock() - .unwrap() - .resize(desired_vcpus) - .map_err(Error::CpuManager)?; - self.devices - .notify_hotplug(HotPlugNotificationType::CPUDevicesChanged) - .map_err(Error::DeviceManager)?; - self.config.lock().unwrap().cpus.boot_vcpus = desired_vcpus; + pub fn resize(&mut self, desired_vcpus: Option) -> Result<()> { + if let Some(desired_vcpus) = desired_vcpus { + self.cpu_manager + .lock() + .unwrap() + .resize(desired_vcpus) + .map_err(Error::CpuManager)?; + self.devices + .notify_hotplug(HotPlugNotificationType::CPUDevicesChanged) + .map_err(Error::DeviceManager)?; + self.config.lock().unwrap().cpus.boot_vcpus = desired_vcpus; + } + Ok(()) }