harmony/brocade/examples/main.rs
Ian Letourneau da5be17cb6
All checks were successful
Run Check Script / check (pull_request) Successful in 1m6s
implement switch brocade setup by configuring interfaces with operating mode access
2025-10-14 17:21:13 -04:00

70 lines
2.1 KiB
Rust

use std::net::{IpAddr, Ipv4Addr};
use brocade::BrocadeOptions;
use harmony_secret::{Secret, SecretManager};
use serde::{Deserialize, Serialize};
#[derive(Secret, Clone, Debug, Serialize, Deserialize)]
struct BrocadeSwitchAuth {
username: String,
password: String,
}
#[tokio::main]
async fn main() {
env_logger::Builder::from_env(env_logger::Env::default().default_filter_or("info")).init();
// let ip = IpAddr::V4(Ipv4Addr::new(10, 0, 0, 250)); // old brocade @ ianlet
let ip = IpAddr::V4(Ipv4Addr::new(192, 168, 55, 101)); // brocade @ sto1
// let ip = IpAddr::V4(Ipv4Addr::new(192, 168, 4, 11)); // brocade @ st
let switch_addresses = vec![ip];
let config = SecretManager::get_or_prompt::<BrocadeSwitchAuth>()
.await
.unwrap();
let brocade = brocade::init(
&switch_addresses,
22,
&config.username,
&config.password,
Some(BrocadeOptions {
dry_run: true,
..Default::default()
}),
)
.await
.expect("Brocade client failed to connect");
let entries = brocade.get_stack_topology().await.unwrap();
println!("Stack topology: {entries:#?}");
let entries = brocade.get_interfaces().await.unwrap();
println!("Interfaces: {entries:#?}");
// let version = brocade.version().await.unwrap();
// println!("Version: {version:?}");
//
// println!("--------------");
// let mac_adddresses = brocade.show_mac_address_table().await.unwrap();
// println!("VLAN\tMAC\t\t\tPORT");
// for mac in mac_adddresses {
// println!("{}\t{}\t{}", mac.vlan, mac.mac_address, mac.port);
// }
//
// println!("--------------");
// let channel_name = "HARMONY_LAG";
// brocade.clear_port_channel(channel_name).await.unwrap();
//
// println!("--------------");
// let channel_id = brocade.find_available_channel_id().await.unwrap();
//
// println!("--------------");
// let channel_name = "HARMONY_LAG";
// let ports = [PortLocation(1, 1, 3), PortLocation(1, 1, 4)];
// brocade
// .create_port_channel(channel_id, channel_name, &ports)
// .await
// .unwrap();
}