Adding support for sdfabric topology deployment
Change-Id: If4f7a6016f8b3a91b47f68bc480f1cfa8ef5d5c3
diff --git a/mininet/toposcripts/topo-leafspine-param.py b/mininet/toposcripts/topo-leafspine-param.py
new file mode 100755
index 0000000..0b5fe2b
--- /dev/null
+++ b/mininet/toposcripts/topo-leafspine-param.py
@@ -0,0 +1,60 @@
+#!/usr/bin/python
+
+# SPDX-FileCopyrightText: 2022-present Intel Corporation
+# SPDX-License-Identifier: Apache-2.0
+
+import argparse
+
+from mininet.cli import CLI
+from mininet.log import setLogLevel, info
+from mininet.net import Mininet
+from mininet.topo import Topo
+from stratum import StratumBmv2Switch
+
+from mn_lib import IPv4Host
+from mn_lib import TaggedIPv4Host
+
+CPU_PORT = 255
+
+
+class TutorialTopo(Topo):
+ """2x2 fabric topology with IPv4 hosts"""
+
+ def __init__(self, *args, **kwargs):
+ Topo.__init__(self, *args, **kwargs)
+
+ spines = []
+ leaves = []
+{{- range $i, $junk := until (.Values.numLeaves|int) -}}
+{{- $leaf := printf "leaf%d" (add $i 1) }}
+ info( '*** Creating Leaf ' + '{{ $leaf }}\n' )
+ leaves.append(self.addSwitch(name='{{ $leaf }}', cls=StratumBmv2Switch, cpuport=CPU_PORT))
+{{- end }}
+
+{{- range $i, $junk := until (.Values.numSpines|int) -}}
+{{- $spine := printf "spine%d" (add $i 1) }}
+ info( '*** Creating Spine ' + '{{ $spine }}\n' )
+ spines.append(self.addSwitch(name='{{ $spine }}', cls=StratumBmv2Switch, cpuport=CPU_PORT))
+{{- end }}
+
+ for spine in spines:
+ for leaf in leaves:
+ info( '*** Creating link ' + str(spine) + ' ' + str(leaf) + '\n')
+ self.addLink(spine, leaf)
+ info( '*** Created link ' + str(spine) + ' ' + str(leaf) + '\n')
+
+
+def main():
+ net = Mininet(topo=TutorialTopo(), controller=None)
+ net.start()
+ CLI(net)
+ net.stop()
+
+
+if __name__ == "__main__":
+ parser = argparse.ArgumentParser(
+ description='Mininet topology script for 2x2 fabric with stratum_bmv2 and IPv4 hosts')
+ args = parser.parse_args()
+ setLogLevel('info')
+
+ main()