pulumi-gcp 8.7.0a1730183903__py3-none-any.whl → 8.8.0__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.
Files changed (437) hide show
  1. pulumi_gcp/__init__.py +78 -0
  2. pulumi_gcp/accesscontextmanager/access_policy_iam_binding.py +4 -4
  3. pulumi_gcp/accesscontextmanager/access_policy_iam_member.py +4 -4
  4. pulumi_gcp/accesscontextmanager/access_policy_iam_policy.py +4 -4
  5. pulumi_gcp/accesscontextmanager/service_perimeter.py +2 -0
  6. pulumi_gcp/accesscontextmanager/service_perimeter_dry_run_egress_policy.py +4 -0
  7. pulumi_gcp/accesscontextmanager/service_perimeter_dry_run_ingress_policy.py +4 -0
  8. pulumi_gcp/accesscontextmanager/service_perimeter_egress_policy.py +4 -0
  9. pulumi_gcp/accesscontextmanager/service_perimeter_ingress_policy.py +4 -0
  10. pulumi_gcp/accesscontextmanager/service_perimeters.py +2 -0
  11. pulumi_gcp/apigateway/api_config_iam_binding.py +2 -2
  12. pulumi_gcp/apigateway/api_config_iam_member.py +2 -2
  13. pulumi_gcp/apigateway/api_config_iam_policy.py +2 -2
  14. pulumi_gcp/apigateway/api_iam_binding.py +2 -2
  15. pulumi_gcp/apigateway/api_iam_member.py +2 -2
  16. pulumi_gcp/apigateway/api_iam_policy.py +2 -2
  17. pulumi_gcp/apigateway/gateway_iam_binding.py +2 -2
  18. pulumi_gcp/apigateway/gateway_iam_member.py +2 -2
  19. pulumi_gcp/apigateway/gateway_iam_policy.py +2 -2
  20. pulumi_gcp/apigee/__init__.py +2 -0
  21. pulumi_gcp/apigee/_inputs.py +108 -0
  22. pulumi_gcp/apigee/app_group.py +811 -0
  23. pulumi_gcp/apigee/developer.py +757 -0
  24. pulumi_gcp/apigee/environment_iam_binding.py +4 -4
  25. pulumi_gcp/apigee/environment_iam_member.py +4 -4
  26. pulumi_gcp/apigee/environment_iam_policy.py +4 -4
  27. pulumi_gcp/apigee/outputs.py +64 -0
  28. pulumi_gcp/appengine/engine_split_traffic.py +4 -4
  29. pulumi_gcp/apphub/_inputs.py +6 -3
  30. pulumi_gcp/apphub/application.py +30 -4
  31. pulumi_gcp/apphub/outputs.py +8 -4
  32. pulumi_gcp/artifactregistry/get_docker_image.py +40 -0
  33. pulumi_gcp/artifactregistry/repository_iam_binding.py +2 -2
  34. pulumi_gcp/artifactregistry/repository_iam_member.py +2 -2
  35. pulumi_gcp/artifactregistry/repository_iam_policy.py +2 -2
  36. pulumi_gcp/assuredworkloads/_inputs.py +34 -0
  37. pulumi_gcp/assuredworkloads/outputs.py +37 -0
  38. pulumi_gcp/assuredworkloads/workload.py +56 -3
  39. pulumi_gcp/backupdisasterrecovery/_inputs.py +0 -6
  40. pulumi_gcp/backupdisasterrecovery/management_server.py +80 -34
  41. pulumi_gcp/backupdisasterrecovery/outputs.py +0 -4
  42. pulumi_gcp/biglake/table.py +12 -12
  43. pulumi_gcp/bigquery/_inputs.py +60 -0
  44. pulumi_gcp/bigquery/connection.py +14 -14
  45. pulumi_gcp/bigquery/connection_iam_binding.py +2 -2
  46. pulumi_gcp/bigquery/connection_iam_member.py +2 -2
  47. pulumi_gcp/bigquery/connection_iam_policy.py +2 -2
  48. pulumi_gcp/bigquery/dataset.py +99 -2
  49. pulumi_gcp/bigquery/dataset_access.py +2 -2
  50. pulumi_gcp/bigquery/dataset_iam_binding.py +53 -0
  51. pulumi_gcp/bigquery/dataset_iam_member.py +53 -0
  52. pulumi_gcp/bigquery/dataset_iam_policy.py +32 -0
  53. pulumi_gcp/bigquery/get_dataset.py +12 -1
  54. pulumi_gcp/bigquery/iam_binding.py +2 -2
  55. pulumi_gcp/bigquery/iam_member.py +2 -2
  56. pulumi_gcp/bigquery/iam_policy.py +2 -2
  57. pulumi_gcp/bigquery/job.py +6 -6
  58. pulumi_gcp/bigquery/outputs.py +87 -0
  59. pulumi_gcp/bigquery/routine.py +6 -6
  60. pulumi_gcp/bigqueryanalyticshub/data_exchange_iam_binding.py +2 -2
  61. pulumi_gcp/bigqueryanalyticshub/data_exchange_iam_member.py +2 -2
  62. pulumi_gcp/bigqueryanalyticshub/data_exchange_iam_policy.py +2 -2
  63. pulumi_gcp/bigqueryanalyticshub/listing_iam_binding.py +2 -2
  64. pulumi_gcp/bigqueryanalyticshub/listing_iam_member.py +2 -2
  65. pulumi_gcp/bigqueryanalyticshub/listing_iam_policy.py +2 -2
  66. pulumi_gcp/bigquerydatapolicy/data_policy_iam_binding.py +2 -2
  67. pulumi_gcp/bigquerydatapolicy/data_policy_iam_member.py +2 -2
  68. pulumi_gcp/bigquerydatapolicy/data_policy_iam_policy.py +2 -2
  69. pulumi_gcp/binaryauthorization/attestor_iam_binding.py +2 -2
  70. pulumi_gcp/binaryauthorization/attestor_iam_member.py +2 -2
  71. pulumi_gcp/binaryauthorization/attestor_iam_policy.py +2 -2
  72. pulumi_gcp/certificateauthority/ca_pool_iam_binding.py +2 -2
  73. pulumi_gcp/certificateauthority/ca_pool_iam_member.py +2 -2
  74. pulumi_gcp/certificateauthority/ca_pool_iam_policy.py +2 -2
  75. pulumi_gcp/certificateauthority/certificate_template_iam_binding.py +2 -2
  76. pulumi_gcp/certificateauthority/certificate_template_iam_member.py +2 -2
  77. pulumi_gcp/certificateauthority/certificate_template_iam_policy.py +2 -2
  78. pulumi_gcp/cloudbuild/trigger.py +18 -18
  79. pulumi_gcp/cloudbuildv2/connection_iam_binding.py +2 -2
  80. pulumi_gcp/cloudbuildv2/connection_iam_member.py +2 -2
  81. pulumi_gcp/cloudbuildv2/connection_iam_policy.py +2 -2
  82. pulumi_gcp/clouddeploy/delivery_pipeline.py +10 -10
  83. pulumi_gcp/cloudfunctions/function_iam_binding.py +2 -2
  84. pulumi_gcp/cloudfunctions/function_iam_member.py +2 -2
  85. pulumi_gcp/cloudfunctions/function_iam_policy.py +2 -2
  86. pulumi_gcp/cloudfunctionsv2/function.py +22 -22
  87. pulumi_gcp/cloudfunctionsv2/function_iam_binding.py +2 -2
  88. pulumi_gcp/cloudfunctionsv2/function_iam_member.py +2 -2
  89. pulumi_gcp/cloudfunctionsv2/function_iam_policy.py +2 -2
  90. pulumi_gcp/cloudrun/iam_binding.py +2 -2
  91. pulumi_gcp/cloudrun/iam_member.py +2 -2
  92. pulumi_gcp/cloudrun/iam_policy.py +2 -2
  93. pulumi_gcp/cloudrun/service.py +24 -24
  94. pulumi_gcp/cloudrunv2/get_service.py +12 -1
  95. pulumi_gcp/cloudrunv2/job_iam_binding.py +2 -2
  96. pulumi_gcp/cloudrunv2/job_iam_member.py +2 -2
  97. pulumi_gcp/cloudrunv2/job_iam_policy.py +2 -2
  98. pulumi_gcp/cloudrunv2/service.py +94 -2
  99. pulumi_gcp/cloudrunv2/service_iam_binding.py +2 -2
  100. pulumi_gcp/cloudrunv2/service_iam_member.py +2 -2
  101. pulumi_gcp/cloudrunv2/service_iam_policy.py +2 -2
  102. pulumi_gcp/cloudscheduler/job.py +4 -4
  103. pulumi_gcp/cloudtasks/queue_iam_binding.py +2 -2
  104. pulumi_gcp/cloudtasks/queue_iam_member.py +2 -2
  105. pulumi_gcp/cloudtasks/queue_iam_policy.py +2 -2
  106. pulumi_gcp/compute/__init__.py +1 -0
  107. pulumi_gcp/compute/_inputs.py +396 -166
  108. pulumi_gcp/compute/backend_bucket_iam_binding.py +2 -2
  109. pulumi_gcp/compute/backend_bucket_iam_member.py +2 -2
  110. pulumi_gcp/compute/backend_bucket_iam_policy.py +2 -2
  111. pulumi_gcp/compute/backend_service.py +76 -0
  112. pulumi_gcp/compute/backend_service_iam_binding.py +2 -2
  113. pulumi_gcp/compute/backend_service_iam_member.py +2 -2
  114. pulumi_gcp/compute/backend_service_iam_policy.py +2 -2
  115. pulumi_gcp/compute/disk_iam_binding.py +2 -2
  116. pulumi_gcp/compute/disk_iam_member.py +2 -2
  117. pulumi_gcp/compute/disk_iam_policy.py +2 -2
  118. pulumi_gcp/compute/get_backend_service.py +12 -1
  119. pulumi_gcp/compute/get_instance.py +29 -1
  120. pulumi_gcp/compute/get_instance_guest_attributes.py +277 -0
  121. pulumi_gcp/compute/get_instance_template.py +29 -1
  122. pulumi_gcp/compute/get_region_instance_group_manager.py +0 -18
  123. pulumi_gcp/compute/get_region_instance_template.py +29 -1
  124. pulumi_gcp/compute/image.py +76 -22
  125. pulumi_gcp/compute/image_iam_binding.py +2 -2
  126. pulumi_gcp/compute/image_iam_member.py +2 -2
  127. pulumi_gcp/compute/image_iam_policy.py +2 -2
  128. pulumi_gcp/compute/instance.py +89 -0
  129. pulumi_gcp/compute/instance_from_machine_image.py +82 -0
  130. pulumi_gcp/compute/instance_from_template.py +82 -0
  131. pulumi_gcp/compute/instance_iam_binding.py +2 -2
  132. pulumi_gcp/compute/instance_iam_member.py +2 -2
  133. pulumi_gcp/compute/instance_iam_policy.py +2 -2
  134. pulumi_gcp/compute/instance_template.py +75 -0
  135. pulumi_gcp/compute/machine_image_iam_binding.py +2 -2
  136. pulumi_gcp/compute/machine_image_iam_member.py +2 -2
  137. pulumi_gcp/compute/machine_image_iam_policy.py +2 -2
  138. pulumi_gcp/compute/network_firewall_policy_association.py +76 -50
  139. pulumi_gcp/compute/network_firewall_policy_rule.py +149 -103
  140. pulumi_gcp/compute/outputs.py +367 -110
  141. pulumi_gcp/compute/region_backend_service.py +94 -0
  142. pulumi_gcp/compute/region_backend_service_iam_binding.py +2 -2
  143. pulumi_gcp/compute/region_backend_service_iam_member.py +2 -2
  144. pulumi_gcp/compute/region_backend_service_iam_policy.py +2 -2
  145. pulumi_gcp/compute/region_disk_iam_binding.py +2 -2
  146. pulumi_gcp/compute/region_disk_iam_member.py +2 -2
  147. pulumi_gcp/compute/region_disk_iam_policy.py +2 -2
  148. pulumi_gcp/compute/region_instance_template.py +75 -0
  149. pulumi_gcp/compute/region_network_endpoint_group.py +6 -4
  150. pulumi_gcp/compute/region_network_firewall_policy_association.py +104 -54
  151. pulumi_gcp/compute/region_network_firewall_policy_rule.py +160 -107
  152. pulumi_gcp/compute/region_security_policy_rule.py +74 -0
  153. pulumi_gcp/compute/security_policy_rule.py +111 -13
  154. pulumi_gcp/compute/snapshot_iam_binding.py +2 -2
  155. pulumi_gcp/compute/snapshot_iam_member.py +2 -2
  156. pulumi_gcp/compute/snapshot_iam_policy.py +2 -2
  157. pulumi_gcp/compute/subnetwork_iam_binding.py +2 -2
  158. pulumi_gcp/compute/subnetwork_iam_member.py +2 -2
  159. pulumi_gcp/compute/subnetwork_iam_policy.py +2 -2
  160. pulumi_gcp/compute/url_map.py +10 -10
  161. pulumi_gcp/config/__init__.pyi +4 -0
  162. pulumi_gcp/config/vars.py +8 -0
  163. pulumi_gcp/container/attached_cluster.py +9 -6
  164. pulumi_gcp/container/aws_node_pool.py +12 -12
  165. pulumi_gcp/container/outputs.py +2 -2
  166. pulumi_gcp/containeranalysis/note_iam_binding.py +2 -2
  167. pulumi_gcp/containeranalysis/note_iam_member.py +2 -2
  168. pulumi_gcp/containeranalysis/note_iam_policy.py +2 -2
  169. pulumi_gcp/datacatalog/entry_group_iam_binding.py +2 -2
  170. pulumi_gcp/datacatalog/entry_group_iam_member.py +2 -2
  171. pulumi_gcp/datacatalog/entry_group_iam_policy.py +2 -2
  172. pulumi_gcp/datacatalog/policy_tag_iam_binding.py +4 -4
  173. pulumi_gcp/datacatalog/policy_tag_iam_member.py +4 -4
  174. pulumi_gcp/datacatalog/policy_tag_iam_policy.py +4 -4
  175. pulumi_gcp/datacatalog/tag_template_iam_binding.py +2 -2
  176. pulumi_gcp/datacatalog/tag_template_iam_member.py +2 -2
  177. pulumi_gcp/datacatalog/tag_template_iam_policy.py +2 -2
  178. pulumi_gcp/datacatalog/taxonomy_iam_binding.py +2 -2
  179. pulumi_gcp/datacatalog/taxonomy_iam_member.py +2 -2
  180. pulumi_gcp/datacatalog/taxonomy_iam_policy.py +2 -2
  181. pulumi_gcp/dataplex/aspect_type_iam_binding.py +2 -2
  182. pulumi_gcp/dataplex/aspect_type_iam_member.py +2 -2
  183. pulumi_gcp/dataplex/aspect_type_iam_policy.py +2 -2
  184. pulumi_gcp/dataplex/asset_iam_binding.py +2 -2
  185. pulumi_gcp/dataplex/asset_iam_member.py +2 -2
  186. pulumi_gcp/dataplex/asset_iam_policy.py +2 -2
  187. pulumi_gcp/dataplex/datascan_iam_binding.py +2 -2
  188. pulumi_gcp/dataplex/datascan_iam_member.py +2 -2
  189. pulumi_gcp/dataplex/datascan_iam_policy.py +2 -2
  190. pulumi_gcp/dataplex/entry_group_iam_binding.py +2 -2
  191. pulumi_gcp/dataplex/entry_group_iam_member.py +2 -2
  192. pulumi_gcp/dataplex/entry_group_iam_policy.py +2 -2
  193. pulumi_gcp/dataplex/entry_type_iam_binding.py +2 -2
  194. pulumi_gcp/dataplex/entry_type_iam_member.py +2 -2
  195. pulumi_gcp/dataplex/entry_type_iam_policy.py +2 -2
  196. pulumi_gcp/dataplex/lake_iam_binding.py +2 -2
  197. pulumi_gcp/dataplex/lake_iam_member.py +2 -2
  198. pulumi_gcp/dataplex/lake_iam_policy.py +2 -2
  199. pulumi_gcp/dataplex/task.py +4 -4
  200. pulumi_gcp/dataplex/task_iam_binding.py +2 -2
  201. pulumi_gcp/dataplex/task_iam_member.py +2 -2
  202. pulumi_gcp/dataplex/task_iam_policy.py +2 -2
  203. pulumi_gcp/dataplex/zone_iam_binding.py +2 -2
  204. pulumi_gcp/dataplex/zone_iam_member.py +2 -2
  205. pulumi_gcp/dataplex/zone_iam_policy.py +2 -2
  206. pulumi_gcp/dataproc/autoscaling_policy_iam_binding.py +2 -2
  207. pulumi_gcp/dataproc/autoscaling_policy_iam_member.py +2 -2
  208. pulumi_gcp/dataproc/autoscaling_policy_iam_policy.py +2 -2
  209. pulumi_gcp/dataproc/batch.py +24 -24
  210. pulumi_gcp/dataproc/cluster.py +2 -2
  211. pulumi_gcp/dataproc/job.py +4 -4
  212. pulumi_gcp/dataproc/metastore_federation_iam_binding.py +2 -2
  213. pulumi_gcp/dataproc/metastore_federation_iam_member.py +2 -2
  214. pulumi_gcp/dataproc/metastore_federation_iam_policy.py +2 -2
  215. pulumi_gcp/dataproc/metastore_service_iam_binding.py +2 -2
  216. pulumi_gcp/dataproc/metastore_service_iam_member.py +2 -2
  217. pulumi_gcp/dataproc/metastore_service_iam_policy.py +2 -2
  218. pulumi_gcp/datastream/stream.py +2 -2
  219. pulumi_gcp/diagflow/_inputs.py +472 -2
  220. pulumi_gcp/diagflow/cx_agent.py +64 -4
  221. pulumi_gcp/diagflow/cx_flow.py +34 -4
  222. pulumi_gcp/diagflow/cx_page.py +10 -10
  223. pulumi_gcp/diagflow/outputs.py +378 -2
  224. pulumi_gcp/dns/dns_managed_zone_iam_binding.py +2 -2
  225. pulumi_gcp/dns/dns_managed_zone_iam_member.py +2 -2
  226. pulumi_gcp/dns/dns_managed_zone_iam_policy.py +2 -2
  227. pulumi_gcp/endpoints/consumers_iam_binding.py +2 -2
  228. pulumi_gcp/endpoints/consumers_iam_member.py +2 -2
  229. pulumi_gcp/endpoints/consumers_iam_policy.py +2 -2
  230. pulumi_gcp/endpoints/service_iam_binding.py +4 -4
  231. pulumi_gcp/endpoints/service_iam_member.py +4 -4
  232. pulumi_gcp/endpoints/service_iam_policy.py +4 -4
  233. pulumi_gcp/firebase/extensions_instance.py +24 -24
  234. pulumi_gcp/gkebackup/backup_plan_iam_binding.py +2 -2
  235. pulumi_gcp/gkebackup/backup_plan_iam_member.py +2 -2
  236. pulumi_gcp/gkebackup/backup_plan_iam_policy.py +2 -2
  237. pulumi_gcp/gkebackup/restore_plan.py +18 -18
  238. pulumi_gcp/gkebackup/restore_plan_iam_binding.py +2 -2
  239. pulumi_gcp/gkebackup/restore_plan_iam_member.py +2 -2
  240. pulumi_gcp/gkebackup/restore_plan_iam_policy.py +2 -2
  241. pulumi_gcp/gkehub/_inputs.py +21 -21
  242. pulumi_gcp/gkehub/feature.py +2 -4
  243. pulumi_gcp/gkehub/feature_iam_binding.py +2 -2
  244. pulumi_gcp/gkehub/feature_iam_member.py +2 -2
  245. pulumi_gcp/gkehub/feature_iam_policy.py +2 -2
  246. pulumi_gcp/gkehub/membership_iam_binding.py +2 -2
  247. pulumi_gcp/gkehub/membership_iam_member.py +2 -2
  248. pulumi_gcp/gkehub/membership_iam_policy.py +2 -2
  249. pulumi_gcp/gkehub/outputs.py +13 -13
  250. pulumi_gcp/gkehub/scope_iam_binding.py +2 -2
  251. pulumi_gcp/gkehub/scope_iam_member.py +2 -2
  252. pulumi_gcp/gkehub/scope_iam_policy.py +2 -2
  253. pulumi_gcp/healthcare/consent_store_iam_binding.py +4 -4
  254. pulumi_gcp/healthcare/consent_store_iam_member.py +4 -4
  255. pulumi_gcp/healthcare/consent_store_iam_policy.py +4 -4
  256. pulumi_gcp/iam/workload_identity_pool_provider.py +56 -0
  257. pulumi_gcp/iap/__init__.py +1 -0
  258. pulumi_gcp/iap/_inputs.py +1002 -0
  259. pulumi_gcp/iap/app_engine_service_iam_binding.py +2 -2
  260. pulumi_gcp/iap/app_engine_service_iam_member.py +2 -2
  261. pulumi_gcp/iap/app_engine_service_iam_policy.py +2 -2
  262. pulumi_gcp/iap/app_engine_version_iam_binding.py +2 -2
  263. pulumi_gcp/iap/app_engine_version_iam_member.py +2 -2
  264. pulumi_gcp/iap/app_engine_version_iam_policy.py +2 -2
  265. pulumi_gcp/iap/outputs.py +827 -0
  266. pulumi_gcp/iap/settings.py +546 -0
  267. pulumi_gcp/iap/tunnel_dest_group_iam_binding.py +2 -2
  268. pulumi_gcp/iap/tunnel_dest_group_iam_member.py +2 -2
  269. pulumi_gcp/iap/tunnel_dest_group_iam_policy.py +2 -2
  270. pulumi_gcp/iap/tunnel_iam_binding.py +2 -2
  271. pulumi_gcp/iap/tunnel_iam_member.py +2 -2
  272. pulumi_gcp/iap/tunnel_iam_policy.py +2 -2
  273. pulumi_gcp/iap/tunnel_instance_iam_binding.py +2 -2
  274. pulumi_gcp/iap/tunnel_instance_iam_member.py +2 -2
  275. pulumi_gcp/iap/tunnel_instance_iam_policy.py +2 -2
  276. pulumi_gcp/iap/web_backend_service_iam_binding.py +2 -2
  277. pulumi_gcp/iap/web_backend_service_iam_member.py +2 -2
  278. pulumi_gcp/iap/web_backend_service_iam_policy.py +2 -2
  279. pulumi_gcp/iap/web_iam_binding.py +2 -2
  280. pulumi_gcp/iap/web_iam_member.py +2 -2
  281. pulumi_gcp/iap/web_iam_policy.py +2 -2
  282. pulumi_gcp/iap/web_region_backend_service_iam_binding.py +2 -2
  283. pulumi_gcp/iap/web_region_backend_service_iam_member.py +2 -2
  284. pulumi_gcp/iap/web_region_backend_service_iam_policy.py +2 -2
  285. pulumi_gcp/iap/web_type_app_enging_iam_binding.py +2 -2
  286. pulumi_gcp/iap/web_type_app_enging_iam_member.py +2 -2
  287. pulumi_gcp/iap/web_type_app_enging_iam_policy.py +2 -2
  288. pulumi_gcp/iap/web_type_compute_iam_binding.py +2 -2
  289. pulumi_gcp/iap/web_type_compute_iam_member.py +2 -2
  290. pulumi_gcp/iap/web_type_compute_iam_policy.py +2 -2
  291. pulumi_gcp/identityplatform/config.py +2 -2
  292. pulumi_gcp/kms/ekm_connection_iam_binding.py +2 -2
  293. pulumi_gcp/kms/ekm_connection_iam_member.py +2 -2
  294. pulumi_gcp/kms/ekm_connection_iam_policy.py +2 -2
  295. pulumi_gcp/logging/log_view_iam_binding.py +4 -4
  296. pulumi_gcp/logging/log_view_iam_member.py +4 -4
  297. pulumi_gcp/logging/log_view_iam_policy.py +4 -4
  298. pulumi_gcp/looker/instance.py +104 -2
  299. pulumi_gcp/memorystore/_inputs.py +117 -4
  300. pulumi_gcp/memorystore/instance.py +105 -0
  301. pulumi_gcp/memorystore/outputs.py +80 -4
  302. pulumi_gcp/monitoring/_inputs.py +23 -0
  303. pulumi_gcp/monitoring/get_secret_version.py +22 -3
  304. pulumi_gcp/monitoring/outputs.py +16 -0
  305. pulumi_gcp/networkconnectivity/__init__.py +1 -0
  306. pulumi_gcp/networkconnectivity/_inputs.py +148 -0
  307. pulumi_gcp/networkconnectivity/group.py +764 -0
  308. pulumi_gcp/networkconnectivity/outputs.py +125 -0
  309. pulumi_gcp/networkconnectivity/spoke.py +144 -0
  310. pulumi_gcp/networksecurity/address_group_iam_binding.py +2 -2
  311. pulumi_gcp/networksecurity/address_group_iam_member.py +2 -2
  312. pulumi_gcp/networksecurity/address_group_iam_policy.py +2 -2
  313. pulumi_gcp/networksecurity/gateway_security_policy.py +7 -0
  314. pulumi_gcp/networksecurity/server_tls_policy.py +2 -2
  315. pulumi_gcp/networkservices/edge_cache_service.py +2 -2
  316. pulumi_gcp/networkservices/http_route.py +4 -4
  317. pulumi_gcp/notebooks/instance_iam_binding.py +2 -2
  318. pulumi_gcp/notebooks/instance_iam_member.py +2 -2
  319. pulumi_gcp/notebooks/instance_iam_policy.py +2 -2
  320. pulumi_gcp/notebooks/runtime_iam_binding.py +2 -2
  321. pulumi_gcp/notebooks/runtime_iam_member.py +2 -2
  322. pulumi_gcp/notebooks/runtime_iam_policy.py +2 -2
  323. pulumi_gcp/oracledatabase/__init__.py +20 -0
  324. pulumi_gcp/oracledatabase/_inputs.py +4745 -0
  325. pulumi_gcp/oracledatabase/autonomous_database.py +983 -0
  326. pulumi_gcp/oracledatabase/cloud_exadata_infrastructure.py +842 -0
  327. pulumi_gcp/oracledatabase/cloud_vm_cluster.py +1086 -0
  328. pulumi_gcp/oracledatabase/get_autonomous_database.py +290 -0
  329. pulumi_gcp/oracledatabase/get_autonomous_databases.py +150 -0
  330. pulumi_gcp/oracledatabase/get_cloud_exadata_infrastructure.py +257 -0
  331. pulumi_gcp/oracledatabase/get_cloud_exadata_infrastructures.py +150 -0
  332. pulumi_gcp/oracledatabase/get_cloud_vm_cluster.py +290 -0
  333. pulumi_gcp/oracledatabase/get_cloud_vm_clusters.py +150 -0
  334. pulumi_gcp/oracledatabase/get_db_nodes.py +245 -0
  335. pulumi_gcp/oracledatabase/get_db_servers.py +245 -0
  336. pulumi_gcp/oracledatabase/outputs.py +9304 -0
  337. pulumi_gcp/organizations/folder.py +7 -7
  338. pulumi_gcp/organizations/project.py +7 -7
  339. pulumi_gcp/orgpolicy/_inputs.py +3 -3
  340. pulumi_gcp/orgpolicy/outputs.py +2 -2
  341. pulumi_gcp/osconfig/os_policy_assignment.py +4 -4
  342. pulumi_gcp/privilegedaccessmanager/get_entitlement.py +46 -2
  343. pulumi_gcp/provider.py +40 -0
  344. pulumi_gcp/pubsub/schema_iam_binding.py +2 -2
  345. pulumi_gcp/pubsub/schema_iam_member.py +2 -2
  346. pulumi_gcp/pubsub/schema_iam_policy.py +2 -2
  347. pulumi_gcp/pubsub/subscription.py +18 -66
  348. pulumi_gcp/pubsub/topic_iam_binding.py +2 -2
  349. pulumi_gcp/pubsub/topic_iam_member.py +2 -2
  350. pulumi_gcp/pubsub/topic_iam_policy.py +2 -2
  351. pulumi_gcp/pulumi-plugin.json +1 -1
  352. pulumi_gcp/runtimeconfig/config_iam_binding.py +2 -2
  353. pulumi_gcp/runtimeconfig/config_iam_member.py +2 -2
  354. pulumi_gcp/runtimeconfig/config_iam_policy.py +2 -2
  355. pulumi_gcp/secretmanager/get_regional_secret_version.py +24 -5
  356. pulumi_gcp/secretmanager/get_regional_secret_version_access.py +24 -5
  357. pulumi_gcp/secretmanager/get_secret_version.py +22 -3
  358. pulumi_gcp/secretmanager/get_secret_version_access.py +22 -3
  359. pulumi_gcp/secretmanager/regional_secret.py +2 -2
  360. pulumi_gcp/secretmanager/regional_secret_iam_binding.py +2 -2
  361. pulumi_gcp/secretmanager/regional_secret_iam_member.py +2 -2
  362. pulumi_gcp/secretmanager/regional_secret_iam_policy.py +2 -2
  363. pulumi_gcp/secretmanager/secret_iam_binding.py +2 -2
  364. pulumi_gcp/secretmanager/secret_iam_member.py +2 -2
  365. pulumi_gcp/secretmanager/secret_iam_policy.py +2 -2
  366. pulumi_gcp/securesourcemanager/repository_iam_binding.py +2 -2
  367. pulumi_gcp/securesourcemanager/repository_iam_member.py +2 -2
  368. pulumi_gcp/securesourcemanager/repository_iam_policy.py +2 -2
  369. pulumi_gcp/securitycenter/v2_organization_source_iam_binding.py +4 -4
  370. pulumi_gcp/securitycenter/v2_organization_source_iam_member.py +4 -4
  371. pulumi_gcp/securitycenter/v2_organization_source_iam_policy.py +4 -4
  372. pulumi_gcp/serviceaccount/__init__.py +1 -0
  373. pulumi_gcp/serviceaccount/get_account.py +15 -1
  374. pulumi_gcp/serviceaccount/get_s.py +132 -0
  375. pulumi_gcp/serviceaccount/outputs.py +89 -0
  376. pulumi_gcp/servicedirectory/namespace_iam_binding.py +4 -4
  377. pulumi_gcp/servicedirectory/namespace_iam_member.py +4 -4
  378. pulumi_gcp/servicedirectory/namespace_iam_policy.py +4 -4
  379. pulumi_gcp/servicedirectory/service_iam_binding.py +4 -4
  380. pulumi_gcp/servicedirectory/service_iam_member.py +4 -4
  381. pulumi_gcp/servicedirectory/service_iam_policy.py +4 -4
  382. pulumi_gcp/siteverification/get_token.py +0 -16
  383. pulumi_gcp/siteverification/owner.py +0 -16
  384. pulumi_gcp/sourcerepo/repository_iam_binding.py +2 -2
  385. pulumi_gcp/sourcerepo/repository_iam_member.py +2 -2
  386. pulumi_gcp/sourcerepo/repository_iam_policy.py +2 -2
  387. pulumi_gcp/spanner/_inputs.py +237 -17
  388. pulumi_gcp/spanner/outputs.py +307 -12
  389. pulumi_gcp/sql/_inputs.py +12 -9
  390. pulumi_gcp/sql/outputs.py +8 -6
  391. pulumi_gcp/sql/user.py +28 -21
  392. pulumi_gcp/storage/_inputs.py +33 -0
  393. pulumi_gcp/storage/bucket.py +47 -0
  394. pulumi_gcp/storage/bucket_iam_binding.py +2 -2
  395. pulumi_gcp/storage/bucket_iam_member.py +2 -2
  396. pulumi_gcp/storage/bucket_iam_policy.py +2 -2
  397. pulumi_gcp/storage/get_bucket.py +12 -1
  398. pulumi_gcp/storage/managed_folder_iam_binding.py +4 -4
  399. pulumi_gcp/storage/managed_folder_iam_member.py +4 -4
  400. pulumi_gcp/storage/managed_folder_iam_policy.py +4 -4
  401. pulumi_gcp/storage/outputs.py +38 -0
  402. pulumi_gcp/tags/tag_key_iam_binding.py +4 -4
  403. pulumi_gcp/tags/tag_key_iam_member.py +4 -4
  404. pulumi_gcp/tags/tag_key_iam_policy.py +4 -4
  405. pulumi_gcp/tags/tag_value_iam_binding.py +4 -4
  406. pulumi_gcp/tags/tag_value_iam_member.py +4 -4
  407. pulumi_gcp/tags/tag_value_iam_policy.py +4 -4
  408. pulumi_gcp/transcoder/__init__.py +11 -0
  409. pulumi_gcp/transcoder/_inputs.py +3991 -0
  410. pulumi_gcp/transcoder/job.py +2134 -0
  411. pulumi_gcp/transcoder/job_template.py +1524 -0
  412. pulumi_gcp/transcoder/outputs.py +2918 -0
  413. pulumi_gcp/vertex/ai_deployment_resource_pool.py +2 -2
  414. pulumi_gcp/vertex/ai_feature_store_entity_type_iam_binding.py +2 -2
  415. pulumi_gcp/vertex/ai_feature_store_entity_type_iam_member.py +2 -2
  416. pulumi_gcp/vertex/ai_feature_store_entity_type_iam_policy.py +2 -2
  417. pulumi_gcp/vertex/ai_feature_store_iam_binding.py +2 -2
  418. pulumi_gcp/vertex/ai_feature_store_iam_member.py +2 -2
  419. pulumi_gcp/vertex/ai_feature_store_iam_policy.py +2 -2
  420. pulumi_gcp/vmwareengine/_inputs.py +912 -6
  421. pulumi_gcp/vmwareengine/cluster.py +100 -2
  422. pulumi_gcp/vmwareengine/get_cluster.py +12 -1
  423. pulumi_gcp/vmwareengine/outputs.py +1310 -49
  424. pulumi_gcp/vmwareengine/private_cloud.py +44 -0
  425. pulumi_gcp/workstations/_inputs.py +54 -0
  426. pulumi_gcp/workstations/outputs.py +32 -0
  427. pulumi_gcp/workstations/workstation_config.py +211 -6
  428. pulumi_gcp/workstations/workstation_config_iam_binding.py +2 -2
  429. pulumi_gcp/workstations/workstation_config_iam_member.py +2 -2
  430. pulumi_gcp/workstations/workstation_config_iam_policy.py +2 -2
  431. pulumi_gcp/workstations/workstation_iam_binding.py +2 -2
  432. pulumi_gcp/workstations/workstation_iam_member.py +2 -2
  433. pulumi_gcp/workstations/workstation_iam_policy.py +2 -2
  434. {pulumi_gcp-8.7.0a1730183903.dist-info → pulumi_gcp-8.8.0.dist-info}/METADATA +1 -1
  435. {pulumi_gcp-8.7.0a1730183903.dist-info → pulumi_gcp-8.8.0.dist-info}/RECORD +437 -412
  436. {pulumi_gcp-8.7.0a1730183903.dist-info → pulumi_gcp-8.8.0.dist-info}/WHEEL +1 -1
  437. {pulumi_gcp-8.7.0a1730183903.dist-info → pulumi_gcp-8.8.0.dist-info}/top_level.txt +0 -0
