@@ -357,6 +357,49 @@ def test_load_minigraph_with_port_config(self, get_cmd_module, setup_single_broa
357
357
port_config = [{"PORT" : {"Ethernet0" : {"admin_status" : "up" }}}]
358
358
self .check_port_config (db , config , port_config , "config interface startup Ethernet0" )
359
359
360
+ def test_load_backend_acl (self , get_cmd_module , setup_single_broadcom_asic ):
361
+ db = Db ()
362
+ db .cfgdb .set_entry ("DEVICE_METADATA" , "localhost" , {"storage_device" : "true" })
363
+ self .check_backend_acl (get_cmd_module , db , device_type = 'BackEndToRRouter' , condition = True )
364
+
365
+ def test_load_backend_acl_not_storage (self , get_cmd_module , setup_single_broadcom_asic ):
366
+ db = Db ()
367
+ self .check_backend_acl (get_cmd_module , db , device_type = 'BackEndToRRouter' , condition = False )
368
+
369
+ def test_load_backend_acl_storage_leaf (self , get_cmd_module , setup_single_broadcom_asic ):
370
+ db = Db ()
371
+ db .cfgdb .set_entry ("DEVICE_METADATA" , "localhost" , {"storage_device" : "true" })
372
+ self .check_backend_acl (get_cmd_module , db , device_type = 'BackEndLeafRouter' , condition = False )
373
+
374
+ def test_load_backend_acl_storage_no_dataacl (self , get_cmd_module , setup_single_broadcom_asic ):
375
+ db = Db ()
376
+ db .cfgdb .set_entry ("DEVICE_METADATA" , "localhost" , {"storage_device" : "true" })
377
+ db .cfgdb .set_entry ("ACL_TABLE" , "DATAACL" , None )
378
+ self .check_backend_acl (get_cmd_module , db , device_type = 'BackEndToRRouter' , condition = False )
379
+
380
+ def check_backend_acl (self , get_cmd_module , db , device_type = 'BackEndToRRouter' , condition = True ):
381
+ def is_file_side_effect (filename ):
382
+ return True if 'backend_acl' in filename else False
383
+ with mock .patch ('os.path.isfile' , mock .MagicMock (side_effect = is_file_side_effect )):
384
+ with mock .patch ('config.main._get_device_type' , mock .MagicMock (return_value = device_type )):
385
+ with mock .patch (
386
+ "utilities_common.cli.run_command" ,
387
+ mock .MagicMock (side_effect = mock_run_command_side_effect )) as mock_run_command :
388
+ (config , show ) = get_cmd_module
389
+ runner = CliRunner ()
390
+ result = runner .invoke (config .config .commands ["load_minigraph" ], ["-y" ], obj = db )
391
+ print (result .exit_code )
392
+ expected_output = ['Running command: acl-loader update incremental /etc/sonic/backend_acl.json' ,
393
+ 'Running command: /usr/local/bin/sonic-cfggen -d -t /usr/share/sonic/templates/backend_acl.j2,/etc/sonic/backend_acl.json'
394
+ ]
395
+ print (result .output )
396
+ assert result .exit_code == 0
397
+ output = result .output .split ('\n ' )
398
+ if condition :
399
+ assert set (expected_output ).issubset (set (output ))
400
+ else :
401
+ assert not (set (expected_output ).issubset (set (output )))
402
+
360
403
def check_port_config (self , db , config , port_config , expected_output ):
361
404
def read_json_file_side_effect (filename ):
362
405
return port_config
0 commit comments