use crate::{InterfaceType, Interfaces, MergedInterfaces, VrfInterface};
#[test]
fn test_vrf_stringlized_attributes() {
let iface: VrfInterface = serde_yaml::from_str(
r#"---
name: vrf1
type: vrf
state: up
vrf:
route-table-id: "101"
"#,
)
.unwrap();
assert_eq!(iface.vrf.unwrap().table_id, Some(101));
}
#[test]
fn test_vrf_ports() {
let ifaces: Interfaces = serde_yaml::from_str(
r#"---
- name: vrf1
type: vrf
state: up
vrf:
route-table-id: "101"
ports:
- eth1
- eth2
"#,
)
.unwrap();
assert_eq!(ifaces.to_vec()[0].ports(), Some(vec!["eth1", "eth2"]));
}
#[test]
fn test_vrf_on_bond_vlan_got_auto_remove() {
let cur_ifaces: Interfaces = serde_yaml::from_str(
r"---
- name: test-bond0.100
type: vlan
vlan:
base-iface: test-bond0
id: 100
- name: test-bond0
type: bond
link-aggregation:
mode: balance-rr
- name: test-vrf0
type: vrf
state: up
vrf:
port:
- test-bond0
- test-bond0.100
route-table-id: 100
",
)
.unwrap();
let des_ifaces: Interfaces = serde_yaml::from_str(
r"---
- name: test-bond0
type: bond
state: absent
- name: test-vrf0
type: vrf
state: absent
",
)
.unwrap();
let merged_ifaces =
MergedInterfaces::new(des_ifaces, cur_ifaces, false, false).unwrap();
let iface = merged_ifaces
.get_iface("test-bond0.100", InterfaceType::Vlan)
.unwrap()
.for_apply
.as_ref()
.unwrap();
assert!(iface.is_absent());
}
#[test]
fn test_vrf_skip_port_if_null() {
let iface: VrfInterface = serde_yaml::from_str(
r#"---
name: vrf1
type: vrf
state: up
vrf:
route-table-id: "101"
"#,
)
.unwrap();
let iface_yaml = serde_yaml::to_string(&iface).unwrap();
assert!(!iface_yaml.contains("port"))
}