diff --git a/unittest/yaml/error-bridgedomain2.yaml b/unittest/yaml/error-bridgedomain2.yaml index 8248641..7e70536 100644 --- a/unittest/yaml/error-bridgedomain2.yaml +++ b/unittest/yaml/error-bridgedomain2.yaml @@ -3,7 +3,8 @@ test: errors: expected: - "bridgedomain .* member .* has an LCP" - count: 3 + - "interface .* is in L2 mode but has LCP name .*" + count: 5 --- interfaces: GigabitEthernet1/0/0: diff --git a/unittest/yaml/error-bridgedomain3.yaml b/unittest/yaml/error-bridgedomain3.yaml index c71ba3d..5dc9e7e 100644 --- a/unittest/yaml/error-bridgedomain3.yaml +++ b/unittest/yaml/error-bridgedomain3.yaml @@ -5,7 +5,8 @@ test: - "interface .* has an address but no LCP" - "sub-interface .* has an address but .* does not have LCP" - "bridgedomain .* member .* has an address" - count: 6 + - "interface .* is in L2 mode but has an address" + count: 8 --- interfaces: GigabitEthernet1/0/0: diff --git a/unittest/yaml/error-l2xc4.yaml b/unittest/yaml/error-l2xc4.yaml index 99969b5..645f8f7 100644 --- a/unittest/yaml/error-l2xc4.yaml +++ b/unittest/yaml/error-l2xc4.yaml @@ -2,11 +2,13 @@ test: description: "L2 cross connect targets cannot have an IP address or LCP" errors: expected: - - "interface .* has l2xc so it cannot be an LCP" + - "interface .* has l2xc so it cannot have an LCP" - "interface .* has l2xc so it cannot have an address" - - "interface .* l2xc target .* cannot be an LCP" + - "interface .* l2xc target .* cannot have an LCP" - "interface .* l2xc target .* cannot have an address" - count: 6 + - "interface .* is in L2 mode but has LCP name .*" + - "interface .* is in L2 mode but has an address" + count: 9 --- interfaces: GigabitEthernet1/0/0: diff --git a/unittest/yaml/error-l2xc6.yaml b/unittest/yaml/error-l2xc6.yaml index f839abd..c1b057c 100644 --- a/unittest/yaml/error-l2xc6.yaml +++ b/unittest/yaml/error-l2xc6.yaml @@ -3,7 +3,7 @@ test: errors: expected: - "sub-interface .* l2xc target .* cannot have an address" - - "sub-interface .* l2xc target .* cannot be an LCP" + - "sub-interface .* l2xc target .* cannot have an LCP" count: 2 --- interfaces: diff --git a/validator/interface.py b/validator/interface.py index 60afa42..08aefdd 100644 --- a/validator/interface.py +++ b/validator/interface.py @@ -371,6 +371,12 @@ def validate_interfaces(yaml): if iface_address and not iface_lcp: msgs.append("interface %s has an address but no LCP" % ifname) result = False + if is_l2(yaml, ifname) and iface_lcp: + msgs.append("interface %s is in L2 mode but has LCP name %s" % (ifname, iface_lcp)) + result = False + if is_l2(yaml, ifname) and iface_address: + msgs.append("interface %s is in L2 mode but has an address" % ifname) + result = False if iface_lcp and not lcp.is_unique(yaml, iface_lcp): msgs.append("interface %s does not have a unique LCP name %s" % (ifname, iface_lcp)) result = False @@ -386,7 +392,7 @@ def validate_interfaces(yaml): msgs.append("interface %s has l2xc so it cannot have sub-interfaces" % (ifname)) result = False if iface_lcp: - msgs.append("interface %s has l2xc so it cannot be an LCP" % (ifname)) + msgs.append("interface %s has l2xc so it cannot have an LCP" % (ifname)) result = False if iface_address: msgs.append("interface %s has l2xc so it cannot have an address" % (ifname)) @@ -408,7 +414,7 @@ def validate_interfaces(yaml): msgs.append("interface %s l2xc target %s is in a bridgedomain" % (ifname, iface['l2xc'])) result = False if has_lcp(yaml, iface['l2xc']): - msgs.append("interface %s l2xc target %s cannot be an LCP" % (ifname, iface['l2xc'])) + msgs.append("interface %s l2xc target %s cannot have an LCP" % (ifname, iface['l2xc'])) result = False if has_address(yaml, iface['l2xc']): msgs.append("interface %s l2xc target %s cannot have an address" % (ifname, iface['l2xc'])) @@ -465,7 +471,7 @@ def validate_interfaces(yaml): result = False if 'l2xc' in sub_iface: if has_lcp(yaml, sub_ifname): - msgs.append("sub-interface %s has l2xc so it cannot be an LCP" % (sub_ifname)) + msgs.append("sub-interface %s has l2xc so it cannot have an LCP" % (sub_ifname)) result = False if has_address(yaml, sub_ifname): msgs.append("sub-interface %s has l2xc so it cannot have an address" % (sub_ifname)) @@ -487,7 +493,7 @@ def validate_interfaces(yaml): msgs.append("sub-interface %s l2xc target %s is in a bridgedomain" % (sub_ifname, sub_iface['l2xc'])) result = False if has_lcp(yaml, sub_iface['l2xc']): - msgs.append("sub-interface %s l2xc target %s cannot be an LCP" % (sub_ifname, sub_iface['l2xc'])) + msgs.append("sub-interface %s l2xc target %s cannot have an LCP" % (sub_ifname, sub_iface['l2xc'])) result = False if has_address(yaml, sub_iface['l2xc']): msgs.append("sub-interface %s l2xc target %s cannot have an address" % (sub_ifname, sub_iface['l2xc']))