@@ -141,6 +141,49 @@ def test_load_minigraph_with_port_config(self, get_cmd_module, setup_single_broa
141
141
port_config = [{"PORT" : {"Ethernet0" : {"admin_status" : "up" }}}]
142
142
self .check_port_config (db , config , port_config , "config interface startup Ethernet0" )
143
143
144
+ def test_load_backend_acl (self , get_cmd_module , setup_single_broadcom_asic ):
145
+ db = Db ()
146
+ db .cfgdb .set_entry ("DEVICE_METADATA" , "localhost" , {"storage_device" : "true" })
147
+ self .check_backend_acl (get_cmd_module , db , device_type = 'BackEndToRRouter' , condition = True )
148
+
149
+ def test_load_backend_acl_not_storage (self , get_cmd_module , setup_single_broadcom_asic ):
150
+ db = Db ()
151
+ self .check_backend_acl (get_cmd_module , db , device_type = 'BackEndToRRouter' , condition = False )
152
+
153
+ def test_load_backend_acl_storage_leaf (self , get_cmd_module , setup_single_broadcom_asic ):
154
+ db = Db ()
155
+ db .cfgdb .set_entry ("DEVICE_METADATA" , "localhost" , {"storage_device" : "true" })
156
+ self .check_backend_acl (get_cmd_module , db , device_type = 'BackEndLeafRouter' , condition = False )
157
+
158
+ def test_load_backend_acl_storage_no_dataacl (self , get_cmd_module , setup_single_broadcom_asic ):
159
+ db = Db ()
160
+ db .cfgdb .set_entry ("DEVICE_METADATA" , "localhost" , {"storage_device" : "true" })
161
+ db .cfgdb .set_entry ("ACL_TABLE" , "DATAACL" , None )
162
+ self .check_backend_acl (get_cmd_module , db , device_type = 'BackEndToRRouter' , condition = False )
163
+
164
+ def check_backend_acl (self , get_cmd_module , db , device_type = 'BackEndToRRouter' , condition = True ):
165
+ def is_file_side_effect (filename ):
166
+ return True if 'backend_acl' in filename else False
167
+ with mock .patch ('os.path.isfile' , mock .MagicMock (side_effect = is_file_side_effect )):
168
+ with mock .patch ('config.main._get_device_type' , mock .MagicMock (return_value = device_type )):
169
+ with mock .patch (
170
+ "utilities_common.cli.run_command" ,
171
+ mock .MagicMock (side_effect = mock_run_command_side_effect )) as mock_run_command :
172
+ (config , show ) = get_cmd_module
173
+ runner = CliRunner ()
174
+ result = runner .invoke (config .config .commands ["load_minigraph" ], ["-y" ], obj = db )
175
+ print (result .exit_code )
176
+ expected_output = ['Running command: acl-loader update incremental /etc/sonic/backend_acl.json' ,
177
+ 'Running command: /usr/local/bin/sonic-cfggen -d -t /usr/share/sonic/templates/backend_acl.j2,/etc/sonic/backend_acl.json'
178
+ ]
179
+ print (result .output )
180
+ assert result .exit_code == 0
181
+ output = result .output .split ('\n ' )
182
+ if condition :
183
+ assert set (expected_output ).issubset (set (output ))
184
+ else :
185
+ assert not (set (expected_output ).issubset (set (output )))
186
+
144
187
def check_port_config (self , db , config , port_config , expected_output ):
145
188
def read_json_file_side_effect (filename ):
146
189
return port_config
0 commit comments