Skip to content
Open
Show file tree
Hide file tree
Changes from all 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
55 changes: 31 additions & 24 deletions scripts/db_migrator.py
Original file line number Diff line number Diff line change
Expand Up @@ -1266,16 +1266,21 @@ def version_4_0_3(self):
self.set_version('version_202305_01')
return 'version_202305_01'

def check_has_sonic_dhcpv4_relay_flag(self):
device_metadata_table = self.configDB.get_table("DEVICE_METADATA")
dhcp_relay_feature = device_metadata_table.get("localhost", {})
if dhcp_relay_feature.get("has_sonic_dhcpv4_relay") == "True":
return True
return False

def version_202305_01(self):
"""
Version 202305_01.
This is current last erversion for 202305 branch
"""
log.log_info('Handling version_202305_01')
feature_table = self.configDB.get_table("FEATURE")
dhcp_relay_feature = feature_table.get("dhcp_relay", {})
if dhcp_relay_feature.get("has_sonic_dhcpv4_relay") == "True":
log.log_info("Triggering migrate_dhcp_servers_to_dhcpv4_relay() due to FEATURE|dhcp_relay")
if self.check_has_sonic_dhcpv4_relay_flag():
log.log_info("Triggering migrate_dhcp_servers_to_dhcpv4_relay()")
self.migrate_dhcp_servers_to_dhcpv4_relay()

self.set_version('version_202311_01')
Expand All @@ -1291,10 +1296,8 @@ def version_202311_01(self):
self.migrate_dns_nameserver()

self.migrate_sflow_table()
feature_table = self.configDB.get_table("FEATURE")
dhcp_relay_feature = feature_table.get("dhcp_relay", {})
if dhcp_relay_feature.get("has_sonic_dhcpv4_relay") == "True":
log.log_info("Triggering migrate_dhcp_servers_to_dhcpv4_relay() due to FEATURE|dhcp_relay")
if self.check_has_sonic_dhcpv4_relay_flag():
log.log_info("Triggering migrate_dhcp_servers_to_dhcpv4_relay()")
self.migrate_dhcp_servers_to_dhcpv4_relay()

self.set_version('version_202311_02')
Expand All @@ -1307,10 +1310,8 @@ def version_202311_02(self):
log.log_info('Handling version_202311_02')
# Update GNMI table
self.migrate_gnmi()
feature_table = self.configDB.get_table("FEATURE")
dhcp_relay_feature = feature_table.get("dhcp_relay", {})
if dhcp_relay_feature.get("has_sonic_dhcpv4_relay") == "True":
log.log_info("Triggering migrate_dhcp_servers_to_dhcpv4_relay() due to FEATURE|dhcp_relay")
if self.check_has_sonic_dhcpv4_relay_flag():
log.log_info("Triggering migrate_dhcp_servers_to_dhcpv4_relay()")
self.migrate_dhcp_servers_to_dhcpv4_relay()

self.set_version('version_202311_03')
Expand All @@ -1322,10 +1323,8 @@ def version_202311_03(self):
This is current last erversion for 202311 branch
"""
log.log_info('Handling version_202311_03')
feature_table = self.configDB.get_table("FEATURE")
dhcp_relay_feature = feature_table.get("dhcp_relay", {})
if dhcp_relay_feature.get("has_sonic_dhcpv4_relay") == "True":
log.log_info("Triggering migrate_dhcp_servers_to_dhcpv4_relay() due to FEATURE|dhcp_relay")
if self.check_has_sonic_dhcpv4_relay_flag():
log.log_info("Triggering migrate_dhcp_servers_to_dhcpv4_relay()")
self.migrate_dhcp_servers_to_dhcpv4_relay()

self.set_version('version_202405_01')
Expand All @@ -1336,10 +1335,8 @@ def version_202405_01(self):
Version 202405_01.
"""
log.log_info('Handling version_202405_01')
feature_table = self.configDB.get_table("FEATURE")
dhcp_relay_feature = feature_table.get("dhcp_relay", {})
if dhcp_relay_feature.get("has_sonic_dhcpv4_relay") == "True":
log.log_info("Triggering migrate_dhcp_servers_to_dhcpv4_relay() due to FEATURE|dhcp_relay")
if self.check_has_sonic_dhcpv4_relay_flag():
log.log_info("Triggering migrate_dhcp_servers_to_dhcpv4_relay()")
self.migrate_dhcp_servers_to_dhcpv4_relay()

