Mohammed Naser | 3415a2a | 2025-03-06 21:16:12 -0500 | [diff] [blame] | 1 | use ovsdb_derive::OVSDB; |
| 2 | use std::collections::HashMap; |
| 3 | use uuid::Uuid; |
| 4 | |
| 5 | #[derive(Debug, Clone, PartialEq, OVSDB)] |
| 6 | pub struct NbGlobal { |
| 7 | pub name: String, |
| 8 | pub nb_cfg: i64, |
| 9 | pub nb_cfg_timestamp: i64, |
| 10 | pub sb_cfg: i64, |
| 11 | pub sb_cfg_timestamp: i64, |
| 12 | pub hv_cfg: i64, |
| 13 | pub hv_cfg_timestamp: i64, |
| 14 | pub external_ids: HashMap<String, String>, |
| 15 | pub connections: Vec<Uuid>, |
| 16 | pub ssl: Vec<Uuid>, |
| 17 | pub options: HashMap<String, String>, |
| 18 | pub ipsec: bool, |
| 19 | |
| 20 | // Required fields |
| 21 | pub _uuid: Option<Uuid>, |
| 22 | pub _version: Option<Uuid>, |
| 23 | } |
| 24 | |
| 25 | fn main() { |
| 26 | // Create a new NbGlobal instance |
| 27 | let mut nb_global = NbGlobal::new(); |
| 28 | |
| 29 | // Set some values |
| 30 | nb_global.name = "global".to_string(); |
| 31 | nb_global.nb_cfg = 0; |
| 32 | nb_global |
| 33 | .external_ids |
| 34 | .insert("test".to_string(), "value".to_string()); |
| 35 | |
| 36 | // Convert to a HashMap for OVSDB serialization |
| 37 | let map = nb_global.to_map(); |
| 38 | println!("{:?}", map); |
| 39 | |
| 40 | // Convert to JSON for sending to OVSDB |
| 41 | let json = serde_json::to_string(&map).unwrap(); |
| 42 | println!("{}", json); |
| 43 | |
| 44 | // Simulate receiving JSON from OVSDB |
| 45 | let received_map: HashMap<String, serde_json::Value> = serde_json::from_str(&json).unwrap(); |
| 46 | |
| 47 | // Convert back to NbGlobal |
| 48 | let parsed_nb_global = NbGlobal::from_map(&received_map).unwrap(); |
| 49 | println!("{:?}", parsed_nb_global); |
| 50 | } |