15
15
16
16
import sonic_yang
17
17
from jsondiff import diff
18
- from sonic_py_common import port_util , multi_asic
18
+ from sonic_py_common import port_util
19
19
from swsscommon .swsscommon import SonicV2Connector , ConfigDBConnector
20
20
from utilities_common .general import load_module_from_source
21
21
@@ -36,7 +36,7 @@ class ConfigMgmt():
36
36
'''
37
37
38
38
def __init__ (self , source = "configDB" , debug = False , allowTablesWithoutYang = True ,
39
- sonicYangOptions = 0 , namespace = multi_asic . DEFAULT_NAMESPACE ):
39
+ sonicYangOptions = 0 , configdb = None ):
40
40
'''
41
41
Initialise the class, --read the config, --load in data tree.
42
42
@@ -45,7 +45,8 @@ def __init__(self, source="configDB", debug=False, allowTablesWithoutYang=True,
45
45
debug (bool): verbose mode.
46
46
allowTablesWithoutYang (bool): allow tables without yang model in
47
47
config or not.
48
- namespace(str): namespace to work on.
48
+ configdb: configdb to work on.
49
+
49
50
Returns:
50
51
void
51
52
'''
@@ -55,27 +56,31 @@ def __init__(self, source="configDB", debug=False, allowTablesWithoutYang=True,
55
56
self .source = source
56
57
self .allowTablesWithoutYang = allowTablesWithoutYang
57
58
self .sonicYangOptions = sonicYangOptions
58
- self .namespace = namespace
59
+ if configdb is None :
60
+ self .configdb = ConfigDBConnector ()
61
+ self .configdb .connect ()
62
+ else :
63
+ self .configdb = configdb
59
64
60
65
# logging vars
61
66
self .SYSLOG_IDENTIFIER = "ConfigMgmt"
62
67
self .DEBUG = debug
63
68
64
- self .__init_sonic_yang (namespace = self . namespace )
69
+ self .__init_sonic_yang ()
65
70
66
71
except Exception as e :
67
72
self .sysLog (doPrint = True , logLevel = syslog .LOG_ERR , msg = str (e ))
68
73
raise Exception ('ConfigMgmt Class creation failed' )
69
74
70
75
return
71
76
72
- def __init_sonic_yang (self , namespace = multi_asic . DEFAULT_NAMESPACE ):
77
+ def __init_sonic_yang (self ):
73
78
self .sy = sonic_yang .SonicYang (YANG_DIR , debug = self .DEBUG , sonic_yang_options = self .sonicYangOptions )
74
79
# load yang models
75
80
self .sy .loadYangModel ()
76
81
# load jIn from config DB or from config DB json file.
77
82
if self .source .lower () == 'configdb' :
78
- self .readConfigDB (namespace )
83
+ self .readConfigDB ()
79
84
# treat any other source as file input
80
85
else :
81
86
self .readConfigDBJson (self .source )
@@ -183,45 +188,42 @@ def readConfigDBJson(self, source=CONFIG_DB_JSON_FILE):
183
188
"""
184
189
Get config from redis config DB
185
190
"""
186
- def readConfigDB (self , namespace = multi_asic . DEFAULT_NAMESPACE ):
191
+ def readConfigDB (self ):
187
192
'''
188
193
Read the config in Config DB. Assign it in self.configdbJsonIn.
189
194
190
195
Parameters:
191
- namespace: namespace to work on.
196
+ (void)
192
197
193
198
Returns:
194
199
(void)
195
200
'''
196
201
self .sysLog (doPrint = True , msg = 'Reading data from Redis configDb' )
197
202
# Read from config DB on sonic switch
198
203
data = dict ()
199
- configdb = ConfigDBConnector (namespace = namespace )
200
- configdb .connect ()
204
+ configdb = self .configdb
201
205
sonic_cfggen .deep_update (data , sonic_cfggen .FormatConverter .db_to_output (configdb .get_config ()))
202
206
self .configdbJsonIn = sonic_cfggen .FormatConverter .to_serialized (data )
203
- self .sysLog (syslog .LOG_DEBUG , 'Reading Input from ConfigDB {} {} ' .\
204
- format (namespace , self .configdbJsonIn ))
207
+ self .sysLog (syslog .LOG_DEBUG , 'Reading Input from ConfigDB {}' .\
208
+ format (self .configdbJsonIn ))
205
209
206
210
return
207
211
208
- def writeConfigDB (self , jDiff , namespace = multi_asic . DEFAULT_NAMESPACE ):
212
+ def writeConfigDB (self , jDiff ):
209
213
'''
210
214
Write the diff in Config DB.
211
215
212
216
Parameters:
213
217
jDiff (dict): config to push in config DB.
214
- namespace (str): namespace to work on.
215
218
216
219
Returns:
217
220
void
218
221
'''
219
222
self .sysLog (doPrint = True , msg = 'Writing in Config DB' )
220
223
data = dict ()
221
- configdb = ConfigDBConnector (namespace = namespace )
222
- configdb .connect (False )
224
+ configdb = self .configdb
223
225
sonic_cfggen .deep_update (data , sonic_cfggen .FormatConverter .to_deserialized (jDiff ))
224
- self .sysLog (msg = "Write in DB {} : {}" .format (namespace , data ))
226
+ self .sysLog (msg = "Write in DB: {}" .format (data ))
225
227
configdb .mod_config (sonic_cfggen .FormatConverter .output_to_db (data ))
226
228
227
229
return
0 commit comments