@@ -497,6 +497,28 @@ class PrivateCloud(pulumi.CustomResource):
497
497
  "node_count": 1,
498
498
  "custom_core_count": 32,
499
499
  }],
500
+ "autoscaling_settings": {
501
+ "autoscaling_policies": [{
502
+ "autoscale_policy_id": "autoscaling-policy",
503
+ "node_type_id": "standard-72",
504
+ "scale_out_size": 1,
505
+ "cpu_thresholds": {
506
+ "scale_out": 80,
507
+ "scale_in": 15,
508
+ },
509
+ "consumed_memory_thresholds": {
510
+ "scale_out": 75,
511
+ "scale_in": 20,
512
+ },
513
+ "storage_thresholds": {
514
+ "scale_out": 80,
515
+ "scale_in": 20,
516
+ },
517
+ }],
518
+ "min_cluster_node_count": 3,
519
+ "max_cluster_node_count": 8,
520
+ "cool_down_period": "1800s",
521
+ },
500
522
  },
501
523
  deletion_delay_hours=0,
502
524
  send_deletion_delay_hours_if_zero=True)
@@ -611,6 +633,28 @@ class PrivateCloud(pulumi.CustomResource):
611
633
  "node_count": 1,
612
634
  "custom_core_count": 32,
613
635
  }],
