Skip to content

Commit

Permalink
[dhcp_server] add config dhcp server del (#17603)
Browse files Browse the repository at this point in the history
* add config dhcp server del
  • Loading branch information
Xichen96 authored Dec 22, 2023
1 parent d4a7866 commit 0866610
Show file tree
Hide file tree
Showing 3 changed files with 38 additions and 0 deletions.
9 changes: 9 additions & 0 deletions dockers/docker-dhcp-server/cli-plugin-tests/conftest.py
Original file line number Diff line number Diff line change
Expand Up @@ -62,10 +62,19 @@ def exists(table, key):
if table == "STATE_DB":
return key in mock_state_db

def delete(table, key):
assert table == "CONFIG_DB" or table == "STATE_DB"
if table == "CONFIG_DB":
del mock_config_db[key]
if table == "STATE_DB":
del mock_state_db[key]


db.keys = mock.Mock(side_effect=keys)
db.get_all = mock.Mock(side_effect=get_all)
db.get = mock.Mock(side_effect=get)
db.hmset = mock.Mock(side_effect=hmset)
db.exists = mock.Mock(side_effect=exists)
db.delete = mock.Mock(side_effect=delete)

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

def test_config_dhcp_server_ipv4_del_already_exist(self, mock_db):
runner = CliRunner()
db = clicommon.Db()
db.db = mock_db
result = runner.invoke(dhcp_server.dhcp_server.commands["ipv4"].commands["del"], ["Vlan100"], obj=db)
assert result.exit_code == 0, "exit code: {}, Exception: {}, Traceback: {}".format(result.exit_code, result.exception, result.exc_info)
assert mock_db.exists("CONFIG_DB", "DHCP_SERVER_IPV4|Vlan100") == False

def test_config_dhcp_server_ipv4_del_does_not_exist(self, mock_db):
runner = CliRunner()
db = clicommon.Db()
db.db = mock_db
result = runner.invoke(dhcp_server.dhcp_server.commands["ipv4"].commands["del"], ["Vlan200"], obj=db)
assert result.exit_code == 2, "exit code: {}, Exception: {}, Traceback: {}".format(result.exit_code, result.exception, result.exc_info)

14 changes: 14 additions & 0 deletions dockers/docker-dhcp-server/cli/config/plugins/dhcp_server.py
Original file line number Diff line number Diff line change
Expand Up @@ -102,6 +102,20 @@ def dhcp_server_ipv4_add(db, mode, lease_time, dup_gw_nm, gateway, netmask, dhcp
})


@dhcp_server_ipv4.command(name="del")
@click.argument("dhcp_interface", required=True)
@clicommon.pass_db
def dhcp_server_ipv4_del(db, dhcp_interface):
ctx = click.get_current_context()
dbconn = db.db
key = "DHCP_SERVER_IPV4|" + dhcp_interface
if dbconn.exists("CONFIG_DB", key):
click.echo("Dhcp interface %s exists in config db, proceed to delete".format(dhcp_interface))
dbconn.delete("CONFIG_DB", key)
else:
ctx.fail("Dhcp interface %s does not exist in config db".format(dhcp_interface))


def register(cli):
# cli.add_command(dhcp_server)
pass
Expand Down

0 comments on commit 0866610

Please sign in to comment.