pulumi-snowflake 0.50.3a1710160126__py3-none-any.whl → 1.2.0a1736849992__py3-none-any.whl

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.

Potentially problematic release.


This version of pulumi-snowflake might be problematic. Click here for more details.

Files changed (182) hide show
  1. pulumi_snowflake/__init__.py +224 -172
  2. pulumi_snowflake/_inputs.py +52857 -1665
  3. pulumi_snowflake/_utilities.py +41 -5
  4. pulumi_snowflake/account.py +188 -218
  5. pulumi_snowflake/account_authentication_policy_attachment.py +149 -0
  6. pulumi_snowflake/account_parameter.py +21 -48
  7. pulumi_snowflake/account_password_policy_attachment.py +7 -32
  8. pulumi_snowflake/account_role.py +250 -0
  9. pulumi_snowflake/alert.py +38 -47
  10. pulumi_snowflake/api_authentication_integration_with_authorization_code_grant.py +704 -0
  11. pulumi_snowflake/api_authentication_integration_with_client_credentials.py +657 -0
  12. pulumi_snowflake/api_authentication_integration_with_jwt_bearer.py +692 -0
  13. pulumi_snowflake/api_integration.py +33 -52
  14. pulumi_snowflake/authentication_policy.py +622 -0
  15. pulumi_snowflake/config/__init__.pyi +76 -99
  16. pulumi_snowflake/config/outputs.py +5 -0
  17. pulumi_snowflake/config/vars.py +93 -124
  18. pulumi_snowflake/cortex_search_service.py +596 -0
  19. pulumi_snowflake/database.py +819 -213
  20. pulumi_snowflake/database_role.py +81 -44
  21. pulumi_snowflake/dynamic_table.py +42 -49
  22. pulumi_snowflake/email_notification_integration.py +33 -28
  23. pulumi_snowflake/{unsafe_execute.py → execute.py} +36 -39
  24. pulumi_snowflake/external_function.py +54 -75
  25. pulumi_snowflake/external_oauth_integration.py +593 -542
  26. pulumi_snowflake/external_table.py +67 -90
  27. pulumi_snowflake/external_volume.py +382 -0
  28. pulumi_snowflake/failover_group.py +57 -98
  29. pulumi_snowflake/file_format.py +33 -28
  30. pulumi_snowflake/function_java.py +1211 -0
  31. pulumi_snowflake/function_javascript.py +882 -0
  32. pulumi_snowflake/function_python.py +1212 -0
  33. pulumi_snowflake/function_scala.py +1212 -0
  34. pulumi_snowflake/function_sql.py +835 -0
  35. pulumi_snowflake/get_account_roles.py +129 -0
  36. pulumi_snowflake/get_accounts.py +53 -22
  37. pulumi_snowflake/get_alerts.py +22 -9
  38. pulumi_snowflake/get_connections.py +109 -0
  39. pulumi_snowflake/get_cortex_search_services.py +216 -0
  40. pulumi_snowflake/get_current_account.py +24 -13
  41. pulumi_snowflake/get_current_role.py +14 -7
  42. pulumi_snowflake/get_database.py +25 -9
  43. pulumi_snowflake/get_database_role.py +162 -0
  44. pulumi_snowflake/get_database_roles.py +79 -47
  45. pulumi_snowflake/get_databases.py +91 -73
  46. pulumi_snowflake/get_dynamic_tables.py +36 -19
  47. pulumi_snowflake/get_external_functions.py +28 -9
  48. pulumi_snowflake/get_external_tables.py +28 -9
  49. pulumi_snowflake/get_failover_groups.py +18 -7
  50. pulumi_snowflake/get_file_formats.py +28 -9
  51. pulumi_snowflake/get_functions.py +28 -9
  52. pulumi_snowflake/get_grants.py +207 -84
  53. pulumi_snowflake/get_masking_policies.py +91 -51
  54. pulumi_snowflake/get_materialized_views.py +28 -9
  55. pulumi_snowflake/get_network_policies.py +129 -0
  56. pulumi_snowflake/get_parameters.py +38 -15
  57. pulumi_snowflake/get_pipes.py +28 -9
  58. pulumi_snowflake/get_procedures.py +28 -9
  59. pulumi_snowflake/get_resource_monitors.py +37 -24
  60. pulumi_snowflake/get_row_access_policies.py +91 -51
  61. pulumi_snowflake/get_schemas.py +145 -41
  62. pulumi_snowflake/get_secrets.py +200 -0
  63. pulumi_snowflake/get_security_integrations.py +129 -0
  64. pulumi_snowflake/get_sequences.py +28 -9
  65. pulumi_snowflake/get_shares.py +18 -9
  66. pulumi_snowflake/get_stages.py +28 -9
  67. pulumi_snowflake/get_storage_integrations.py +16 -9
  68. pulumi_snowflake/get_streamlits.py +170 -0
  69. pulumi_snowflake/get_streams.py +114 -54
  70. pulumi_snowflake/get_system_generate_scim_access_token.py +18 -9
  71. pulumi_snowflake/get_system_get_aws_sns_iam_policy.py +32 -7
  72. pulumi_snowflake/get_system_get_private_link_config.py +120 -5
  73. pulumi_snowflake/get_system_get_snowflake_platform_info.py +15 -7
  74. pulumi_snowflake/get_tables.py +28 -9
  75. pulumi_snowflake/get_tags.py +130 -0
  76. pulumi_snowflake/get_tasks.py +134 -54
  77. pulumi_snowflake/get_users.py +116 -44
  78. pulumi_snowflake/get_views.py +114 -54
  79. pulumi_snowflake/get_warehouses.py +79 -26
  80. pulumi_snowflake/grant_account_role.py +28 -75
  81. pulumi_snowflake/grant_application_role.py +257 -0
  82. pulumi_snowflake/grant_database_role.py +35 -94
  83. pulumi_snowflake/grant_ownership.py +382 -0
  84. pulumi_snowflake/grant_privileges_to_account_role.py +42 -78
  85. pulumi_snowflake/grant_privileges_to_database_role.py +37 -383
  86. pulumi_snowflake/grant_privileges_to_share.py +96 -44
  87. pulumi_snowflake/legacy_service_user.py +3670 -0
  88. pulumi_snowflake/managed_account.py +40 -11
  89. pulumi_snowflake/masking_policy.py +213 -310
  90. pulumi_snowflake/materialized_view.py +62 -71
  91. pulumi_snowflake/network_policy.py +217 -61
  92. pulumi_snowflake/network_policy_attachment.py +5 -34
  93. pulumi_snowflake/network_rule.py +473 -0
  94. pulumi_snowflake/notification_integration.py +49 -84
  95. pulumi_snowflake/oauth_integration_for_custom_clients.py +906 -0
  96. pulumi_snowflake/{oauth_integration.py → oauth_integration_for_partner_applications.py} +191 -192
  97. pulumi_snowflake/object_parameter.py +10 -101
  98. pulumi_snowflake/outputs.py +49200 -2928
  99. pulumi_snowflake/password_policy.py +41 -28
  100. pulumi_snowflake/pipe.py +33 -4
  101. pulumi_snowflake/primary_connection.py +330 -0
  102. pulumi_snowflake/procedure_java.py +1273 -0
  103. pulumi_snowflake/procedure_javascript.py +895 -0
  104. pulumi_snowflake/procedure_python.py +1226 -0
  105. pulumi_snowflake/procedure_scala.py +1273 -0
  106. pulumi_snowflake/procedure_sql.py +895 -0
  107. pulumi_snowflake/provider.py +378 -613
  108. pulumi_snowflake/pulumi-plugin.json +2 -1
  109. pulumi_snowflake/resource_monitor.py +118 -327
  110. pulumi_snowflake/row_access_policy.py +200 -149
  111. pulumi_snowflake/{saml_integration.py → saml2_integration.py} +356 -299
  112. pulumi_snowflake/schema.py +949 -178
  113. pulumi_snowflake/scim_integration.py +286 -109
  114. pulumi_snowflake/secondary_connection.py +339 -0
  115. pulumi_snowflake/secondary_database.py +1080 -0
  116. pulumi_snowflake/secret_with_authorization_code_grant.py +548 -0
  117. pulumi_snowflake/secret_with_basic_authentication.py +500 -0
  118. pulumi_snowflake/secret_with_client_credentials.py +511 -0
  119. pulumi_snowflake/secret_with_generic_string.py +452 -0
  120. pulumi_snowflake/sequence.py +9 -34
  121. pulumi_snowflake/service_user.py +3585 -0
  122. pulumi_snowflake/share.py +33 -28
  123. pulumi_snowflake/shared_database.py +939 -0
  124. pulumi_snowflake/stage.py +95 -84
  125. pulumi_snowflake/storage_integration.py +46 -4
  126. pulumi_snowflake/stream_on_directory_table.py +517 -0
  127. pulumi_snowflake/stream_on_external_table.py +632 -0
  128. pulumi_snowflake/stream_on_table.py +666 -0
  129. pulumi_snowflake/stream_on_view.py +666 -0
  130. pulumi_snowflake/streamlit.py +671 -0
  131. pulumi_snowflake/table.py +86 -97
  132. pulumi_snowflake/table_column_masking_policy_application.py +7 -14
  133. pulumi_snowflake/table_constraint.py +29 -172
  134. pulumi_snowflake/tag.py +142 -74
  135. pulumi_snowflake/tag_association.py +40 -215
  136. pulumi_snowflake/task.py +3048 -418
  137. pulumi_snowflake/user.py +3351 -384
  138. pulumi_snowflake/user_authentication_policy_attachment.py +197 -0
  139. pulumi_snowflake/user_password_policy_attachment.py +5 -4
  140. pulumi_snowflake/user_public_keys.py +5 -0
  141. pulumi_snowflake/view.py +466 -215
  142. pulumi_snowflake/warehouse.py +184 -168
  143. {pulumi_snowflake-0.50.3a1710160126.dist-info → pulumi_snowflake-1.2.0a1736849992.dist-info}/METADATA +7 -6
  144. pulumi_snowflake-1.2.0a1736849992.dist-info/RECORD +148 -0
  145. {pulumi_snowflake-0.50.3a1710160126.dist-info → pulumi_snowflake-1.2.0a1736849992.dist-info}/WHEEL +1 -1
  146. pulumi_snowflake/account_grant.py +0 -343
  147. pulumi_snowflake/database_grant.py +0 -495
  148. pulumi_snowflake/external_table_grant.py +0 -690
  149. pulumi_snowflake/failover_group_grant.py +0 -388
  150. pulumi_snowflake/file_format_grant.py +0 -635
  151. pulumi_snowflake/function.py +0 -872
  152. pulumi_snowflake/function_grant.py +0 -745
  153. pulumi_snowflake/get_role.py +0 -121
  154. pulumi_snowflake/get_roles.py +0 -120
  155. pulumi_snowflake/grant_privileges_to_role.py +0 -825
  156. pulumi_snowflake/integration_grant.py +0 -440
  157. pulumi_snowflake/masking_policy_grant.py +0 -542
  158. pulumi_snowflake/materialized_view_grant.py +0 -689
  159. pulumi_snowflake/pipe_grant.py +0 -587
  160. pulumi_snowflake/procedure.py +0 -887
  161. pulumi_snowflake/procedure_grant.py +0 -745
  162. pulumi_snowflake/resource_monitor_grant.py +0 -387
  163. pulumi_snowflake/role.py +0 -273
  164. pulumi_snowflake/role_grants.py +0 -352
  165. pulumi_snowflake/role_ownership_grant.py +0 -338
  166. pulumi_snowflake/row_access_policy_grant.py +0 -540
  167. pulumi_snowflake/schema_grant.py +0 -647
  168. pulumi_snowflake/sequence_grant.py +0 -635
  169. pulumi_snowflake/session_parameter.py +0 -332
  170. pulumi_snowflake/stage_grant.py +0 -635
  171. pulumi_snowflake/stream.py +0 -614
  172. pulumi_snowflake/stream_grant.py +0 -635
  173. pulumi_snowflake/table_grant.py +0 -677
  174. pulumi_snowflake/tag_grant.py +0 -532
  175. pulumi_snowflake/tag_masking_policy_association.py +0 -210
  176. pulumi_snowflake/task_grant.py +0 -635
  177. pulumi_snowflake/user_grant.py +0 -394
  178. pulumi_snowflake/user_ownership_grant.py +0 -286
  179. pulumi_snowflake/view_grant.py +0 -705
  180. pulumi_snowflake/warehouse_grant.py +0 -440
  181. pulumi_snowflake-0.50.3a1710160126.dist-info/RECORD +0 -136
  182. {pulumi_snowflake-0.50.3a1710160126.dist-info → pulumi_snowflake-1.2.0a1736849992.dist-info}/top_level.txt +0 -0
