To adjust config db generated via minigraph per matchmode changes in fine grained ecmp. The changes are done so that nexthop IP based filtering can occur to determine routes as requiring Fine Grained ECMP, in the past the only mode was to use the IP prefix of the route for filtering, with this matchmode change we will use nexthop IP based filtering
Azure/SONiC#727
How I did it
Change will modify config db entry created for FG_NHG to include 'match_mode': 'nexthop-based' so that nexthop IP based filtering can occur to determine routes as requiring Fine Grained ECMP. Changes also remove FG_NHG_PREFIX entry since its not needed under matchmode nexthop-based.
#### Why I did it
Some platforms have difficult to attach egress ACL to vlan.
#### How I did it
For egress ACL attaching to vlan, break them into vlan members.
#### How to verify it
Unit test
Tested in DUT
It is possible that one interface attaches multiple vlans. The VlanInterface should be in tagged mode.
Signed-off-by: Qi Luo <qiluo-msft@users.noreply.github.com>
Why I did it
To support FG_ECMP scenarios
- How I did it
Modified minigraph parser to parse ECMP fields in the case they are present in minigraph
- How to verify it
Loaded ensuing config_db file on a DUT to verify the fields are parsed and configure device correctly
Find LogicalLinks in minigraph and parse the port information. A new field called `mux_cable` is added to each port's entry in the Port table in config DB:
```
PORT|Ethernet0: {
"alias": "Ethernet4/1"
...
"mux_cable": "true"
}
```
If a mux cable is present on a port, the value for `mux_cable` will be `"true"`. If no mux cable is present, the attribute will either be omitted (default behavior) or set to `"false"`.
Jinja2 templates rendered using Python 3 interpreter, are required
to conform with Python 3 new semantics.
singed-off-by: Tamer Ahmed <tamer.ahmed@microsoft.com>
Natural sorting of SONiC config gen output consumes lot of CPU cycles.
The sole use of natsorted was to make test comparison easier and so,
the natsorting logic is now relocated to the test suite. As a result
sonic-cfggen gained nearly 1 sec per call since we no longer import
natsorted module!
singed-off-by: Tamer Ahmed <tamer.ahmed@microsoft.com>
Calls to cfggen take considerable time. With batch mode, we will have the ability
to reduce number of calls from services.
Example of the batch mode command:
sonic-cfggen -t template-1.j2 -t template-2.j2,config-db -t template-3.j2,config-db -t template-4.j2,file1 -t template-5.j2,file2 --write-to-db.
template-1.j2 will be rendered to stdout since it is missing the dest part. stdout is default
config-db is a special keyword that will inject the rendered template into internal data structure. The internal data structure gets written to redis-db with --write-to-db switch. In the case the user would like to write to a file named config-db, it could be given as /config-db or ./config-db
signed-off-by: Tamer Ahmed <tamer.ahmed@microsoft.com>
* Bring up FPGA ports and test it
* Bring up those ports in neighbors dict
* Revert delete of a line
* Add test
* change code comment
* Change test name
* Revert submodule update
To enable tagged vlan support by minigraph parser. This enables us to generate a config_db file that will enable SONiC device to operate using tagged and untagged vlan.
* Fix bugs - "show run acl/interfaces" returns traceback when no ACL_RULE/INTERFACE is present in configuration
- Change logic in main to take data only if the var_json appears in DB.
- Add unit testing for bug fix & fix comments
Signed-off-by: Noa Or <noaor@mellanox.com>
* Update minigraph.py to filter out front-panel ports that are not active
* Update cfggen tests to reflect new behavior
Signed-off-by: Danny Allen <daall@microsoft.com>
* Incorporate PR comments
- Update t0 tests to include additional device neighbors
- Refactor xml parsing logic
This piece of information is currently not used. Revert this
pull request in the future to add back the default mirror
session information into the configuration database.
Signed-off-by: Shu0T1an ChenG <shuche@microsoft.com>
* Adding --key option to sonic-cfggen script. This will help to display config DB with more granularity.
Signed-off-by: Vasant Patil <vapatil@linkedin.com>
* [minigraph.py] generate mandatory default port description
Signed-off-by: Mykola Faryma <mykolaf@mellanox.com>
* use port name as default description
* [config-engine] update test exaple output
Signed-off-by: Mykola Faryma <mykolaf@mellanox.com>
* [minigraph.py] use alias/port name as default description instead of neighbor data
Signed-off-by: Mykola Faryma <mykolaf@mellanox.com>
By default, port channel members and VLAN members are set to admin
status UP. This configuration could be updated via the command:
config interface <interface_name> startup/shutdown
Signed-off-by: Shu0T1an ChenG <shuche@microsoft.com>
- Move front panel ports and port channels MTU and IP configurations out of
the current /etc/network/interfaces file and store them in the configuration
database.
- The default MTU value for both front panel ports and the port channels is
9100. They are set via the minigraph or 9100 by default.
- Introduce portmgrd which will pick up the MTU configurations from the
configuration database.
- The updated intfmgrd will pick up IP address changes from the configuration
database.
- Update sonic-swss submodule
Signed-off-by: Shu0T1an ChenG <shuche@microsoft.com>
* Fix minigraph parser issue when handling LAG related ACL table configuration
* rephrase the warning message.
* pick up swss change in https://github.com/Azure/sonic-swss/pull/494
* Add noise config for PortChannel & EthernetInterface in simple-sample-graph.xml
* Add noise config for PORTCHANNEL_INTERFACE in simple-sample-graph.xml
Signed-off-by: Wenda <wenni@microsoft.com>
* Add noice config for DEVICE_NEIGHBOR in t0-sample-graph.xml
Add unit test against introducing ports not existing in port_config.ini
into DEVICE_NEIGHBOR
Signed-off-by: Wenda <wenni@microsoft.com>
* DeviceInterfaceLink in minigraph.xml can contain port not existing in
port_config.ini but contraining non-zero Bandwidth attribute
Add noice config in simple-sample-graph.xml to capture the case that
such a port is leaked into config_db.json
Signed-off-by: Wenda <wenni@microsoft.com>
* Protect PORTCHANNEL from ports not existing in port_config.ini
Signed-off-by: Wenda <wenni@microsoft.com>
* Protect PORTCHANNEL_INTERFACE from portchannels containing ports not
existing in port_config.ini
Signed-off-by: Wenda <wenni@microsoft.com>
* Protect DEVICE_NEIGHBOR from ports not existing in port_config.ini
Signed-off-by: Wenda <wenni@microsoft.com>
* Add noise config Ethernet1 in DeviceInterfaceLinks in simple-sample-graph.xml as it is in PortChannel1001
Signed-off-by: Wenda <wenni@microsoft.com>
* Add noise config Ethernet1 in DeviceInterfaceLinks in simple-sample-graph.xml as it is in PortChannel1001
Signed-off-by: Wenda <wenni@microsoft.com>
* Protect PORTCHANNEL from ports not existing in port_config.ini
Signed-off-by: Wenda <wenni@microsoft.com>
* Protect PORTCHANNEL_INTERFACE from portchannels containing ports not
existing in port_config.ini
Signed-off-by: Wenda <wenni@microsoft.com>
* Protect DEVICE_NEIGHBOR from ports not existing in port_config.ini
Signed-off-by: Wenda <wenni@microsoft.com>
* Correct space in minigraph.py
Signed-off-by: Wenda <wenni@microsoft.com>
* Does not allow non-port_config.ini port to get into the port list
Signed-off-by: Wenda <wenni@microsoft.com>
* Check PORTCHANNEL against PORT list only if port_config_file exists
Signed-off-by: Wenda <wenni@microsoft.com>
* Correct format
Signed-off-by: Wenda <wenni@microsoft.com>
* print warning when a port coming from DeviceInterfaceLink is not in
port_config.ini
Signed-off-by: Wenda <wenni@microsoft.com>
* Change Ethernet1 and 2 to fortyGigE0/1 and 2,respectively
Signed-off-by: Wenda <wenni@microsoft.com>
* Change Ethernet1 and 2 to fortyGigE0/1 and 2,respectively
Signed-off-by: Wenda <wenni@microsoft.com>
* print warning when ignoring ports, portchannels, portchannel interfaces, and
device neighbors
Update t0-sample-graph.xml with interface name 'fortyGigE0/2' and the
ACL_TABLE output
Signed-off-by: Wenda <wenni@microsoft.com>
* Fix minigraph parser issue when handling LAG related ACL table configuration
Changes to be committed:
modified: src/sonic-config-engine/minigraph.py
modified: src/sonic-config-engine/tests/test_cfggen.py
signed-off-by kebol@mellanox.com