self.set_version('version_202405_02')
Expand All @@ -1350,10 +1347,8 @@ def version_202405_02(self):
Version 202405_02.
"""
log.log_info('Handling version_202405_02')
feature_table = self.configDB.get_table("FEATURE")
dhcp_relay_feature = feature_table.get("dhcp_relay", {})
if dhcp_relay_feature.get("has_sonic_dhcpv4_relay") == "True":
log.log_info("Triggering migrate_dhcp_servers_to_dhcpv4_relay() due to FEATURE|dhcp_relay")
if self.check_has_sonic_dhcpv4_relay_flag():
log.log_info("Triggering migrate_dhcp_servers_to_dhcpv4_relay()")
self.migrate_dhcp_servers_to_dhcpv4_relay()

self.migrate_ipinip_tunnel()
Expand All @@ -1365,6 +1360,10 @@ def version_202411_01(self):
Version 202411_01.
"""
log.log_info('Handling version_202411_01')
if self.check_has_sonic_dhcpv4_relay_flag():
log.log_info("Triggering migrate_dhcp_servers_to_dhcpv4_relay()")
self.migrate_dhcp_servers_to_dhcpv4_relay()

self.set_version('version_202411_02')
return 'version_202411_02'

Expand All @@ -1373,6 +1372,10 @@ def version_202411_02(self):
Version 202411_02.
"""
log.log_info('Handling version_202411_02')
if self.check_has_sonic_dhcpv4_relay_flag():
log.log_info("Triggering migrate_dhcp_servers_to_dhcpv4_relay()")
self.migrate_dhcp_servers_to_dhcpv4_relay()

self.set_version('version_202505_01')
return 'version_202505_01'

Expand All @@ -1382,6 +1385,10 @@ def version_202505_01(self):
master branch until 202505 branch is created.
"""
log.log_info('Handling version_202505_01')
if self.check_has_sonic_dhcpv4_relay_flag():
log.log_info("Triggering migrate_dhcp_servers_to_dhcpv4_relay()")
self.migrate_dhcp_servers_to_dhcpv4_relay()

self.migrate_flex_counter_delay_status_removal()
return None

Expand Down
41 changes: 41 additions & 0 deletions tests/db_migrator_test.py
Original file line number Diff line number Diff line change
Expand Up @@ -362,6 +362,47 @@ def test_lacp_key_migrator(self):
assert dbmgtr.configDB.get_table('PORTCHANNEL') == expected_db.cfgdb.get_table('PORTCHANNEL')
assert dbmgtr.configDB.get_table('VERSIONS') == expected_db.cfgdb.get_table('VERSIONS')


class TestDhcpRelayKeyMigrator(object):
@classmethod
def setup_class(cls):
os.environ['UTILITIES_UNIT_TESTING'] = "2"

@classmethod
def teardown_class(cls):
os.environ['UTILITIES_UNIT_TESTING'] = "0"
dbconnector.dedicated_dbs['CONFIG_DB'] = None

def test_dhcp_relay_key_migrator(self):
import db_migrator
dbmgtr = db_migrator.DBMigrator(None)
print("CONFIG_DB keys:", dbmgtr.configDB.get_table('VLAN'))
print("DEVICE_METADATA:", dbmgtr.configDB.get_entry('DEVICE_METADATA', 'localhost'))
entry = dbmgtr.configDB.get_entry('DEVICE_METADATA', 'localhost') or {}
entry['has_sonic_dhcpv4_relay'] = 'True'
dbmgtr.configDB.set_entry('DEVICE_METADATA', 'localhost', entry)
dbmgtr.configDB.set_entry('VLAN', 'Vlan20', {
'dhcp_servers': ['192.160.20.100'],
'vlanid': '20'
})
dbmgtr.configDB.set_entry('VLAN', 'Vlan21', {
'dhcp_servers': ['192.160.20.100'],
'vlanid': '21'
})
dbmgtr.configDB.set_entry('VLAN', 'Vlan80', {
'dhcp_servers': ['19.16.20.10'],
'vlanid': '80'
})
dbmgtr.configDB.set_entry('VERSIONS', 'DATABASE', {
'VERSION': 'version_202305_01'
})
dbmgtr.configDB.set_entry('VLAN', 'Vlan90', {'vlanid': '90'})
dbmgtr.migrate()
dhcpv4_table = dbmgtr.configDB.get_table('DHCPV4_RELAY')
assert dbmgtr.configDB.get_entry('DEVICE_METADATA', 'localhost')['has_sonic_dhcpv4_relay'] == 'True'
assert dhcpv4_table.get('Vlan20')['dhcpv4_servers'] == ['192.160.20.100']
assert dhcpv4_table.get('Vlan80')['dhcpv4_servers'] == ['19.16.20.10']

class TestDnsNameserverMigrator(object):
@classmethod
def setup_class(cls):
Expand Down