@@ -157,7 +157,7 @@ def test_service_creator_yang(sonic_fs, manifest, mock_sonic_db,
157
157
})
158
158
159
159
entry = PackageEntry ('test' , 'azure/sonic-test' )
160
- package = Package (entry , Metadata (manifest , yang_module_str = test_yang ))
160
+ package = Package (entry , Metadata (manifest , yang_modules = [ test_yang ] ))
161
161
service_creator .create (package )
162
162
163
163
mock_config_mgmt .add_module .assert_called_with (test_yang )
@@ -171,7 +171,7 @@ def test_service_creator_yang(sonic_fs, manifest, mock_sonic_db,
171
171
},
172
172
},
173
173
}
174
- package = Package (entry , Metadata (manifest , yang_module_str = test_yang ))
174
+ package = Package (entry , Metadata (manifest , yang_modules = [ test_yang ] ))
175
175
176
176
service_creator .create (package )
177
177
@@ -190,6 +190,42 @@ def test_service_creator_yang(sonic_fs, manifest, mock_sonic_db,
190
190
mock_config_mgmt .remove_module .assert_called_with (test_yang_module )
191
191
192
192
193
+ def test_service_creator_multi_yang (sonic_fs , manifest , mock_config_mgmt , service_creator ):
194
+ test_yang = 'TEST YANG'
195
+ test_yang_2 = 'TEST YANG 2'
196
+
197
+ def get_module_name (module_src ):
198
+ if module_src == test_yang :
199
+ return 'sonic-test'
200
+ elif module_src == test_yang_2 :
201
+ return 'sonic-test-2'
202
+ else :
203
+ raise ValueError (f'Unknown module { module_src } ' )
204
+
205
+ entry = PackageEntry ('test' , 'azure/sonic-test' )
206
+ package = Package (entry , Metadata (manifest , yang_modules = [test_yang , test_yang_2 ]))
207
+ service_creator .create (package )
208
+
209
+ mock_config_mgmt .add_module .assert_has_calls (
210
+ [
211
+ call (test_yang ),
212
+ call (test_yang_2 )
213
+ ],
214
+ any_order = True ,
215
+ )
216
+
217
+ mock_config_mgmt .get_module_name = Mock (side_effect = get_module_name )
218
+
219
+ service_creator .remove (package )
220
+ mock_config_mgmt .remove_module .assert_has_calls (
221
+ [
222
+ call (get_module_name (test_yang )),
223
+ call (get_module_name (test_yang_2 ))
224
+ ],
225
+ any_order = True ,
226
+ )
227
+
228
+
193
229
def test_service_creator_autocli (sonic_fs , manifest , mock_cli_gen ,
194
230
mock_config_mgmt , service_creator ):
195
231
test_yang = 'TEST YANG'
@@ -199,7 +235,7 @@ def test_service_creator_autocli(sonic_fs, manifest, mock_cli_gen,
199
235
manifest ['cli' ]['auto-generate-config' ] = True
200
236
201
237
entry = PackageEntry ('test' , 'azure/sonic-test' )
202
- package = Package (entry , Metadata (manifest , yang_module_str = test_yang ))
238
+ package = Package (entry , Metadata (manifest , yang_modules = [ test_yang ] ))
203
239
mock_config_mgmt .get_module_name = Mock (return_value = test_yang_module )
204
240
service_creator .create (package )
205
241
@@ -226,6 +262,58 @@ def test_service_creator_post_operation_hook(sonic_fs, manifest, mock_sonic_db,
226
262
service_creator ._post_operation_hook ()
227
263
run_command .assert_called_with (['systemctl' , 'daemon-reload' ])
228
264
265
+ def test_service_creator_multi_yang_filter_auto_cli_modules (sonic_fs , manifest , mock_cli_gen ,
266
+ mock_config_mgmt , service_creator ):
267
+ test_yang = 'TEST YANG'
268
+ test_yang_2 = 'TEST YANG 2'
269
+ test_yang_3 = 'TEST YANG 3'
270
+ test_yang_4 = 'TEST YANG 4'
271
+
272
+ def get_module_name (module_src ):
273
+ if module_src == test_yang :
274
+ return 'sonic-test'
275
+ elif module_src == test_yang_2 :
276
+ return 'sonic-test-2'
277
+ elif module_src == test_yang_3 :
278
+ return 'sonic-test-3'
279
+ elif module_src == test_yang_4 :
280
+ return 'sonic-test-4'
281
+ else :
282
+ raise ValueError (f'Unknown module { module_src } ' )
283
+
284
+ manifest ['cli' ]['auto-generate-show' ] = True
285
+ manifest ['cli' ]['auto-generate-config' ] = True
286
+ manifest ['cli' ]['auto-generate-show-source-yang-modules' ] = ['sonic-test-2' , 'sonic-test-4' ]
287
+ manifest ['cli' ]['auto-generate-config-source-yang-modules' ] = ['sonic-test-2' , 'sonic-test-4' ]
288
+
289
+ entry = PackageEntry ('test' , 'azure/sonic-test' )
290
+ package = Package (entry , Metadata (manifest , yang_modules = [test_yang , test_yang_2 , test_yang_3 , test_yang_4 ]))
291
+ mock_config_mgmt .get_module_name = Mock (side_effect = get_module_name )
292
+ service_creator .create (package )
293
+
294
+ assert mock_cli_gen .generate_cli_plugin .call_count == 4
295
+ mock_cli_gen .generate_cli_plugin .assert_has_calls (
296
+ [
297
+ call ('show' , get_module_name (test_yang_2 )),
298
+ call ('show' , get_module_name (test_yang_4 )),
299
+ call ('config' , get_module_name (test_yang_2 )),
300
+ call ('config' , get_module_name (test_yang_4 )),
301
+ ],
302
+ any_order = True
303
+ )
304
+
305
+ service_creator .remove (package )
306
+ assert mock_cli_gen .remove_cli_plugin .call_count == 4
307
+ mock_cli_gen .remove_cli_plugin .assert_has_calls (
308
+ [
309
+ call ('show' , get_module_name (test_yang_2 )),
310
+ call ('show' , get_module_name (test_yang_4 )),
311
+ call ('config' , get_module_name (test_yang_2 )),
312
+ call ('config' , get_module_name (test_yang_4 )),
313
+ ],
314
+ any_order = True
315
+ )
316
+
229
317
def test_feature_registration (mock_sonic_db , manifest ):
230
318
mock_connector = Mock ()
231
319
mock_connector .get_entry = Mock (return_value = {})
0 commit comments