Skip to content

Commit

Permalink
Merge pull request #12 from mssonicbld/sonicbld/202205-merge
Browse files Browse the repository at this point in the history
[code sync] Merge code from sonic-net/sonic-utilities:202205 to 202205
  • Loading branch information
mssonicbld authored Jun 23, 2023
2 parents 78c2a15 + 9d01c03 commit b7c78cb
Show file tree
Hide file tree
Showing 5 changed files with 105 additions and 1 deletion.
29 changes: 28 additions & 1 deletion scripts/db_migrator.py
Original file line number Diff line number Diff line change
Expand Up @@ -636,6 +636,20 @@ def update_edgezone_aggregator_config(self):
# Set new cable length values
self.configDB.set(self.configDB.CONFIG_DB, "CABLE_LENGTH|AZURE", intf, EDGEZONE_AGG_CABLE_LENGTH)

def migrate_config_db_flex_counter_delay_status(self):
"""
Migrate "FLEX_COUNTER_TABLE|*": { "value": { "FLEX_COUNTER_DELAY_STATUS": "false" } }
Set FLEX_COUNTER_DELAY_STATUS true in case of fast-reboot
"""

flex_counter_objects = self.configDB.get_keys('FLEX_COUNTER_TABLE')
for obj in flex_counter_objects:
flex_counter = self.configDB.get_entry('FLEX_COUNTER_TABLE', obj)
delay_status = flex_counter.get('FLEX_COUNTER_DELAY_STATUS')
if delay_status is None or delay_status == 'false':
flex_counter['FLEX_COUNTER_DELAY_STATUS'] = 'true'
self.configDB.mod_entry('FLEX_COUNTER_TABLE', obj, flex_counter)

def version_unknown(self):
"""
version_unknown tracks all SONiC versions that doesn't have a version
Expand Down Expand Up @@ -885,9 +899,22 @@ def version_3_0_5(self):

def version_3_0_6(self):
"""
Current latest version. Nothing to do here.
Version 3_0_6
"""
log.log_info('Handling version_3_0_6')

if self.stateDB.keys(self.stateDB.STATE_DB, "FAST_REBOOT|system"):
self.migrate_config_db_flex_counter_delay_status()

self.set_version('version_3_0_7')
return 'version_3_0_7'

def version_3_0_7(self):
"""
Version 3_0_7
Current latest version. Nothing to do here.
"""
log.log_info('Handling version_3_0_7')
return None

def get_version(self):
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
{
"VERSIONS|DATABASE": {
"VERSION": "version_3_0_7"
},
"FLEX_COUNTER_TABLE|ACL": {
"FLEX_COUNTER_STATUS": "true",
"FLEX_COUNTER_DELAY_STATUS": "true",
"POLL_INTERVAL": "10000"
},
"FLEX_COUNTER_TABLE|QUEUE": {
"FLEX_COUNTER_STATUS": "true",
"FLEX_COUNTER_DELAY_STATUS": "true",
"POLL_INTERVAL": "10000"
},
"FLEX_COUNTER_TABLE|PG_WATERMARK": {
"FLEX_COUNTER_STATUS": "false",
"FLEX_COUNTER_DELAY_STATUS": "true"
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
{
"VERSIONS|DATABASE": {
"VERSION": "version_1_0_1"
},
"FLEX_COUNTER_TABLE|ACL": {
"FLEX_COUNTER_STATUS": "true",
"FLEX_COUNTER_DELAY_STATUS": "true",
"POLL_INTERVAL": "10000"
},
"FLEX_COUNTER_TABLE|QUEUE": {
"FLEX_COUNTER_STATUS": "true",
"FLEX_COUNTER_DELAY_STATUS": "false",
"POLL_INTERVAL": "10000"
},
"FLEX_COUNTER_TABLE|PG_WATERMARK": {
"FLEX_COUNTER_STATUS": "false"
}
}
5 changes: 5 additions & 0 deletions tests/db_migrator_input/state_db/fast_reboot_upgrade.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
{
"FAST_REBOOT|system": {
"enable": "true"
}
}
35 changes: 35 additions & 0 deletions tests/db_migrator_test.py
Original file line number Diff line number Diff line change
Expand Up @@ -584,3 +584,38 @@ def test_warm_upgrade_t0_edgezone_aggregator_same_cable_length(self):

diff = DeepDiff(resulting_table, expected_table, ignore_order=True)
assert not diff


class TestFastUpgrade_to_3_0_7(object):
@classmethod
def setup_class(cls):
os.environ['UTILITIES_UNIT_TESTING'] = "2"
cls.config_db_tables_to_verify = ['FLEX_COUNTER_TABLE']
dbconnector.dedicated_dbs['STATE_DB'] = os.path.join(mock_db_path, 'state_db', 'fast_reboot_upgrade')

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

def mock_dedicated_config_db(self, filename):
jsonfile = os.path.join(mock_db_path, 'config_db', filename)
dbconnector.dedicated_dbs['CONFIG_DB'] = jsonfile
db = Db()
return db

def check_config_db(self, result, expected):
for table in self.config_db_tables_to_verify:
assert result.get_table(table) == expected.get_table(table)

def test_fast_reboot_upgrade_to_3_0_7(self):
db_before_migrate = 'cross_branch_upgrade_to_3_0_7_input'
db_after_migrate = 'cross_branch_upgrade_to_3_0_7_expected'
device_info.get_sonic_version_info = get_sonic_version_info_mlnx
db = self.mock_dedicated_config_db(db_before_migrate)
import db_migrator
dbmgtr = db_migrator.DBMigrator(None)
dbmgtr.migrate()
expected_db = self.mock_dedicated_config_db(db_after_migrate)
assert not self.check_config_db(dbmgtr.configDB, expected_db.cfgdb)

0 comments on commit b7c78cb

Please sign in to comment.