Skip to content

Commit 7d324f7

Browse files
authored
Merge branch 'master' into set-venv
2 parents bb52859 + c22db81 commit 7d324f7

File tree

4 files changed

+75
-0
lines changed

4 files changed

+75
-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-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-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
@@ -23,7 +23,9 @@
2323
# Execute the activation script to activate the venv
2424
exec(code, {'__file__': venv_path})
2525

26+
from argparse import ArgumentParser
2627
import shutil
28+
from dotenv import load_dotenv
2729
from mininet.topo import Topo
2830
from mininet.node import Host, OVSBridge
2931
from mininet.net import Mininet
@@ -38,6 +40,20 @@
3840

3941
PRIVDIR = '/var/priv'
4042

43+
START_NODE_MANAGERS = False
44+
45+
# Load environment variables from .env file
46+
load_dotenv()
47+
48+
# Get node manager path
49+
NODE_MANAGER_PATH = os.getenv('NODE_MANAGER_PATH', None)
50+
if NODE_MANAGER_PATH is not None:
51+
NODE_MANAGER_PATH = os.path.join(NODE_MANAGER_PATH,
52+
'srv6_manager.py')
53+
# Get gRPC server port
54+
NODE_MANAGER_GRPC_PORT = os.getenv('NODE_MANAGER_GRPC_PORT', None)
55+
56+
4157
class BaseNode(Host):
4258

4359
def __init__(self, name, *args, **kwargs):
@@ -108,6 +124,14 @@ class Router(BaseNode):
108124
def __init__(self, name, *args, **kwargs):
109125
BaseNode.__init__(self, name, *args, **kwargs)
110126

127+
def config(self, **kwargs):
128+
# Init steps
129+
BaseNode.config(self, **kwargs)
130+
# Start node managers
131+
if START_NODE_MANAGERS:
132+
self.cmd('python %s --grpc-port %s &'
133+
% (NODE_MANAGER_PATH, NODE_MANAGER_GRPC_PORT))
134+
111135

112136
class Switch(OVSBridge):
113137
def __init__(self, name, *args, **kwargs):
@@ -288,8 +312,45 @@ def simpleTest():
288312
stopAll()
289313

290314

315+
def parse_arguments():
316+
# Get parser
317+
parser = ArgumentParser(
318+
description='Emulation of a Mininet topology (8 routers running '
319+
'IS-IS, 1 controller out-of-band'
320+
)
321+
parser.add_argument(
322+
'--start-node-managers', dest='start_node_managers',
323+
action='store_true', default=False,
324+
help='Define whether to start node manager on routers or not'
325+
)
326+
# Parse input parameters
327+
args = parser.parse_args()
328+
# Return the arguments
329+
return args
330+
291331

292332
if __name__ == '__main__':
333+
# Parse command-line arguments
334+
args = parse_arguments()
335+
# Define whether to start node manager on routers or not
336+
START_NODE_MANAGERS = args.start_node_managers
337+
if START_NODE_MANAGERS:
338+
if NODE_MANAGER_PATH is None:
339+
print('Error: --start-node-managers requires NODE_MANAGER_PATH '
340+
'variable')
341+
print('NODE_MANAGER_PATH variable not set in .env file\n')
342+
exit(-2)
343+
if not os.path.exists(NODE_MANAGER_PATH):
344+
print('Error: --start-node-managers requires NODE_MANAGER_PATH '
345+
'variable')
346+
print('NODE_MANAGER_PATH defined in .env file '
347+
'points to a non existing folder\n')
348+
exit(-2)
349+
if NODE_MANAGER_GRPC_PORT is None:
350+
print('Error: --start-node-managers requires '
351+
'NODE_MANAGER_GRPC_PORT variable')
352+
print('NODE_MANAGER_GRPC_PORT variable not set in .env file\n')
353+
exit(-2)
293354
# Tell mininet to print useful information
294355
setLogLevel('info')
295356
simpleTest()

0 commit comments

Comments
 (0)