636
+ "autoscaling_settings": {
637
+ "autoscaling_policies": [{
638
+ "autoscale_policy_id": "autoscaling-policy",
639
+ "node_type_id": "standard-72",
640
+ "scale_out_size": 1,
641
+ "cpu_thresholds": {
642
+ "scale_out": 80,
643
+ "scale_in": 15,
644
+ },
645
+ "consumed_memory_thresholds": {
646
+ "scale_out": 75,
647
+ "scale_in": 20,
648
+ },
649
+ "storage_thresholds": {
650
+ "scale_out": 80,
651
+ "scale_in": 20,
652
+ },
653
+ }],
654
+ "min_cluster_node_count": 3,
655
+ "max_cluster_node_count": 8,
656
+ "cool_down_period": "1800s",
657
+ },
614
658
  },
615
659
  deletion_delay_hours=0,
616
660
  send_deletion_delay_hours_if_zero=True)
@@ -21,6 +21,8 @@ __all__ = [
21
21
  'WorkstationClusterDomainConfigArgsDict',
22
22
  'WorkstationClusterPrivateClusterConfigArgs',
23
23
  'WorkstationClusterPrivateClusterConfigArgsDict',
24
+ 'WorkstationConfigAllowedPortArgs',
25
+ 'WorkstationConfigAllowedPortArgsDict',
24
26
  'WorkstationConfigConditionArgs',
25
27
  'WorkstationConfigConditionArgsDict',
26
28
  'WorkstationConfigContainerArgs',
@@ -287,6 +289,58 @@ class WorkstationClusterPrivateClusterConfigArgs:
287
289
  pulumi.set(self, "service_attachment_uri", value)
288
290
 
289
291
 
292
+ if not MYPY:
293
+ class WorkstationConfigAllowedPortArgsDict(TypedDict):
294
+ first: NotRequired[pulumi.Input[int]]
295
+ """
296
+ Starting port number for the current range of ports. Valid ports are 22, 80, and ports within the range 1024-65535.
297
+ """
298
+ last: NotRequired[pulumi.Input[int]]
299
+ """
300
+ Ending port number for the current range of ports. Valid ports are 22, 80, and ports within the range 1024-65535.
301
+ """
302
+ elif False:
303
+ WorkstationConfigAllowedPortArgsDict: TypeAlias = Mapping[str, Any]
304
+
305
+ @pulumi.input_type
306
+ class WorkstationConfigAllowedPortArgs:
307
+ def __init__(__self__, *,
308
+ first: Optional[pulumi.Input[int]] = None,
309
+ last: Optional[pulumi.Input[int]] = None):
310
+ """
311
+ :param pulumi.Input[int] first: Starting port number for the current range of ports. Valid ports are 22, 80, and ports within the range 1024-65535.
312
+ :param pulumi.Input[int] last: Ending port number for the current range of ports. Valid ports are 22, 80, and ports within the range 1024-65535.
313
+ """
314
+ if first is not None:
315
+ pulumi.set(__self__, "first", first)
316
+ if last is not None:
317
+ pulumi.set(__self__, "last", last)
318
+
319
+ @property
320
+ @pulumi.getter
321
+ def first(self) -> Optional[pulumi.Input[int]]:
322
+ """
323
+ Starting port number for the current range of ports. Valid ports are 22, 80, and ports within the range 1024-65535.
324
+ """
325
+ return pulumi.get(self, "first")
326
+
327
+ @first.setter
328
+ def first(self, value: Optional[pulumi.Input[int]]):
329
+ pulumi.set(self, "first", value)
330
+
331
+ @property
332
+ @pulumi.getter
333
+ def last(self) -> Optional[pulumi.Input[int]]:
334
+ """
335
+ Ending port number for the current range of ports. Valid ports are 22, 80, and ports within the range 1024-65535.
336
+ """
337
+ return pulumi.get(self, "last")
338
+
339
+ @last.setter
340
+ def last(self, value: Optional[pulumi.Input[int]]):
341
+ pulumi.set(self, "last", value)
342
+
343
+
290
344
  if not MYPY:
291
345
  class WorkstationConfigConditionArgsDict(TypedDict):
292
346
  code: NotRequired[pulumi.Input[int]]
@@ -19,6 +19,7 @@ __all__ = [
19
19
  'WorkstationClusterCondition',
20
20
  'WorkstationClusterDomainConfig',
21
21
  'WorkstationClusterPrivateClusterConfig',
22
+ 'WorkstationConfigAllowedPort',
22
23
  'WorkstationConfigCondition',
23
24
  'WorkstationConfigContainer',
24
25
  'WorkstationConfigEncryptionKey',
@@ -198,6 +199,37 @@ class WorkstationClusterPrivateClusterConfig(dict):
198
199
  return pulumi.get(self, "service_attachment_uri")
199
200
 
200
201
 
202
+ @pulumi.output_type
203
+ class WorkstationConfigAllowedPort(dict):
204
+ def __init__(__self__, *,
205
+ first: Optional[int] = None,
206
+ last: Optional[int] = None):
207
+ """
208
+ :param int first: Starting port number for the current range of ports. Valid ports are 22, 80, and ports within the range 1024-65535.
209
+ :param int last: Ending port number for the current range of ports. Valid ports are 22, 80, and ports within the range 1024-65535.
210
+ """
211
+ if first is not None:
212
+ pulumi.set(__self__, "first", first)
213
+ if last is not None:
214
+ pulumi.set(__self__, "last", last)
215
+
216
+ @property
217
+ @pulumi.getter
218
+ def first(self) -> Optional[int]:
219
+ """
220
+ Starting port number for the current range of ports. Valid ports are 22, 80, and ports within the range 1024-65535.
221
+ """
222
+ return pulumi.get(self, "first")
223
+
224
+ @property
225
+ @pulumi.getter
226
+ def last(self) -> Optional[int]:
227
+ """
228
+ Ending port number for the current range of ports. Valid ports are 22, 80, and ports within the range 1024-65535.
229
+ """
230
+ return pulumi.get(self, "last")
231
+
232
+
201
233
  @pulumi.output_type
202
234
  class WorkstationConfigCondition(dict):
203
235
  def __init__(__self__, *,
@@ -24,6 +24,7 @@ class WorkstationConfigArgs:
24
24
  location: pulumi.Input[str],
25
25
  workstation_cluster_id: pulumi.Input[str],
26
26
  workstation_config_id: pulumi.Input[str],
27
+ allowed_ports: Optional[pulumi.Input[Sequence[pulumi.Input['WorkstationConfigAllowedPortArgs']]]] = None,
27
28
  annotations: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]] = None,
28
29
  container: Optional[pulumi.Input['WorkstationConfigContainerArgs']] = None,
29
30
  disable_tcp_connections: Optional[pulumi.Input[bool]] = None,
@@ -34,6 +35,7 @@ class WorkstationConfigArgs:
34
35
  host: Optional[pulumi.Input['WorkstationConfigHostArgs']] = None,
35
36
  idle_timeout: Optional[pulumi.Input[str]] = None,
36
37
  labels: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]] = None,
