mirror of
https://github.com/kata-containers/kata-containers.git
synced 2025-04-28 19:54:35 +00:00
dragonball: add api module
It is used to define the vmm communication interface. Signed-off-by: Chao Wu <chaowu@linux.alibaba.com> Signed-off-by: wllenyj <wllenyj@linux.alibaba.com>
This commit is contained in:
parent
07f44c3e0a
commit
bec22ad01f
6
src/dragonball/src/api/mod.rs
Normal file
6
src/dragonball/src/api/mod.rs
Normal file
@ -0,0 +1,6 @@
|
||||
// Copyright (C) 2019-2022 Alibaba Cloud. All rights reserved.
|
||||
// SPDX-License-Identifier: Apache-2.0
|
||||
|
||||
//! API related data structures to configure the vmm.
|
||||
|
||||
pub mod v1;
|
84
src/dragonball/src/api/v1/instance_info.rs
Normal file
84
src/dragonball/src/api/v1/instance_info.rs
Normal file
@ -0,0 +1,84 @@
|
||||
// Copyright (C) 2022 Alibaba Cloud. All rights reserved.
|
||||
// Copyright 2018 Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
||||
//
|
||||
// SPDX-License-Identifier: Apache-2.0
|
||||
|
||||
use serde_derive::{Deserialize, Serialize};
|
||||
|
||||
/// The microvm state.
|
||||
///
|
||||
/// When Dragonball starts, the instance state is Uninitialized. Once start_microvm method is
|
||||
/// called, the state goes from Uninitialized to Starting. The state is changed to Running until
|
||||
/// the start_microvm method ends. Halting and Halted are currently unsupported.
|
||||
#[derive(Copy, Clone, Debug, Deserialize, PartialEq, Serialize)]
|
||||
pub enum InstanceState {
|
||||
/// Microvm is not initialized.
|
||||
Uninitialized,
|
||||
/// Microvm is starting.
|
||||
Starting,
|
||||
/// Microvm is running.
|
||||
Running,
|
||||
/// Microvm is Paused.
|
||||
Paused,
|
||||
/// Microvm received a halt instruction.
|
||||
Halting,
|
||||
/// Microvm is halted.
|
||||
Halted,
|
||||
/// Microvm exit instead of process exit.
|
||||
Exited(i32),
|
||||
}
|
||||
|
||||
/// The state of async actions
|
||||
#[derive(Debug, Deserialize, Serialize, Clone, PartialEq)]
|
||||
pub enum AsyncState {
|
||||
/// Uninitialized
|
||||
Uninitialized,
|
||||
/// Success
|
||||
Success,
|
||||
/// Failure
|
||||
Failure,
|
||||
}
|
||||
|
||||
/// The strongly typed that contains general information about the microVM.
|
||||
#[derive(Debug, Deserialize, Serialize)]
|
||||
pub struct InstanceInfo {
|
||||
/// The ID of the microVM.
|
||||
pub id: String,
|
||||
/// The state of the microVM.
|
||||
pub state: InstanceState,
|
||||
/// The version of the VMM that runs the microVM.
|
||||
pub vmm_version: String,
|
||||
/// The pid of the current VMM process.
|
||||
pub pid: u32,
|
||||
/// The state of async actions.
|
||||
pub async_state: AsyncState,
|
||||
/// List of tids of vcpu threads (vcpu index, tid)
|
||||
pub tids: Vec<(u8, u32)>,
|
||||
}
|
||||
|
||||
impl InstanceInfo {
|
||||
/// create instance info object with given id, version, and platform type
|
||||
pub fn new(id: String, vmm_version: String) -> Self {
|
||||
InstanceInfo {
|
||||
id,
|
||||
state: InstanceState::Uninitialized,
|
||||
vmm_version,
|
||||
pid: std::process::id(),
|
||||
async_state: AsyncState::Uninitialized,
|
||||
tids: Vec::new(),
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
impl Default for InstanceInfo {
|
||||
fn default() -> Self {
|
||||
InstanceInfo {
|
||||
id: String::from(""),
|
||||
state: InstanceState::Uninitialized,
|
||||
vmm_version: env!("CARGO_PKG_VERSION").to_string(),
|
||||
pid: std::process::id(),
|
||||
async_state: AsyncState::Uninitialized,
|
||||
tids: Vec::new(),
|
||||
}
|
||||
}
|
||||
}
|
7
src/dragonball/src/api/v1/mod.rs
Normal file
7
src/dragonball/src/api/v1/mod.rs
Normal file
@ -0,0 +1,7 @@
|
||||
// Copyright (C) 2019-2022 Alibaba Cloud. All rights reserved.
|
||||
// SPDX-License-Identifier: Apache-2.0
|
||||
|
||||
//! API Version 1 related data structures to configure the vmm.
|
||||
|
||||
mod instance_info;
|
||||
pub use self::instance_info::{InstanceInfo, InstanceState};
|
@ -11,6 +11,8 @@
|
||||
|
||||
/// Address space manager for virtual machines.
|
||||
pub mod address_space_manager;
|
||||
/// API to handle vmm requests.
|
||||
pub mod api;
|
||||
/// Structs to maintain configuration information.
|
||||
pub mod config_manager;
|
||||
/// Device manager for virtual machines.
|
||||
|
Loading…
Reference in New Issue
Block a user