pulumi-gcp 7.24.0a1716510380__py3-none-any.whl → 7.24.0a1716588893__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 (317) hide show
  1. pulumi_gcp/__init__.py +16 -0
  2. pulumi_gcp/accesscontextmanager/access_policy_iam_binding.py +12 -12
  3. pulumi_gcp/accesscontextmanager/access_policy_iam_member.py +12 -12
  4. pulumi_gcp/accesscontextmanager/access_policy_iam_policy.py +12 -12
  5. pulumi_gcp/apigateway/api_config_iam_binding.py +8 -8
  6. pulumi_gcp/apigateway/api_config_iam_member.py +8 -8
  7. pulumi_gcp/apigateway/api_config_iam_policy.py +8 -8
  8. pulumi_gcp/apigateway/api_iam_binding.py +8 -8
  9. pulumi_gcp/apigateway/api_iam_member.py +8 -8
  10. pulumi_gcp/apigateway/api_iam_policy.py +8 -8
  11. pulumi_gcp/apigateway/gateway_iam_binding.py +8 -8
  12. pulumi_gcp/apigateway/gateway_iam_member.py +8 -8
  13. pulumi_gcp/apigateway/gateway_iam_policy.py +8 -8
  14. pulumi_gcp/apigee/environment_iam_binding.py +12 -12
  15. pulumi_gcp/apigee/environment_iam_member.py +12 -12
  16. pulumi_gcp/apigee/environment_iam_policy.py +12 -12
  17. pulumi_gcp/artifactregistry/repository_iam_binding.py +12 -12
  18. pulumi_gcp/artifactregistry/repository_iam_member.py +12 -12
  19. pulumi_gcp/artifactregistry/repository_iam_policy.py +12 -12
  20. pulumi_gcp/bigquery/connection.py +126 -0
  21. pulumi_gcp/bigquery/connection_iam_binding.py +12 -12
  22. pulumi_gcp/bigquery/connection_iam_member.py +12 -12
  23. pulumi_gcp/bigquery/connection_iam_policy.py +12 -12
  24. pulumi_gcp/bigquery/dataset_iam_binding.py +12 -12
  25. pulumi_gcp/bigquery/dataset_iam_member.py +12 -12
  26. pulumi_gcp/bigquery/dataset_iam_policy.py +12 -12
  27. pulumi_gcp/bigquery/iam_binding.py +12 -12
  28. pulumi_gcp/bigquery/iam_member.py +12 -12
  29. pulumi_gcp/bigquery/iam_policy.py +12 -12
  30. pulumi_gcp/bigquery/routine.py +2 -2
  31. pulumi_gcp/bigqueryanalyticshub/data_exchange_iam_binding.py +12 -12
  32. pulumi_gcp/bigqueryanalyticshub/data_exchange_iam_member.py +12 -12
  33. pulumi_gcp/bigqueryanalyticshub/data_exchange_iam_policy.py +12 -12
  34. pulumi_gcp/bigqueryanalyticshub/listing_iam_binding.py +12 -12
  35. pulumi_gcp/bigqueryanalyticshub/listing_iam_member.py +12 -12
  36. pulumi_gcp/bigqueryanalyticshub/listing_iam_policy.py +12 -12
  37. pulumi_gcp/bigquerydatapolicy/data_policy_iam_binding.py +12 -12
  38. pulumi_gcp/bigquerydatapolicy/data_policy_iam_member.py +12 -12
  39. pulumi_gcp/bigquerydatapolicy/data_policy_iam_policy.py +12 -12
  40. pulumi_gcp/bigtable/instance_iam_binding.py +12 -12
  41. pulumi_gcp/bigtable/instance_iam_member.py +12 -12
  42. pulumi_gcp/bigtable/instance_iam_policy.py +12 -12
  43. pulumi_gcp/bigtable/table_iam_binding.py +12 -12
  44. pulumi_gcp/bigtable/table_iam_member.py +12 -12
  45. pulumi_gcp/bigtable/table_iam_policy.py +12 -12
  46. pulumi_gcp/billing/account_iam_binding.py +12 -12
  47. pulumi_gcp/billing/account_iam_member.py +12 -12
  48. pulumi_gcp/billing/account_iam_policy.py +12 -12
  49. pulumi_gcp/billing/project_info.py +4 -4
  50. pulumi_gcp/binaryauthorization/attestor_iam_binding.py +12 -12
  51. pulumi_gcp/binaryauthorization/attestor_iam_member.py +12 -12
  52. pulumi_gcp/binaryauthorization/attestor_iam_policy.py +12 -12
  53. pulumi_gcp/certificateauthority/ca_pool_iam_binding.py +12 -12
  54. pulumi_gcp/certificateauthority/ca_pool_iam_member.py +12 -12
  55. pulumi_gcp/certificateauthority/ca_pool_iam_policy.py +12 -12
  56. pulumi_gcp/certificateauthority/certificate_template_iam_binding.py +12 -12
  57. pulumi_gcp/certificateauthority/certificate_template_iam_member.py +12 -12
  58. pulumi_gcp/certificateauthority/certificate_template_iam_policy.py +12 -12
  59. pulumi_gcp/cloudasset/__init__.py +1 -0
  60. pulumi_gcp/cloudasset/get_search_all_resources.py +197 -0
  61. pulumi_gcp/cloudasset/outputs.py +184 -0
  62. pulumi_gcp/cloudbuildv2/connection_iam_binding.py +12 -12
  63. pulumi_gcp/cloudbuildv2/connection_iam_member.py +12 -12
  64. pulumi_gcp/cloudbuildv2/connection_iam_policy.py +12 -12
  65. pulumi_gcp/cloudfunctions/function_iam_binding.py +12 -12
  66. pulumi_gcp/cloudfunctions/function_iam_member.py +12 -12
  67. pulumi_gcp/cloudfunctions/function_iam_policy.py +12 -12
  68. pulumi_gcp/cloudfunctionsv2/function_iam_binding.py +12 -12
  69. pulumi_gcp/cloudfunctionsv2/function_iam_member.py +12 -12
  70. pulumi_gcp/cloudfunctionsv2/function_iam_policy.py +12 -12
  71. pulumi_gcp/cloudrun/iam_binding.py +12 -12
  72. pulumi_gcp/cloudrun/iam_member.py +12 -12
  73. pulumi_gcp/cloudrun/iam_policy.py +12 -12
  74. pulumi_gcp/cloudrunv2/job_iam_binding.py +12 -12
  75. pulumi_gcp/cloudrunv2/job_iam_member.py +12 -12
  76. pulumi_gcp/cloudrunv2/job_iam_policy.py +12 -12
  77. pulumi_gcp/cloudrunv2/service_iam_binding.py +12 -12
  78. pulumi_gcp/cloudrunv2/service_iam_member.py +12 -12
  79. pulumi_gcp/cloudrunv2/service_iam_policy.py +12 -12
  80. pulumi_gcp/cloudtasks/queue_iam_binding.py +12 -12
  81. pulumi_gcp/cloudtasks/queue_iam_member.py +12 -12
  82. pulumi_gcp/cloudtasks/queue_iam_policy.py +12 -12
  83. pulumi_gcp/compute/__init__.py +1 -0
  84. pulumi_gcp/compute/_inputs.py +401 -0
  85. pulumi_gcp/compute/disk_iam_binding.py +12 -12
  86. pulumi_gcp/compute/disk_iam_member.py +12 -12
  87. pulumi_gcp/compute/disk_iam_policy.py +12 -12
  88. pulumi_gcp/compute/forwarding_rule.py +6 -6
  89. pulumi_gcp/compute/get_network_endpoint_group.py +2 -2
  90. pulumi_gcp/compute/get_region_network_endpoint_group.py +2 -2
  91. pulumi_gcp/compute/get_router_nat.py +11 -1
  92. pulumi_gcp/compute/get_snapshot.py +2 -0
  93. pulumi_gcp/compute/image_iam_binding.py +12 -12
  94. pulumi_gcp/compute/image_iam_member.py +12 -12
  95. pulumi_gcp/compute/image_iam_policy.py +12 -12
  96. pulumi_gcp/compute/instance_iam_binding.py +12 -12
  97. pulumi_gcp/compute/instance_iam_member.py +12 -12
  98. pulumi_gcp/compute/instance_iam_policy.py +12 -12
  99. pulumi_gcp/compute/interconnect.py +1683 -0
  100. pulumi_gcp/compute/machine_image_iam_binding.py +8 -8
  101. pulumi_gcp/compute/machine_image_iam_member.py +8 -8
  102. pulumi_gcp/compute/machine_image_iam_policy.py +8 -8
  103. pulumi_gcp/compute/outputs.py +413 -0
  104. pulumi_gcp/compute/region_disk_iam_binding.py +12 -12
  105. pulumi_gcp/compute/region_disk_iam_member.py +12 -12
  106. pulumi_gcp/compute/region_disk_iam_policy.py +12 -12
  107. pulumi_gcp/compute/router_nat.py +68 -0
  108. pulumi_gcp/compute/snapshot_iam_binding.py +12 -12
  109. pulumi_gcp/compute/snapshot_iam_member.py +12 -12
  110. pulumi_gcp/compute/snapshot_iam_policy.py +12 -12
  111. pulumi_gcp/compute/subnetwork_iam_binding.py +12 -12
  112. pulumi_gcp/compute/subnetwork_iam_member.py +12 -12
  113. pulumi_gcp/compute/subnetwork_iam_policy.py +12 -12
  114. pulumi_gcp/compute/target_instance.py +4 -4
  115. pulumi_gcp/compute/target_pool.py +21 -21
  116. pulumi_gcp/container/_inputs.py +2 -2
  117. pulumi_gcp/container/outputs.py +4 -4
  118. pulumi_gcp/containeranalysis/note_iam_binding.py +12 -12
  119. pulumi_gcp/containeranalysis/note_iam_member.py +12 -12
  120. pulumi_gcp/containeranalysis/note_iam_policy.py +12 -12
  121. pulumi_gcp/databasemigrationservice/connection_profile.py +6 -6
  122. pulumi_gcp/datacatalog/entry_group_iam_binding.py +12 -12
  123. pulumi_gcp/datacatalog/entry_group_iam_member.py +12 -12
  124. pulumi_gcp/datacatalog/entry_group_iam_policy.py +12 -12
  125. pulumi_gcp/datacatalog/policy_tag_iam_binding.py +12 -12
  126. pulumi_gcp/datacatalog/policy_tag_iam_member.py +12 -12
  127. pulumi_gcp/datacatalog/policy_tag_iam_policy.py +12 -12
  128. pulumi_gcp/datacatalog/tag_template_iam_binding.py +12 -12
  129. pulumi_gcp/datacatalog/tag_template_iam_member.py +12 -12
  130. pulumi_gcp/datacatalog/tag_template_iam_policy.py +12 -12
  131. pulumi_gcp/datacatalog/taxonomy_iam_binding.py +12 -12
  132. pulumi_gcp/datacatalog/taxonomy_iam_member.py +12 -12
  133. pulumi_gcp/datacatalog/taxonomy_iam_policy.py +12 -12
  134. pulumi_gcp/dataloss/_inputs.py +420 -13
  135. pulumi_gcp/dataloss/outputs.py +439 -13
  136. pulumi_gcp/dataplex/asset_iam_binding.py +12 -12
  137. pulumi_gcp/dataplex/asset_iam_member.py +12 -12
  138. pulumi_gcp/dataplex/asset_iam_policy.py +12 -12
  139. pulumi_gcp/dataplex/datascan_iam_binding.py +12 -12
  140. pulumi_gcp/dataplex/datascan_iam_member.py +12 -12
  141. pulumi_gcp/dataplex/datascan_iam_policy.py +12 -12
  142. pulumi_gcp/dataplex/lake_iam_binding.py +12 -12
  143. pulumi_gcp/dataplex/lake_iam_member.py +12 -12
  144. pulumi_gcp/dataplex/lake_iam_policy.py +12 -12
  145. pulumi_gcp/dataplex/task.py +16 -16
  146. pulumi_gcp/dataplex/task_iam_binding.py +12 -12
  147. pulumi_gcp/dataplex/task_iam_member.py +12 -12
  148. pulumi_gcp/dataplex/task_iam_policy.py +12 -12
  149. pulumi_gcp/dataplex/zone_iam_binding.py +12 -12
  150. pulumi_gcp/dataplex/zone_iam_member.py +12 -12
  151. pulumi_gcp/dataplex/zone_iam_policy.py +12 -12
  152. pulumi_gcp/dataproc/_inputs.py +70 -0
  153. pulumi_gcp/dataproc/autoscaling_policy_iam_binding.py +12 -12
  154. pulumi_gcp/dataproc/autoscaling_policy_iam_member.py +12 -12
  155. pulumi_gcp/dataproc/autoscaling_policy_iam_policy.py +12 -12
  156. pulumi_gcp/dataproc/cluster_iam_binding.py +12 -12
  157. pulumi_gcp/dataproc/cluster_iam_member.py +12 -12
  158. pulumi_gcp/dataproc/cluster_iam_policy.py +12 -12
  159. pulumi_gcp/dataproc/get_metastore_federation_iam_policy.py +26 -2
  160. pulumi_gcp/dataproc/job_iam_binding.py +12 -12
  161. pulumi_gcp/dataproc/job_iam_member.py +12 -12
  162. pulumi_gcp/dataproc/job_iam_policy.py +12 -12
  163. pulumi_gcp/dataproc/metastore_federation.py +4 -0
  164. pulumi_gcp/dataproc/metastore_federation_iam_binding.py +208 -0
  165. pulumi_gcp/dataproc/metastore_federation_iam_member.py +208 -0
  166. pulumi_gcp/dataproc/metastore_federation_iam_policy.py +208 -0
  167. pulumi_gcp/dataproc/metastore_service_iam_binding.py +12 -12
  168. pulumi_gcp/dataproc/metastore_service_iam_member.py +12 -12
  169. pulumi_gcp/dataproc/metastore_service_iam_policy.py +12 -12
  170. pulumi_gcp/dataproc/outputs.py +62 -0
  171. pulumi_gcp/datastream/_inputs.py +1789 -820
  172. pulumi_gcp/datastream/connection_profile.py +163 -3
  173. pulumi_gcp/datastream/outputs.py +864 -5
  174. pulumi_gcp/datastream/stream.py +174 -0
  175. pulumi_gcp/dns/dns_managed_zone_iam_binding.py +12 -12
  176. pulumi_gcp/dns/dns_managed_zone_iam_member.py +12 -12
  177. pulumi_gcp/dns/dns_managed_zone_iam_policy.py +12 -12
  178. pulumi_gcp/endpoints/service_iam_binding.py +12 -12
  179. pulumi_gcp/endpoints/service_iam_member.py +12 -12
  180. pulumi_gcp/endpoints/service_iam_policy.py +12 -12
  181. pulumi_gcp/firestore/field.py +4 -4
  182. pulumi_gcp/folder/iam_audit_config.py +23 -23
  183. pulumi_gcp/folder/iam_member.py +16 -16
  184. pulumi_gcp/folder/iam_policy.py +16 -16
  185. pulumi_gcp/gkebackup/backup_plan_iam_binding.py +12 -12
  186. pulumi_gcp/gkebackup/backup_plan_iam_member.py +12 -12
  187. pulumi_gcp/gkebackup/backup_plan_iam_policy.py +12 -12
  188. pulumi_gcp/gkehub/feature_iam_binding.py +12 -12
  189. pulumi_gcp/gkehub/feature_iam_member.py +12 -12
  190. pulumi_gcp/gkehub/feature_iam_policy.py +12 -12
  191. pulumi_gcp/gkehub/membership_binding.py +6 -6
  192. pulumi_gcp/gkehub/membership_iam_binding.py +12 -12
  193. pulumi_gcp/gkehub/membership_iam_member.py +12 -12
  194. pulumi_gcp/gkehub/membership_iam_policy.py +12 -12
  195. pulumi_gcp/gkehub/membership_rbac_role_binding.py +4 -4
  196. pulumi_gcp/gkehub/namespace.py +4 -4
  197. pulumi_gcp/gkehub/scope_iam_binding.py +12 -12
  198. pulumi_gcp/gkehub/scope_iam_member.py +12 -12
  199. pulumi_gcp/gkehub/scope_iam_policy.py +12 -12
  200. pulumi_gcp/gkehub/scope_rbac_role_binding.py +4 -4
  201. pulumi_gcp/healthcare/consent_store_iam_binding.py +12 -12
  202. pulumi_gcp/healthcare/consent_store_iam_member.py +12 -12
  203. pulumi_gcp/healthcare/consent_store_iam_policy.py +12 -12
  204. pulumi_gcp/healthcare/dataset_iam_binding.py +12 -12
  205. pulumi_gcp/healthcare/dataset_iam_member.py +12 -12
  206. pulumi_gcp/healthcare/dataset_iam_policy.py +12 -12
  207. pulumi_gcp/healthcare/dicom_store_iam_binding.py +12 -12
  208. pulumi_gcp/healthcare/dicom_store_iam_member.py +12 -12
  209. pulumi_gcp/healthcare/dicom_store_iam_policy.py +12 -12
  210. pulumi_gcp/healthcare/fhir_store_iam_binding.py +12 -12
  211. pulumi_gcp/healthcare/fhir_store_iam_member.py +12 -12
  212. pulumi_gcp/healthcare/fhir_store_iam_policy.py +12 -12
  213. pulumi_gcp/healthcare/hl7_store_iam_binding.py +12 -12
  214. pulumi_gcp/healthcare/hl7_store_iam_member.py +12 -12
  215. pulumi_gcp/healthcare/hl7_store_iam_policy.py +12 -12
  216. pulumi_gcp/iap/app_engine_service_iam_binding.py +12 -12
  217. pulumi_gcp/iap/app_engine_service_iam_member.py +12 -12
  218. pulumi_gcp/iap/app_engine_service_iam_policy.py +12 -12
  219. pulumi_gcp/iap/app_engine_version_iam_binding.py +12 -12
  220. pulumi_gcp/iap/app_engine_version_iam_member.py +12 -12
  221. pulumi_gcp/iap/app_engine_version_iam_policy.py +12 -12
  222. pulumi_gcp/iap/tunnel_dest_group.py +2 -2
  223. pulumi_gcp/iap/tunnel_dest_group_iam_binding.py +12 -12
  224. pulumi_gcp/iap/tunnel_dest_group_iam_member.py +12 -12
  225. pulumi_gcp/iap/tunnel_dest_group_iam_policy.py +12 -12
  226. pulumi_gcp/iap/tunnel_iam_binding.py +12 -12
  227. pulumi_gcp/iap/tunnel_iam_member.py +12 -12
  228. pulumi_gcp/iap/tunnel_iam_policy.py +12 -12
  229. pulumi_gcp/iap/tunnel_instance_iam_binding.py +12 -12
  230. pulumi_gcp/iap/tunnel_instance_iam_member.py +12 -12
  231. pulumi_gcp/iap/tunnel_instance_iam_policy.py +12 -12
  232. pulumi_gcp/iap/web_backend_service_iam_binding.py +12 -12
  233. pulumi_gcp/iap/web_backend_service_iam_member.py +12 -12
  234. pulumi_gcp/iap/web_backend_service_iam_policy.py +12 -12
  235. pulumi_gcp/iap/web_iam_binding.py +12 -12
  236. pulumi_gcp/iap/web_iam_member.py +12 -12
  237. pulumi_gcp/iap/web_iam_policy.py +12 -12
  238. pulumi_gcp/iap/web_region_backend_service_iam_binding.py +12 -12
  239. pulumi_gcp/iap/web_region_backend_service_iam_member.py +12 -12
  240. pulumi_gcp/iap/web_region_backend_service_iam_policy.py +12 -12
  241. pulumi_gcp/iap/web_type_app_enging_iam_binding.py +12 -12
  242. pulumi_gcp/iap/web_type_app_enging_iam_member.py +12 -12
  243. pulumi_gcp/iap/web_type_app_enging_iam_policy.py +12 -12
  244. pulumi_gcp/iap/web_type_compute_iam_binding.py +12 -12
  245. pulumi_gcp/iap/web_type_compute_iam_member.py +12 -12
  246. pulumi_gcp/iap/web_type_compute_iam_policy.py +12 -12
  247. pulumi_gcp/integrationconnectors/managed_zone.py +8 -8
  248. pulumi_gcp/kms/key_ring_iam_binding.py +12 -12
  249. pulumi_gcp/kms/key_ring_iam_member.py +12 -12
  250. pulumi_gcp/kms/key_ring_iam_policy.py +12 -12
  251. pulumi_gcp/netapp/storage_pool.py +7 -7
  252. pulumi_gcp/netapp/volume.py +4 -4
  253. pulumi_gcp/networksecurity/gateway_security_policy.py +4 -4
  254. pulumi_gcp/networksecurity/tls_inspection_policy.py +419 -5
  255. pulumi_gcp/networkservices/__init__.py +1 -0
  256. pulumi_gcp/networkservices/_inputs.py +236 -0
  257. pulumi_gcp/networkservices/lb_traffic_extension.py +1181 -0
  258. pulumi_gcp/networkservices/outputs.py +247 -0
  259. pulumi_gcp/notebooks/instance_iam_binding.py +12 -12
  260. pulumi_gcp/notebooks/instance_iam_member.py +12 -12
  261. pulumi_gcp/notebooks/instance_iam_policy.py +12 -12
  262. pulumi_gcp/notebooks/runtime_iam_binding.py +12 -12
  263. pulumi_gcp/notebooks/runtime_iam_member.py +12 -12
  264. pulumi_gcp/notebooks/runtime_iam_policy.py +12 -12
  265. pulumi_gcp/organizations/iam_member.py +16 -16
  266. pulumi_gcp/organizations/iam_policy.py +16 -16
  267. pulumi_gcp/orgpolicy/policy.py +2 -2
  268. pulumi_gcp/projects/iam_audit_config.py +23 -23
  269. pulumi_gcp/projects/iam_binding.py +23 -23
  270. pulumi_gcp/projects/iam_member.py +23 -23
  271. pulumi_gcp/projects/iam_policy.py +16 -16
  272. pulumi_gcp/projects/service.py +2 -43
  273. pulumi_gcp/pubsub/schema_iam_binding.py +12 -12
  274. pulumi_gcp/pubsub/schema_iam_member.py +12 -12
  275. pulumi_gcp/pubsub/schema_iam_policy.py +12 -12
  276. pulumi_gcp/pubsub/subscription.py +4 -4
  277. pulumi_gcp/pubsub/subscription_iam_binding.py +12 -12
  278. pulumi_gcp/pubsub/subscription_iam_member.py +12 -12
  279. pulumi_gcp/pubsub/subscription_iam_policy.py +12 -12
  280. pulumi_gcp/pubsub/topic_iam_binding.py +12 -12
  281. pulumi_gcp/pubsub/topic_iam_member.py +12 -12
  282. pulumi_gcp/pubsub/topic_iam_policy.py +12 -12
  283. pulumi_gcp/pulumi-plugin.json +1 -1
  284. pulumi_gcp/secretmanager/secret_iam_binding.py +12 -12
  285. pulumi_gcp/secretmanager/secret_iam_member.py +12 -12
  286. pulumi_gcp/secretmanager/secret_iam_policy.py +12 -12
  287. pulumi_gcp/servicedirectory/namespace_iam_binding.py +8 -8
  288. pulumi_gcp/servicedirectory/namespace_iam_member.py +8 -8
  289. pulumi_gcp/servicedirectory/namespace_iam_policy.py +8 -8
  290. pulumi_gcp/servicedirectory/service_iam_binding.py +8 -8
  291. pulumi_gcp/servicedirectory/service_iam_member.py +8 -8
  292. pulumi_gcp/servicedirectory/service_iam_policy.py +8 -8
  293. pulumi_gcp/sourcerepo/repository_iam_binding.py +12 -12
  294. pulumi_gcp/sourcerepo/repository_iam_member.py +12 -12
  295. pulumi_gcp/sourcerepo/repository_iam_policy.py +12 -12
  296. pulumi_gcp/spanner/database_iam_binding.py +12 -12
  297. pulumi_gcp/spanner/database_iam_member.py +12 -12
  298. pulumi_gcp/spanner/database_iam_policy.py +12 -12
  299. pulumi_gcp/spanner/instance_iam_binding.py +12 -12
  300. pulumi_gcp/spanner/instance_iam_member.py +12 -12
  301. pulumi_gcp/spanner/instance_iam_policy.py +12 -12
  302. pulumi_gcp/storage/_inputs.py +12 -10
  303. pulumi_gcp/storage/bucket.py +44 -0
  304. pulumi_gcp/storage/bucket_iam_binding.py +12 -12
  305. pulumi_gcp/storage/bucket_iam_member.py +12 -12
  306. pulumi_gcp/storage/bucket_iam_policy.py +12 -12
  307. pulumi_gcp/storage/outputs.py +12 -10
  308. pulumi_gcp/tags/tag_key_iam_binding.py +12 -12
  309. pulumi_gcp/tags/tag_key_iam_member.py +12 -12
  310. pulumi_gcp/tags/tag_key_iam_policy.py +12 -12
  311. pulumi_gcp/tags/tag_value_iam_binding.py +12 -12
  312. pulumi_gcp/tags/tag_value_iam_member.py +12 -12
  313. pulumi_gcp/tags/tag_value_iam_policy.py +12 -12
  314. {pulumi_gcp-7.24.0a1716510380.dist-info → pulumi_gcp-7.24.0a1716588893.dist-info}/METADATA +1 -1
  315. {pulumi_gcp-7.24.0a1716510380.dist-info → pulumi_gcp-7.24.0a1716588893.dist-info}/RECORD +317 -314
  316. {pulumi_gcp-7.24.0a1716510380.dist-info → pulumi_gcp-7.24.0a1716588893.dist-info}/WHEEL +0 -0
  317. {pulumi_gcp-7.24.0a1716510380.dist-info → pulumi_gcp-7.24.0a1716588893.dist-info}/top_level.txt +0 -0