@@ -4,9 +4,14 @@
4
4
 
5
5
  import copy
6
6
  import warnings
7
+ import sys
7
8
  import pulumi
8
9
  import pulumi.runtime
9
10
  from typing import Any, Mapping, Optional, Sequence, Union, overload
11
+ if sys.version_info >= (3, 11):
12
+ from typing import NotRequired, TypedDict, TypeAlias
13
+ else:
14
+ from typing_extensions import NotRequired, TypedDict, TypeAlias
10
15
  from . import _utilities
11
16
  from . import outputs
12
17
  from ._inputs import *
@@ -16,74 +21,78 @@ __all__ = ['MaskingPolicyArgs', 'MaskingPolicy']
16
21
  @pulumi.input_type
17
22
  class MaskingPolicyArgs:
18
23
  def __init__(__self__, *,
24
+ arguments: pulumi.Input[Sequence[pulumi.Input['MaskingPolicyArgumentArgs']]],
25
+ body: pulumi.Input[str],
19
26
  database: pulumi.Input[str],
20
- masking_expression: pulumi.Input[str],
21
27
  return_data_type: pulumi.Input[str],
22
28
  schema: pulumi.Input[str],
23
- signature: pulumi.Input['MaskingPolicySignatureArgs'],
24
29
  comment: Optional[pulumi.Input[str]] = None,
25
- exempt_other_policies: Optional[pulumi.Input[bool]] = None,
26
- if_not_exists: Optional[pulumi.Input[bool]] = None,
27
- name: Optional[pulumi.Input[str]] = None,
28
- or_replace: Optional[pulumi.Input[bool]] = None):
30
+ exempt_other_policies: Optional[pulumi.Input[str]] = None,
31
+ name: Optional[pulumi.Input[str]] = None):
29
32
  """
30
33
  The set of arguments for constructing a MaskingPolicy resource.
31
- :param pulumi.Input[str] database: The database in which to create the masking policy.
32
- :param pulumi.Input[str] masking_expression: Specifies the SQL expression that transforms the data.
33
- :param pulumi.Input[str] return_data_type: Specifies the data type to return.
34
- :param pulumi.Input[str] schema: The schema in which to create the masking policy.
35
- :param pulumi.Input['MaskingPolicySignatureArgs'] signature: The signature for the masking policy; specifies the input columns and data types to evaluate at query runtime.
34
+ :param pulumi.Input[Sequence[pulumi.Input['MaskingPolicyArgumentArgs']]] arguments: List of the arguments for the masking policy. The first column and its data type always indicate the column data type values to mask or tokenize in the subsequent policy conditions. Note that you can not specify a virtual column as the first column argument in a conditional masking policy.
35
+ :param pulumi.Input[str] body: Specifies the SQL expression that transforms the data. To mitigate permadiff on this field, the provider replaces blank characters with a space. This can lead to false positives in cases where a change in case or run of whitespace is semantically significant.
36
+ :param pulumi.Input[str] database: The database in which to create the masking policy. Due to technical limitations (read more here), avoid using the following characters: `|`, `.`, `"`.
37
+ :param pulumi.Input[str] return_data_type: The return data type must match the input data type of the first column that is specified as an input column. For more information about data types, check [Snowflake docs](https://docs.snowflake.com/en/sql-reference/intro-summary-data-types).
38
+ :param pulumi.Input[str] schema: The schema in which to create the masking policy. Due to technical limitations (read more here), avoid using the following characters: `|`, `.`, `"`.
36
39
  :param pulumi.Input[str] comment: Specifies a comment for the masking policy.
37
- :param pulumi.Input[bool] exempt_other_policies: Specifies whether the row access policy or conditional masking policy can reference a column that is already protected by a masking policy.
38
- :param pulumi.Input[bool] if_not_exists: Prevent overwriting a previous masking policy with the same name.
39
- :param pulumi.Input[str] name: Specifies the column name to mask.
40
- :param pulumi.Input[bool] or_replace: Whether to override a previous masking policy with the same name.
40
+ :param pulumi.Input[str] exempt_other_policies: Specifies whether the row access policy or conditional masking policy can reference a column that is already protected by a masking policy. Due to Snowflake limitations, when value is chenged, the resource is recreated. Available options are: "true" or "false". When the value is not set in the configuration the provider will put "default" there which means to use the Snowflake default for this value.
41
+ :param pulumi.Input[str] name: Specifies the identifier for the masking policy; must be unique for the database and schema in which the masking policy is created. Due to technical limitations (read more here), avoid using the following characters: `|`, `.`, `"`.
41
42
  """
