harmony/brocade/examples/main.rs
Ian Letourneau 073cccde2f
All checks were successful
Run Check Script / check (pull_request) Successful in 1m12s
improve wait for shell ready, restore dry run mode
2025-10-08 10:36:02 -04:00

52 lines
1.5 KiB
Rust

use std::net::{IpAddr, Ipv4Addr};
use brocade::BrocadeOptions;
use harmony_types::switch::PortLocation;
#[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 switch_addresses = vec![ip];
let brocade = brocade::init(
&switch_addresses,
22,
"admin",
"password",
Some(BrocadeOptions {
dry_run: true,
..Default::default()
}),
)
.await
.expect("Brocade client failed to connect");
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();
}