mirror of
https://github.com/kata-containers/kata-containers.git
synced 2025-06-27 07:48:55 +00:00
libs/types:Option type to handle empty tomlconfig
loading from empty string is only used to identity that the config is not initialized yet, so Option<TomlConfig> is a better option Signed-off-by: Zhongtao Hu <zhongtaohu.tim@linux.alibaba.com>
This commit is contained in:
parent
626828696d
commit
8ffff40af4
@ -185,7 +185,7 @@ pub fn validate_path_pattern<P: AsRef<Path>>(patterns: &[String], path: P) -> Re
|
|||||||
|
|
||||||
/// Kata configuration information.
|
/// Kata configuration information.
|
||||||
pub struct KataConfig {
|
pub struct KataConfig {
|
||||||
config: TomlConfig,
|
config: Option<TomlConfig>,
|
||||||
agent: String,
|
agent: String,
|
||||||
hypervisor: String,
|
hypervisor: String,
|
||||||
}
|
}
|
||||||
@ -194,7 +194,7 @@ impl KataConfig {
|
|||||||
/// Set the default Kata configuration object.
|
/// Set the default Kata configuration object.
|
||||||
///
|
///
|
||||||
/// The default Kata configuration information is loaded from system configuration file.
|
/// The default Kata configuration information is loaded from system configuration file.
|
||||||
pub fn set_default_config(config: TomlConfig, hypervisor: &str, agent: &str) {
|
pub fn set_default_config(config: Option<TomlConfig>, hypervisor: &str, agent: &str) {
|
||||||
let kata = KataConfig {
|
let kata = KataConfig {
|
||||||
config,
|
config,
|
||||||
agent: agent.to_string(),
|
agent: agent.to_string(),
|
||||||
@ -214,7 +214,7 @@ impl KataConfig {
|
|||||||
///
|
///
|
||||||
/// The active Kata configuration information is default configuration information patched
|
/// The active Kata configuration information is default configuration information patched
|
||||||
/// with tunable configuration information from annotations.
|
/// with tunable configuration information from annotations.
|
||||||
pub fn set_active_config(config: TomlConfig, hypervisor: &str, agent: &str) {
|
pub fn set_active_config(config: Option<TomlConfig>, hypervisor: &str, agent: &str) {
|
||||||
let kata = KataConfig {
|
let kata = KataConfig {
|
||||||
config,
|
config,
|
||||||
agent: agent.to_string(),
|
agent: agent.to_string(),
|
||||||
@ -232,13 +232,13 @@ impl KataConfig {
|
|||||||
}
|
}
|
||||||
/// Get the config in use
|
/// Get the config in use
|
||||||
pub fn get_config(&self) -> &TomlConfig {
|
pub fn get_config(&self) -> &TomlConfig {
|
||||||
&self.config
|
self.config.as_ref().unwrap()
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Get the agent configuration in use.
|
/// Get the agent configuration in use.
|
||||||
pub fn get_agent(&self) -> Option<&Agent> {
|
pub fn get_agent(&self) -> Option<&Agent> {
|
||||||
if !self.agent.is_empty() {
|
if !self.agent.is_empty() {
|
||||||
self.config.agent.get(&self.agent)
|
self.config.as_ref().unwrap().agent.get(&self.agent)
|
||||||
} else {
|
} else {
|
||||||
None
|
None
|
||||||
}
|
}
|
||||||
@ -247,7 +247,11 @@ impl KataConfig {
|
|||||||
/// Get the hypervisor configuration in use.
|
/// Get the hypervisor configuration in use.
|
||||||
pub fn get_hypervisor(&self) -> Option<&Hypervisor> {
|
pub fn get_hypervisor(&self) -> Option<&Hypervisor> {
|
||||||
if !self.hypervisor.is_empty() {
|
if !self.hypervisor.is_empty() {
|
||||||
self.config.hypervisor.get(&self.hypervisor)
|
self.config
|
||||||
|
.as_ref()
|
||||||
|
.unwrap()
|
||||||
|
.hypervisor
|
||||||
|
.get(&self.hypervisor)
|
||||||
} else {
|
} else {
|
||||||
None
|
None
|
||||||
}
|
}
|
||||||
@ -256,7 +260,7 @@ impl KataConfig {
|
|||||||
|
|
||||||
lazy_static! {
|
lazy_static! {
|
||||||
static ref KATA_DEFAULT_CONFIG: Mutex<Arc<KataConfig>> = {
|
static ref KATA_DEFAULT_CONFIG: Mutex<Arc<KataConfig>> = {
|
||||||
let config = TomlConfig::load("").unwrap();
|
let config = Some(TomlConfig::load("").unwrap());
|
||||||
let kata = KataConfig {
|
let kata = KataConfig {
|
||||||
config,
|
config,
|
||||||
agent: String::new(),
|
agent: String::new(),
|
||||||
@ -266,7 +270,7 @@ lazy_static! {
|
|||||||
Mutex::new(Arc::new(kata))
|
Mutex::new(Arc::new(kata))
|
||||||
};
|
};
|
||||||
static ref KATA_ACTIVE_CONFIG: Mutex<Arc<KataConfig>> = {
|
static ref KATA_ACTIVE_CONFIG: Mutex<Arc<KataConfig>> = {
|
||||||
let config = TomlConfig::load("").unwrap();
|
let config = Some(TomlConfig::load("").unwrap());
|
||||||
let kata = KataConfig {
|
let kata = KataConfig {
|
||||||
config,
|
config,
|
||||||
agent: String::new(),
|
agent: String::new(),
|
||||||
|
@ -34,7 +34,7 @@ mod tests {
|
|||||||
qemu.register();
|
qemu.register();
|
||||||
|
|
||||||
let config = TomlConfig::load(&content).unwrap();
|
let config = TomlConfig::load(&content).unwrap();
|
||||||
KataConfig::set_active_config(config, "qemu", "agent0");
|
KataConfig::set_active_config(Some(config), "qemu", "agent0");
|
||||||
|
|
||||||
std::process::Command::new("mkdir")
|
std::process::Command::new("mkdir")
|
||||||
.arg("./hypervisor_path")
|
.arg("./hypervisor_path")
|
||||||
@ -175,7 +175,7 @@ mod tests {
|
|||||||
assert!(anno
|
assert!(anno
|
||||||
.update_config_by_annotation(&mut config, "qemu", "agent0")
|
.update_config_by_annotation(&mut config, "qemu", "agent0")
|
||||||
.is_ok());
|
.is_ok());
|
||||||
KataConfig::set_active_config(config, "qemu", "agnet0");
|
KataConfig::set_active_config(Some(config), "qemu", "agnet0");
|
||||||
if let Some(ag) = KataConfig::get_default_config().get_agent() {
|
if let Some(ag) = KataConfig::get_default_config().get_agent() {
|
||||||
assert_eq!(
|
assert_eq!(
|
||||||
ag.kernel_modules[0],
|
ag.kernel_modules[0],
|
||||||
@ -287,7 +287,7 @@ mod tests {
|
|||||||
qemu.register();
|
qemu.register();
|
||||||
|
|
||||||
let config = TomlConfig::load(&content).unwrap();
|
let config = TomlConfig::load(&content).unwrap();
|
||||||
KataConfig::set_active_config(config, "qemu", "agent0");
|
KataConfig::set_active_config(Some(config), "qemu", "agent0");
|
||||||
|
|
||||||
let mut anno_hash = HashMap::new();
|
let mut anno_hash = HashMap::new();
|
||||||
anno_hash.insert(
|
anno_hash.insert(
|
||||||
@ -312,7 +312,7 @@ mod tests {
|
|||||||
qemu.register();
|
qemu.register();
|
||||||
|
|
||||||
let config = TomlConfig::load(&content).unwrap();
|
let config = TomlConfig::load(&content).unwrap();
|
||||||
KataConfig::set_active_config(config, "qemu", "agent0");
|
KataConfig::set_active_config(Some(config), "qemu", "agent0");
|
||||||
|
|
||||||
let mut anno_hash = HashMap::new();
|
let mut anno_hash = HashMap::new();
|
||||||
anno_hash.insert(
|
anno_hash.insert(
|
||||||
@ -337,7 +337,7 @@ mod tests {
|
|||||||
qemu.register();
|
qemu.register();
|
||||||
|
|
||||||
let config = TomlConfig::load(&content).unwrap();
|
let config = TomlConfig::load(&content).unwrap();
|
||||||
KataConfig::set_active_config(config, "qemu", "agent0");
|
KataConfig::set_active_config(Some(config), "qemu", "agent0");
|
||||||
|
|
||||||
let mut anno_hash = HashMap::new();
|
let mut anno_hash = HashMap::new();
|
||||||
anno_hash.insert(
|
anno_hash.insert(
|
||||||
@ -365,7 +365,7 @@ mod tests {
|
|||||||
qemu.register();
|
qemu.register();
|
||||||
|
|
||||||
let config = TomlConfig::load(&content).unwrap();
|
let config = TomlConfig::load(&content).unwrap();
|
||||||
KataConfig::set_active_config(config, "qemu", "agent0");
|
KataConfig::set_active_config(Some(config), "qemu", "agent0");
|
||||||
|
|
||||||
let mut anno_hash = HashMap::new();
|
let mut anno_hash = HashMap::new();
|
||||||
anno_hash.insert(
|
anno_hash.insert(
|
||||||
@ -386,7 +386,7 @@ mod tests {
|
|||||||
let path = Path::new(path).join("tests/texture/configuration-anno-0.toml");
|
let path = Path::new(path).join("tests/texture/configuration-anno-0.toml");
|
||||||
let content = fs::read_to_string(&path).unwrap();
|
let content = fs::read_to_string(&path).unwrap();
|
||||||
let config = TomlConfig::load(&content).unwrap();
|
let config = TomlConfig::load(&content).unwrap();
|
||||||
KataConfig::set_active_config(config, "qemu", "agent0");
|
KataConfig::set_active_config(Some(config), "qemu", "agent0");
|
||||||
|
|
||||||
let qemu = QemuConfig::new();
|
let qemu = QemuConfig::new();
|
||||||
qemu.register();
|
qemu.register();
|
||||||
@ -414,7 +414,7 @@ mod tests {
|
|||||||
qemu.register();
|
qemu.register();
|
||||||
|
|
||||||
let config = TomlConfig::load(&content).unwrap();
|
let config = TomlConfig::load(&content).unwrap();
|
||||||
KataConfig::set_active_config(config, "qemu", "agent0");
|
KataConfig::set_active_config(Some(config), "qemu", "agent0");
|
||||||
|
|
||||||
let mut anno_hash = HashMap::new();
|
let mut anno_hash = HashMap::new();
|
||||||
anno_hash.insert(
|
anno_hash.insert(
|
||||||
@ -439,7 +439,7 @@ mod tests {
|
|||||||
qemu.register();
|
qemu.register();
|
||||||
|
|
||||||
let config = TomlConfig::load(&content).unwrap();
|
let config = TomlConfig::load(&content).unwrap();
|
||||||
KataConfig::set_active_config(config, "qemu", "agent0");
|
KataConfig::set_active_config(Some(config), "qemu", "agent0");
|
||||||
|
|
||||||
let mut anno_hash = HashMap::new();
|
let mut anno_hash = HashMap::new();
|
||||||
anno_hash.insert(
|
anno_hash.insert(
|
||||||
|
Loading…
Reference in New Issue
Block a user