38
+ max_usable_workstations: Optional[pulumi.Input[int]] = None,
37
39
  persistent_directories: Optional[pulumi.Input[Sequence[pulumi.Input['WorkstationConfigPersistentDirectoryArgs']]]] = None,
38
40
  project: Optional[pulumi.Input[str]] = None,
39
41
  readiness_checks: Optional[pulumi.Input[Sequence[pulumi.Input['WorkstationConfigReadinessCheckArgs']]]] = None,
@@ -47,6 +49,8 @@ class WorkstationConfigArgs:
47
49
  - - -
48
50
  :param pulumi.Input[str] workstation_cluster_id: The ID of the parent workstation cluster.
49
51
  :param pulumi.Input[str] workstation_config_id: The ID to be assigned to the workstation cluster config.
52
+ :param pulumi.Input[Sequence[pulumi.Input['WorkstationConfigAllowedPortArgs']]] allowed_ports: A list of port ranges specifying single ports or ranges of ports that are externally accessible in the workstation. Allowed ports must be one of 22, 80, or within range 1024-65535. If not specified defaults to ports 22, 80, and ports 1024-65535.
53
+ Structure is documented below.
50
54
  :param pulumi.Input[Mapping[str, pulumi.Input[str]]] annotations: Client-specified annotations. This is distinct from labels.
