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