pulumiverse-scaleway 1.23.0a1736837529__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 pulumiverse-scaleway might be problematic. Click here for more details.

Files changed (205) hide show
  1. pulumiverse_scaleway/__init__.py +1065 -0
  2. pulumiverse_scaleway/_inputs.py +8688 -0
  3. pulumiverse_scaleway/_utilities.py +327 -0
  4. pulumiverse_scaleway/account_project.py +316 -0
  5. pulumiverse_scaleway/account_ssh_key.py +454 -0
  6. pulumiverse_scaleway/apple_silicon_server.py +564 -0
  7. pulumiverse_scaleway/baremetal_server.py +1579 -0
  8. pulumiverse_scaleway/block_snapshot.py +401 -0
  9. pulumiverse_scaleway/block_volume.py +527 -0
  10. pulumiverse_scaleway/cockpit.py +314 -0
  11. pulumiverse_scaleway/cockpit_alert_manager.py +401 -0
  12. pulumiverse_scaleway/cockpit_grafana_user.py +362 -0
  13. pulumiverse_scaleway/cockpit_source.py +567 -0
  14. pulumiverse_scaleway/cockpit_token.py +479 -0
  15. pulumiverse_scaleway/config/__init__.py +8 -0
  16. pulumiverse_scaleway/config/__init__.pyi +56 -0
  17. pulumiverse_scaleway/config/vars.py +78 -0
  18. pulumiverse_scaleway/container.py +1373 -0
  19. pulumiverse_scaleway/container_cron.py +458 -0
  20. pulumiverse_scaleway/container_domain.py +406 -0
  21. pulumiverse_scaleway/container_namespace.py +636 -0
  22. pulumiverse_scaleway/container_token.py +452 -0
  23. pulumiverse_scaleway/container_trigger.py +480 -0
  24. pulumiverse_scaleway/database.py +407 -0
  25. pulumiverse_scaleway/database_acl.py +332 -0
  26. pulumiverse_scaleway/database_backup.py +574 -0
  27. pulumiverse_scaleway/database_instance.py +1641 -0
  28. pulumiverse_scaleway/database_privilege.py +422 -0
  29. pulumiverse_scaleway/database_read_replica.py +528 -0
  30. pulumiverse_scaleway/database_user.py +446 -0
  31. pulumiverse_scaleway/domain_record.py +1116 -0
  32. pulumiverse_scaleway/domain_zone.py +430 -0
  33. pulumiverse_scaleway/flexible_ip.py +702 -0
  34. pulumiverse_scaleway/flexible_ip_mac_address.py +510 -0
  35. pulumiverse_scaleway/function.py +1103 -0
  36. pulumiverse_scaleway/function_cron.py +462 -0
  37. pulumiverse_scaleway/function_domain.py +370 -0
  38. pulumiverse_scaleway/function_namespace.py +580 -0
  39. pulumiverse_scaleway/function_token.py +460 -0
  40. pulumiverse_scaleway/function_trigger.py +480 -0
  41. pulumiverse_scaleway/get_account_project.py +170 -0
  42. pulumiverse_scaleway/get_account_ssh_key.py +205 -0
  43. pulumiverse_scaleway/get_availability_zones.py +139 -0
  44. pulumiverse_scaleway/get_baremetal_offer.py +245 -0
  45. pulumiverse_scaleway/get_baremetal_option.py +168 -0
  46. pulumiverse_scaleway/get_baremetal_os.py +174 -0
  47. pulumiverse_scaleway/get_baremetal_server.py +422 -0
  48. pulumiverse_scaleway/get_billing_consumptions.py +134 -0
  49. pulumiverse_scaleway/get_billing_invoices.py +154 -0
  50. pulumiverse_scaleway/get_block_snapshot.py +174 -0
  51. pulumiverse_scaleway/get_block_volume.py +188 -0
  52. pulumiverse_scaleway/get_cockpit.py +204 -0
  53. pulumiverse_scaleway/get_cockpit_plan.py +125 -0
  54. pulumiverse_scaleway/get_cockpit_source.py +262 -0
  55. pulumiverse_scaleway/get_config.py +180 -0
  56. pulumiverse_scaleway/get_container.py +522 -0
  57. pulumiverse_scaleway/get_container_namespace.py +283 -0
  58. pulumiverse_scaleway/get_database.py +187 -0
  59. pulumiverse_scaleway/get_database_acl.py +143 -0
  60. pulumiverse_scaleway/get_database_backup.py +253 -0
  61. pulumiverse_scaleway/get_database_instance.py +404 -0
  62. pulumiverse_scaleway/get_database_privilege.py +181 -0
  63. pulumiverse_scaleway/get_domain_record.py +340 -0
  64. pulumiverse_scaleway/get_domain_zone.py +201 -0
  65. pulumiverse_scaleway/get_flexible_ip.py +247 -0
  66. pulumiverse_scaleway/get_flexible_ips.py +240 -0
  67. pulumiverse_scaleway/get_function.py +365 -0
  68. pulumiverse_scaleway/get_function_namespace.py +238 -0
  69. pulumiverse_scaleway/get_iam_api_key.py +210 -0
  70. pulumiverse_scaleway/get_iam_application.py +210 -0
  71. pulumiverse_scaleway/get_iam_group.py +236 -0
  72. pulumiverse_scaleway/get_iam_ssh_key.py +212 -0
  73. pulumiverse_scaleway/get_iam_user.py +177 -0
  74. pulumiverse_scaleway/get_instance_image.py +305 -0
  75. pulumiverse_scaleway/get_instance_ip.py +204 -0
  76. pulumiverse_scaleway/get_instance_placement_group.py +212 -0
  77. pulumiverse_scaleway/get_instance_private_nic.py +226 -0
  78. pulumiverse_scaleway/get_instance_security_group.py +268 -0
  79. pulumiverse_scaleway/get_instance_server.py +502 -0
  80. pulumiverse_scaleway/get_instance_servers.py +187 -0
  81. pulumiverse_scaleway/get_instance_snapshot.py +248 -0
  82. pulumiverse_scaleway/get_instance_volume.py +215 -0
  83. pulumiverse_scaleway/get_iot_device.py +257 -0
  84. pulumiverse_scaleway/get_iot_hub.py +322 -0
  85. pulumiverse_scaleway/get_ipam_ip.py +419 -0
  86. pulumiverse_scaleway/get_ipam_ips.py +358 -0
  87. pulumiverse_scaleway/get_k8s_version.py +196 -0
  88. pulumiverse_scaleway/get_kubernetes_cluster.py +417 -0
  89. pulumiverse_scaleway/get_kubernetes_node_pool.py +436 -0
  90. pulumiverse_scaleway/get_lb_acls.py +198 -0
  91. pulumiverse_scaleway/get_lb_backend.py +486 -0
  92. pulumiverse_scaleway/get_lb_backends.py +196 -0
  93. pulumiverse_scaleway/get_lb_frontend.py +274 -0
  94. pulumiverse_scaleway/get_lb_frontends.py +196 -0
  95. pulumiverse_scaleway/get_lb_ips.py +198 -0
  96. pulumiverse_scaleway/get_lb_route.py +217 -0
  97. pulumiverse_scaleway/get_lb_routes.py +179 -0
  98. pulumiverse_scaleway/get_lbs.py +187 -0
  99. pulumiverse_scaleway/get_loadbalancer.py +339 -0
  100. pulumiverse_scaleway/get_loadbalancer_certificate.py +230 -0
  101. pulumiverse_scaleway/get_loadbalancer_ip.py +228 -0
  102. pulumiverse_scaleway/get_marketplace_image.py +147 -0
  103. pulumiverse_scaleway/get_mnq_sns.py +150 -0
  104. pulumiverse_scaleway/get_mnq_sqs.py +150 -0
  105. pulumiverse_scaleway/get_mongo_db_instance.py +324 -0
  106. pulumiverse_scaleway/get_object_bucket.py +290 -0
  107. pulumiverse_scaleway/get_object_bucket_policy.py +163 -0
  108. pulumiverse_scaleway/get_redis_cluster.py +347 -0
  109. pulumiverse_scaleway/get_registry_image.py +239 -0
  110. pulumiverse_scaleway/get_registry_image_tag.py +229 -0
  111. pulumiverse_scaleway/get_registry_namespace.py +199 -0
  112. pulumiverse_scaleway/get_secret.py +338 -0
  113. pulumiverse_scaleway/get_secret_version.py +340 -0
  114. pulumiverse_scaleway/get_tem_domain.py +378 -0
  115. pulumiverse_scaleway/get_vpc.py +246 -0
  116. pulumiverse_scaleway/get_vpc_gateway_network.py +287 -0
  117. pulumiverse_scaleway/get_vpc_private_network.py +282 -0
  118. pulumiverse_scaleway/get_vpc_public_gateway.py +304 -0
  119. pulumiverse_scaleway/get_vpc_public_gateway_dhcp.py +305 -0
  120. pulumiverse_scaleway/get_vpc_public_gateway_dhcp_reservation.py +382 -0
  121. pulumiverse_scaleway/get_vpc_public_gateway_ip.py +199 -0
  122. pulumiverse_scaleway/get_vpc_public_pat_rule.py +313 -0
  123. pulumiverse_scaleway/get_vpc_routes.py +208 -0
  124. pulumiverse_scaleway/get_vpcs.py +174 -0
  125. pulumiverse_scaleway/get_web_host_offer.py +192 -0
  126. pulumiverse_scaleway/get_webhosting.py +332 -0
  127. pulumiverse_scaleway/iam_api_key.py +620 -0
  128. pulumiverse_scaleway/iam_application.py +417 -0
  129. pulumiverse_scaleway/iam_group.py +566 -0
  130. pulumiverse_scaleway/iam_group_membership.py +323 -0
  131. pulumiverse_scaleway/iam_policy.py +773 -0
  132. pulumiverse_scaleway/iam_ssh_key.py +455 -0
  133. pulumiverse_scaleway/iam_user.py +513 -0
  134. pulumiverse_scaleway/inference_deployment.py +822 -0
  135. pulumiverse_scaleway/instance_image.py +750 -0
  136. pulumiverse_scaleway/instance_ip.py +483 -0
  137. pulumiverse_scaleway/instance_ip_reverse_dns.py +308 -0
  138. pulumiverse_scaleway/instance_placement_group.py +479 -0
  139. pulumiverse_scaleway/instance_private_nic.py +555 -0
  140. pulumiverse_scaleway/instance_security_group.py +720 -0
  141. pulumiverse_scaleway/instance_security_group_rules.py +439 -0
  142. pulumiverse_scaleway/instance_server.py +2006 -0
  143. pulumiverse_scaleway/instance_snapshot.py +669 -0
  144. pulumiverse_scaleway/instance_user_data.py +435 -0
  145. pulumiverse_scaleway/instance_volume.py +535 -0
  146. pulumiverse_scaleway/iot_device.py +750 -0
  147. pulumiverse_scaleway/iot_hub.py +896 -0
  148. pulumiverse_scaleway/iot_network.py +472 -0
  149. pulumiverse_scaleway/iot_route.py +660 -0
  150. pulumiverse_scaleway/ipam_ip.py +757 -0
  151. pulumiverse_scaleway/ipam_ip_reverse_dns.py +318 -0
  152. pulumiverse_scaleway/job_definition.py +692 -0
  153. pulumiverse_scaleway/kubernetes_cluster.py +1538 -0
  154. pulumiverse_scaleway/kubernetes_node_pool.py +1255 -0
  155. pulumiverse_scaleway/loadbalancer.py +1061 -0
  156. pulumiverse_scaleway/loadbalancer_acl.py +520 -0
  157. pulumiverse_scaleway/loadbalancer_backend.py +1588 -0
  158. pulumiverse_scaleway/loadbalancer_certificate.py +460 -0
  159. pulumiverse_scaleway/loadbalancer_frontend.py +829 -0
  160. pulumiverse_scaleway/loadbalancer_ip.py +514 -0
  161. pulumiverse_scaleway/loadbalancer_route.py +523 -0
  162. pulumiverse_scaleway/mnq_nats_account.py +334 -0
  163. pulumiverse_scaleway/mnq_nats_credentials.py +330 -0
  164. pulumiverse_scaleway/mnq_sns.py +306 -0
  165. pulumiverse_scaleway/mnq_sns_credentials.py +413 -0
  166. pulumiverse_scaleway/mnq_sns_topic.py +659 -0
  167. pulumiverse_scaleway/mnq_sns_topic_subscription.py +699 -0
  168. pulumiverse_scaleway/mnq_sqs.py +304 -0
  169. pulumiverse_scaleway/mnq_sqs_credentials.py +413 -0
  170. pulumiverse_scaleway/mnq_sqs_queue.py +800 -0
  171. pulumiverse_scaleway/mongo_db_instance.py +907 -0
  172. pulumiverse_scaleway/mongo_db_snapshot.py +521 -0
  173. pulumiverse_scaleway/object_bucket.py +874 -0
  174. pulumiverse_scaleway/object_bucket_acl.py +596 -0
  175. pulumiverse_scaleway/object_bucket_lock_configuration.py +395 -0
  176. pulumiverse_scaleway/object_bucket_policy.py +673 -0
  177. pulumiverse_scaleway/object_bucket_website_configuration.py +534 -0
  178. pulumiverse_scaleway/object_item.py +776 -0
  179. pulumiverse_scaleway/outputs.py +11808 -0
  180. pulumiverse_scaleway/provider.py +327 -0
  181. pulumiverse_scaleway/pulumi-plugin.json +6 -0
  182. pulumiverse_scaleway/py.typed +0 -0
  183. pulumiverse_scaleway/redis_cluster.py +1201 -0
  184. pulumiverse_scaleway/registry_namespace.py +458 -0
  185. pulumiverse_scaleway/sdb_database.py +432 -0
  186. pulumiverse_scaleway/secret.py +663 -0
  187. pulumiverse_scaleway/secret_version.py +487 -0
  188. pulumiverse_scaleway/tem_domain.py +1030 -0
  189. pulumiverse_scaleway/tem_domain_validation.py +303 -0
  190. pulumiverse_scaleway/tem_webhook.py +640 -0
  191. pulumiverse_scaleway/vpc.py +536 -0
  192. pulumiverse_scaleway/vpc_gateway_network.py +866 -0
  193. pulumiverse_scaleway/vpc_private_network.py +734 -0
  194. pulumiverse_scaleway/vpc_public_gateway.py +789 -0
  195. pulumiverse_scaleway/vpc_public_gateway_dhcp.py +933 -0
  196. pulumiverse_scaleway/vpc_public_gateway_dhcp_reservation.py +514 -0
  197. pulumiverse_scaleway/vpc_public_gateway_ip.py +457 -0
  198. pulumiverse_scaleway/vpc_public_gateway_ip_reverse_dns.py +306 -0
  199. pulumiverse_scaleway/vpc_public_gateway_pat_rule.py +591 -0
  200. pulumiverse_scaleway/vpc_route.py +577 -0
  201. pulumiverse_scaleway/webhosting.py +805 -0
  202. pulumiverse_scaleway-1.23.0a1736837529.dist-info/METADATA +77 -0
  203. pulumiverse_scaleway-1.23.0a1736837529.dist-info/RECORD +205 -0
  204. pulumiverse_scaleway-1.23.0a1736837529.dist-info/WHEEL +5 -0
  205. pulumiverse_scaleway-1.23.0a1736837529.dist-info/top_level.txt +1 -0
