omnata-plugin-devkit 0.10.16a110__tar.gz → 0.10.17__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (79) hide show
  1. {omnata_plugin_devkit-0.10.16a110 → omnata_plugin_devkit-0.10.17}/PKG-INFO +1 -1
  2. {omnata_plugin_devkit-0.10.16a110 → omnata_plugin_devkit-0.10.17}/pyproject.toml +1 -1
  3. omnata_plugin_devkit-0.10.17/src/omnata_plugin_devkit/jinja_templates/FETCH_CONNECTIONS.sql.jinja +26 -0
  4. omnata_plugin_devkit-0.10.17/src/omnata_plugin_devkit/jinja_templates/FETCH_SYNCS.sql.jinja +26 -0
  5. omnata_plugin_devkit-0.10.17/src/omnata_plugin_devkit/jinja_templates/FETCH_SYNC_BRANCHES.sql.jinja +26 -0
  6. {omnata_plugin_devkit-0.10.16a110 → omnata_plugin_devkit-0.10.17}/src/omnata_plugin_devkit/jinja_templates/manifest.yml.jinja +0 -5
  7. {omnata_plugin_devkit-0.10.16a110 → omnata_plugin_devkit-0.10.17}/src/omnata_plugin_devkit/plugin_uploader.py +13 -7
  8. omnata_plugin_devkit-0.10.16a110/src/omnata_plugin_devkit/jinja_templates/CREATE_EXTERNAL_ACCESS_INTEGRATION.sql.jinja +0 -52
  9. omnata_plugin_devkit-0.10.16a110/src/omnata_plugin_devkit/jinja_templates/DROP_EXTERNAL_ACCESS_OBJECTS.sql.jinja +0 -82
  10. {omnata_plugin_devkit-0.10.16a110 → omnata_plugin_devkit-0.10.17}/LICENSE +0 -0
  11. {omnata_plugin_devkit-0.10.16a110 → omnata_plugin_devkit-0.10.17}/README.md +0 -0
  12. {omnata_plugin_devkit-0.10.16a110 → omnata_plugin_devkit-0.10.17}/src/omnata_plugin_devkit/__init__.py +0 -0
  13. {omnata_plugin_devkit-0.10.16a110 → omnata_plugin_devkit-0.10.17}/src/omnata_plugin_devkit/airbyte_wrapper.py +0 -0
  14. {omnata_plugin_devkit-0.10.16a110 → omnata_plugin_devkit-0.10.17}/src/omnata_plugin_devkit/cli/__init__.py +0 -0
  15. {omnata_plugin_devkit-0.10.16a110 → omnata_plugin_devkit-0.10.17}/src/omnata_plugin_devkit/development.ipynb +0 -0
  16. {omnata_plugin_devkit-0.10.16a110 → omnata_plugin_devkit-0.10.17}/src/omnata_plugin_devkit/development_session.py +0 -0
  17. {omnata_plugin_devkit-0.10.16a110 → omnata_plugin_devkit-0.10.17}/src/omnata_plugin_devkit/initialiser.py +0 -0
  18. {omnata_plugin_devkit-0.10.16a110 → omnata_plugin_devkit-0.10.17}/src/omnata_plugin_devkit/jinja_templates/API_LIMITS.sql.jinja +0 -0
  19. {omnata_plugin_devkit-0.10.16a110 → omnata_plugin_devkit-0.10.17}/src/omnata_plugin_devkit/jinja_templates/ASSIGN_OUTBOUND_TARGET_TYPE.sql.jinja +0 -0
  20. {omnata_plugin_devkit-0.10.16a110 → omnata_plugin_devkit-0.10.17}/src/omnata_plugin_devkit/jinja_templates/CONFIGURATION_FORM.sql.jinja +0 -0
  21. {omnata_plugin_devkit-0.10.16a110 → omnata_plugin_devkit-0.10.17}/src/omnata_plugin_devkit/jinja_templates/CONFIGURE_APIS.sql.jinja +0 -0
  22. {omnata_plugin_devkit-0.10.16a110 → omnata_plugin_devkit-0.10.17}/src/omnata_plugin_devkit/jinja_templates/CONNECTION_FORM.sql.jinja +0 -0
  23. {omnata_plugin_devkit-0.10.16a110 → omnata_plugin_devkit-0.10.17}/src/omnata_plugin_devkit/jinja_templates/CONNECTION_TEST.sql.jinja +0 -0
  24. {omnata_plugin_devkit-0.10.16a110 → omnata_plugin_devkit-0.10.17}/src/omnata_plugin_devkit/jinja_templates/CONSTRUCT_FORM_OPTION.sql.jinja +0 -0
  25. {omnata_plugin_devkit-0.10.16a110 → omnata_plugin_devkit-0.10.17}/src/omnata_plugin_devkit/jinja_templates/CREATE_BILLING_EVENTS.sql.jinja +0 -0
  26. {omnata_plugin_devkit-0.10.16a110 → omnata_plugin_devkit-0.10.17}/src/omnata_plugin_devkit/jinja_templates/CREATE_GENERIC_SECRET_OBJECT.sql.jinja +0 -0
  27. {omnata_plugin_devkit-0.10.16a110 → omnata_plugin_devkit-0.10.17}/src/omnata_plugin_devkit/jinja_templates/CREATE_GENERIC_SECRET_OBJECT_FROM_EXISTING.sql.jinja +0 -0
  28. {omnata_plugin_devkit-0.10.16a110 → omnata_plugin_devkit-0.10.17}/src/omnata_plugin_devkit/jinja_templates/CREATE_NETWORK_RULE_OBJECT.sql.jinja +0 -0
  29. {omnata_plugin_devkit-0.10.16a110 → omnata_plugin_devkit-0.10.17}/src/omnata_plugin_devkit/jinja_templates/CREATE_NETWORK_RULE_OBJECT_FROM_EXISTING.sql.jinja +0 -0
  30. {omnata_plugin_devkit-0.10.16a110 → omnata_plugin_devkit-0.10.17}/src/omnata_plugin_devkit/jinja_templates/CREATE_OAUTH_SECRET_OBJECT.sql.jinja +0 -0
  31. {omnata_plugin_devkit-0.10.16a110 → omnata_plugin_devkit-0.10.17}/src/omnata_plugin_devkit/jinja_templates/INBOUND_LIST_STREAMS.sql.jinja +0 -0
  32. {omnata_plugin_devkit-0.10.16a110 → omnata_plugin_devkit-0.10.17}/src/omnata_plugin_devkit/jinja_templates/LIST_STAGES.sql.jinja +0 -0
  33. {omnata_plugin_devkit-0.10.16a110 → omnata_plugin_devkit-0.10.17}/src/omnata_plugin_devkit/jinja_templates/NETWORK_ADDRESSES.sql.jinja +0 -0
  34. {omnata_plugin_devkit-0.10.16a110 → omnata_plugin_devkit-0.10.17}/src/omnata_plugin_devkit/jinja_templates/NGROK_POST_TUNNEL_FIELDS.sql.jinja +0 -0
  35. {omnata_plugin_devkit-0.10.16a110 → omnata_plugin_devkit-0.10.17}/src/omnata_plugin_devkit/jinja_templates/OUTBOUND_RECORD_VALIDATOR.sql.jinja +0 -0
  36. {omnata_plugin_devkit-0.10.16a110 → omnata_plugin_devkit-0.10.17}/src/omnata_plugin_devkit/jinja_templates/PENDING_API_CONFIGURATION.sql.jinja +0 -0
  37. {omnata_plugin_devkit-0.10.16a110 → omnata_plugin_devkit-0.10.17}/src/omnata_plugin_devkit/jinja_templates/POST_INSTALL_ACTIONS.sql.jinja +0 -0
  38. {omnata_plugin_devkit-0.10.16a110 → omnata_plugin_devkit-0.10.17}/src/omnata_plugin_devkit/jinja_templates/RENAME_CONNECTION_METHODS.sql.jinja +0 -0
  39. {omnata_plugin_devkit-0.10.16a110 → omnata_plugin_devkit-0.10.17}/src/omnata_plugin_devkit/jinja_templates/RETRIEVE_NETWORK_RULE_OBJECT.sql.jinja +0 -0
  40. {omnata_plugin_devkit-0.10.16a110 → omnata_plugin_devkit-0.10.17}/src/omnata_plugin_devkit/jinja_templates/RETRIEVE_SECRETS.sql.jinja +0 -0
  41. {omnata_plugin_devkit-0.10.16a110 → omnata_plugin_devkit-0.10.17}/src/omnata_plugin_devkit/jinja_templates/RETRIEVE_SECRETS_UDF.sql.jinja +0 -0
  42. {omnata_plugin_devkit-0.10.16a110 → omnata_plugin_devkit-0.10.17}/src/omnata_plugin_devkit/jinja_templates/SYNC.sql.jinja +0 -0
  43. {omnata_plugin_devkit-0.10.16a110 → omnata_plugin_devkit-0.10.17}/src/omnata_plugin_devkit/jinja_templates/TEST_CALLBACK.sql.jinja +0 -0
  44. {omnata_plugin_devkit-0.10.16a110 → omnata_plugin_devkit-0.10.17}/src/omnata_plugin_devkit/jinja_templates/TEST_OAUTH_TOKEN_EXISTS.sql.jinja +0 -0
  45. {omnata_plugin_devkit-0.10.16a110 → omnata_plugin_devkit-0.10.17}/src/omnata_plugin_devkit/jinja_templates/TUNNEL_TEST.sql.jinja +0 -0
  46. {omnata_plugin_devkit-0.10.16a110 → omnata_plugin_devkit-0.10.17}/src/omnata_plugin_devkit/jinja_templates/UPDATE_API_CONFIGURATION.sql.jinja +0 -0
  47. {omnata_plugin_devkit-0.10.16a110 → omnata_plugin_devkit-0.10.17}/src/omnata_plugin_devkit/jinja_templates/UPDATE_GENERIC_SECRET_OBJECT.sql.jinja +0 -0
  48. {omnata_plugin_devkit-0.10.16a110 → omnata_plugin_devkit-0.10.17}/src/omnata_plugin_devkit/jinja_templates/UPDATE_GENERIC_SECRET_OBJECT_OLD.sql.jinja +0 -0
  49. {omnata_plugin_devkit-0.10.16a110 → omnata_plugin_devkit-0.10.17}/src/omnata_plugin_devkit/jinja_templates/UPDATE_NETWORK_RULE_OBJECT.sql.jinja +0 -0
  50. {omnata_plugin_devkit-0.10.16a110 → omnata_plugin_devkit-0.10.17}/src/omnata_plugin_devkit/native_app_packaging.py +0 -0
  51. {omnata_plugin_devkit-0.10.16a110 → omnata_plugin_devkit-0.10.17}/src/omnata_plugin_devkit/plugin_registration.py +0 -0
  52. {omnata_plugin_devkit-0.10.16a110 → omnata_plugin_devkit-0.10.17}/src/omnata_plugin_devkit/plugin_template/icon.svg +0 -0
  53. {omnata_plugin_devkit-0.10.16a110 → omnata_plugin_devkit-0.10.17}/src/omnata_plugin_devkit/plugin_template/plugin.py +0 -0
  54. {omnata_plugin_devkit-0.10.16a110 → omnata_plugin_devkit-0.10.17}/src/omnata_plugin_devkit/plugin_template/plugin_development.ipynb +0 -0
  55. {omnata_plugin_devkit-0.10.16a110 → omnata_plugin_devkit-0.10.17}/src/omnata_plugin_devkit/plugin_template/requirements.txt +0 -0
  56. {omnata_plugin_devkit-0.10.16a110 → omnata_plugin_devkit-0.10.17}/src/omnata_plugin_devkit/snowcli/__init__.py +0 -0
  57. {omnata_plugin_devkit-0.10.16a110 → omnata_plugin_devkit-0.10.17}/src/omnata_plugin_devkit/snowcli/cli/__init__.py +0 -0
  58. {omnata_plugin_devkit-0.10.16a110 → omnata_plugin_devkit-0.10.17}/src/omnata_plugin_devkit/snowcli/cli/api/__init__.py +0 -0
  59. {omnata_plugin_devkit-0.10.16a110 → omnata_plugin_devkit-0.10.17}/src/omnata_plugin_devkit/snowcli/cli/api/config.py +0 -0
  60. {omnata_plugin_devkit-0.10.16a110 → omnata_plugin_devkit-0.10.17}/src/omnata_plugin_devkit/snowcli/cli/api/constants.py +0 -0
  61. {omnata_plugin_devkit-0.10.16a110 → omnata_plugin_devkit-0.10.17}/src/omnata_plugin_devkit/snowcli/cli/api/exceptions.py +0 -0
  62. {omnata_plugin_devkit-0.10.16a110 → omnata_plugin_devkit-0.10.17}/src/omnata_plugin_devkit/snowcli/cli/api/secure_path.py +0 -0
  63. {omnata_plugin_devkit-0.10.16a110 → omnata_plugin_devkit-0.10.17}/src/omnata_plugin_devkit/snowcli/cli/api/secure_utils.py +0 -0
  64. {omnata_plugin_devkit-0.10.16a110 → omnata_plugin_devkit-0.10.17}/src/omnata_plugin_devkit/snowcli/cli/api/utils/__init__.py +0 -0
  65. {omnata_plugin_devkit-0.10.16a110 → omnata_plugin_devkit-0.10.17}/src/omnata_plugin_devkit/snowcli/cli/api/utils/types.py +0 -0
  66. {omnata_plugin_devkit-0.10.16a110 → omnata_plugin_devkit-0.10.17}/src/omnata_plugin_devkit/snowcli/cli/app/__init__.py +0 -0
  67. {omnata_plugin_devkit-0.10.16a110 → omnata_plugin_devkit-0.10.17}/src/omnata_plugin_devkit/snowcli/cli/app/snow_connector.py +0 -0
  68. {omnata_plugin_devkit-0.10.16a110 → omnata_plugin_devkit-0.10.17}/src/omnata_plugin_devkit/snowcli/cli/plugins/__init__.py +0 -0
  69. {omnata_plugin_devkit-0.10.16a110 → omnata_plugin_devkit-0.10.17}/src/omnata_plugin_devkit/snowcli/cli/plugins/snowpark/__init__.py +0 -0
  70. {omnata_plugin_devkit-0.10.16a110 → omnata_plugin_devkit-0.10.17}/src/omnata_plugin_devkit/snowcli/cli/plugins/snowpark/models.py +0 -0
  71. {omnata_plugin_devkit-0.10.16a110 → omnata_plugin_devkit-0.10.17}/src/omnata_plugin_devkit/snowcli/cli/plugins/snowpark/package/__init__.py +0 -0
  72. {omnata_plugin_devkit-0.10.16a110 → omnata_plugin_devkit-0.10.17}/src/omnata_plugin_devkit/snowcli/cli/plugins/snowpark/package_utils.py +0 -0
  73. {omnata_plugin_devkit-0.10.16a110 → omnata_plugin_devkit-0.10.17}/src/omnata_plugin_devkit/snowcli/cli/plugins/snowpark/snowpark_shared.py +0 -0
  74. {omnata_plugin_devkit-0.10.16a110 → omnata_plugin_devkit-0.10.17}/src/omnata_plugin_devkit/snowcli/cli/plugins/snowpark/venv.py +0 -0
  75. {omnata_plugin_devkit-0.10.16a110 → omnata_plugin_devkit-0.10.17}/src/omnata_plugin_devkit/snowcli/cli/plugins/snowpark/zipper.py +0 -0
  76. {omnata_plugin_devkit-0.10.16a110 → omnata_plugin_devkit-0.10.17}/src/omnata_plugin_devkit/snowcli/cli/templates/environment.yml.jinja +0 -0
  77. {omnata_plugin_devkit-0.10.16a110 → omnata_plugin_devkit-0.10.17}/src/omnata_plugin_devkit/streamlit/plugin_configuration.py +0 -0
  78. {omnata_plugin_devkit-0.10.16a110 → omnata_plugin_devkit-0.10.17}/src/omnata_plugin_devkit/test_step_definitions.py +0 -0
  79. {omnata_plugin_devkit-0.10.16a110 → omnata_plugin_devkit-0.10.17}/src/omnata_plugin_devkit/utils.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: omnata-plugin-devkit
