| use ovsdb_derive::OVSDB; |
| use std::collections::HashMap; |
| use uuid::Uuid; |
| |
| #[derive(Debug, Clone, PartialEq, OVSDB)] |
| pub struct NbGlobal { |
| pub name: String, |
| pub nb_cfg: i64, |
| pub nb_cfg_timestamp: i64, |
| pub sb_cfg: i64, |
| pub sb_cfg_timestamp: i64, |
| pub hv_cfg: i64, |
| pub hv_cfg_timestamp: i64, |
| pub external_ids: HashMap<String, String>, |
| pub connections: Vec<Uuid>, |
| pub ssl: Vec<Uuid>, |
| pub options: HashMap<String, String>, |
| pub ipsec: bool, |
| |
| // Required fields |
| pub _uuid: Option<Uuid>, |
| pub _version: Option<Uuid>, |
| } |
| |
| fn main() { |
| // Create a new NbGlobal instance |
| let mut nb_global = NbGlobal::new(); |
| |
| // Set some values |
| nb_global.name = "global".to_string(); |
| nb_global.nb_cfg = 0; |
| nb_global |
| .external_ids |
| .insert("test".to_string(), "value".to_string()); |
| |
| // Convert to a HashMap for OVSDB serialization |
| let map = nb_global.to_map(); |
| println!("{:?}", map); |
| |
| // Convert to JSON for sending to OVSDB |
| let json = serde_json::to_string(&map).unwrap(); |
| println!("{}", json); |
| |
| // Simulate receiving JSON from OVSDB |
| let received_map: HashMap<String, serde_json::Value> = serde_json::from_str(&json).unwrap(); |
| |
| // Convert back to NbGlobal |
| let parsed_nb_global = NbGlobal::from_map(&received_map).unwrap(); |
| println!("{:?}", parsed_nb_global); |
| } |