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)]
pub struct VmResizeData {
pub desired_vcpus: u8,
pub desired_vcpus: Option<u8>,
}
pub enum ApiResponsePayload {

View File

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

View File

@ -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<u8>) -> result::Result<(), VmError> {
if let Some(ref mut vm) = self.vm {
vm.resize(desired_vcpus)
} else {

View File

@ -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<u8>) -> 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(())
}