3
- Version: 0.10.16a110
3
+ Version: 0.10.17
4
4
  Summary:
5
5
  Author: James Weakley
6
6
  Author-email: james.weakley@omnata.com
@@ -1,6 +1,6 @@
1
1
  [tool.poetry]
2
2
  name = "omnata-plugin-devkit"
3
- version = "0.10.16-a110"
3
+ version = "0.10.17"
4
4
  description = ""
5
5
  authors = ["James Weakley <james.weakley@omnata.com>"]
6
6
  readme = "README.md"
@@ -0,0 +1,26 @@
1
+ CREATE or replace PROCEDURE PLUGIN.FETCH_CONNECTIONS()
2
+ RETURNS TABLE()
3
+ LANGUAGE SQL
4
+ as
5
+ DECLARE
6
+
7
+ CONNECTIONS resultset;
8
+ SYNC_ENGINE_DATABASE_NAME varchar;
9
+ PROC_NAME varchar;
10
+ PLUGIN_REGISTRATION_EXCEPTION EXCEPTION (-20001, 'Plugin is not registered to a sync engine instance');
11
+ c1 CURSOR FOR select min(APPLICATION_NAME) from DATA.OMNATA_REGISTRATION;
12
+ BEGIN
13
+
14
+ OPEN c1;
15
+ FETCH c1 INTO SYNC_ENGINE_DATABASE_NAME;
16
+ IF (:SYNC_ENGINE_DATABASE_NAME = null) THEN
17
+ RAISE PLUGIN_REGISTRATION_EXCEPTION;
18
+ END IF;
19
+
20
+ select CONCAT(:SYNC_ENGINE_DATABASE_NAME,'.API.PLUGIN_FETCH_CONNECTIONS') into :PROC_NAME;
21
+
22
+ CONNECTIONS:= (call IDENTIFIER(:PROC_NAME)(current_database(),PLUGIN.TOKEN()));
23
+
24
+ RETURN TABLE(CONNECTIONS);
25
+
26
+ END;
@@ -0,0 +1,26 @@
1
+ CREATE or replace PROCEDURE PLUGIN.FETCH_SYNCS(CONNECTION_ID NUMERIC(38,0) DEFAULT NULL)
2
+ RETURNS TABLE()
3
+ LANGUAGE SQL
4
+ as
5
+ DECLARE
6
+
7
+ SYNCS resultset;
8
+ SYNC_ENGINE_DATABASE_NAME varchar;
9
+ PROC_NAME varchar;
10
+ PLUGIN_REGISTRATION_EXCEPTION EXCEPTION (-20001, 'Plugin is not registered to a sync engine instance');
11
+ c1 CURSOR FOR select min(APPLICATION_NAME) from DATA.OMNATA_REGISTRATION;
12
+ BEGIN
13
+
14
+ OPEN c1;
15
+ FETCH c1 INTO SYNC_ENGINE_DATABASE_NAME;
16
+ IF (:SYNC_ENGINE_DATABASE_NAME = null) THEN
17
+ RAISE PLUGIN_REGISTRATION_EXCEPTION;
18
+ END IF;
19
+
20
+ select CONCAT(:SYNC_ENGINE_DATABASE_NAME,'.API.PLUGIN_FETCH_SYNCS') into :PROC_NAME;
21
+
22
+ SYNCS:= (call IDENTIFIER(:PROC_NAME)(current_database(),PLUGIN.TOKEN(),:CONNECTION_ID));
23
+
24
+ RETURN TABLE(SYNCS);
25
+
26
+ END;
@@ -0,0 +1,26 @@
1
+ CREATE or replace PROCEDURE PLUGIN.FETCH_SYNC_BRANCHES(SYNC_ID numeric)
2
+ RETURNS TABLE()
3
+ LANGUAGE SQL
4
+ as
5
+ DECLARE
6
+
7
+ SYNC_BRANCHES resultset;
8
+ SYNC_ENGINE_DATABASE_NAME varchar;
9
+ PROC_NAME varchar;
10
+ PLUGIN_REGISTRATION_EXCEPTION EXCEPTION (-20001, 'Plugin is not registered to a sync engine instance');
11
+ c1 CURSOR FOR select min(APPLICATION_NAME) from DATA.OMNATA_REGISTRATION;
12
+ BEGIN
13
+
14
+ OPEN c1;
15
+ FETCH c1 INTO SYNC_ENGINE_DATABASE_NAME;
16
+ IF (:SYNC_ENGINE_DATABASE_NAME = null) THEN
17
+ RAISE PLUGIN_REGISTRATION_EXCEPTION;
18
+ END IF;
19
+
20
+ select CONCAT(:SYNC_ENGINE_DATABASE_NAME,'.API.PLUGIN_FETCH_SYNC_BRANCHES') into :PROC_NAME;
21
+
22
+ SYNC_BRANCHES:= (call IDENTIFIER(:PROC_NAME)(current_database(),PLUGIN.TOKEN(),:SYNC_ID));
23
+
24
+ RETURN TABLE(SYNC_BRANCHES);
25
+
26
+ END;
@@ -25,8 +25,3 @@ configuration:
25
25
  - type: DEBUG_LOGS
