Skip to content

Commit 300b353

Browse files
Merge branch 'master' into master
2 parents dd11b3c + 42cba90 commit 300b353

File tree

60 files changed

+1454
-86
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

60 files changed

+1454
-86
lines changed

scripts/db_migrator.py

Lines changed: 46 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@ def __init__(self, namespace, socket=None):
4747
none-zero values.
4848
build: sequentially increase within a minor version domain.
4949
"""
50-
self.CURRENT_VERSION = 'version_4_0_3'
50+
self.CURRENT_VERSION = 'version_4_0_4'
5151

5252
self.TABLE_NAME = 'VERSIONS'
5353
self.TABLE_KEY = 'DATABASE'
@@ -646,6 +646,7 @@ def migrate_feature_timer(self):
646646
config['delayed'] = state
647647
config.pop('has_timer')
648648
self.configDB.set_entry('FEATURE', feature, config)
649+
649650
def migrate_route_table(self):
650651
"""
651652
Handle route table migration. Migrations handled:
@@ -669,6 +670,33 @@ def migrate_route_table(self):
669670
if 'protocol' not in route_attr:
670671
self.appDB.set(self.appDB.APPL_DB, route_key, 'protocol', '')
671672

673+
def migrate_dns_nameserver(self):
674+
"""
675+
Handle DNS_NAMESERVER table migration. Migrations handled:
676+
If there's no DNS_NAMESERVER in config_DB, load DNS_NAMESERVER from minigraph
677+
"""
678+
if not self.minigraph_data or 'DNS_NAMESERVER' not in self.minigraph_data:
679+
return
680+
dns_table = self.configDB.get_table('DNS_NAMESERVER')
681+
if not dns_table:
682+
for addr, config in self.minigraph_data['DNS_NAMESERVER'].items():
683+
self.configDB.set_entry('DNS_NAMESERVER', addr, config)
684+
685+
def migrate_routing_config_mode(self):
686+
# DEVICE_METADATA - synchronous_mode entry
687+
if not self.minigraph_data or 'DEVICE_METADATA' not in self.minigraph_data:
688+
return
689+
device_metadata_old = self.configDB.get_entry('DEVICE_METADATA', 'localhost')
690+
device_metadata_new = self.minigraph_data['DEVICE_METADATA']['localhost']
691+
# overwrite the routing-config-mode as per minigraph parser
692+
# Criteria for update:
693+
# if config mode is missing in base OS or if base and target modes are not same
694+
# Eg. in 201811 mode is "unified", and in newer branches mode is "separated"
695+
if ('docker_routing_config_mode' not in device_metadata_old and 'docker_routing_config_mode' in device_metadata_new) or \
696+
(device_metadata_old.get('docker_routing_config_mode') != device_metadata_new.get('docker_routing_config_mode')):
697+
device_metadata_old['docker_routing_config_mode'] = device_metadata_new.get('docker_routing_config_mode')
698+
self.configDB.set_entry('DEVICE_METADATA', 'localhost', device_metadata_old)
699+
672700
def update_edgezone_aggregator_config(self):
673701
"""
674702
Update cable length configuration in ConfigDB for T0 neighbor interfaces
@@ -1041,19 +1069,29 @@ def version_4_0_3(self):
10411069
Version 4_0_3.
10421070
"""
10431071
log.log_info('Handling version_4_0_3')
1044-
1045-
self.migrate_config_db_switchport_mode()
1072+
1073+
# Updating DNS nameserver
1074+
self.migrate_dns_nameserver()
10461075
self.set_version('version_4_0_4')
10471076
return 'version_4_0_4'
1048-
1077+
10491078
def version_4_0_4(self):
10501079
"""
10511080
Version 4_0_4.
1052-
This is the latest version for master branch
10531081
"""
10541082
log.log_info('Handling version_4_0_4')
1083+
1084+
self.migrate_config_db_switchport_mode()
1085+
self.set_version('version_4_0_4')
1086+
return 'version_4_0_5'
1087+
1088+
def version_4_0_5(self):
1089+
"""
1090+
Version 4_0_5.
1091+
This is the latest version for master branch
1092+
"""
1093+
log.log_info('Handling version_4_0_5')
10551094
return None
1056-
10571095

10581096
def get_version(self):
10591097
version = self.configDB.get_entry(self.TABLE_NAME, self.TABLE_KEY)
@@ -1103,6 +1141,8 @@ def common_migration_ops(self):
11031141

11041142
# Updating edgezone aggregator cable length config for T0 devices
11051143
self.update_edgezone_aggregator_config()
1144+
# update FRR config mode based on minigraph parser on target image
1145+
self.migrate_routing_config_mode()
11061146

11071147
def migrate(self):
11081148
version = self.get_version()

0 commit comments

Comments
 (0)