1818# along with this program. If not, see <https://www.gnu.org/licenses/>.
1919
2020
21-
2221import logging
2322from typing import cast
2423from datetime import datetime
2524
25+ from node_cli .core .static_config import get_mirage_chain_name
2626from node_cli .mirage .record .redis_record import FlatRedisRecord , FieldInfo
2727
2828logger = logging .getLogger (__name__ )
2929
3030
3131CHAIN_RECORD_FIELDS : dict [str , FieldInfo ] = {
3232 'name' : FieldInfo ('name' , str , '' ),
33+ 'config_version' : FieldInfo ('config_version' , str , '0.0.0' ),
3334 'repair_date' : FieldInfo ('repair_date' , datetime , datetime .fromtimestamp (0 )),
3435 'repair_ts' : FieldInfo ('repair_ts' , int , None ),
3536 'snapshot_from' : FieldInfo ('snapshot_from' , str , None ),
@@ -40,6 +41,10 @@ class ChainRecord(FlatRedisRecord):
4041 def _record_fields (self ) -> dict [str , FieldInfo ]:
4142 return CHAIN_RECORD_FIELDS
4243
44+ @property
45+ def config_version (self ) -> str :
46+ return cast (str , self ._get_field ('config_version' ))
47+
4348 @property
4449 def repair_date (self ) -> datetime :
4550 return cast (datetime , self ._get_field ('repair_date' ))
@@ -52,6 +57,9 @@ def snapshot_from(self) -> str | None:
5257 def repair_ts (self ) -> int | None :
5358 return cast (int | None , self ._get_field ('repair_ts' ))
5459
60+ def set_config_version (self , version : str ) -> None :
61+ self ._set_field ('config_version' , version )
62+
5563 def set_repair_date (self , date : datetime ) -> None :
5664 self ._set_field ('repair_date' , date )
5765
@@ -60,3 +68,14 @@ def set_snapshot_from(self, value: str | None) -> None:
6068
6169 def set_repair_ts (self , value : int | None ) -> None :
6270 self ._set_field ('repair_ts' , value )
71+
72+
73+ def get_mirage_chain_record (env : dict ) -> ChainRecord :
74+ return ChainRecord (get_mirage_chain_name (env ))
75+
76+
77+ def migrate_chain_record (env : dict ) -> None :
78+ version = env ['CONTAINER_CONFIGS_STREAM' ]
79+ logger .info ('Migrating mirage chain record, setting config version to %s' , version )
80+ record = get_mirage_chain_record (env )
81+ record .set_config_version (version )
0 commit comments