@@ -0,0 +1,1181 @@
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 pulumi
8
+ import pulumi.runtime
9
+ from typing import Any, Mapping, Optional, Sequence, Union, overload
10
+ from .. import _utilities
11
+ from . import outputs
12
+ from ._inputs import *
13
+
14
+ __all__ = ['LbTrafficExtensionArgs', 'LbTrafficExtension']
15
+
16
+ @pulumi.input_type
17
+ class LbTrafficExtensionArgs:
18
+ def __init__(__self__, *,
19
+ extension_chains: pulumi.Input[Sequence[pulumi.Input['LbTrafficExtensionExtensionChainArgs']]],
20
+ forwarding_rules: pulumi.Input[Sequence[pulumi.Input[str]]],
21
+ location: pulumi.Input[str],
22
+ description: Optional[pulumi.Input[str]] = None,
23
+ labels: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]] = None,
24
+ load_balancing_scheme: Optional[pulumi.Input[str]] = None,
25
+ name: Optional[pulumi.Input[str]] = None,
26
+ project: Optional[pulumi.Input[str]] = None):
27
+ """
28
+ The set of arguments for constructing a LbTrafficExtension resource.
29
+ :param pulumi.Input[Sequence[pulumi.Input['LbTrafficExtensionExtensionChainArgs']]] extension_chains: A set of ordered extension chains that contain the match conditions and extensions to execute.
30
+ Match conditions for each extension chain are evaluated in sequence for a given request.
31
+ The first extension chain that has a condition that matches the request is executed.
32
+ Any subsequent extension chains do not execute. Limited to 5 extension chains per resource.
33
+ Structure is documented below.
34
+ :param pulumi.Input[Sequence[pulumi.Input[str]]] forwarding_rules: A list of references to the forwarding rules to which this service extension is attached to.
35
+ At least one forwarding rule is required. There can be only one LBTrafficExtension resource per forwarding rule.
36
+ :param pulumi.Input[str] location: The location of the traffic extension
37
+ :param pulumi.Input[str] description: A human-readable description of the resource.
38
+ :param pulumi.Input[Mapping[str, pulumi.Input[str]]] labels: Set of labels associated with the LbTrafficExtension resource. **Note**: This field is non-authoritative, and will only
39
+ manage the labels present in your configuration. Please refer to the field 'effective_labels' for all of the labels
40
+ present on the resource.
41
+ :param pulumi.Input[str] load_balancing_scheme: All backend services and forwarding rules referenced by this extension must share the same load balancing scheme. For
42
+ more information, refer to Choosing a load balancer. Possible values: ["LOAD_BALANCING_SCHEME_UNSPECIFIED",
43
+ "INTERNAL_MANAGED", "EXTERNAL_MANAGED"]
44
+ :param pulumi.Input[str] name: Name of the LbTrafficExtension resource in the following format: projects/{project}/locations/{location}/lbTrafficExtensions/{lbTrafficExtension}.
45
+ """
46
+ pulumi.set(__self__, "extension_chains", extension_chains)
47
+ pulumi.set(__self__, "forwarding_rules", forwarding_rules)
48
+ pulumi.set(__self__, "location", location)
49
+ if description is not None:
50
+ pulumi.set(__self__, "description", description)
51
+ if labels is not None:
52
+ pulumi.set(__self__, "labels", labels)
53
+ if load_balancing_scheme is not None:
54
+ pulumi.set(__self__, "load_balancing_scheme", load_balancing_scheme)
55
+ if name is not None:
56
+ pulumi.set(__self__, "name", name)
57
+ if project is not None:
58
+ pulumi.set(__self__, "project", project)
59
+
60
+ @property
61
+ @pulumi.getter(name="extensionChains")
62
+ def extension_chains(self) -> pulumi.Input[Sequence[pulumi.Input['LbTrafficExtensionExtensionChainArgs']]]:
63
+ """
64
+ A set of ordered extension chains that contain the match conditions and extensions to execute.
65
+ Match conditions for each extension chain are evaluated in sequence for a given request.
66
+ The first extension chain that has a condition that matches the request is executed.
67
+ Any subsequent extension chains do not execute. Limited to 5 extension chains per resource.
68
+ Structure is documented below.
69
+ """
70
+ return pulumi.get(self, "extension_chains")
71
+
72
+ @extension_chains.setter
73
+ def extension_chains(self, value: pulumi.Input[Sequence[pulumi.Input['LbTrafficExtensionExtensionChainArgs']]]):
74
+ pulumi.set(self, "extension_chains", value)
75
+
76
+ @property
77
+ @pulumi.getter(name="forwardingRules")
78
+ def forwarding_rules(self) -> pulumi.Input[Sequence[pulumi.Input[str]]]:
79
+ """
80
+ A list of references to the forwarding rules to which this service extension is attached to.
81
+ At least one forwarding rule is required. There can be only one LBTrafficExtension resource per forwarding rule.
82
+ """
83
+ return pulumi.get(self, "forwarding_rules")
84
+
85
+ @forwarding_rules.setter
86
+ def forwarding_rules(self, value: pulumi.Input[Sequence[pulumi.Input[str]]]):
87
+ pulumi.set(self, "forwarding_rules", value)
88
+
89
+ @property
90
+ @pulumi.getter
91
+ def location(self) -> pulumi.Input[str]:
92
+ """
93
+ The location of the traffic extension
94
+ """
95
+ return pulumi.get(self, "location")
96
+
97
+ @location.setter
98
+ def location(self, value: pulumi.Input[str]):
99
+ pulumi.set(self, "location", value)
100
+
101
+ @property
102
+ @pulumi.getter
103
+ def description(self) -> Optional[pulumi.Input[str]]:
104
+ """
105
+ A human-readable description of the resource.
106
+ """
107
+ return pulumi.get(self, "description")
108
+
109
+ @description.setter
110
+ def description(self, value: Optional[pulumi.Input[str]]):
111
+ pulumi.set(self, "description", value)
112
+
113
+ @property
114
+ @pulumi.getter
115
+ def labels(self) -> Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]]:
116
+ """
117
+ Set of labels associated with the LbTrafficExtension resource. **Note**: This field is non-authoritative, and will only
118
+ manage the labels present in your configuration. Please refer to the field 'effective_labels' for all of the labels
119
+ present on the resource.
120
+ """
121
+ return pulumi.get(self, "labels")
122
+
123
+ @labels.setter
124
+ def labels(self, value: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]]):
125
+ pulumi.set(self, "labels", value)
126
+
127
+ @property
128
+ @pulumi.getter(name="loadBalancingScheme")
129
+ def load_balancing_scheme(self) -> Optional[pulumi.Input[str]]:
130
+ """
131
+ All backend services and forwarding rules referenced by this extension must share the same load balancing scheme. For
132
+ more information, refer to Choosing a load balancer. Possible values: ["LOAD_BALANCING_SCHEME_UNSPECIFIED",
133
+ "INTERNAL_MANAGED", "EXTERNAL_MANAGED"]
134
+ """
135
+ return pulumi.get(self, "load_balancing_scheme")
136
+
137
+ @load_balancing_scheme.setter
138
+ def load_balancing_scheme(self, value: Optional[pulumi.Input[str]]):
139
+ pulumi.set(self, "load_balancing_scheme", value)
140
+
141
+ @property
142
+ @pulumi.getter
143
+ def name(self) -> Optional[pulumi.Input[str]]:
144
+ """
145
+ Name of the LbTrafficExtension resource in the following format: projects/{project}/locations/{location}/lbTrafficExtensions/{lbTrafficExtension}.
146
+ """
147
+ return pulumi.get(self, "name")
148
+
149
+ @name.setter
150
+ def name(self, value: Optional[pulumi.Input[str]]):
151
+ pulumi.set(self, "name", value)
152
+
153
+ @property
154
+ @pulumi.getter
155
+ def project(self) -> Optional[pulumi.Input[str]]:
156
+ return pulumi.get(self, "project")
157
+
158
+ @project.setter
159
+ def project(self, value: Optional[pulumi.Input[str]]):
160
+ pulumi.set(self, "project", value)
161
+
162
+
163
+ @pulumi.input_type
164
+ class _LbTrafficExtensionState:
165
+ def __init__(__self__, *,
166
+ description: Optional[pulumi.Input[str]] = None,
167
+ effective_labels: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]] = None,
168
+ extension_chains: Optional[pulumi.Input[Sequence[pulumi.Input['LbTrafficExtensionExtensionChainArgs']]]] = None,
169
+ forwarding_rules: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None,
170
+ labels: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]] = None,
171
+ load_balancing_scheme: Optional[pulumi.Input[str]] = None,
172
+ location: Optional[pulumi.Input[str]] = None,
173
+ name: Optional[pulumi.Input[str]] = None,
174
+ project: Optional[pulumi.Input[str]] = None,
175
+ pulumi_labels: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]] = None):
176
+ """
177
+ Input properties used for looking up and filtering LbTrafficExtension resources.
178
+ :param pulumi.Input[str] description: A human-readable description of the resource.
179
+ :param pulumi.Input[Mapping[str, pulumi.Input[str]]] effective_labels: All of labels (key/value pairs) present on the resource in GCP, including the labels configured through Pulumi, other clients and services.
180
+ :param pulumi.Input[Sequence[pulumi.Input['LbTrafficExtensionExtensionChainArgs']]] extension_chains: A set of ordered extension chains that contain the match conditions and extensions to execute.
181
+ Match conditions for each extension chain are evaluated in sequence for a given request.
182
+ The first extension chain that has a condition that matches the request is executed.
183
+ Any subsequent extension chains do not execute. Limited to 5 extension chains per resource.
184
+ Structure is documented below.
185
+ :param pulumi.Input[Sequence[pulumi.Input[str]]] forwarding_rules: A list of references to the forwarding rules to which this service extension is attached to.
186
+ At least one forwarding rule is required. There can be only one LBTrafficExtension resource per forwarding rule.
187
+ :param pulumi.Input[Mapping[str, pulumi.Input[str]]] labels: Set of labels associated with the LbTrafficExtension resource. **Note**: This field is non-authoritative, and will only
188
+ manage the labels present in your configuration. Please refer to the field 'effective_labels' for all of the labels
189
+ present on the resource.
190
+ :param pulumi.Input[str] load_balancing_scheme: All backend services and forwarding rules referenced by this extension must share the same load balancing scheme. For
191
+ more information, refer to Choosing a load balancer. Possible values: ["LOAD_BALANCING_SCHEME_UNSPECIFIED",
192
+ "INTERNAL_MANAGED", "EXTERNAL_MANAGED"]
193
+ :param pulumi.Input[str] location: The location of the traffic extension
194
+ :param pulumi.Input[str] name: Name of the LbTrafficExtension resource in the following format: projects/{project}/locations/{location}/lbTrafficExtensions/{lbTrafficExtension}.
195
+ :param pulumi.Input[Mapping[str, pulumi.Input[str]]] pulumi_labels: The combination of labels configured directly on the resource
196
+ and default labels configured on the provider.
197
+ """
198
+ if description is not None:
199
+ pulumi.set(__self__, "description", description)
200
+ if effective_labels is not None:
201
+ pulumi.set(__self__, "effective_labels", effective_labels)
202
+ if extension_chains is not None:
203
+ pulumi.set(__self__, "extension_chains", extension_chains)
204
+ if forwarding_rules is not None:
205
+ pulumi.set(__self__, "forwarding_rules", forwarding_rules)
206
+ if labels is not None:
207
+ pulumi.set(__self__, "labels", labels)
208
+ if load_balancing_scheme is not None:
209
+ pulumi.set(__self__, "load_balancing_scheme", load_balancing_scheme)
210
+ if location is not None:
211
+ pulumi.set(__self__, "location", location)
212
+ if name is not None:
213
+ pulumi.set(__self__, "name", name)
214
+ if project is not None:
215
+ pulumi.set(__self__, "project", project)
216
+ if pulumi_labels is not None:
217
+ pulumi.set(__self__, "pulumi_labels", pulumi_labels)
218
+
219
+ @property
220
+ @pulumi.getter
221
+ def description(self) -> Optional[pulumi.Input[str]]:
222
+ """
223
+ A human-readable description of the resource.
224
+ """
225
+ return pulumi.get(self, "description")
226
+
227
+ @description.setter
228
+ def description(self, value: Optional[pulumi.Input[str]]):
229
+ pulumi.set(self, "description", value)
230
+
231
+ @property
232
+ @pulumi.getter(name="effectiveLabels")
233
+ def effective_labels(self) -> Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]]:
234
+ """
235
+ All of labels (key/value pairs) present on the resource in GCP, including the labels configured through Pulumi, other clients and services.
236
+ """
237
+ return pulumi.get(self, "effective_labels")
238
+
239
+ @effective_labels.setter
240
+ def effective_labels(self, value: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]]):
241
+ pulumi.set(self, "effective_labels", value)
242
+
243
+ @property
244
+ @pulumi.getter(name="extensionChains")
245
+ def extension_chains(self) -> Optional[pulumi.Input[Sequence[pulumi.Input['LbTrafficExtensionExtensionChainArgs']]]]:
246
+ """
247
+ A set of ordered extension chains that contain the match conditions and extensions to execute.
248
+ Match conditions for each extension chain are evaluated in sequence for a given request.
249
+ The first extension chain that has a condition that matches the request is executed.
250
+ Any subsequent extension chains do not execute. Limited to 5 extension chains per resource.
251
+ Structure is documented below.
252
+ """
253
+ return pulumi.get(self, "extension_chains")
254
+
255
+ @extension_chains.setter
256
+ def extension_chains(self, value: Optional[pulumi.Input[Sequence[pulumi.Input['LbTrafficExtensionExtensionChainArgs']]]]):
257
+ pulumi.set(self, "extension_chains", value)
258
+
259
+ @property
260
+ @pulumi.getter(name="forwardingRules")
261
+ def forwarding_rules(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]:
262
+ """
263
+ A list of references to the forwarding rules to which this service extension is attached to.
264
+ At least one forwarding rule is required. There can be only one LBTrafficExtension resource per forwarding rule.
265
+ """
266
+ return pulumi.get(self, "forwarding_rules")
267
+
268
+ @forwarding_rules.setter
269
+ def forwarding_rules(self, value: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]):
270
+ pulumi.set(self, "forwarding_rules", value)
271
+
272
+ @property
273
+ @pulumi.getter
274
+ def labels(self) -> Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]]:
275
+ """
276
+ Set of labels associated with the LbTrafficExtension resource. **Note**: This field is non-authoritative, and will only
277
+ manage the labels present in your configuration. Please refer to the field 'effective_labels' for all of the labels
278
+ present on the resource.
279
+ """
280
+ return pulumi.get(self, "labels")
281
+
282
+ @labels.setter
283
+ def labels(self, value: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]]):
284
+ pulumi.set(self, "labels", value)
285
+
286
+ @property
287
+ @pulumi.getter(name="loadBalancingScheme")
288
+ def load_balancing_scheme(self) -> Optional[pulumi.Input[str]]:
289
+ """
290
+ All backend services and forwarding rules referenced by this extension must share the same load balancing scheme. For
291
+ more information, refer to Choosing a load balancer. Possible values: ["LOAD_BALANCING_SCHEME_UNSPECIFIED",
292
+ "INTERNAL_MANAGED", "EXTERNAL_MANAGED"]
293
+ """
294
+ return pulumi.get(self, "load_balancing_scheme")
295
+
296
+ @load_balancing_scheme.setter
297
+ def load_balancing_scheme(self, value: Optional[pulumi.Input[str]]):
298
+ pulumi.set(self, "load_balancing_scheme", value)
299
+
300
+ @property
301
+ @pulumi.getter
302
+ def location(self) -> Optional[pulumi.Input[str]]:
303
+ """
304
+ The location of the traffic extension
305
+ """
306
+ return pulumi.get(self, "location")
307
+
308
+ @location.setter
309
+ def location(self, value: Optional[pulumi.Input[str]]):
310
+ pulumi.set(self, "location", value)
311
+
312
+ @property
313
+ @pulumi.getter
314
+ def name(self) -> Optional[pulumi.Input[str]]:
315
+ """
316
+ Name of the LbTrafficExtension resource in the following format: projects/{project}/locations/{location}/lbTrafficExtensions/{lbTrafficExtension}.
317
+ """
318
+ return pulumi.get(self, "name")
319
+
320
+ @name.setter
321
+ def name(self, value: Optional[pulumi.Input[str]]):
322
+ pulumi.set(self, "name", value)
323
+
324
+ @property
325
+ @pulumi.getter
326
+ def project(self) -> Optional[pulumi.Input[str]]:
327
+ return pulumi.get(self, "project")
328
+
329
+ @project.setter
330
+ def project(self, value: Optional[pulumi.Input[str]]):
331
+ pulumi.set(self, "project", value)
332
+
333
+ @property
334
+ @pulumi.getter(name="pulumiLabels")
335
+ def pulumi_labels(self) -> Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]]:
336
+ """
337
+ The combination of labels configured directly on the resource
338
+ and default labels configured on the provider.
339
+ """
340
+ return pulumi.get(self, "pulumi_labels")
341
+
342
+ @pulumi_labels.setter
343
+ def pulumi_labels(self, value: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]]):
344
+ pulumi.set(self, "pulumi_labels", value)
345
+
346
+
347
+ class LbTrafficExtension(pulumi.CustomResource):
348
+ @overload
349
+ def __init__(__self__,
350
+ resource_name: str,
351
+ opts: Optional[pulumi.ResourceOptions] = None,
352
+ description: Optional[pulumi.Input[str]] = None,
353
+ extension_chains: Optional[pulumi.Input[Sequence[pulumi.Input[pulumi.InputType['LbTrafficExtensionExtensionChainArgs']]]]] = None,
354
+ forwarding_rules: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None,
355
+ labels: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]] = None,
356
+ load_balancing_scheme: Optional[pulumi.Input[str]] = None,
357
+ location: Optional[pulumi.Input[str]] = None,
358
+ name: Optional[pulumi.Input[str]] = None,
359
+ project: Optional[pulumi.Input[str]] = None,
360
+ __props__=None):
361
+ """
362
+ LbTrafficExtension is a resource that lets the extension service modify the headers and payloads of both requests and responses without impacting the choice of backend services or any other security policies associated with the backend service.
363
+
364
+ To get more information about LbTrafficExtension, see:
365
+
366
+ * [API documentation](https://cloud.google.com/service-extensions/docs/reference/rest/v1beta1/projects.locations.lbTrafficExtensions)
367
+ * How-to Guides
368
+ * [Configure a traffic extension](https://cloud.google.com/service-extensions/docs/configure-callout#configure_a_traffic_extension)
369
+
370
+ ## Example Usage
371
+
372
+ ### Network Services Lb Traffic Extension Basic
373
+
374
+ ```python
375
+ import pulumi
376
+ import pulumi_gcp as gcp
377
+
378
+ # Internal HTTP load balancer with a managed instance group backend
379
+ # VPC network
380
+ ilb_network = gcp.compute.Network("ilb_network",
381
+ name="l7-ilb-network",
382
+ auto_create_subnetworks=False)
383
+ # proxy-only subnet
384
+ proxy_subnet = gcp.compute.Subnetwork("proxy_subnet",
385
+ name="l7-ilb-proxy-subnet",
386
+ ip_cidr_range="10.0.0.0/24",
387
+ region="us-west1",
388
+ purpose="REGIONAL_MANAGED_PROXY",
389
+ role="ACTIVE",
390
+ network=ilb_network.id)
391
+ # backend subnet
392
+ ilb_subnet = gcp.compute.Subnetwork("ilb_subnet",
393
+ name="l7-ilb-subnet",
394
+ ip_cidr_range="10.0.1.0/24",
395
+ region="us-west1",
396
+ network=ilb_network.id)
397
+ # health check
398
+ default_region_health_check = gcp.compute.RegionHealthCheck("default",
399
+ name="l7-ilb-hc",
400
+ region="us-west1",
401
+ http_health_check=gcp.compute.RegionHealthCheckHttpHealthCheckArgs(
402
+ port_specification="USE_SERVING_PORT",
403
+ ))
404
+ # instance template
405
+ instance_template = gcp.compute.InstanceTemplate("instance_template",
406
+ network_interfaces=[gcp.compute.InstanceTemplateNetworkInterfaceArgs(
407
+ access_configs=[gcp.compute.InstanceTemplateNetworkInterfaceAccessConfigArgs()],
408
+ network=ilb_network.id,
409
+ subnetwork=ilb_subnet.id,
410
+ )],
411
+ name="l7-ilb-mig-template",
412
+ machine_type="e2-small",
413
+ tags=["http-server"],
414
+ disks=[gcp.compute.InstanceTemplateDiskArgs(
415
+ source_image="debian-cloud/debian-10",
416
+ auto_delete=True,
417
+ boot=True,
418
+ )],
419
+ metadata={
420
+ "startup-script": \"\"\"#! /bin/bash
421
+ set -euo pipefail
422
+
423
+ export DEBIAN_FRONTEND=noninteractive
424
+ apt-get update
425
+ apt-get install -y nginx-light jq
426
+
427
+ NAME=$(curl -H "Metadata-Flavor: Google" "http://metadata.google.internal/computeMetadata/v1/instance/hostname")
428
+ IP=$(curl -H "Metadata-Flavor: Google" "http://metadata.google.internal/computeMetadata/v1/instance/network-interfaces/0/ip")
429
+ METADATA=$(curl -f -H "Metadata-Flavor: Google" "http://metadata.google.internal/computeMetadata/v1/instance/attributes/?recursive=True" | jq 'del(.["startup-script"])')
430
+
431
+ cat <<EOF > /var/www/html/index.html
432
+ <pre>
433
+ Name: $NAME
434
+ IP: $IP
435
+ Metadata: $METADATA
436
+ </pre>
437
+ EOF
438
+ \"\"\",
439
+ })
440
+ # MIG
441
+ mig = gcp.compute.RegionInstanceGroupManager("mig",
442
+ name="l7-ilb-mig1",
443
+ region="us-west1",
444
+ base_instance_name="vm",
445
+ target_size=2,
446
+ versions=[gcp.compute.RegionInstanceGroupManagerVersionArgs(
447
+ instance_template=instance_template.id,
448
+ name="primary",
449
+ )])
450
+ # backend service
451
+ default_region_backend_service = gcp.compute.RegionBackendService("default",
452
+ name="l7-ilb-backend-subnet",
453
+ region="us-west1",
454
+ protocol="HTTP",
455
+ load_balancing_scheme="INTERNAL_MANAGED",
456
+ timeout_sec=10,
457
+ health_checks=default_region_health_check.id,
458
+ backends=[gcp.compute.RegionBackendServiceBackendArgs(
459
+ group=mig.instance_group,
460
+ balancing_mode="UTILIZATION",
461
+ capacity_scaler=1,
462
+ )])
463
+ # URL map
464
+ default_region_url_map = gcp.compute.RegionUrlMap("default",
465
+ name="l7-ilb-regional-url-map",
466
+ region="us-west1",
467
+ default_service=default_region_backend_service.id)
468
+ # HTTP target proxy
469
+ default_region_target_http_proxy = gcp.compute.RegionTargetHttpProxy("default",
470
+ name="l7-ilb-target-http-proxy",
471
+ region="us-west1",
472
+ url_map=default_region_url_map.id)
473
+ # forwarding rule
474
+ default = gcp.compute.ForwardingRule("default",
475
+ name="l7-ilb-forwarding-rule",
476
+ region="us-west1",
477
+ ip_protocol="TCP",
478
+ load_balancing_scheme="INTERNAL_MANAGED",
479
+ port_range="80",
480
+ target=default_region_target_http_proxy.id,
481
+ network=ilb_network.id,
482
+ subnetwork=ilb_subnet.id,
483
+ network_tier="PREMIUM")
484
+ # allow all access from IAP and health check ranges
485
+ fw_iap = gcp.compute.Firewall("fw_iap",
486
+ name="l7-ilb-fw-allow-iap-hc",
487
+ direction="INGRESS",
488
+ network=ilb_network.id,
489
+ source_ranges=[
490
+ "130.211.0.0/22",
491
+ "35.191.0.0/16",
492
+ "35.235.240.0/20",
493
+ ],
494
+ allows=[gcp.compute.FirewallAllowArgs(
495
+ protocol="tcp",
496
+ )])
497
+ # allow http from proxy subnet to backends
498
+ fw_ilb_to_backends = gcp.compute.Firewall("fw_ilb_to_backends",
499
+ name="l7-ilb-fw-allow-ilb-to-backends",
500
+ direction="INGRESS",
501
+ network=ilb_network.id,
502
+ source_ranges=["10.0.0.0/24"],
503
+ target_tags=["http-server"],
504
+ allows=[gcp.compute.FirewallAllowArgs(
505
+ protocol="tcp",
506
+ ports=[
507
+ "80",
508
+ "443",
509
+ "8080",
510
+ ],
511
+ )])
512
+ # Traffic Extension Backend Instance
513
+ callouts_instance = gcp.compute.Instance("callouts_instance",
514
+ network_interfaces=[gcp.compute.InstanceNetworkInterfaceArgs(
515
+ access_configs=[gcp.compute.InstanceNetworkInterfaceAccessConfigArgs()],
516
+ network=ilb_network.id,
517
+ subnetwork=ilb_subnet.id,
518
+ )],
519
+ name="l7-ilb-callouts-ins",
520
+ zone="us-west1-a",
521
+ machine_type="e2-small",
522
+ labels={
523
+ "container-vm": "cos-stable-109-17800-147-54",
524
+ },
525
+ tags=[
526
+ "allow-ssh",
527
+ "load-balanced-backend",
528
+ ],
529
+ boot_disk=gcp.compute.InstanceBootDiskArgs(
530
+ auto_delete=True,
531
+ initialize_params=gcp.compute.InstanceBootDiskInitializeParamsArgs(
532
+ type="pd-standard",
533
+ size=10,
534
+ image="https://www.googleapis.com/compute/v1/projects/cos-cloud/global/images/cos-stable-109-17800-147-54",
535
+ ),
536
+ ),
537
+ metadata={
538
+ "gce-container-declaration": \"\"\"# DISCLAIMER:
539
+ # This container declaration format is not a public API and may change without
540
+ # notice. Please use gcloud command-line tool or Google Cloud Console to run
541
+ # Containers on Google Compute Engine.
542
+
543
+ spec:
544
+ containers:
545
+ - image: us-docker.pkg.dev/service-extensions/ext-proc/service-callout-basic-example-python:latest
546
+ name: callouts-vm
547
+ securityContext:
548
+ privileged: false
549
+ stdin: false
550
+ tty: false
551
+ volumeMounts: []
552
+ restartPolicy: Always
553
+ volumes: []
554
+ \"\"\",
555
+ "google-logging-enabled": "true",
556
+ },
557
+ deletion_protection=False)
558
+ # callouts instance group
559
+ callouts_instance_group = gcp.compute.InstanceGroup("callouts_instance_group",
560
+ name="l7-ilb-callouts-ins-group",
561
+ description="Terraform test instance group",
562
+ zone="us-west1-a",
563
+ instances=[callouts_instance.id],
564
+ named_ports=[
565
+ gcp.compute.InstanceGroupNamedPortArgs(
566
+ name="http",
567
+ port=80,
568
+ ),
569
+ gcp.compute.InstanceGroupNamedPortArgs(
570
+ name="grpc",
571
+ port=443,
572
+ ),
573
+ ])
574
+ # callout health check
575
+ callouts_health_check = gcp.compute.RegionHealthCheck("callouts_health_check",
576
+ name="l7-ilb-callouts-hc",
577
+ region="us-west1",
578
+ http_health_check=gcp.compute.RegionHealthCheckHttpHealthCheckArgs(
579
+ port=80,
580
+ ))
581
+ # callout backend service
582
+ callouts_backend = gcp.compute.RegionBackendService("callouts_backend",
583
+ name="l7-ilb-callouts-backend",
584
+ region="us-west1",
585
+ protocol="HTTP2",
586
+ load_balancing_scheme="INTERNAL_MANAGED",
587
+ timeout_sec=10,
588
+ port_name="grpc",
589
+ health_checks=callouts_health_check.id,
590
+ backends=[gcp.compute.RegionBackendServiceBackendArgs(
591
+ group=callouts_instance_group.id,
592
+ balancing_mode="UTILIZATION",
593
+ capacity_scaler=1,
594
+ )])
595
+ default_lb_traffic_extension = gcp.networkservices.LbTrafficExtension("default",
596
+ name="l7-ilb-traffic-ext",
597
+ description="my traffic extension",
598
+ location="us-west1",
599
+ load_balancing_scheme="INTERNAL_MANAGED",
600
+ forwarding_rules=[default.self_link],
601
+ extension_chains=[gcp.networkservices.LbTrafficExtensionExtensionChainArgs(
602
+ name="chain1",
603
+ match_condition=gcp.networkservices.LbTrafficExtensionExtensionChainMatchConditionArgs(
604
+ cel_expression="request.host == 'example.com'",
605
+ ),
606
+ extensions=[gcp.networkservices.LbTrafficExtensionExtensionChainExtensionArgs(
607
+ name="ext11",
608
+ authority="ext11.com",
609
+ service=callouts_backend.self_link,
610
+ timeout="0.1s",
611
+ fail_open=False,
612
+ supported_events=["REQUEST_HEADERS"],
613
+ forward_headers=["custom-header"],
614
+ )],
615
+ )],
616
+ labels={
617
+ "foo": "bar",
618
+ })
619
+ # test instance
620
+ vm_test = gcp.compute.Instance("vm_test",
621
+ name="l7-ilb-test-vm",
622
+ zone="us-west1-b",
623
+ machine_type="e2-small",
624
+ network_interfaces=[gcp.compute.InstanceNetworkInterfaceArgs(
625
+ network=ilb_network.id,
626
+ subnetwork=ilb_subnet.id,
627
+ )],
628
+ boot_disk=gcp.compute.InstanceBootDiskArgs(
629
+ initialize_params=gcp.compute.InstanceBootDiskInitializeParamsArgs(
630
+ image="debian-cloud/debian-11",
631
+ ),
632
+ ))
633
+ ```
634
+
635
+ ## Import
636
+
637
+ LbTrafficExtension can be imported using any of these accepted formats:
638
+
639
+ * `projects/{{project}}/locations/{{location}}/lbTrafficExtensions/{{name}}`
640
+
641
+ * `{{project}}/{{location}}/{{name}}`
642
+
643
+ * `{{location}}/{{name}}`
644
+
645
+ When using the `pulumi import` command, LbTrafficExtension can be imported using one of the formats above. For example:
646
+
647
+ ```sh
648
+ $ pulumi import gcp:networkservices/lbTrafficExtension:LbTrafficExtension default projects/{{project}}/locations/{{location}}/lbTrafficExtensions/{{name}}
649
+ ```
650
+
651
+ ```sh
652
+ $ pulumi import gcp:networkservices/lbTrafficExtension:LbTrafficExtension default {{project}}/{{location}}/{{name}}
653
+ ```
654
+
655
+ ```sh
656
+ $ pulumi import gcp:networkservices/lbTrafficExtension:LbTrafficExtension default {{location}}/{{name}}
657
+ ```
658
+
659
+ :param str resource_name: The name of the resource.
660
+ :param pulumi.ResourceOptions opts: Options for the resource.
661
+ :param pulumi.Input[str] description: A human-readable description of the resource.
662
+ :param pulumi.Input[Sequence[pulumi.Input[pulumi.InputType['LbTrafficExtensionExtensionChainArgs']]]] extension_chains: A set of ordered extension chains that contain the match conditions and extensions to execute.
663
+ Match conditions for each extension chain are evaluated in sequence for a given request.
664
+ The first extension chain that has a condition that matches the request is executed.
665
+ Any subsequent extension chains do not execute. Limited to 5 extension chains per resource.
666
+ Structure is documented below.
667
+ :param pulumi.Input[Sequence[pulumi.Input[str]]] forwarding_rules: A list of references to the forwarding rules to which this service extension is attached to.
668
+ At least one forwarding rule is required. There can be only one LBTrafficExtension resource per forwarding rule.
669
+ :param pulumi.Input[Mapping[str, pulumi.Input[str]]] labels: Set of labels associated with the LbTrafficExtension resource. **Note**: This field is non-authoritative, and will only
670
+ manage the labels present in your configuration. Please refer to the field 'effective_labels' for all of the labels
671
+ present on the resource.
672
+ :param pulumi.Input[str] load_balancing_scheme: All backend services and forwarding rules referenced by this extension must share the same load balancing scheme. For
673
+ more information, refer to Choosing a load balancer. Possible values: ["LOAD_BALANCING_SCHEME_UNSPECIFIED",
674
+ "INTERNAL_MANAGED", "EXTERNAL_MANAGED"]
675
+ :param pulumi.Input[str] location: The location of the traffic extension
676
+ :param pulumi.Input[str] name: Name of the LbTrafficExtension resource in the following format: projects/{project}/locations/{location}/lbTrafficExtensions/{lbTrafficExtension}.
677
+ """
678
+ ...
679
+ @overload
680
+ def __init__(__self__,
681
+ resource_name: str,
682
+ args: LbTrafficExtensionArgs,
683
+ opts: Optional[pulumi.ResourceOptions] = None):
684
+ """
685
+ LbTrafficExtension is a resource that lets the extension service modify the headers and payloads of both requests and responses without impacting the choice of backend services or any other security policies associated with the backend service.
686
+
687
+ To get more information about LbTrafficExtension, see:
688
+
689
+ * [API documentation](https://cloud.google.com/service-extensions/docs/reference/rest/v1beta1/projects.locations.lbTrafficExtensions)
690
+ * How-to Guides
691
+ * [Configure a traffic extension](https://cloud.google.com/service-extensions/docs/configure-callout#configure_a_traffic_extension)
692
+
693
+ ## Example Usage
694
+
695
+ ### Network Services Lb Traffic Extension Basic
696
+
697
+ ```python
698
+ import pulumi
699
+ import pulumi_gcp as gcp
700
+
701
+ # Internal HTTP load balancer with a managed instance group backend
702
+ # VPC network
703
+ ilb_network = gcp.compute.Network("ilb_network",
704
+ name="l7-ilb-network",
705
+ auto_create_subnetworks=False)
706
+ # proxy-only subnet
707
+ proxy_subnet = gcp.compute.Subnetwork("proxy_subnet",
708
+ name="l7-ilb-proxy-subnet",
709
+ ip_cidr_range="10.0.0.0/24",
710
+ region="us-west1",
711
+ purpose="REGIONAL_MANAGED_PROXY",
712
+ role="ACTIVE",
713
+ network=ilb_network.id)
714
+ # backend subnet
715
+ ilb_subnet = gcp.compute.Subnetwork("ilb_subnet",
716
+ name="l7-ilb-subnet",
717
+ ip_cidr_range="10.0.1.0/24",
718
+ region="us-west1",
719
+ network=ilb_network.id)
720
+ # health check
721
+ default_region_health_check = gcp.compute.RegionHealthCheck("default",
722
+ name="l7-ilb-hc",
723
+ region="us-west1",
724
+ http_health_check=gcp.compute.RegionHealthCheckHttpHealthCheckArgs(
725
+ port_specification="USE_SERVING_PORT",
726
+ ))
727
+ # instance template
728
+ instance_template = gcp.compute.InstanceTemplate("instance_template",
729
+ network_interfaces=[gcp.compute.InstanceTemplateNetworkInterfaceArgs(
730
+ access_configs=[gcp.compute.InstanceTemplateNetworkInterfaceAccessConfigArgs()],
731
+ network=ilb_network.id,
732
+ subnetwork=ilb_subnet.id,
733
+ )],
734
+ name="l7-ilb-mig-template",
735
+ machine_type="e2-small",
736
+ tags=["http-server"],
737
+ disks=[gcp.compute.InstanceTemplateDiskArgs(
738
+ source_image="debian-cloud/debian-10",
739
+ auto_delete=True,
740
+ boot=True,
741
+ )],
742
+ metadata={
743
+ "startup-script": \"\"\"#! /bin/bash
744
+ set -euo pipefail
745
+
746
+ export DEBIAN_FRONTEND=noninteractive
747
+ apt-get update
748
+ apt-get install -y nginx-light jq
749
+
750
+ NAME=$(curl -H "Metadata-Flavor: Google" "http://metadata.google.internal/computeMetadata/v1/instance/hostname")
751
+ IP=$(curl -H "Metadata-Flavor: Google" "http://metadata.google.internal/computeMetadata/v1/instance/network-interfaces/0/ip")
752
+ METADATA=$(curl -f -H "Metadata-Flavor: Google" "http://metadata.google.internal/computeMetadata/v1/instance/attributes/?recursive=True" | jq 'del(.["startup-script"])')
753
+
754
+ cat <<EOF > /var/www/html/index.html
755
+ <pre>
756
+ Name: $NAME
757
+ IP: $IP
758
+ Metadata: $METADATA
759
+ </pre>
760
+ EOF
761
+ \"\"\",
762
+ })
763
+ # MIG
764
+ mig = gcp.compute.RegionInstanceGroupManager("mig",
765
+ name="l7-ilb-mig1",
766
+ region="us-west1",
767
+ base_instance_name="vm",
768
+ target_size=2,
769
+ versions=[gcp.compute.RegionInstanceGroupManagerVersionArgs(
770
+ instance_template=instance_template.id,
771
+ name="primary",
772
+ )])
773
+ # backend service
774
+ default_region_backend_service = gcp.compute.RegionBackendService("default",
775
+ name="l7-ilb-backend-subnet",
776
+ region="us-west1",
777
+ protocol="HTTP",
778
+ load_balancing_scheme="INTERNAL_MANAGED",
779
+ timeout_sec=10,
780
+ health_checks=default_region_health_check.id,
781
+ backends=[gcp.compute.RegionBackendServiceBackendArgs(
782
+ group=mig.instance_group,
783
+ balancing_mode="UTILIZATION",
784
+ capacity_scaler=1,
785
+ )])
786
+ # URL map
787
+ default_region_url_map = gcp.compute.RegionUrlMap("default",
788
+ name="l7-ilb-regional-url-map",
789
+ region="us-west1",
790
+ default_service=default_region_backend_service.id)
791
+ # HTTP target proxy
792
+ default_region_target_http_proxy = gcp.compute.RegionTargetHttpProxy("default",
793
+ name="l7-ilb-target-http-proxy",
794
+ region="us-west1",
795
+ url_map=default_region_url_map.id)
796
+ # forwarding rule
797
+ default = gcp.compute.ForwardingRule("default",
798
+ name="l7-ilb-forwarding-rule",
799
+ region="us-west1",
800
+ ip_protocol="TCP",
801
+ load_balancing_scheme="INTERNAL_MANAGED",
802
+ port_range="80",
803
+ target=default_region_target_http_proxy.id,
804
+ network=ilb_network.id,
805
+ subnetwork=ilb_subnet.id,
806
+ network_tier="PREMIUM")
807
+ # allow all access from IAP and health check ranges
808
+ fw_iap = gcp.compute.Firewall("fw_iap",
809
+ name="l7-ilb-fw-allow-iap-hc",
810
+ direction="INGRESS",
811
+ network=ilb_network.id,
812
+ source_ranges=[
813
+ "130.211.0.0/22",
814
+ "35.191.0.0/16",
815
+ "35.235.240.0/20",
816
+ ],
817
+ allows=[gcp.compute.FirewallAllowArgs(
818
+ protocol="tcp",
819
+ )])
820
+ # allow http from proxy subnet to backends
821
+ fw_ilb_to_backends = gcp.compute.Firewall("fw_ilb_to_backends",
822
+ name="l7-ilb-fw-allow-ilb-to-backends",
823
+ direction="INGRESS",
824
+ network=ilb_network.id,
825
+ source_ranges=["10.0.0.0/24"],
826
+ target_tags=["http-server"],
827
+ allows=[gcp.compute.FirewallAllowArgs(
828
+ protocol="tcp",
829
+ ports=[
830
+ "80",
831
+ "443",
832
+ "8080",
833
+ ],
834
+ )])
835
+ # Traffic Extension Backend Instance
836
+ callouts_instance = gcp.compute.Instance("callouts_instance",
837
+ network_interfaces=[gcp.compute.InstanceNetworkInterfaceArgs(
838
+ access_configs=[gcp.compute.InstanceNetworkInterfaceAccessConfigArgs()],
839
+ network=ilb_network.id,
840
+ subnetwork=ilb_subnet.id,
841
+ )],
842
+ name="l7-ilb-callouts-ins",
843
+ zone="us-west1-a",
844
+ machine_type="e2-small",
845
+ labels={
846
+ "container-vm": "cos-stable-109-17800-147-54",
847
+ },
848
+ tags=[
849
+ "allow-ssh",
850
+ "load-balanced-backend",
851
+ ],
852
+ boot_disk=gcp.compute.InstanceBootDiskArgs(
853
+ auto_delete=True,
854
+ initialize_params=gcp.compute.InstanceBootDiskInitializeParamsArgs(
855
+ type="pd-standard",
856
+ size=10,
857
+ image="https://www.googleapis.com/compute/v1/projects/cos-cloud/global/images/cos-stable-109-17800-147-54",
858
+ ),
859
+ ),
860
+ metadata={
861
+ "gce-container-declaration": \"\"\"# DISCLAIMER:
862
+ # This container declaration format is not a public API and may change without
863
+ # notice. Please use gcloud command-line tool or Google Cloud Console to run
864
+ # Containers on Google Compute Engine.
865
+
866
+ spec:
867
+ containers:
868
+ - image: us-docker.pkg.dev/service-extensions/ext-proc/service-callout-basic-example-python:latest
869
+ name: callouts-vm
870
+ securityContext:
871
+ privileged: false
872
+ stdin: false
873
+ tty: false
874
+ volumeMounts: []
875
+ restartPolicy: Always
876
+ volumes: []
877
+ \"\"\",
878
+ "google-logging-enabled": "true",
879
+ },
880
+ deletion_protection=False)
881
+ # callouts instance group
882
+ callouts_instance_group = gcp.compute.InstanceGroup("callouts_instance_group",
883
+ name="l7-ilb-callouts-ins-group",
884
+ description="Terraform test instance group",
885
+ zone="us-west1-a",
886
+ instances=[callouts_instance.id],
887
+ named_ports=[
888
+ gcp.compute.InstanceGroupNamedPortArgs(
889
+ name="http",
890
+ port=80,
891
+ ),
892
+ gcp.compute.InstanceGroupNamedPortArgs(
893
+ name="grpc",
894
+ port=443,
895
+ ),
896
+ ])
897
+ # callout health check
898
+ callouts_health_check = gcp.compute.RegionHealthCheck("callouts_health_check",
899
+ name="l7-ilb-callouts-hc",
900
+ region="us-west1",
901
+ http_health_check=gcp.compute.RegionHealthCheckHttpHealthCheckArgs(
902
+ port=80,
903
+ ))
904
+ # callout backend service
905
+ callouts_backend = gcp.compute.RegionBackendService("callouts_backend",
906
+ name="l7-ilb-callouts-backend",
907
+ region="us-west1",
908
+ protocol="HTTP2",
909
+ load_balancing_scheme="INTERNAL_MANAGED",
910
+ timeout_sec=10,
911
+ port_name="grpc",
912
+ health_checks=callouts_health_check.id,
913
+ backends=[gcp.compute.RegionBackendServiceBackendArgs(
914
+ group=callouts_instance_group.id,
915
+ balancing_mode="UTILIZATION",
916
+ capacity_scaler=1,
917
+ )])
918
+ default_lb_traffic_extension = gcp.networkservices.LbTrafficExtension("default",
919
+ name="l7-ilb-traffic-ext",
920
+ description="my traffic extension",
921
+ location="us-west1",
922
+ load_balancing_scheme="INTERNAL_MANAGED",
923
+ forwarding_rules=[default.self_link],
924
+ extension_chains=[gcp.networkservices.LbTrafficExtensionExtensionChainArgs(
925
+ name="chain1",
926
+ match_condition=gcp.networkservices.LbTrafficExtensionExtensionChainMatchConditionArgs(
927
+ cel_expression="request.host == 'example.com'",
928
+ ),
929
+ extensions=[gcp.networkservices.LbTrafficExtensionExtensionChainExtensionArgs(
930
+ name="ext11",
931
+ authority="ext11.com",
932
+ service=callouts_backend.self_link,
933
+ timeout="0.1s",
934
+ fail_open=False,
935
+ supported_events=["REQUEST_HEADERS"],
936
+ forward_headers=["custom-header"],
937
+ )],
938
+ )],
939
+ labels={
940
+ "foo": "bar",
941
+ })
942
+ # test instance
943
+ vm_test = gcp.compute.Instance("vm_test",
944
+ name="l7-ilb-test-vm",
945
+ zone="us-west1-b",
946
+ machine_type="e2-small",
947
+ network_interfaces=[gcp.compute.InstanceNetworkInterfaceArgs(
948
+ network=ilb_network.id,
949
+ subnetwork=ilb_subnet.id,
950
+ )],
951
+ boot_disk=gcp.compute.InstanceBootDiskArgs(
952
+ initialize_params=gcp.compute.InstanceBootDiskInitializeParamsArgs(
953
+ image="debian-cloud/debian-11",
954
+ ),
955
+ ))
956
+ ```
957
+
958
+ ## Import
959
+
960
+ LbTrafficExtension can be imported using any of these accepted formats:
961
+
962
+ * `projects/{{project}}/locations/{{location}}/lbTrafficExtensions/{{name}}`
963
+
964
+ * `{{project}}/{{location}}/{{name}}`
965
+
966
+ * `{{location}}/{{name}}`
967
+
968
+ When using the `pulumi import` command, LbTrafficExtension can be imported using one of the formats above. For example:
969
+
970
+ ```sh
971
+ $ pulumi import gcp:networkservices/lbTrafficExtension:LbTrafficExtension default projects/{{project}}/locations/{{location}}/lbTrafficExtensions/{{name}}
972
+ ```
973
+
974
+ ```sh
975
+ $ pulumi import gcp:networkservices/lbTrafficExtension:LbTrafficExtension default {{project}}/{{location}}/{{name}}
976
+ ```
977
+
978
+ ```sh
979
+ $ pulumi import gcp:networkservices/lbTrafficExtension:LbTrafficExtension default {{location}}/{{name}}
980
+ ```
981
+
982
+ :param str resource_name: The name of the resource.
983
+ :param LbTrafficExtensionArgs args: The arguments to use to populate this resource's properties.
984
+ :param pulumi.ResourceOptions opts: Options for the resource.
985
+ """
986
+ ...
987
+ def __init__(__self__, resource_name: str, *args, **kwargs):
988
+ resource_args, opts = _utilities.get_resource_args_opts(LbTrafficExtensionArgs, pulumi.ResourceOptions, *args, **kwargs)
989
+ if resource_args is not None:
990
+ __self__._internal_init(resource_name, opts, **resource_args.__dict__)
991
+ else:
992
+ __self__._internal_init(resource_name, *args, **kwargs)
993
+
994
+ def _internal_init(__self__,
995
+ resource_name: str,
996
+ opts: Optional[pulumi.ResourceOptions] = None,
997
+ description: Optional[pulumi.Input[str]] = None,
998
+ extension_chains: Optional[pulumi.Input[Sequence[pulumi.Input[pulumi.InputType['LbTrafficExtensionExtensionChainArgs']]]]] = None,
999
+ forwarding_rules: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None,
1000
+ labels: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]] = None,
1001
+ load_balancing_scheme: Optional[pulumi.Input[str]] = None,
1002
+ location: Optional[pulumi.Input[str]] = None,
1003
+ name: Optional[pulumi.Input[str]] = None,
1004
+ project: Optional[pulumi.Input[str]] = None,
1005
+ __props__=None):
1006
+ opts = pulumi.ResourceOptions.merge(_utilities.get_resource_opts_defaults(), opts)
1007
+ if not isinstance(opts, pulumi.ResourceOptions):
1008
+ raise TypeError('Expected resource options to be a ResourceOptions instance')
1009
+ if opts.id is None:
1010
+ if __props__ is not None:
1011
+ raise TypeError('__props__ is only valid when passed in combination with a valid opts.id to get an existing resource')
1012
+ __props__ = LbTrafficExtensionArgs.__new__(LbTrafficExtensionArgs)
1013
+
1014
+ __props__.__dict__["description"] = description
1015
+ if extension_chains is None and not opts.urn:
1016
+ raise TypeError("Missing required property 'extension_chains'")
1017
+ __props__.__dict__["extension_chains"] = extension_chains
1018
+ if forwarding_rules is None and not opts.urn:
1019
+ raise TypeError("Missing required property 'forwarding_rules'")
1020
+ __props__.__dict__["forwarding_rules"] = forwarding_rules
1021
+ __props__.__dict__["labels"] = labels
1022
+ __props__.__dict__["load_balancing_scheme"] = load_balancing_scheme
1023
+ if location is None and not opts.urn:
1024
+ raise TypeError("Missing required property 'location'")
1025
+ __props__.__dict__["location"] = location
1026
+ __props__.__dict__["name"] = name
1027
+ __props__.__dict__["project"] = project
1028
+ __props__.__dict__["effective_labels"] = None
1029
+ __props__.__dict__["pulumi_labels"] = None
1030
+ secret_opts = pulumi.ResourceOptions(additional_secret_outputs=["effectiveLabels", "pulumiLabels"])
1031
+ opts = pulumi.ResourceOptions.merge(opts, secret_opts)
1032
+ super(LbTrafficExtension, __self__).__init__(
1033
+ 'gcp:networkservices/lbTrafficExtension:LbTrafficExtension',
1034
+ resource_name,
1035
+ __props__,
1036
+ opts)
1037
+
1038
+ @staticmethod
1039
+ def get(resource_name: str,
1040
+ id: pulumi.Input[str],
1041
+ opts: Optional[pulumi.ResourceOptions] = None,
1042
+ description: Optional[pulumi.Input[str]] = None,
1043
+ effective_labels: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]] = None,
1044
+ extension_chains: Optional[pulumi.Input[Sequence[pulumi.Input[pulumi.InputType['LbTrafficExtensionExtensionChainArgs']]]]] = None,
1045
+ forwarding_rules: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None,
1046
+ labels: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]] = None,
1047
+ load_balancing_scheme: Optional[pulumi.Input[str]] = None,
1048
+ location: Optional[pulumi.Input[str]] = None,
1049
+ name: Optional[pulumi.Input[str]] = None,
1050
+ project: Optional[pulumi.Input[str]] = None,
1051
+ pulumi_labels: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]] = None) -> 'LbTrafficExtension':
1052
+ """
1053
+ Get an existing LbTrafficExtension resource's state with the given name, id, and optional extra
1054
+ properties used to qualify the lookup.
1055
+
1056
+ :param str resource_name: The unique name of the resulting resource.
1057
+ :param pulumi.Input[str] id: The unique provider ID of the resource to lookup.
1058
+ :param pulumi.ResourceOptions opts: Options for the resource.
1059
+ :param pulumi.Input[str] description: A human-readable description of the resource.
1060
+ :param pulumi.Input[Mapping[str, pulumi.Input[str]]] effective_labels: All of labels (key/value pairs) present on the resource in GCP, including the labels configured through Pulumi, other clients and services.
1061
+ :param pulumi.Input[Sequence[pulumi.Input[pulumi.InputType['LbTrafficExtensionExtensionChainArgs']]]] extension_chains: A set of ordered extension chains that contain the match conditions and extensions to execute.
1062
+ Match conditions for each extension chain are evaluated in sequence for a given request.
1063
+ The first extension chain that has a condition that matches the request is executed.
1064
+ Any subsequent extension chains do not execute. Limited to 5 extension chains per resource.
1065
+ Structure is documented below.
1066
+ :param pulumi.Input[Sequence[pulumi.Input[str]]] forwarding_rules: A list of references to the forwarding rules to which this service extension is attached to.
1067
+ At least one forwarding rule is required. There can be only one LBTrafficExtension resource per forwarding rule.
1068
+ :param pulumi.Input[Mapping[str, pulumi.Input[str]]] labels: Set of labels associated with the LbTrafficExtension resource. **Note**: This field is non-authoritative, and will only
1069
+ manage the labels present in your configuration. Please refer to the field 'effective_labels' for all of the labels
1070
+ present on the resource.
1071
+ :param pulumi.Input[str] load_balancing_scheme: All backend services and forwarding rules referenced by this extension must share the same load balancing scheme. For
1072
+ more information, refer to Choosing a load balancer. Possible values: ["LOAD_BALANCING_SCHEME_UNSPECIFIED",
1073
+ "INTERNAL_MANAGED", "EXTERNAL_MANAGED"]
1074
+ :param pulumi.Input[str] location: The location of the traffic extension
1075
+ :param pulumi.Input[str] name: Name of the LbTrafficExtension resource in the following format: projects/{project}/locations/{location}/lbTrafficExtensions/{lbTrafficExtension}.
1076
+ :param pulumi.Input[Mapping[str, pulumi.Input[str]]] pulumi_labels: The combination of labels configured directly on the resource
1077
+ and default labels configured on the provider.
1078
+ """
1079
+ opts = pulumi.ResourceOptions.merge(opts, pulumi.ResourceOptions(id=id))
1080
+
1081
+ __props__ = _LbTrafficExtensionState.__new__(_LbTrafficExtensionState)
1082
+
1083
+ __props__.__dict__["description"] = description
1084
+ __props__.__dict__["effective_labels"] = effective_labels
1085
+ __props__.__dict__["extension_chains"] = extension_chains
1086
+ __props__.__dict__["forwarding_rules"] = forwarding_rules
1087
+ __props__.__dict__["labels"] = labels
1088
+ __props__.__dict__["load_balancing_scheme"] = load_balancing_scheme
1089
+ __props__.__dict__["location"] = location
1090
+ __props__.__dict__["name"] = name
1091
+ __props__.__dict__["project"] = project
1092
+ __props__.__dict__["pulumi_labels"] = pulumi_labels
1093
+ return LbTrafficExtension(resource_name, opts=opts, __props__=__props__)
1094
+
1095
+ @property
1096
+ @pulumi.getter
1097
+ def description(self) -> pulumi.Output[Optional[str]]:
1098
+ """
1099
+ A human-readable description of the resource.
1100
+ """
1101
+ return pulumi.get(self, "description")
1102
+
1103
+ @property
1104
+ @pulumi.getter(name="effectiveLabels")
1105
+ def effective_labels(self) -> pulumi.Output[Mapping[str, str]]:
1106
+ """
1107
+ All of labels (key/value pairs) present on the resource in GCP, including the labels configured through Pulumi, other clients and services.
1108
+ """
1109
+ return pulumi.get(self, "effective_labels")
1110
+
1111
+ @property
1112
+ @pulumi.getter(name="extensionChains")
1113
+ def extension_chains(self) -> pulumi.Output[Sequence['outputs.LbTrafficExtensionExtensionChain']]:
1114
+ """
1115
+ A set of ordered extension chains that contain the match conditions and extensions to execute.
1116
+ Match conditions for each extension chain are evaluated in sequence for a given request.
1117
+ The first extension chain that has a condition that matches the request is executed.
1118
+ Any subsequent extension chains do not execute. Limited to 5 extension chains per resource.
1119
+ Structure is documented below.
1120
+ """
1121
+ return pulumi.get(self, "extension_chains")
1122
+
1123
+ @property
1124
+ @pulumi.getter(name="forwardingRules")
1125
+ def forwarding_rules(self) -> pulumi.Output[Sequence[str]]:
1126
+ """
1127
+ A list of references to the forwarding rules to which this service extension is attached to.
1128
+ At least one forwarding rule is required. There can be only one LBTrafficExtension resource per forwarding rule.
1129
+ """
1130
+ return pulumi.get(self, "forwarding_rules")
1131
+
1132
+ @property
1133
+ @pulumi.getter
1134
+ def labels(self) -> pulumi.Output[Optional[Mapping[str, str]]]:
1135
+ """
1136
+ Set of labels associated with the LbTrafficExtension resource. **Note**: This field is non-authoritative, and will only
1137
+ manage the labels present in your configuration. Please refer to the field 'effective_labels' for all of the labels
1138
+ present on the resource.
1139
+ """
1140
+ return pulumi.get(self, "labels")
1141
+
1142
+ @property
1143
+ @pulumi.getter(name="loadBalancingScheme")
1144
+ def load_balancing_scheme(self) -> pulumi.Output[Optional[str]]:
1145
+ """
1146
+ All backend services and forwarding rules referenced by this extension must share the same load balancing scheme. For
1147
+ more information, refer to Choosing a load balancer. Possible values: ["LOAD_BALANCING_SCHEME_UNSPECIFIED",
1148
+ "INTERNAL_MANAGED", "EXTERNAL_MANAGED"]
1149
+ """
1150
+ return pulumi.get(self, "load_balancing_scheme")
1151
+
1152
+ @property
1153
+ @pulumi.getter
1154
+ def location(self) -> pulumi.Output[str]:
1155
+ """
1156
+ The location of the traffic extension
1157
+ """
1158
+ return pulumi.get(self, "location")
1159
+
1160
+ @property
1161
+ @pulumi.getter
1162
+ def name(self) -> pulumi.Output[str]:
1163
+ """
1164
+ Name of the LbTrafficExtension resource in the following format: projects/{project}/locations/{location}/lbTrafficExtensions/{lbTrafficExtension}.
1165
+ """
1166
+ return pulumi.get(self, "name")
1167
+
1168
+ @property
1169
+ @pulumi.getter
1170
+ def project(self) -> pulumi.Output[str]:
1171
+ return pulumi.get(self, "project")
1172
+
1173
+ @property
1174
+ @pulumi.getter(name="pulumiLabels")
1175
+ def pulumi_labels(self) -> pulumi.Output[Mapping[str, str]]:
1176
+ """
1177
+ The combination of labels configured directly on the resource
1178
+ and default labels configured on the provider.
1179
+ """
1180
+ return pulumi.get(self, "pulumi_labels")
1181
+