43
+ pulumi.set(__self__, "arguments", arguments)
44
+ pulumi.set(__self__, "body", body)
42
45
  pulumi.set(__self__, "database", database)
43
- pulumi.set(__self__, "masking_expression", masking_expression)
44
46
  pulumi.set(__self__, "return_data_type", return_data_type)
45
47
  pulumi.set(__self__, "schema", schema)
46
- pulumi.set(__self__, "signature", signature)
47
48
  if comment is not None:
48
49
  pulumi.set(__self__, "comment", comment)
49
50
  if exempt_other_policies is not None:
50
51
  pulumi.set(__self__, "exempt_other_policies", exempt_other_policies)
51
- if if_not_exists is not None:
52
- pulumi.set(__self__, "if_not_exists", if_not_exists)
53
52
  if name is not None:
54
53
  pulumi.set(__self__, "name", name)
55
- if or_replace is not None:
56
- pulumi.set(__self__, "or_replace", or_replace)
57
54
 
58
55
  @property
59
56
  @pulumi.getter
60
- def database(self) -> pulumi.Input[str]:
57
+ def arguments(self) -> pulumi.Input[Sequence[pulumi.Input['MaskingPolicyArgumentArgs']]]:
61
58
  """
62
- The database in which to create the masking policy.
59
+ List of the arguments for the masking policy. The first column and its data type always indicate the column data type values to mask or tokenize in the subsequent policy conditions. Note that you can not specify a virtual column as the first column argument in a conditional masking policy.
63
60
  """
64
- return pulumi.get(self, "database")
61
+ return pulumi.get(self, "arguments")
65
62
 
66
- @database.setter
67
- def database(self, value: pulumi.Input[str]):
68
- pulumi.set(self, "database", value)
63
+ @arguments.setter
64
+ def arguments(self, value: pulumi.Input[Sequence[pulumi.Input['MaskingPolicyArgumentArgs']]]):
65
+ pulumi.set(self, "arguments", value)
66
+
67
+ @property
68
+ @pulumi.getter
69
+ def body(self) -> pulumi.Input[str]:
70
+ """
71
+ Specifies the SQL expression that transforms the data. To mitigate permadiff on this field, the provider replaces blank characters with a space. This can lead to false positives in cases where a change in case or run of whitespace is semantically significant.
72
+ """
73
+ return pulumi.get(self, "body")
74
+
75
+ @body.setter
76
+ def body(self, value: pulumi.Input[str]):
77
+ pulumi.set(self, "body", value)
69
78
 
70
79
  @property
71
- @pulumi.getter(name="maskingExpression")
72
- def masking_expression(self) -> pulumi.Input[str]:
80
+ @pulumi.getter
81
+ def database(self) -> pulumi.Input[str]:
73
82
  """
74
- Specifies the SQL expression that transforms the data.
83
+ The database in which to create the masking policy. Due to technical limitations (read more here), avoid using the following characters: `|`, `.`, `"`.
75
84
  """
76
- return pulumi.get(self, "masking_expression")
85
+ return pulumi.get(self, "database")
77
86
 
78
- @masking_expression.setter
79
- def masking_expression(self, value: pulumi.Input[str]):
80
- pulumi.set(self, "masking_expression", value)
87
+ @database.setter
88
+ def database(self, value: pulumi.Input[str]):
89
+ pulumi.set(self, "database", value)
81
90
 
82
91
  @property
83
92
  @pulumi.getter(name="returnDataType")
84
93
  def return_data_type(self) -> pulumi.Input[str]:
85
94
  """
86
- Specifies the data type to return.
95
+ The return data type must match the input data type of the first column that is specified as an input column. For more information about data types, check [Snowflake docs](https://docs.snowflake.com/en/sql-reference/intro-summary-data-types).
87
96
  """
88
97
  return pulumi.get(self, "return_data_type")
89
98
 
@@ -95,7 +104,7 @@ class MaskingPolicyArgs:
95
104
  @pulumi.getter
96
105
  def schema(self) -> pulumi.Input[str]:
97
106
  """
98
- The schema in which to create the masking policy.
107
+ The schema in which to create the masking policy. Due to technical limitations (read more here), avoid using the following characters: `|`, `.`, `"`.
99
108
  """
100
109
  return pulumi.get(self, "schema")
101
110
 
@@ -103,18 +112,6 @@ class MaskingPolicyArgs:
103
112
  def schema(self, value: pulumi.Input[str]):
104
113
  pulumi.set(self, "schema", value)
105
114
 
106
- @property
107
- @pulumi.getter
108
- def signature(self) -> pulumi.Input['MaskingPolicySignatureArgs']:
109
- """
110
- The signature for the masking policy; specifies the input columns and data types to evaluate at query runtime.
111
- """
112
- return pulumi.get(self, "signature")
113
-
114
- @signature.setter
115
- def signature(self, value: pulumi.Input['MaskingPolicySignatureArgs']):
116
- pulumi.set(self, "signature", value)
117
-
118
115
  @property
119
116
  @pulumi.getter
120
117
  def comment(self) -> Optional[pulumi.Input[str]]:
@@ -129,33 +126,21 @@ class MaskingPolicyArgs:
129
126
 
130
127
  @property
131
128
  @pulumi.getter(name="exemptOtherPolicies")
132
- def exempt_other_policies(self) -> Optional[pulumi.Input[bool]]:
129
+ def exempt_other_policies(self) -> Optional[pulumi.Input[str]]:
133
130
  """
134
- Specifies whether the row access policy or conditional masking policy can reference a column that is already protected by a masking policy.
131
+ Specifies whether the row access policy or conditional masking policy can reference a column that is already protected by a masking policy. Due to Snowflake limitations, when value is chenged, the resource is recreated. Available options are: "true" or "false". When the value is not set in the configuration the provider will put "default" there which means to use the Snowflake default for this value.
135
132
  """
136
133
  return pulumi.get(self, "exempt_other_policies")
137
134
 
138
135
  @exempt_other_policies.setter
139
- def exempt_other_policies(self, value: Optional[pulumi.Input[bool]]):
136
+ def exempt_other_policies(self, value: Optional[pulumi.Input[str]]):
140
137
  pulumi.set(self, "exempt_other_policies", value)
141
138
 
142
- @property
143
- @pulumi.getter(name="ifNotExists")
144
- def if_not_exists(self) -> Optional[pulumi.Input[bool]]:
145
- """
146
- Prevent overwriting a previous masking policy with the same name.
147
- """
148
- return pulumi.get(self, "if_not_exists")
149
-
150
- @if_not_exists.setter
151
- def if_not_exists(self, value: Optional[pulumi.Input[bool]]):
152
- pulumi.set(self, "if_not_exists", value)
153
-
154
139
  @property
155
140
  @pulumi.getter
156
141
  def name(self) -> Optional[pulumi.Input[str]]:
157
142
  """
158
- Specifies the column name to mask.
143
+ Specifies the identifier for the masking policy; must be unique for the database and schema in which the masking policy is created. Due to technical limitations (read more here), avoid using the following characters: `|`, `.`, `"`.
159
144
  """
160
145
  return pulumi.get(self, "name")
161
146
 
@@ -163,69 +148,81 @@ class MaskingPolicyArgs:
163
148
  def name(self, value: Optional[pulumi.Input[str]]):
164
149
  pulumi.set(self, "name", value)
165
150
 