26
26
  sharing: OPTIONAL
27
27
 
28
- privileges:
29
- - CREATE EXTERNAL ACCESS INTEGRATION:
30
- description: "To connect to external application endpoints, as configured by the user (required)"
31
- - CREATE SECURITY INTEGRATION:
32
- description: "To create OAuth integration, as configured by the user (optional, only required if OAuth connectivity is needed)"
@@ -469,12 +469,13 @@ class PluginUploader:
469
469
  "CONFIGURE_APIS",
470
470
  "UPDATE_API_CONFIGURATION",
471
471
  "PENDING_API_CONFIGURATION",
472
+ "FETCH_CONNECTIONS",
473
+ "FETCH_SYNCS",
474
+ "FETCH_SYNC_BRANCHES",
472
475
  "TEST_CALLBACK",
473
476
  "LIST_STAGES",
474
- "CREATE_EXTERNAL_ACCESS_INTEGRATION",
475
477
  "CREATE_GENERIC_SECRET_OBJECT",
476
478
  "CREATE_GENERIC_SECRET_OBJECT_FROM_EXISTING",
477
- "DROP_EXTERNAL_ACCESS_OBJECTS",
478
479
  "UPDATE_GENERIC_SECRET_OBJECT_OLD",
479
480
  "CREATE_OAUTH_SECRET_OBJECT",
