Skip to content

Commit

Permalink
[202211] fix radius error on unicode name error due to python3 (#2785)
Browse files Browse the repository at this point in the history
Fixes sonic-net/sonic-buildimage#14356
This PR is based on #2751

What I did
fix radius command python config file for commands that fails with tracebacks due to NameError: name 'unicode' is not define

How I did it
delete any unicode from python config file

How to verify it
run the two radius commands:

config radius nasip 1.1.1.1
config radius sourceip 2000::1
and check show radius output

show radius

Previous command output (if the output of a command-line utility has changed)
root@qa-eth-vt03-1-4600ca1:/home/admin# config radius nasip 1.1.1.1
Traceback (most recent call last):
File "/usr/local/bin/config", line 8, in
sys.exit(config())
File "/usr/local/lib/python3.9/dist-packages/click/core.py", line 764, in call
return self.main(*args, **kwargs)
File "/usr/local/lib/python3.9/dist-packages/click/core.py", line 717, in main
rv = self.invoke(ctx)
File "/usr/local/lib/python3.9/dist-packages/click/core.py", line 1137, in invoke
return _process_result(sub_ctx.command.invoke(sub_ctx))
File "/usr/local/lib/python3.9/dist-packages/click/core.py", line 1137, in invoke
return _process_result(sub_ctx.command.invoke(sub_ctx))
File "/usr/local/lib/python3.9/dist-packages/click/core.py", line 956, in invoke
return ctx.invoke(self.callback, **ctx.params)
File "/usr/local/lib/python3.9/dist-packages/click/core.py", line 555, in invoke
return callback(*args, **kwargs)
File "/usr/local/lib/python3.9/dist-packages/click/decorators.py", line 17, in new_func
return f(get_current_context(), *args, **kwargs)
File "/usr/local/lib/python3.9/dist-packages/config/aaa.py", line 448, in nasip
v6_invalid_list = [ipaddress.IPv6Address(unicode('0::0')), ipaddress.IPv6Address(unicode('0::1'))]
NameError: name 'unicode' is not defined
root@qa-eth-vt03-1-4600ca1:/home/admin# config radius sourceip 2000::1
...
File "/usr/local/lib/python3.9/dist-packages/click/decorators.py", line 17, in new_func
return f(get_current_context(), *args, **kwargs)
File "/usr/local/lib/python3.9/dist-packages/config/aaa.py", line 407, in sourceip
v6_invalid_list = [ipaddress.IPv6Address(unicode('0::0')), ipaddress.IPv6Address(unicode('0::1'))]
NameError: name 'unicode' is not defined
root@qa-eth-vt03-1-4600ca1:/home/admin#

New command output (if the output of a command-line utility has changed)
root@r-panther-13:/home/admin# config radius nasip 1.1.1.1
root@r-panther-13:/home/admin# config radius sourceip 1.1.1.1
root@r-panther-13:/home/admin# show radius 
RADIUS global auth_type pap (default)
RADIUS global retransmit 3 (default)
RADIUS global timeout 5 (default)
RADIUS global passkey <EMPTY_STRING> (default)
RADIUS global nas_ip 1.1.1.1
RADIUS global src_ip 1.1.1.1
  • Loading branch information
dprital authored Apr 13, 2023
1 parent bb3271f commit 4183785
Show file tree
Hide file tree
Showing 2 changed files with 59 additions and 4 deletions.
8 changes: 4 additions & 4 deletions config/aaa.py
Original file line number Diff line number Diff line change
Expand Up @@ -404,8 +404,8 @@ def sourceip(ctx, src_ip):
click.echo('Invalid ip address')
return

v6_invalid_list = [ipaddress.IPv6Address(unicode('0::0')), ipaddress.IPv6Address(unicode('0::1'))]
net = ipaddress.ip_network(unicode(src_ip), strict=False)
v6_invalid_list = [ipaddress.IPv6Address('0::0'), ipaddress.IPv6Address('0::1')]
net = ipaddress.ip_network(src_ip, strict=False)
if (net.version == 4):
if src_ip == "0.0.0.0":
click.echo('enter non-zero ip address')
Expand Down Expand Up @@ -445,8 +445,8 @@ def nasip(ctx, nas_ip):
click.echo('Invalid ip address')
return

v6_invalid_list = [ipaddress.IPv6Address(unicode('0::0')), ipaddress.IPv6Address(unicode('0::1'))]
net = ipaddress.ip_network(unicode(nas_ip), strict=False)
v6_invalid_list = [ipaddress.IPv6Address('0::0'), ipaddress.IPv6Address('0::1')]
net = ipaddress.ip_network(nas_ip, strict=False)
if (net.version == 4):
if nas_ip == "0.0.0.0":
click.echo('enter non-zero ip address')
Expand Down
55 changes: 55 additions & 0 deletions tests/radius_test.py
Original file line number Diff line number Diff line change
@@ -1,11 +1,16 @@
import imp
import os
import sys
import mock
import jsonpatch

from click.testing import CliRunner
from utilities_common.db import Db
from mock import patch
from jsonpointer import JsonPointerException

import config.main as config
import config.aaa as aaa
import show.main as show

test_path = os.path.dirname(os.path.abspath(__file__))
Expand Down Expand Up @@ -47,6 +52,16 @@
"""

show_radius_global_nasip_source_ip_output="""\
RADIUS global auth_type pap (default)
RADIUS global retransmit 3 (default)
RADIUS global timeout 5 (default)
RADIUS global passkey <EMPTY_STRING> (default)
RADIUS global nas_ip 1.1.1.1
RADIUS global src_ip 2000::1
"""

config_radius_empty_output="""\
"""

Expand Down Expand Up @@ -192,3 +207,43 @@ def test_config_radius_authtype(self, get_cmd_module):
assert result.exit_code == 0
assert result.output == show_radius_default_output

def test_config_radius_nasip_sourceip(self, get_cmd_module):
(config, show) = get_cmd_module
runner = CliRunner()
db = Db()
db.cfgdb.delete_table("RADIUS")
db.cfgdb.delete_table("RADIUS_SERVER")

result = runner.invoke(config.config.commands["radius"],\
["nasip", "1.1.1.1"])
print(result.exit_code)
print(result.output)
assert result.exit_code == 0

result = runner.invoke(config.config.commands["radius"],\
["sourceip", "2000::1"])
print(result.exit_code)
print(result.output)
assert result.exit_code == 0

result = runner.invoke(show.cli.commands["radius"], [])
print(result.exit_code)
print(result.output)
assert result.output == show_radius_default_output

db.cfgdb.mod_entry("RADIUS", "global", \
{'auth_type' : 'pap (default)', \
'retransmit': '3 (default)', \
'timeout' : '5 (default)', \
'passkey' : '<EMPTY_STRING> (default)', \
'nas_ip' : '1.1.1.1', \
'src_ip' : '2000::1', \
} \
)

result = runner.invoke(show.cli.commands["radius"], [], obj=db)
print(result.exit_code)
print(result.output)
assert result.exit_code == 0
assert result.output == show_radius_global_nasip_source_ip_output

0 comments on commit 4183785

Please sign in to comment.