166
- @property
167
- @pulumi.getter(name="orReplace")
168
- def or_replace(self) -> Optional[pulumi.Input[bool]]:
169
- """
170
- Whether to override a previous masking policy with the same name.
171
- """
172
- return pulumi.get(self, "or_replace")
173
-
174
- @or_replace.setter
175
- def or_replace(self, value: Optional[pulumi.Input[bool]]):
176
- pulumi.set(self, "or_replace", value)
177
-
178
151
 
179
152
  @pulumi.input_type
180
153
  class _MaskingPolicyState:
181
154
  def __init__(__self__, *,
155
+ arguments: Optional[pulumi.Input[Sequence[pulumi.Input['MaskingPolicyArgumentArgs']]]] = None,
156
+ body: Optional[pulumi.Input[str]] = None,
182
157
  comment: Optional[pulumi.Input[str]] = None,
183
158
  database: Optional[pulumi.Input[str]] = None,
184
- exempt_other_policies: Optional[pulumi.Input[bool]] = None,
185
- if_not_exists: Optional[pulumi.Input[bool]] = None,
186
- masking_expression: Optional[pulumi.Input[str]] = None,
159
+ describe_outputs: Optional[pulumi.Input[Sequence[pulumi.Input['MaskingPolicyDescribeOutputArgs']]]] = None,
160
+ exempt_other_policies: Optional[pulumi.Input[str]] = None,
161
+ fully_qualified_name: Optional[pulumi.Input[str]] = None,
187
162
  name: Optional[pulumi.Input[str]] = None,
188
- or_replace: Optional[pulumi.Input[bool]] = None,
189
- qualified_name: Optional[pulumi.Input[str]] = None,
190
163
  return_data_type: Optional[pulumi.Input[str]] = None,
191
164
  schema: Optional[pulumi.Input[str]] = None,
192
- signature: Optional[pulumi.Input['MaskingPolicySignatureArgs']] = None):
165
+ show_outputs: Optional[pulumi.Input[Sequence[pulumi.Input['MaskingPolicyShowOutputArgs']]]] = None):
193
166
  """
194
167
  Input properties used for looking up and filtering MaskingPolicy resources.
168
+ :param pulumi.Input[Sequence[pulumi.Input['MaskingPolicyArgumentArgs']]] arguments: List of the arguments for the masking policy. The first column and its data type always indicate the column data type values to mask or tokenize in the subsequent policy conditions. Note that you can not specify a virtual column as the first column argument in a conditional masking policy.
169
+ :param pulumi.Input[str] body: Specifies the SQL expression that transforms the data. To mitigate permadiff on this field, the provider replaces blank characters with a space. This can lead to false positives in cases where a change in case or run of whitespace is semantically significant.
195
170
  :param pulumi.Input[str] comment: Specifies a comment for the masking policy.
196
- :param pulumi.Input[str] database: The database in which to create the masking policy.
197
- :param pulumi.Input[bool] exempt_other_policies: Specifies whether the row access policy or conditional masking policy can reference a column that is already protected by a masking policy.
198
- :param pulumi.Input[bool] if_not_exists: Prevent overwriting a previous masking policy with the same name.
199
- :param pulumi.Input[str] masking_expression: Specifies the SQL expression that transforms the data.
200
- :param pulumi.Input[str] name: Specifies the column name to mask.
201
- :param pulumi.Input[bool] or_replace: Whether to override a previous masking policy with the same name.
202
- :param pulumi.Input[str] qualified_name: Specifies the qualified identifier for the masking policy.
203
- :param pulumi.Input[str] return_data_type: Specifies the data type to return.
204
- :param pulumi.Input[str] schema: The schema in which to create the masking policy.
205
- :param pulumi.Input['MaskingPolicySignatureArgs'] signature: The signature for the masking policy; specifies the input columns and data types to evaluate at query runtime.
206
- """
171
+ :param pulumi.Input[str] database: The database in which to create the masking policy. Due to technical limitations (read more here), avoid using the following characters: `|`, `.`, `"`.
172
+ :param pulumi.Input[Sequence[pulumi.Input['MaskingPolicyDescribeOutputArgs']]] describe_outputs: Outputs the result of `DESCRIBE MASKING POLICY` for the given masking policy.
173
+ :param pulumi.Input[str] exempt_other_policies: Specifies whether the row access policy or conditional masking policy can reference a column that is already protected by a masking policy. Due to Snowflake limitations, when value is chenged, the resource is recreated. Available options are: "true" or "false". When the value is not set in the configuration the provider will put "default" there which means to use the Snowflake default for this value.
174
+ :param pulumi.Input[str] fully_qualified_name: Fully qualified name of the resource. For more information, see [object name resolution](https://docs.snowflake.com/en/sql-reference/name-resolution).
175
+ :param pulumi.Input[str] name: Specifies the identifier for the masking policy; must be unique for the database and schema in which the masking policy is created. Due to technical limitations (read more here), avoid using the following characters: `|`, `.`, `"`.
176
+ :param pulumi.Input[str] return_data_type: The return data type must match the input data type of the first column that is specified as an input column. For more information about data types, check [Snowflake docs](https://docs.snowflake.com/en/sql-reference/intro-summary-data-types).
177
+ :param pulumi.Input[str] schema: The schema in which to create the masking policy. Due to technical limitations (read more here), avoid using the following characters: `|`, `.`, `"`.
178
+ :param pulumi.Input[Sequence[pulumi.Input['MaskingPolicyShowOutputArgs']]] show_outputs: Outputs the result of `SHOW MASKING POLICIES` for the given masking policy.
179
+ """
180
+ if arguments is not None:
181
+ pulumi.set(__self__, "arguments", arguments)
182
+ if body is not None:
183
+ pulumi.set(__self__, "body", body)
207
184
  if comment is not None:
208
185
  pulumi.set(__self__, "comment", comment)
209
186
  if database is not None:
210
187
  pulumi.set(__self__, "database", database)
188
+ if describe_outputs is not None:
189
+ pulumi.set(__self__, "describe_outputs", describe_outputs)
211
190
  if exempt_other_policies is not None:
212
191
  pulumi.set(__self__, "exempt_other_policies", exempt_other_policies)
213
- if if_not_exists is not None:
214
- pulumi.set(__self__, "if_not_exists", if_not_exists)
215
- if masking_expression is not None:
216
- pulumi.set(__self__, "masking_expression", masking_expression)
192
+ if fully_qualified_name is not None:
193
+ pulumi.set(__self__, "fully_qualified_name", fully_qualified_name)
217
194
  if name is not None:
218
195
  pulumi.set(__self__, "name", name)
219
- if or_replace is not None:
220
- pulumi.set(__self__, "or_replace", or_replace)
221
- if qualified_name is not None:
222
- pulumi.set(__self__, "qualified_name", qualified_name)
223
196
  if return_data_type is not None:
224
197
  pulumi.set(__self__, "return_data_type", return_data_type)
225
198
  if schema is not None:
226
199
  pulumi.set(__self__, "schema", schema)
227
- if signature is not None:
228
- pulumi.set(__self__, "signature", signature)
200
+ if show_outputs is not None:
201
+ pulumi.set(__self__, "show_outputs", show_outputs)
202
+
203
+ @property
204
+ @pulumi.getter
205
+ def arguments(self) -> Optional[pulumi.Input[Sequence[pulumi.Input['MaskingPolicyArgumentArgs']]]]:
206
+ """
207
+ List of the arguments for the masking policy. The first column and its data type always indicate the column data type values to mask or tokenize in the subsequent policy conditions. Note that you can not specify a virtual column as the first column argument in a conditional masking policy.
208
+ """
209
+ return pulumi.get(self, "arguments")
210
+
211
+ @arguments.setter
212
+ def arguments(self, value: Optional[pulumi.Input[Sequence[pulumi.Input['MaskingPolicyArgumentArgs']]]]):
213
+ pulumi.set(self, "arguments", value)
214
+
215
+ @property
216
+ @pulumi.getter
217
+ def body(self) -> Optional[pulumi.Input[str]]:
218
+ """
219
+ Specifies the SQL expression that transforms the data. To mitigate permadiff on this field, the provider replaces blank characters with a space. This can lead to false positives in cases where a change in case or run of whitespace is semantically significant.
220
+ """
221
+ return pulumi.get(self, "body")
222
+
223
+ @body.setter
224
+ def body(self, value: Optional[pulumi.Input[str]]):
225
+ pulumi.set(self, "body", value)
229
226
 
230
227
  @property
231
228
  @pulumi.getter
@@ -243,7 +240,7 @@ class _MaskingPolicyState:
243
240
  @pulumi.getter
244
241
  def database(self) -> Optional[pulumi.Input[str]]:
245
242
  """
246
- The database in which to create the masking policy.
243
+ The database in which to create the masking policy. Due to technical limitations (read more here), avoid using the following characters: `|`, `.`, `"`.
247
244
  """
248
245
  return pulumi.get(self, "database")
249
246
 
@@ -252,46 +249,46 @@ class _MaskingPolicyState:
252
249
  pulumi.set(self, "database", value)
253
250
 
254
251
  @property
255
- @pulumi.getter(name="exemptOtherPolicies")
256
- def exempt_other_policies(self) -> Optional[pulumi.Input[bool]]:
252
+ @pulumi.getter(name="describeOutputs")
253
+ def describe_outputs(self) -> Optional[pulumi.Input[Sequence[pulumi.Input['MaskingPolicyDescribeOutputArgs']]]]:
257
254
  """
258
- Specifies whether the row access policy or conditional masking policy can reference a column that is already protected by a masking policy.
255
+ Outputs the result of `DESCRIBE MASKING POLICY` for the given masking policy.
259
256
  """
260
- return pulumi.get(self, "exempt_other_policies")
257
+ return pulumi.get(self, "describe_outputs")
261
258
 
262
- @exempt_other_policies.setter
263
- def exempt_other_policies(self, value: Optional[pulumi.Input[bool]]):
264
- pulumi.set(self, "exempt_other_policies", value)
259
+ @describe_outputs.setter
260
+ def describe_outputs(self, value: Optional[pulumi.Input[Sequence[pulumi.Input['MaskingPolicyDescribeOutputArgs']]]]):
261
+ pulumi.set(self, "describe_outputs", value)
265
262
 
266
263
  @property
267
- @pulumi.getter(name="ifNotExists")
268
- def if_not_exists(self) -> Optional[pulumi.Input[bool]]:
264
+ @pulumi.getter(name="exemptOtherPolicies")
265
+ def exempt_other_policies(self) -> Optional[pulumi.Input[str]]:
269
266
  """
270
- Prevent overwriting a previous masking policy with the same name.
267
+ Specifies whether the row access policy or conditional masking policy can reference a column that is already protected by a masking policy. Due to Snowflake limitations, when value is chenged, the resource is recreated. Available options are: "true" or "false". When the value is not set in the configuration the provider will put "default" there which means to use the Snowflake default for this value.
271
268
  """
272
- return pulumi.get(self, "if_not_exists")
269
+ return pulumi.get(self, "exempt_other_policies")
273
270
 
274
- @if_not_exists.setter
275
- def if_not_exists(self, value: Optional[pulumi.Input[bool]]):
276
- pulumi.set(self, "if_not_exists", value)
271
+ @exempt_other_policies.setter
272
+ def exempt_other_policies(self, value: Optional[pulumi.Input[str]]):
273
+ pulumi.set(self, "exempt_other_policies", value)
277
274
 
278
275
  @property
279
- @pulumi.getter(name="maskingExpression")
280
- def masking_expression(self) -> Optional[pulumi.Input[str]]:
276
+ @pulumi.getter(name="fullyQualifiedName")
277
+ def fully_qualified_name(self) -> Optional[pulumi.Input[str]]:
281
278
  """
282
- Specifies the SQL expression that transforms the data.
279
+ Fully qualified name of the resource. For more information, see [object name resolution](https://docs.snowflake.com/en/sql-reference/name-resolution).
283
280
  """
284
- return pulumi.get(self, "masking_expression")
281
+ return pulumi.get(self, "fully_qualified_name")
285
282
 
286
- @masking_expression.setter
287
- def masking_expression(self, value: Optional[pulumi.Input[str]]):
288
- pulumi.set(self, "masking_expression", value)
283
+ @fully_qualified_name.setter
284
+ def fully_qualified_name(self, value: Optional[pulumi.Input[str]]):
285
+ pulumi.set(self, "fully_qualified_name", value)
289
286
 
290
287
  @property
291
288
  @pulumi.getter
292
289
  def name(self) -> Optional[pulumi.Input[str]]:
293
290
  """
294
- Specifies the column name to mask.
291
+ Specifies the identifier for the masking policy; must be unique for the database and schema in which the masking policy is created. Due to technical limitations (read more here), avoid using the following characters: `|`, `.`, `"`.
295
292
  """
296
293
  return pulumi.get(self, "name")
297
294
 
@@ -299,35 +296,11 @@ class _MaskingPolicyState:
299
296
  def name(self, value: Optional[pulumi.Input[str]]):
300
297
  pulumi.set(self, "name", value)
301
298
 
302
- @property
303
- @pulumi.getter(name="orReplace")
304
- def or_replace(self) -> Optional[pulumi.Input[bool]]:
305
- """
306
- Whether to override a previous masking policy with the same name.
307
- """
308
- return pulumi.get(self, "or_replace")
309
-
310
- @or_replace.setter
311
- def or_replace(self, value: Optional[pulumi.Input[bool]]):
312
- pulumi.set(self, "or_replace", value)
313
-
314
- @property
315
- @pulumi.getter(name="qualifiedName")
316
- def qualified_name(self) -> Optional[pulumi.Input[str]]:
317
- """
318
- Specifies the qualified identifier for the masking policy.
319
- """
320
- return pulumi.get(self, "qualified_name")
321
-
322
- @qualified_name.setter
323
- def qualified_name(self, value: Optional[pulumi.Input[str]]):
324
- pulumi.set(self, "qualified_name", value)
325
-
326
299
  @property
327
300
  @pulumi.getter(name="returnDataType")
328
301
  def return_data_type(self) -> Optional[pulumi.Input[str]]:
329
302
  """
330
- Specifies the data type to return.
303
+ The return data type must match the input data type of the first column that is specified as an input column. For more information about data types, check [Snowflake docs](https://docs.snowflake.com/en/sql-reference/intro-summary-data-types).
331
304
  """
332
305
  return pulumi.get(self, "return_data_type")
333
306
 
@@ -339,7 +312,7 @@ class _MaskingPolicyState:
339
312
  @pulumi.getter
340
313
  def schema(self) -> Optional[pulumi.Input[str]]:
341
314
  """
342
- The schema in which to create the masking policy.
315
+ The schema in which to create the masking policy. Due to technical limitations (read more here), avoid using the following characters: `|`, `.`, `"`.
343
316
  """
344
317
  return pulumi.get(self, "schema")
345
318
 
@@ -348,16 +321,16 @@ class _MaskingPolicyState:
348
321
  pulumi.set(self, "schema", value)
349
322
 
350
323
  @property
351
- @pulumi.getter
352
- def signature(self) -> Optional[pulumi.Input['MaskingPolicySignatureArgs']]:
324
+ @pulumi.getter(name="showOutputs")
325
+ def show_outputs(self) -> Optional[pulumi.Input[Sequence[pulumi.Input['MaskingPolicyShowOutputArgs']]]]:
353
326
  """
354
- The signature for the masking policy; specifies the input columns and data types to evaluate at query runtime.
327
+ Outputs the result of `SHOW MASKING POLICIES` for the given masking policy.
355
328
  """
356
- return pulumi.get(self, "signature")
329
+ return pulumi.get(self, "show_outputs")
357
330
 
358
- @signature.setter
359
- def signature(self, value: Optional[pulumi.Input['MaskingPolicySignatureArgs']]):
360
- pulumi.set(self, "signature", value)
331
+ @show_outputs.setter
332
+ def show_outputs(self, value: Optional[pulumi.Input[Sequence[pulumi.Input['MaskingPolicyShowOutputArgs']]]]):
333
+ pulumi.set(self, "show_outputs", value)
361
334
 
362
335
 
363
336
  class MaskingPolicy(pulumi.CustomResource):
@@ -365,68 +338,32 @@ class MaskingPolicy(pulumi.CustomResource):
365
338
  def __init__(__self__,
366
339
  resource_name: str,
367
340
  opts: Optional[pulumi.ResourceOptions] = None,
341
+ arguments: Optional[pulumi.Input[Sequence[pulumi.Input[Union['MaskingPolicyArgumentArgs', 'MaskingPolicyArgumentArgsDict']]]]] = None,
342
+ body: Optional[pulumi.Input[str]] = None,
368
343
  comment: Optional[pulumi.Input[str]] = None,
369
344
  database: Optional[pulumi.Input[str]] = None,
370
- exempt_other_policies: Optional[pulumi.Input[bool]] = None,
371
- if_not_exists: Optional[pulumi.Input[bool]] = None,
372
- masking_expression: Optional[pulumi.Input[str]] = None,
345
+ exempt_other_policies: Optional[pulumi.Input[str]] = None,
373
346
  name: Optional[pulumi.Input[str]] = None,
374
- or_replace: Optional[pulumi.Input[bool]] = None,
375
347
  return_data_type: Optional[pulumi.Input[str]] = None,
376
348
  schema: Optional[pulumi.Input[str]] = None,
377
- signature: Optional[pulumi.Input[pulumi.InputType['MaskingPolicySignatureArgs']]] = None,
378
349
  __props__=None):
379
350
  """
380
- ## Example Usage
381
-
382
- <!--Start PulumiCodeChooser -->
383
- ```python
384
- import pulumi
385
- import pulumi_snowflake as snowflake
386
-
387
- test = snowflake.MaskingPolicy("test",
388
- database="EXAMPLE_DB",
389
- masking_expression=\"\"\" case
390
- when current_role() in ('ROLE_A') then
391
- val
392
- when is_role_in_session( 'ROLE_B' ) then
393
- 'ABC123'
394
- else
395
- '******'
396
- end
397
-
398
- \"\"\",
399
- return_data_type="VARCHAR",
400
- schema="EXAMPLE_SCHEMA",
401
- signature=snowflake.MaskingPolicySignatureArgs(
402
- columns=[snowflake.MaskingPolicySignatureColumnArgs(
403
- name="val",
404
- type="VARCHAR",
405
- )],
406
- ))
407
- ```
408
- <!--End PulumiCodeChooser -->
409
-
410
351
  ## Import
411
352
 
412
- format is database name | schema name | policy name
413
-
414
353
  ```sh
415
- $ pulumi import snowflake:index/maskingPolicy:MaskingPolicy example 'dbName|schemaName|policyName'
354
+ $ pulumi import snowflake:index/maskingPolicy:MaskingPolicy example '"<database_name>"."<schema_name>"."<masking_policy_name>"'
416
355
  ```
417
356
 
418
357
  :param str resource_name: The name of the resource.
419
358
  :param pulumi.ResourceOptions opts: Options for the resource.
359
+ :param pulumi.Input[Sequence[pulumi.Input[Union['MaskingPolicyArgumentArgs', 'MaskingPolicyArgumentArgsDict']]]] arguments: List of the arguments for the masking policy. The first column and its data type always indicate the column data type values to mask or tokenize in the subsequent policy conditions. Note that you can not specify a virtual column as the first column argument in a conditional masking policy.
360
+ :param pulumi.Input[str] body: Specifies the SQL expression that transforms the data. To mitigate permadiff on this field, the provider replaces blank characters with a space. This can lead to false positives in cases where a change in case or run of whitespace is semantically significant.
420
361
  :param pulumi.Input[str] comment: Specifies a comment for the masking policy.
421
- :param pulumi.Input[str] database: The database in which to create the masking policy.
422
- :param pulumi.Input[bool] exempt_other_policies: Specifies whether the row access policy or conditional masking policy can reference a column that is already protected by a masking policy.
423
- :param pulumi.Input[bool] if_not_exists: Prevent overwriting a previous masking policy with the same name.
424
- :param pulumi.Input[str] masking_expression: Specifies the SQL expression that transforms the data.
425
- :param pulumi.Input[str] name: Specifies the column name to mask.
426
- :param pulumi.Input[bool] or_replace: Whether to override a previous masking policy with the same name.
427
- :param pulumi.Input[str] return_data_type: Specifies the data type to return.
428
- :param pulumi.Input[str] schema: The schema in which to create the masking policy.
429
- :param pulumi.Input[pulumi.InputType['MaskingPolicySignatureArgs']] signature: The signature for the masking policy; specifies the input columns and data types to evaluate at query runtime.
362
+ :param pulumi.Input[str] database: The database in which to create the masking policy. Due to technical limitations (read more here), avoid using the following characters: `|`, `.`, `"`.
363
+ :param pulumi.Input[str] exempt_other_policies: Specifies whether the row access policy or conditional masking policy can reference a column that is already protected by a masking policy. Due to Snowflake limitations, when value is chenged, the resource is recreated. Available options are: "true" or "false". When the value is not set in the configuration the provider will put "default" there which means to use the Snowflake default for this value.
364
+ :param pulumi.Input[str] name: Specifies the identifier for the masking policy; must be unique for the database and schema in which the masking policy is created. Due to technical limitations (read more here), avoid using the following characters: `|`, `.`, `"`.
365
+ :param pulumi.Input[str] return_data_type: The return data type must match the input data type of the first column that is specified as an input column. For more information about data types, check [Snowflake docs](https://docs.snowflake.com/en/sql-reference/intro-summary-data-types).
366
+ :param pulumi.Input[str] schema: The schema in which to create the masking policy. Due to technical limitations (read more here), avoid using the following characters: `|`, `.`, `"`.
430
367
  """
431
368
  ...
432
369
  @overload
@@ -435,42 +372,10 @@ class MaskingPolicy(pulumi.CustomResource):
435
372
  args: MaskingPolicyArgs,
436
373
  opts: Optional[pulumi.ResourceOptions] = None):
437
374
  """
438
- ## Example Usage
439
-
440
- <!--Start PulumiCodeChooser -->
441
- ```python
442
- import pulumi
443
- import pulumi_snowflake as snowflake
444
-
445
- test = snowflake.MaskingPolicy("test",
446
- database="EXAMPLE_DB",
447
- masking_expression=\"\"\" case
448
- when current_role() in ('ROLE_A') then
449
- val
450
- when is_role_in_session( 'ROLE_B' ) then
451
- 'ABC123'
452
- else
453
- '******'
454
- end
455
-
456
- \"\"\",
457
- return_data_type="VARCHAR",
458
- schema="EXAMPLE_SCHEMA",
459
- signature=snowflake.MaskingPolicySignatureArgs(
460
- columns=[snowflake.MaskingPolicySignatureColumnArgs(
461
- name="val",
462
- type="VARCHAR",
463
- )],
464
- ))
465
- ```
466
- <!--End PulumiCodeChooser -->
467
-
468
375
  ## Import
469
376
 
470
- format is database name | schema name | policy name
471
-
472
377
  ```sh
473
- $ pulumi import snowflake:index/maskingPolicy:MaskingPolicy example 'dbName|schemaName|policyName'
378
+ $ pulumi import snowflake:index/maskingPolicy:MaskingPolicy example '"<database_name>"."<schema_name>"."<masking_policy_name>"'
474
379
  ```
475
380
 
476
381
  :param str resource_name: The name of the resource.
@@ -488,16 +393,14 @@ class MaskingPolicy(pulumi.CustomResource):
488
393
  def _internal_init(__self__,
489
394
  resource_name: str,
490
395
  opts: Optional[pulumi.ResourceOptions] = None,
396
+ arguments: Optional[pulumi.Input[Sequence[pulumi.Input[Union['MaskingPolicyArgumentArgs', 'MaskingPolicyArgumentArgsDict']]]]] = None,
397
+ body: Optional[pulumi.Input[str]] = None,
491
398
  comment: Optional[pulumi.Input[str]] = None,
492
399
  database: Optional[pulumi.Input[str]] = None,
493
- exempt_other_policies: Optional[pulumi.Input[bool]] = None,
494
- if_not_exists: Optional[pulumi.Input[bool]] = None,
495
- masking_expression: Optional[pulumi.Input[str]] = None,
400
+ exempt_other_policies: Optional[pulumi.Input[str]] = None,
496
401
  name: Optional[pulumi.Input[str]] = None,
497
- or_replace: Optional[pulumi.Input[bool]] = None,
498
402
  return_data_type: Optional[pulumi.Input[str]] = None,
499
403
  schema: Optional[pulumi.Input[str]] = None,
500
- signature: Optional[pulumi.Input[pulumi.InputType['MaskingPolicySignatureArgs']]] = None,
501
404
  __props__=None):
502
405
  opts = pulumi.ResourceOptions.merge(_utilities.get_resource_opts_defaults(), opts)
503
406
  if not isinstance(opts, pulumi.ResourceOptions):
@@ -507,27 +410,27 @@ class MaskingPolicy(pulumi.CustomResource):
507
410
  raise TypeError('__props__ is only valid when passed in combination with a valid opts.id to get an existing resource')
508
411
  __props__ = MaskingPolicyArgs.__new__(MaskingPolicyArgs)
509
412
 
413
+ if arguments is None and not opts.urn:
414
+ raise TypeError("Missing required property 'arguments'")
415
+ __props__.__dict__["arguments"] = arguments
416
+ if body is None and not opts.urn:
417
+ raise TypeError("Missing required property 'body'")
418
+ __props__.__dict__["body"] = body
510
419
  __props__.__dict__["comment"] = comment
511
420
  if database is None and not opts.urn:
512
421
  raise TypeError("Missing required property 'database'")
513
422
  __props__.__dict__["database"] = database
514
423
  __props__.__dict__["exempt_other_policies"] = exempt_other_policies
515
- __props__.__dict__["if_not_exists"] = if_not_exists
516
- if masking_expression is None and not opts.urn:
517
- raise TypeError("Missing required property 'masking_expression'")
518
- __props__.__dict__["masking_expression"] = masking_expression
519
424
  __props__.__dict__["name"] = name
520
- __props__.__dict__["or_replace"] = or_replace
521
425
  if return_data_type is None and not opts.urn:
522
426
  raise TypeError("Missing required property 'return_data_type'")
523
427
  __props__.__dict__["return_data_type"] = return_data_type
524
428
  if schema is None and not opts.urn:
525
429
  raise TypeError("Missing required property 'schema'")
526
430
  __props__.__dict__["schema"] = schema
527
- if signature is None and not opts.urn:
528
- raise TypeError("Missing required property 'signature'")
529
- __props__.__dict__["signature"] = signature
530
- __props__.__dict__["qualified_name"] = None
431
+ __props__.__dict__["describe_outputs"] = None
432
+ __props__.__dict__["fully_qualified_name"] = None
433
+ __props__.__dict__["show_outputs"] = None
531
434
  super(MaskingPolicy, __self__).__init__(
532
435
  'snowflake:index/maskingPolicy:MaskingPolicy',
533
436
  resource_name,
@@ -538,17 +441,17 @@ class MaskingPolicy(pulumi.CustomResource):
538
441
  def get(resource_name: str,
539
442
  id: pulumi.Input[str],
540
443
  opts: Optional[pulumi.ResourceOptions] = None,
444
+ arguments: Optional[pulumi.Input[Sequence[pulumi.Input[Union['MaskingPolicyArgumentArgs', 'MaskingPolicyArgumentArgsDict']]]]] = None,
445
+ body: Optional[pulumi.Input[str]] = None,
541
446
  comment: Optional[pulumi.Input[str]] = None,
542
447
  database: Optional[pulumi.Input[str]] = None,
543
- exempt_other_policies: Optional[pulumi.Input[bool]] = None,
544
- if_not_exists: Optional[pulumi.Input[bool]] = None,
545
- masking_expression: Optional[pulumi.Input[str]] = None,
448
+ describe_outputs: Optional[pulumi.Input[Sequence[pulumi.Input[Union['MaskingPolicyDescribeOutputArgs', 'MaskingPolicyDescribeOutputArgsDict']]]]] = None,
449
+ exempt_other_policies: Optional[pulumi.Input[str]] = None,
450
+ fully_qualified_name: Optional[pulumi.Input[str]] = None,
546
451
  name: Optional[pulumi.Input[str]] = None,
547
- or_replace: Optional[pulumi.Input[bool]] = None,
548
- qualified_name: Optional[pulumi.Input[str]] = None,
549
452
  return_data_type: Optional[pulumi.Input[str]] = None,
550
453
  schema: Optional[pulumi.Input[str]] = None,
551
- signature: Optional[pulumi.Input[pulumi.InputType['MaskingPolicySignatureArgs']]] = None) -> 'MaskingPolicy':
454
+ show_outputs: Optional[pulumi.Input[Sequence[pulumi.Input[Union['MaskingPolicyShowOutputArgs', 'MaskingPolicyShowOutputArgsDict']]]]] = None) -> 'MaskingPolicy':
552
455
  """
553
456
  Get an existing MaskingPolicy resource's state with the given name, id, and optional extra
554
457
  properties used to qualify the lookup.
@@ -556,104 +459,104 @@ class MaskingPolicy(pulumi.CustomResource):
556
459
  :param str resource_name: The unique name of the resulting resource.
557
460
  :param pulumi.Input[str] id: The unique provider ID of the resource to lookup.
558
461
  :param pulumi.ResourceOptions opts: Options for the resource.
462
+ :param pulumi.Input[Sequence[pulumi.Input[Union['MaskingPolicyArgumentArgs', 'MaskingPolicyArgumentArgsDict']]]] arguments: List of the arguments for the masking policy. The first column and its data type always indicate the column data type values to mask or tokenize in the subsequent policy conditions. Note that you can not specify a virtual column as the first column argument in a conditional masking policy.
463
+ :param pulumi.Input[str] body: Specifies the SQL expression that transforms the data. To mitigate permadiff on this field, the provider replaces blank characters with a space. This can lead to false positives in cases where a change in case or run of whitespace is semantically significant.
559
464
  :param pulumi.Input[str] comment: Specifies a comment for the masking policy.
560
- :param pulumi.Input[str] database: The database in which to create the masking policy.
561
- :param pulumi.Input[bool] exempt_other_policies: Specifies whether the row access policy or conditional masking policy can reference a column that is already protected by a masking policy.
562
- :param pulumi.Input[bool] if_not_exists: Prevent overwriting a previous masking policy with the same name.
563
- :param pulumi.Input[str] masking_expression: Specifies the SQL expression that transforms the data.
564
- :param pulumi.Input[str] name: Specifies the column name to mask.
565
- :param pulumi.Input[bool] or_replace: Whether to override a previous masking policy with the same name.
566
- :param pulumi.Input[str] qualified_name: Specifies the qualified identifier for the masking policy.
567
- :param pulumi.Input[str] return_data_type: Specifies the data type to return.
568
- :param pulumi.Input[str] schema: The schema in which to create the masking policy.
569
- :param pulumi.Input[pulumi.InputType['MaskingPolicySignatureArgs']] signature: The signature for the masking policy; specifies the input columns and data types to evaluate at query runtime.
465
+ :param pulumi.Input[str] database: The database in which to create the masking policy. Due to technical limitations (read more here), avoid using the following characters: `|`, `.`, `"`.
466
+ :param pulumi.Input[Sequence[pulumi.Input[Union['MaskingPolicyDescribeOutputArgs', 'MaskingPolicyDescribeOutputArgsDict']]]] describe_outputs: Outputs the result of `DESCRIBE MASKING POLICY` for the given masking policy.
467
+ :param pulumi.Input[str] exempt_other_policies: Specifies whether the row access policy or conditional masking policy can reference a column that is already protected by a masking policy. Due to Snowflake limitations, when value is chenged, the resource is recreated. Available options are: "true" or "false". When the value is not set in the configuration the provider will put "default" there which means to use the Snowflake default for this value.
468
+ :param pulumi.Input[str] fully_qualified_name: Fully qualified name of the resource. For more information, see [object name resolution](https://docs.snowflake.com/en/sql-reference/name-resolution).
469
+ :param pulumi.Input[str] name: Specifies the identifier for the masking policy; must be unique for the database and schema in which the masking policy is created. Due to technical limitations (read more here), avoid using the following characters: `|`, `.`, `"`.
470
+ :param pulumi.Input[str] return_data_type: The return data type must match the input data type of the first column that is specified as an input column. For more information about data types, check [Snowflake docs](https://docs.snowflake.com/en/sql-reference/intro-summary-data-types).
471
+ :param pulumi.Input[str] schema: The schema in which to create the masking policy. Due to technical limitations (read more here), avoid using the following characters: `|`, `.`, `"`.
472
+ :param pulumi.Input[Sequence[pulumi.Input[Union['MaskingPolicyShowOutputArgs', 'MaskingPolicyShowOutputArgsDict']]]] show_outputs: Outputs the result of `SHOW MASKING POLICIES` for the given masking policy.
570
473
  """
571
474
  opts = pulumi.ResourceOptions.merge(opts, pulumi.ResourceOptions(id=id))
572
475
 
573
476
  __props__ = _MaskingPolicyState.__new__(_MaskingPolicyState)
574
477
 
478
+ __props__.__dict__["arguments"] = arguments
479
+ __props__.__dict__["body"] = body
575
480
  __props__.__dict__["comment"] = comment
576
481
  __props__.__dict__["database"] = database
482
+ __props__.__dict__["describe_outputs"] = describe_outputs
577
483
  __props__.__dict__["exempt_other_policies"] = exempt_other_policies
578
- __props__.__dict__["if_not_exists"] = if_not_exists
579
- __props__.__dict__["masking_expression"] = masking_expression
484
+ __props__.__dict__["fully_qualified_name"] = fully_qualified_name
580
485
  __props__.__dict__["name"] = name
581
- __props__.__dict__["or_replace"] = or_replace
582
- __props__.__dict__["qualified_name"] = qualified_name
583
486
  __props__.__dict__["return_data_type"] = return_data_type
584
487
  __props__.__dict__["schema"] = schema
585
- __props__.__dict__["signature"] = signature
488
+ __props__.__dict__["show_outputs"] = show_outputs
586
489
  return MaskingPolicy(resource_name, opts=opts, __props__=__props__)
587
490
 
588
491
  @property
589
492
  @pulumi.getter
590
- def comment(self) -> pulumi.Output[Optional[str]]:
493
+ def arguments(self) -> pulumi.Output[Sequence['outputs.MaskingPolicyArgument']]:
591
494
  """
592
- Specifies a comment for the masking policy.
495
+ List of the arguments for the masking policy. The first column and its data type always indicate the column data type values to mask or tokenize in the subsequent policy conditions. Note that you can not specify a virtual column as the first column argument in a conditional masking policy.
593
496
  """
594
- return pulumi.get(self, "comment")
497
+ return pulumi.get(self, "arguments")
595
498
 
596
499
  @property
597
500
  @pulumi.getter
598
- def database(self) -> pulumi.Output[str]:
501
+ def body(self) -> pulumi.Output[str]:
599
502
  """
600
- The database in which to create the masking policy.
503
+ Specifies the SQL expression that transforms the data. To mitigate permadiff on this field, the provider replaces blank characters with a space. This can lead to false positives in cases where a change in case or run of whitespace is semantically significant.
601
504
  """
602
- return pulumi.get(self, "database")
505
+ return pulumi.get(self, "body")
603
506
 
604
507
  @property
605
- @pulumi.getter(name="exemptOtherPolicies")
606
- def exempt_other_policies(self) -> pulumi.Output[Optional[bool]]:
508
+ @pulumi.getter
509
+ def comment(self) -> pulumi.Output[Optional[str]]:
607
510
  """
608
- Specifies whether the row access policy or conditional masking policy can reference a column that is already protected by a masking policy.
511
+ Specifies a comment for the masking policy.
609
512
  """
610
- return pulumi.get(self, "exempt_other_policies")
513
+ return pulumi.get(self, "comment")
611
514
 
612
515
  @property
613
- @pulumi.getter(name="ifNotExists")
614
- def if_not_exists(self) -> pulumi.Output[Optional[bool]]:
516
+ @pulumi.getter
517
+ def database(self) -> pulumi.Output[str]:
615
518
  """
616
- Prevent overwriting a previous masking policy with the same name.
519
+ The database in which to create the masking policy. Due to technical limitations (read more here), avoid using the following characters: `|`, `.`, `"`.
617
520
  """
618
- return pulumi.get(self, "if_not_exists")
521
+ return pulumi.get(self, "database")
619
522
 
620
523
  @property
621
- @pulumi.getter(name="maskingExpression")
622
- def masking_expression(self) -> pulumi.Output[str]:
524
+ @pulumi.getter(name="describeOutputs")
525
+ def describe_outputs(self) -> pulumi.Output[Sequence['outputs.MaskingPolicyDescribeOutput']]:
623
526
  """
624
- Specifies the SQL expression that transforms the data.
527
+ Outputs the result of `DESCRIBE MASKING POLICY` for the given masking policy.
625
528
  """
626
- return pulumi.get(self, "masking_expression")
529
+ return pulumi.get(self, "describe_outputs")
627
530
 
628
531
  @property
629
- @pulumi.getter
630
- def name(self) -> pulumi.Output[str]:
532
+ @pulumi.getter(name="exemptOtherPolicies")
533
+ def exempt_other_policies(self) -> pulumi.Output[Optional[str]]:
631
534
  """
632
- Specifies the column name to mask.
535
+ Specifies whether the row access policy or conditional masking policy can reference a column that is already protected by a masking policy. Due to Snowflake limitations, when value is chenged, the resource is recreated. Available options are: "true" or "false". When the value is not set in the configuration the provider will put "default" there which means to use the Snowflake default for this value.
633
536
  """
634
- return pulumi.get(self, "name")
537
+ return pulumi.get(self, "exempt_other_policies")
635
538
 
636
539
  @property
637
- @pulumi.getter(name="orReplace")
638
- def or_replace(self) -> pulumi.Output[Optional[bool]]:
540
+ @pulumi.getter(name="fullyQualifiedName")
541
+ def fully_qualified_name(self) -> pulumi.Output[str]:
639
542
  """
640
- Whether to override a previous masking policy with the same name.
543
+ Fully qualified name of the resource. For more information, see [object name resolution](https://docs.snowflake.com/en/sql-reference/name-resolution).
641
544
  """
642
- return pulumi.get(self, "or_replace")
545
+ return pulumi.get(self, "fully_qualified_name")
643
546
 
644
547
  @property
645
- @pulumi.getter(name="qualifiedName")
646
- def qualified_name(self) -> pulumi.Output[str]:
548
+ @pulumi.getter
549
+ def name(self) -> pulumi.Output[str]:
647
550
  """
648
- Specifies the qualified identifier for the masking policy.
551
+ Specifies the identifier for the masking policy; must be unique for the database and schema in which the masking policy is created. Due to technical limitations (read more here), avoid using the following characters: `|`, `.`, `"`.
649
552
  """
650
- return pulumi.get(self, "qualified_name")
553
+ return pulumi.get(self, "name")
651
554
 
652
555
  @property
653
556
  @pulumi.getter(name="returnDataType")
654
557
  def return_data_type(self) -> pulumi.Output[str]:
655
558
  """
656
- Specifies the data type to return.
559
+ The return data type must match the input data type of the first column that is specified as an input column. For more information about data types, check [Snowflake docs](https://docs.snowflake.com/en/sql-reference/intro-summary-data-types).
657
560
  """
658
561
  return pulumi.get(self, "return_data_type")
659
562
 
@@ -661,15 +564,15 @@ class MaskingPolicy(pulumi.CustomResource):
661
564
  @pulumi.getter
662
565
  def schema(self) -> pulumi.Output[str]:
663
566
  """
664
- The schema in which to create the masking policy.
567
+ The schema in which to create the masking policy. Due to technical limitations (read more here), avoid using the following characters: `|`, `.`, `"`.
665
568
  """
666
569
  return pulumi.get(self, "schema")
667
570
 
668
571
  @property
669
- @pulumi.getter
670
- def signature(self) -> pulumi.Output['outputs.MaskingPolicySignature']:
572
+ @pulumi.getter(name="showOutputs")
573
+ def show_outputs(self) -> pulumi.Output[Sequence['outputs.MaskingPolicyShowOutput']]:
671
574
  """
672
- The signature for the masking policy; specifies the input columns and data types to evaluate at query runtime.
575
+ Outputs the result of `SHOW MASKING POLICIES` for the given masking policy.
673
576
  """
674
- return pulumi.get(self, "signature")
577
+ return pulumi.get(self, "show_outputs")
675
578