480
481
  "CREATE_NETWORK_RULE_OBJECT",
@@ -576,9 +577,14 @@ $${}$$;
576
577
  os.chdir(direct_imports_path)
577
578
  # upload all files in the directory to the stage
578
579
  for path in sorted(Path(".").rglob("*")):
579
- print(f"Uploading {path} to stage")
580
+ # don't try to upload directories, only files
581
+ if path.is_dir():
582
+ continue
583
+ # figure out the path
584
+ relative_path = str(f"/{path.parent}") if path.parent != Path(".") else ""
585
+ print(f"Uploading {path} to stage under {relative_path}")
580
586
  self.session.sql(
581
- f"put file://{path} @{database_name}.{schema_name}.{stage_name} AUTO_COMPRESS=FALSE OVERWRITE=TRUE"
587
+ f"put file://{path} @{database_name}.{schema_name}.{stage_name}{relative_path} AUTO_COMPRESS=FALSE OVERWRITE=TRUE"
582
588
  ).collect()
583
589
  os.chdir(cwd)
584
590
 
@@ -676,13 +682,13 @@ GRANT USAGE ON FUNCTION PLUGIN.TOKEN() TO application role OMNATA_MANAGEMENT;
676
682
  }
677
683
  )
678
684
  manifest_file.write(content)
