Skip to content

Commit c22db81

Browse files
authored
Add argument --start-node-managers to the Mininet scripts
2 parents 53fb720 + 4270d13 commit c22db81

File tree

6 files changed

+190
-0
lines changed

6 files changed

+190
-0
lines changed

nets/8r-1c-in-band-isis/.env

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
export WORKSPACE=${HOME}/workspace
2+
export CONTROL_PLANE=${WORKSPACE}/rose-srv6-control-plane
3+
4+
export NODE_MANAGER_PATH=${CONTROL_PLANE}/srv6_controller/node-manager/
5+
export NODE_MANAGER_GRPC_PORT=12345

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/.env

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
export WORKSPACE=${HOME}/workspace
2+
export CONTROL_PLANE=${WORKSPACE}/rose-srv6-control-plane
3+
4+
export NODE_MANAGER_PATH=${CONTROL_PLANE}/srv6_controller/node-manager/
5+
export NODE_MANAGER_GRPC_PORT=12345

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()

nets/8r-1c-srv6-pm/.env

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,3 +3,7 @@ export ROSE_SRV6_TUTORIAL=${WORKSPACE}/rose-srv6-tutorial
33

44
# Configure SRV6_PFPML_PATH
55
export SRV6_PFPML_PATH=/opt/srv6-pm-xdp-ebpf/srv6-pfplm
6+
7+
# Node manager params
8+
export NODE_MANAGER_PATH=${CONTROL_PLANE}/srv6_controller/node-manager/
9+
export NODE_MANAGER_GRPC_PORT=12345

nets/8r-1c-srv6-pm/isis8d.py

Lines changed: 61 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+
23+
# Load environment variables from .env file
24+
load_dotenv()
25+
26+
# Get node manager path
27+
NODE_MANAGER_PATH = os.getenv('NODE_MANAGER_PATH', None)
28+
if NODE_MANAGER_PATH is not None:
29+
NODE_MANAGER_PATH = os.path.join(NODE_MANAGER_PATH,
30+
'srv6_manager.py')
31+
# Get gRPC server port
32+
NODE_MANAGER_GRPC_PORT = os.getenv('NODE_MANAGER_GRPC_PORT', None)
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,45 @@ 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 is None:
317+
print('Error: --start-node-managers requires NODE_MANAGER_PATH '
318+
'variable')
319+
print('NODE_MANAGER_PATH variable not set in .env file\n')
320+
exit(-2)
321+
if not os.path.exists(NODE_MANAGER_PATH):
322+
print('Error: --start-node-managers requires NODE_MANAGER_PATH '
323+
'variable')
324+
print('NODE_MANAGER_PATH defined in .env file '
325+
'points to a non existing folder\n')
326+
exit(-2)
327+
if NODE_MANAGER_GRPC_PORT is None:
328+
print('Error: --start-node-managers requires '
329+
'NODE_MANAGER_GRPC_PORT variable')
330+
print('NODE_MANAGER_GRPC_PORT variable not set in .env file\n')
331+
exit(-2)
271332
# Tell mininet to print useful information
272333
setLogLevel('info')
273334
simpleTest()

0 commit comments

Comments
 (0)