blob: 0b5fe2bde93852e1252bd3c0c734d77a0ad78282 [file] [log] [blame]
Andrea Campanella715a4c42022-06-01 15:39:46 +02001#!/usr/bin/python
2
3# SPDX-FileCopyrightText: 2022-present Intel Corporation
4# SPDX-License-Identifier: Apache-2.0
5
6import argparse
7
8from mininet.cli import CLI
9from mininet.log import setLogLevel, info
10from mininet.net import Mininet
11from mininet.topo import Topo
12from stratum import StratumBmv2Switch
13
14from mn_lib import IPv4Host
15from mn_lib import TaggedIPv4Host
16
17CPU_PORT = 255
18
19
20class TutorialTopo(Topo):
21 """2x2 fabric topology with IPv4 hosts"""
22
23 def __init__(self, *args, **kwargs):
24 Topo.__init__(self, *args, **kwargs)
25
26 spines = []
27 leaves = []
28{{- range $i, $junk := until (.Values.numLeaves|int) -}}
29{{- $leaf := printf "leaf%d" (add $i 1) }}
30 info( '*** Creating Leaf ' + '{{ $leaf }}\n' )
31 leaves.append(self.addSwitch(name='{{ $leaf }}', cls=StratumBmv2Switch, cpuport=CPU_PORT))
32{{- end }}
33
34{{- range $i, $junk := until (.Values.numSpines|int) -}}
35{{- $spine := printf "spine%d" (add $i 1) }}
36 info( '*** Creating Spine ' + '{{ $spine }}\n' )
37 spines.append(self.addSwitch(name='{{ $spine }}', cls=StratumBmv2Switch, cpuport=CPU_PORT))
38{{- end }}
39
40 for spine in spines:
41 for leaf in leaves:
42 info( '*** Creating link ' + str(spine) + ' ' + str(leaf) + '\n')
43 self.addLink(spine, leaf)
44 info( '*** Created link ' + str(spine) + ' ' + str(leaf) + '\n')
45
46
47def main():
48 net = Mininet(topo=TutorialTopo(), controller=None)
49 net.start()
50 CLI(net)
51 net.stop()
52
53
54if __name__ == "__main__":
55 parser = argparse.ArgumentParser(
56 description='Mininet topology script for 2x2 fabric with stratum_bmv2 and IPv4 hosts')
57 args = parser.parse_args()
58 setLogLevel('info')
59
60 main()