aristanetworks / avd

Arista Validated Designs
https://avd.arista.com
Apache License 2.0
288 stars 206 forks source link

PoE configuration is not rendered to structured config for interfaces in port-channel #4600

Open nathanmusser opened 1 day ago

nathanmusser commented 1 day ago

Issue Summary

When interfaces are in a port-channel they don't render PoE configuration (unless they're in fallback individual mode). In my use case we have an access point with a port-channel and powered by poe. We want to change the default behavior of keeping poe up while the port is admin down.

interface EthernetX
   shutdown
   switchport
   channel-group Y mode active
   poe shutdown action power-off
!
interface Port-ChannelY
   no shutdown
   switchport
   switchport access vlan 100
!

There are a few workarounds:

Ultimately I marked this as a bug because it doesn't seem intuitive that poe settings and port-channel membership are mutually exclusive and I didn't see any warning messages or documentation regarding this relationship. Structured config solves the issue relatively easily for me, so maybe documenting this relationship is enough if this behavior is intentional or desired for some reason.

Which component(s) of AVD impacted

eos_designs

How do you run AVD ?

Ansible CLI (with virtual-env or native python)

Steps to reproduce

Place a connected endpoint in port-channel and try to set poe configuration.

Relevant log output

No response

Contributing Guide

gmuloc commented 1 day ago

Hi @nathanmusser thanks for opening the issue. So the idea would be to move POE config to the common ethernet interface config: https://github.com/aristanetworks/avd/blob/devel/python-avd/pyavd/_eos_designs/structured_config/connected_endpoints/ethernet_interfaces.py#L153

This would mean that we don't call the adapter_poe method from the _update_ethernet_interface_cfg method. This change would be breaking as this would mean that the POE config coming from the LACP fallback mandatory profile would now be ignored and would have to be moved to the adapter or the "main" profile used under the adapter. Your issue also demonstrates that the LACP fallback config we render today is impacting the non-fallback scenario which is not great.

We want to get this breaking change for 5.0.0 if that makes sense.

Let us know if you want to pick it up and we can help write the porting guide entry to explain what is breaking.

nathanmusser commented 1 day ago

That makes sense and lines up with my intentions after looking at the code. I'll get a PR for it put together.