Skip to content

Commit 0866610

Browse files
authored
[dhcp_server] add config dhcp server del (#17603)
* add config dhcp server del
1 parent d4a7866 commit 0866610

File tree

3 files changed

+38
-0
lines changed

3 files changed

+38
-0
lines changed

dockers/docker-dhcp-server/cli-plugin-tests/conftest.py

+9
Original file line numberDiff line numberDiff line change
@@ -62,10 +62,19 @@ def exists(table, key):
6262
if table == "STATE_DB":
6363
return key in mock_state_db
6464

65+
def delete(table, key):
66+
assert table == "CONFIG_DB" or table == "STATE_DB"
67+
if table == "CONFIG_DB":
68+
del mock_config_db[key]
69+
if table == "STATE_DB":
70+
del mock_state_db[key]
71+
72+
6573
db.keys = mock.Mock(side_effect=keys)
6674
db.get_all = mock.Mock(side_effect=get_all)
6775
db.get = mock.Mock(side_effect=get)
6876
db.hmset = mock.Mock(side_effect=hmset)
6977
db.exists = mock.Mock(side_effect=exists)
78+
db.delete = mock.Mock(side_effect=delete)
7079

7180
yield db

dockers/docker-dhcp-server/cli-plugin-tests/test_config_dhcp_server.py

+15
Original file line numberDiff line numberDiff line change
@@ -113,3 +113,18 @@ def test_config_dhcp_server_ipv4_add_already_exist(self, mock_db):
113113
["Vlan100", "--mode=PORT", "--lease_time=1000", "--gateway=10.10.10.10", "--netmask=255.255.254.0"], obj=db)
114114
assert result.exit_code == 2, "exit code: {}, Exception: {}, Traceback: {}".format(result.exit_code, result.exception, result.exc_info)
115115

116+
def test_config_dhcp_server_ipv4_del_already_exist(self, mock_db):
117+
runner = CliRunner()
118+
db = clicommon.Db()
119+
db.db = mock_db
120+
result = runner.invoke(dhcp_server.dhcp_server.commands["ipv4"].commands["del"], ["Vlan100"], obj=db)
121+
assert result.exit_code == 0, "exit code: {}, Exception: {}, Traceback: {}".format(result.exit_code, result.exception, result.exc_info)
122+
assert mock_db.exists("CONFIG_DB", "DHCP_SERVER_IPV4|Vlan100") == False
123+
124+
def test_config_dhcp_server_ipv4_del_does_not_exist(self, mock_db):
125+
runner = CliRunner()
126+
db = clicommon.Db()
127+
db.db = mock_db
128+
result = runner.invoke(dhcp_server.dhcp_server.commands["ipv4"].commands["del"], ["Vlan200"], obj=db)
129+
assert result.exit_code == 2, "exit code: {}, Exception: {}, Traceback: {}".format(result.exit_code, result.exception, result.exc_info)
130+

dockers/docker-dhcp-server/cli/config/plugins/dhcp_server.py

+14
Original file line numberDiff line numberDiff line change
@@ -102,6 +102,20 @@ def dhcp_server_ipv4_add(db, mode, lease_time, dup_gw_nm, gateway, netmask, dhcp
102102
})
103103

104104

105+
@dhcp_server_ipv4.command(name="del")
106+
@click.argument("dhcp_interface", required=True)
107+
@clicommon.pass_db
108+
def dhcp_server_ipv4_del(db, dhcp_interface):
109+
ctx = click.get_current_context()
110+
dbconn = db.db
111+
key = "DHCP_SERVER_IPV4|" + dhcp_interface
112+
if dbconn.exists("CONFIG_DB", key):
113+
click.echo("Dhcp interface %s exists in config db, proceed to delete".format(dhcp_interface))
114+
dbconn.delete("CONFIG_DB", key)
115+
else:
116+
ctx.fail("Dhcp interface %s does not exist in config db".format(dhcp_interface))
117+
118+
105119
def register(cli):
106120
# cli.add_command(dhcp_server)
107121
pass

0 commit comments

Comments
 (0)