@@ -62,7 +62,16 @@ def print_help() -> None:
6262
6363
6464def set_up_external_access_integration_resources (
65- session , rule1 , rule2 , key1 , key2 , integration1 , integration2
65+ session ,
66+ rule1 ,
67+ rule2 ,
68+ rule3 ,
69+ key1 ,
70+ key2 ,
71+ key3 ,
72+ integration1 ,
73+ integration2 ,
74+ integration3 ,
6675):
6776 try :
6877 # IMPORTANT SETUP NOTES: the test role needs to be granted the creation privilege
@@ -87,6 +96,14 @@ def set_up_external_access_integration_resources(
8796 ).collect ()
8897 session .sql (
8998 f"""
99+ CREATE IF NOT EXISTS NETWORK RULE { rule3 }
100+ MODE = EGRESS
101+ TYPE = HOST_PORT
102+ VALUE_LIST = ('www.amazon.com');
103+ """
104+ ).collect ()
105+ session .sql (
106+ f"""
90107 CREATE IF NOT EXISTS SECRET { key1 }
91108 TYPE = GENERIC_STRING
92109 SECRET_STRING = 'replace-with-your-api-key';
@@ -101,6 +118,14 @@ def set_up_external_access_integration_resources(
101118 ).collect ()
102119 session .sql (
103120 f"""
121+ CREATE IF NOT EXISTS SECRET { key3 }
122+ TYPE = PASSWORD
123+ USERNAME = 'replace-with-your-username';
124+ PASSWORD = 'replace-with-your-password';
125+ """
126+ ).collect ()
127+ session .sql (
128+ f"""
104129 CREATE IF NOT EXISTS EXTERNAL ACCESS INTEGRATION { integration1 }
105130 ALLOWED_NETWORK_RULES = ({ rule1 } )
106131 ALLOWED_AUTHENTICATION_SECRETS = ({ key1 } )
@@ -113,14 +138,25 @@ def set_up_external_access_integration_resources(
113138 ALLOWED_NETWORK_RULES = ({ rule2 } )
114139 ALLOWED_AUTHENTICATION_SECRETS = ({ key2 } )
115140 ENABLED = true;
141+ """
142+ ).collect ()
143+ session .sql (
144+ f"""
145+ CREATE IF NOT EXISTS EXTERNAL ACCESS INTEGRATION { integration3 }
146+ ALLOWED_NETWORK_RULES = ({ rule3 } )
147+ ALLOWED_AUTHENTICATION_SECRETS = ({ key3 } )
148+ ENABLED = true;
116149 """
117150 ).collect ()
118151 CONNECTION_PARAMETERS ["external_access_rule1" ] = rule1
119152 CONNECTION_PARAMETERS ["external_access_rule2" ] = rule2
153+ CONNECTION_PARAMETERS ["external_access_rule3" ] = rule3
120154 CONNECTION_PARAMETERS ["external_access_key1" ] = key1
121155 CONNECTION_PARAMETERS ["external_access_key2" ] = key2
156+ CONNECTION_PARAMETERS ["external_access_key3" ] = key3
122157 CONNECTION_PARAMETERS ["external_access_integration1" ] = integration1
123158 CONNECTION_PARAMETERS ["external_access_integration2" ] = integration2
159+ CONNECTION_PARAMETERS ["external_access_integration3" ] = integration3
124160 except SnowparkSQLException :
125161 # GCP currently does not support external access integration
126162 # we can remove the exception once the integration is available on GCP
@@ -142,10 +178,13 @@ def set_up_external_access_integration_resources(
142178def clean_up_external_access_integration_resources ():
143179 CONNECTION_PARAMETERS .pop ("external_access_rule1" , None )
144180 CONNECTION_PARAMETERS .pop ("external_access_rule2" , None )
181+ CONNECTION_PARAMETERS .pop ("external_access_rule3" , None )
145182 CONNECTION_PARAMETERS .pop ("external_access_key1" , None )
146183 CONNECTION_PARAMETERS .pop ("external_access_key2" , None )
184+ CONNECTION_PARAMETERS .pop ("external_access_key3" , None )
147185 CONNECTION_PARAMETERS .pop ("external_access_integration1" , None )
148186 CONNECTION_PARAMETERS .pop ("external_access_integration2" , None )
187+ CONNECTION_PARAMETERS .pop ("external_access_integration3" , None )
149188
150189
151190def set_up_dataframe_processor_parameters (
@@ -264,10 +303,13 @@ def session(
264303 set_ast_state (AstFlagSource .TEST , ast_enabled )
265304 rule1 = "snowpark_python_test_rule1"
266305 rule2 = "snowpark_python_test_rule2"
306+ rule3 = "snowpark_python_test_rule3"
267307 key1 = "snowpark_python_test_key1"
268308 key2 = "snowpark_python_test_key2"
309+ key3 = "snowpark_python_test_key3"
269310 integration1 = "snowpark_python_test_integration1"
270311 integration2 = "snowpark_python_test_integration2"
312+ integration3 = "snowpark_python_test_integration3"
271313
272314 session = (
273315 Session .builder .configs (db_parameters )
@@ -291,7 +333,16 @@ def session(
291333
292334 if (RUNNING_ON_GH or RUNNING_ON_JENKINS ) and not local_testing_mode :
293335 set_up_external_access_integration_resources (
294- session , rule1 , rule2 , key1 , key2 , integration1 , integration2
336+ session ,
337+ rule1 ,
338+ rule2 ,
339+ rule3 ,
340+ key1 ,
341+ key2 ,
342+ key3 ,
343+ integration1 ,
344+ integration2 ,
345+ integration3 ,
295346 )
296347
297348 if validate_ast :
@@ -321,10 +372,13 @@ def profiler_session(
321372):
322373 rule1 = "snowpark_python_profiler_test_rule1"
323374 rule2 = "snowpark_python_profiler_test_rule2"
375+ rule3 = "snowpark_python_profiler_test_rule3"
324376 key1 = "snowpark_python_profiler_test_key1"
325377 key2 = "snowpark_python_profiler_test_key2"
378+ key3 = "snowpark_python_profiler_test_key3"
326379 integration1 = "snowpark_python_profiler_test_integration1"
327380 integration2 = "snowpark_python_profiler_test_integration2"
381+ integration3 = "snowpark_python_profiler_test_integration3"
328382 session = (
329383 Session .builder .configs (db_parameters )
330384 .config ("local_testing" , local_testing_mode )
@@ -334,7 +388,16 @@ def profiler_session(
334388 session ._cte_optimization_enabled = cte_optimization_enabled
335389 if RUNNING_ON_GH and not local_testing_mode :
336390 set_up_external_access_integration_resources (
337- session , rule1 , rule2 , key1 , key2 , integration1 , integration2
391+ session ,
392+ rule1 ,
393+ rule2 ,
394+ rule3 ,
395+ key1 ,
396+ key2 ,
397+ key3 ,
398+ integration1 ,
399+ integration2 ,
400+ integration3 ,
338401 )
339402 try :
340403 yield session
0 commit comments