@@ -405,6 +405,37 @@ def _custom_action_details(resp):
405405 return getattr (result , 'details' , '' ) or ''
406406 return ''
407407
408+ def _run_custom_action_logged (self , action , resourceid , parameters = None ):
409+ """Run a custom action and log the request/response for smoke debugging."""
410+ action_name = getattr (action , 'name' , None ) or getattr (action , 'customactionname' , None ) or str (action )
411+ action_id = getattr (action , 'id' , None )
412+ self .logger .info (
413+ "runCustomAction command: action=%s id=%s resourceid=%s parameters=%s" ,
414+ action_name ,
415+ action_id ,
416+ resourceid ,
417+ parameters if parameters is not None else []
418+ )
419+ if parameters is None :
420+ out = action .run (self .apiclient , resourceid = resourceid )
421+ else :
422+ out = action .run (self .apiclient , resourceid = resourceid , parameters = parameters )
423+ result = getattr (out , 'result' , None )
424+ message = ''
425+ if isinstance (result , dict ):
426+ message = result .get ('message' , '' ) or ''
427+ elif hasattr (result , '__dict__' ):
428+ message = getattr (result , 'message' , '' ) or ''
429+ self .logger .info (
430+ "runCustomAction output: action=%s success=%s message=%s details=%s raw=%s" ,
431+ action_name ,
432+ getattr (out , 'success' , None ),
433+ message ,
434+ self ._custom_action_details (out ),
435+ out
436+ )
437+ return out
438+
408439 @classmethod
409440 def setUpClass (cls ):
410441 testClient = super (TestNetworkExtensionNamespace , cls ).getClsTestClient ()
@@ -2228,66 +2259,66 @@ def _mk_action(name, parameters = []):
22282259 ])
22292260
22302261 # 1) Create and list routing table
2231- out = act_create_table . run (
2232- self . apiclient ,
2262+ out = self . _run_custom_action_logged (
2263+ act_create_table ,
22332264 resourceid = network .id ,
22342265 parameters = [{"table-id" : "100" , "table-name" : table_name }],
22352266 )
22362267 self .assertTrue (getattr (out , 'success' , False ), "pbr-create-table should succeed" )
22372268
2238- out = act_list_tables . run ( self .apiclient , resourceid = network .id )
2269+ out = self ._run_custom_action_logged ( act_list_tables , resourceid = network .id )
22392270 self .assertTrue (getattr (out , 'success' , False ), "pbr-list-tables should succeed" )
22402271 self .assertIn (table_name , self ._custom_action_details (out ))
22412272
22422273 # 2) Add and list route in table
2243- out = act_add_route . run (
2244- self . apiclient ,
2274+ out = self . _run_custom_action_logged (
2275+ act_add_route ,
22452276 resourceid = network .id ,
22462277 parameters = [{"table" : table_name , "route" : "blackhole %s" % route_cidr }],
22472278 )
22482279 self .assertTrue (getattr (out , 'success' , False ), "pbr-add-route should succeed" )
22492280
2250- out = act_list_routes . run (
2251- self . apiclient ,
2281+ out = self . _run_custom_action_logged (
2282+ act_list_routes ,
22522283 resourceid = network .id ,
22532284 parameters = [{"table" : table_name }],
22542285 )
22552286 self .assertTrue (getattr (out , 'success' , False ), "pbr-list-routes should succeed" )
22562287 self .assertIn (route_cidr , self ._custom_action_details (out ))
22572288
22582289 # 3) Add and list policy rule
2259- out = act_add_rule . run (
2260- self . apiclient ,
2290+ out = self . _run_custom_action_logged (
2291+ act_add_rule ,
22612292 resourceid = network .id ,
22622293 parameters = [{"table" : table_name , "rule" : "to %s" % route_cidr }],
22632294 )
22642295 self .assertTrue (getattr (out , 'success' , False ), "pbr-add-rule should succeed" )
22652296
2266- out = act_list_rules . run (
2267- self . apiclient ,
2297+ out = self . _run_custom_action_logged (
2298+ act_list_rules ,
22682299 resourceid = network .id ,
22692300 parameters = [{"table" : table_name }],
22702301 )
22712302 self .assertTrue (getattr (out , 'success' , False ), "pbr-list-rules should succeed" )
22722303 self .assertIn (table_name , self ._custom_action_details (out ))
22732304
22742305 # 4) Delete policy rule, route, and table
2275- out = act_delete_rule . run (
2276- self . apiclient ,
2306+ out = self . _run_custom_action_logged (
2307+ act_delete_rule ,
22772308 resourceid = network .id ,
22782309 parameters = [{"table" : table_name , "rule" : "to %s" % route_cidr }],
22792310 )
22802311 self .assertTrue (getattr (out , 'success' , False ), "pbr-delete-rule should succeed" )
22812312
2282- out = act_delete_route . run (
2283- self . apiclient ,
2313+ out = self . _run_custom_action_logged (
2314+ act_delete_route ,
22842315 resourceid = network .id ,
22852316 parameters = [{"table" : table_name , "route" : "blackhole %s" % route_cidr }],
22862317 )
22872318 self .assertTrue (getattr (out , 'success' , False ), "pbr-delete-route should succeed" )
22882319
2289- out = act_delete_table . run (
2290- self . apiclient ,
2320+ out = self . _run_custom_action_logged (
2321+ act_delete_table ,
22912322 resourceid = network .id ,
22922323 parameters = [{"table-name" : table_name }],
22932324 )
@@ -2748,66 +2779,66 @@ def _mk_action(name, parameters=[]):
27482779 ])
27492780
27502781 # 1) Create and list routing table
2751- out = act_create_table . run (
2752- self . apiclient ,
2782+ out = self . _run_custom_action_logged (
2783+ act_create_table ,
27532784 resourceid = vpc .id ,
27542785 parameters = [{"table-id" : "100" , "table-name" : table_name }],
27552786 )
27562787 self .assertTrue (getattr (out , 'success' , False ), "pbr-create-table should succeed" )
27572788
2758- out = act_list_tables . run ( self .apiclient , resourceid = vpc .id )
2789+ out = self ._run_custom_action_logged ( act_list_tables , resourceid = vpc .id )
27592790 self .assertTrue (getattr (out , 'success' , False ), "pbr-list-tables should succeed" )
27602791 self .assertIn (table_name , self ._custom_action_details (out ))
27612792
27622793 # 2) Add and list route in table
2763- out = act_add_route . run (
2764- self . apiclient ,
2794+ out = self . _run_custom_action_logged (
2795+ act_add_route ,
27652796 resourceid = vpc .id ,
27662797 parameters = [{"table" : table_name , "route" : "blackhole %s" % route_cidr }],
27672798 )
27682799 self .assertTrue (getattr (out , 'success' , False ), "pbr-add-route should succeed" )
27692800
2770- out = act_list_routes . run (
2771- self . apiclient ,
2801+ out = self . _run_custom_action_logged (
2802+ act_list_routes ,
27722803 resourceid = vpc .id ,
27732804 parameters = [{"table" : table_name }],
27742805 )
27752806 self .assertTrue (getattr (out , 'success' , False ), "pbr-list-routes should succeed" )
27762807 self .assertIn (route_cidr , self ._custom_action_details (out ))
27772808
27782809 # 3) Add and list policy rule
2779- out = act_add_rule . run (
2780- self . apiclient ,
2810+ out = self . _run_custom_action_logged (
2811+ act_add_rule ,
27812812 resourceid = vpc .id ,
27822813 parameters = [{"table" : table_name , "rule" : "to %s" % route_cidr }],
27832814 )
27842815 self .assertTrue (getattr (out , 'success' , False ), "pbr-add-rule should succeed" )
27852816
2786- out = act_list_rules . run (
2787- self . apiclient ,
2817+ out = self . _run_custom_action_logged (
2818+ act_list_rules ,
27882819 resourceid = vpc .id ,
27892820 parameters = [{"table" : table_name }],
27902821 )
27912822 self .assertTrue (getattr (out , 'success' , False ), "pbr-list-rules should succeed" )
27922823 self .assertIn (table_name , self ._custom_action_details (out ))
27932824
27942825 # 4) Delete policy rule, route, and table
2795- out = act_delete_rule . run (
2796- self . apiclient ,
2826+ out = self . _run_custom_action_logged (
2827+ act_delete_rule ,
27972828 resourceid = vpc .id ,
27982829 parameters = [{"table" : table_name , "rule" : "to %s" % route_cidr }],
27992830 )
28002831 self .assertTrue (getattr (out , 'success' , False ), "pbr-delete-rule should succeed" )
28012832
2802- out = act_delete_route . run (
2803- self . apiclient ,
2833+ out = self . _run_custom_action_logged (
2834+ act_delete_route ,
28042835 resourceid = vpc .id ,
28052836 parameters = [{"table" : table_name , "route" : "blackhole %s" % route_cidr }],
28062837 )
28072838 self .assertTrue (getattr (out , 'success' , False ), "pbr-delete-route should succeed" )
28082839
2809- out = act_delete_table . run (
2810- self . apiclient ,
2840+ out = self . _run_custom_action_logged (
2841+ act_delete_table ,
28112842 resourceid = vpc .id ,
28122843 parameters = [{"table-name" : table_name }],
28132844 )
0 commit comments