@@ -0,0 +1,773 @@
1
+ # coding=utf-8
2
+ # *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. ***
3
+ # *** Do not edit by hand unless you're certain you know what you are doing! ***
4
+
5
+ import copy
6
+ import warnings
7
+ import sys
8
+ import pulumi
9
+ import pulumi.runtime
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
15
+ from . import _utilities
16
+ from . import outputs
17
+ from ._inputs import *
18
+
19
+ __all__ = ['IamPolicyArgs', 'IamPolicy']
20
+
21
+ @pulumi.input_type
22
+ class IamPolicyArgs:
23
+ def __init__(__self__, *,
24
+ rules: pulumi.Input[Sequence[pulumi.Input['IamPolicyRuleArgs']]],
25
+ application_id: Optional[pulumi.Input[str]] = None,
26
+ description: Optional[pulumi.Input[str]] = None,
27
+ group_id: Optional[pulumi.Input[str]] = None,
28
+ name: Optional[pulumi.Input[str]] = None,
29
+ no_principal: Optional[pulumi.Input[bool]] = None,
30
+ organization_id: Optional[pulumi.Input[str]] = None,
31
+ tags: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None,
32
+ user_id: Optional[pulumi.Input[str]] = None):
33
+ """
34
+ The set of arguments for constructing a IamPolicy resource.
35
+ :param pulumi.Input[Sequence[pulumi.Input['IamPolicyRuleArgs']]] rules: List of rules in the policy.
36
+ :param pulumi.Input[str] application_id: ID of the application the policy will be linked to
37
+ :param pulumi.Input[str] description: The description of the IAM policy.
38
+ :param pulumi.Input[str] group_id: ID of the group the policy will be linked to
39
+ :param pulumi.Input[str] name: The name of the IAM policy.
40
+ :param pulumi.Input[bool] no_principal: If the policy doesn't apply to a principal.
41
+
42
+ > **Important** Only one of `user_id`, `group_id`, `application_id` and `no_principal` may be set.
43
+ :param pulumi.Input[str] organization_id: `organization_id`) The ID of the organization the policy is associated with.
44
+ :param pulumi.Input[Sequence[pulumi.Input[str]]] tags: The tags associated with the IAM policy.
45
+ :param pulumi.Input[str] user_id: ID of the user the policy will be linked to
46
+ """
47
+ pulumi.set(__self__, "rules", rules)
48
+ if application_id is not None:
49
+ pulumi.set(__self__, "application_id", application_id)
50
+ if description is not None:
51
+ pulumi.set(__self__, "description", description)
52
+ if group_id is not None:
53
+ pulumi.set(__self__, "group_id", group_id)
54
+ if name is not None:
55
+ pulumi.set(__self__, "name", name)
56
+ if no_principal is not None:
57
+ pulumi.set(__self__, "no_principal", no_principal)
58
+ if organization_id is not None:
59
+ pulumi.set(__self__, "organization_id", organization_id)
60
+ if tags is not None:
61
+ pulumi.set(__self__, "tags", tags)
62
+ if user_id is not None:
63
+ pulumi.set(__self__, "user_id", user_id)
64
+
65
+ @property
66
+ @pulumi.getter
67
+ def rules(self) -> pulumi.Input[Sequence[pulumi.Input['IamPolicyRuleArgs']]]:
68
+ """
69
+ List of rules in the policy.
70
+ """
71
+ return pulumi.get(self, "rules")
72
+
73
+ @rules.setter
74
+ def rules(self, value: pulumi.Input[Sequence[pulumi.Input['IamPolicyRuleArgs']]]):
75
+ pulumi.set(self, "rules", value)
76
+
77
+ @property
78
+ @pulumi.getter(name="applicationId")
79
+ def application_id(self) -> Optional[pulumi.Input[str]]:
80
+ """
81
+ ID of the application the policy will be linked to
82
+ """
83
+ return pulumi.get(self, "application_id")
84
+
85
+ @application_id.setter
86
+ def application_id(self, value: Optional[pulumi.Input[str]]):
87
+ pulumi.set(self, "application_id", value)
88
+
89
+ @property
90
+ @pulumi.getter
91
+ def description(self) -> Optional[pulumi.Input[str]]:
92
+ """
93
+ The description of the IAM policy.
94
+ """
95
+ return pulumi.get(self, "description")
96
+
97
+ @description.setter
98
+ def description(self, value: Optional[pulumi.Input[str]]):
99
+ pulumi.set(self, "description", value)
100
+
101
+ @property
102
+ @pulumi.getter(name="groupId")
103
+ def group_id(self) -> Optional[pulumi.Input[str]]:
104
+ """
105
+ ID of the group the policy will be linked to
106
+ """
107
+ return pulumi.get(self, "group_id")
108
+
109
+ @group_id.setter
110
+ def group_id(self, value: Optional[pulumi.Input[str]]):
111
+ pulumi.set(self, "group_id", value)
112
+
113
+ @property
114
+ @pulumi.getter
115
+ def name(self) -> Optional[pulumi.Input[str]]:
116
+ """
117
+ The name of the IAM policy.
118
+ """
119
+ return pulumi.get(self, "name")
120
+
121
+ @name.setter
122
+ def name(self, value: Optional[pulumi.Input[str]]):
123
+ pulumi.set(self, "name", value)
124
+
125
+ @property
126
+ @pulumi.getter(name="noPrincipal")
127
+ def no_principal(self) -> Optional[pulumi.Input[bool]]:
128
+ """
129
+ If the policy doesn't apply to a principal.
130
+
131
+ > **Important** Only one of `user_id`, `group_id`, `application_id` and `no_principal` may be set.
132
+ """
133
+ return pulumi.get(self, "no_principal")
134
+
135
+ @no_principal.setter
136
+ def no_principal(self, value: Optional[pulumi.Input[bool]]):
137
+ pulumi.set(self, "no_principal", value)
138
+
139
+ @property
140
+ @pulumi.getter(name="organizationId")
141
+ def organization_id(self) -> Optional[pulumi.Input[str]]:
142
+ """
143
+ `organization_id`) The ID of the organization the policy is associated with.
144
+ """
145
+ return pulumi.get(self, "organization_id")
146
+
147
+ @organization_id.setter
148
+ def organization_id(self, value: Optional[pulumi.Input[str]]):
149
+ pulumi.set(self, "organization_id", value)
150
+
151
+ @property
152
+ @pulumi.getter
153
+ def tags(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]:
154
+ """
155
+ The tags associated with the IAM policy.
156
+ """
157
+ return pulumi.get(self, "tags")
158
+
159
+ @tags.setter
160
+ def tags(self, value: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]):
161
+ pulumi.set(self, "tags", value)
162
+
163
+ @property
164
+ @pulumi.getter(name="userId")
165
+ def user_id(self) -> Optional[pulumi.Input[str]]:
166
+ """
167
+ ID of the user the policy will be linked to
168
+ """
169
+ return pulumi.get(self, "user_id")
170
+
171
+ @user_id.setter
172
+ def user_id(self, value: Optional[pulumi.Input[str]]):
173
+ pulumi.set(self, "user_id", value)
174
+
175
+
176
+ @pulumi.input_type
177
+ class _IamPolicyState:
178
+ def __init__(__self__, *,
179
+ application_id: Optional[pulumi.Input[str]] = None,
180
+ created_at: Optional[pulumi.Input[str]] = None,
181
+ description: Optional[pulumi.Input[str]] = None,
182
+ editable: Optional[pulumi.Input[bool]] = None,
183
+ group_id: Optional[pulumi.Input[str]] = None,
184
+ name: Optional[pulumi.Input[str]] = None,
185
+ no_principal: Optional[pulumi.Input[bool]] = None,
186
+ organization_id: Optional[pulumi.Input[str]] = None,
187
+ rules: Optional[pulumi.Input[Sequence[pulumi.Input['IamPolicyRuleArgs']]]] = None,
188
+ tags: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None,
189
+ updated_at: Optional[pulumi.Input[str]] = None,
190
+ user_id: Optional[pulumi.Input[str]] = None):
191
+ """
192
+ Input properties used for looking up and filtering IamPolicy resources.
193
+ :param pulumi.Input[str] application_id: ID of the application the policy will be linked to
194
+ :param pulumi.Input[str] created_at: The date and time of the creation of the policy.
195
+ :param pulumi.Input[str] description: The description of the IAM policy.
196
+ :param pulumi.Input[bool] editable: Whether the policy is editable.
197
+ :param pulumi.Input[str] group_id: ID of the group the policy will be linked to
198
+ :param pulumi.Input[str] name: The name of the IAM policy.
199
+ :param pulumi.Input[bool] no_principal: If the policy doesn't apply to a principal.
200
+
201
+ > **Important** Only one of `user_id`, `group_id`, `application_id` and `no_principal` may be set.
202
+ :param pulumi.Input[str] organization_id: `organization_id`) The ID of the organization the policy is associated with.
203
+ :param pulumi.Input[Sequence[pulumi.Input['IamPolicyRuleArgs']]] rules: List of rules in the policy.
204
+ :param pulumi.Input[Sequence[pulumi.Input[str]]] tags: The tags associated with the IAM policy.
205
+ :param pulumi.Input[str] updated_at: The date and time of the last update of the policy.
206
+ :param pulumi.Input[str] user_id: ID of the user the policy will be linked to
207
+ """
208
+ if application_id is not None:
209
+ pulumi.set(__self__, "application_id", application_id)
210
+ if created_at is not None:
211
+ pulumi.set(__self__, "created_at", created_at)
212
+ if description is not None:
213
+ pulumi.set(__self__, "description", description)
214
+ if editable is not None:
215
+ pulumi.set(__self__, "editable", editable)
216
+ if group_id is not None:
217
+ pulumi.set(__self__, "group_id", group_id)
218
+ if name is not None:
219
+ pulumi.set(__self__, "name", name)
220
+ if no_principal is not None:
221
+ pulumi.set(__self__, "no_principal", no_principal)
222
+ if organization_id is not None:
223
+ pulumi.set(__self__, "organization_id", organization_id)
224
+ if rules is not None:
225
+ pulumi.set(__self__, "rules", rules)
226
+ if tags is not None:
227
+ pulumi.set(__self__, "tags", tags)
228
+ if updated_at is not None:
229
+ pulumi.set(__self__, "updated_at", updated_at)
230
+ if user_id is not None:
231
+ pulumi.set(__self__, "user_id", user_id)
232
+
233
+ @property
234
+ @pulumi.getter(name="applicationId")
235
+ def application_id(self) -> Optional[pulumi.Input[str]]:
236
+ """
237
+ ID of the application the policy will be linked to
238
+ """
239
+ return pulumi.get(self, "application_id")
240
+
241
+ @application_id.setter
242
+ def application_id(self, value: Optional[pulumi.Input[str]]):
243
+ pulumi.set(self, "application_id", value)
244
+
245
+ @property
246
+ @pulumi.getter(name="createdAt")
247
+ def created_at(self) -> Optional[pulumi.Input[str]]:
248
+ """
249
+ The date and time of the creation of the policy.
250
+ """
251
+ return pulumi.get(self, "created_at")
252
+
253
+ @created_at.setter
254
+ def created_at(self, value: Optional[pulumi.Input[str]]):
255
+ pulumi.set(self, "created_at", value)
256
+
257
+ @property
258
+ @pulumi.getter
259
+ def description(self) -> Optional[pulumi.Input[str]]:
260
+ """
261
+ The description of the IAM policy.
262
+ """
263
+ return pulumi.get(self, "description")
264
+
265
+ @description.setter
266
+ def description(self, value: Optional[pulumi.Input[str]]):
267
+ pulumi.set(self, "description", value)
268
+
269
+ @property
270
+ @pulumi.getter
271
+ def editable(self) -> Optional[pulumi.Input[bool]]:
272
+ """
273
+ Whether the policy is editable.
274
+ """
275
+ return pulumi.get(self, "editable")
276
+
277
+ @editable.setter
278
+ def editable(self, value: Optional[pulumi.Input[bool]]):
279
+ pulumi.set(self, "editable", value)
280
+
281
+ @property
282
+ @pulumi.getter(name="groupId")
283
+ def group_id(self) -> Optional[pulumi.Input[str]]:
284
+ """
285
+ ID of the group the policy will be linked to
286
+ """
287
+ return pulumi.get(self, "group_id")
288
+
289
+ @group_id.setter
290
+ def group_id(self, value: Optional[pulumi.Input[str]]):
291
+ pulumi.set(self, "group_id", value)
292
+
293
+ @property
294
+ @pulumi.getter
295
+ def name(self) -> Optional[pulumi.Input[str]]:
296
+ """
297
+ The name of the IAM policy.
298
+ """
299
+ return pulumi.get(self, "name")
300
+
301
+ @name.setter
302
+ def name(self, value: Optional[pulumi.Input[str]]):
303
+ pulumi.set(self, "name", value)
304
+
305
+ @property
306
+ @pulumi.getter(name="noPrincipal")
307
+ def no_principal(self) -> Optional[pulumi.Input[bool]]:
308
+ """
309
+ If the policy doesn't apply to a principal.
310
+
311
+ > **Important** Only one of `user_id`, `group_id`, `application_id` and `no_principal` may be set.
312
+ """
313
+ return pulumi.get(self, "no_principal")
314
+
315
+ @no_principal.setter
316
+ def no_principal(self, value: Optional[pulumi.Input[bool]]):
317
+ pulumi.set(self, "no_principal", value)
318
+
319
+ @property
320
+ @pulumi.getter(name="organizationId")
321
+ def organization_id(self) -> Optional[pulumi.Input[str]]:
322
+ """
323
+ `organization_id`) The ID of the organization the policy is associated with.
324
+ """
325
+ return pulumi.get(self, "organization_id")
326
+
327
+ @organization_id.setter
328
+ def organization_id(self, value: Optional[pulumi.Input[str]]):
329
+ pulumi.set(self, "organization_id", value)
330
+
331
+ @property
332
+ @pulumi.getter
333
+ def rules(self) -> Optional[pulumi.Input[Sequence[pulumi.Input['IamPolicyRuleArgs']]]]:
334
+ """
335
+ List of rules in the policy.
336
+ """
337
+ return pulumi.get(self, "rules")
338
+
339
+ @rules.setter
340
+ def rules(self, value: Optional[pulumi.Input[Sequence[pulumi.Input['IamPolicyRuleArgs']]]]):
341
+ pulumi.set(self, "rules", value)
342
+
343
+ @property
344
+ @pulumi.getter
345
+ def tags(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]:
346
+ """
347
+ The tags associated with the IAM policy.
348
+ """
349
+ return pulumi.get(self, "tags")
350
+
351
+ @tags.setter
352
+ def tags(self, value: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]):
353
+ pulumi.set(self, "tags", value)
354
+
355
+ @property
356
+ @pulumi.getter(name="updatedAt")
357
+ def updated_at(self) -> Optional[pulumi.Input[str]]:
358
+ """
359
+ The date and time of the last update of the policy.
360
+ """
361
+ return pulumi.get(self, "updated_at")
362
+
363
+ @updated_at.setter
364
+ def updated_at(self, value: Optional[pulumi.Input[str]]):
365
+ pulumi.set(self, "updated_at", value)
366
+
367
+ @property
368
+ @pulumi.getter(name="userId")
369
+ def user_id(self) -> Optional[pulumi.Input[str]]:
370
+ """
371
+ ID of the user the policy will be linked to
372
+ """
373
+ return pulumi.get(self, "user_id")
374
+
375
+ @user_id.setter
376
+ def user_id(self, value: Optional[pulumi.Input[str]]):
377
+ pulumi.set(self, "user_id", value)
378
+
379
+
380
+ class IamPolicy(pulumi.CustomResource):
381
+ @overload
382
+ def __init__(__self__,
383
+ resource_name: str,
384
+ opts: Optional[pulumi.ResourceOptions] = None,
385
+ application_id: Optional[pulumi.Input[str]] = None,
386
+ description: Optional[pulumi.Input[str]] = None,
387
+ group_id: Optional[pulumi.Input[str]] = None,
388
+ name: Optional[pulumi.Input[str]] = None,
389
+ no_principal: Optional[pulumi.Input[bool]] = None,
390
+ organization_id: Optional[pulumi.Input[str]] = None,
391
+ rules: Optional[pulumi.Input[Sequence[pulumi.Input[Union['IamPolicyRuleArgs', 'IamPolicyRuleArgsDict']]]]] = None,
392
+ tags: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None,
393
+ user_id: Optional[pulumi.Input[str]] = None,
394
+ __props__=None):
395
+ """
396
+ Creates and manages Scaleway IAM Policies. For more information refer to the [IAM API documentation](https://www.scaleway.com/en/developers/api/iam/#path-policies-create-a-new-policy).
397
+
398
+ > You can find a detailed list of all permission sets available at Scaleway in the permission sets [reference page](https://www.scaleway.com/en/docs/identity-and-access-management/iam/reference-content/permission-sets/).
399
+
400
+ ## Example Usage
401
+
402
+ ### Create a policy for an organization's project
403
+
404
+ ```python
405
+ import pulumi
406
+ import pulumi_scaleway as scaleway
407
+ import pulumiverse_scaleway as scaleway
408
+
409
+ default = scaleway.get_account_project(name="default")
410
+ app = scaleway.IamApplication("app", name="my app")
411
+ object_read_only = scaleway.IamPolicy("object_read_only",
412
+ name="my policy",
413
+ description="gives app readonly access to object storage in project",
414
+ application_id=app.id,
415
+ rules=[{
416
+ "project_ids": [default.id],
417
+ "permission_set_names": ["ObjectStorageReadOnly"],
418
+ }])
419
+ ```
420
+
421
+ ### Create a policy for all current and future projects in an organization
422
+
423
+ ```python
424
+ import pulumi
425
+ import pulumiverse_scaleway as scaleway
426
+
427
+ app = scaleway.IamApplication("app", name="my app")
428
+ object_read_only = scaleway.IamPolicy("object_read_only",
429
+ name="my policy",
430
+ description="gives app readonly access to object storage in project",
431
+ application_id=app.id,
432
+ rules=[{
433
+ "organization_id": app.organization_id,
434
+ "permission_set_names": ["ObjectStorageReadOnly"],
435
+ }])
436
+ ```
437
+
438
+ ### Create a policy with a particular condition
439
+
440
+ IAM policy rule can use a condition to be applied.
441
+ The following variables are available:
442
+
443
+ - `request.ip`
444
+ - `request.user_agent`
445
+ - `request.time`
446
+
447
+ ```python
448
+ import pulumi
449
+ import pulumiverse_scaleway as scaleway
450
+
451
+ main = scaleway.IamPolicy("main",
452
+ name="tf_tests_policy_condition",
453
+ no_principal=True,
454
+ rules=[{
455
+ "organization_id": "%s",
456
+ "permission_set_names": ["AllProductsFullAccess"],
457
+ "condition": "request.user_agent == 'My User Agent'",
458
+ }])
459
+ ```
460
+
461
+ ## Import
462
+
463
+ Policies can be imported using the `{id}`, e.g.
464
+
465
+ bash
466
+
467
+ ```sh
468
+ $ pulumi import scaleway:index/iamPolicy:IamPolicy main 11111111-1111-1111-1111-111111111111
469
+ ```
470
+
471
+ :param str resource_name: The name of the resource.
472
+ :param pulumi.ResourceOptions opts: Options for the resource.
473
+ :param pulumi.Input[str] application_id: ID of the application the policy will be linked to
474
+ :param pulumi.Input[str] description: The description of the IAM policy.
475
+ :param pulumi.Input[str] group_id: ID of the group the policy will be linked to
476
+ :param pulumi.Input[str] name: The name of the IAM policy.
477
+ :param pulumi.Input[bool] no_principal: If the policy doesn't apply to a principal.
478
+
479
+ > **Important** Only one of `user_id`, `group_id`, `application_id` and `no_principal` may be set.
480
+ :param pulumi.Input[str] organization_id: `organization_id`) The ID of the organization the policy is associated with.
481
+ :param pulumi.Input[Sequence[pulumi.Input[Union['IamPolicyRuleArgs', 'IamPolicyRuleArgsDict']]]] rules: List of rules in the policy.
482
+ :param pulumi.Input[Sequence[pulumi.Input[str]]] tags: The tags associated with the IAM policy.
483
+ :param pulumi.Input[str] user_id: ID of the user the policy will be linked to
484
+ """
485
+ ...
486
+ @overload
487
+ def __init__(__self__,
488
+ resource_name: str,
489
+ args: IamPolicyArgs,
490
+ opts: Optional[pulumi.ResourceOptions] = None):
491
+ """
492
+ Creates and manages Scaleway IAM Policies. For more information refer to the [IAM API documentation](https://www.scaleway.com/en/developers/api/iam/#path-policies-create-a-new-policy).
493
+
494
+ > You can find a detailed list of all permission sets available at Scaleway in the permission sets [reference page](https://www.scaleway.com/en/docs/identity-and-access-management/iam/reference-content/permission-sets/).
495
+
496
+ ## Example Usage
497
+
498
+ ### Create a policy for an organization's project
499
+
500
+ ```python
501
+ import pulumi
502
+ import pulumi_scaleway as scaleway
503
+ import pulumiverse_scaleway as scaleway
504
+
505
+ default = scaleway.get_account_project(name="default")
506
+ app = scaleway.IamApplication("app", name="my app")
507
+ object_read_only = scaleway.IamPolicy("object_read_only",
508
+ name="my policy",
509
+ description="gives app readonly access to object storage in project",
510
+ application_id=app.id,
511
+ rules=[{
512
+ "project_ids": [default.id],
513
+ "permission_set_names": ["ObjectStorageReadOnly"],
514
+ }])
515
+ ```
516
+
517
+ ### Create a policy for all current and future projects in an organization
518
+
519
+ ```python
520
+ import pulumi
521
+ import pulumiverse_scaleway as scaleway
522
+
523
+ app = scaleway.IamApplication("app", name="my app")
524
+ object_read_only = scaleway.IamPolicy("object_read_only",
525
+ name="my policy",
526
+ description="gives app readonly access to object storage in project",
527
+ application_id=app.id,
528
+ rules=[{
529
+ "organization_id": app.organization_id,
530
+ "permission_set_names": ["ObjectStorageReadOnly"],
531
+ }])
532
+ ```
533
+
534
+ ### Create a policy with a particular condition
535
+
536
+ IAM policy rule can use a condition to be applied.
537
+ The following variables are available:
538
+
539
+ - `request.ip`
540
+ - `request.user_agent`
541
+ - `request.time`
542
+
543
+ ```python
544
+ import pulumi
545
+ import pulumiverse_scaleway as scaleway
546
+
547
+ main = scaleway.IamPolicy("main",
548
+ name="tf_tests_policy_condition",
549
+ no_principal=True,
550
+ rules=[{
551
+ "organization_id": "%s",
552
+ "permission_set_names": ["AllProductsFullAccess"],
553
+ "condition": "request.user_agent == 'My User Agent'",
554
+ }])
555
+ ```
556
+
557
+ ## Import
558
+
559
+ Policies can be imported using the `{id}`, e.g.
560
+
561
+ bash
562
+
563
+ ```sh
564
+ $ pulumi import scaleway:index/iamPolicy:IamPolicy main 11111111-1111-1111-1111-111111111111
565
+ ```
566
+
567
+ :param str resource_name: The name of the resource.
568
+ :param IamPolicyArgs args: The arguments to use to populate this resource's properties.
569
+ :param pulumi.ResourceOptions opts: Options for the resource.
570
+ """
571
+ ...
572
+ def __init__(__self__, resource_name: str, *args, **kwargs):
573
+ resource_args, opts = _utilities.get_resource_args_opts(IamPolicyArgs, pulumi.ResourceOptions, *args, **kwargs)
574
+ if resource_args is not None:
575
+ __self__._internal_init(resource_name, opts, **resource_args.__dict__)
576
+ else:
577
+ __self__._internal_init(resource_name, *args, **kwargs)
578
+
579
+ def _internal_init(__self__,
580
+ resource_name: str,
581
+ opts: Optional[pulumi.ResourceOptions] = None,
582
+ application_id: Optional[pulumi.Input[str]] = None,
583
+ description: Optional[pulumi.Input[str]] = None,
584
+ group_id: Optional[pulumi.Input[str]] = None,
585
+ name: Optional[pulumi.Input[str]] = None,
586
+ no_principal: Optional[pulumi.Input[bool]] = None,
587
+ organization_id: Optional[pulumi.Input[str]] = None,
588
+ rules: Optional[pulumi.Input[Sequence[pulumi.Input[Union['IamPolicyRuleArgs', 'IamPolicyRuleArgsDict']]]]] = None,
589
+ tags: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None,
590
+ user_id: Optional[pulumi.Input[str]] = None,
591
+ __props__=None):
592
+ opts = pulumi.ResourceOptions.merge(_utilities.get_resource_opts_defaults(), opts)
593
+ if not isinstance(opts, pulumi.ResourceOptions):
594
+ raise TypeError('Expected resource options to be a ResourceOptions instance')
595
+ if opts.id is None:
596
+ if __props__ is not None:
597
+ raise TypeError('__props__ is only valid when passed in combination with a valid opts.id to get an existing resource')
598
+ __props__ = IamPolicyArgs.__new__(IamPolicyArgs)
599
+
600
+ __props__.__dict__["application_id"] = application_id
601
+ __props__.__dict__["description"] = description
602
+ __props__.__dict__["group_id"] = group_id
603
+ __props__.__dict__["name"] = name
604
+ __props__.__dict__["no_principal"] = no_principal
605
+ __props__.__dict__["organization_id"] = organization_id
606
+ if rules is None and not opts.urn:
607
+ raise TypeError("Missing required property 'rules'")
608
+ __props__.__dict__["rules"] = rules
609
+ __props__.__dict__["tags"] = tags
610
+ __props__.__dict__["user_id"] = user_id
611
+ __props__.__dict__["created_at"] = None
612
+ __props__.__dict__["editable"] = None
613
+ __props__.__dict__["updated_at"] = None
614
+ super(IamPolicy, __self__).__init__(
615
+ 'scaleway:index/iamPolicy:IamPolicy',
616
+ resource_name,
617
+ __props__,
618
+ opts)
619
+
620
+ @staticmethod
621
+ def get(resource_name: str,
622
+ id: pulumi.Input[str],
623
+ opts: Optional[pulumi.ResourceOptions] = None,
624
+ application_id: Optional[pulumi.Input[str]] = None,
625
+ created_at: Optional[pulumi.Input[str]] = None,
626
+ description: Optional[pulumi.Input[str]] = None,
627
+ editable: Optional[pulumi.Input[bool]] = None,
628
+ group_id: Optional[pulumi.Input[str]] = None,
629
+ name: Optional[pulumi.Input[str]] = None,
630
+ no_principal: Optional[pulumi.Input[bool]] = None,
631
+ organization_id: Optional[pulumi.Input[str]] = None,
632
+ rules: Optional[pulumi.Input[Sequence[pulumi.Input[Union['IamPolicyRuleArgs', 'IamPolicyRuleArgsDict']]]]] = None,
633
+ tags: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None,
634
+ updated_at: Optional[pulumi.Input[str]] = None,
635
+ user_id: Optional[pulumi.Input[str]] = None) -> 'IamPolicy':
636
+ """
637
+ Get an existing IamPolicy resource's state with the given name, id, and optional extra
638
+ properties used to qualify the lookup.
639
+
640
+ :param str resource_name: The unique name of the resulting resource.
641
+ :param pulumi.Input[str] id: The unique provider ID of the resource to lookup.
642
+ :param pulumi.ResourceOptions opts: Options for the resource.
643
+ :param pulumi.Input[str] application_id: ID of the application the policy will be linked to
644
+ :param pulumi.Input[str] created_at: The date and time of the creation of the policy.
645
+ :param pulumi.Input[str] description: The description of the IAM policy.
646
+ :param pulumi.Input[bool] editable: Whether the policy is editable.
647
+ :param pulumi.Input[str] group_id: ID of the group the policy will be linked to
648
+ :param pulumi.Input[str] name: The name of the IAM policy.
649
+ :param pulumi.Input[bool] no_principal: If the policy doesn't apply to a principal.
650
+
651
+ > **Important** Only one of `user_id`, `group_id`, `application_id` and `no_principal` may be set.
652
+ :param pulumi.Input[str] organization_id: `organization_id`) The ID of the organization the policy is associated with.
653
+ :param pulumi.Input[Sequence[pulumi.Input[Union['IamPolicyRuleArgs', 'IamPolicyRuleArgsDict']]]] rules: List of rules in the policy.
654
+ :param pulumi.Input[Sequence[pulumi.Input[str]]] tags: The tags associated with the IAM policy.
655
+ :param pulumi.Input[str] updated_at: The date and time of the last update of the policy.
656
+ :param pulumi.Input[str] user_id: ID of the user the policy will be linked to
657
+ """
658
+ opts = pulumi.ResourceOptions.merge(opts, pulumi.ResourceOptions(id=id))
659
+
660
+ __props__ = _IamPolicyState.__new__(_IamPolicyState)
661
+
662
+ __props__.__dict__["application_id"] = application_id
663
+ __props__.__dict__["created_at"] = created_at
664
+ __props__.__dict__["description"] = description
665
+ __props__.__dict__["editable"] = editable
666
+ __props__.__dict__["group_id"] = group_id
667
+ __props__.__dict__["name"] = name
668
+ __props__.__dict__["no_principal"] = no_principal
669
+ __props__.__dict__["organization_id"] = organization_id
670
+ __props__.__dict__["rules"] = rules
671
+ __props__.__dict__["tags"] = tags
672
+ __props__.__dict__["updated_at"] = updated_at
673
+ __props__.__dict__["user_id"] = user_id
674
+ return IamPolicy(resource_name, opts=opts, __props__=__props__)
675
+
676
+ @property
677
+ @pulumi.getter(name="applicationId")
678
+ def application_id(self) -> pulumi.Output[Optional[str]]:
679
+ """
680
+ ID of the application the policy will be linked to
681
+ """
682
+ return pulumi.get(self, "application_id")
683
+
684
+ @property
685
+ @pulumi.getter(name="createdAt")
686
+ def created_at(self) -> pulumi.Output[str]:
687
+ """
688
+ The date and time of the creation of the policy.
689
+ """
690
+ return pulumi.get(self, "created_at")
691
+
692
+ @property
693
+ @pulumi.getter
694
+ def description(self) -> pulumi.Output[Optional[str]]:
695
+ """
696
+ The description of the IAM policy.
697
+ """
698
+ return pulumi.get(self, "description")
699
+
700
+ @property
701
+ @pulumi.getter
702
+ def editable(self) -> pulumi.Output[bool]:
703
+ """
704
+ Whether the policy is editable.
705
+ """
706
+ return pulumi.get(self, "editable")
707
+
708
+ @property
709
+ @pulumi.getter(name="groupId")
710
+ def group_id(self) -> pulumi.Output[Optional[str]]:
711
+ """
712
+ ID of the group the policy will be linked to
713
+ """
714
+ return pulumi.get(self, "group_id")
715
+
716
+ @property
717
+ @pulumi.getter
718
+ def name(self) -> pulumi.Output[str]:
719
+ """
720
+ The name of the IAM policy.
721
+ """
722
+ return pulumi.get(self, "name")
723
+
724
+ @property
725
+ @pulumi.getter(name="noPrincipal")
726
+ def no_principal(self) -> pulumi.Output[Optional[bool]]:
727
+ """
728
+ If the policy doesn't apply to a principal.
729
+
730
+ > **Important** Only one of `user_id`, `group_id`, `application_id` and `no_principal` may be set.
731
+ """
732
+ return pulumi.get(self, "no_principal")
733
+
734
+ @property
735
+ @pulumi.getter(name="organizationId")
736
+ def organization_id(self) -> pulumi.Output[str]:
737
+ """
738
+ `organization_id`) The ID of the organization the policy is associated with.
739
+ """
740
+ return pulumi.get(self, "organization_id")
741
+
742
+ @property
743
+ @pulumi.getter
744
+ def rules(self) -> pulumi.Output[Sequence['outputs.IamPolicyRule']]:
745
+ """
746
+ List of rules in the policy.
747
+ """
748
+ return pulumi.get(self, "rules")
749
+
750
+ @property
751
+ @pulumi.getter
752
+ def tags(self) -> pulumi.Output[Optional[Sequence[str]]]:
753
+ """
754
+ The tags associated with the IAM policy.
755
+ """
756
+ return pulumi.get(self, "tags")
757
+
758
+ @property
759
+ @pulumi.getter(name="updatedAt")
760
+ def updated_at(self) -> pulumi.Output[str]:
761
+ """
762
+ The date and time of the last update of the policy.
763
+ """
764
+ return pulumi.get(self, "updated_at")
765
+
766
+ @property
767
+ @pulumi.getter(name="userId")
768
+ def user_id(self) -> pulumi.Output[Optional[str]]:
769
+ """
770
+ ID of the user the policy will be linked to
771
+ """
772
+ return pulumi.get(self, "user_id")
773
+