api: http: handle cpu according to openapi

openapi definition defines an object for cpus not an integer

Signed-off-by: Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
This commit is contained in:
Jose Carlos Venegas Munoz 2019-10-16 05:38:42 +00:00 committed by Samuel Ortiz
parent 205b8c1cd5
commit 78e2f7a99a
3 changed files with 14 additions and 16 deletions

View File

@ -346,7 +346,7 @@ fn main() {
"Cloud Hypervisor Guest\n\tAPI server: {}\n\tvCPUs: {}\n\tMemory: {} MB\
\n\tKernel: {:?}\n\tKernel cmdline: {}\n\tDisk(s): {:?}",
api_socket_path,
u8::from(&vm_config.cpus),
vm_config.cpus.cpu_count,
vm_config.memory.size >> 20,
vm_config.kernel,
vm_config.cmdline.args.as_str(),
@ -901,7 +901,7 @@ mod tests {
}
fn api_create_body(&self, cpu_count: u8) -> String {
format! {"{{\"cpus\":{},\"kernel\":{{\"path\":\"{}\"}},\"cmdline\":{{\"args\": \"\"}},\"net\":[{{\"ip\":\"{}\", \"mask\":\"255.255.255.0\", \"mac\":\"{}\"}}], \"disks\":[{{\"path\":\"{}\"}}, {{\"path\":\"{}\"}}]}}",
format! {"{{\"cpus\":{{\"cpu_count\":{}}},\"kernel\":{{\"path\":\"{}\"}},\"cmdline\":{{\"args\": \"\"}},\"net\":[{{\"ip\":\"{}\", \"mask\":\"255.255.255.0\", \"mac\":\"{}\"}}], \"disks\":[{{\"path\":\"{}\"}}, {{\"path\":\"{}\"}}]}}",
cpu_count,
self.fw_path.as_str(),
self.network.host_ip,

View File

@ -131,25 +131,23 @@ fn parse_iommu(iommu: &str) -> Result<bool> {
}
#[derive(Clone, Debug, Deserialize, Serialize)]
pub struct CpusConfig(pub u8);
pub struct CpusConfig {
pub cpu_count: u8,
}
impl CpusConfig {
pub fn parse(cpus: &str) -> Result<Self> {
Ok(CpusConfig(
cpus.parse::<u8>().map_err(Error::ParseCpusParams)?,
))
}
}
impl From<&CpusConfig> for u8 {
fn from(val: &CpusConfig) -> Self {
val.0
Ok(CpusConfig {
cpu_count: cpus.parse().map_err(Error::ParseCpusParams)?,
})
}
}
impl Default for CpusConfig {
fn default() -> Self {
CpusConfig(DEFAULT_VCPUS)
CpusConfig {
cpu_count: DEFAULT_VCPUS,
}
}
}

View File

@ -711,7 +711,7 @@ impl Vm {
.map_err(Error::DeviceManager)?;
let on_tty = unsafe { libc::isatty(libc::STDIN_FILENO as i32) } != 0;
let threads = Vec::with_capacity(u8::from(&config.cpus) as usize + 1);
let threads = Vec::with_capacity(config.cpus.cpu_count as usize + 1);
Ok(Vm {
fd,
@ -767,7 +767,7 @@ impl Vm {
&cmdline_cstring,
)
.map_err(|_| Error::CmdLine)?;
let vcpu_count = u8::from(&self.config.cpus);
let vcpu_count = self.config.cpus.cpu_count;
let end_of_range = GuestAddress((1 << get_host_cpu_phys_bits()) - 1);
match entry_addr.setup_header {
Some(hdr) => {
@ -918,7 +918,7 @@ impl Vm {
current_state.valid_transition(new_state)?;
let entry_addr = self.load_kernel()?;
let vcpu_count = u8::from(&self.config.cpus);
let vcpu_count = self.config.cpus.cpu_count;
let vcpu_thread_barrier = Arc::new(Barrier::new((vcpu_count + 1) as usize));
for cpu_id in 0..vcpu_count {