679
- custom_manifest_privileges = os.path.join(plugin_directory, "custom_manifest_privileges.yml")
685
+ custom_manifest_privileges = os.path.join(plugin_directory, "custom_manifest_section.yml")
680
686
  if os.path.exists(custom_manifest_privileges):
681
- print("Adding manifest privileges from custom_manifest_privileges.yml")
687
+ print("Adding manifest privileges from custom_manifest_section.yml")
682
688
  with open(
683
689
  custom_manifest_privileges, "r", encoding="utf-8"
684
690
  ) as custom_manifest_privileges_stream:
685
- setup_script.write(custom_manifest_privileges_stream.read() + "\n")
691
+ manifest_file.write(custom_manifest_privileges_stream.read() + "\n")
686
692
 
687
693
 
688
694
  print("Uploading app manifest to stage")
@@ -1,52 +0,0 @@
1
- create or replace procedure PLUGIN.CREATE_EXTERNAL_ACCESS_INTEGRATION(
2
- EAI_NAME varchar,
3
- SECRET_NAMES ARRAY,
4
- NETWORK_RULE_NAMES ARRAY)
5
- returns object
6
- language javascript
7
- COMMENT = $$
8
- Creates an external access integration, bound to the provided secret(s) and network rule(s)
9
- $$
10
- execute as owner
11
- as
12
- $$
13
- try{
14
- if (SECRET_NAMES === null || SECRET_NAMES === undefined || SECRET_NAMES.length==0){
15
- throw new Error('Secret names parameter must contain at least one secret');
16
- }
17
- if (NETWORK_RULE_NAMES === null || NETWORK_RULE_NAMES === undefined || NETWORK_RULE_NAMES.length==0){
18
- throw new Error('Network rule names parameter must contain at least one secret');
19
- }
20
- var bindings = [EAI_NAME];
21
- const secretNamesClauses = SECRET_NAMES.map((s)=>{return `'${s}'`}).join(',');
22
- const networkRuleNamesClauses = NETWORK_RULE_NAMES.map((n)=>{return `'${n}'`}).join(',');
23
- snowflake.createStatement( {
24
- sqlText: `CREATE OR REPLACE EXTERNAL ACCESS INTEGRATION IDENTIFIER(?)
25
- ALLOWED_NETWORK_RULES = (${networkRuleNamesClauses})
26
- ALLOWED_AUTHENTICATION_SECRETS = (${secretNamesClauses})
27
- ENABLED = true`,
28
- binds:bindings
29
- } ).execute();
30
- snowflake.createStatement( {
31
- sqlText: `GRANT USAGE ON INTEGRATION IDENTIFIER(?) TO APPLICATION ROLE OMNATA_MANAGEMENT`,
32
- binds:[EAI_NAME]
33
- } ).execute();
34
- return {
35
- "success": true,
36
- "data": null
37
- }
38
- }
39
- catch(e){
40
- if (String(e).indexOf('Insufficient privileges to operate on account') > -1){
41
- e = 'You must grant the plugin application the CREATE EXTERNAL ACCESS INTEGRATION privilege in order to proceed';
42
- }
43
- return {
44
- "success": false,
45
- "error": `CREATE_EXTERNAL_ACCESS_INTEGRATION: ${String(e)}`
46
- }
47
- }
48
- $$
49
- ;
50
-
51
- grant usage on procedure PLUGIN.CREATE_EXTERNAL_ACCESS_INTEGRATION(VARCHAR,ARRAY,ARRAY)
52
- to application role OMNATA_MANAGEMENT;
@@ -1,82 +0,0 @@
1
- create or replace procedure PLUGIN.DROP_EXTERNAL_ACCESS_OBJECTS(
2
- EAI_NAME varchar,
3
- SECRET_NAMES ARRAY,
4
- NETWORK_RULE_NAMES ARRAY)
5
- returns object
6
- language javascript
7
- COMMENT = $$
8
- Drops an external access integration, and associated secrets/network rules.
9
- Due to Snowflake privilege model changes over time, this is an opportunistic deletion.
10
- Instead of erroring it will create event log
11
- errors and provide successflags back to the caller.
12
- $$
13
- execute as owner
14
- as
15
- $$
16
- try{
17
- var droppedEai = false;
18
- try{
19
- snowflake.createStatement( {
20
- sqlText: `DROP EXTERNAL ACCESS INTEGRATION IDENTIFIER(?)`,
21
- binds:[EAI_NAME]
22
- } ).execute();
23
- droppedEai = true;
24
- }
25
- catch(e){
26
- snowflake.log("error", e.message);
27
- }
28
-
29
- var droppedSecrets = false;
30
- try{
31
- if (SECRET_NAMES !== null && SECRET_NAMES !== undefined && SECRET_NAMES.length > 0){
32
- for (let i = 0; i < SECRET_NAMES.length; i++) {
33
- const secretName = SECRET_NAMES[i];
34
- snowflake.createStatement( {
35
- sqlText: `DROP SECRET IDENTIFIER(?)`,
36
- binds:[secretName]
37
- } ).execute();
38
- }
39
- droppedSecrets = true;
40
- }
41
- }
42
- catch(e){
43
- snowflake.log("error", e.message);
44
- }
45
-
46
- var droppedNetworkRules=false;
47
- try{
48
- if (NETWORK_RULE_NAMES !== null && NETWORK_RULE_NAMES !== undefined && NETWORK_RULE_NAMES.length > 0){
49
- for (let i = 0; i < NETWORK_RULE_NAMES.length; i++) {
50
- const ruleName = NETWORK_RULE_NAMES[i];
51
- snowflake.createStatement( {
52
- sqlText: `DROP NETWORK RULE IDENTIFIER(?)`,
53
- binds:[ruleName]
54
- } ).execute();
55
- }
56
- droppedNetworkRules = true;
57
- }
58
- }
59
- catch(e){
60
- snowflake.log("error", e.message);
61
- }
62
-
63
- return {
64
- "success": true,
65
- "data": {
66
- "droppedEai":droppedEai,
67
- "droppedSecrets":droppedSecrets,
68
- "droppedNetworkRules": droppedNetworkRules
69
- }
70
- }
71
- }
72
- catch(e){
73
- return {
74
- "success": false,
75
- "error": `DROP_EXTERNAL_ACCESS_OBJECTS: ${String(e)}`
76
- }
77
- }
78
- $$
79
- ;
80
-
81
- grant usage on procedure PLUGIN.DROP_EXTERNAL_ACCESS_OBJECTS(VARCHAR,ARRAY,ARRAY)
82
- to application role OMNATA_MANAGEMENT;