Skip to content

Commit 410bd1c

Browse files
committed
Add command to start node managers automatically to 8r-1c-out-band-isis and 8r-1c-in-band-isis topologies
1 parent b41c1c5 commit 410bd1c

File tree

2 files changed

+115
-0
lines changed

2 files changed

+115
-0
lines changed

nets/8r-1c-in-band-isis/isis8d.py

Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,9 @@
11
#!/usr/bin/python
22

3+
from argparse import ArgumentParser
34
import os
45
import shutil
6+
from dotenv import load_dotenv
57
from mininet.topo import Topo
68
from mininet.node import Host
79
from mininet.net import Mininet
@@ -16,6 +18,20 @@
1618

1719
PRIVDIR = '/var/priv'
1820

21+
START_NODE_MANAGERS = False
22+
NODE_MANAGER_PATH = ''
23+
24+
# Load environment variables from .env file
25+
load_dotenv()
26+
27+
# Get node manager path
28+
NODE_MANAGER_PATH = os.getenv('NODE_MANAGER_PATH')
29+
NODE_MANAGER_PATH.join(NODE_MANAGER_PATH, 'srv6_manager.py')
30+
# Get gRPC server port
31+
NODE_MANAGER_GRPC_PORT = os.getenv('NODE_MANAGER_GRPC_PORT')
32+
NODE_MANAGER_GRPC_PORT.join(NODE_MANAGER_GRPC_PORT, 'srv6_manager.py')
33+
34+
1935
class BaseNode(Host):
2036

2137
def __init__(self, name, *args, **kwargs):
@@ -86,6 +102,15 @@ class Router(BaseNode):
86102
def __init__(self, name, *args, **kwargs):
87103
BaseNode.__init__(self, name, *args, **kwargs)
88104

105+
def config(self, **kwargs):
106+
# Init steps
107+
BaseNode.config(self, **kwargs)
108+
# Start node managers
109+
if START_NODE_MANAGERS:
110+
self.cmd('python %s --grpc_port %s'
111+
% (NODE_MANAGER_PATH % NODE_MANAGER_GRPC_PORT))
112+
113+
89114
# the add_link function creates a link and assigns the interface names
90115
# as node1-node2 and node2-node1
91116
def add_link (my_net, node1, node2):
@@ -216,8 +241,41 @@ def simpleTest():
216241
stopAll()
217242

218243

244+
def parse_arguments():
245+
# Get parser
246+
parser = ArgumentParser(
247+
description='Emulation of a Mininet topology (8 routers running '
248+
'IS-IS, 1 controller in-band'
249+
)
250+
parser.add_argument(
251+
'--start-node-managers', dest='start_node_managers',
252+
action='store_true', default=False,
253+
help='Define whether to start node manager on routers or not'
254+
)
255+
# Parse input parameters
256+
args = parser.parse_args()
257+
# Return the arguments
258+
return args
259+
219260

220261
if __name__ == '__main__':
262+
# Parse command-line arguments
263+
args = parse_arguments()
264+
# Define whether to start node manager on routers or not
265+
START_NODE_MANAGERS = args.start_node_managers
266+
if START_NODE_MANAGERS:
267+
if NODE_MANAGER_PATH:
268+
print('Error: --start-node-managers requires NODE_MANAGER_PATH '
269+
'variable')
270+
print('NODE_MANAGER_PATH variable is not set in .env file or '
271+
'the variable points to a non existing folder')
272+
exit(-2)
273+
if NODE_MANAGER_GRPC_PORT:
274+
print('Error: --start-node-managers requires '
275+
'NODE_MANAGER_GRPC_PORT variable')
276+
print('NODE_MANAGER_GRPC_PORT variable is not set in .env file or '
277+
'the variable points to a non existing folder')
278+
exit(-2)
221279
# Tell mininet to print useful information
222280
setLogLevel('info')
223281
simpleTest()

nets/8r-1c-out-band-isis/isis8d.py

Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,9 @@
11
#!/usr/bin/python
22

3+
from argparse import ArgumentParser
34
import os
45
import shutil
6+
from dotenv import load_dotenv
57
from mininet.topo import Topo
68
from mininet.node import Host, OVSBridge
79
from mininet.net import Mininet
@@ -16,6 +18,20 @@
1618

1719
PRIVDIR = '/var/priv'
1820

21+
START_NODE_MANAGERS = False
22+
NODE_MANAGER_PATH = ''
23+
24+
# Load environment variables from .env file
25+
load_dotenv()
26+
27+
# Get node manager path
28+
NODE_MANAGER_PATH = os.getenv('NODE_MANAGER_PATH')
29+
NODE_MANAGER_PATH.join(NODE_MANAGER_PATH, 'srv6_manager.py')
30+
# Get gRPC server port
31+
NODE_MANAGER_GRPC_PORT = os.getenv('NODE_MANAGER_GRPC_PORT')
32+
NODE_MANAGER_GRPC_PORT.join(NODE_MANAGER_GRPC_PORT, 'srv6_manager.py')
33+
34+
1935
class BaseNode(Host):
2036

2137
def __init__(self, name, *args, **kwargs):
@@ -86,6 +102,14 @@ class Router(BaseNode):
86102
def __init__(self, name, *args, **kwargs):
87103
BaseNode.__init__(self, name, *args, **kwargs)
88104

105+
def config(self, **kwargs):
106+
# Init steps
107+
BaseNode.config(self, **kwargs)
108+
# Start node managers
109+
if START_NODE_MANAGERS:
110+
self.cmd('python %s --grpc_port %s'
111+
% (NODE_MANAGER_PATH % NODE_MANAGER_GRPC_PORT))
112+
89113

90114
class Switch(OVSBridge):
91115
def __init__(self, name, *args, **kwargs):
@@ -266,8 +290,41 @@ def simpleTest():
266290
stopAll()
267291

268292

293+
def parse_arguments():
294+
# Get parser
295+
parser = ArgumentParser(
296+
description='Emulation of a Mininet topology (8 routers running '
297+
'IS-IS, 1 controller out-of-band'
298+
)
299+
parser.add_argument(
300+
'--start-node-managers', dest='start_node_managers',
301+
action='store_true', default=False,
302+
help='Define whether to start node manager on routers or not'
303+
)
304+
# Parse input parameters
305+
args = parser.parse_args()
306+
# Return the arguments
307+
return args
308+
269309

270310
if __name__ == '__main__':
311+
# Parse command-line arguments
312+
args = parse_arguments()
313+
# Define whether to start node manager on routers or not
314+
START_NODE_MANAGERS = args.start_node_managers
315+
if START_NODE_MANAGERS:
316+
if NODE_MANAGER_PATH:
317+
print('Error: --start-node-managers requires NODE_MANAGER_PATH '
318+
'variable')
319+
print('NODE_MANAGER_PATH variable is not set in .env file or '
320+
'the variable points to a non existing folder')
321+
exit(-2)
322+
if NODE_MANAGER_GRPC_PORT:
323+
print('Error: --start-node-managers requires '
324+
'NODE_MANAGER_GRPC_PORT variable')
325+
print('NODE_MANAGER_GRPC_PORT variable is not set in .env file or '
326+
'the variable points to a non existing folder')
327+
exit(-2)
271328
# Tell mininet to print useful information
272329
setLogLevel('info')
273330
simpleTest()

0 commit comments

Comments
 (0)