Skip to content

Commit 21717f4

Browse files
author
Shuotian Cheng
authored
[config]: Add mirror session add/remove configuration option (sonic-net#302)
config mirror_session add --help Usage: config mirror_session add [OPTIONS] <session_name> <src_ip> <dst_ip> <gre_type> <dscp> <ttl> <queue> config mirror_session remove --help Usage: config mirror_session remove [OPTIONS] <session_name> Options: --help Show this message and exit. Signed-off-by: Shu0T1an ChenG <[email protected]>
1 parent d13eaa7 commit 21717f4

File tree

2 files changed

+54
-10
lines changed

2 files changed

+54
-10
lines changed

config/main.py

+44
Original file line numberDiff line numberDiff line change
@@ -342,6 +342,50 @@ def load_minigraph():
342342
_restart_services()
343343
print "Please note setting loaded from minigraph will be lost after system reboot. To preserve setting, run `config save`."
344344

345+
#
346+
# 'mirror' group
347+
#
348+
@cli.group()
349+
def mirror_session(ctx):
350+
pass
351+
352+
@mirror_session.command()
353+
@click.argument('session_name', metavar='<session_name>', required=True)
354+
@click.argument('src_ip', metavar='<src_ip>', required=True)
355+
@click.argument('dst_ip', metavar='<dst_ip>', required=True)
356+
@click.argument('gre_type', metavar='<gre_type>', required=True)
357+
@click.argument('dscp', metavar='<dscp>', required=True)
358+
@click.argument('ttl', metavar='<ttl>', required=True)
359+
@click.argument('queue', metavar='<queue>', required=True)
360+
def add():
361+
"""
362+
Add mirror session
363+
"""
364+
config_db = ConfigDBConnector()
365+
config_db.connect()
366+
367+
session_info = {
368+
"src_ip": src_ip,
369+
"dst_ip": dst_ip,
370+
"gre_type": gre_type,
371+
"dscp": dscp,
372+
"ttl": ttl,
373+
"queue": queue
374+
}
375+
376+
config_db.set_entry("MIRROR_SESSION", session_name, session_info)
377+
378+
@mirror_session.command()
379+
@click.argument('session_name', metavar='<session_name>', required=True)
380+
def del():
381+
"""
382+
Delete mirror session
383+
"""
384+
config_db = ConfigDBConnector()
385+
config_db.connect()
386+
config_db.set_entry("MIRROR_SESSION", session_name, None)
387+
388+
345389
#
346390
# 'qos' group
347391
#

consutil/lib.py

+10-10
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111
import swsssdk
1212
import subprocess
1313
import sys
14-
except ImportError as e:
14+
except ImportError as e:
1515
raise ImportError("%s - required module not found" % str(e))
1616

1717
DEVICE_PREFIX = "/dev/ttyUSB"
@@ -50,11 +50,11 @@ def run_command(cmd):
5050
def getAllDevices():
5151
cmd = "ls " + DEVICE_PREFIX + "*"
5252
output = run_command(cmd)
53-
53+
5454
devices = output.split('\n')
5555
devices = list(filter(lambda dev: re.match(DEVICE_PREFIX + r"\d+", dev) != None, devices))
5656
devices.sort(key=lambda dev: int(dev[len(DEVICE_PREFIX):]))
57-
57+
5858
return devices
5959

6060
# exits if inputted line number does not correspond to a device
@@ -71,17 +71,17 @@ def getBusyDevices():
7171
cmd = 'ps -eo pid,lstart,cmd | grep -E "(mini|pico)com"'
7272
output = run_command(cmd)
7373
processes = output.split('\n')
74-
74+
7575
# matches any number of spaces then any number of digits
7676
regexPid = r" *(\d+)"
7777
# matches anything of form: Xxx Xxx ( 0)or(00) 00:00:00 0000
7878
regexDate = r"([A-Z][a-z]{2} [A-Z][a-z]{2} [\d ]\d \d{2}:\d{2}:\d{2} \d{4})"
79-
# matches any non-whitespace characters ending in minicom or picocom,
80-
# then a space and any chars followed by /dev/ttyUSB<any digits>,
79+
# matches any non-whitespace characters ending in minicom or picocom,
80+
# then a space and any chars followed by /dev/ttyUSB<any digits>,
8181
# then a space and any chars
8282
regexCmd = r"\S*(?:(?:mini)|(?:pico))com .*" + DEVICE_PREFIX + r"(\d+)(?: .*)?"
8383
regexProcess = re.compile(r"^"+regexPid+r" "+regexDate+r" "+regexCmd+r"$")
84-
84+
8585
busyDevices = {}
8686
for process in processes:
8787
match = regexProcess.match(process)
@@ -98,8 +98,8 @@ def getBusyDevices():
9898
def getConnectionInfo(linenum):
9999
config_db = ConfigDBConnector()
100100
config_db.connect()
101-
entry = config_db.get_entry(CONSOLE_PORT_TABLE, str(linenum))
102-
101+
entry = config_db.get_entry(CONSOLE_PORT_TABLE, str(linenum))
102+
103103
conf_baud = "-" if BAUD_KEY not in entry else entry[BAUD_KEY]
104104
act_baud = DEFAULT_BAUD if conf_baud == "-" else conf_baud
105105
flow_control = False
@@ -118,7 +118,7 @@ def getLineNumber(target, deviceBool):
118118

119119
config_db = ConfigDBConnector()
120120
config_db.connect()
121-
121+
122122
devices = getAllDevices()
123123
linenums = list(map(lambda dev: dev[len(DEVICE_PREFIX):], devices))
124124

0 commit comments

Comments
 (0)