51
55
  **Note**: This field is non-authoritative, and will only manage the annotations present in your configuration.
52
56
  Please refer to the field `effective_annotations` for all of the annotations present on the resource.
@@ -69,6 +73,7 @@ class WorkstationConfigArgs:
69
73
  :param pulumi.Input[Mapping[str, pulumi.Input[str]]] labels: Client-specified labels that are applied to the resource and that are also propagated to the underlying Compute Engine resources.
70
74
  **Note**: This field is non-authoritative, and will only manage the labels present in your configuration.
71
75
  Please refer to the field `effective_labels` for all of the labels present on the resource.
76
+ :param pulumi.Input[int] max_usable_workstations: Maximum number of workstations under this configuration a user can have workstations.workstation.use permission on. Only enforced on CreateWorkstation API calls on the user issuing the API request.
72
77
  :param pulumi.Input[Sequence[pulumi.Input['WorkstationConfigPersistentDirectoryArgs']]] persistent_directories: Directories to persist across workstation sessions.
73
78
  Structure is documented below.
74
79
  :param pulumi.Input[str] project: The ID of the project in which the resource belongs.
@@ -83,6 +88,8 @@ class WorkstationConfigArgs:
83
88
  pulumi.set(__self__, "location", location)
84
89
  pulumi.set(__self__, "workstation_cluster_id", workstation_cluster_id)
85
90
  pulumi.set(__self__, "workstation_config_id", workstation_config_id)
91
+ if allowed_ports is not None:
92
+ pulumi.set(__self__, "allowed_ports", allowed_ports)
86
93
  if annotations is not None:
87
94
  pulumi.set(__self__, "annotations", annotations)
88
95
  if container is not None:
@@ -103,6 +110,8 @@ class WorkstationConfigArgs:
103
110
  pulumi.set(__self__, "idle_timeout", idle_timeout)
104
111
  if labels is not None:
105
112
  pulumi.set(__self__, "labels", labels)
113
+ if max_usable_workstations is not None:
114
+ pulumi.set(__self__, "max_usable_workstations", max_usable_workstations)
106
115
  if persistent_directories is not None:
107
116
  pulumi.set(__self__, "persistent_directories", persistent_directories)
108
117
  if project is not None:
@@ -153,6 +162,19 @@ class WorkstationConfigArgs:
153
162
  def workstation_config_id(self, value: pulumi.Input[str]):
154
163
  pulumi.set(self, "workstation_config_id", value)
155
164
 
165
+ @property
166
+ @pulumi.getter(name="allowedPorts")
167
+ def allowed_ports(self) -> Optional[pulumi.Input[Sequence[pulumi.Input['WorkstationConfigAllowedPortArgs']]]]:
168
+ """
169
+ A list of port ranges specifying single ports or ranges of ports that are externally accessible in the workstation. Allowed ports must be one of 22, 80, or within range 1024-65535. If not specified defaults to ports 22, 80, and ports 1024-65535.
170
+ Structure is documented below.
171
+ """
172
+ return pulumi.get(self, "allowed_ports")
173
+
174
+ @allowed_ports.setter
175
+ def allowed_ports(self, value: Optional[pulumi.Input[Sequence[pulumi.Input['WorkstationConfigAllowedPortArgs']]]]):
176
+ pulumi.set(self, "allowed_ports", value)
177
+
156
178
  @property
157
179
  @pulumi.getter
158
180
  def annotations(self) -> Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]]:
@@ -285,6 +307,18 @@ class WorkstationConfigArgs:
285
307
  def labels(self, value: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]]):
286
308
  pulumi.set(self, "labels", value)
287
309
 
310
+ @property
311
+ @pulumi.getter(name="maxUsableWorkstations")
312
+ def max_usable_workstations(self) -> Optional[pulumi.Input[int]]:
313
+ """
314
+ Maximum number of workstations under this configuration a user can have workstations.workstation.use permission on. Only enforced on CreateWorkstation API calls on the user issuing the API request.
315
+ """
316
+ return pulumi.get(self, "max_usable_workstations")
317
+
318
+ @max_usable_workstations.setter
319
+ def max_usable_workstations(self, value: Optional[pulumi.Input[int]]):
320
+ pulumi.set(self, "max_usable_workstations", value)
321
+
288
322
  @property
289
323
  @pulumi.getter(name="persistentDirectories")
290
324
  def persistent_directories(self) -> Optional[pulumi.Input[Sequence[pulumi.Input['WorkstationConfigPersistentDirectoryArgs']]]]:
@@ -354,6 +388,7 @@ class WorkstationConfigArgs:
354
388
  @pulumi.input_type
355
389
  class _WorkstationConfigState:
356
390
  def __init__(__self__, *,
391
+ allowed_ports: Optional[pulumi.Input[Sequence[pulumi.Input['WorkstationConfigAllowedPortArgs']]]] = None,
357
392
  annotations: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]] = None,
358
393
  conditions: Optional[pulumi.Input[Sequence[pulumi.Input['WorkstationConfigConditionArgs']]]] = None,
359
394
  container: Optional[pulumi.Input['WorkstationConfigContainerArgs']] = None,
@@ -371,6 +406,7 @@ class _WorkstationConfigState:
371
406
  idle_timeout: Optional[pulumi.Input[str]] = None,
372
407
  labels: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]] = None,
373
408
  location: Optional[pulumi.Input[str]] = None,
409
+ max_usable_workstations: Optional[pulumi.Input[int]] = None,
374
410
  name: Optional[pulumi.Input[str]] = None,
375
411
  persistent_directories: Optional[pulumi.Input[Sequence[pulumi.Input['WorkstationConfigPersistentDirectoryArgs']]]] = None,
376
412
  project: Optional[pulumi.Input[str]] = None,
@@ -383,6 +419,8 @@ class _WorkstationConfigState:
383
419
  workstation_config_id: Optional[pulumi.Input[str]] = None):
384
420
  """
385
421
  Input properties used for looking up and filtering WorkstationConfig resources.
422
+ :param pulumi.Input[Sequence[pulumi.Input['WorkstationConfigAllowedPortArgs']]] allowed_ports: A list of port ranges specifying single ports or ranges of ports that are externally accessible in the workstation. Allowed ports must be one of 22, 80, or within range 1024-65535. If not specified defaults to ports 22, 80, and ports 1024-65535.
423
+ Structure is documented below.
386
424
  :param pulumi.Input[Mapping[str, pulumi.Input[str]]] annotations: Client-specified annotations. This is distinct from labels.
387
425
  **Note**: This field is non-authoritative, and will only manage the annotations present in your configuration.
388
426
  Please refer to the field `effective_annotations` for all of the annotations present on the resource.
@@ -416,6 +454,7 @@ class _WorkstationConfigState:
416
454
 
417
455
 
418
456
  - - -
457
+ :param pulumi.Input[int] max_usable_workstations: Maximum number of workstations under this configuration a user can have workstations.workstation.use permission on. Only enforced on CreateWorkstation API calls on the user issuing the API request.
419
458
  :param pulumi.Input[str] name: Full name of this resource.
420
459
  :param pulumi.Input[Sequence[pulumi.Input['WorkstationConfigPersistentDirectoryArgs']]] persistent_directories: Directories to persist across workstation sessions.
421
460
  Structure is documented below.
@@ -433,6 +472,8 @@ class _WorkstationConfigState:
433
472
  :param pulumi.Input[str] workstation_cluster_id: The ID of the parent workstation cluster.
434
473
  :param pulumi.Input[str] workstation_config_id: The ID to be assigned to the workstation cluster config.
435
474
  """
475
+ if allowed_ports is not None:
476
+ pulumi.set(__self__, "allowed_ports", allowed_ports)
436
477
  if annotations is not None:
437
478
  pulumi.set(__self__, "annotations", annotations)
438
479
  if conditions is not None:
@@ -467,6 +508,8 @@ class _WorkstationConfigState:
467
508
  pulumi.set(__self__, "labels", labels)
468
509
  if location is not None:
469
510
  pulumi.set(__self__, "location", location)
511
+ if max_usable_workstations is not None:
512
+ pulumi.set(__self__, "max_usable_workstations", max_usable_workstations)
470
513
  if name is not None:
471
514
  pulumi.set(__self__, "name", name)
472
515
  if persistent_directories is not None:
@@ -488,6 +531,19 @@ class _WorkstationConfigState:
488
531
  if workstation_config_id is not None:
489
532
  pulumi.set(__self__, "workstation_config_id", workstation_config_id)
490
533
 
534
+ @property
535
+ @pulumi.getter(name="allowedPorts")
536
+ def allowed_ports(self) -> Optional[pulumi.Input[Sequence[pulumi.Input['WorkstationConfigAllowedPortArgs']]]]:
537
+ """
538
+ A list of port ranges specifying single ports or ranges of ports that are externally accessible in the workstation. Allowed ports must be one of 22, 80, or within range 1024-65535. If not specified defaults to ports 22, 80, and ports 1024-65535.
539
+ Structure is documented below.
540
+ """
541
+ return pulumi.get(self, "allowed_ports")
542
+
543
+ @allowed_ports.setter
544
+ def allowed_ports(self, value: Optional[pulumi.Input[Sequence[pulumi.Input['WorkstationConfigAllowedPortArgs']]]]):
545
+ pulumi.set(self, "allowed_ports", value)
546
+
491
547
  @property
492
548
  @pulumi.getter
493
549
  def annotations(self) -> Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]]:
@@ -706,6 +762,18 @@ class _WorkstationConfigState:
706
762
  def location(self, value: Optional[pulumi.Input[str]]):
707
763
  pulumi.set(self, "location", value)
708
764
 
765
+ @property
766
+ @pulumi.getter(name="maxUsableWorkstations")
767
+ def max_usable_workstations(self) -> Optional[pulumi.Input[int]]:
768
+ """
769
+ Maximum number of workstations under this configuration a user can have workstations.workstation.use permission on. Only enforced on CreateWorkstation API calls on the user issuing the API request.
770
+ """
771
+ return pulumi.get(self, "max_usable_workstations")
772
+
773
+ @max_usable_workstations.setter
774
+ def max_usable_workstations(self, value: Optional[pulumi.Input[int]]):
775
+ pulumi.set(self, "max_usable_workstations", value)
776
+
709
777
  @property
710
778
  @pulumi.getter
711
779
  def name(self) -> Optional[pulumi.Input[str]]:
@@ -838,6 +906,7 @@ class WorkstationConfig(pulumi.CustomResource):
838
906
  def __init__(__self__,
839
907
  resource_name: str,
840
908
  opts: Optional[pulumi.ResourceOptions] = None,
909
+ allowed_ports: Optional[pulumi.Input[Sequence[pulumi.Input[Union['WorkstationConfigAllowedPortArgs', 'WorkstationConfigAllowedPortArgsDict']]]]] = None,
841
910
  annotations: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]] = None,
