Skip to content

Commit 08d92aa

Browse files
committed
Add --start-node-managers to 8r-1c-srv6-pm topology
1 parent aa5f67b commit 08d92aa

File tree

2 files changed

+64
-0
lines changed

2 files changed

+64
-0
lines changed

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: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
import os
44
import shutil
5+
from dotenv import load_dotenv
56
from mininet.topo import Topo
67
from mininet.node import Host, OVSBridge
78
from mininet.net import Mininet
@@ -16,6 +17,20 @@
1617

1718
PRIVDIR = '/var/priv'
1819

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

2136
def __init__(self, name, *args, **kwargs):
@@ -86,6 +101,14 @@ class Router(BaseNode):
86101
def __init__(self, name, *args, **kwargs):
87102
BaseNode.__init__(self, name, *args, **kwargs)
88103

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

90113
class Switch(OVSBridge):
91114
def __init__(self, name, *args, **kwargs):
@@ -266,8 +289,45 @@ def simpleTest():
266289
stopAll()
267290

268291

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

270309
if __name__ == '__main__':
310+
# Parse command-line arguments
311+
args = parse_arguments()
312+
# Define whether to start node manager on routers or not
313+
START_NODE_MANAGERS = args.start_node_managers
314+
if START_NODE_MANAGERS:
315+
if NODE_MANAGER_PATH is None:
316+
print('Error: --start-node-managers requires NODE_MANAGER_PATH '
317+
'variable')
318+
print('NODE_MANAGER_PATH variable not set in .env file\n')
319+
exit(-2)
320+
if not os.path.exists(NODE_MANAGER_PATH):
321+
print('Error: --start-node-managers requires NODE_MANAGER_PATH '
322+
'variable')
323+
print('NODE_MANAGER_PATH defined in .env file '
324+
'points to a non existing folder\n')
325+
exit(-2)
326+
if NODE_MANAGER_GRPC_PORT is None:
327+
print('Error: --start-node-managers requires '
328+
'NODE_MANAGER_GRPC_PORT variable')
329+
print('NODE_MANAGER_GRPC_PORT variable not set in .env file\n')
330+
exit(-2)
271331
# Tell mininet to print useful information
272332
setLogLevel('info')
273333
simpleTest()

0 commit comments

Comments
 (0)