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 <robert.bradford@intel.com>
This commit is contained in:
Rob Bradford 2020-01-07 10:43:56 +00:00 committed by Samuel Ortiz
parent 72b9e920a3
commit f1b6657833
4 changed files with 15 additions and 15 deletions

View File

@ -115,7 +115,7 @@ pub struct VmmPingResponse {
#[derive(Clone, Deserialize, Serialize)] #[derive(Clone, Deserialize, Serialize)]
pub struct VmResizeData { pub struct VmResizeData {
pub desired_vcpus: u8, pub desired_vcpus: Option<u8>,
} }
pub enum ApiResponsePayload { pub enum ApiResponsePayload {

View File

@ -427,11 +427,8 @@ components:
default: false default: false
VmResize: VmResize:
required:
- desired_vcpus
type: object type: object
properties: properties:
desired_vcpus: desired_vcpus:
minimum: 1 minimum: 1
default: 1
type: integer type: integer

View File

@ -330,7 +330,7 @@ impl Vmm {
self.vm_delete() self.vm_delete()
} }
fn vm_resize(&mut self, desired_vcpus: u8) -> result::Result<(), VmError> { fn vm_resize(&mut self, desired_vcpus: Option<u8>) -> result::Result<(), VmError> {
if let Some(ref mut vm) = self.vm { if let Some(ref mut vm) = self.vm {
vm.resize(desired_vcpus) vm.resize(desired_vcpus)
} else { } else {

View File

@ -481,16 +481,19 @@ impl Vm {
Ok(()) Ok(())
} }
pub fn resize(&mut self, desired_vcpus: u8) -> Result<()> { pub fn resize(&mut self, desired_vcpus: Option<u8>) -> Result<()> {
self.cpu_manager if let Some(desired_vcpus) = desired_vcpus {
.lock() self.cpu_manager
.unwrap() .lock()
.resize(desired_vcpus) .unwrap()
.map_err(Error::CpuManager)?; .resize(desired_vcpus)
self.devices .map_err(Error::CpuManager)?;
.notify_hotplug(HotPlugNotificationType::CPUDevicesChanged) self.devices
.map_err(Error::DeviceManager)?; .notify_hotplug(HotPlugNotificationType::CPUDevicesChanged)
self.config.lock().unwrap().cpus.boot_vcpus = desired_vcpus; .map_err(Error::DeviceManager)?;
self.config.lock().unwrap().cpus.boot_vcpus = desired_vcpus;
}
Ok(()) Ok(())
} }