842
911
  container: Optional[pulumi.Input[Union['WorkstationConfigContainerArgs', 'WorkstationConfigContainerArgsDict']]] = None,
843
912
  disable_tcp_connections: Optional[pulumi.Input[bool]] = None,
@@ -849,6 +918,7 @@ class WorkstationConfig(pulumi.CustomResource):
849
918
  idle_timeout: Optional[pulumi.Input[str]] = None,
850
919
  labels: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]] = None,
851
920
  location: Optional[pulumi.Input[str]] = None,
921
+ max_usable_workstations: Optional[pulumi.Input[int]] = None,
852
922
  persistent_directories: Optional[pulumi.Input[Sequence[pulumi.Input[Union['WorkstationConfigPersistentDirectoryArgs', 'WorkstationConfigPersistentDirectoryArgsDict']]]]] = None,
853
923
  project: Optional[pulumi.Input[str]] = None,
854
924
  readiness_checks: Optional[pulumi.Input[Sequence[pulumi.Input[Union['WorkstationConfigReadinessCheckArgs', 'WorkstationConfigReadinessCheckArgsDict']]]]] = None,
@@ -907,6 +977,7 @@ class WorkstationConfig(pulumi.CustomResource):
907
977
  labels={
908
978
  "label": "key",
909
979
  },
980
+ max_usable_workstations=1,
910
981
  host={
911
982
  "gce_instance": {
912
983
  "machine_type": "e2-standard-4",
@@ -917,7 +988,7 @@ class WorkstationConfig(pulumi.CustomResource):
917
988
  tagKey1Name=tag_key1.name,
918
989
  tagValue1Name=tag_value1.name
919
990
  ).apply(lambda resolved_outputs: {
920
- "": f"tagValues/{resolved_outputs['tagValue1Name']}",
991
+ f"tagKeys/{resolved_outputs['tagKey1Name']}": f"tagValues/{resolved_outputs['tagValue1Name']}",
921
992
  })
922
993
  ,
923
994
  },
@@ -963,8 +1034,8 @@ class WorkstationConfig(pulumi.CustomResource):
963
1034
  container={
964
1035
  "image": "intellij",
965
1036
  "env": {
966
- "name": "FOO",
967
- "babe": "bar",
1037
+ "NAME": "FOO",
1038
+ "BABE": "bar",
968
1039
  },
969
1040
  })
970
1041
  ```
@@ -1248,6 +1319,57 @@ class WorkstationConfig(pulumi.CustomResource):
1248
1319
  "kms_key_service_account": default_account.email,
1249
1320
  })
1250
1321
  ```
1322
+ ### Workstation Config Allowed Ports
1323
+
1324
+ ```python
1325
+ import pulumi
1326
+ import pulumi_gcp as gcp
1327
+
1328
+ default = gcp.compute.Network("default",
1329
+ name="workstation-cluster",
1330
+ auto_create_subnetworks=False)
1331
+ default_subnetwork = gcp.compute.Subnetwork("default",
1332
+ name="workstation-cluster",
1333
+ ip_cidr_range="10.0.0.0/24",
1334
+ region="us-central1",
1335
+ network=default.name)
1336
+ default_workstation_cluster = gcp.workstations.WorkstationCluster("default",
1337
+ workstation_cluster_id="workstation-cluster",
1338
+ network=default.id,
1339
+ subnetwork=default_subnetwork.id,
1340
+ location="us-central1",
1341
+ labels={
1342
+ "label": "key",
1343
+ },
1344
+ annotations={
1345
+ "label-one": "value-one",
1346
+ })
1347
+ default_workstation_config = gcp.workstations.WorkstationConfig("default",
1348
+ workstation_config_id="workstation-config",
1349
+ workstation_cluster_id=default_workstation_cluster.workstation_cluster_id,
1350
+ location="us-central1",
1351
+ host={
1352
+ "gce_instance": {
1353
+ "machine_type": "e2-standard-4",
1354
+ "boot_disk_size_gb": 35,
1355
+ "disable_public_ip_addresses": True,
1356
+ },
1357
+ },
1358
+ allowed_ports=[
1359
+ {
1360
+ "first": 80,
1361
+ "last": 80,
1362
+ },
1363
+ {
1364
+ "first": 22,
1365
+ "last": 22,
1366
+ },
1367
+ {
1368
+ "first": 1024,
1369
+ "last": 65535,
1370
+ },
1371
+ ])
1372
+ ```
1251
1373
 
1252
1374
  ## Import
1253
1375
 
@@ -1275,6 +1397,8 @@ class WorkstationConfig(pulumi.CustomResource):
1275
1397
 
1276
1398
  :param str resource_name: The name of the resource.
1277
1399
  :param pulumi.ResourceOptions opts: Options for the resource.
1400
+ :param pulumi.Input[Sequence[pulumi.Input[Union['WorkstationConfigAllowedPortArgs', 'WorkstationConfigAllowedPortArgsDict']]]] allowed_ports: A list of port ranges specifying single ports or ranges of ports that are externally accessible in the workstation. Allowed ports must be one of 22, 80, or within range 1024-65535. If not specified defaults to ports 22, 80, and ports 1024-65535.
1401
+ Structure is documented below.
1278
1402
  :param pulumi.Input[Mapping[str, pulumi.Input[str]]] annotations: Client-specified annotations. This is distinct from labels.
1279
1403
  **Note**: This field is non-authoritative, and will only manage the annotations present in your configuration.
1280
1404
  Please refer to the field `effective_annotations` for all of the annotations present on the resource.
@@ -1301,6 +1425,7 @@ class WorkstationConfig(pulumi.CustomResource):
1301
1425
 
1302
1426
 
1303
1427
  - - -
1428
+ :param pulumi.Input[int] max_usable_workstations: Maximum number of workstations under this configuration a user can have workstations.workstation.use permission on. Only enforced on CreateWorkstation API calls on the user issuing the API request.
1304
1429
  :param pulumi.Input[Sequence[pulumi.Input[Union['WorkstationConfigPersistentDirectoryArgs', 'WorkstationConfigPersistentDirectoryArgsDict']]]] persistent_directories: Directories to persist across workstation sessions.
1305
1430
  Structure is documented below.
1306
1431
  :param pulumi.Input[str] project: The ID of the project in which the resource belongs.
@@ -1370,6 +1495,7 @@ class WorkstationConfig(pulumi.CustomResource):
1370
1495
  labels={
1371
1496
  "label": "key",
1372
1497
  },
1498
+ max_usable_workstations=1,
1373
1499
  host={
1374
1500
  "gce_instance": {
1375
1501
  "machine_type": "e2-standard-4",
@@ -1380,7 +1506,7 @@ class WorkstationConfig(pulumi.CustomResource):
1380
1506
  tagKey1Name=tag_key1.name,
1381
1507
  tagValue1Name=tag_value1.name
1382
1508
  ).apply(lambda resolved_outputs: {
1383
- "": f"tagValues/{resolved_outputs['tagValue1Name']}",
1509
+ f"tagKeys/{resolved_outputs['tagKey1Name']}": f"tagValues/{resolved_outputs['tagValue1Name']}",
1384
1510
  })
1385
1511
  ,
1386
1512
  },
@@ -1426,8 +1552,8 @@ class WorkstationConfig(pulumi.CustomResource):
1426
1552
  container={
1427
1553
  "image": "intellij",
1428
1554
  "env": {
1429
- "name": "FOO",
1430
- "babe": "bar",
1555
+ "NAME": "FOO",
1556
+ "BABE": "bar",
1431
1557
  },
1432
1558
  })
1433
1559
  ```
@@ -1711,6 +1837,57 @@ class WorkstationConfig(pulumi.CustomResource):
1711
1837
  "kms_key_service_account": default_account.email,
1712
1838
  })
1713
1839
  ```
1840
+ ### Workstation Config Allowed Ports
1841
+
1842
+ ```python
1843
+ import pulumi
1844
+ import pulumi_gcp as gcp
1845
+
1846
+ default = gcp.compute.Network("default",
1847
+ name="workstation-cluster",
1848
+ auto_create_subnetworks=False)
1849
+ default_subnetwork = gcp.compute.Subnetwork("default",
1850
+ name="workstation-cluster",
1851
+ ip_cidr_range="10.0.0.0/24",
1852
+ region="us-central1",
1853
+ network=default.name)
1854
+ default_workstation_cluster = gcp.workstations.WorkstationCluster("default",
1855
+ workstation_cluster_id="workstation-cluster",
1856
+ network=default.id,
1857
+ subnetwork=default_subnetwork.id,
1858
+ location="us-central1",
1859
+ labels={
1860
+ "label": "key",
1861
+ },
1862
+ annotations={
1863
+ "label-one": "value-one",
1864
+ })
1865
+ default_workstation_config = gcp.workstations.WorkstationConfig("default",
1866
+ workstation_config_id="workstation-config",
1867
+ workstation_cluster_id=default_workstation_cluster.workstation_cluster_id,
1868
+ location="us-central1",
1869
+ host={
1870
+ "gce_instance": {
1871
+ "machine_type": "e2-standard-4",
1872
+ "boot_disk_size_gb": 35,
1873
+ "disable_public_ip_addresses": True,
1874
+ },
1875
+ },
1876
+ allowed_ports=[
1877
+ {
1878
+ "first": 80,
1879
+ "last": 80,
1880
+ },
1881
+ {
1882
+ "first": 22,
1883
+ "last": 22,
1884
+ },
1885
+ {
1886
+ "first": 1024,
1887
+ "last": 65535,
1888
+ },
1889
+ ])
1890
+ ```
1714
1891
 
