blob: 08233d04f95798d8d1f5ae02080383ff4f91d52a [file] [log] [blame]
Mohammed Naser3415a2a2025-03-06 21:16:12 -05001use ovsdb_derive::OVSDB;
2use std::collections::HashMap;
3use uuid::Uuid;
4
5#[derive(Debug, Clone, PartialEq, OVSDB)]
6pub 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
25fn 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}