Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Dhcp_server] add config dhcp_server bind/unbind #17811

Merged
Merged
Show file tree
Hide file tree
Changes from 3 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@
},
"VLAN_INTERFACE|Vlan200": {
},
"VLAN_INTERFACE|Vlan200|100.1.1.2/24": {
"VLAN_INTERFACE|Vlan200|100.1.2.2/24": {
},
"VLAN_INTERFACE|Vlan300": {
},
Expand Down Expand Up @@ -42,17 +42,23 @@
"DHCP_SERVER_IPV4_RANGE|range3": {
"range": "100.1.1.10"
},
"DHCP_SERVER_IPV4_RANGE|range5": {
"range": "100.1.2.10"
},
"DHCP_SERVER_IPV4_RANGE|range6": {
"range": "100.1.2.11"
},
"DHCP_SERVER_IPV4_IP|eth0": {
"ip": "240.127.1.2"
},
"DHCP_SERVER_IPV4_PORT|Vlan100|Ethernet4": {
"ips": "100.1.1.10,10.1.1.11"
"ips": "100.1.1.10,100.1.1.11"
},
"DHCP_SERVER_IPV4_PORT|Vlan100|Ethernet7": {
"ranges": "range1,range3"
},
"DHCP_SERVER_IPV4_PORT|Vlan200|Ethernet8": {
"ranges": "range1,range4"
"ranges": "range5,range6"
},
"DHCP_SERVER_IPV4_PORT|Ethernet9": {
"ranges": "range5,range6"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,7 @@ def test_config_dhcp_server_ipv4_add(self, mock_db):

def test_config_dhcp_server_ipv4_add_dup_gw_nm(self, mock_db):
expected_value = {
"gateway": "100.1.1.2",
"gateway": "100.1.2.0",
"lease_time": "1000",
"mode": "PORT",
"netmask": "255.255.255.0",
Expand Down Expand Up @@ -370,3 +370,231 @@ def test_config_dhcp_server_ipv4_range_delete_referenced_force(self, mock_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_RANGE|range1") == False

def test_config_dhcp_server_ipv4_bind_range_nonexisting(self, mock_db):
expected_value = "range2,range3"
runner = CliRunner()
db = clicommon.Db()
db.db = mock_db
result = runner.invoke(dhcp_server.dhcp_server.commands["ipv4"].commands["bind"], \
["Vlan100", "Ethernet2", "--range", "range2,range3"], obj=db)
assert result.exit_code == 0, "exit code: {}, Exception: {}, Traceback: {}".format(result.exit_code, result.exception, result.exc_info)
result = mock_db.get("CONFIG_DB", "DHCP_SERVER_IPV4_PORT|Vlan100|Ethernet2", "ranges")
assert result and set(result.split(",")) == set(expected_value.split(","))

def test_config_dhcp_server_ipv4_bind_ip_nonexisting(self, mock_db):
expected_value = "100.1.1.1,100.1.1.2"
runner = CliRunner()
db = clicommon.Db()
db.db = mock_db
result = runner.invoke(dhcp_server.dhcp_server.commands["ipv4"].commands["bind"], \
["Vlan100", "Ethernet2", "100.1.1.1,100.1.1.2"], obj=db)
assert result.exit_code == 0, "exit code: {}, Exception: {}, Traceback: {}".format(result.exit_code, result.exception, result.exc_info)
result = mock_db.get("CONFIG_DB", "DHCP_SERVER_IPV4_PORT|Vlan100|Ethernet2", "ips")
assert result and set(result.split(",")) == set(expected_value.split(","))

def test_config_dhcp_server_ipv4_bind_range_existing_no_duplicate(self, mock_db):
expected_value = "range1,range2,range3"
runner = CliRunner()
db = clicommon.Db()
db.db = mock_db
result = runner.invoke(dhcp_server.dhcp_server.commands["ipv4"].commands["bind"], \
["Vlan100", "Ethernet7", "--range", "range2"], obj=db)
assert result.exit_code == 0, "exit code: {}, Exception: {}, Traceback: {}".format(result.exit_code, result.exception, result.exc_info)
result = mock_db.get("CONFIG_DB", "DHCP_SERVER_IPV4_PORT|Vlan100|Ethernet7", "ranges")
assert result and set(result.split(",")) == set(expected_value.split(","))

def test_config_dhcp_server_ipv4_bind_range_existing_duplicate(self, mock_db):
expected_value = "range1,range2,range3"
runner = CliRunner()
db = clicommon.Db()
db.db = mock_db
result = runner.invoke(dhcp_server.dhcp_server.commands["ipv4"].commands["bind"], \
["Vlan100", "Ethernet7", "--range", "range2,range3"], obj=db)
assert result.exit_code == 0, "exit code: {}, Exception: {}, Traceback: {}".format(result.exit_code, result.exception, result.exc_info)
result = mock_db.get("CONFIG_DB", "DHCP_SERVER_IPV4_PORT|Vlan100|Ethernet7", "ranges")
assert result and set(result.split(",")) == set(expected_value.split(","))

def test_config_dhcp_server_ipv4_bind_ip_existing_no_duplicate(self, mock_db):
expected_value = "100.1.1.10,100.1.1.11,100.1.1.12,100.1.1.13"
runner = CliRunner()
db = clicommon.Db()
db.db = mock_db
result = runner.invoke(dhcp_server.dhcp_server.commands["ipv4"].commands["bind"], \
["Vlan100", "Ethernet4", "100.1.1.12,100.1.1.13"], obj=db)
assert result.exit_code == 0, "exit code: {}, Exception: {}, Traceback: {}".format(result.exit_code, result.exception, result.exc_info)
result = mock_db.get("CONFIG_DB", "DHCP_SERVER_IPV4_PORT|Vlan100|Ethernet4", "ips")
assert result and set(result.split(",")) == set(expected_value.split(","))

def test_config_dhcp_server_ipv4_bind_ip_existing_duplicate(self, mock_db):
expected_value = "100.1.1.10,100.1.1.11,100.1.1.12"
runner = CliRunner()
db = clicommon.Db()
db.db = mock_db
result = runner.invoke(dhcp_server.dhcp_server.commands["ipv4"].commands["bind"], \
["Vlan100", "Ethernet4", "100.1.1.11,100.1.1.12"], obj=db)
assert result.exit_code == 0, "exit code: {}, Exception: {}, Traceback: {}".format(result.exit_code, result.exception, result.exc_info)
result = mock_db.get("CONFIG_DB", "DHCP_SERVER_IPV4_PORT|Vlan100|Ethernet4", "ips")
assert result and set(result.split(",")) == set(expected_value.split(","))

def test_config_dhcp_server_ipv4_bind_nonexisting_range(self, mock_db):
runner = CliRunner()
db = clicommon.Db()
db.db = mock_db
result = runner.invoke(dhcp_server.dhcp_server.commands["ipv4"].commands["bind"], \
["Vlan100", "Ethernet7", "--range", "range4"], 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_bind_range_out_of_subnet(self, mock_db):
runner = CliRunner()
db = clicommon.Db()
db.db = mock_db
result = runner.invoke(dhcp_server.dhcp_server.commands["ipv4"].commands["bind"], \
["Vlan100", "Ethernet7", "--range", "range5"], 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_bind_ip_out_of_subnet(self, mock_db):
runner = CliRunner()
db = clicommon.Db()
db.db = mock_db
result = runner.invoke(dhcp_server.dhcp_server.commands["ipv4"].commands["bind"], \
["Vlan100", "Ethernet4", "100.1.2.10"], 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_bind_range_and_ip(self, mock_db):
runner = CliRunner()
db = clicommon.Db()
db.db = mock_db
result = runner.invoke(dhcp_server.dhcp_server.commands["ipv4"].commands["bind"], \
["Vlan100", "Ethernet2", "100.1.1.13,100.1.1.14", "--range", "range3"], 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_bind_range_to_existing_ip(self, mock_db):
runner = CliRunner()
db = clicommon.Db()
db.db = mock_db
result = runner.invoke(dhcp_server.dhcp_server.commands["ipv4"].commands["bind"], \
["Vlan100", "Ethernet4", "--range", "range3"], 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_bind_ip_to_existing_range(self, mock_db):
runner = CliRunner()
db = clicommon.Db()
db.db = mock_db
result = runner.invoke(dhcp_server.dhcp_server.commands["ipv4"].commands["bind"], \
["Vlan100", "Ethernet7", "100.1.1.13,100.1.1.14"], 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_bind_nothing(self, mock_db):
runner = CliRunner()
db = clicommon.Db()
db.db = mock_db
result = runner.invoke(dhcp_server.dhcp_server.commands["ipv4"].commands["bind"], \
["Vlan100", "Ethernet2"], 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_unbind_range_with_remain(self, mock_db):
expected_value = "range1"
runner = CliRunner()
db = clicommon.Db()
db.db = mock_db
result = runner.invoke(dhcp_server.dhcp_server.commands["ipv4"].commands["unbind"], \
["Vlan100", "Ethernet7", "--range", "range3"], obj=db)
assert result.exit_code == 0, "exit code: {}, Exception: {}, Traceback: {}".format(result.exit_code, result.exception, result.exc_info)
result = mock_db.get("CONFIG_DB", "DHCP_SERVER_IPV4_PORT|Vlan100|Ethernet7", "ranges")
assert result and set(result.split(",")) == set(expected_value.split(","))

def test_config_dhcp_server_ipv4_unbind_range_with_no_remain(self, mock_db):
runner = CliRunner()
db = clicommon.Db()
db.db = mock_db
result = runner.invoke(dhcp_server.dhcp_server.commands["ipv4"].commands["unbind"], \
["Vlan100", "Ethernet7", "--range", "range1,range3"], 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_PORT|Vlan100|Ethernet7") == False

def test_config_dhcp_server_ipv4_unbind_range_with_all(self, mock_db):
runner = CliRunner()
db = clicommon.Db()
db.db = mock_db
result = runner.invoke(dhcp_server.dhcp_server.commands["ipv4"].commands["unbind"], \
["Vlan100", "Ethernet7", "all"], 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_PORT|Vlan100|Ethernet7") == False

def test_config_dhcp_server_ipv4_unbind_ip_with_remain(self, mock_db):
expected_value = "100.1.1.10"
runner = CliRunner()
db = clicommon.Db()
db.db = mock_db
result = runner.invoke(dhcp_server.dhcp_server.commands["ipv4"].commands["unbind"], \
["Vlan100", "Ethernet4", "100.1.1.11"], obj=db)
assert result.exit_code == 0, "exit code: {}, Exception: {}, Traceback: {}".format(result.exit_code, result.exception, result.exc_info)
result = mock_db.get("CONFIG_DB", "DHCP_SERVER_IPV4_PORT|Vlan100|Ethernet4", "ips")
assert result and set(result.split(",")) == set(expected_value.split(","))

def test_config_dhcp_server_ipv4_unbind_ip_with_no_remain(self, mock_db):
runner = CliRunner()
db = clicommon.Db()
db.db = mock_db
result = runner.invoke(dhcp_server.dhcp_server.commands["ipv4"].commands["unbind"], \
["Vlan100", "Ethernet4", "100.1.1.10,100.1.1.11"], 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_PORT|Vlan100|Ethernet4") == False

def test_config_dhcp_server_ipv4_unbind_ip_all(self, mock_db):
runner = CliRunner()
db = clicommon.Db()
db.db = mock_db
result = runner.invoke(dhcp_server.dhcp_server.commands["ipv4"].commands["unbind"], \
["Vlan100", "Ethernet4", "all"], 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_PORT|Vlan100|Ethernet4") == False

def test_config_dhcp_server_ipv4_unbind_range_and_ip(self, mock_db):
runner = CliRunner()
db = clicommon.Db()
db.db = mock_db
result = runner.invoke(dhcp_server.dhcp_server.commands["ipv4"].commands["unbind"], \
["Vlan100", "Ethernet2", "100.1.1.13,100.1.1.14", "--range", "range3"], 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_unbind_range_to_existing_ip(self, mock_db):
runner = CliRunner()
db = clicommon.Db()
db.db = mock_db
result = runner.invoke(dhcp_server.dhcp_server.commands["ipv4"].commands["unbind"], \
["Vlan100", "Ethernet4", "--range", "range3"], 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_unbind_ip_to_existing_range(self, mock_db):
runner = CliRunner()
db = clicommon.Db()
db.db = mock_db
result = runner.invoke(dhcp_server.dhcp_server.commands["ipv4"].commands["unbind"], \
["Vlan100", "Ethernet7", "100.1.1.13,100.1.1.14"], 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_unbind_nothing(self, mock_db):
runner = CliRunner()
db = clicommon.Db()
db.db = mock_db
result = runner.invoke(dhcp_server.dhcp_server.commands["ipv4"].commands["unbind"], \
["Vlan100", "Ethernet4"], 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_unbind_unbind_range(self, mock_db):
runner = CliRunner()
db = clicommon.Db()
db.db = mock_db
result = runner.invoke(dhcp_server.dhcp_server.commands["ipv4"].commands["unbind"], \
["Vlan100", "Ethernet7", "--range", "range2"], 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_unbind_unbind_ip(self, mock_db):
runner = CliRunner()
db = clicommon.Db()
db.db = mock_db
result = runner.invoke(dhcp_server.dhcp_server.commands["ipv4"].commands["unbind"], \
["Vlan100", "Ethernet4", "100.1.1.13,100.1.1.14"], obj=db)
assert result.exit_code == 2, "exit code: {}, Exception: {}, Traceback: {}".format(result.exit_code, result.exception, result.exc_info)

Original file line number Diff line number Diff line change
Expand Up @@ -76,6 +76,10 @@ def test_show_dhcp_server_ipv4_range_without_name(self, mock_db):
+---------+------------+------------+------------------------+
| range3 | 100.1.1.10 | 100.1.1.10 | 1 |
+---------+------------+------------+------------------------+
| range5 | 100.1.2.10 | 100.1.2.10 | 1 |
+---------+------------+------------+------------------------+
| range6 | 100.1.2.11 | 100.1.2.11 | 1 |
+---------+------------+------------+------------------------+
"""
runner = CliRunner()
db = clicommon.Db()
Expand Down Expand Up @@ -212,13 +216,13 @@ def test_show_dhcp_server_ipv4_port_without_intf(self, mock_db):
| Interface | Bind |
+===================+============+
| Vlan100|Ethernet4 | 100.1.1.10 |
| | 10.1.1.11 |
| | 100.1.1.11 |
+-------------------+------------+
| Vlan100|Ethernet7 | range1 |
| | range3 |
+-------------------+------------+
| Vlan200|Ethernet8 | range1 |
| | range4 |
| Vlan200|Ethernet8 | range5 |
| | range6 |
+-------------------+------------+
| Ethernet9 | range5 |
| | range6 |
Expand Down Expand Up @@ -253,7 +257,7 @@ def test_show_dhcp_server_ipv4_port_with_vlan(self, mock_db):
| Interface | Bind |
+===================+============+
| Vlan100|Ethernet4 | 100.1.1.10 |
| | 10.1.1.11 |
| | 100.1.1.11 |
+-------------------+------------+
| Vlan100|Ethernet7 | range1 |
| | range3 |
Expand All @@ -271,8 +275,8 @@ def test_show_dhcp_server_ipv4_port_with_port_and_vlan(self, mock_db):
+-------------------+--------+
| Interface | Bind |
+===================+========+
| Vlan200|Ethernet8 | range1 |
| | range4 |
| Vlan200|Ethernet8 | range5 |
| | range6 |
+-------------------+--------+
"""
runner = CliRunner()
Expand Down
Loading
Loading