1715
1892
  ## Import
1716
1893
 
@@ -1751,6 +1928,7 @@ class WorkstationConfig(pulumi.CustomResource):
1751
1928
  def _internal_init(__self__,
1752
1929
  resource_name: str,
1753
1930
  opts: Optional[pulumi.ResourceOptions] = None,
1931
+ allowed_ports: Optional[pulumi.Input[Sequence[pulumi.Input[Union['WorkstationConfigAllowedPortArgs', 'WorkstationConfigAllowedPortArgsDict']]]]] = None,
1754
1932
  annotations: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]] = None,
1755
1933
  container: Optional[pulumi.Input[Union['WorkstationConfigContainerArgs', 'WorkstationConfigContainerArgsDict']]] = None,
1756
1934
  disable_tcp_connections: Optional[pulumi.Input[bool]] = None,
@@ -1762,6 +1940,7 @@ class WorkstationConfig(pulumi.CustomResource):
1762
1940
  idle_timeout: Optional[pulumi.Input[str]] = None,
1763
1941
  labels: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]] = None,
1764
1942
  location: Optional[pulumi.Input[str]] = None,
1943
+ max_usable_workstations: Optional[pulumi.Input[int]] = None,
1765
1944
  persistent_directories: Optional[pulumi.Input[Sequence[pulumi.Input[Union['WorkstationConfigPersistentDirectoryArgs', 'WorkstationConfigPersistentDirectoryArgsDict']]]]] = None,
1766
1945
  project: Optional[pulumi.Input[str]] = None,
1767
1946
  readiness_checks: Optional[pulumi.Input[Sequence[pulumi.Input[Union['WorkstationConfigReadinessCheckArgs', 'WorkstationConfigReadinessCheckArgsDict']]]]] = None,
@@ -1778,6 +1957,7 @@ class WorkstationConfig(pulumi.CustomResource):
1778
1957
  raise TypeError('__props__ is only valid when passed in combination with a valid opts.id to get an existing resource')
1779
1958
  __props__ = WorkstationConfigArgs.__new__(WorkstationConfigArgs)
1780
1959
 
1960
+ __props__.__dict__["allowed_ports"] = allowed_ports
1781
1961
  __props__.__dict__["annotations"] = annotations
1782
1962
  __props__.__dict__["container"] = container
1783
1963
  __props__.__dict__["disable_tcp_connections"] = disable_tcp_connections
@@ -1791,6 +1971,7 @@ class WorkstationConfig(pulumi.CustomResource):
1791
1971
  if location is None and not opts.urn:
1792
1972
  raise TypeError("Missing required property 'location'")
1793
1973
  __props__.__dict__["location"] = location
1974
+ __props__.__dict__["max_usable_workstations"] = max_usable_workstations
1794
1975
  __props__.__dict__["persistent_directories"] = persistent_directories
1795
1976
  __props__.__dict__["project"] = project
1796
1977
  __props__.__dict__["readiness_checks"] = readiness_checks
@@ -1823,6 +2004,7 @@ class WorkstationConfig(pulumi.CustomResource):
1823
2004
  def get(resource_name: str,
1824
2005
  id: pulumi.Input[str],
1825
2006
  opts: Optional[pulumi.ResourceOptions] = None,
2007
+ allowed_ports: Optional[pulumi.Input[Sequence[pulumi.Input[Union['WorkstationConfigAllowedPortArgs', 'WorkstationConfigAllowedPortArgsDict']]]]] = None,
1826
2008
  annotations: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]] = None,
1827
2009
  conditions: Optional[pulumi.Input[Sequence[pulumi.Input[Union['WorkstationConfigConditionArgs', 'WorkstationConfigConditionArgsDict']]]]] = None,
1828
2010
  container: Optional[pulumi.Input[Union['WorkstationConfigContainerArgs', 'WorkstationConfigContainerArgsDict']]] = None,
@@ -1840,6 +2022,7 @@ class WorkstationConfig(pulumi.CustomResource):
1840
2022
  idle_timeout: Optional[pulumi.Input[str]] = None,
1841
2023
  labels: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]] = None,
1842
2024
  location: Optional[pulumi.Input[str]] = None,
2025
+ max_usable_workstations: Optional[pulumi.Input[int]] = None,
1843
2026
  name: Optional[pulumi.Input[str]] = None,
1844
2027
  persistent_directories: Optional[pulumi.Input[Sequence[pulumi.Input[Union['WorkstationConfigPersistentDirectoryArgs', 'WorkstationConfigPersistentDirectoryArgsDict']]]]] = None,
1845
2028
  project: Optional[pulumi.Input[str]] = None,
@@ -1857,6 +2040,8 @@ class WorkstationConfig(pulumi.CustomResource):
1857
2040
  :param str resource_name: The unique name of the resulting resource.
1858
2041
  :param pulumi.Input[str] id: The unique provider ID of the resource to lookup.
1859
2042
  :param pulumi.ResourceOptions opts: Options for the resource.
2043
+ :param pulumi.Input[Sequence[pulumi.Input[Union['WorkstationConfigAllowedPortArgs', 'WorkstationConfigAllowedPortArgsDict']]]] allowed_ports: A list of port ranges specifying single ports or ranges of ports that are externally accessible in the workstation. Allowed ports must be one of 22, 80, or within range 1024-65535. If not specified defaults to ports 22, 80, and ports 1024-65535.
2044
+ Structure is documented below.
1860
2045
  :param pulumi.Input[Mapping[str, pulumi.Input[str]]] annotations: Client-specified annotations. This is distinct from labels.
1861
2046
  **Note**: This field is non-authoritative, and will only manage the annotations present in your configuration.
1862
2047
  Please refer to the field `effective_annotations` for all of the annotations present on the resource.
@@ -1890,6 +2075,7 @@ class WorkstationConfig(pulumi.CustomResource):
1890
2075
 
1891
2076
 
1892
2077
  - - -
2078
+ :param pulumi.Input[int] max_usable_workstations: Maximum number of workstations under this configuration a user can have workstations.workstation.use permission on. Only enforced on CreateWorkstation API calls on the user issuing the API request.
1893
2079
  :param pulumi.Input[str] name: Full name of this resource.
1894
2080
  :param pulumi.Input[Sequence[pulumi.Input[Union['WorkstationConfigPersistentDirectoryArgs', 'WorkstationConfigPersistentDirectoryArgsDict']]]] persistent_directories: Directories to persist across workstation sessions.
1895
2081
  Structure is documented below.
@@ -1911,6 +2097,7 @@ class WorkstationConfig(pulumi.CustomResource):
1911
2097
 
1912
2098
  __props__ = _WorkstationConfigState.__new__(_WorkstationConfigState)
1913
2099
 
2100
+ __props__.__dict__["allowed_ports"] = allowed_ports
1914
2101
  __props__.__dict__["annotations"] = annotations
1915
2102
  __props__.__dict__["conditions"] = conditions
1916
2103
  __props__.__dict__["container"] = container
@@ -1928,6 +2115,7 @@ class WorkstationConfig(pulumi.CustomResource):
1928
2115
  __props__.__dict__["idle_timeout"] = idle_timeout
1929
2116
  __props__.__dict__["labels"] = labels
1930
2117
  __props__.__dict__["location"] = location
2118
+ __props__.__dict__["max_usable_workstations"] = max_usable_workstations
1931
2119
  __props__.__dict__["name"] = name
1932
2120
  __props__.__dict__["persistent_directories"] = persistent_directories
1933
2121
  __props__.__dict__["project"] = project
@@ -1940,6 +2128,15 @@ class WorkstationConfig(pulumi.CustomResource):
1940
2128
  __props__.__dict__["workstation_config_id"] = workstation_config_id
1941
2129
  return WorkstationConfig(resource_name, opts=opts, __props__=__props__)
1942
2130
 
2131
+ @property
2132
+ @pulumi.getter(name="allowedPorts")
2133
+ def allowed_ports(self) -> pulumi.Output[Sequence['outputs.WorkstationConfigAllowedPort']]:
2134
+ """
2135
+ A list of port ranges specifying single ports or ranges of ports that are externally accessible in the workstation. Allowed ports must be one of 22, 80, or within range 1024-65535. If not specified defaults to ports 22, 80, and ports 1024-65535.
2136
+ Structure is documented below.
2137
+ """
2138
+ return pulumi.get(self, "allowed_ports")
2139
+
1943
2140
  @property
1944
2141
  @pulumi.getter
1945
2142
  def annotations(self) -> pulumi.Output[Optional[Mapping[str, str]]]:
@@ -2090,6 +2287,14 @@ class WorkstationConfig(pulumi.CustomResource):
2090
2287
  """
2091
2288
  return pulumi.get(self, "location")
2092
2289
 
2290
+ @property
2291
+ @pulumi.getter(name="maxUsableWorkstations")
2292
+ def max_usable_workstations(self) -> pulumi.Output[int]:
2293
+ """
2294
+ Maximum number of workstations under this configuration a user can have workstations.workstation.use permission on. Only enforced on CreateWorkstation API calls on the user issuing the API request.
2295
+ """
2296
+ return pulumi.get(self, "max_usable_workstations")
2297
+
2093
2298
  @property
2094
2299
  @pulumi.getter
2095
2300
  def name(self) -> pulumi.Output[str]: